[Home] [Help]
PACKAGE BODY: APPS.OKL_SPLIT_ASSET_PVT
Source
1 PACKAGE BODY Okl_Split_Asset_Pvt AS
2 /* $Header: OKLRSPAB.pls 120.61.12010000.7 2009/01/12 23:04:20 apaul ship $ */
3 --------------------------------------------------------------------------------
4 --GLOBAL VARIBLES
5 --------------------------------------------------------------------------------
6 G_FIN_AST_LTY_CODE CONSTANT VARCHAR2(30) := 'FREE_FORM1';
7 --------------------------------------------------------------------------------
8 -- GLOBAL MESSAGE CONSTANTS
9 --------------------------------------------------------------------------------
10 G_FND_APP CONSTANT VARCHAR2(200) := OKL_API.G_FND_APP;
11 G_APP_NAME CONSTANT VARCHAR2(3) := OKL_API.G_APP_NAME;
12 G_UNEXPECTED_ERROR CONSTANT VARCHAR2(200) := 'OKL_CONTRACTS_UNEXPECTED_ERROR';
13 G_COL_NAME_TOKEN CONSTANT VARCHAR2(200) := OKL_API.G_COL_NAME_TOKEN;
14 G_PARENT_TABLE_TOKEN CONSTANT VARCHAR2(200) := OKL_API.G_PARENT_TABLE_TOKEN;
15 G_CHILD_TABLE_TOKEN CONSTANT VARCHAR2(200) := OKL_API.G_CHILD_TABLE_TOKEN;
16 G_SQLERRM_TOKEN CONSTANT VARCHAR2(200) := 'SQLerrm';
17 G_SQLCODE_TOKEN CONSTANT VARCHAR2(200) := 'SQLcode';
18 -- Bug# 4542290 - smadhava - Added - Start
19 G_METHOD CONSTANT VARCHAR2(200) := 'METHOD';
20 -- Bug# 4542290 - smadhava - Added - End
21 --------------------------------------------------------------------------------
22 -- GLOBAL OKL MESSAGES
23 --------------------------------------------------------------------------------
24 G_INVALID_TOP_LINE CONSTANT VARCHAR2(200) := 'OKL_LLA_LINE_STYLE';
25 G_TOP_LINE_STYLE CONSTANT VARCHAR2(30) := 'TLS';
26 G_SPLIT_ASSET_NOT_FOUND CONSTANT VARCHAR2(200) := 'OKL_LLA_SPLIT_ASSET_NOT_FOUND';
27 G_SPLIT_AST_TRX_NOT_FOUND CONSTANT VARCHAR2(200) := 'OKL_LLA_SPLIT_AST_TRX';
28 G_SPLIT_PARENT_NUMBER_CHANGE CONSTANT VARCHAR2(200) := 'OKL_LLA_SPLIT_PARENT_NUMBER';
29 G_LTY_CODE_NOT_FOUND CONSTANT VARCHAR2(200) := 'OKL_LLA_SPLIT_PARENT_NUMBER';
30 G_NO_DATA_FOUND CONSTANT VARCHAR2(200) := 'OKL_NO_DATA_FOUND';
31 G_INACTIVE_ASSET CONSTANT VARCHAR2(200) := 'OKL_LLA_INACTIVE_ASSET';
32 G_SPLIT_ASSET_TRX CONSTANT VARCHAR2(200) := 'OKL_LLA_PEND_SPLT_AST_TRX';
33 G_SPLIT_AST_COMP_TRX CONSTANT VARCHAR2(200) := 'OKL_LLA_PEND_SPLT_COMP_TRX';
34 G_ASSET_REQUIRED CONSTANT VARCHAR2(200) := 'OKL_LLA_ASSET_REQUIRED';
35 G_DUPLICATE_ASSET CONSTANT VARCHAR2(200) := 'OKL_LLA_ASSET_NUMBER';
36 G_ASSET_LENGTH CONSTANT VARCHAR2(200) := 'OKL_LLA_AST_LEN';
37 G_NOT_UNIQUE CONSTANT VARCHAR2(30) := 'OKL_LLA_NOT_UNIQUE';
38 G_SINGLE_UNIT_ASSET CONSTANT VARCHAR2(200) := 'OKL_LLA_SINGLE_UNIT_SPLIT';
39 -- Bug# 4542290 - smadhava - Added - Start
40 G_RRB_SPLIT_ASSET_NOT_ALLWD CONSTANT VARCHAR2(200) := 'OKL_LLA_RRB_SPLIT_NOT_ALLWD';
41 -- Bug# 4542290 - smadhava - Added - End
42 --------------------------------------------------------------------------------
43 -- GLOBAL EXCEPTION
44 --------------------------------------------------------------------------------
45 G_EXCEPTION_HALT_VALIDATION EXCEPTION;
46 G_EXCEPTION_STOP_VALIDATION EXCEPTION;
47 G_API_TYPE CONSTANT VARCHAR2(4) := '_PVT';
48 G_API_VERSION CONSTANT NUMBER := 1.0;
49 G_SCOPE CONSTANT VARCHAR2(4) := '_PVT';
50
51 -- GLOBAL VARIABLES
52 --------------------------------------------------------------------------------
53 G_PKG_NAME CONSTANT VARCHAR2(200) := 'OKL_SPLIT_ASSET_PVT';
54 G_TRY_NAME OKL_TRX_TYPES_V.NAME%TYPE := 'Split Asset';
55 G_TRY_TYPE OKL_TRX_TYPES_V.TRY_TYPE%TYPE := 'TIE';
56 --------------------------------------------------------------------------------
57 --Globals for csi item instance
58 --------------------------------------------------------------------------------
59 G_IB_TXN_TYPE_NOT_FOUND CONSTANT VARCHAR2(200) := 'OKL_LLA_IB_TXN_TYPE_NOT_FOUND';
60 G_TXN_TYPE_TOKEN CONSTANT VARCHAR2(30) := 'TXN_TYPE';
61 G_ITM_INST_PARTY CONSTANT VARCHAR2(30) := 'LESSEE';
62 G_CONTRACT_INTENT CONSTANT VARCHAR2(1) := 'S';
63 G_PARTY_SRC_TABLE CONSTANT VARCHAR2(30) := 'HZ_PARTIES';
64 G_PARTY_RELATIONSHIP CONSTANT VARCHAR2(30) := 'OWNER';
65 G_PARTY_NOT_FOUND CONSTANT VARCHAR2(200) := 'OKL_LLA_PARTY_NOT_FOUND';
66 G_ROLE_CODE_TOKEN CONSTANT VARCHAR2(30) := 'RLE_CODE';
67 G_CUST_ACCT_RULE CONSTANT VARCHAR2(30) := 'CAN';
68 G_CUST_ACCT_RULE_GROUP CONSTANT VARCHAR2(30) := 'LACAN';
69 G_CONTRACT_ID_TOKEN CONSTANT VARCHAR2(200) := 'CONTRACT_ID';
70 G_IB_SPLIT_TXN_TYPE CONSTANT VARCHAR2(30) := 'OKL_SPLITA';
71 G_CUST_ACCOUNT_FOUND CONSTANT VARCHAR2(200) := 'OKL_LLA_CUST_ACCT_NOT_FOUND';
72 --------------------------------------------------------------------------------
73 --Bug#2723498 : 11.5.9 Enhancement Split asset by serial numbers message constants
74 --------------------------------------------------------------------------------
75 G_IB_INSTANCE_MISMATCH CONSTANT VARCHAR2(200) := 'OKL_LLA_SPA_INSTANCE_MISMATCH';
76 G_IB_LINE_TOKEN CONSTANT VARCHAR2(200) := 'IB_LINE_ID';
77 G_ASSET_NUMBER_TOKEN CONSTANT VARCHAR2(200) := 'ASSET_NUMBER';
78 G_SPLIT_SERIAL_NOT_FOUND CONSTANT VARCHAR2(200) := 'OKL_LLA_SPA_SERIAL_NOT_FOUND';
79 G_SPLIT_UNITS_TOKEN CONSTANT VARCHAR2(200) := 'SPLIT_UNITS';
80 G_SRL_NUM_DUPLICATE CONSTANT VARCHAR2(200) := 'OKL_LLA_SERIAL_NUM_DUP';
81 G_NO_MATCHING_RECORD CONSTANT VARCHAR2(200) := 'OKL_LLA_NO_MATCHING_RECORD';
82 G_ASSET_NOT_SERIALIZED CONSTANT VARCHAR2(200) := 'OKL_LLA_SPA_NOT_SERIALIZED';
83 --Bug Fix # 2881114
84 G_ASSET_LINKED_TO_SERVICE CONSTANT VARCHAR2(200) := 'OKL_LLA_SPA_SERVICE_LINKED';
85 --Bug# : 11.5.10
86 G_FORMULA_OEC OKL_FORMULAE_V.NAME%TYPE := 'LINE_OEC';
87 G_FORMULA_CAP OKL_FORMULAE_V.NAME%TYPE := 'LINE_CAP_AMNT';
88 G_FORMULA_RES OKL_FORMULAE_V.NAME%TYPE := 'LINE_RESIDUAL_VALUE';
89 --Bug# 3222804 : serial number control by leasing inv org setups
90 G_SERIALIZED_IN_IB CONSTANT VARCHAR2(200) := 'OKL_SERIAL_CONTROL_MISMATCH';
91 G_NOT_SERIALIZED_IN_IB CONSTANT VARCHAR2(200) := 'OKL_SERIAL_CONTROL_MISMATCH_2';
92 G_SERIAL_NUMBER_MISMATCH CONSTANT VARCHAR2(200) := 'OKL_SERIAL_NUMBER_MISMATCH';
93
94 --Bug# 3156924 :
95 G_LLA_MISSING_TRX_DATE CONSTANT VARCHAR2(200) := 'OKL_LLA_MISSING_TRX_DATE';
96 G_LLA_WRONG_TRX_DATE CONSTANT VARCHAR2(200) := 'OKL_LLA_WRONG_TRX_DATE';
97 G_LLA_REV_ONLY_BOOKED CONSTANT VARCHAR2(200) := 'OKL_LLA_REV_ONLY_BOOKED';
98 G_LLA_INVALID_DATE_FORMAT CONSTANT VARCHAR2(200) := 'OKL_LLA_INVALID_DATE_FORMAT';
99
100 --BUG# 3569441
101 G_INVALID_INSTALL_LOC_TYPE CONSTANT VARCHAR2(200) := 'OKL_INVALID_INSTALL_LOC_TYPE';
102 G_LOCATION_TYPE_TOKEN CONSTANT VARCHAR2(30) := 'LOCATION_TYPE';
103 G_LOC_TYPE1_TOKEN CONSTANT VARCHAR2(30) := 'LOCATION_TYPE1';
104 G_LOC_TYPE2_TOKEN CONSTANT VARCHAR2(30) := 'LOCATION_TYPE2';
105
106 G_MISSING_USAGE CONSTANT VARCHAR2(200) := 'OKL_INSTALL_LOC_MISSING_USAGE';
107 G_USAGE_TYPE_TOKEN CONSTANT VARCHAR2(30) := 'USAGE_TYPE';
108 G_ADDRESS_TOKEN CONSTANT VARCHAR2(30) := 'ADDRESS';
109 G_INSTANCE_NUMBER_TOKEN CONSTANT VARCHAR2(30) := 'INSTANCE_NUMBER';
110 --END BUG# 3569441
111
112 /*
113 -- mvasudev, 08/23/2004
114 -- Added Constants to enable Business Event
115 */
116 G_WF_EVT_KHR_SPLIT_ASSET_REQ CONSTANT VARCHAR2(64) := 'oracle.apps.okl.la.lease_contract.split_asset_by_units_requested';
117 G_WF_EVT_KHR_SPLIT_ASSET_COMP CONSTANT VARCHAR2(64) := 'oracle.apps.okl.la.lease_contract.split_asset_by_units_completed';
118
119 G_WF_ITM_CONTRACT_ID CONSTANT VARCHAR2(20) := 'CONTRACT_ID';
120 G_WF_ITM_ASSET_ID CONSTANT VARCHAR2(10) := 'ASSET_ID';
121 G_WF_ITM_TRANS_DATE CONSTANT VARCHAR2(20) := 'TRANSACTION_DATE';
122 -- Bug# 4542290 - smadhava - Added - Start
123 G_RRB_ESTIMATED CONSTANT OKL_PQY_VALUES_V.VALUE%TYPE := 'ESTIMATED_AND_BILLED';
124 G_RRB_ACTUAL CONSTANT OKL_PQY_VALUES_V.VALUE%TYPE := 'ACTUAL';
125 -- Bug# 4542290 - smadhava - Added - End
126
127 --Bug# 6612475 Start
128 ------------------------------------------------------------------------------
129 --Bug # 6612475
130 --API Name : Validate_Split_Request
131 --Description : This will validate the split asset request parameters
132 -- and will be called from Create_Split_Transaction
133 -- History :
134 -- 07-May-2008 avsingh Creation
135 --
136 -- End of Comments
137 -----------------------------------------------------------------------------
138 Procedure Validate_Split_Request
139 (p_api_version IN NUMBER
140 ,p_init_msg_list IN VARCHAR2
141 ,x_return_status OUT NOCOPY VARCHAR2
142 ,x_msg_count OUT NOCOPY NUMBER
143 ,x_msg_data OUT NOCOPY VARCHAR2
144 ,p_cle_id IN NUMBER
145 ,p_split_into_individuals_yn IN VARCHAR2
146 ,p_split_into_units IN NUMBER
147 ,p_revision_date IN DATE
148 ) IS
149
150 l_api_name CONSTANT VARCHAR2(30) := 'VALIDATE_SPLIT_REQUEST';
151 l_valid_asset_flag VARCHAR2(1);
152
153 cursor l_cle_csr (p_cle_id in number) is
154 select 'Y'
155 from okc_k_lines_b cleb
156 where id = p_cle_id
157 and lse_id = 33;
158
159 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
160
161 Begin
162 x_return_status := OKL_API.G_RET_STS_SUCCESS;
163 -- Call start_activity to create savepoint, check compatibility
164 -- and initialize message list
165 x_return_status := OKL_API.START_ACTIVITY (
166 l_api_name
167 ,p_init_msg_list
168 ,'_PVT'
169 ,x_return_status);
170 -- Check if activity started successfully
171 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
172 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
173 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
174 RAISE OKL_API.G_EXCEPTION_ERROR;
175 END IF;
176 --1. Validate Revision Date
177 IF p_revision_date is NULL or p_revision_date = OKL_API.G_MISS_DATE Then
178 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
179 p_msg_name => 'OKL_LP_REQUIRED_VALUE',
180 p_token1 => 'COLUMN_PROMPT',
181 p_token1_value => 'Revision Date'
182 );
183 l_return_status := OKL_API.G_RET_STS_ERROR;
184 END IF;
185 --2. Validate the Asset Id
186 If nvl(p_cle_id, OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM then
187 --Asset Number to split is andatory
188 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
189 p_msg_name => 'OKL_LP_REQUIRED_VALUE',
190 p_token1 => 'COLUMN_PROMPT',
191 p_token1_value => 'Asset'
192 );
193 l_return_status := OKL_API.G_RET_STS_ERROR;
194 ElsIf nvl(p_cle_id,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
195 --find out whether the asset number provided is valid
196 l_valid_asset_flag := 'N';
197 Open l_cle_csr(p_cle_id => p_cle_id);
198 Fetch l_cle_csr into l_valid_asset_flag;
199 Close l_cle_csr;
200 If l_valid_asset_flag = 'N' Then
201 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
202 p_msg_name => 'OKL_LLA_NO_DATA_FOUND',
203 p_token1 => 'COL_NAME',
204 p_token1_value => 'Asset'
205 );
206 l_return_status := OKL_API.G_RET_STS_ERROR;
207 End If;
208 End If;
209 --3. validate units to split
210 If (
211 (nvl(p_split_into_individuals_yn, OKL_API.G_MISS_CHAR) =
212 OKL_API.G_MISS_CHAR
213 ) OR (p_split_into_individuals_yn = 'N')
214 ) AND
215 nvl(p_split_into_units, OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM Then
216 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
217 p_msg_name => 'OKL_LLA_INVALID_SPLIT_OPTION',
218 p_token1 => 'COL_NAME1',
219 p_token1_value => 'Split Into Single Units',
220 p_token2 => 'COL_NAME2',
221 p_token2_value => 'Number of Units'
222 );
223 l_return_status := OKL_API.G_RET_STS_ERROR;
224 ElsIf nvl(p_split_into_units, OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM
225 Then
226 If nvl(p_split_into_units, OKL_API.G_MISS_NUM) <= 0 Then
227 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
228 p_msg_name => 'OKL_AM_REQ_FIELD_POS_ERR',
229 p_token1 => 'PROMPT',
230 p_token1_value => 'Number of Units'
231 );
232 l_return_status := OKL_API.G_RET_STS_ERROR;
233 End If;
234 End IF;
235
236 x_return_status := l_return_status;
237
238 --Call end Activity
239 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
240 EXCEPTION
241 WHEN OKL_API.G_EXCEPTION_ERROR Then
242 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
243 (
244 l_api_name,
245 G_PKG_NAME,
246 'OKL_API.G_RET_STS_ERROR',
247 x_msg_count,
248 x_msg_data,
249 '_PVT'
250 );
251 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
252 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
253 (
254 l_api_name,
255 G_PKG_NAME,
256 'OKL_API.G_RET_STS_UNEXP_ERROR',
257 x_msg_count,
258 x_msg_data,
259 '_PVT'
260 );
261 WHEN OTHERS THEN
262 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
263 (
264 l_api_name,
265 G_PKG_NAME,
266 'OTHERS',
267 x_msg_count,
268 x_msg_data,
269 '_PVT'
270 );
271 End Validate_Split_Request;
272 --Bug# 6612475 End;
273
274
275 --Bug# 6344223
276 ------------------------------------------------------------------------------
277 --Bug# 6344223
278 --API Name : get_split_round_amount
279 --Description : API to adjust the amounts which are not evenly divisible such
280 -- that the remainder is allocated to either the child asset
281 -- holding the same asset number as the parent asset or the asset
282 -- with the largest percentage of cost (when splitting into
283 -- components).
284 --History :
285 -- 09-Aug-2007 rirawat Creation
286 --End of Comments
287 ------------------------------------------------------------------------------
288 PROCEDURE get_split_round_amount(
289 p_api_version IN NUMBER
290 ,p_init_msg_list IN VARCHAR2
291 ,x_return_status OUT NOCOPY VARCHAR2
292 ,x_msg_count OUT NOCOPY NUMBER
293 ,x_msg_data OUT NOCOPY VARCHAR2
294 ,p_txl_id IN NUMBER
295 ,p_split_factor IN NUMBER
296 ,p_klev_rec IN klev_rec_type
297 ,p_clev_rec IN clev_rec_type
298 ,x_klev_rec OUT NOCOPY klev_rec_type
299 ,x_clev_rec OUT NOCOPY clev_rec_type
300 ) IS
301
302 l_return_status VARCHAR2(1) DEFAULT OKL_API.G_RET_STS_SUCCESS;
303 l_api_name CONSTANT VARCHAR2(30) := 'get_split_round_amount';
304 l_api_version CONSTANT NUMBER := 1.0;
305
306 --Fix Bug# 2727161
307 CURSOR curr_hdr_csr (p_chr_id OKC_K_HEADERS_B.ID%TYPE) IS
308 SELECT currency_code
309 FROM okc_k_headers_b
310 WHERE id = p_chr_id;
311
312 CURSOR curr_ln_csr (p_line_id OKC_K_HEADERS_B.ID%TYPE) IS
313 SELECT h.currency_code
314 FROM okc_k_headers_b h,
315 okc_k_lines_b l
316 WHERE h.id = l.dnz_chr_id
317 AND l.id = p_line_id;
318
319 l_conv_amount NUMBER;
320 l_currency_code OKC_K_LINES_B.CURRENCY_CODE%TYPE;
321
322
323 CURSOR l_txd_csr(p_trxline_id IN NUMBER) IS
324 SELECT txd.id,
325 txd.split_percent,
326 txl.kle_id,
327 txd.target_kle_id,
328 txd.quantity,
329 txl.current_units
330 FROM okl_txd_assets_b txd,
331 okl_txl_Assets_b txl
332 WHERE txl.tal_type = 'ALI'
333 AND txd.tal_id = txl.id
334 AND txl.id = p_trxline_id
335 --Bug# 6898798 start
336 ORDER BY nvl(txd.split_percent,-1);
337 --Bug# 6898798 end
338
339
340 l_child_split_factor NUMBER :=0;
341
342 l_klev_rec_sum klev_rec_type;
343 l_klev_rec_out klev_rec_type;
344 l_clev_rec_sum clev_rec_type;
345 l_clev_rec_out clev_rec_type;
346
347 l_klev_rec klev_rec_type;
348 l_clev_rec clev_rec_type;
349 l_split_by_unit varchar2(1):='N' ;
350
351 FUNCTION round_amount(
352 p_currency_code IN VARCHAR2
353 ,p_amount IN NUMBER
354 ) RETURN NUMBER
355 IS
356 l_round_amount NUMBER;
357 BEGIN
358 l_round_amount:=p_amount;
359
360 IF (p_amount IS NOT NULL
361 AND
362 p_amount <> OKL_API.G_MISS_NUM) THEN
363
364 l_round_amount := NULL;
365
366 l_round_amount := okl_accounting_util.cross_currency_round_amount(
367 p_amount => p_amount,
368 p_currency_code => p_currency_code
369 );
370 END IF;
371 RETURN l_round_amount;
372
373 EXCEPTION
374 WHEN OTHERS THEN
375 OKL_API.Set_Message(p_app_name => OKL_API.G_APP_NAME,
376 p_msg_name => 'OKL_UNEXPECTED_ERROR',
377 p_token1 => 'OKL_SQLCODE',
378 p_token1_value => SQLCODE,
379 p_token2 => 'OKL_SQLERRM',
380 p_token2_value => SQLERRM);
381
382 RETURN NULL;
383 END;
384
385
386 BEGIN
387 -- Call start_activity to create savepoint, check compatibility
388 -- and initialize message list
389 x_return_status := OKL_API.START_ACTIVITY (
390 l_api_name
391 ,p_init_msg_list
392 ,'_PVT'
393 ,x_return_status);
394 -- Check if activity started successfully
395 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
396 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
397 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
398 RAISE OKL_API.G_EXCEPTION_ERROR;
399 END IF;
400
401 l_currency_code := '?';
402 OPEN curr_hdr_csr (p_clev_rec.dnz_chr_id);
403 FETCH curr_hdr_csr INTO l_currency_code;
404 CLOSE curr_hdr_csr;
405
406 IF (l_currency_code = '?') THEN
407 --
408 -- Get currency_code
409 -- Using line_id
410 --
411 OPEN curr_ln_csr (p_clev_rec.id);
412 FETCH curr_ln_csr INTO l_currency_code;
413 CLOSE curr_ln_csr;
414 END IF;
415
416 IF (l_currency_code = '?') THEN -- Fatal error, Not a valid currency_code
417 RAISE OKL_API.G_EXCEPTION_ERROR;
418 END IF;
419
420 l_klev_rec_out:=p_klev_rec;
421 l_clev_rec_out:=p_clev_rec;
422
423 --Initialize
424 l_klev_rec_sum.ESTIMATED_OEC :=0;
425 l_klev_rec_sum.LAO_AMOUNT :=0;
426 l_klev_rec_sum.CAPITAL_REDUCTION :=0;
427 l_klev_rec_sum.FEE_CHARGE :=0;
428 l_klev_rec_sum.INITIAL_DIRECT_COST :=0;
429 l_klev_rec_sum.AMOUNT_STAKE :=0;
430 l_klev_rec_sum.LRV_AMOUNT :=0;
431 l_klev_rec_sum.COVERAGE :=0;
432 l_klev_rec_sum.VENDOR_ADVANCE_PAID :=0;
433 l_klev_rec_sum.TRADEIN_AMOUNT :=0;
434 l_klev_rec_sum.BOND_EQUIVALENT_YIELD :=0;
435 l_klev_rec_sum.TERMINATION_PURCHASE_AMOUNT :=0;
436 l_klev_rec_sum.REFINANCE_AMOUNT :=0;
437 l_klev_rec_sum.REMARKETED_AMOUNT :=0;
438 l_klev_rec_sum.REMARKET_MARGIN :=0;
439 l_klev_rec_sum.REPURCHASED_AMOUNT :=0;
440 l_klev_rec_sum.RESIDUAL_VALUE :=0;
441 l_klev_rec_sum.APPRAISAL_VALUE :=0;
442 l_klev_rec_sum.GAIN_LOSS :=0;
443 l_klev_rec_sum.FLOOR_AMOUNT :=0;
444 l_klev_rec_sum.TRACKED_RESIDUAL :=0;
445 l_klev_rec_sum.AMOUNT :=0;
446 l_klev_rec_sum.OEC :=0;
447 l_klev_rec_sum.CAPITAL_AMOUNT :=0;
448 l_klev_rec_sum.RESIDUAL_GRNTY_AMOUNT :=0;
449 l_klev_rec_sum.RVI_PREMIUM :=0;
450 l_klev_rec_sum.CAPITALIZED_INTEREST :=0;
451 l_klev_rec_sum.SUBSIDY_OVERRIDE_AMOUNT :=0;
452 l_klev_rec_sum.Expected_Asset_Cost :=0;
453
454 l_clev_rec_sum.price_unit:=0;
455 l_clev_rec_sum.price_negotiated:=0;
456 l_clev_rec_sum.price_negotiated_renewed:=0;
457
458
459 for l_txd_rec in l_txd_csr(p_txl_id)
460 loop
461 if nvl(l_txd_rec.split_percent,0) in (0,okl_api.g_miss_num) then
462 l_child_split_factor := l_txd_rec.quantity/l_txd_rec.current_units;
463 l_split_by_unit:='Y';
464 else
465 l_child_split_factor := l_txd_rec.split_percent/100;
466 l_split_by_unit:='N';
467 end if;
468
469 l_klev_rec_sum.ESTIMATED_OEC := l_klev_rec_sum.ESTIMATED_OEC +
470 round_amount(l_currency_code,l_child_split_factor * p_klev_rec.ESTIMATED_OEC);
471 l_klev_rec_sum.LAO_AMOUNT := l_klev_rec_sum.LAO_AMOUNT+
472 round_amount(l_currency_code,l_child_split_factor * p_klev_rec.LAO_AMOUNT);
473 l_klev_rec_sum.CAPITAL_REDUCTION := l_klev_rec_sum.CAPITAL_REDUCTION
474 + round_amount(l_currency_code,l_child_split_factor * p_klev_rec.CAPITAL_REDUCTION);
475 l_klev_rec_sum.FEE_CHARGE := l_klev_rec_sum.FEE_CHARGE
476 + round_amount(l_currency_code,l_child_split_factor * p_klev_rec.FEE_CHARGE);
477 l_klev_rec_sum.INITIAL_DIRECT_COST := l_klev_rec_sum.INITIAL_DIRECT_COST
478 + round_amount(l_currency_code,l_child_split_factor * p_klev_rec.INITIAL_DIRECT_COST);
479 l_klev_rec_sum.AMOUNT_STAKE := l_klev_rec_sum.AMOUNT_STAKE
480 + round_amount(l_currency_code,l_child_split_factor * p_klev_rec.AMOUNT_STAKE);
481 l_klev_rec_sum.LRV_AMOUNT := l_klev_rec_sum.LRV_AMOUNT
482 + round_amount(l_currency_code,l_child_split_factor * p_klev_rec.LRV_AMOUNT);
483 l_klev_rec_sum.COVERAGE := l_klev_rec_sum.COVERAGE
484 + round_amount(l_currency_code,l_child_split_factor * p_klev_rec.COVERAGE);
485 l_klev_rec_sum.VENDOR_ADVANCE_PAID := l_klev_rec_sum.VENDOR_ADVANCE_PAID
486 + round_amount(l_currency_code,l_child_split_factor * p_klev_rec.VENDOR_ADVANCE_PAID);
487 l_klev_rec_sum.TRADEIN_AMOUNT := l_klev_rec_sum.TRADEIN_AMOUNT
488 + round_amount(l_currency_code,l_child_split_factor * p_klev_rec.TRADEIN_AMOUNT);
489 l_klev_rec_sum.BOND_EQUIVALENT_YIELD := l_klev_rec_sum.BOND_EQUIVALENT_YIELD
490 + round_amount(l_currency_code,l_child_split_factor * p_klev_rec.BOND_EQUIVALENT_YIELD);
491 l_klev_rec_sum.TERMINATION_PURCHASE_AMOUNT := l_klev_rec_sum.TERMINATION_PURCHASE_AMOUNT
492 + round_amount(l_currency_code,l_child_split_factor * p_klev_rec.TERMINATION_PURCHASE_AMOUNT);
493 l_klev_rec_sum.REFINANCE_AMOUNT := l_klev_rec_sum.REFINANCE_AMOUNT
494 + round_amount(l_currency_code,l_child_split_factor * p_klev_rec.REFINANCE_AMOUNT);
495 l_klev_rec_sum.REMARKETED_AMOUNT := l_klev_rec_sum.REMARKETED_AMOUNT
496 + round_amount(l_currency_code,l_child_split_factor * p_klev_rec.REMARKETED_AMOUNT);
497 l_klev_rec_sum.REMARKET_MARGIN := l_klev_rec_sum.REMARKET_MARGIN
498 + round_amount(l_currency_code,l_child_split_factor * p_klev_rec.REMARKET_MARGIN);
499 l_klev_rec_sum.REPURCHASED_AMOUNT := l_klev_rec_sum.REPURCHASED_AMOUNT
500 + round_amount(l_currency_code,l_child_split_factor * p_klev_rec.REPURCHASED_AMOUNT);
501 l_klev_rec_sum.RESIDUAL_VALUE := l_klev_rec_sum.RESIDUAL_VALUE
502 + round_amount(l_currency_code,l_child_split_factor * p_klev_rec.RESIDUAL_VALUE);
503 l_klev_rec_sum.APPRAISAL_VALUE := l_klev_rec_sum.APPRAISAL_VALUE
504 + round_amount(l_currency_code,l_child_split_factor * p_klev_rec.APPRAISAL_VALUE);
505 l_klev_rec_sum.GAIN_LOSS := l_klev_rec_sum.GAIN_LOSS
506 + round_amount(l_currency_code,l_child_split_factor * p_klev_rec.GAIN_LOSS);
507 l_klev_rec_sum.FLOOR_AMOUNT := l_klev_rec_sum.FLOOR_AMOUNT
508 + round_amount(l_currency_code,l_child_split_factor * p_klev_rec.FLOOR_AMOUNT);
509 l_klev_rec_sum.TRACKED_RESIDUAL := l_klev_rec_sum.TRACKED_RESIDUAL
510 + round_amount(l_currency_code,l_child_split_factor * p_klev_rec.TRACKED_RESIDUAL);
511 l_klev_rec_sum.AMOUNT := l_klev_rec_sum.AMOUNT
512 + round_amount(l_currency_code,l_child_split_factor * p_klev_rec.AMOUNT);
513 l_klev_rec_sum.OEC := l_klev_rec_sum.OEC
514 + round_amount(l_currency_code,l_child_split_factor * p_klev_rec.OEC);
515 l_klev_rec_sum.CAPITAL_AMOUNT := l_klev_rec_sum.CAPITAL_AMOUNT
516 + round_amount(l_currency_code,l_child_split_factor * p_klev_rec.CAPITAL_AMOUNT);
517 l_klev_rec_sum.RESIDUAL_GRNTY_AMOUNT := l_klev_rec_sum.RESIDUAL_GRNTY_AMOUNT
518 + round_amount(l_currency_code,l_child_split_factor * p_klev_rec.RESIDUAL_GRNTY_AMOUNT);
519 l_klev_rec_sum.RVI_PREMIUM := l_klev_rec_sum.RVI_PREMIUM
520 + round_amount(l_currency_code,l_child_split_factor * p_klev_rec.RVI_PREMIUM);
521 l_klev_rec_sum.CAPITALIZED_INTEREST := l_klev_rec_sum.CAPITALIZED_INTEREST
522 + round_amount(l_currency_code,l_child_split_factor * p_klev_rec.CAPITALIZED_INTEREST);
523 l_klev_rec_sum.SUBSIDY_OVERRIDE_AMOUNT := l_klev_rec_sum.SUBSIDY_OVERRIDE_AMOUNT
524 + round_amount(l_currency_code,l_child_split_factor * p_klev_rec.SUBSIDY_OVERRIDE_AMOUNT);
525 l_klev_rec_sum.Expected_Asset_Cost := l_klev_rec_sum.Expected_Asset_Cost
526 + round_amount(l_currency_code,l_child_split_factor * p_klev_rec.Expected_Asset_Cost);
527 l_clev_rec_sum.price_unit := l_clev_rec_sum.price_unit
528 + round_amount(l_currency_code,l_child_split_factor * p_clev_rec.price_unit);
529 l_clev_rec_sum.price_negotiated := l_clev_rec_sum.price_negotiated
530 + round_amount(l_currency_code,l_child_split_factor * p_clev_rec.price_negotiated);
531 l_clev_rec_sum.price_negotiated_renewed := l_clev_rec_sum.price_negotiated_renewed
532 + round_amount(l_currency_code,l_child_split_factor * p_clev_rec.price_negotiated_renewed);
533
534 end loop;
535
536 --Bug# 6788253: Replaced l_child_split_factor with p_split_factor in below code that calculates split values
537 -- for the asset line to which rounding differences are applied.
538
539 IF l_split_by_unit ='N' THEN
540 --unit price to be changed in split by component only
541 l_clev_rec_out.price_unit := round_amount(l_currency_code,p_split_factor * p_clev_rec.price_unit )
542 + (p_clev_rec.price_unit - l_clev_rec_sum.price_unit);
543 l_clev_rec_out.price_negotiated := round_amount(l_currency_code,p_split_factor * p_clev_rec.price_negotiated )
544 + (p_clev_rec.price_negotiated - l_clev_rec_sum.price_negotiated);
545 l_clev_rec_out.price_negotiated_renewed :=
546 round_amount(l_currency_code,p_split_factor * p_clev_rec.price_negotiated_renewed )
547 + (p_clev_rec.price_negotiated_renewed - l_clev_rec_sum.price_negotiated_renewed);
548 END IF;
549
550
551 l_klev_rec_out.LAO_AMOUNT := round_amount(l_currency_code,p_split_factor * p_klev_rec.LAO_AMOUNT )
552 + p_klev_rec.LAO_AMOUNT - l_klev_rec_sum.LAO_AMOUNT;
553 l_klev_rec_out.ESTIMATED_OEC := round_amount(l_currency_code,p_split_factor * p_klev_rec.ESTIMATED_OEC )
554 + p_klev_rec.ESTIMATED_OEC - l_klev_rec_sum.ESTIMATED_OEC;
555 l_klev_rec_out.CAPITAL_REDUCTION := round_amount(l_currency_code,p_split_factor * p_klev_rec.CAPITAL_REDUCTION )
556 + p_klev_rec.CAPITAL_REDUCTION - l_klev_rec_sum.CAPITAL_REDUCTION;
557 l_klev_rec_out.FEE_CHARGE := round_amount(l_currency_code,p_split_factor * p_klev_rec.FEE_CHARGE )
558 + p_klev_rec.FEE_CHARGE - l_klev_rec_sum.FEE_CHARGE;
559 l_klev_rec_out.INITIAL_DIRECT_COST := round_amount(l_currency_code,p_split_factor * p_klev_rec.INITIAL_DIRECT_COST )
560 + p_klev_rec.INITIAL_DIRECT_COST - l_klev_rec_sum.INITIAL_DIRECT_COST;
561 l_klev_rec_out.AMOUNT_STAKE := round_amount(l_currency_code,p_split_factor * p_klev_rec.AMOUNT_STAKE )
562 + p_klev_rec.AMOUNT_STAKE - l_klev_rec_sum.AMOUNT_STAKE;
563 l_klev_rec_out.LRV_AMOUNT := round_amount(l_currency_code,p_split_factor * p_klev_rec.LRV_AMOUNT )
564 + p_klev_rec.LRV_AMOUNT - l_klev_rec_sum.LRV_AMOUNT;
565 l_klev_rec_out.COVERAGE := round_amount(l_currency_code,p_split_factor * p_klev_rec.COVERAGE )
566 + p_klev_rec.COVERAGE - l_klev_rec_sum.COVERAGE;
567 l_klev_rec_out.VENDOR_ADVANCE_PAID := round_amount(l_currency_code,p_split_factor * p_klev_rec.VENDOR_ADVANCE_PAID )
568 + p_klev_rec.VENDOR_ADVANCE_PAID - l_klev_rec_sum.VENDOR_ADVANCE_PAID;
569 l_klev_rec_out.TRADEIN_AMOUNT := round_amount(l_currency_code,p_split_factor * p_klev_rec.TRADEIN_AMOUNT )
570 + p_klev_rec.TRADEIN_AMOUNT - l_klev_rec_sum.TRADEIN_AMOUNT;
571 l_klev_rec_out.BOND_EQUIVALENT_YIELD := round_amount(l_currency_code,p_split_factor * p_klev_rec.BOND_EQUIVALENT_YIELD )
572 + p_klev_rec.BOND_EQUIVALENT_YIELD - l_klev_rec_sum.BOND_EQUIVALENT_YIELD;
573 l_klev_rec_out.TERMINATION_PURCHASE_AMOUNT := round_amount(l_currency_code,p_split_factor * p_klev_rec.TERMINATION_PURCHASE_AMOUNT )
574 + p_klev_rec.TERMINATION_PURCHASE_AMOUNT - l_klev_rec_sum.TERMINATION_PURCHASE_AMOUNT;
575 l_klev_rec_out.REFINANCE_AMOUNT := round_amount(l_currency_code,p_split_factor * p_klev_rec.REFINANCE_AMOUNT )
576 + p_klev_rec.REFINANCE_AMOUNT - l_klev_rec_sum.REFINANCE_AMOUNT;
577 l_klev_rec_out.REMARKETED_AMOUNT := round_amount(l_currency_code,p_split_factor * p_klev_rec.REMARKETED_AMOUNT )
578 + p_klev_rec.REMARKETED_AMOUNT - l_klev_rec_sum.REMARKETED_AMOUNT;
579 l_klev_rec_out.REMARKET_MARGIN := round_amount(l_currency_code,p_split_factor * p_klev_rec.REMARKET_MARGIN )
580 + p_klev_rec.REMARKET_MARGIN - l_klev_rec_sum.REMARKET_MARGIN;
581 l_klev_rec_out.REPURCHASED_AMOUNT := round_amount(l_currency_code,p_split_factor * p_klev_rec.REPURCHASED_AMOUNT )
582 + p_klev_rec.REPURCHASED_AMOUNT - l_klev_rec_sum.REPURCHASED_AMOUNT;
583 l_klev_rec_out.RESIDUAL_VALUE := round_amount(l_currency_code,p_split_factor * p_klev_rec.RESIDUAL_VALUE )
584 + p_klev_rec.RESIDUAL_VALUE - l_klev_rec_sum.RESIDUAL_VALUE;
585 l_klev_rec_out.APPRAISAL_VALUE := round_amount(l_currency_code,p_split_factor * p_klev_rec.APPRAISAL_VALUE )
586 + p_klev_rec.APPRAISAL_VALUE - l_klev_rec_sum.APPRAISAL_VALUE;
587 l_klev_rec_out.GAIN_LOSS := round_amount(l_currency_code,p_split_factor * p_klev_rec.GAIN_LOSS )
588 + p_klev_rec.GAIN_LOSS - l_klev_rec_sum.GAIN_LOSS;
589 l_klev_rec_out.FLOOR_AMOUNT := round_amount(l_currency_code,p_split_factor * p_klev_rec.FLOOR_AMOUNT )
590 + p_klev_rec.FLOOR_AMOUNT - l_klev_rec_sum.FLOOR_AMOUNT;
591 l_klev_rec_out.TRACKED_RESIDUAL := round_amount(l_currency_code,p_split_factor * p_klev_rec.TRACKED_RESIDUAL )
592 + p_klev_rec.TRACKED_RESIDUAL - l_klev_rec_sum.TRACKED_RESIDUAL;
593 l_klev_rec_out.AMOUNT := round_amount(l_currency_code,p_split_factor * p_klev_rec.AMOUNT )
594 + p_klev_rec.AMOUNT - l_klev_rec_sum.AMOUNT;
595 l_klev_rec_out.OEC := round_amount(l_currency_code,p_split_factor * p_klev_rec.OEC )
596 + p_klev_rec.OEC - l_klev_rec_sum.OEC;
597 l_klev_rec_out.CAPITAL_AMOUNT := round_amount(l_currency_code,p_split_factor * p_klev_rec.CAPITAL_AMOUNT )
598 + p_klev_rec.CAPITAL_AMOUNT - l_klev_rec_sum.CAPITAL_AMOUNT;
599 l_klev_rec_out.RESIDUAL_GRNTY_AMOUNT := round_amount(l_currency_code,p_split_factor * p_klev_rec.RESIDUAL_GRNTY_AMOUNT )
600 + p_klev_rec.RESIDUAL_GRNTY_AMOUNT - l_klev_rec_sum.RESIDUAL_GRNTY_AMOUNT;
601 l_klev_rec_out.RVI_PREMIUM := round_amount(l_currency_code,p_split_factor * p_klev_rec.RVI_PREMIUM )
602 + p_klev_rec.RVI_PREMIUM - l_klev_rec_sum.RVI_PREMIUM;
603 l_klev_rec_out.CAPITALIZED_INTEREST := round_amount(l_currency_code,p_split_factor * p_klev_rec.CAPITALIZED_INTEREST )
604 + p_klev_rec.CAPITALIZED_INTEREST - l_klev_rec_sum.CAPITALIZED_INTEREST;
605 l_klev_rec_out.SUBSIDY_OVERRIDE_AMOUNT := round_amount(l_currency_code,p_split_factor * p_klev_rec.SUBSIDY_OVERRIDE_AMOUNT )
606 + p_klev_rec.SUBSIDY_OVERRIDE_AMOUNT - l_klev_rec_sum.SUBSIDY_OVERRIDE_AMOUNT;
607 l_klev_rec_out.Expected_Asset_Cost := round_amount(l_currency_code,p_split_factor * p_klev_rec.Expected_Asset_Cost )
608 + p_klev_rec.Expected_Asset_Cost - l_klev_rec_sum.Expected_Asset_Cost;
609
610 x_klev_rec:=l_klev_rec_out;
611 x_clev_rec:=l_clev_rec_out;
612
613 OKL_API.END_ACTIVITY (x_msg_count, x_msg_data);
614
615 EXCEPTION
616
617 WHEN OKL_API.G_EXCEPTION_ERROR THEN
618 l_return_status := OKL_API.HANDLE_EXCEPTIONS(
619 l_api_name,
620 G_PKG_NAME,
621 'OKL_API.G_RET_STS_ERROR',
622 x_msg_count,
623 x_msg_data,
624 '_PVT');
625 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
626 l_return_status :=OKL_API.HANDLE_EXCEPTIONS(
627 l_api_name,
628 G_PKG_NAME,
629 'OKL_API.G_RET_STS_UNEXP_ERROR',
630 x_msg_count,
631 x_msg_data,
632 '_PVT');
633 WHEN OTHERS THEN
634 l_return_status :=OKL_API.HANDLE_EXCEPTIONS(
635 l_api_name,
636 G_PKG_NAME,
637 'OTHERS',
638 x_msg_count,
639 x_msg_data,
640 '_PVT');
641
642 END get_split_round_amount;
643
644 --Bug# 6344223
645 ------------------------------------------------------------------------------
646 --Bug# 6344223
647 --API Name : adjust_unit_cost
648 --Description : API to adjust the unit price when payment type is
649 -- PRINCIPAL PAYMENT.
650 --History :
651 -- 25-Jul-2007 rirawat Creation
652 --End of Comments
653 ------------------------------------------------------------------------------
654
655 procedure adjust_unit_cost( p_api_version IN NUMBER,
656 p_init_msg_list IN VARCHAR2,
657 x_return_status OUT NOCOPY VARCHAR2,
658 x_msg_count OUT NOCOPY NUMBER,
659 x_msg_data OUT NOCOPY VARCHAR2,
660 p_cle_id NUMBER,
661 p_txdv_rec IN txdv_rec_type,
662 p_txlv_rec IN txlv_rec_type
663 ) IS
664
665
666 l_return_status VARCHAR2(1) DEFAULT OKL_API.G_RET_STS_SUCCESS;
667 l_api_name CONSTANT VARCHAR2(30) := 'adjust_unit_cost';
668 l_api_version CONSTANT NUMBER := 1.0;
669
670 l_fa_line_id NUMBER;
671 l_chr_id NUMBER;
672 l_tot_principal_payment NUMBER;
673 l_principal_payment_found varchar2(1) := 'N';
674 l_rule_id number;
675 l_curr_cle_id NUMBER;
676
677
678 rec_count NUMBER;
679 subtype klev_tbl_type is OKL_CONTRACT_PUB.klev_tbl_type;
680 subtype clev_tbl_type is OKL_OKC_MIGRATION_PVT.clev_tbl_type;
681
682 l_clev_price_tbl clev_tbl_type;
683 lx_clev_price_tbl clev_tbl_type;
684 l_klev_price_tbl klev_tbl_type;
685 lx_klev_price_tbl klev_tbl_type;
686
687 CURSOR k_line_curs(p_fa_line_id IN NUMBER) IS
688 SELECT cle.cle_id , sts.ste_code
689 FROM okc_k_lines_b cle , OKC_STATUSES_B sts
690 WHERE id = p_fa_line_id
691 and cle.sts_code = sts.code;
692
693 l_ste_code OKC_STATUSES_B.STE_CODE%TYPE;
694
695 --cursor to get model and fixed asset lines
696 cursor l_cleb_csr (p_cle_id in number,
697 p_chr_id in number,
698 p_lty_code in varchar2) is
699 select cleb.id,
700 cleb.price_unit
701 from okc_k_lines_b cleb,
702 okc_line_styles_b lseb
703 where cleb.cle_id = p_cle_id
704 and cleb.dnz_chr_id = p_chr_id
705 and cleb.lse_id = lseb.id
706 and lseb.lty_code = p_lty_code;
707
708 l_cleb_rec l_cleb_csr%ROWTYPE;
709 CURSOR l_pmnt_strm_check(p_chrId NUMBER,
710 p_cle_id NUMBER
711 ) IS
712 SELECT crl.id
713 FROM OKC_RULE_GROUPS_B crg,
714 OKC_RULES_B crl,
715 OKL_STRM_TYPE_B stty
716 WHERE stty.id = crl.object1_id1
717 AND stty.stream_type_purpose = 'PRINCIPAL_PAYMENT'
718 AND crl.rgp_id = crg.id
719 AND crg.RGD_CODE = 'LALEVL'
720 AND crl.RULE_INFORMATION_CATEGORY = 'LASLH'
721 AND crg.dnz_chr_id = p_chrId
722 and cle_id = p_cle_id;
723
724 CURSOR l_pmnt_strm_check2(
725 rgcode OKC_RULE_GROUPS_B.RGD_CODE%TYPE,
726 rlcat OKC_RULES_B.RULE_INFORMATION_CATEGORY%TYPE,
727 pmnt_strm_purpose OKL_STRM_TYPE_B.STREAM_TYPE_PURPOSE%TYPE,
728 chrId NUMBER) IS
729 SELECT crg.cle_id,
730 crl.id,
731 crl.object1_id1,
732 crl.RULE_INFORMATION1,
733 crl.RULE_INFORMATION2,
734 crl.RULE_INFORMATION3,
735 crl.RULE_INFORMATION4,
736 crl.RULE_INFORMATION5,
737 crl.RULE_INFORMATION6,
738 crl.RULE_INFORMATION10,
739 crl.RULE_INFORMATION11
740 FROM OKC_RULE_GROUPS_B crg,
741 OKC_RULES_B crl,
742 OKL_STRM_TYPE_B stty
743 WHERE stty.id = crl.object1_id1
744 AND stty.stream_type_purpose = pmnt_strm_purpose
745 AND crl.rgp_id = crg.id
746 AND crg.RGD_CODE = rgcode
747 AND crl.RULE_INFORMATION_CATEGORY = rlcat
748 AND crg.dnz_chr_id = chrId;
749
750 l_pmnt_strm_check_rec2 l_pmnt_strm_check2%ROWTYPE;
751
752 CURSOR l_pmnt_lns_in_hdr(p_id OKC_RULES_B.ID%TYPE,
753 chrId NUMBER) IS
754 SELECT
755 crl2.object1_id1,
756 crl2.object1_id2,
757 crl2.rule_information2,
758 NVL(crl2.rule_information3,0) rule_information3,
759 crl2.rule_information4,
760 crl2.rule_information5,
761 crl2.rule_information6,
762 crl2.rule_information7,
763 crl2.rule_information8,
764 crl2.rule_information10
765 FROM OKC_RULES_B crl1, OKC_RULES_B crl2
766 WHERE crl1.id = crl2.object2_id1
767 AND crl1.id = p_id
768 AND crl2.RULE_INFORMATION_CATEGORY = 'LASLL'
769 AND crl1.RULE_INFORMATION_CATEGORY = 'LASLH'
770 AND crl1.dnz_chr_id = chrId
771 AND crl2.dnz_chr_id = chrId
772 ORDER BY crl2.rule_information2 ASC;
773
774
775 CURSOR l_pmnt_lns_in_hdr2(p_id OKC_RULES_B.ID%TYPE, chrId NUMBER) IS
776 SELECT
777 crl2.object1_id1,
778 crl2.object1_id2,
779 crl2.rule_information2,
780 NVL(crl2.rule_information3,0) rule_information3,
781 crl2.rule_information4,
782 crl2.rule_information5,
783 crl2.rule_information6,
784 crl2.rule_information7,
785 crl2.rule_information8,
786 crl2.rule_information10
787 FROM OKC_RULES_B crl1, OKC_RULES_B crl2
788 WHERE crl1.id = crl2.object2_id1
789 AND crl1.id = p_id
790 AND crl2.RULE_INFORMATION_CATEGORY = 'LASLL'
791 AND crl1.RULE_INFORMATION_CATEGORY = 'LASLH'
792 AND crl1.dnz_chr_id = chrId
793 AND crl2.dnz_chr_id = chrId
794 ORDER BY crl2.rule_information2 ASC;
795
796 l_pmnt_lns_in_hdr_rec2 l_pmnt_lns_in_hdr2%ROWTYPE;
797
798 cursor l_kleb_csr (p_cle_id in number) IS
799 select CAPITALIZE_DOWN_PAYMENT_YN ,
800 CAPITAL_REDUCTION
801 from okl_k_lines
802 where id=p_cle_id ;
803
804 l_kleb_rec l_kleb_csr%ROWTYPE;
805
806 l_capitalize_downpayment_yn VARCHAR2(1):='N';
807 l_capital_reduction NUMBER;
808
809 l_pmnt_strm_check_rec l_pmnt_strm_check%ROWTYPE;
810 l_pmnt_lns_in_hdr_rec l_pmnt_lns_in_hdr%ROWTYPE;
811
812
813 l_child_unit_cost NUMBER;
814 l_child_quantity NUMBER;
815 l_amort_subsidy_amount NUMBER;
816 l_total_amount NUMBER;
817 l_tot_unsched_prin_payment NUMBER;
818
819 FUNCTION tot_unsched_prin_payment(
820 x_return_status OUT NOCOPY VARCHAR2,
821 p_chr_id IN NUMBER,
822 p_kle_id IN NUMBER) RETURN NUMBER IS
823 l_tot_amount NUMBER := 0;
824 BEGIN
825 x_return_status := Okl_Api.G_RET_STS_SUCCESS;
826 FOR l_pmnt_strm_check_rec2 IN l_pmnt_strm_check2('LALEVL','LASLH','UNSCHEDULED_PRINCIPAL_PAYMENT', p_chr_id)
827 LOOP
828 IF (l_pmnt_strm_check_rec2.cle_id = p_kle_id) THEN
829 FOR l_pmnt_lns_in_hdr_rec2 IN l_pmnt_lns_in_hdr2(l_pmnt_strm_check_rec2.id ,p_chr_id)
830 LOOP
831 l_tot_amount := l_tot_amount + NVL(l_pmnt_lns_in_hdr_rec2.rule_information8,0);
832 END LOOP;
833 END IF;
834 END LOOP;
835
836 RETURN(l_tot_amount);
837
838 EXCEPTION WHEN OTHERS THEN
839 --print('Exception In tot_unsched_prin_payment...sqlcode=' || sqlcode || ' sqlerrm=' || sqlerrm);
840 x_return_status := Okl_Api.G_RET_STS_ERROR;
841 RETURN(0);
842 END; -- tot_unsched_prin_payment
843
844
845 begin
846
847 -- Call start_activity to create savepoint, check compatibility
848 -- and initialize message list
849 x_return_status := OKL_API.START_ACTIVITY (
850 l_api_name
851 ,p_init_msg_list
852 ,'_PVT'
853 ,x_return_status);
854 -- Check if activity started successfully
855 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
856 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
857 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
858 RAISE OKL_API.G_EXCEPTION_ERROR;
859 END IF;
860
861 l_fa_line_id:= p_cle_id;
862 l_chr_id:= p_txlv_rec.dnz_khr_id;
863
864 OPEN k_line_curs(l_fa_line_id);
865 FETCH k_line_curs INTO l_curr_cle_id,l_ste_code;
866 IF k_line_curs%NOTFOUND THEN
867 NULL;
868 END IF;
869 CLOSE k_line_curs;
870
871 IF l_ste_code NOT IN ('CANCELLED','TERMINATED','HOLD','EXPIRED') THEN
872
873 l_tot_principal_payment:=0;
874
875 --check whether principal payment exists
876
877 l_principal_payment_found:='Y';
878
879 OPEN l_pmnt_strm_check(l_chr_id,l_curr_cle_id);
880 FETCH l_pmnt_strm_check into l_rule_id;
881 IF l_pmnt_strm_check%NOTFOUND THEN
882 l_principal_payment_found:='N';
883 ELSE
884 l_principal_payment_found:='Y';
885 END IF;
886 close l_pmnt_strm_check;
887
888
889 IF l_principal_payment_found='Y' THEN
890 --get the total principal payment amount
891 FOR l_pmnt_lns_in_hdr_rec IN l_pmnt_lns_in_hdr(l_rule_id ,l_chr_id)
892 LOOP
893 l_tot_principal_payment := l_tot_principal_payment +
894 NVL(l_pmnt_lns_in_hdr_rec.rule_information3,0) * NVL(l_pmnt_lns_in_hdr_rec.rule_information6, 0) +
895 NVL(l_pmnt_lns_in_hdr_rec.rule_information8, 0);
896 END LOOP;
897
898 ---------get subsidy amount if any--
899 l_amort_subsidy_amount :=0;
900 Okl_Subsidy_Process_Pvt.get_asset_subsidy_amount(
901 p_api_version => 1.0,
902 p_init_msg_list => Okl_Api.G_FALSE,
903 x_return_status => l_return_status,
904 x_msg_count => x_msg_count,
905 x_msg_data => x_msg_data,
906 p_asset_cle_id => l_curr_cle_id,
907 p_accounting_method => 'AMORTIZE',
908 x_subsidy_amount => l_amort_subsidy_amount);
909
910 l_amort_subsidy_amount:=NVL(l_amort_subsidy_amount,0);
911
912
913 -- get capitalized downpayment amount --------
914
915 l_capital_reduction :=0;
916
917 open l_kleb_csr(p_cle_id => l_curr_cle_id);
918 fetch l_kleb_csr into l_kleb_rec;
919 If l_kleb_csr%NOTFOUND THEN
920 l_capital_reduction :=0;
921 Else
922 IF NVL(l_kleb_rec.CAPITALIZE_DOWN_PAYMENT_YN,'X')='Y' THEN
923 l_capital_reduction := NVL(l_kleb_rec.CAPITAL_REDUCTION,0);
924 END IF;
925 End if;
926 -----------------------------------
927 --Total Unscheduled Principal Payment
928 l_tot_unsched_prin_payment :=
929 tot_unsched_prin_payment(l_return_status,
930 l_chr_id, l_curr_cle_id);
931
932 --total amount
933 l_total_amount := l_amort_subsidy_amount + l_tot_principal_payment
934 +l_capital_reduction + l_tot_unsched_prin_payment ;
935
936
937 IF NVL(p_txlv_rec.SPLIT_INTO_SINGLES_FLAG,'X')='Y' THEN
938 l_child_quantity:=1;
939 ELSE
940 l_child_quantity := p_txdv_rec.quantity;
941 END IF;
942
943 --evaluate the unit cost
944 l_child_unit_cost := l_total_amount/l_child_quantity ;
945
946
947 --Update the contract line with the unit cost
948
949 rec_count:=0;
950 rec_count := rec_count+1;
951 l_clev_price_tbl(rec_count).id := l_fa_line_id;
952 l_klev_price_tbl(rec_count).id := l_fa_line_id;
953 l_clev_price_tbl(rec_count).price_unit := l_child_unit_cost;
954
955 open l_cleb_csr(p_cle_id => l_curr_cle_id,
956 p_chr_id => l_chr_id,
957 p_lty_code => 'ITEM');
958 fetch l_cleb_csr into l_cleb_rec;
959 If l_cleb_csr%NOTFOUND then
960 Null;
961 Else
962 rec_count := rec_count+1;
963 l_clev_price_tbl(rec_count).id := l_cleb_rec.id;
964 l_klev_price_tbl(rec_count).id := l_cleb_rec.id;
965 l_clev_price_tbl(rec_count).price_unit := l_child_unit_cost;
966
967 End If;
968 close l_cleb_csr;
969
970 --Call api to update line
971 OKL_CONTRACT_PUB.update_contract_line(
972 p_api_version => p_api_version,
973 p_init_msg_list => p_init_msg_list,
974 x_return_status => x_return_status,
975 x_msg_count => x_msg_count,
976 x_msg_data => x_msg_data,
977 p_clev_tbl => l_clev_price_tbl,
978 p_klev_tbl => l_klev_price_tbl,
979 x_clev_tbl => lx_clev_price_tbl,
980 x_klev_tbl => lx_klev_price_tbl);
981
982 --dbms_output.put_line('After updating contract line :'||x_return_status);
983 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
984 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
985 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
986 RAISE OKL_API.G_EXCEPTION_ERROR;
987 END IF;
988 END IF; -- l_principal_payment_found
989 END IF; --l_ste_code
990
991 EXCEPTION
992 WHEN OKL_API.G_EXCEPTION_ERROR THEN
993 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
994 l_api_name,
995 G_PKG_NAME,
996 'OKL_API.G_RET_STS_ERROR',
997 x_msg_count,
998 x_msg_data,
999 '_PVT');
1000 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1001 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
1002 l_api_name,
1003 G_PKG_NAME,
1004 'OKL_API.G_RET_STS_UNEXP_ERROR',
1005 x_msg_count,
1006 x_msg_data,
1007 '_PVT');
1008 WHEN OTHERS THEN
1009 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
1010 l_api_name,
1011 G_PKG_NAME,
1012 'OTHERS',
1013 x_msg_count,
1014 x_msg_data,
1015 '_PVT');
1016 end adjust_unit_cost;
1017
1018
1019 --Bug# 6344223
1020 ------------------------------------------------------------------------------
1021 --Bug# 6344223
1022 --API Name : SYNC_STREAMS
1023 --Description : API to perform stream generation processing for Split asset.
1024 --History :
1025 -- 25-Jul-2007 rirawat Creation
1026 --End of Comments
1027 ------------------------------------------------------------------------------
1028 PROCEDURE sync_streams(p_api_version IN NUMBER,
1029 p_init_msg_list IN VARCHAR2,
1030 x_return_status OUT NOCOPY VARCHAR2,
1031 x_msg_count OUT NOCOPY NUMBER,
1032 x_msg_data OUT NOCOPY VARCHAR2,
1033 p_chr_id IN NUMBER ) IS
1034
1035
1036 l_api_name CONSTANT VARCHAR2(30) := 'sync_streams';
1037 l_api_version CONSTANT NUMBER := 1.0;
1038
1039 l_trx_number NUMBER;
1040 l_trx_status VARCHAR2(100);
1041 BEGIN
1042 -- Call start_activity to create savepoint, check compatibility
1043 -- and initialize message list
1044 x_return_status := OKL_API.START_ACTIVITY (
1045 l_api_name
1046 ,p_init_msg_list
1047 ,'_PVT'
1048 ,x_return_status);
1049 -- Check if activity started successfully
1050 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1051 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1052 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1053 RAISE OKL_API.G_EXCEPTION_ERROR;
1054 END IF;
1055
1056 okl_contract_status_pub.update_contract_status(
1057 p_api_version => l_api_version,
1058 p_init_msg_list => p_init_msg_list,
1059 x_return_status => x_return_status,
1060 x_msg_count => x_msg_count,
1061 x_msg_data => x_msg_data,
1062 p_khr_status => 'PASSED',
1063 p_chr_id => p_chr_id);
1064 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1065 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1066 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1067 RAISE Okl_Api.G_EXCEPTION_ERROR;
1068 END IF;
1069
1070 --cascade status to lines
1071 okl_contract_status_pub.cascade_lease_status(
1072 p_api_version => l_api_version,
1073 p_init_msg_list => p_init_msg_list,
1074 x_return_status => x_return_status,
1075 x_msg_count => x_msg_count,
1076 x_msg_data => x_msg_data,
1077 p_chr_id => p_chr_id);
1078
1079 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1080 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1081 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1082 RAISE Okl_Api.G_EXCEPTION_ERROR;
1083 END IF;
1084
1085 OKL_LA_STREAM_PUB.GEN_INTR_EXTR_STREAM (
1086 p_api_version => l_api_version,
1087 p_init_msg_list => p_init_msg_list,
1088 x_return_status => x_return_status,
1089 x_msg_count => x_msg_count,
1090 x_msg_data => x_msg_data,
1091 p_khr_id => p_chr_id,
1092 p_generation_ctx_code => 'AUTH',
1093 x_trx_number => l_trx_number,
1094 x_trx_status => l_trx_status);
1095
1096 -- check if activity started successfully
1097 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1098 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1099 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1100 RAISE OKL_API.G_EXCEPTION_ERROR;
1101 END IF;
1102 OKL_API.END_ACTIVITY (x_msg_count,
1103 x_msg_data);
1104 EXCEPTION
1105 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1106 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1107 l_api_name,
1108 G_PKG_NAME,
1109 'OKL_API.G_RET_STS_ERROR',
1110 x_msg_count,
1111 x_msg_data,
1112 '_PVT');
1113 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1114 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1115 l_api_name,
1116 G_PKG_NAME,
1117 'OKL_API.G_RET_STS_UNEXP_ERROR',
1118 x_msg_count,
1119 x_msg_data,
1120 '_PVT');
1121 WHEN OTHERS THEN
1122 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1123 l_api_name,
1124 G_PKG_NAME,
1125 'OTHERS',
1126 x_msg_count,
1127 x_msg_data,
1128 '_PVT');
1129
1130 END sync_streams;
1131
1132
1133
1134 --Bug# 6344223
1135 ------------------------------------------------------------------------------
1136 --Bug# 6344223
1137 --API Name : SPLIT_ASSET_AFTER_YIELD
1138 --Description : API to perform post stream generation processing for Split asset.
1139 --History :
1140 -- 25-Jul-2007 bkatraga Creation
1141 --End of Comments
1142 ------------------------------------------------------------------------------
1143 PROCEDURE SPLIT_ASSET_AFTER_YIELD (p_api_version IN NUMBER,
1144 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1145 x_return_status OUT NOCOPY VARCHAR2,
1146 x_msg_count OUT NOCOPY NUMBER,
1147 x_msg_data OUT NOCOPY VARCHAR2,
1148 p_chr_id IN NUMBER) IS
1149
1150 l_return_status VARCHAR2(1) DEFAULT OKL_API.G_RET_STS_SUCCESS;
1151 l_api_name CONSTANT VARCHAR2(30) := 'SPLIT_ASSET_AFTER_YIELD';
1152 l_api_version CONSTANT NUMBER := 1.0;
1153 l_split_trx_flag VARCHAR2(1);
1154 l_accrual_rec OKL_GENERATE_ACCRUALS_PVT.adjust_accrual_rec_type;
1155 l_stream_tbl OKL_GENERATE_ACCRUALS_PVT.stream_tbl_type;
1156 l_chr_secure VARCHAR2(3) := OKL_API.G_FALSE;
1157 l_inv_agmt_chr_id_tbl OKL_SECURITIZATION_PVT.inv_agmt_chr_id_tbl_type;
1158 l_inv_accrual_rec OKL_GENERATE_ACCRUALS_PVT.adjust_accrual_rec_type;
1159 l_inv_stream_tbl OKL_GENERATE_ACCRUALS_PVT.stream_tbl_type;
1160 l_trxv_rec trxv_rec_type;
1161 lx_trxv_rec trxv_rec_type;
1162 l_split_trans_id OKL_TRX_ASSETS.ID%TYPE;
1163 l_trx_number OKL_TRX_CONTRACTS.TRX_NUMBER%TYPE := null; -- MGAAP
1164 l_trx_reason_asset_split VARCHAR2(20) := OKL_SECURITIZATION_PVT.G_TRX_REASON_ASSET_SPLIT;
1165
1166 --Cursor to check whether split asset transaction is in progress for the contract
1167 CURSOR check_split_trx_csr IS
1168 SELECT tas.id
1169 FROM OKL_TXL_ASSETS_B txl, OKL_TRX_ASSETS tas
1170 WHERE txl.tal_type= 'ALI'
1171 AND txl.dnz_khr_id = p_chr_id
1172 AND txl.tas_id = tas.id
1173 AND tas.tas_type = 'ALI'
1174 AND tas.tsu_code = 'ENTERED';
1175
1176 -- MGAAP start 7263041
1177 CURSOR check_csr(p_chr_id NUMBER) IS
1178 SELECT A.MULTI_GAAP_YN,
1179 B.REPORTING_PDT_ID
1180 FROM OKL_K_HEADERS A,
1181 OKL_PRODUCTS B
1182 WHERE A.ID = p_chr_id
1183 AND A.PDT_ID = B.ID;
1184
1185 l_multi_gaap_yn OKL_K_HEADERS.MULTI_GAAP_YN%TYPE;
1186 l_reporting_pdt_id OKL_PRODUCTS.REPORTING_PDT_ID%TYPE;
1187 -- MGAAP start 7263041
1188
1189 BEGIN
1190 -- Call start_activity to create savepoint, check compatibility
1191 -- and initialize message list
1192 x_return_status := OKL_API.START_ACTIVITY (
1193 l_api_name
1194 ,p_init_msg_list
1195 ,'_PVT'
1196 ,x_return_status);
1197 -- Check if activity started successfully
1198 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1199 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1200 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1201 RAISE OKL_API.G_EXCEPTION_ERROR;
1202 END IF;
1203
1204 -- MGAAP start 7263041
1205 OPEN check_csr(p_chr_id);
1206 FETCH check_csr
1207 INTO l_multi_gaap_yn, l_reporting_pdt_id;
1208 CLOSE check_csr;
1209 -- MGAAP end 7263041
1210
1211 OPEN check_split_trx_csr;
1212 FETCH check_split_trx_csr INTO l_split_trans_id;
1213 CLOSE check_split_trx_csr;
1214
1215 --Split asset transaction exists for the contract
1216 IF(l_split_trans_id IS NOT NULL) THEN
1217 okl_contract_status_pub.update_contract_status(
1218 p_api_version => p_api_version,
1219 p_init_msg_list => p_init_msg_list,
1220 x_return_status => x_return_status,
1221 x_msg_count => x_msg_count,
1222 x_msg_data => x_msg_data,
1223 p_khr_status => 'BOOKED',
1224 p_chr_id => p_chr_id);
1225 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1226 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1227 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1228 RAISE Okl_Api.G_EXCEPTION_ERROR;
1229 END IF;
1230
1231 --cascade status to lines
1232 okl_contract_status_pub.cascade_lease_status(
1233 p_api_version => p_api_version,
1234 p_init_msg_list => p_init_msg_list,
1235 x_return_status => x_return_status,
1236 x_msg_count => x_msg_count,
1237 x_msg_data => x_msg_data,
1238 p_chr_id => p_chr_id);
1239 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1240 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1241 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1242 RAISE Okl_Api.G_EXCEPTION_ERROR;
1243 END IF;
1244
1245 --Bug# 6336455
1246 -- R12B Authoring OA Migration
1247 -- Update the status of the Submit Contract task to Complete
1248 OKL_BOOK_CONTROLLER_PVT.update_book_controller_trx(
1249 p_api_version => p_api_version,
1250 p_init_msg_list => p_init_msg_list,
1251 x_return_status => x_return_status,
1252 x_msg_count => x_msg_count,
1253 x_msg_data => x_msg_data,
1254 p_khr_id => p_chr_id ,
1255 p_prog_short_name => OKL_BOOK_CONTROLLER_PVT.G_SUBMIT_CONTRACT,
1256 p_progress_status => OKL_BOOK_CONTROLLER_PVT.G_PROG_STS_COMPLETE);
1257
1258 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
1259 Raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1260 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
1261 Raise OKL_API.G_EXCEPTION_ERROR;
1262 END IF;
1263
1264 OKL_CONTRACT_REBOOK_PVT.create_billing_adjustment(
1265 p_api_version => p_api_version,
1266 p_init_msg_list => p_init_msg_list,
1267 x_return_status => x_return_status,
1268 x_msg_count => x_msg_count,
1269 x_msg_data => x_msg_data,
1270 p_rbk_khr_id => p_chr_id,
1271 p_orig_khr_id => p_chr_id,
1272 p_trx_id => l_split_trans_id,
1273 p_trx_date => sysdate);
1274 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1275 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1276 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1277 RAISE Okl_Api.G_EXCEPTION_ERROR;
1278 END IF;
1279
1280 OKL_STREAMS_SEC_PVT.RESET_REPO_STREAMS; -- MGAAP 7263041
1281 OKL_CONTRACT_REBOOK_PVT.calc_accrual_adjustment(
1282 p_api_version => p_api_version,
1283 p_init_msg_list => p_init_msg_list,
1284 x_return_status => x_return_status,
1285 x_msg_count => x_msg_count,
1286 x_msg_data => x_msg_data,
1287 p_rbk_khr_id => p_chr_id,
1288 p_orig_khr_id => p_chr_id,
1289 p_trx_id => l_split_trans_id,
1290 p_trx_date => sysdate,
1291 x_accrual_rec => l_accrual_rec,
1292 x_stream_tbl => l_stream_tbl,
1293 p_trx_tbl_code => 'TAS',
1294 p_trx_type => 'ALI');
1295 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1296 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1297 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1298 RAISE Okl_Api.G_EXCEPTION_ERROR;
1299 END IF;
1300
1301 IF (l_stream_tbl.COUNT > 0) THEN
1302 OKL_GENERATE_ACCRUALS_PVT.ADJUST_ACCRUALS (
1303 p_api_version => p_api_version,
1304 p_init_msg_list => p_init_msg_list,
1305 x_return_status => x_return_status,
1306 x_msg_count => x_msg_count,
1307 x_msg_data => x_msg_data ,
1308 x_trx_number => l_trx_number,
1309 p_accrual_rec => l_accrual_rec,
1310 p_stream_tbl => l_stream_tbl);
1311 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1312 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1313 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1314 RAISE Okl_Api.G_EXCEPTION_ERROR;
1315 END IF;
1316 END IF;
1317
1318 -- MGAAP start 7263041
1319 OKL_STREAMS_SEC_PVT.SET_REPO_STREAMS; -- MGAAP 7263041
1320 OKL_CONTRACT_REBOOK_PVT.calc_accrual_adjustment(
1321 p_api_version => p_api_version,
1322 p_init_msg_list => p_init_msg_list,
1323 x_return_status => x_return_status,
1324 x_msg_count => x_msg_count,
1325 x_msg_data => x_msg_data,
1326 p_rbk_khr_id => p_chr_id,
1327 p_orig_khr_id => p_chr_id,
1328 p_trx_id => l_split_trans_id,
1329 p_trx_date => sysdate,
1330 x_accrual_rec => l_accrual_rec,
1331 x_stream_tbl => l_stream_tbl,
1332 p_trx_tbl_code => 'TAS',
1333 p_trx_type => 'ALI');
1334
1335 OKL_STREAMS_SEC_PVT.RESET_REPO_STREAMS; -- MGAAP 7263041
1336 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1337 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1338 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1339 RAISE Okl_Api.G_EXCEPTION_ERROR;
1340 END IF;
1341
1342 IF (l_stream_tbl.COUNT > 0) THEN
1343 l_accrual_rec.trx_number := l_trx_number;
1344 OKL_GENERATE_ACCRUALS_PVT.ADJUST_ACCRUALS (
1345 p_api_version => p_api_version,
1346 p_init_msg_list => p_init_msg_list,
1347 x_return_status => x_return_status,
1348 x_msg_count => x_msg_count,
1349 x_msg_data => x_msg_data ,
1350 x_trx_number => l_trx_number,
1351 p_accrual_rec => l_accrual_rec,
1352 p_stream_tbl => l_stream_tbl,
1353 p_representation_type => 'SECONDARY');
1354 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1355 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1356 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1357 RAISE Okl_Api.G_EXCEPTION_ERROR;
1358 END IF;
1359 END IF;
1360 -- MGAAP end 7263041
1361
1362 okl_securitization_pvt.check_khr_securitized(
1363 p_api_version => p_api_version,
1364 p_init_msg_list => p_init_msg_list,
1365 x_return_status => x_return_status,
1366 x_msg_count => x_msg_count,
1367 x_msg_data => x_msg_data,
1368 p_khr_id => p_chr_id,
1369 p_effective_date => sysdate,
1370 x_value => l_chr_secure,
1371 x_inv_agmt_chr_id_tbl => l_inv_agmt_chr_id_tbl);
1372 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1373 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1374 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1375 RAISE Okl_Api.G_EXCEPTION_ERROR;
1376 END IF;
1377
1378 --Bug# 6788253
1379 IF l_chr_secure = OKL_API.G_TRUE THEN
1380 OKL_SECURITIZATION_PVT.modify_pool_contents(
1381 p_api_version => p_api_version,
1382 p_init_msg_list => p_init_msg_list,
1383 p_transaction_reason => l_trx_reason_asset_split,
1384 p_khr_id => p_chr_id,
1385 p_transaction_date => SYSDATE,
1386 p_effective_date => SYSDATE,
1387 x_return_status => x_return_status,
1388 x_msg_count => x_msg_count,
1389 x_msg_data => x_msg_data);
1390 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1391 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1392 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1393 RAISE Okl_Api.G_EXCEPTION_ERROR;
1394 END IF;
1395
1396 OKL_STREAM_GENERATOR_PVT.create_disb_streams(
1397 p_api_version => p_api_version,
1398 p_init_msg_list => p_init_msg_list,
1399 x_return_status => x_return_status,
1400 x_msg_count => x_msg_count,
1401 x_msg_data => x_msg_data,
1402 p_contract_id => p_chr_id);
1403 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1404 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1405 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1406 RAISE Okl_Api.G_EXCEPTION_ERROR;
1407 END IF;
1408
1409 OKL_STREAM_GENERATOR_PVT.create_pv_streams(
1410 p_api_version => p_api_version,
1411 p_init_msg_list => p_init_msg_list,
1412 x_return_status => x_return_status,
1413 x_msg_count => x_msg_count,
1414 x_msg_data => x_msg_data,
1415 p_contract_id => p_chr_id);
1416 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1417 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1418 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1419 RAISE Okl_Api.G_EXCEPTION_ERROR;
1420 END IF;
1421
1422 OKL_ACCRUAL_SEC_PVT.CREATE_STREAMS(
1423 p_api_version => p_api_version,
1424 p_init_msg_list => p_init_msg_list,
1425 x_return_status => x_return_status,
1426 x_msg_count => x_msg_count,
1427 x_msg_data => x_msg_data,
1428 p_khr_id => p_chr_id);
1429 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1430 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1431 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1432 RAISE Okl_Api.G_EXCEPTION_ERROR;
1433 END IF;
1434
1435 OKL_CONTRACT_REBOOK_PVT.create_inv_disb_adjustment(
1436 p_api_version => p_api_version,
1437 p_init_msg_list => p_init_msg_list,
1438 x_return_status => x_return_status,
1439 x_msg_count => x_msg_count,
1440 x_msg_data => x_msg_data,
1441 p_orig_khr_id => p_chr_id);
1442 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1443 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1444 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1445 RAISE Okl_Api.G_EXCEPTION_ERROR;
1446 END IF;
1447
1448 l_trx_number := null; -- MGAAP 7263041
1449 OKL_CONTRACT_REBOOK_PVT.calc_inv_acc_adjustment(
1450 p_api_version => p_api_version,
1451 p_init_msg_list => p_init_msg_list,
1452 x_return_status => x_return_status,
1453 x_msg_count => x_msg_count,
1454 x_msg_data => x_msg_data,
1455 p_orig_khr_id => p_chr_id,
1456 p_trx_id => l_split_trans_id,
1457 p_trx_date => sysdate,
1458 x_inv_accrual_rec => l_inv_accrual_rec,
1459 x_inv_stream_tbl => l_inv_stream_tbl,
1460 p_trx_tbl_code => 'TAS',
1461 p_trx_type => 'ALI');
1462 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1463 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1464 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1465 RAISE Okl_Api.G_EXCEPTION_ERROR;
1466 END IF;
1467
1468 IF (l_inv_stream_tbl.COUNT > 0) THEN
1469 OKL_GENERATE_ACCRUALS_PVT.ADJUST_ACCRUALS (
1470 p_api_version => p_api_version,
1471 p_init_msg_list => p_init_msg_list,
1472 x_return_status => x_return_status,
1473 x_msg_count => x_msg_count,
1474 x_msg_data => x_msg_data ,
1475 x_trx_number => l_trx_number,
1476 p_accrual_rec => l_inv_accrual_rec,
1477 p_stream_tbl => l_inv_stream_tbl);
1478 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1479 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1480 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1481 RAISE Okl_Api.G_EXCEPTION_ERROR;
1482 END IF;
1483 END IF;
1484
1485 -- MGAAP start 7263041
1486 IF (l_multi_gaap_yn = 'Y') THEN
1487 OKL_STREAMS_SEC_PVT.SET_REPO_STREAMS;
1488 OKL_CONTRACT_REBOOK_PVT.calc_inv_acc_adjustment(
1489 p_api_version => p_api_version,
1490 p_init_msg_list => p_init_msg_list,
1491 x_return_status => x_return_status,
1492 x_msg_count => x_msg_count,
1493 x_msg_data => x_msg_data,
1494 p_orig_khr_id => p_chr_id,
1495 p_trx_id => l_split_trans_id,
1496 p_trx_date => sysdate,
1497 x_inv_accrual_rec => l_inv_accrual_rec,
1498 x_inv_stream_tbl => l_inv_stream_tbl,
1499 p_trx_tbl_code => 'TAS',
1500 p_trx_type => 'ALI',
1501 p_product_id => l_reporting_pdt_id); -- MGAAP 7263041
1502
1503 OKL_STREAMS_SEC_PVT.RESET_REPO_STREAMS;
1504 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1505 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1506 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1507 RAISE Okl_Api.G_EXCEPTION_ERROR;
1508 END IF;
1509
1510 IF (l_inv_stream_tbl.COUNT > 0) THEN
1511 l_inv_accrual_rec.trx_number := l_trx_number;
1512 OKL_GENERATE_ACCRUALS_PVT.ADJUST_ACCRUALS (
1513 p_api_version => p_api_version,
1514 p_init_msg_list => p_init_msg_list,
1515 x_return_status => x_return_status,
1516 x_msg_count => x_msg_count,
1517 x_msg_data => x_msg_data ,
1518 x_trx_number => l_trx_number,
1519 p_accrual_rec => l_inv_accrual_rec,
1520 p_stream_tbl => l_inv_stream_tbl,
1521 p_representation_type => 'SECONDARY');
1522 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1523 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1524 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1525 RAISE Okl_Api.G_EXCEPTION_ERROR;
1526 END IF;
1527 END IF;
1528 END IF;
1529 -- MGAAP end 7263041
1530 END IF;
1531
1532 ------------------------------------------------------------------------
1533 --Bug# : R12.B eBTax impact Start
1534 ------------------------------------------------------------------------
1535 okl_process_sales_tax_pvt.calculate_sales_tax(
1536 p_api_version => p_api_version,
1537 p_init_msg_list => p_init_msg_list,
1538 x_return_status => x_return_status,
1539 x_msg_count => x_msg_count,
1540 x_msg_data => x_msg_data,
1541 p_source_trx_id => l_split_trans_id, --<okl_trx_assets.id>,
1542 p_source_trx_name => 'Split Asset',
1543 p_source_table => 'OKL_TRX_ASSETS');
1544
1545 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1546 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1547 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1548 RAISE OKL_API.G_EXCEPTION_ERROR;
1549 END IF;
1550
1551 ------------------------------------------------------------------------
1552 --Bug# : R12.B eBTax impact End
1553 ------------------------------------------------------------------------
1554
1555 l_trxv_rec.id := l_split_trans_id;
1556 l_trxv_rec.tsu_code := 'PROCESSED';
1557 OKL_TRX_ASSETS_PUB.update_trx_ass_h_def(
1558 p_api_version => p_api_version,
1559 p_init_msg_list => p_init_msg_list,
1560 x_return_status => x_return_status,
1561 x_msg_count => x_msg_count,
1562 x_msg_data => x_msg_data,
1563 p_thpv_rec => l_trxv_rec,
1564 x_thpv_rec => lx_trxv_rec);
1565 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1566 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1567 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1568 RAISE Okl_Api.G_EXCEPTION_ERROR;
1569 END IF;
1570 END IF;
1571
1572 OKL_API.END_ACTIVITY (x_msg_count,
1573 x_msg_data);
1574 EXCEPTION
1575 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1576 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1577 l_api_name,
1578 G_PKG_NAME,
1579 'OKL_API.G_RET_STS_ERROR',
1580 x_msg_count,
1581 x_msg_data,
1582 '_PVT');
1583 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1584 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1585 l_api_name,
1586 G_PKG_NAME,
1587 'OKL_API.G_RET_STS_UNEXP_ERROR',
1588 x_msg_count,
1589 x_msg_data,
1590 '_PVT');
1591 WHEN OTHERS THEN
1592 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1593 l_api_name,
1594 G_PKG_NAME,
1595 'OTHERS',
1596 x_msg_count,
1597 x_msg_data,
1598 '_PVT');
1599 END SPLIT_ASSET_AFTER_YIELD;
1600 --Bug# 6344223
1601
1602 ------------------------------------------------------------------------------
1603 --Bug# 6326479
1604 --API Name : process_split_accounting
1605 --Description : Private API to create accounting entries for transaction type
1606 -- 'Split Asset' for the new Asset created after split.
1607 --History :
1608 -- 18-Jun-2007 rirawat Creation
1609 --End of Comments
1610 ------------------------------------------------------------------------------
1611 PROCEDURE process_split_accounting(
1612 p_api_version IN NUMBER
1613 ,p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE
1614 ,x_return_status OUT NOCOPY VARCHAR2
1615 ,x_msg_count OUT NOCOPY NUMBER
1616 ,x_msg_data OUT NOCOPY VARCHAR2
1617 ,p_contract_id IN NUMBER
1618 ,p_kle_id IN NUMBER
1619 ,p_transaction_date IN DATE)
1620
1621 IS
1622 l_api_name CONSTANT VARCHAR2(30) := 'process_split_accounting';
1623 l_api_version CONSTANT NUMBER := 1.0;
1624
1625 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1626
1627 -- Define PL/SQL Records and Tables
1628 l_trxH_in_rec Okl_Trx_Contracts_Pvt.tcnv_rec_type;
1629 l_trxL_in_rec Okl_Trx_Contracts_Pvt.tclv_rec_type;
1630 l_trxH_out_rec Okl_Trx_Contracts_Pvt.tcnv_rec_type;
1631 l_trxL_out_rec Okl_Trx_Contracts_Pvt.tclv_rec_type;
1632
1633 -- Define variables
1634 l_post_to_gl_yn VARCHAR2(1);
1635
1636 l_amount NUMBER;
1637 l_init_msg_list VARCHAR2(1) := OKL_API.G_FALSE;
1638 l_msg_count NUMBER;
1639 l_msg_data VARCHAR2(2000);
1640 l_currency_code okl_txl_cntrct_lns.currency_code%TYPE;
1641
1642
1643 CURSOR Product_csr (p_contract_id IN okl_products_v.id%TYPE) IS
1644 SELECT pdt.id product_id
1645 ,pdt.name product_name
1646 ,khr.sts_code contract_status
1647 ,khr.start_date start_date
1648 ,khr.currency_code currency_code
1649 ,khr.authoring_org_id authoring_org_id
1650 ,khr.currency_conversion_rate currency_conversion_rate
1651 ,khr.currency_conversion_type currency_conversion_type
1652 ,khr.currency_conversion_date currency_conversion_date
1653 ,khr.scs_code
1654 FROM okl_products_v pdt
1655 ,okl_k_headers_full_v khr
1656 WHERE khr.id = p_contract_id
1657 AND khr.pdt_id = pdt.id;
1658
1659 -- Get the product type
1660 CURSOR l_product_type_csr ( p_pdt_id IN NUMBER) IS
1661 SELECT description
1662 FROM OKL_PRODUCTS_V
1663 WHERE id = p_pdt_id;
1664
1665 l_func_curr_code OKL_K_HEADERS_FULL_V.CURRENCY_CODE%TYPE;
1666 l_chr_curr_code OKL_K_HEADERS_FULL_V.CURRENCY_CODE%TYPE;
1667 x_currency_conversion_rate okl_k_headers_full_v.currency_conversion_rate%TYPE;
1668 x_currency_conversion_type okl_k_headers_full_v.currency_conversion_type%TYPE;
1669 x_currency_conversion_date okl_k_headers_full_v.currency_conversion_date%TYPE;
1670 l_functional_currency_code VARCHAR2(15);
1671 l_contract_currency_code VARCHAR2(15);
1672 l_converted_amount NUMBER;
1673 l_Product_rec Product_csr%ROWTYPE;
1674 l_transaction_date DATE;
1675 l_ctxt_val_tbl OKL_ACCOUNT_DIST_PUB.ctxt_val_tbl_type;
1676 l_acc_gen_primary_key_tbl OKL_ACCOUNT_DIST_PUB.acc_gen_primary_key;
1677 l_tmpl_identify_rec OKL_ACCOUNT_DIST_PVT.TMPL_IDENTIFY_REC_TYPE;
1678 lp_tmpl_identify_rec OKL_ACCOUNT_DIST_PUB.tmpl_identify_rec_type;
1679 l_dist_info_rec OKL_ACCOUNT_DIST_PVT.dist_info_REC_TYPE;
1680 l_template_tbl OKL_ACCOUNT_DIST_PVT.AVLV_TBL_TYPE;
1681 l_amount_tbl OKL_ACCOUNT_DIST_PVT.AMOUNT_TBL_TYPE;
1682 lx_template_tbl OKL_ACCOUNT_DIST_PUB.avlv_tbl_type;
1683 l_trx_desc VARCHAR2(2000);
1684 l_fact_synd_code FND_LOOKUPS.Lookup_code%TYPE;
1685 l_inv_acct_code OKC_RULES_B.Rule_Information1%TYPE;
1686 l_try_name VARCHAR2(30);
1687 l_trans_code VARCHAR2(30);
1688 l_tcn_type VARCHAR2(3);
1689 l_trans_meaning VARCHAR2(200);
1690 l_try_id NUMBER;
1691 G_NO CONSTANT VARCHAR2(1) := 'N';
1692 l_valid_gl_date DATE;
1693 l_product_type VARCHAR2(2000);
1694 lp_tclv_rec OKL_TRX_CONTRACTS_PUB.tclv_rec_type;
1695 lx_tclv_rec OKL_TRX_CONTRACTS_PUB.tclv_rec_type;
1696 li_tclv_rec OKL_TRX_CONTRACTS_PUB.tclv_rec_type;
1697 i NUMBER;
1698 l_total_amount NUMBER := 0;
1699 l_line_number NUMBER := 1;
1700 l_hard_coded_amount NUMBER := 100;
1701
1702 l_tclv_tbl Okl_trx_contracts_pvt.tclv_tbl_type;
1703 x_tclv_tbl Okl_trx_contracts_pvt.tclv_tbl_type;
1704 l_tcnv_rec Okl_trx_contracts_pvt.tcnv_rec_type;
1705 x_tcnv_rec Okl_trx_contracts_pvt.tcnv_rec_type;
1706
1707 l_tmpl_identify_tbl Okl_Account_Dist_Pvt.tmpl_identify_tbl_type;
1708 l_dist_info_tbl Okl_Account_Dist_Pvt.dist_info_tbl_type;
1709 l_ctxt_tbl Okl_Account_Dist_Pvt.CTXT_TBL_TYPE;
1710 l_template_out_tbl Okl_Account_Dist_Pvt.avlv_out_tbl_type;
1711 l_amount_out_tbl Okl_Account_Dist_Pvt.amount_out_tbl_type;
1712 l_acc_gen_tbl Okl_Account_Dist_Pvt.ACC_GEN_TBL_TYPE;
1713
1714 CURSOR fnd_lookups_csr( lkp_type VARCHAR2, mng VARCHAR2 ) IS
1715 select description,
1716 lookup_code
1717 from fnd_lookup_values
1718 where language = 'US'
1719 and lookup_type = lkp_type
1720 and meaning = mng;
1721
1722 l_fnd_rec fnd_lookups_csr%ROWTYPE;
1723
1724 BEGIN
1725 -- Set API savepoint
1726 SAVEPOINT process_split_accounting_PVT;
1727
1728 -- Check for call compatibility
1729 IF (NOT FND_API.Compatible_API_Call (l_api_version,
1730 p_api_version,
1731 l_api_name,
1732 G_PKG_NAME ))
1733 THEN
1734 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1735 END IF;
1736
1737 -- Initialize message list if requested
1738 IF (FND_API.to_Boolean(p_init_msg_list)) THEN
1739 FND_MSG_PUB.initialize;
1740 END IF;
1741
1742 -- Initialize API status to success
1743 x_return_status := OKL_API.G_RET_STS_SUCCESS;
1744 --------------------------------------------------------------------------
1745 -- Initialize API variables
1746 --------------------------------------------------------------------------
1747
1748 i := 0;
1749
1750 l_transaction_date := p_transaction_date;
1751
1752 l_trx_desc := 'OKL Accounting Transaction for Split Asset';
1753
1754 l_post_to_gl_yn := 'Y';
1755
1756 l_try_name := 'Split Asset';
1757 l_trans_code := 'SPLIT_ASSET';
1758 l_tcn_type := 'SPA';
1759
1760 l_trans_meaning := OKL_AM_UTIL_PVT.get_lookup_meaning(
1761 p_lookup_type => 'OKL_ACCOUNTING_EVENT_TYPE',
1762 p_lookup_code => l_trans_code,
1763 p_validate_yn => 'Y');
1764
1765
1766 OKL_AM_UTIL_PVT.get_transaction_id (
1767 p_try_name => l_try_name,
1768 p_language => 'US',
1769 x_return_status => l_return_status,
1770 x_try_id => l_try_id);
1771
1772
1773 -- Get product_id
1774 OPEN Product_csr(p_contract_id);
1775 FETCH Product_csr INTO l_Product_rec;
1776 IF Product_csr%NOTFOUND THEN
1777 Okl_Api.SET_MESSAGE(G_APP_NAME,
1778 'OKL_REQUIRED_VALUE',
1779 OKL_API.G_COL_NAME_TOKEN,
1780 'Product');
1781 CLOSE Product_csr;
1782 RAISE Okl_Api.G_EXCEPTION_ERROR;
1783 END IF;
1784 CLOSE Product_csr;
1785
1786 l_currency_code := l_Product_rec.currency_code;
1787
1788 --------------------------------------------------------------------------
1789 -- multi-currency setup
1790 --------------------------------------------------------------------------
1791
1792 l_chr_curr_code := l_Product_rec.CURRENCY_CODE;
1793
1794 l_func_curr_code := okl_accounting_util.get_func_curr_code;
1795
1796 x_currency_conversion_rate := NULL;
1797 x_currency_conversion_type := NULL;
1798 x_currency_conversion_date := NULL;
1799
1800 IF ( ( l_func_curr_code IS NOT NULL) AND
1801 ( l_chr_curr_code <> l_func_curr_code ) ) THEN
1802
1803 x_currency_conversion_type := l_Product_rec.currency_conversion_type;
1804 x_currency_conversion_date :=l_transaction_date;
1805
1806 IF ( l_Product_rec.currency_conversion_type = 'User') THEN
1807 x_currency_conversion_rate := l_Product_rec.currency_conversion_rate;
1808 x_currency_conversion_date := l_Product_rec.currency_conversion_date;
1809 ELSE
1810 x_currency_conversion_rate := okl_accounting_util.get_curr_con_rate(
1811 p_from_curr_code => l_chr_curr_code,
1812 p_to_curr_code => l_func_curr_code,
1813 p_con_date => l_transaction_date,
1814 p_con_type => l_Product_rec.currency_conversion_type);
1815
1816 END IF;
1817
1818 END IF;
1819
1820 --------------------------------------------------------------------------
1821 -- Assign passed in record values for transaction header and line
1822 -------------------------------------------------------------------------
1823
1824 l_trxH_in_rec.khr_id := p_contract_id;
1825 l_trxH_in_rec.pdt_id := l_Product_rec.product_id;
1826 l_trxH_in_rec.tcn_type := l_tcn_type; --'SPA'
1827 l_trxH_in_rec.currency_code := l_currency_code;
1828 l_trxH_in_rec.try_id := l_try_id;
1829 l_trxH_in_rec.description := l_trx_desc;
1830 l_trxH_in_rec.currency_conversion_rate := x_currency_conversion_rate;
1831 l_trxH_in_rec.currency_conversion_type := x_currency_conversion_type;
1832 l_trxH_in_rec.currency_conversion_date := x_currency_conversion_date;
1833 l_trxH_in_rec.tsu_code := 'PROCESSED';
1834 l_trxH_in_rec.date_transaction_occurred := l_transaction_date;
1835 l_trxH_in_rec.set_of_books_id := okl_accounting_util.get_set_of_books_id;
1836 l_trxH_in_rec.org_id := l_Product_rec.authoring_org_id;
1837 --------------------------------------------------------------------------
1838 -- Create transaction Header and line
1839 --------------------------------------------------------------------------
1840 Okl_Trx_Contracts_Pub.create_trx_contracts(
1841 p_api_version => l_api_version
1842 ,p_init_msg_list => l_init_msg_list
1843 ,x_return_status => l_return_status
1844 ,x_msg_count => l_msg_count
1845 ,x_msg_data => l_msg_data
1846 ,p_tcnv_rec => l_trxH_in_rec
1847 ,x_tcnv_rec => l_trxH_out_rec);
1848
1849 IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1850 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1851 ELSIF (l_return_Status = Okl_Api.G_RET_STS_ERROR) THEN
1852 RAISE Okl_Api.G_EXCEPTION_ERROR;
1853 END IF;
1854
1855 IF ((l_trxH_out_rec.id = OKL_API.G_MISS_NUM) OR
1856 (l_trxH_out_rec.id IS NULL) ) THEN
1857 OKL_API.set_message(G_APP_NAME,
1858 'OKL_REQUIRED_VALUE',
1859 OKL_API.G_COL_NAME_TOKEN,
1860 'TRANSACTION_ID');
1861 RAISE OKL_API.G_EXCEPTION_ERROR;
1862 END IF;
1863
1864 --------------------------------------------------------------------------
1865 -- accounting template record
1866 --------------------------------------------------------------------------
1867
1868 l_tmpl_identify_rec.TRANSACTION_TYPE_ID := l_try_id;
1869 l_tmpl_identify_rec.PRODUCT_ID := l_Product_rec.product_id;
1870 l_tmpl_identify_rec.memo_yn := G_NO;
1871 l_tmpl_identify_rec.prior_year_yn := G_NO;
1872
1873 -- get the product type
1874 OPEN l_product_type_csr ( l_Product_rec.product_id);
1875 FETCH l_product_type_csr INTO l_product_type;
1876 CLOSE l_product_type_csr;
1877
1878
1879 -- set the additional parameters with contract_id, line_id and transaction_date
1880 -- to be passed to formula engine
1881
1882 l_valid_gl_date := OKL_ACCOUNTING_UTIL.get_valid_gl_date( p_gl_date => l_transaction_date);
1883
1884 --For special accounting treatment : Review whether it is required or not
1885 OKL_SECURITIZATION_PVT.Check_Khr_ia_associated(
1886 p_api_version => p_api_version,
1887 p_init_msg_list => p_init_msg_list,
1888 x_return_status => x_return_status,
1889 x_msg_count => x_msg_count,
1890 x_msg_data => x_msg_data,
1891 p_khr_id => p_contract_id,
1892 p_scs_code => l_product_rec.scs_code,
1893 p_trx_date => l_transaction_date,
1894 x_fact_synd_code => l_fact_synd_code,
1895 x_inv_acct_code => l_inv_acct_code
1896 );
1897
1898 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1899 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1900 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1901 RAISE OKL_API.G_EXCEPTION_ERROR;
1902 END IF;
1903
1904 l_tmpl_identify_rec.factoring_synd_flag := l_fact_synd_code;
1905 l_tmpl_identify_rec.investor_code := l_inv_acct_code;
1906
1907 OKL_ACCOUNT_DIST_PUB.get_template_info(
1908 p_api_version => p_api_version,
1909 p_init_msg_list => OKL_API.G_FALSE,
1910 x_return_status => l_return_status,
1911 x_msg_count => x_msg_count,
1912 x_msg_data => x_msg_data,
1913 p_tmpl_identify_rec => l_tmpl_identify_rec,
1914 x_template_tbl => l_template_tbl,
1915 p_validity_date => l_valid_gl_date);
1916
1917 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1918 -- No accounting templates found matching the transaction type TRX_TYPE
1919 -- and product PRODUCT.
1920 OKL_API.set_message(
1921 p_app_name => G_APP_NAME,
1922 p_msg_name => 'OKL_AM_NO_ACC_TEMPLATES',
1923 p_token1 => 'TRX_TYPE',
1924 p_token1_value => l_trans_meaning,
1925 p_token2 => 'PRODUCT',
1926 p_token2_value => l_product_type);
1927
1928 END IF;
1929
1930 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1931 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1932 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1933 RAISE OKL_API.G_EXCEPTION_ERROR;
1934 END IF;
1935
1936 -- If no templates present
1937 IF l_template_tbl.COUNT = 0 THEN
1938 -- No accounting templates found matching the transaction type TRX_TYPE
1939 -- and product PRODUCT.
1940 OKL_API.set_message(
1941 p_app_name => G_APP_NAME,
1942 p_msg_name => 'OKL_AM_NO_ACC_TEMPLATES',
1943 p_token1 => 'TRX_TYPE',
1944 p_token1_value => l_trans_meaning,
1945 p_token2 => 'PRODUCT',
1946 p_token2_value => l_product_type);
1947
1948
1949 RAISE OKL_API.G_EXCEPTION_ERROR;
1950
1951 END IF;
1952
1953 --Build the transaction line table of records
1954 FOR i IN l_template_tbl.FIRST..l_template_tbl.LAST
1955 LOOP
1956 l_tclv_tbl(i).line_number := i;
1957 l_tclv_tbl(i).khr_id := p_contract_id;
1958 l_tclv_tbl(i).kle_id := p_kle_id;
1959 l_tclv_tbl(i).sty_id := l_template_tbl(i).sty_id;
1960 l_tclv_tbl(i).tcl_type := l_tcn_type; --'SPA';
1961 l_tclv_tbl(i).description := l_trx_desc;
1962 l_tclv_tbl(i).tcn_id := l_trxh_out_rec.id;
1963 l_tclv_tbl(i).currency_code := l_currency_code;
1964 l_tclv_tbl(i).org_id := l_Product_rec.authoring_org_id;
1965 END LOOP;
1966
1967 --Call to create transaction lines
1968
1969 Okl_Trx_Contracts_Pub.create_trx_cntrct_lines(
1970 p_api_version => l_api_version
1971 ,p_init_msg_list => l_init_msg_list
1972 ,x_return_status => x_return_status
1973 ,x_msg_count => l_msg_count
1974 ,x_msg_data => l_msg_data
1975 ,p_tclv_tbl => l_tclv_tbl
1976 ,x_tclv_tbl => x_tclv_tbl);
1977
1978 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1979 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1980 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1981 RAISE OKL_API.G_EXCEPTION_ERROR;
1982 END IF;
1983
1984 /* Populating the tmpl_identify_tbl from the template_tbl returned by get_template_info*/
1985
1986 FOR i in l_template_tbl.FIRST.. l_template_tbl.LAST
1987 LOOP
1988 l_tmpl_identify_tbl(i).product_id := l_Product_rec.product_id;
1989 l_tmpl_identify_tbl(i).transaction_type_id := l_try_id;
1990 l_tmpl_identify_tbl(i).stream_type_id := l_template_tbl(i).sty_id;
1991 l_tmpl_identify_tbl(i).advance_arrears := l_template_tbl(i).advance_arrears;
1992 l_tmpl_identify_tbl(i).prior_year_yn := l_template_tbl(i).prior_year_yn;
1993 l_tmpl_identify_tbl(i).memo_yn := l_template_tbl(i).memo_yn;
1994 l_tmpl_identify_tbl(i).factoring_synd_flag := l_template_tbl(i).factoring_synd_flag;
1995 l_tmpl_identify_tbl(i).investor_code := l_template_tbl(i).inv_code;
1996 l_tmpl_identify_tbl(i).SYNDICATION_CODE := l_template_tbl(i).syt_code;
1997 l_tmpl_identify_tbl(i).FACTORING_CODE := l_template_tbl(i).fac_code;
1998 END LOOP;
1999
2000 -- for account generator
2001 OKL_ACC_CALL_PVT.okl_populate_acc_gen (
2002 p_contract_id => p_contract_id,
2003 p_contract_line_id => p_kle_id,
2004 x_acc_gen_tbl => l_acc_gen_primary_key_tbl,
2005 x_return_status => l_return_status);
2006
2007 -- Raise exception to rollback to savepoint for this block
2008 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2009 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2010 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2011 RAISE OKL_API.G_EXCEPTION_ERROR;
2012 END IF;
2013
2014 /* Populating the dist_info_Tbl */
2015 FOR i in x_tclv_tbl.FIRST..x_tclv_tbl.LAST
2016 LOOP
2017 --Assigning the account generator table
2018 l_acc_gen_tbl(i).acc_gen_key_tbl := l_acc_gen_primary_key_tbl;
2019 l_acc_gen_tbl(i).source_id := x_tclv_tbl(i).id;
2020
2021 --Bug# 6189396
2022 l_ctxt_val_tbl := okl_execute_formula_pub.g_additional_parameters;
2023
2024 l_dist_info_tbl(i).SOURCE_ID := x_tclv_tbl(i).id;
2025 l_dist_info_tbl(i).SOURCE_TABLE := 'OKL_TXL_CNTRCT_LNS';
2026 l_dist_info_tbl(i).GL_REVERSAL_FLAG := 'N';
2027 l_dist_info_tbl(i).POST_TO_GL := l_post_to_gl_yn;
2028 l_dist_info_tbl(i).CONTRACT_ID := p_contract_id;
2029 l_dist_info_tbl(i).contract_line_id := p_kle_id;
2030
2031 l_dist_info_tbl(i).currency_conversion_rate := x_currency_conversion_rate;
2032 l_dist_info_tbl(i).currency_conversion_type := x_currency_conversion_type;
2033 l_dist_info_tbl(i).currency_conversion_date := x_currency_conversion_date;
2034 l_dist_info_tbl(i).currency_code := l_currency_code;
2035 l_dist_info_tbl(i).ACCOUNTING_DATE := l_trxh_out_rec.date_transaction_occurred;
2036 END LOOP;
2037
2038 /* Making the new single accounting engine call*/
2039 Okl_Account_Dist_Pvt.CREATE_ACCOUNTING_DIST(
2040 p_api_version => l_api_version,
2041 p_init_msg_list => p_init_msg_list,
2042 x_return_status => x_return_status,
2043 x_msg_count => x_msg_count,
2044 x_msg_data => x_msg_data,
2045 p_tmpl_identify_tbl => l_tmpl_identify_tbl,
2046 p_dist_info_tbl => l_dist_info_tbl,
2047 p_ctxt_val_tbl => l_ctxt_tbl,
2048 p_acc_gen_primary_key_tbl => l_acc_gen_tbl,
2049 x_template_tbl => l_template_out_tbl,
2050 x_amount_tbl => l_amount_out_tbl,
2051 p_trx_header_id => l_trxH_out_rec.id);
2052
2053 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2054 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2055 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2056 RAISE Okl_Api.G_EXCEPTION_ERROR;
2057 END IF;
2058
2059 OPEN fnd_lookups_csr('OKL_TRANSACTION_STATUS', 'Processed');
2060 FETCH fnd_lookups_csr INTO l_fnd_rec;
2061 IF fnd_lookups_csr%NOTFOUND THEN
2062 Okl_Api.SET_MESSAGE(G_APP_NAME, OKL_API.G_INVALID_VALUE,OKL_API.G_COL_NAME_TOKEN,l_try_name);
2063 CLOSE fnd_lookups_csr;
2064 RAISE Okl_Api.G_EXCEPTION_ERROR;
2065 END IF;
2066 CLOSE fnd_lookups_csr;
2067
2068 --From the l_amount_out_tbl returned , the transaction line amount and header amount need to be updated back on the contract
2069 l_tclv_tbl := x_tclv_tbl;
2070 l_tcnv_rec := l_trxH_out_rec;
2071
2072 If l_tclv_tbl.COUNT > 0 then
2073 FOR i in l_tclv_tbl.FIRST..l_tclv_tbl.LAST LOOP
2074 l_amount_tbl.delete;
2075 If l_amount_out_tbl.COUNT > 0 then
2076 For k in l_amount_out_tbl.FIRST..l_amount_out_tbl.LAST LOOP
2077 IF l_tclv_tbl(i).id = l_amount_out_tbl(k).source_id THEN
2078 l_amount_tbl := l_amount_out_tbl(k).amount_tbl;
2079 l_tclv_tbl(i).currency_code := l_currency_code;
2080 IF l_amount_tbl.COUNT > 0 THEN
2081 FOR j in l_amount_tbl.FIRST..l_amount_tbl.LAST LOOP
2082 l_tclv_tbl(i).amount := nvl(l_tclv_tbl(i).amount,0) + l_amount_tbl(j);
2083 END LOOP; -- for j in
2084 END IF;-- If l_amount_tbl.COUNT
2085 END IF; ---- IF l_tclv_tbl(i).id
2086 END LOOP; -- For k in
2087 END IF; -- If l_amount_out_tbl.COUNT
2088 l_tcnv_rec.amount := nvl(l_tcnv_rec.amount,0) + l_tclv_tbl(i).amount;
2089 l_tcnv_rec.currency_code := l_currency_code;
2090 l_tcnv_rec.tsu_code := l_fnd_rec.lookup_code;
2091 END LOOP; -- For i in
2092 End If; -- If l_tclv_tbl.COUNT
2093
2094 --Making the call to update the amounts on transaction header and line
2095 Okl_Trx_Contracts_Pub.update_trx_contracts
2096 (p_api_version => p_api_version
2097 ,p_init_msg_list => p_init_msg_list
2098 ,x_return_status => x_return_status
2099 ,x_msg_count => x_msg_count
2100 ,x_msg_data => x_msg_data
2101 ,p_tcnv_rec => l_tcnv_rec
2102 ,p_tclv_tbl => l_tclv_tbl
2103 ,x_tcnv_rec => x_tcnv_rec
2104 ,x_tclv_tbl => x_tclv_tbl );
2105
2106 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2107 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2108 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2109 RAISE Okl_Api.G_EXCEPTION_ERROR;
2110 END IF;
2111
2112 OKL_MULTIGAAP_ENGINE_PVT.CREATE_SEC_REP_TRX
2113 (p_api_version => p_api_version
2114 ,p_init_msg_list => p_init_msg_list
2115 ,x_return_status => x_return_status
2116 ,x_msg_count => x_msg_count
2117 ,x_msg_data => x_msg_data
2118 ,P_TCNV_REC => x_tcnv_rec
2119 ,P_TCLV_TBL => x_tclv_tbl
2120 ,p_ctxt_val_tbl => l_ctxt_tbl
2121 ,p_acc_gen_primary_key_tbl => l_acc_gen_primary_key_tbl);
2122
2123 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2124 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2125 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2126 RAISE Okl_Api.G_EXCEPTION_ERROR;
2127 END IF;
2128
2129
2130 -- Get message count and if count is 1, get message info
2131 FND_MSG_PUB.Count_And_Get
2132 (p_count => x_msg_count,
2133 p_data => x_msg_data);
2134
2135 EXCEPTION
2136 WHEN OKL_API.G_EXCEPTION_ERROR THEN
2137 ROLLBACK TO process_split_accounting_PVT;
2138 x_return_status := OKL_API.G_RET_STS_ERROR;
2139 FND_MSG_PUB.Count_And_Get
2140 (p_count => x_msg_count,
2141 p_data => x_msg_data);
2142
2143 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2144 ROLLBACK TO process_split_accounting_PVT;
2145 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
2146 FND_MSG_PUB.Count_And_Get
2147 (p_count => x_msg_count,
2148 p_data => x_msg_data);
2149
2150 WHEN OTHERS THEN
2151 ROLLBACK TO process_split_accounting_PVT;
2152 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR ;
2153 OKL_API.Set_Message(p_app_name => G_APP_NAME,
2154 p_msg_name => G_UNEXPECTED_ERROR,
2155 p_token1 => G_SQLCODE_TOKEN,
2156 p_token1_value => SQLCODE,
2157 p_token2 => G_SQLERRM_TOKEN,
2158 p_token2_value => SQLERRM);
2159 FND_MSG_PUB.Count_And_Get
2160 (p_count => x_msg_count,
2161 p_data => x_msg_data);
2162
2163 END process_split_accounting;
2164
2165 ------------------------------------------------------------------------------
2166 --Bug# 5946411
2167 --Start of comments
2168 --
2169 --Procedure Name : get_deprn_reserve
2170 --Purpose : Get Depreciation Reserve- used internally
2171 --Modification History :
2172 --02-May-2007 avsingh Created
2173 -- To get accumulated depreciation of an asset
2174 -- As per Bug# 6027547 raised on FA, the suggestion
2175 -- from FA is to back out depreciation reserve
2176 -- if cost is being adjusted in the period of
2177 -- of addition.
2178 ------------------------------------------------------------------------------
2179 PROCEDURE get_deprn_reserve
2180 (p_api_version IN NUMBER,
2181 p_init_msg_list IN VARCHAR2,
2182 x_return_status OUT NOCOPY VARCHAR2,
2183 x_msg_count OUT NOCOPY NUMBER,
2184 x_msg_data OUT NOCOPY VARCHAR2,
2185 p_asset_id IN NUMBER,
2186 p_book_type_code IN VARCHAR2,
2187 x_asset_deprn_rec OUT NOCOPY FA_API_TYPES.asset_deprn_rec_type) IS
2188
2189 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2190 l_api_name CONSTANT VARCHAR2(30) := 'GET_DEPRN_RESERVE';
2191 l_api_version CONSTANT NUMBER := 1.0;
2192
2193 l_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type;
2194 l_asset_fin_rec FA_API_TYPES.asset_fin_rec_type;
2195 l_asset_deprn_rec FA_API_TYPES.asset_deprn_rec_type;
2196
2197 l_deprn_reserve NUMBER;
2198
2199 BEGIN
2200 --call start activity to set savepoint
2201 l_return_status := OKL_API.START_ACTIVITY( substr(l_api_name,1,26),
2202 p_init_msg_list,
2203 '_PVT',
2204 x_return_status);
2205 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2206 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2207 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2208 RAISE OKL_API.G_EXCEPTION_ERROR;
2209 END IF;
2210
2211 l_asset_hdr_rec.asset_id := p_asset_id;
2212 l_asset_hdr_rec.book_type_code := p_book_type_code;
2213
2214 if NOT fa_cache_pkg.fazcbc(x_book => l_asset_hdr_rec.book_type_code) then
2215 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
2216 p_msg_name => 'OKL_LLA_FA_CACHE_ERROR'
2217 );
2218 Raise OKL_API.G_EXCEPTION_ERROR;
2219 end if;
2220
2221 -- To fetch Depreciation Reserve
2222 if not FA_UTIL_PVT.get_asset_deprn_rec
2223 (p_asset_hdr_rec => l_asset_hdr_rec ,
2224 px_asset_deprn_rec => l_asset_deprn_rec,
2225 p_period_counter => NULL,
2226 p_mrc_sob_type_code => 'P'
2227 ) then
2228 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
2229 p_msg_name => 'OKL_LLA_FA_DEPRN_REC_ERROR'
2230 );
2231 Raise OKL_API.G_EXCEPTION_ERROR;
2232 end if;
2233
2234 x_asset_deprn_rec := l_asset_deprn_rec;
2235
2236 --Call end Activity
2237 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2238 EXCEPTION
2239 WHEN OKL_API.G_EXCEPTION_ERROR Then
2240 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
2241 (
2242 l_api_name,
2243 G_PKG_NAME,
2244 'OKL_API.G_RET_STS_ERROR',
2245 x_msg_count,
2246 x_msg_data,
2247 '_PVT'
2248 );
2249 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2250 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
2251 (
2252 l_api_name,
2253 G_PKG_NAME,
2254 'OKL_API.G_RET_STS_UNEXP_ERROR',
2255 x_msg_count,
2256 x_msg_data,
2257 '_PVT'
2258 );
2259 WHEN OTHERS THEN
2260 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
2261 (
2262 l_api_name,
2263 G_PKG_NAME,
2264 'OTHERS',
2265 x_msg_count,
2266 x_msg_data,
2267 '_PVT'
2268 );
2269 END get_deprn_reserve;
2270 --Bug# 5946411 End
2271 -----------------------------------------------------------------
2272 --Bug# 5946411: ER
2273 --added procedure to create split asset return
2274 -----------------------------------------------------------------
2275 PROCEDURE create_split_asset_return( p_api_version IN NUMBER,
2276 p_init_msg_list IN VARCHAR2,
2277 x_return_status OUT NOCOPY VARCHAR2,
2278 x_msg_count OUT NOCOPY NUMBER,
2279 x_msg_data OUT NOCOPY VARCHAR2,
2280 p_kle_id IN NUMBER,
2281 p_cle_tbl IN cle_tbl_type,
2282 p_txlv_rec IN txlv_rec_type
2283 ) IS
2284 l_api_name CONSTANT VARCHAR2(30) := 'create_split_asset_return';
2285 l_api_version CONSTANT NUMBER := 1.0;
2286 lp_artv_rec OKL_AM_ASSET_RETURN_PUB.artv_rec_type;
2287 lp_upd_artv_rec OKL_AM_ASSET_RETURN_PUB.artv_rec_type;
2288 lx_artv_rec OKL_AM_ASSET_RETURN_PUB.artv_rec_type;
2289 -- Get asset return for asset with status Scheduled
2290 CURSOR l_asset_return_csr ( p_kle_id IN NUMBER) IS
2291 SELECT id,
2292 RMR_ID,
2293 ART1_CODE,
2294 RELOCATE_ASSET_YN,
2295 VOLUNTARY_YN,
2296 COMMMERCIALLY_REAS_SALE_YN,
2297 ORG_ID,
2298 FLOOR_PRICE,
2299 NEW_ITEM_PRICE,
2300 NEW_ITEM_NUMBER,
2301 ASSET_RELOCATED_YN,
2302 REPURCHASE_AGMT_YN,
2303 CURRENCY_CODE,
2304 CURRENCY_CONVERSION_CODE,
2305 CURRENCY_CONVERSION_TYPE,
2306 CURRENCY_CONVERSION_RATE,
2307 CURRENCY_CONVERSION_DATE,
2308 --Bug# 6336455
2309 LEGAL_ENTITY_ID
2310 FROM OKL_ASSET_RETURNS_b
2311 WHERE kle_id = p_kle_id
2312 AND ars_code = 'SCHEDULED';
2313 -- Get the non-cancelled asset return for asset
2314 CURSOR l_check_asset_return_csr ( p_kle_id IN NUMBER) IS
2315 select 'N' from dual
2316 where exists (
2317 SELECT 1
2318 FROM OKL_ASSET_RETURNS_V
2319 WHERE kle_id = p_kle_id
2320 AND ars_code <> 'CANCELLED'
2321 );
2322 cursor l_term_date_csr ( p_kle_id IN NUMBER)
2323 IS
2324 select date_terminated
2325 from okc_k_lines_b
2326 where id=p_kle_id;
2327 CURSOR l_trmnt_line_csr(p_cle_id IN OKC_K_LINES_B.ID%TYPE)
2328 IS
2329 SELECT cle.id id
2330 FROM okc_k_lines_b cle
2331 CONNECT BY PRIOR cle.id = cle.cle_id
2332 START WITH cle.id = p_cle_id;
2333 l_return_needed VARCHAR2(1) := 'Y';
2334 l_asset_return_rec l_asset_return_csr%ROWTYPE;
2335 l_source_cle_id NUMBER;
2336 i NUMBER := 1;
2337 l_parent_unit NUMBER;
2338 l_child_unit NUMBER;
2339 l_split_factor NUMBER;
2340 l_term_date DATE;
2341 l_clev_rec OKL_OKC_MIGRATION_PVT.clev_rec_type;
2342 l_klev_rec OKL_CONTRACT_PUB.klev_rec_type;
2343 lx_clev_rec OKL_OKC_MIGRATION_PVT.clev_rec_type;
2344 lx_klev_rec OKL_CONTRACT_PUB.klev_rec_type;
2345 l_chld_total_flr_price NUMBER:=0.0;
2346 begin
2347 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2348 -- Call start_activity to create savepoint, check compatibility
2349 -- and initialize message list
2350 x_return_status := OKL_API.START_ACTIVITY (
2351 l_api_name
2352 ,p_init_msg_list
2353 ,'_PVT'
2354 ,x_return_status);
2355 -- Check if activity started successfully
2356 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2357 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2358 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2359 RAISE OKL_API.G_EXCEPTION_ERROR;
2360 END IF;
2361 l_source_cle_id :=p_kle_id;
2362 --dbms_output.put_line(' l_source_cle_id'||l_source_cle_id);
2363 FOR l_asset_return_rec in l_asset_return_csr(l_source_cle_id)
2364 LOOP
2365 --dbms_output.put_line('CSAR--> found');
2366 IF p_cle_tbl.COUNT > 0 THEN
2367 --get the split factor
2368 if NVL(p_txlv_rec.SPLIT_INTO_SINGLES_FLAG,'X')='Y' THEN
2369 l_parent_unit :=1;
2370 l_child_unit:=1;
2371 else
2372 l_parent_unit:= p_txlv_rec.CURRENT_UNITS - NVL(p_txlv_rec.SPLIT_INTO_UNITS,0);
2373 l_child_unit:=p_txlv_rec.SPLIT_INTO_UNITS;
2374 end if;
2375 -- dbms_output.put_line('l_parent_unit-->'||l_parent_unit);
2376 -- dbms_output.put_line('l_child_unit-->'||l_child_unit);
2377 --get the termination date
2378 OPEN l_term_date_csr(l_source_cle_id);
2379 FETCH l_term_date_csr INTO l_term_date;
2380 CLOSE l_term_date_csr;
2381 FOR i IN p_cle_tbl.FIRST..p_cle_tbl.LAST
2382 LOOP
2383 --dbms_output.put_line('procssing --> '|| p_cle_tbl(i).cle_id);
2384 if l_source_cle_id <> p_cle_tbl(i).cle_id then
2385 l_split_factor:=l_child_unit/p_txlv_rec.current_units;
2386 -- dbms_output.put_line('CSAR-->child l_split_factor>'||l_split_factor);
2387 -- Check if return created
2388 l_return_needed:='Y';
2389 OPEN l_check_asset_return_csr (p_cle_tbl(i).cle_id);
2390 FETCH l_check_asset_return_csr INTO l_return_needed;
2391 CLOSE l_check_asset_return_csr;
2392 IF l_return_needed='Y' THEN
2393 --dbms_output.put_line('Creating asset return for >'||p_cle_tbl(i).cle_id);
2394 lp_artv_rec.KLE_ID := p_cle_tbl(i).cle_id;
2395 lp_artv_rec.RMR_ID := l_asset_return_rec.RMR_ID;
2396 lp_artv_rec.ARS_CODE := 'SCHEDULED';--l_asset_return_rec.ARS_CODE;
2397 -- lp_artv_rec.IMR_ID := l_asset_return_rec.IMR_ID;
2398 lp_artv_rec.ART1_CODE := l_asset_return_rec.ART1_CODE;
2399 lp_artv_rec.RELOCATE_ASSET_YN := l_asset_return_rec.RELOCATE_ASSET_YN;
2400 lp_artv_rec.VOLUNTARY_YN := l_asset_return_rec.VOLUNTARY_YN;
2401 lp_artv_rec.COMMMERCIALLY_REAS_SALE_YN := l_asset_return_rec.COMMMERCIALLY_REAS_SALE_YN;
2402 lp_artv_rec.ORG_ID := l_asset_return_rec.ORG_ID;
2403 lp_artv_rec.FLOOR_PRICE := l_split_factor * NVL(l_asset_return_rec.FLOOR_PRICE,0.0);
2404 l_chld_total_flr_price := l_chld_total_flr_price+NVL(lp_artv_rec.FLOOR_PRICE,0.0);
2405 -- lp_artv_rec.NEW_ITEM_PRICE := l_split_factor * NVL(l_asset_return_rec.NEW_ITEM_PRICE,0.0);
2406 -- lp_artv_rec.NEW_ITEM_NUMBER := l_asset_return_rec.NEW_ITEM_NUMBER;
2407 lp_artv_rec.ASSET_RELOCATED_YN := l_asset_return_rec.ASSET_RELOCATED_YN;
2408 lp_artv_rec.REPURCHASE_AGMT_YN := l_asset_return_rec.REPURCHASE_AGMT_YN;
2409 lp_artv_rec.CURRENCY_CODE := l_asset_return_rec.CURRENCY_CODE;
2410 lp_artv_rec.CURRENCY_CONVERSION_CODE := l_asset_return_rec.CURRENCY_CONVERSION_CODE;
2411 lp_artv_rec.CURRENCY_CONVERSION_TYPE := l_asset_return_rec.CURRENCY_CONVERSION_TYPE;
2412 lp_artv_rec.CURRENCY_CONVERSION_RATE := l_asset_return_rec.CURRENCY_CONVERSION_RATE;
2413 lp_artv_rec.CURRENCY_CONVERSION_DATE := l_asset_return_rec.CURRENCY_CONVERSION_DATE;
2414
2415 --Bug# 6336455
2416 lp_artv_rec.LEGAL_ENTITY_ID := l_asset_return_rec.LEGAL_ENTITY_ID;
2417
2418 -- call insert of tapi
2419 OKL_ASSET_RETURNS_PUB.insert_asset_returns(
2420 p_api_version => p_api_version,
2421 p_init_msg_list => OKL_API.G_FALSE,
2422 x_return_status => x_return_status,
2423 x_msg_count => x_msg_count,
2424 x_msg_data => x_msg_data,
2425 p_artv_rec => lp_artv_rec,
2426 x_artv_rec => lx_artv_rec);
2427 -- dbms_output.put_line('Calling OKL_ASSET_RETURNS_PUB.insert_asset_returns status >'||x_return_status);
2428 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2429 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2430 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2431 RAISE OKL_API.G_EXCEPTION_ERROR;
2432 END IF;
2433 --upade the termination date on the lines and subliines
2434 FOR r_trmnt_line_csr IN
2435 l_trmnt_line_csr(p_cle_id => p_cle_tbl(i).cle_id) LOOP
2436 l_clev_rec.id := r_trmnt_line_csr.id;
2437 l_klev_rec.id := r_trmnt_line_csr.id;
2438 l_clev_rec.date_terminated := l_term_date;
2439 OKL_CONTRACT_PUB.update_contract_line(
2440 p_api_version => l_api_version,
2441 p_init_msg_list => p_init_msg_list,
2442 x_return_status => x_return_status,
2443 x_msg_count => x_msg_count,
2444 x_msg_data => x_msg_data,
2445 p_clev_rec => l_clev_rec,
2446 p_klev_rec => l_klev_rec,
2447 x_clev_rec => lx_clev_rec,
2448 x_klev_rec => lx_klev_rec);
2449 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2450 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2451 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2452 RAISE OKL_API.G_EXCEPTION_ERROR;
2453 END IF;
2454 END LOOP; --inner loop
2455 END IF; --return needed
2456 END IF; --soucer id<> pkle_id
2457 END LOOP; -- p_cle_tbl loop end
2458 -- this is parent asset so adjust the floor price
2459 lp_upd_artv_rec.id:=l_asset_return_rec.id;
2460 lp_upd_artv_rec.FLOOR_PRICE := NVL(l_asset_return_rec.FLOOR_PRICE,0.0)-l_chld_total_flr_price;
2461 -- call update of tapi
2462 OKL_ASSET_RETURNS_PUB.update_asset_returns(
2463 p_api_version => p_api_version,
2464 p_init_msg_list => OKL_API.G_FALSE,
2465 x_return_status => x_return_status,
2466 x_msg_count => x_msg_count,
2467 x_msg_data => x_msg_data,
2468 p_artv_rec => lp_upd_artv_rec,
2469 x_artv_rec => lx_artv_rec);
2470 -- dbms_output.put_line('Calling OKL_ASSET_RETURNS_PUB.update_asset_returns status >'||x_return_status);
2471 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2472 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2473 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2474 RAISE OKL_API.G_EXCEPTION_ERROR;
2475 END IF;
2476 END IF; --p_cle_tbl >0
2477 END LOOP; --aset rturn record
2478 OKL_API.END_ACTIVITY (x_msg_count,x_msg_data );
2479 EXCEPTION
2480 WHEN OKL_API.G_EXCEPTION_ERROR THEN
2481 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2482 l_api_name,
2483 G_PKG_NAME,
2484 'OKL_API.G_RET_STS_ERROR',
2485 x_msg_count,
2486 x_msg_data,
2487 '_PVT');
2488 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2489 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
2490 l_api_name,
2491 G_PKG_NAME,
2492 'OKL_API.G_RET_STS_UNEXP_ERROR',
2493 x_msg_count,
2494 x_msg_data,
2495 '_PVT');
2496 WHEN OTHERS THEN
2497 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
2498 l_api_name,
2499 G_PKG_NAME,
2500 'OTHERS',
2501 x_msg_count,
2502 x_msg_data,
2503 '_PVT');
2504 end create_split_asset_return;
2505
2506 -----------------------------------------------
2507 -- Bug# 5946411: ER
2508 -- added procedure to check pending transaction
2509 -----------------------------------------------
2510 PROCEDURE Check_Offlease_Trans(p_api_version IN NUMBER,
2511 p_init_msg_list IN VARCHAR2,
2512 x_return_status OUT NOCOPY VARCHAR2,
2513 x_msg_count OUT NOCOPY NUMBER,
2514 x_msg_data OUT NOCOPY VARCHAR2,
2515 p_cle_id IN NUMBER
2516 ) is
2517 l_return_status VARCHAR2(1) DEFAULT OKL_API.G_RET_STS_SUCCESS;
2518 l_api_name CONSTANT VARCHAR2(30) := 'CHECK_OFFLEASE_TRANS';
2519 l_api_version CONSTANT NUMBER := 1.0;
2520
2521 --cursor to fetch the corporate and tax book for the given asset
2522 CURSOR l_okxassetlines_csr(p_kle_id IN NUMBER) IS
2523 SELECT o.asset_id, o.asset_number, o.corporate_book, a.cost, o.depreciation_category, a.original_cost, o.current_units,
2524 o.dnz_chr_id ,a.book_type_code, b.book_class, a.prorate_convention_code
2525 FROM okx_asset_lines_v o, fa_books a, fa_book_controls b
2526 WHERE o.parent_line_id = p_kle_id
2527 AND o.asset_id = a.asset_id
2528 AND a.book_type_code = b.book_type_code
2529 AND a.date_ineffective IS NULL
2530 AND a.transaction_header_id_out IS NULL
2531 ORDER BY book_class;
2532
2533 CURSOR l_offlseassettrx_csr(cp_trx_date IN DATE, cp_asset_number IN VARCHAR2) IS
2534 SELECT h.tsu_code, h.tas_type, h.date_trans_occurred, l.dnz_asset_id,
2535 l.asset_number, l.kle_id ,l.DNZ_KHR_ID
2536 FROM OKL_TRX_ASSETS h, OKL_TXL_ASSETS_B l
2537 WHERE h.id = l.tas_id
2538 AND h.date_trans_occurred <= cp_trx_date
2539 AND h.tas_type in ('AMT','AUD','AUS')
2540 AND l.asset_number = cp_asset_number;
2541
2542 l_okxassetlines_rec l_okxassetlines_csr%ROWTYPE;
2543 l_name OKL_TXL_ASSETS_B.asset_number%TYPE;
2544 l_trx_status VARCHAR2(30);
2545
2546
2547 BEGIN
2548 -- Call start_activity to create savepoint, check compatibility
2549 -- and initialize message list
2550 x_return_status := OKL_API.START_ACTIVITY (
2551 l_api_name
2552 ,p_init_msg_list
2553 ,'_PVT'
2554 ,x_return_status);
2555 -- Check if activity started successfully
2556 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2557 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2558 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2559 RAISE OKL_API.G_EXCEPTION_ERROR;
2560 END IF;
2561
2562 FOR l_okxassetlines_rec IN l_okxassetlines_csr(p_cle_id) LOOP
2563 l_name:=l_okxassetlines_rec.asset_number;
2564 l_trx_status := NULL;
2565 FOR l_offlseassettrx_rec IN l_offlseassettrx_csr(sysdate,l_name) LOOP
2566 l_trx_status := l_offlseassettrx_rec.tsu_code;
2567 IF l_trx_status IN ('ENTERED','ERROR') THEN
2568 EXIT;
2569 END IF;
2570 END LOOP;
2571 IF l_trx_status IN ('ENTERED','ERROR') THEN -- if any trx has this status
2572 --dbms_output.put_line('Pending transactions');
2573 x_return_status := OKL_API.G_RET_STS_ERROR;
2574 OKL_API.set_message( p_app_name => 'OKL',
2575 p_msg_name => 'OKL_AM_PENDING_OFFLEASE',
2576 p_token1 => 'ASSET_NUMBER',
2577 p_token1_value => l_name);
2578 RAISE OKL_API.G_EXCEPTION_ERROR;
2579 end if ;
2580 end loop;
2581 OKL_API.END_ACTIVITY (x_msg_count,x_msg_data );
2582 EXCEPTION
2583 WHEN OKL_API.G_EXCEPTION_ERROR THEN
2584 IF l_offlseassettrx_csr%ISOPEN THEN
2585 CLOSE l_offlseassettrx_csr;
2586 END IF;
2587 IF l_okxassetlines_csr%ISOPEN THEN
2588 CLOSE l_okxassetlines_csr;
2589 END IF;
2590 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2591 l_api_name,
2592 G_PKG_NAME,
2593 'OKL_API.G_RET_STS_ERROR',
2594 x_msg_count,
2595 x_msg_data,
2596 '_PVT');
2597 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2598 IF l_offlseassettrx_csr%ISOPEN THEN
2599 CLOSE l_offlseassettrx_csr;
2600 END IF;
2601 IF l_okxassetlines_csr%ISOPEN THEN
2602 CLOSE l_okxassetlines_csr;
2603 END IF;
2604 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
2605 l_api_name,
2606 G_PKG_NAME,
2607 'OKL_API.G_RET_STS_UNEXP_ERROR',
2608 x_msg_count,
2609 x_msg_data,
2610 '_PVT');
2611 WHEN OTHERS THEN
2612 IF l_offlseassettrx_csr%ISOPEN THEN
2613 CLOSE l_offlseassettrx_csr;
2614 END IF;
2615 IF l_okxassetlines_csr%ISOPEN THEN
2616 CLOSE l_okxassetlines_csr;
2617 END IF;
2618 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
2619 l_api_name,
2620 G_PKG_NAME,
2621 'OTHERS',
2622 x_msg_count,
2623 x_msg_data,
2624 '_PVT');
2625 END Check_Offlease_Trans;
2626
2627 --------------
2628 --Bug# 3156924
2629 --------------
2630 --date validation routine
2631 --should be called from UI(revision page only ):
2632
2633 PROCEDURE validate_trx_date(p_api_version IN NUMBER,
2634 p_init_msg_list IN VARCHAR2,
2635 x_return_status OUT NOCOPY VARCHAR2,
2636 x_msg_count OUT NOCOPY NUMBER,
2637 x_msg_data OUT NOCOPY VARCHAR2,
2638 p_chr_id IN NUMBER,
2639 p_trx_date IN VARCHAR2) IS
2640
2641 l_return_status VARCHAR2(1) DEFAULT OKL_API.G_RET_STS_SUCCESS;
2642 l_api_name CONSTANT VARCHAR2(30) := 'VALIDATE_TRX_DATE';
2643 l_api_version CONSTANT NUMBER := 1.0;
2644
2645
2646 l_date_valid VARCHAR2(1) DEFAULT 'N';
2647 l_trx_date DATE ;
2648
2649 --cursor to check the date validity wrt contract dates
2650 CURSOR l_chrb_csr(ptrxdate IN DATE, pchrid IN NUMBER, pdateformat IN VARCHAR2) IS
2651 SELECT 'Y' date_valid,
2652 TO_CHAR(chrb.start_date,pdateformat) con_start_date,
2653 TO_CHAR(chrb.end_date,pdateformat) con_end_date,
2654 chrb.sts_code sts_code
2655 FROM okc_k_headers_b chrb
2656 WHERE ptrxdate BETWEEN TRUNC(chrb.start_date) AND TRUNC(chrb.end_date)
2657 AND chrb.id = pchrid;
2658
2659 l_chrb_rec l_chrb_csr%ROWTYPE;
2660 l_icx_date_format VARCHAR2(240);
2661
2662
2663 BEGIN
2664 x_return_status := l_return_status;
2665
2666 -- Call start_activity to create savepoint, check compatibility
2667 -- and initialize message list
2668 x_return_status := OKL_API.START_ACTIVITY (
2669 l_api_name
2670 ,p_init_msg_list
2671 ,'_PVT'
2672 ,x_return_status);
2673 -- Check if activity started successfully
2674 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2675 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2676 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2677 RAISE OKL_API.G_EXCEPTION_ERROR;
2678 END IF;
2679
2680 --0. verify date format
2681 BEGIN
2682 l_icx_date_format := fnd_profile.value('ICX_DATE_FORMAT_MASK');
2683 l_trx_date := TO_DATE(p_trx_date, l_icx_date_format);
2684 EXCEPTION
2685 WHEN OTHERS THEN
2686 okl_api.set_message(
2687 G_APP_NAME,
2688 G_LLA_INVALID_DATE_FORMAT,
2689 'DATE_FORMAT',
2690 l_icx_date_format,
2691 'COL_NAME',
2692 'Revision Date'
2693 );
2694 x_return_status := OKL_API.G_RET_STS_ERROR;
2695 END;
2696
2697 IF x_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
2698 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2699 END IF;
2700
2701
2702 --1. Transaction date is required
2703 IF NVL(p_trx_date,okl_api.g_miss_char) = okl_api.g_miss_char THEN
2704 okl_api.set_message(
2705 G_APP_NAME,
2706 G_LLA_MISSING_TRX_DATE
2707 );
2708 x_return_status := OKL_API.G_RET_STS_ERROR;
2709 RAISE OKL_API.G_EXCEPTION_ERROR;
2710 END IF;
2711
2712 --2. Transaction date is between contract start and end date
2713 l_date_valid := 'N';
2714 OPEN l_chrb_csr(ptrxdate => l_trx_date, pchrid => p_chr_id, pdateformat => l_icx_date_format);
2715 FETCH l_chrb_csr INTO l_chrb_rec;
2716 IF l_chrb_csr%NOTFOUND THEN
2717 NULL;
2718 ELSE
2719 l_date_valid := l_chrb_rec.date_valid;
2720 END IF;
2721 CLOSE l_chrb_csr;
2722
2723
2724 IF (l_date_valid = 'N') THEN
2725 okl_api.set_message(
2726 G_APP_NAME,
2727 G_LLA_WRONG_TRX_DATE,
2728 'START_DATE',
2729 l_chrb_rec.con_start_date,
2730 'END_DATE',
2731 l_chrb_rec.con_end_date
2732 );
2733 x_return_status := OKL_API.G_RET_STS_ERROR;
2734 RAISE OKL_API.G_EXCEPTION_ERROR;
2735 END IF;
2736
2737 --3. contracts which are not active can not be split asset
2738 IF (NVL(l_chrb_rec.sts_code,OKL_API.G_MISS_CHAR) <> 'BOOKED') THEN
2739 okl_api.set_message(
2740 G_APP_NAME,
2741 G_LLA_REV_ONLY_BOOKED
2742 );
2743 x_return_status := OKL_API.G_RET_STS_ERROR;
2744 RAISE OKL_API.G_EXCEPTION_ERROR;
2745 END IF;
2746 OKL_API.END_ACTIVITY (x_msg_count,
2747 x_msg_data );
2748 EXCEPTION
2749 WHEN OKL_API.G_EXCEPTION_ERROR THEN
2750 IF l_chrb_csr%ISOPEN THEN
2751 CLOSE l_chrb_csr;
2752 END IF;
2753 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2754 l_api_name,
2755 G_PKG_NAME,
2756 'OKL_API.G_RET_STS_ERROR',
2757 x_msg_count,
2758 x_msg_data,
2759 '_PVT');
2760 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2761 IF l_chrb_csr%ISOPEN THEN
2762 CLOSE l_chrb_csr;
2763 END IF;
2764 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
2765 l_api_name,
2766 G_PKG_NAME,
2767 'OKL_API.G_RET_STS_UNEXP_ERROR',
2768 x_msg_count,
2769 x_msg_data,
2770 '_PVT');
2771 WHEN OTHERS THEN
2772 IF l_chrb_csr%ISOPEN THEN
2773 CLOSE l_chrb_csr;
2774 END IF;
2775 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
2776 l_api_name,
2777 G_PKG_NAME,
2778 'OTHERS',
2779 x_msg_count,
2780 x_msg_data,
2781 '_PVT');
2782
2783 END validate_trx_date;
2784
2785 -----------------------------------------------------------------
2786 --01-Mar-2004: Bug# 3156924
2787 --overloaded will be called locally from create_split_transaction
2788 -----------------------------------------------------------------
2789 PROCEDURE validate_trx_date(p_api_version IN NUMBER,
2790 p_init_msg_list IN VARCHAR2,
2791 x_return_status OUT NOCOPY VARCHAR2,
2792 x_msg_count OUT NOCOPY NUMBER,
2793 x_msg_data OUT NOCOPY VARCHAR2,
2794 p_cle_id IN NUMBER,
2795 p_trx_date IN DATE) IS
2796
2797 l_return_status VARCHAR2(1) DEFAULT OKL_API.G_RET_STS_SUCCESS;
2798 l_api_name CONSTANT VARCHAR2(30) := 'VALIDATE_TRX_DATE';
2799 l_api_version CONSTANT NUMBER := 1.0;
2800
2801
2802 l_date_valid VARCHAR2(1) DEFAULT 'N';
2803
2804 --cursor to check the date validity wrt contract dates
2805 --Bug# 5946411: ER
2806 /*
2807 CURSOR l_cleb_csr(ptrxdate IN DATE, pcleid IN NUMBER, pdateformat IN VARCHAR2) IS
2808 SELECT 'Y' date_valid,
2809 TO_CHAR(cleb.start_date,pdateformat) line_start_date,
2810 TO_CHAR(cleb.end_date,pdateformat) line_end_date,
2811 cleb.sts_code sts_code
2812 FROM okc_k_lines_b cleb
2813 WHERE ptrxdate BETWEEN TRUNC(cleb.start_date) AND TRUNC(cleb.end_date)
2814 AND cleb.id = pcleid;
2815 */
2816 CURSOR l_cleb_csr(pcleid IN NUMBER, pdateformat IN VARCHAR2) IS
2817 SELECT TO_CHAR(cleb.start_date,pdateformat) line_start_date,
2818 TO_CHAR(cleb.end_date,pdateformat) line_end_date,
2819 cleb.sts_code sts_code,
2820 trunc(cleb.start_date) cle_start_date,
2821 TRUNC(cleb.end_date) cle_end_date
2822 FROM okc_k_lines_b cleb
2823 WHERE cleb.id = pcleid;
2824 --Bug# 5946411: ER end
2825
2826 /* --Added by HARIVEN - cursor to fetch the Start and End Date
2827 CURSOR l_strdate_csr(pcleid IN NUMBER, pdateformat IN VARCHAR2) IS
2828 SELECT 'Y' date_valid,
2829 TO_CHAR(cleb.start_date,pdateformat) line_start_date,
2830 TO_CHAR(cleb.end_date,pdateformat) line_end_date,
2831 cleb.sts_code sts_code
2832 FROM okc_k_lines_b cleb
2833 WHERE cleb.id = pcleid;*/
2834
2835 l_cleb_rec l_cleb_csr%ROWTYPE;
2836 l_icx_date_format VARCHAR2(240);
2837
2838
2839 BEGIN
2840 x_return_status := l_return_status;
2841
2842 -- Call start_activity to create savepoint, check compatibility
2843 -- and initialize message list
2844 x_return_status := OKL_API.START_ACTIVITY (
2845 l_api_name
2846 ,p_init_msg_list
2847 ,'_PVT'
2848 ,x_return_status);
2849 -- Check if activity started successfully
2850 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2851 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2852 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2853 RAISE OKL_API.G_EXCEPTION_ERROR;
2854 END IF;
2855
2856 --1. Transaction date is required
2857 IF NVL(p_trx_date,okl_api.g_miss_date) = okl_api.g_miss_date THEN
2858 okl_api.set_message(
2859 G_APP_NAME,
2860 G_LLA_MISSING_TRX_DATE
2861 );
2862 x_return_status := OKL_API.G_RET_STS_ERROR;
2863 RAISE OKL_API.G_EXCEPTION_ERROR;
2864 END IF;
2865
2866 l_icx_date_format := NVL(fnd_profile.value('ICX_DATE_FORMAT_MASK'),'DD-MON-YYYY');
2867 --2. Transaction date is between contract start and end date
2868 --Bug# 5946411: ER
2869 /*
2870 l_date_valid := 'N';
2871 OPEN l_cleb_csr(ptrxdate => p_trx_date, pcleid => p_cle_id, pdateformat => l_icx_date_format);
2872 FETCH l_cleb_csr INTO l_cleb_rec;
2873 IF l_cleb_csr%NOTFOUND THEN
2874 NULL;
2875 ELSE
2876 l_date_valid := l_cleb_rec.date_valid;
2877 END IF;
2878 CLOSE l_cleb_csr;
2879 */
2880 l_date_valid := 'Y';
2881 OPEN l_cleb_csr( pcleid => p_cle_id, pdateformat => l_icx_date_format);
2882 FETCH l_cleb_csr INTO l_cleb_rec;
2883 IF l_cleb_csr%NOTFOUND THEN
2884 NULL;
2885 ELSE
2886 if (l_cleb_rec.sts_code = 'BOOKED')
2887 AND NOT (p_trx_date BETWEEN l_cleb_rec.cle_start_date AND l_cleb_rec.cle_end_date) THEN
2888 l_date_valid := 'N';
2889 end if;
2890 END IF;
2891 CLOSE l_cleb_csr;
2892
2893 --Bug# 5946411: ER End
2894
2895
2896 IF (l_date_valid = 'N') THEN
2897 /*OPEN l_strdate_csr(pcleid => p_cle_id, pdateformat => l_icx_date_format);
2898 FETCH l_strdate_csr INTO l_cleb_rec;
2899 IF l_strdate_csr%NOTFOUND THEN
2900 NULL;
2901 ELSE
2902 l_date_valid := l_cleb_rec.date_valid;
2903 END IF;
2904 CLOSE l_strdate_csr;*/
2905 okl_api.set_message(
2906 G_APP_NAME,
2907 G_LLA_WRONG_TRX_DATE,
2908 'START_DATE',
2909 l_cleb_rec.line_start_date,
2910 'END_DATE',
2911 l_cleb_rec.line_end_date
2912 );
2913 x_return_status := OKL_API.G_RET_STS_ERROR;
2914 RAISE OKL_API.G_EXCEPTION_ERROR;
2915 END IF;
2916 EXCEPTION
2917 WHEN OKL_API.G_EXCEPTION_ERROR THEN
2918 IF l_cleb_csr%ISOPEN THEN
2919 CLOSE l_cleb_csr;
2920 END IF;
2921 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2922 l_api_name,
2923 G_PKG_NAME,
2924 'OKL_API.G_RET_STS_ERROR',
2925 x_msg_count,
2926 x_msg_data,
2927 '_PVT');
2928 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2929 IF l_cleb_csr%ISOPEN THEN
2930 CLOSE l_cleb_csr;
2931 END IF;
2932 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
2933 l_api_name,
2934 G_PKG_NAME,
2935 'OKL_API.G_RET_STS_UNEXP_ERROR',
2936 x_msg_count,
2937 x_msg_data,
2938 '_PVT');
2939 WHEN OTHERS THEN
2940 IF l_cleb_csr%ISOPEN THEN
2941 CLOSE l_cleb_csr;
2942 END IF;
2943 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
2944 l_api_name,
2945 G_PKG_NAME,
2946 'OTHERS',
2947 x_msg_count,
2948 x_msg_data,
2949 '_PVT');
2950
2951 END validate_trx_date;
2952 ---------------
2953 --Bug# 3156924
2954 --------------
2955 -------------------------------------------------------------------------------
2956 --Function to get Asset Line Record
2957 ------------------------------------------------------------------------------
2958 FUNCTION get_ast_line(p_cle_id IN NUMBER,
2959 x_no_data_found OUT NOCOPY BOOLEAN)
2960 RETURN ast_line_rec_type IS
2961 CURSOR ast_line_curs(p_cle_id IN NUMBER) IS
2962 SELECT
2963 ID1,
2964 ID2,
2965 NAME,
2966 DESCRIPTION,
2967 ITEM_DESCRIPTION,
2968 COMMENTS,
2969 CHR_ID,
2970 DNZ_CHR_ID,
2971 LTY_CODE,
2972 LSE_TYPE,
2973 LSE_PARENT_ID,
2974 PARENT_LINE_ID,
2975 LINE_NUMBER,
2976 DATE_TERMINATED,
2977 START_DATE_ACTIVE,
2978 END_DATE_ACTIVE,
2979 STATUS,
2980 ASSET_ID,
2981 QUANTITY,
2982 UNIT_OF_MEASURE_CODE,
2983 ASSET_NUMBER,
2984 CORPORATE_BOOK,
2985 LIFE_IN_MONTHS,
2986 ORIGINAL_COST,
2987 COST,
2988 ADJUSTED_COST,
2989 TAG_NUMBER,
2990 CURRENT_UNITS,
2991 SERIAL_NUMBER,
2992 REVAL_CEILING,
2993 NEW_USED,
2994 IN_SERVICE_DATE,
2995 MANUFACTURER_NAME,
2996 MODEL_NUMBER,
2997 ASSET_TYPE,
2998 SALVAGE_VALUE,
2999 PERCENT_SALVAGE_VALUE,
3000 DEPRECIATION_CATEGORY,
3001 DEPRN_START_DATE,
3002 DEPRN_METHOD_CODE,
3003 RATE_ADJUSTMENT_FACTOR,
3004 BASIC_RATE,
3005 ADJUSTED_RATE,
3006 RECOVERABLE_COST,
3007 ORG_ID,
3008 SET_OF_BOOKS_ID,
3009 PROPERTY_TYPE_CODE,
3010 PROPERTY_1245_1250_CODE,
3011 IN_USE_FLAG,
3012 OWNED_LEASED,
3013 INVENTORIAL,
3014 LINE_STATUS
3015 FROM OKX_ASSET_LINES_V
3016 WHERE parent_line_id = p_cle_id;
3017 l_ast_line_rec ast_line_rec_type;
3018 BEGIN
3019 x_no_data_found := TRUE;
3020 OPEN ast_line_curs(p_cle_id);
3021 FETCH ast_line_curs INTO
3022 l_ast_line_rec.ID1,
3023 l_ast_line_rec.ID2,
3024 l_ast_line_rec.NAME,
3025 l_ast_line_rec.DESCRIPTION,
3026 l_ast_line_rec.ITEM_DESCRIPTION,
3027 l_ast_line_rec.COMMENTS,
3028 l_ast_line_rec.CHR_ID,
3029 l_ast_line_rec.DNZ_CHR_ID,
3030 l_ast_line_rec.LTY_CODE,
3031 l_ast_line_rec.LSE_TYPE,
3032 l_ast_line_rec.LSE_PARENT_ID,
3033 l_ast_line_rec.PARENT_LINE_ID,
3034 l_ast_line_rec.LINE_NUMBER,
3035 l_ast_line_rec.DATE_TERMINATED,
3036 l_ast_line_rec.START_DATE_ACTIVE,
3037 l_ast_line_rec.END_DATE_ACTIVE,
3038 l_ast_line_rec.STATUS,
3039 l_ast_line_rec.ASSET_ID,
3040 l_ast_line_rec.QUANTITY,
3041 l_ast_line_rec.UNIT_OF_MEASURE_CODE,
3042 l_ast_line_rec.ASSET_NUMBER,
3043 l_ast_line_rec.CORPORATE_BOOK,
3044 l_ast_line_rec.LIFE_IN_MONTHS,
3045 l_ast_line_rec.ORIGINAL_COST,
3046 l_ast_line_rec.COST,
3047 l_ast_line_rec.ADJUSTED_COST,
3048 l_ast_line_rec.TAG_NUMBER,
3049 l_ast_line_rec.CURRENT_UNITS,
3050 l_ast_line_rec.SERIAL_NUMBER,
3051 l_ast_line_rec.REVAL_CEILING,
3052 l_ast_line_rec.NEW_USED,
3053 l_ast_line_rec.IN_SERVICE_DATE,
3054 l_ast_line_rec.MANUFACTURER_NAME,
3055 l_ast_line_rec.MODEL_NUMBER,
3056 l_ast_line_rec.ASSET_TYPE,
3057 l_ast_line_rec.SALVAGE_VALUE,
3058 l_ast_line_rec.PERCENT_SALVAGE_VALUE,
3059 l_ast_line_rec.DEPRECIATION_CATEGORY,
3060 l_ast_line_rec.DEPRN_START_DATE,
3061 l_ast_line_rec.DEPRN_METHOD_CODE,
3062 l_ast_line_rec.RATE_ADJUSTMENT_FACTOR,
3063 l_ast_line_rec.BASIC_RATE,
3064 l_ast_line_rec.ADJUSTED_RATE,
3065 l_ast_line_rec.RECOVERABLE_COST,
3066 l_ast_line_rec.ORG_ID,
3067 l_ast_line_rec.SET_OF_BOOKS_ID,
3068 l_ast_line_rec.PROPERTY_TYPE_CODE,
3069 l_ast_line_rec.PROPERTY_1245_1250_CODE,
3070 l_ast_line_rec.IN_USE_FLAG,
3071 l_ast_line_rec.OWNED_LEASED,
3072 l_ast_line_rec.INVENTORIAL,
3073 l_ast_line_rec.LINE_STATUS;
3074
3075 x_no_data_found := ast_line_curs%NOTFOUND;
3076 CLOSE ast_line_curs;
3077 RETURN (l_ast_line_rec);
3078 END get_ast_line;
3079 FUNCTION get_ast_line (p_cle_id IN NUMBER) RETURN ast_line_rec_type IS
3080 l_row_not_found BOOLEAN := TRUE;
3081 BEGIN
3082 RETURN (get_ast_line(p_cle_id,l_row_not_found));
3083 END get_ast_line;
3084 --------------------------------------------------------------------------------
3085 --Function to get txl details for a given tal_id
3086 --------------------------------------------------------------------------------
3087 FUNCTION get_txlv_rec (
3088 p_kle_id IN NUMBER,
3089 x_no_data_found OUT NOCOPY BOOLEAN
3090 ) RETURN txlv_rec_type IS
3091 CURSOR txlv_csr (p_kle_id IN NUMBER) IS
3092 SELECT ID,
3093 OBJECT_VERSION_NUMBER,
3094 SFWT_FLAG,
3095 TAS_ID,
3096 ILO_ID,
3097 ILO_ID_OLD,
3098 IAY_ID,
3099 IAY_ID_NEW,
3100 KLE_ID,
3101 DNZ_KHR_ID,
3102 LINE_NUMBER,
3103 ORG_ID,
3104 TAL_TYPE,
3105 ASSET_NUMBER,
3106 DESCRIPTION,
3107 FA_LOCATION_ID,
3108 ORIGINAL_COST,
3109 CURRENT_UNITS,
3110 MANUFACTURER_NAME,
3111 YEAR_MANUFACTURED,
3112 SUPPLIER_ID,
3113 USED_ASSET_YN,
3114 TAG_NUMBER,
3115 MODEL_NUMBER,
3116 CORPORATE_BOOK,
3117 DATE_PURCHASED,
3118 DATE_DELIVERY,
3119 IN_SERVICE_DATE,
3120 LIFE_IN_MONTHS,
3121 DEPRECIATION_ID,
3122 DEPRECIATION_COST,
3123 DEPRN_METHOD,
3124 DEPRN_RATE,
3125 SALVAGE_VALUE,
3126 PERCENT_SALVAGE_VALUE,
3127 --Bug# 2981308
3128 ASSET_KEY_ID,
3129 ATTRIBUTE_CATEGORY,
3130 ATTRIBUTE1,
3131 ATTRIBUTE2,
3132 ATTRIBUTE3,
3133 ATTRIBUTE4,
3134 ATTRIBUTE5,
3135 ATTRIBUTE6,
3136 ATTRIBUTE7,
3137 ATTRIBUTE8,
3138 ATTRIBUTE9,
3139 ATTRIBUTE10,
3140 ATTRIBUTE11,
3141 ATTRIBUTE12,
3142 ATTRIBUTE13,
3143 ATTRIBUTE14,
3144 ATTRIBUTE15,
3145 CREATED_BY,
3146 CREATION_DATE,
3147 LAST_UPDATED_BY,
3148 LAST_UPDATE_DATE,
3149 LAST_UPDATE_LOGIN,
3150 DEPRECIATE_YN,
3151 HOLD_PERIOD_DAYS,
3152 OLD_SALVAGE_VALUE,
3153 NEW_RESIDUAL_VALUE,
3154 OLD_RESIDUAL_VALUE,
3155 UNITS_RETIRED,
3156 COST_RETIRED,
3157 SALE_PROCEEDS,
3158 REMOVAL_COST,
3159 DNZ_ASSET_ID,
3160 DATE_DUE,
3161 REP_ASSET_ID,
3162 LKE_ASSET_ID,
3163 MATCH_AMOUNT,
3164 SPLIT_INTO_SINGLES_FLAG,
3165 SPLIT_INTO_UNITS,
3166 --Bug #2723498 : 11.5.9 - Multi currency compliance
3167 CURRENCY_CODE,
3168 CURRENCY_CONVERSION_TYPE,
3169 CURRENCY_CONVERSION_RATE,
3170 CURRENCY_CONVERSION_DATE
3171 -- Multi-Currency Change
3172 FROM Okl_Txl_Assets_V
3173 WHERE okl_txl_assets_v.kle_id = p_kle_id
3174 AND EXISTS (SELECT NULL
3175 FROM okl_trx_Assets trx,
3176 okl_trx_types_tl ttyp
3177 WHERE trx.id = okl_txl_assets_v.tas_id
3178 AND trx.tsu_code = 'ENTERED'
3179 AND trx.try_id = ttyp.id
3180 AND ttyp.name = 'Split Asset'
3181 AND ttyp.LANGUAGE = 'US');
3182
3183 l_txlv_rec txlv_rec_type;
3184 BEGIN
3185 x_no_data_found := TRUE;
3186 -- Get current database values
3187 OPEN txlv_csr (p_kle_id => p_kle_id);
3188 FETCH txlv_csr INTO
3189 l_txlv_rec.ID,
3190 l_txlv_rec.OBJECT_VERSION_NUMBER,
3191 l_txlv_rec.SFWT_FLAG,
3192 l_txlv_rec.TAS_ID,
3193 l_txlv_rec.ILO_ID,
3194 l_txlv_rec.ILO_ID_OLD,
3195 l_txlv_rec.IAY_ID,
3196 l_txlv_rec.IAY_ID_NEW,
3197 l_txlv_rec.KLE_ID,
3198 l_txlv_rec.DNZ_KHR_ID,
3199 l_txlv_rec.LINE_NUMBER,
3200 l_txlv_rec.ORG_ID,
3201 l_txlv_rec.TAL_TYPE,
3202 l_txlv_rec.ASSET_NUMBER,
3203 l_txlv_rec.DESCRIPTION,
3204 l_txlv_rec.FA_LOCATION_ID,
3205 l_txlv_rec.ORIGINAL_COST,
3206 l_txlv_rec.CURRENT_UNITS,
3207 l_txlv_rec.MANUFACTURER_NAME,
3208 l_txlv_rec.YEAR_MANUFACTURED,
3209 l_txlv_rec.SUPPLIER_ID,
3210 l_txlv_rec.USED_ASSET_YN,
3211 l_txlv_rec.TAG_NUMBER,
3212 l_txlv_rec.MODEL_NUMBER,
3213 l_txlv_rec.CORPORATE_BOOK,
3214 l_txlv_rec.DATE_PURCHASED,
3215 l_txlv_rec.DATE_DELIVERY,
3216 l_txlv_rec.IN_SERVICE_DATE,
3217 l_txlv_rec.LIFE_IN_MONTHS,
3218 l_txlv_rec.DEPRECIATION_ID,
3219 l_txlv_rec.DEPRECIATION_COST,
3220 l_txlv_rec.DEPRN_METHOD,
3221 l_txlv_rec.DEPRN_RATE,
3222 l_txlv_rec.SALVAGE_VALUE,
3223 l_txlv_rec.PERCENT_SALVAGE_VALUE,
3224 --Bug# 2981308 :
3225 l_txlv_rec.ASSET_KEY_ID,
3226 l_txlv_rec.ATTRIBUTE_CATEGORY,
3227 l_txlv_rec.ATTRIBUTE1,
3228 l_txlv_rec.ATTRIBUTE2,
3229 l_txlv_rec.ATTRIBUTE3,
3230 l_txlv_rec.ATTRIBUTE4,
3231 l_txlv_rec.ATTRIBUTE5,
3232 l_txlv_rec.ATTRIBUTE6,
3233 l_txlv_rec.ATTRIBUTE7,
3234 l_txlv_rec.ATTRIBUTE8,
3235 l_txlv_rec.ATTRIBUTE9,
3236 l_txlv_rec.ATTRIBUTE10,
3237 l_txlv_rec.ATTRIBUTE11,
3238 l_txlv_rec.ATTRIBUTE12,
3239 l_txlv_rec.ATTRIBUTE13,
3240 l_txlv_rec.ATTRIBUTE14,
3241 l_txlv_rec.ATTRIBUTE15,
3242 l_txlv_rec.CREATED_BY,
3243 l_txlv_rec.CREATION_DATE,
3244 l_txlv_rec.LAST_UPDATED_BY,
3245 l_txlv_rec.LAST_UPDATE_DATE,
3246 l_txlv_rec.LAST_UPDATE_LOGIN,
3247 l_txlv_rec.DEPRECIATE_YN,
3248 l_txlv_rec.HOLD_PERIOD_DAYS,
3249 l_txlv_rec.OLD_SALVAGE_VALUE,
3250 l_txlv_rec.NEW_RESIDUAL_VALUE,
3251 l_txlv_rec.OLD_RESIDUAL_VALUE,
3252 l_txlv_rec.UNITS_RETIRED,
3253 l_txlv_rec.COST_RETIRED,
3254 l_txlv_rec.SALE_PROCEEDS,
3255 l_txlv_rec.REMOVAL_COST,
3256 l_txlv_rec.DNZ_ASSET_ID,
3257 l_txlv_rec.DATE_DUE,
3258 l_txlv_rec.REP_ASSET_ID,
3259 l_txlv_rec.LKE_ASSET_ID,
3260 l_txlv_rec.MATCH_AMOUNT,
3261 l_txlv_rec.SPLIT_INTO_SINGLES_FLAG,
3262 l_txlv_rec.SPLIT_INTO_UNITS,
3263 -- Multi-Currency Change
3264 l_txlv_rec.CURRENCY_CODE,
3265 l_txlv_rec.CURRENCY_CONVERSION_TYPE,
3266 l_txlv_rec.CURRENCY_CONVERSION_RATE,
3267 l_txlv_rec.CURRENCY_CONVERSION_DATE
3268 ;
3269 -- Multi-Currency Change
3270 x_no_data_found := txlv_csr%NOTFOUND;
3271 CLOSE txlv_csr;
3272 RETURN(l_txlv_rec);
3273 END get_txlv_rec;
3274 --------------------------------------------------------------------------------
3275 --Function to get trx details for a given tal_id
3276 --------------------------------------------------------------------------------
3277 FUNCTION get_trx_details (
3278 p_tal_id IN NUMBER,
3279 x_no_data_found OUT NOCOPY BOOLEAN
3280 ) RETURN txdv_tbl_type IS
3281 CURSOR txdv_csr(p_tal_id IN NUMBER) IS
3282 SELECT
3283 ID,
3284 OBJECT_VERSION_NUMBER,
3285 TAL_ID,
3286 TARGET_KLE_ID,
3287 LINE_DETAIL_NUMBER,
3288 ASSET_NUMBER,
3289 DESCRIPTION,
3290 QUANTITY,
3291 COST,
3292 TAX_BOOK,
3293 LIFE_IN_MONTHS_TAX,
3294 DEPRN_METHOD_TAX,
3295 DEPRN_RATE_TAX,
3296 SALVAGE_VALUE,
3297 SPLIT_PERCENT,
3298 INVENTORY_ITEM_ID,
3299 ATTRIBUTE_CATEGORY,
3300 ATTRIBUTE1,
3301 ATTRIBUTE2,
3302 ATTRIBUTE3,
3303 ATTRIBUTE4,
3304 ATTRIBUTE5,
3305 ATTRIBUTE6,
3306 ATTRIBUTE7,
3307 ATTRIBUTE8,
3308 ATTRIBUTE9,
3309 ATTRIBUTE10,
3310 ATTRIBUTE11,
3311 ATTRIBUTE12,
3312 ATTRIBUTE13,
3313 ATTRIBUTE14,
3314 ATTRIBUTE15,
3315 CREATED_BY,
3316 CREATION_DATE,
3317 LAST_UPDATED_BY,
3318 LAST_UPDATE_DATE,
3319 LAST_UPDATE_LOGIN,
3320 --Bug #2723498 : 11.5.9 - Multi currency compliance
3321 CURRENCY_CODE,
3322 CURRENCY_CONVERSION_TYPE,
3323 CURRENCY_CONVERSION_RATE,
3324 CURRENCY_CONVERSION_DATE
3325 FROM Okl_Txd_Assets_v txdv
3326 WHERE txdv.tal_id = p_tal_id
3327 ORDER BY NVL(target_kle_id,-1)
3328 --Bug# 3502142
3329 , NVL(split_percent,-1);
3330
3331 l_txdv_rec txdv_rec_type;
3332 l_txdv_tbl txdv_tbl_type;
3333 r_count NUMBER DEFAULT 0;
3334 BEGIN
3335 x_no_data_found := TRUE;
3336 -- Get current database values
3337 OPEN txdv_csr (p_tal_id);
3338 LOOP
3339 FETCH txdv_csr INTO
3340 l_txdv_rec.ID,
3341 l_txdv_rec.OBJECT_VERSION_NUMBER,
3342 l_txdv_rec.TAL_ID,
3343 l_txdv_rec.TARGET_KLE_ID,
3344 l_txdv_rec.LINE_DETAIL_NUMBER,
3345 l_txdv_rec.ASSET_NUMBER,
3346 l_txdv_rec.description,
3347 l_txdv_rec.QUANTITY,
3348 l_txdv_rec.COST,
3349 l_txdv_rec.TAX_BOOK,
3350 l_txdv_rec.LIFE_IN_MONTHS_TAX,
3351 l_txdv_rec.DEPRN_METHOD_TAX,
3352 l_txdv_rec.DEPRN_RATE_TAX,
3353 l_txdv_rec.SALVAGE_VALUE,
3354 l_txdv_rec.SPLIT_PERCENT,
3355 l_txdv_rec.INVENTORY_ITEM_ID,
3356 l_txdv_rec.ATTRIBUTE_CATEGORY,
3357 l_txdv_rec.ATTRIBUTE1,
3358 l_txdv_rec.ATTRIBUTE2,
3359 l_txdv_rec.ATTRIBUTE3,
3360 l_txdv_rec.ATTRIBUTE4,
3361 l_txdv_rec.ATTRIBUTE5,
3362 l_txdv_rec.ATTRIBUTE6,
3363 l_txdv_rec.ATTRIBUTE7,
3364 l_txdv_rec.ATTRIBUTE8,
3365 l_txdv_rec.ATTRIBUTE9,
3366 l_txdv_rec.ATTRIBUTE10,
3367 l_txdv_rec.ATTRIBUTE11,
3368 l_txdv_rec.ATTRIBUTE12,
3369 l_txdv_rec.ATTRIBUTE13,
3370 l_txdv_rec.ATTRIBUTE14,
3371 l_txdv_rec.ATTRIBUTE15,
3372 l_txdv_rec.CREATED_BY,
3373 l_txdv_rec.CREATION_DATE,
3374 l_txdv_rec.LAST_UPDATED_BY,
3375 l_txdv_rec.LAST_UPDATE_DATE,
3376 l_txdv_rec.LAST_UPDATE_LOGIN,
3377 -- Multi-Currency Change
3378 l_txdv_rec.CURRENCY_CODE,
3379 l_txdv_rec.CURRENCY_CONVERSION_TYPE,
3380 l_txdv_rec.CURRENCY_CONVERSION_RATE,
3381 l_txdv_rec.CURRENCY_CONVERSION_DATE;
3382 -- Multi-Currency Change
3383 EXIT WHEN txdv_csr%NOTFOUND;
3384 r_count := txdv_csr%rowcount;
3385 l_txdv_tbl(r_count) := l_txdv_rec;
3386 END LOOP;
3387 CLOSE txdv_csr;
3388 IF r_count <> 0 THEN
3389 x_no_data_found := FALSE;
3390 ELSIF r_count = 0 THEN
3391 x_no_data_found := TRUE;
3392 END IF;
3393 RETURN(l_txdv_tbl);
3394 END get_trx_details;
3395 --------------------------------------------------------------------------------
3396 --Function to verify whether the generated split asset number exists in FA
3397 --------------------------------------------------------------------------------
3398 FUNCTION Asset_Number_Exists(p_asset_number IN VARCHAR2,
3399 x_asset_exists OUT NOCOPY VARCHAR2) RETURN VARCHAR2 IS
3400 l_asset_exists VARCHAR2(1) DEFAULT 'N';
3401 l_return_status VARCHAR2(1) DEFAULT OKL_API.G_RET_STS_SUCCESS;
3402
3403 --chk for asset in FA
3404 CURSOR asset_chk_curs1 (p_asset_number IN VARCHAR2) IS
3405 SELECT 'Y'
3406 FROM okx_assets_v okx
3407 WHERE okx.asset_number = p_asset_number;
3408
3409 --chk for asset on asset line
3410 CURSOR asset_chk_curs2 (p_asset_number IN VARCHAR2) IS
3411 SELECT 'Y'
3412 FROM okl_k_lines_full_v kle,
3413 okc_line_styles_b lse
3414 WHERE kle.name = p_asset_number
3415 AND kle.lse_id = lse.id
3416 --and lse.lty_code = 'FIXED_ASSET';
3417 --Bug# 3222804
3418 AND lse.lty_code = 'FREE_FORM1';
3419
3420 --check for asset on an split asset transaction
3421 CURSOR asset_chk_curs3 (p_asset_number IN VARCHAR2) IS
3422 SELECT 'Y'
3423 FROM okl_txd_assets_b txd
3424 WHERE NVL(txd.asset_number,'-999999999999999') = p_asset_number
3425 AND EXISTS (SELECT NULL
3426 FROM okl_trx_Assets trx,
3427 okl_trx_types_tl ttyp,
3428 okl_txl_assets_b txl
3429 WHERE trx.id = txl.tas_id
3430 AND trx.try_id = ttyp.id
3431 AND ttyp.name = 'Split Asset'
3432 AND ttyp.LANGUAGE = 'US'
3433 AND txl.id = txd.tal_id);
3434
3435
3436 BEGIN
3437 l_return_status := OKL_API.G_RET_STS_SUCCESS;
3438 --dbms_output.put_line('Asset Number'||p_asset_number);
3439 l_asset_exists := 'N';
3440 OPEN asset_chk_curs1(p_asset_number);
3441 FETCH asset_chk_curs1 INTO l_asset_exists;
3442 IF asset_chk_curs1%NOTFOUND THEN
3443 OPEN asset_chk_curs2(p_asset_number);
3444 FETCH asset_chk_curs2 INTO l_asset_exists;
3445 IF asset_chk_curs2%NOTFOUND THEN
3446 OPEN asset_chk_curs3(p_asset_number);
3447 FETCH asset_chk_curs3 INTO l_asset_exists;
3448 IF asset_chk_curs3%NOTFOUND THEN
3449 NULL;
3450 END IF;
3451 CLOSE asset_chk_curs3;
3452 END IF;
3453 CLOSE asset_chk_curs2;
3454 END IF;
3455 CLOSE asset_chk_curs1;
3456 x_asset_exists := l_asset_exists;
3457 --return status to caller
3458 RETURN(l_return_status);
3459 EXCEPTION
3460 WHEN OTHERS THEN
3461 -- store SQL error message on message stack for caller
3462 OKL_API.set_message(
3463 G_APP_NAME,
3464 G_UNEXPECTED_ERROR,
3465 G_SQLCODE_TOKEN,
3466 SQLCODE,
3467 G_SQLERRM_TOKEN,
3468 SQLERRM);
3469 --close the cursor
3470 IF asset_chk_curs1%ISOPEN THEN
3471 CLOSE asset_chk_curs1;
3472 END IF;
3473 IF asset_chk_curs2%ISOPEN THEN
3474 CLOSE asset_chk_curs2;
3475 END IF;
3476 IF asset_chk_curs3%ISOPEN THEN
3477 CLOSE asset_chk_curs3;
3478 END IF;
3479 --send back status to caller
3480 l_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3481 RETURN(l_return_status);
3482 END Asset_Number_Exists;
3483 --------------------------------------------------------------------------------
3484 --Function to validate okl_txd_Assets_v attributes
3485 --------------------------------------------------------------------------------
3486 FUNCTION Validate_Attributes (p_txdv_rec IN txdv_rec_type)
3487 RETURN VARCHAR2 IS
3488
3489 l_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
3490
3491 --chk for asset in FA
3492 CURSOR asset_chk_curs1 (p_asset_number IN VARCHAR2) IS
3493 SELECT 'Y'
3494 FROM okx_assets_v okx
3495 WHERE okx.asset_number = p_asset_number;
3496
3497 --chk for asset on asset line
3498 CURSOR asset_chk_curs2 (p_asset_number IN VARCHAR2) IS
3499 SELECT 'Y'
3500 FROM okl_k_lines_full_v kle,
3501 okc_line_styles_b lse
3502 WHERE kle.name = p_asset_number
3503 AND kle.lse_id = lse.id
3504 AND lse.lty_code = 'FIXED_ASSET';
3505
3506
3507 --check for asset on an split asset transaction
3508 CURSOR asset_chk_curs3 (p_asset_number IN VARCHAR2, p_txdv_id IN NUMBER) IS
3509 SELECT 'Y'
3510 FROM okl_txd_assets_b txd,
3511 okl_txl_assets_b txl,
3512 okl_trx_types_tl ttyp,
3513 okl_trx_assets trx
3514 WHERE NVL(txd.asset_number,'-999999999999999') = p_asset_number
3515 AND txd.tal_id = txl.id
3516 AND txl.tas_id = trx.id
3517 AND trx.try_id = ttyp.id
3518 AND ttyp.name = 'Split Asset'
3519 AND ttyp.LANGUAGE = 'US'
3520 AND NVL(txd.target_kle_id,-99) <> txl.kle_id
3521 AND trx.tsu_code = 'ENTERED'
3522 AND txd.id <> p_txdv_id;
3523
3524 --check for asset on create asset or rebook transaction
3525 CURSOR asset_chk_curs4 (p_asset_number IN VARCHAR2) IS
3526 SELECT 'Y'
3527 FROM okl_txl_assets_b txl
3528 WHERE txl.asset_number = p_asset_number
3529 AND txl.tal_type IN ('ALI','CRB'); --only transactions apart from split which create a new line
3530
3531
3532 l_txdv_rec txdv_rec_type;
3533 l_asset_exists VARCHAR2(1) DEFAULT 'N';
3534
3535 BEGIN
3536 l_txdv_rec := p_txdv_rec;
3537 l_return_status := OKL_API.G_RET_STS_SUCCESS;
3538 --1.Validate existence of asset number
3539 IF (l_txdv_rec.asset_number IS NULL) OR (l_txdv_rec.asset_number = OKL_API.G_MISS_CHAR) THEN
3540 -- store SQL error message on message stack
3541 OKL_API.set_message(p_app_name => G_APP_NAME,
3542 p_msg_name => G_ASSET_REQUIRED);
3543 l_return_status := OKL_API.G_RET_STS_ERROR;
3544 -- halt validation as it is a required field
3545 RAISE G_EXCEPTION_HALT_VALIDATION;
3546 ELSE
3547 IF LENGTH(l_txdv_rec.asset_number) > 15 THEN
3548 -- store SQL error message on message stack
3549 OKL_API.set_message(p_app_name => G_APP_NAME,
3550 p_msg_name => G_ASSET_LENGTH);
3551 l_return_status := OKL_API.G_RET_STS_ERROR;
3552 -- halt validation as it is a required field
3553 RAISE G_EXCEPTION_HALT_VALIDATION;
3554 ELSE
3555 l_asset_exists := 'N';
3556 OPEN asset_chk_curs1(l_txdv_rec.asset_number);
3557 FETCH asset_chk_curs1 INTO l_asset_exists;
3558 IF asset_chk_curs1%NOTFOUND THEN
3559 OPEN asset_chk_curs2(l_txdv_rec.asset_number);
3560 FETCH asset_chk_curs2 INTO l_asset_exists;
3561 IF asset_chk_curs2%NOTFOUND THEN
3562 OPEN asset_chk_curs3(l_txdv_rec.asset_number,l_txdv_rec.id);
3563 FETCH asset_chk_curs3 INTO l_asset_exists;
3564 IF asset_chk_curs3%NOTFOUND THEN
3565 OPEN asset_chk_curs4 (l_txdv_rec.asset_number);
3566 FETCH asset_chk_curs4 INTO l_asset_exists;
3567 IF asset_chk_curs4%NOTFOUND THEN
3568 NULL;
3569 END IF;
3570 END IF;
3571 CLOSE asset_chk_curs3;
3572 END IF;
3573 CLOSE asset_chk_curs2;
3574 END IF;
3575 CLOSE asset_chk_curs1;
3576 IF l_asset_exists = 'Y' THEN
3577 -- store SQL error message on message stack
3578 OKL_API.Set_Message(p_app_name => G_APP_NAME,
3579 p_msg_name => G_NOT_UNIQUE,
3580 p_token1 => G_COL_NAME_TOKEN,
3581 p_token1_value => 'Asset Number '|| l_txdv_rec.asset_number);
3582 l_return_status := OKL_API.G_RET_STS_ERROR;
3583 -- halt validation as it is a required field
3584 RAISE G_EXCEPTION_HALT_VALIDATION;
3585 END IF;
3586 END IF;
3587 END IF;
3588 RETURN(l_return_status);
3589
3590 EXCEPTION
3591 WHEN G_EXCEPTION_HALT_VALIDATION THEN
3592 RETURN(l_return_status);
3593 WHEN OTHERS THEN
3594 -- store SQL error message on message stack for caller
3595 OKL_API.set_message(
3596 G_APP_NAME,
3597 G_UNEXPECTED_ERROR,
3598 G_SQLCODE_TOKEN,
3599 SQLCODE,
3600 G_SQLERRM_TOKEN,
3601 SQLERRM);
3602 --close the cursor
3603 IF asset_chk_curs1%ISOPEN THEN
3604 CLOSE asset_chk_curs1;
3605 END IF;
3606 IF asset_chk_curs2%ISOPEN THEN
3607 CLOSE asset_chk_curs2;
3608 END IF;
3609 IF asset_chk_curs3%ISOPEN THEN
3610 CLOSE asset_chk_curs3;
3611 END IF;
3612 IF asset_chk_curs4%ISOPEN THEN
3613 CLOSE asset_chk_curs4;
3614 END IF;
3615 --send back status to caller
3616 l_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3617 RETURN(l_return_status);
3618 END Validate_Attributes;
3619 -------------------------------------------------------------------------------
3620 --Function to verify TRY_ID for the transaction try_id
3621 -------------------------------------------------------------------------------
3622 FUNCTION get_try_id(p_try_name IN OKL_TRX_TYPES_V.NAME%TYPE,
3623 x_try_id OUT NOCOPY OKC_LINE_STYLES_V.ID%TYPE)
3624 RETURN VARCHAR2 IS
3625 x_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
3626 CURSOR c_get_try_id(p_try_name OKL_TRX_TYPES_V.NAME%TYPE) IS
3627 SELECT id
3628 FROM OKL_TRX_TYPES_TL
3629 WHERE UPPER(name) = UPPER(p_try_name)
3630 AND LANGUAGE = 'US';
3631 BEGIN
3632 IF (p_try_name = OKL_API.G_MISS_CHAR) OR
3633 (p_try_name IS NULL) THEN
3634 -- store SQL error message on message stack
3635 OKL_API.set_message(p_app_name => G_APP_NAME,
3636 p_msg_name => G_NO_DATA_FOUND,
3637 p_token1 => G_COL_NAME_TOKEN,
3638 p_token1_value => p_try_name);
3639 -- halt validation as it is a required field
3640 RAISE G_EXCEPTION_STOP_VALIDATION;
3641 END IF;
3642 OPEN c_get_try_id(p_try_name);
3643 FETCH c_get_try_id INTO x_try_id;
3644 IF c_get_try_id%NOTFOUND THEN
3645 OKL_API.set_message(p_app_name => G_APP_NAME,
3646 p_msg_name => G_NO_DATA_FOUND,
3647 p_token1 => G_COL_NAME_TOKEN,
3648 p_token1_value => p_try_name);
3649 RAISE G_EXCEPTION_HALT_VALIDATION;
3650 END IF;
3651 CLOSE c_get_try_id;
3652 RETURN x_return_status;
3653 EXCEPTION
3654 WHEN G_EXCEPTION_STOP_VALIDATION THEN
3655 -- We are here since the field is required
3656 -- Notify Error
3657 x_return_status := OKL_API.G_RET_STS_ERROR;
3658 WHEN G_EXCEPTION_HALT_VALIDATION THEN
3659 -- We are here b'cause we have no parent record
3660 -- If the cursor is open then it has to be closed
3661 IF c_get_try_id%ISOPEN THEN
3662 CLOSE c_get_try_id;
3663 END IF;
3664 -- notify caller of an error
3665 x_return_status := OKL_API.G_RET_STS_ERROR;
3666 WHEN OTHERS THEN
3667 -- store SQL error message on message stack for caller
3668 OKL_API.set_message(
3669 G_APP_NAME,
3670 G_UNEXPECTED_ERROR,
3671 G_SQLCODE_TOKEN,
3672 SQLCODE,
3673 G_SQLERRM_TOKEN,
3674 SQLERRM);
3675 -- notify caller of an UNEXPECTED error
3676 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3677 -- if the cursor is open
3678 IF c_get_try_id%ISOPEN THEN
3679 CLOSE c_get_try_id;
3680 END IF;
3681 RETURN(x_return_status);
3682 END get_try_id;
3683 --------------------------------------------------------------------------------
3684 --Function to verify whether the line id is correct or not
3685 --------------------------------------------------------------------------------
3686 FUNCTION verify_cle_id(p_cle_id IN NUMBER) RETURN VARCHAR2 IS
3687 CURSOR Chk_Top_Line(p_cle_id IN NUMBER) IS
3688 SELECT 'Y'
3689 FROM OKC_K_LINES_B cle
3690 WHERE cle.id = p_cle_id
3691 AND EXISTS (SELECT '1'
3692 FROM OKC_LINE_STYLES_B lse
3693 WHERE lse.id = cle.lse_id
3694 AND lse.lty_code = G_FIN_AST_LTY_CODE
3695 AND lse.lse_type = G_TOP_LINE_STYLE)
3696 AND EXISTS (SELECT '1'
3697 FROM OKC_SUBCLASS_TOP_LINE stl,
3698 OKC_K_HEADERS_B CHR
3699 WHERE stl.lse_id = cle.lse_id
3700 AND stl.scs_code = CHR.scs_code
3701 AND CHR.id = cle.chr_id);
3702 l_chk_top_line VARCHAR2(1) DEFAULT 'N';
3703 l_return_status VARCHAR2(1) DEFAULT OKL_API.G_RET_STS_SUCCESS;
3704 BEGIN
3705 OPEN Chk_Top_Line(p_cle_id);
3706 FETCH Chk_Top_Line INTO l_chk_top_line;
3707 IF chk_top_line%NOTFOUND THEN
3708 ----dbms_output.put_line('Not a correct top line id');
3709 NULL;
3710 END IF;
3711 CLOSE Chk_Top_Line;
3712 IF l_chk_top_line <> 'Y' THEN
3713 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
3714 p_msg_name => G_INVALID_TOP_LINE);
3715 l_return_status := OKL_API.G_RET_STS_ERROR;
3716 END IF;
3717 RETURN(l_return_status);
3718 EXCEPTION
3719 WHEN OTHERS THEN
3720 l_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3721 OKL_API.set_message(
3722 G_APP_NAME,
3723 G_UNEXPECTED_ERROR,
3724 G_SQLCODE_TOKEN,
3725 SQLCODE,
3726 G_SQLERRM_TOKEN,
3727 SQLERRM);
3728 IF Chk_top_line%ISOPEN THEN
3729 CLOSE Chk_top_line;
3730 END IF;
3731 RETURN(l_return_status);
3732 END verify_cle_id;
3733 -------------------------------------------------------------------------------
3734 --Function to get FA location id. An asset after being sent to FA may have been
3735 -- assigned to different FA locations. Since OKL takes only only one FA location
3736 --right now , we will pick up only one location.
3737 ------------------------------------------------------------------------------
3738 FUNCTION get_fa_location (p_asset_id IN VARCHAR2,
3739 p_book_type_code IN VARCHAR2,
3740 x_location_id OUT NOCOPY NUMBER)
3741 RETURN VARCHAR2 IS
3742 CURSOR fa_location_curs(p_asset_id IN VARCHAR2,
3743 p_book_type_code IN VARCHAR2) IS
3744 SELECT location_id
3745 FROM okx_ast_dst_hst_v
3746 WHERE asset_id = p_asset_id
3747 AND book_type_code = p_book_type_code
3748 AND status = 'A'
3749 AND NVL(start_date_active,SYSDATE) <= SYSDATE
3750 AND NVL(end_date_active,SYSDATE+1) > SYSDATE
3751 AND transaction_header_id_out IS NULL
3752 AND retirement_id IS NULL
3753 AND ROWNUM < 2;
3754 --This is strange way to get one location
3755 --since asset can be assigned to multiple
3756 --fa locations. But till we know what we have to do
3757 --this is it.
3758 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3759 l_location_id NUMBER DEFAULT NULL;
3760 BEGIN
3761 l_return_status := OKL_API.G_RET_STS_SUCCESS;
3762 OPEN fa_location_curs(p_asset_id,
3763 p_book_type_code);
3764 FETCH fa_location_curs
3765 INTO l_location_id;
3766 IF fa_location_curs%NOTFOUND THEN
3767 NULL; --location not found that is not a problem
3768 --as it is not a mandatory field
3769 END IF;
3770 CLOSE fa_location_curs;
3771 RETURN(l_return_status);
3772 EXCEPTION
3773 WHEN OTHERS THEN
3774 -- notify caller of an UNEXPECTED error
3775 l_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3776 OKL_API.set_message(
3777 G_APP_NAME,
3778 G_UNEXPECTED_ERROR,
3779 G_SQLCODE_TOKEN,
3780 SQLCODE,
3781 G_SQLERRM_TOKEN,
3782 SQLERRM);
3783 -- if the cursor is open
3784 IF fa_location_curs%ISOPEN THEN
3785 CLOSE fa_location_curs;
3786 END IF;
3787 RETURN(l_return_status);
3788 END Get_fa_Location;
3789 --------------------------------------------------------------------------------
3790 --Procedure to create transaction header (OKL_TRX_ASSETS_V)
3791 --------------------------------------------------------------------------------
3792 PROCEDURE Create_trx_header(
3793 p_api_version IN NUMBER,
3794 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
3795 x_return_status OUT NOCOPY VARCHAR2,
3796 x_msg_count OUT NOCOPY NUMBER,
3797 x_msg_data OUT NOCOPY VARCHAR2,
3798 p_trxv_rec IN trxv_rec_type,
3799 x_trxv_rec OUT NOCOPY trxv_rec_type) IS
3800 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_TRX_HEADER';
3801 BEGIN
3802 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3803 -- Call start_activity to create savepoint, check compatibility
3804 -- and initialize message list
3805 x_return_status := OKL_API.START_ACTIVITY (
3806 l_api_name
3807 ,p_init_msg_list
3808 ,'_PVT'
3809 ,x_return_status);
3810 -- Check if activity started successfully
3811 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3812 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3813 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3814 RAISE OKL_API.G_EXCEPTION_ERROR;
3815 END IF;
3816 -- evaluate conditions, build outcomes for true conditions and
3817 -- put them on outcome queue
3818 OKL_TRX_ASSETS_PUB.create_trx_ass_h_def(
3819 p_api_version => p_api_version,
3820 p_init_msg_list => p_init_msg_list,
3821 x_return_status => x_return_status,
3822 x_msg_count => x_msg_count,
3823 x_msg_data => x_msg_data,
3824 p_thpv_rec => p_trxv_rec,
3825 x_thpv_rec => x_trxv_rec);
3826
3827 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3828 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3829 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3830 RAISE OKL_API.G_EXCEPTION_ERROR;
3831 END IF;
3832 OKL_API.END_ACTIVITY (x_msg_count,
3833 x_msg_data );
3834 EXCEPTION
3835 WHEN OKL_API.G_EXCEPTION_ERROR THEN
3836 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3837 l_api_name,
3838 G_PKG_NAME,
3839 'OKC_API.G_RET_STS_ERROR',
3840 x_msg_count,
3841 x_msg_data,
3842 '_PVT');
3843 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3844 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
3845 l_api_name,
3846 G_PKG_NAME,
3847 'OKC_API.G_RET_STS_UNEXP_ERROR',
3848 x_msg_count,
3849 x_msg_data,
3850 '_PVT');
3851 WHEN OTHERS THEN
3852 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
3853 l_api_name,
3854 G_PKG_NAME,
3855 'OTHERS',
3856 x_msg_count,
3857 x_msg_data,
3858 '_PVT');
3859 END Create_trx_header;
3860 --------------------------------------------------------------------------------
3861 --PROCEDURE to update transaction_header (OKL_TRX_ASSETS_V)
3862 --------------------------------------------------------------------------------
3863 PROCEDURE Update_trx_header(
3864 p_api_version IN NUMBER,
3865 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
3866 x_return_status OUT NOCOPY VARCHAR2,
3867 x_msg_count OUT NOCOPY NUMBER,
3868 x_msg_data OUT NOCOPY VARCHAR2,
3869 p_trxv_rec IN trxv_rec_type,
3870 x_trxv_rec OUT NOCOPY trxv_rec_type) IS
3871 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_TRX_HEADER';
3872 BEGIN
3873 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3874 -- Call start_activity to create savepoint, check compatibility
3875 -- and initialize message list
3876 x_return_status := OKL_API.START_ACTIVITY (
3877 l_api_name
3878 ,p_init_msg_list
3879 ,'_PVT'
3880 ,x_return_status);
3881 -- Check if activity started successfully
3882 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3883 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3884 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3885 RAISE OKL_API.G_EXCEPTION_ERROR;
3886 END IF;
3887 -- evaluate conditions, build outcomes for true conditions and
3888 -- put them on outcome queue
3889 OKL_TRX_ASSETS_PUB.update_trx_ass_h_def(
3890 p_api_version => p_api_version,
3891 p_init_msg_list => p_init_msg_list,
3892 x_return_status => x_return_status,
3893 x_msg_count => x_msg_count,
3894 x_msg_data => x_msg_data,
3895 p_thpv_rec => p_trxv_rec,
3896 x_thpv_rec => x_trxv_rec);
3897
3898 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3899 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3900 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3901 RAISE OKL_API.G_EXCEPTION_ERROR;
3902 END IF;
3903
3904 OKL_API.END_ACTIVITY (x_msg_count,
3905 x_msg_data );
3906 EXCEPTION
3907 WHEN OKC_API.G_EXCEPTION_ERROR THEN
3908 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3909 l_api_name,
3910 G_PKG_NAME,
3911 'OKC_API.G_RET_STS_ERROR',
3912 x_msg_count,
3913 x_msg_data,
3914 '_PVT');
3915 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3916 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
3917 l_api_name,
3918 G_PKG_NAME,
3919 'OKC_API.G_RET_STS_UNEXP_ERROR',
3920 x_msg_count,
3921 x_msg_data,
3922 '_PVT');
3923 WHEN OTHERS THEN
3924 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
3925 l_api_name,
3926 G_PKG_NAME,
3927 'OTHERS',
3928 x_msg_count,
3929 x_msg_data,
3930 '_PVT');
3931 END Update_trx_header;
3932 --------------------------------------------------------------------------------
3933 --Procedure to create split transaction details (okl_txd_assets_b)
3934 --Bug# 2798006 : Modifications for Loan contract - instead of reading values from
3935 --p_ast_line_rec will read from p_txlv_rec
3936 --------------------------------------------------------------------------------
3937 PROCEDURE Create_trx_details(p_api_version IN NUMBER,
3938 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
3939 x_return_status OUT NOCOPY VARCHAR2,
3940 x_msg_count OUT NOCOPY NUMBER,
3941 x_msg_data OUT NOCOPY VARCHAR2,
3942 p_ast_line_rec IN ast_line_rec_type,
3943 p_txlv_rec IN txlv_rec_type,
3944 x_txdv_tbl OUT NOCOPY txdv_tbl_type) IS
3945
3946 l_return_status VARCHAR2(1) DEFAULT OKL_API.G_RET_STS_SUCCESS;
3947 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_TRX_DETAILS';
3948 l_api_version CONSTANT NUMBER := 1.0;
3949
3950 l_split_into_individuals_yn VARCHAR2(1);
3951 l_split_into_units NUMBER;
3952 l_units_on_child_line NUMBER;
3953 l_total_salvage_value NUMBER;
3954 l_total_cost NUMBER;
3955 l_total_quantity NUMBER;
3956 l_txdv_rec txdv_rec_type;
3957 l_txdv_rec_out txdv_rec_type;
3958
3959 l_asset_exists VARCHAR2(1) DEFAULT 'N';
3960 j NUMBER DEFAULT 0; --counter for generating split asset numbers
3961 i NUMBER DEFAULT 0;
3962 l_split_unit_count NUMBER DEFAULT 0;
3963
3964 BEGIN
3965 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3966 -- Call start_activity to create savepoint, check compatibility
3967 -- and initialize message list
3968 x_return_status := OKL_API.START_ACTIVITY (
3969 l_api_name
3970 ,p_init_msg_list
3971 ,'_PVT'
3972 ,x_return_status);
3973 -- Check if activity started successfully
3974 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3975 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3976 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3977 RAISE OKL_API.G_EXCEPTION_ERROR;
3978 END IF;
3979
3980 l_split_into_individuals_yn := NVL(p_txlv_rec.SPLIT_INTO_SINGLES_FLAG,'N');
3981 --dbms_output.put_line('Split into individuals'||l_split_into_individuals_yn);
3982 --dbms_output.put_line('ast rec current units'||to_char(p_ast_line_rec.current_units));
3983 --dbms_output.put_line('txlv rec units retired'||to_char(p_txlv_rec.split_into_units));
3984 --prepared record for OKL_TXD_ASSETS_V
3985 IF l_split_into_individuals_yn = 'Y' THEN
3986 --l_split_into_units := p_ast_line_rec.current_units;
3987 l_split_into_units := p_txlv_rec.current_units;
3988 l_units_on_child_line := 1;
3989 ELSIF NVL(l_split_into_individuals_yn,'N') = 'N' THEN
3990 l_split_into_units := 2;
3991 -- l_units_on_child_line := p_split_into_units;
3992 l_units_on_child_line := p_txlv_rec.SPLIT_INTO_UNITS;
3993 END IF;
3994 l_total_salvage_value := 0;
3995 l_total_cost := 0;
3996 l_total_quantity := 0;
3997 --dbms_output.put_line('Split into units'||to_char(l_split_into_units));
3998 --dbms_output.put_line('units on child line'||to_char(l_units_on_child_line));
3999 FOR i IN 1..(l_split_into_units - 1)
4000 LOOP
4001 --dbms_output.put_line('Into split loop');
4002 l_txdv_rec.tal_id := p_txlv_rec.id;
4003 l_txdv_rec.line_detail_number := i + 1;
4004 --l_txdv_rec.description := p_ast_line_rec.description;
4005 l_txdv_rec.description := p_txlv_rec.description;
4006 --dbms_output.put_line('Description from FA'|| p_ast_line_rec.description);
4007
4008 --generate an asset number which does not exist in FA
4009 j := j+1;
4010 LOOP
4011 --dbms_output.put_line('Into asset number gen loop');
4012 --dbms_output.put_line('Asset Number'||p_ast_line_rec.asset_number||'.'||to_char(j));
4013 SELECT 'OKL'||TO_CHAR(okl_fan_seq.NEXTVAL)
4014 INTO l_txdv_rec.asset_number FROM dual;
4015 --dbms_output.put_line('Asset Number'||l_txdv_rec.asset_number);
4016 x_return_status := Asset_Number_Exists(l_txdv_rec.asset_number,l_asset_exists);
4017 --dbms_output.put_line('after asset number validate'||x_return_status);
4018 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4019 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4020 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4021 RAISE OKL_API.G_EXCEPTION_ERROR;
4022 END IF;
4023 IF l_asset_exists = 'Y' THEN
4024 j:= j+1;
4025 ELSIF l_asset_exists = 'N' THEN
4026 EXIT;
4027 END IF;
4028 END LOOP;
4029 --dbms_output.put_line('Out of generation of asset number');
4030 l_txdv_rec.quantity := l_units_on_child_line;
4031 --l_txdv_rec.cost := (p_ast_line_rec.cost/p_ast_line_rec.current_units)*l_units_on_child_line;
4032 l_txdv_rec.cost := (p_txlv_rec.depreciation_cost/p_txlv_rec.current_units)*l_units_on_child_line;
4033 --l_txdv_rec.salvage_value := (p_ast_line_rec.salvage_value/p_ast_line_rec.current_units)*l_units_on_child_line;
4034 l_txdv_rec.salvage_value := (p_txlv_rec.salvage_value/p_txlv_rec.current_units)*l_units_on_child_line;
4035 l_total_cost := l_total_cost + l_txdv_rec.cost;
4036 l_total_salvage_value := l_total_salvage_value + l_txdv_rec.salvage_value;
4037 l_total_quantity := l_total_quantity + l_units_on_child_line;
4038
4039 ---Bug#2723498 : 11.5.9 Currency conversion
4040 l_txdv_rec.currency_code := p_txlv_rec.currency_code;
4041 --bug fix# 2770114
4042 --l_txdv_rec.currency_conversion_type := p_txlv_rec.currency_code;
4043 l_txdv_rec.currency_conversion_type := p_txlv_rec.currency_conversion_type;
4044 l_txdv_rec.currency_conversion_rate := p_txlv_rec.currency_conversion_rate;
4045 l_txdv_rec.currency_conversion_date := p_txlv_rec.currency_conversion_date;
4046 ---Bug#2723498 : 11.5.9 Currency conversion
4047
4048 --dbms_output.put_line('Creating trx detail for child asset');
4049 --dbms_output.put_line('Before Creating trx detail for child asset'||l_txdv_rec.description);
4050 OKL_TXD_ASSETS_PUB.create_txd_asset_def(p_api_version => p_api_version,
4051 p_init_msg_list => p_init_msg_list,
4052 x_return_status => x_return_status,
4053 x_msg_count => x_msg_count,
4054 x_msg_data => x_msg_data,
4055 p_adpv_rec => l_txdv_rec,
4056 x_adpv_rec => l_txdv_rec_out);
4057 --dbms_output.put_line('After Creating trx detail for child asset'||x_return_status);
4058 --dbms_output.put_line('After Creating trx detail for child asset'||l_txdv_rec_out.description);
4059 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4060 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4061 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4062 RAISE OKL_API.G_EXCEPTION_ERROR;
4063 END IF;
4064 l_split_unit_count := i;
4065 x_txdv_tbl(l_split_unit_count) := l_txdv_rec_out;
4066 END LOOP;
4067 --split record for the parent asset
4068 l_txdv_rec.tal_id := p_txlv_rec.id;
4069 --l_txdv_rec.target_kle_id := p_ast_line_rec.id1;
4070 l_txdv_rec.target_kle_id := p_txlv_rec.kle_id;
4071 l_txdv_rec.line_detail_number := 1;
4072 --l_txdv_rec.description := p_ast_line_rec.description;
4073 l_txdv_rec.description := p_txlv_rec.description;
4074 --l_txdv_rec.asset_number := p_ast_line_rec.asset_number;
4075 l_txdv_rec.asset_number := p_txlv_rec.asset_number;
4076 --l_txdv_rec.quantity := (p_ast_line_rec.current_units - l_total_quantity);
4077 l_txdv_rec.quantity := (p_txlv_rec.current_units - l_total_quantity);
4078
4079 ------------------------------------------------------------------------
4080 --quantity less that 1 is possible in FA
4081 --If l_txdv_rec.quantity < 1 Then
4082 --l_txdv_rec.quantity := 1;
4083 --End If;
4084 --quantity less than 1 is possible in FA
4085 ------------------------------------------------------------------------
4086 --l_txdv_rec.cost := (p_ast_line_rec.cost - l_total_cost);
4087 l_txdv_rec.cost := (p_txlv_rec.depreciation_cost - l_total_cost);
4088 --l_txdv_rec.salvage_value := (p_ast_line_rec.salvage_value - l_total_salvage_value);
4089 l_txdv_rec.salvage_value := (p_txlv_rec.salvage_value - l_total_salvage_value);
4090
4091 ---Bug#2723498 : 11.5.9 Currency conversion
4092 l_txdv_rec.currency_code := p_txlv_rec.currency_code;
4093 --Bug# 2770114
4094 --l_txdv_rec.currency_conversion_type := p_txlv_rec.currency_code;
4095 l_txdv_rec.currency_conversion_type := p_txlv_rec.currency_conversion_type;
4096 l_txdv_rec.currency_conversion_rate := p_txlv_rec.currency_conversion_rate;
4097 l_txdv_rec.currency_conversion_date := p_txlv_rec.currency_conversion_date;
4098 ---Bug#2723498 : 11.5.9 Currency conversion
4099
4100 --dbms_output.put_line('before Creating trx detail for parent asset'||x_return_status);
4101 OKL_TXD_ASSETS_PUB.create_txd_asset_def(p_api_version => p_api_version,
4102 p_init_msg_list => p_init_msg_list,
4103 x_return_status => x_return_status,
4104 x_msg_count => x_msg_count,
4105 x_msg_data => x_msg_data,
4106 p_adpv_rec => l_txdv_rec,
4107 x_adpv_rec => l_txdv_rec_out);
4108 --dbms_output.put_line('after Creating trx detail for parent asset'||x_return_status);
4109 --dbms_output.put_line('After Creating trx detail for child asset'||x_return_status);
4110 --dbms_output.put_line('After Creating trx detail for child asset'||l_txdv_rec_out.description);
4111 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4112 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4113 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4114 RAISE OKL_API.G_EXCEPTION_ERROR;
4115 END IF;
4116 x_txdv_tbl(l_split_unit_count + 1) := l_txdv_rec_out;
4117 OKL_API.END_ACTIVITY (x_msg_count,
4118 x_msg_data );
4119 EXCEPTION
4120 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4121 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4122 l_api_name,
4123 G_PKG_NAME,
4124 'OKL_API.G_RET_STS_ERROR',
4125 x_msg_count,
4126 x_msg_data,
4127 '_PVT');
4128 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4129 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4130 l_api_name,
4131 G_PKG_NAME,
4132 'OKL_API.G_RET_STS_UNEXP_ERROR',
4133 x_msg_count,
4134 x_msg_data,
4135 '_PVT');
4136 WHEN OTHERS THEN
4137 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4138 l_api_name,
4139 G_PKG_NAME,
4140 'OTHERS',
4141 x_msg_count,
4142 x_msg_data,
4143 '_PVT');
4144
4145 END Create_Trx_details;
4146 --------------------------------------------------------------------------------
4147 --Start of Comments
4148 --Bug #2723498 : 11.5.9 enhancement for splitting assets by serial number
4149 --API Name : is_serialized
4150 --Description : Function to find if asset is serialized
4151 --History : 03-Nov-2002 avsingh Creation (for asset split by serial numbers)
4152 --End of comments
4153 --------------------------------------------------------------------------------
4154 FUNCTION is_serialized(p_cle_id IN NUMBER) RETURN VARCHAR2 IS
4155 --Bug Fix # 2887948
4156 --Cursor to check whether inventory item is serialized
4157 CURSOR chk_srl_csr (fin_ast_id IN NUMBER) IS
4158 SELECT mtl.serial_number_control_code,
4159 mtl.inventory_item_id,
4160 mtl.organization_id
4161 FROM mtl_system_items mtl,
4162 okc_k_items model_cim,
4163 okc_k_lines_b model_cle,
4164 okc_line_styles_b model_lse
4165 WHERE model_cim.object1_id2 = TO_CHAR(mtl.organization_id)
4166 AND model_cim.object1_id1 = mtl.inventory_item_id
4167 AND model_cim.jtot_object1_code = 'OKX_SYSITEM'
4168 AND model_cim.cle_id = model_cle.id
4169 AND model_cim.dnz_chr_id = model_cle.dnz_chr_id
4170 AND model_cle.cle_id = fin_ast_id
4171 AND model_cle.lse_id = model_lse.id
4172 AND model_lse.lty_code = 'ITEM';
4173
4174 chk_srl_rec chk_srl_csr%ROWTYPE;
4175
4176 l_serialized VARCHAR2(1) DEFAULT OKL_API.G_FALSE;
4177
4178 BEGIN
4179 l_serialized := OKL_API.G_FALSE;
4180 --user needs to select serial numbers to split out
4181 OPEN chk_srl_csr (fin_ast_id => p_cle_id);
4182 FETCH chk_srl_csr INTO chk_srl_rec;
4183 IF chk_srl_csr%NOTFOUND THEN
4184 NULL;
4185 END IF;
4186 CLOSE chk_srl_csr;
4187
4188 IF chk_srl_rec.serial_number_control_code IN (2,5,6) THEN
4189 -- asset inventory item is serial number controlled
4190 l_serialized := OKL_API.G_TRUE;
4191 END IF;
4192
4193 RETURN (l_serialized);
4194 END is_serialized;
4195 --------------------------------------------------------------------------------
4196 --Start of Comments
4197 --Bug # 2726870 : 11.5.9 enhancement for splitting assets by serial number
4198 --API Name : Is_Inv_Item_Serialized
4199 --Description : API will determine whether inv item is serialized or not
4200 --History : 03-Nov-2002 avsingh Creation (for asset split by serial numbers)
4201 --End of comments
4202 --------------------------------------------------------------------------------
4203 PROCEDURE Is_Inv_Item_Serialized(p_api_version IN NUMBER,
4204 p_init_msg_list IN VARCHAR2,
4205 x_return_status OUT NOCOPY VARCHAR2,
4206 x_msg_count OUT NOCOPY NUMBER,
4207 x_msg_data OUT NOCOPY VARCHAR2,
4208 p_inv_item_id IN NUMBER,
4209 p_chr_id IN NUMBER,
4210 p_cle_id IN NUMBER,
4211 x_serialized OUT NOCOPY VARCHAR2) IS
4212 l_api_version CONSTANT NUMBER := 1.0;
4213 l_api_name VARCHAR2(30) := 'IS_INV_ITEM_SERIALIZED';
4214
4215 l_serialized VARCHAR2(1) DEFAULT OKL_API.G_FALSE;
4216
4217 --cursor to find serialized
4218 CURSOR srl_ctrl_csr (p_inv_item_id IN NUMBER,
4219 p_chr_id IN NUMBER) IS
4220 SELECT mtl.serial_number_control_code
4221 FROM mtl_system_items mtl,
4222 okc_k_headers_b chrb
4223 WHERE mtl.inventory_item_id = p_inv_item_id
4224 AND mtl.organization_id = chrb.inv_organization_id
4225 --BUG# 3489089
4226 AND chrb.id = p_chr_id;
4227
4228 --cursor2 to find serialized
4229 CURSOR srl_ctrl_csr2 (p_inv_item_id IN NUMBER,
4230 p_cle_id IN NUMBER) IS
4231 SELECT mtl.serial_number_control_code
4232 FROM mtl_system_items mtl,
4233 okc_k_headers_b chrb,
4234 okc_k_lines_b cleb
4235 WHERE mtl.inventory_item_id = p_inv_item_id
4236 AND mtl.organization_id = chrb.inv_organization_id
4237 AND chrb.id = cleb.dnz_chr_id
4238 AND cleb.id = p_cle_id;
4239
4240 l_srl_control_code mtl_system_items.serial_number_control_code%TYPE;
4241
4242 l_exception_halt EXCEPTION;
4243
4244 BEGIN
4245 x_serialized := OKL_API.G_FALSE;
4246 x_return_status := OKL_API.START_ACTIVITY (
4247 l_api_name
4248 ,p_init_msg_list
4249 ,'_PVT'
4250 ,x_return_status);
4251 -- Check if activity started successfully
4252 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4253 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4254 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4255 RAISE OKL_API.G_EXCEPTION_ERROR;
4256 END IF;
4257
4258 l_serialized := OKL_API.G_FALSE;
4259 IF p_chr_id IS NOT NULL OR p_chr_id <> OKL_API.G_MISS_NUM THEN
4260 OPEN srl_ctrl_csr (p_inv_item_id => p_inv_item_id,
4261 p_chr_id => p_chr_id);
4262 FETCH srl_ctrl_csr INTO
4263 l_srl_control_code;
4264 CLOSE srl_ctrl_csr;
4265 ELSIF p_cle_id IS NOT NULL OR p_cle_id <> OKL_API.G_MISS_NUM THEN
4266 OPEN srl_ctrl_csr2 (p_inv_item_id => p_inv_item_id,
4267 p_cle_id => p_cle_id);
4268 FETCH srl_ctrl_csr2 INTO
4269 l_srl_control_code;
4270 CLOSE srl_ctrl_csr2;
4271 ELSE
4272 RAISE l_exception_halt;
4273 END IF;
4274
4275 IF NVL(l_srl_control_code,0) IN (2,5,6) THEN
4276 l_serialized := OKL_API.G_TRUE;
4277 END IF;
4278 x_serialized := l_serialized;
4279 OKL_API.END_ACTIVITY (x_msg_count,
4280 x_msg_data );
4281 EXCEPTION
4282 WHEN l_exception_halt THEN
4283 NULL;
4284 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4285 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4286 l_api_name,
4287 G_PKG_NAME,
4288 'OKL_API.G_RET_STS_ERROR',
4289 x_msg_count,
4290 x_msg_data,
4291 '_PVT');
4292 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4293 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4294 l_api_name,
4295 G_PKG_NAME,
4296 'OKL_API.G_RET_STS_UNEXP_ERROR',
4297 x_msg_count,
4298 x_msg_data,
4299 '_PVT');
4300 WHEN OTHERS THEN
4301 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4302 l_api_name,
4303 G_PKG_NAME,
4304 'OTHERS',
4305 x_msg_count,
4306 x_msg_data,
4307 '_PVT');
4308 END Is_Inv_Item_Serialized;
4309 --------------------------------------------------------------------------------
4310 --Start of Comments
4311 --Bug # 2726870 : 11.5.9 enhancement for Splitting Asets by serial number
4312 --API Name : Is_Asset_Serialized
4313 --Description : API will find if asset is serialized
4314 --------------------------------------------------------------------------------
4315 PROCEDURE Is_Asset_Serialized(p_api_version IN NUMBER,
4316 p_init_msg_list IN VARCHAR2,
4317 x_return_status OUT NOCOPY VARCHAR2,
4318 x_msg_count OUT NOCOPY NUMBER,
4319 x_msg_data OUT NOCOPY VARCHAR2,
4320 p_cle_id IN NUMBER,
4321 x_serialized OUT NOCOPY VARCHAR2) IS
4322
4323 l_api_version CONSTANT NUMBER := 1.0;
4324 l_api_name VARCHAR2(30) := 'IS_ASSET_SERIALIZED';
4325
4326 l_serialized VARCHAR2(1) DEFAULT OKL_API.G_FALSE;
4327 BEGIN
4328 x_serialized := OKL_API.G_FALSE;
4329 x_return_status := OKL_API.START_ACTIVITY (
4330 l_api_name
4331 ,p_init_msg_list
4332 ,'_PVT'
4333 ,x_return_status);
4334 -- Check if activity started successfully
4335 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4336 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4337 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4338 RAISE OKL_API.G_EXCEPTION_ERROR;
4339 END IF;
4340
4341 l_serialized := OKL_API.G_FALSE;
4342 l_serialized := Is_serialized(p_cle_id => p_cle_id);
4343 x_serialized := l_serialized;
4344 OKL_API.END_ACTIVITY (x_msg_count,
4345 x_msg_data );
4346 EXCEPTION
4347 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4348 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4349 l_api_name,
4350 G_PKG_NAME,
4351 'OKL_API.G_RET_STS_ERROR',
4352 x_msg_count,
4353 x_msg_data,
4354 '_PVT');
4355 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4356 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4357 l_api_name,
4358 G_PKG_NAME,
4359 'OKL_API.G_RET_STS_UNEXP_ERROR',
4360 x_msg_count,
4361 x_msg_data,
4362 '_PVT');
4363 WHEN OTHERS THEN
4364 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4365 l_api_name,
4366 G_PKG_NAME,
4367 'OTHERS',
4368 x_msg_count,
4369 x_msg_data,
4370 '_PVT');
4371 END Is_Asset_Serialized;
4372 --------------------------------------------------------------------------------
4373 --Start of Comments
4374 --Bug # 2726870 : 11.5.9 enhancement for splitting assets by serial number
4375 --API Name : Asset_Not_Srlz_Halt
4376 -- (Stop_if_Asset_Not_Serialized)
4377 --Description : API to be clled from UI - will raise Error if Asset not serialized
4378 --History : 03-Nov-2002 avsingh Creation (for asset split by serial numbers)
4379 --End of comments
4380 --------------------------------------------------------------------------------
4381 PROCEDURE Asset_Not_Srlz_Halt(p_api_version IN NUMBER,
4382 p_init_msg_list IN VARCHAR2,
4383 x_return_status OUT NOCOPY VARCHAR2,
4384 x_msg_count OUT NOCOPY NUMBER,
4385 x_msg_data OUT NOCOPY VARCHAR2,
4386 p_cle_id IN NUMBER,
4387 x_serialized OUT NOCOPY VARCHAR2) IS
4388 l_api_version CONSTANT NUMBER := 1.0;
4389 l_api_name VARCHAR2(30) := 'ASSET_NOT_SRLZ_HALT';
4390
4391 l_serialized VARCHAR2(1) DEFAULT OKL_API.G_FALSE;
4392 BEGIN
4393 -----
4394 x_return_status := OKL_API.START_ACTIVITY (
4395 l_api_name
4396 ,p_init_msg_list
4397 ,'_PVT'
4398 ,x_return_status);
4399 -- Check if activity started successfully
4400 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4401 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4402 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4403 RAISE OKL_API.G_EXCEPTION_ERROR;
4404 END IF;
4405
4406 l_serialized := OKL_API.G_FALSE;
4407 x_serialized := l_serialized;
4408 Is_Asset_Serialized(p_api_version => p_api_version,
4409 p_init_msg_list => p_init_msg_list,
4410 x_return_status => x_return_status,
4411 x_msg_count => x_msg_count,
4412 x_msg_data => x_msg_data,
4413 p_cle_id => p_cle_id,
4414 x_serialized => l_serialized);
4415
4416 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4417 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4418 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4419 RAISE OKL_API.G_EXCEPTION_ERROR;
4420 END IF;
4421 x_serialized := l_serialized;
4422 IF l_serialized = OKL_API.G_FALSE THEN
4423 OKL_API.set_message(p_app_name => G_APP_NAME,
4424 p_msg_name => G_ASSET_NOT_SERIALIZED);
4425 x_return_status := OKL_API.G_RET_STS_ERROR;
4426 END IF;
4427
4428 OKL_API.END_ACTIVITY (x_msg_count,
4429 x_msg_data );
4430 EXCEPTION
4431 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4432 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4433 l_api_name,
4434 G_PKG_NAME,
4435 'OKL_API.G_RET_STS_ERROR',
4436 x_msg_count,
4437 x_msg_data,
4438 '_PVT');
4439 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4440 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4441 l_api_name,
4442 G_PKG_NAME,
4443 'OKL_API.G_RET_STS_UNEXP_ERROR',
4444 x_msg_count,
4445 x_msg_data,
4446 '_PVT');
4447 WHEN OTHERS THEN
4448 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4449 l_api_name,
4450 G_PKG_NAME,
4451 'OTHERS',
4452 x_msg_count,
4453 x_msg_data,
4454 '_PVT');
4455 END Asset_Not_Srlz_Halt;
4456 --------------------------------------------------------------------------------
4457 --Start of Comments
4458 --Bug # 2726870 : 11.5.9 enhancement for splitting assets by serial number
4459 --API Name : Item_Not_Srlz_Halt
4460 -- (Stop_if_Asset_Not_Serialized)
4461 --Description : API to be clled from UI - will raise Error if Asset not serialized
4462 --History : 03-Nov-2002 avsingh Creation (for asset split by serial numbers)
4463 --End of comments
4464 --------------------------------------------------------------------------------
4465 PROCEDURE Item_Not_Srlz_Halt(p_api_version IN NUMBER,
4466 p_init_msg_list IN VARCHAR2,
4467 x_return_status OUT NOCOPY VARCHAR2,
4468 x_msg_count OUT NOCOPY NUMBER,
4469 x_msg_data OUT NOCOPY VARCHAR2,
4470 p_inv_item_id IN NUMBER,
4471 p_chr_id IN NUMBER,
4472 p_cle_id IN NUMBER,
4473 x_serialized OUT NOCOPY VARCHAR2) IS
4474 l_api_version CONSTANT NUMBER := 1.0;
4475 l_api_name VARCHAR2(30) := 'ITEM_NOT_SRLZ_HALT';
4476
4477 l_serialized VARCHAR2(1) DEFAULT OKL_API.G_FALSE;
4478 BEGIN
4479 -----
4480 x_return_status := OKL_API.START_ACTIVITY (
4481 l_api_name
4482 ,p_init_msg_list
4483 ,'_PVT'
4484 ,x_return_status);
4485 -- Check if activity started successfully
4486 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4487 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4488 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4489 RAISE OKL_API.G_EXCEPTION_ERROR;
4490 END IF;
4491
4492 l_serialized := OKL_API.G_FALSE;
4493 x_serialized := l_serialized;
4494 Is_Inv_Item_Serialized(p_api_version => p_api_version,
4495 p_init_msg_list => p_init_msg_list,
4496 x_return_status => x_return_status,
4497 x_msg_count => x_msg_count,
4498 x_msg_data => x_msg_data,
4499 p_inv_item_id => p_inv_item_id,
4500 p_chr_id => p_chr_id,
4501 p_cle_id => p_cle_id,
4502 x_serialized => l_serialized);
4503
4504 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4505 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4506 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4507 RAISE OKL_API.G_EXCEPTION_ERROR;
4508 END IF;
4509 x_serialized := l_serialized;
4510 IF l_serialized = OKL_API.G_FALSE THEN
4511 OKL_API.set_message(p_app_name => G_APP_NAME,
4512 p_msg_name => G_ASSET_NOT_SERIALIZED);
4513 x_return_status := OKL_API.G_RET_STS_ERROR;
4514 END IF;
4515
4516 OKL_API.END_ACTIVITY (x_msg_count,
4517 x_msg_data );
4518 EXCEPTION
4519 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4520 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4521 l_api_name,
4522 G_PKG_NAME,
4523 'OKL_API.G_RET_STS_ERROR',
4524 x_msg_count,
4525 x_msg_data,
4526 '_PVT');
4527 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4528 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4529 l_api_name,
4530 G_PKG_NAME,
4531 'OKL_API.G_RET_STS_UNEXP_ERROR',
4532 x_msg_count,
4533 x_msg_data,
4534 '_PVT');
4535 WHEN OTHERS THEN
4536 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4537 l_api_name,
4538 G_PKG_NAME,
4539 'OTHERS',
4540 x_msg_count,
4541 x_msg_data,
4542 '_PVT');
4543 END Item_Not_Srlz_Halt;
4544 --------------------------------------------------------------------------------
4545 --Start of Comments
4546 --Bug # 2726870 : 11.5.9 enhancement for splitting assets by serial number
4547 --API Name : Validate_Serial_Number
4548 --Description : LOCAL API will validate serial number
4549 --History : 03-Nov-2002 avsingh Creation (for asset split by serial numbers)
4550 --End of comments
4551 --------------------------------------------------------------------------------
4552 PROCEDURE Validate_Serial_Number(x_return_status OUT nocopy VARCHAR2,
4553 p_serial_number IN VARCHAR2) IS
4554 l_serial_number okl_txl_itm_insts.serial_number%TYPE;
4555
4556 --Cursor to find existence
4557 CURSOR srl_num_csr (Srl_Number IN VARCHAR2) IS
4558 SELECT serial_number
4559 FROM csi_item_instances
4560 WHERE serial_number = Srl_Number;
4561
4562 l_csi_srl_number csi_item_instances.serial_number%TYPE DEFAULT NULL;
4563
4564 BEGIN
4565 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4566 l_serial_number := p_serial_number;
4567 IF l_serial_number IS NULL OR l_serial_number = OKL_API.G_MISS_CHAR THEN
4568 -- store SQL error message on message stack
4569 OKL_API.set_message(p_app_name => G_APP_NAME,
4570 p_msg_name => G_NO_MATCHING_RECORD,
4571 p_token1 => G_COL_NAME_TOKEN,
4572 p_token1_value => 'serial_number');
4573 x_return_status := OKL_API.G_RET_STS_ERROR;
4574 ELSE
4575 l_csi_srl_number := NULL;
4576 OPEN srl_num_csr (Srl_Number => l_serial_number);
4577 FETCH srl_num_csr INTO l_csi_srl_number;
4578 IF srl_num_csr%NOTFOUND THEN
4579 NULL;
4580 END IF;
4581 CLOSE srl_num_csr;
4582
4583 IF l_csi_srl_number IS NOT NULL
4584 AND l_csi_srl_number = l_serial_number THEN
4585 OKL_API.Set_Message(p_app_name => G_APP_NAME,
4586 p_msg_name => G_SRL_NUM_DUPLICATE,
4587 p_token1 => G_COL_NAME_TOKEN,
4588 p_token1_value => l_serial_number);
4589 x_return_status := OKL_API.G_RET_STS_ERROR;
4590 END IF;
4591 END IF;
4592 EXCEPTION
4593 WHEN OTHERS THEN
4594 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
4595 END Validate_Serial_Number;
4596 ---------------------------------------------------------------------------------------------------------------
4597 FUNCTION generate_instance_number_ib(x_instance_number_ib OUT NOCOPY OKL_TXL_ITM_INSTS_V.INSTANCE_NUMBER_IB%TYPE)
4598 RETURN VARCHAR2 IS
4599 x_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
4600 -- cursor to get sequence number for asset number
4601 CURSOR c_instance_no_ib IS
4602 SELECT TO_CHAR(OKL_IBN_SEQ.NEXTVAL)
4603 FROM dual;
4604 BEGIN
4605 OPEN c_instance_no_ib;
4606 FETCH c_instance_no_ib INTO x_instance_number_ib;
4607 IF (c_instance_no_ib%NOTFOUND) THEN
4608 x_return_status := OKC_API.G_RET_STS_ERROR;
4609 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
4610 p_msg_name => g_unexpected_error,
4611 p_token1 => g_sqlcode_token,
4612 p_token1_value => SQLCODE,
4613 p_token2 => g_sqlerrm_token,
4614 p_token2_value => SQLERRM);
4615 END IF;
4616 CLOSE c_instance_no_ib;
4617 RETURN x_return_status;
4618 EXCEPTION
4619 WHEN OTHERS THEN
4620 IF c_instance_no_ib%ISOPEN THEN
4621 CLOSE c_instance_no_ib;
4622 END IF;
4623 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
4624 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
4625 p_msg_name => g_unexpected_error,
4626 p_token1 => g_sqlcode_token,
4627 p_token1_value => SQLCODE,
4628 p_token2 => g_sqlerrm_token,
4629 p_token2_value => SQLERRM);
4630 RETURN x_return_status;
4631 END generate_instance_number_ib;
4632 --------------------------------------------------------------------------------
4633 --Start of Comments
4634 --Bug # 2726870: 11.5.9 enhancement for splitting assets by serial number
4635 --API Name : create_split_comp_srl_num
4636 --Description : API will create serial_number records in OKL_TXL_ITM_INSTS_V
4637 -- If financial asset inventory item is serialized for a split asset
4638 -- component
4639 --History : 03-Nov-2002 avsingh Creation (for asset split by serial numbers)
4640 -- Bug# 7047938
4641 -- 17-May-2008 avsingh After OA migration tal_id is not being
4642 -- passed from the UI as part of the input
4643 -- record. Added l_tal_csr to fetch it based
4644 -- on asd id
4645 --End of comments
4646 --------------------------------------------------------------------------------
4647 PROCEDURE create_split_comp_srl_num(p_api_version IN NUMBER,
4648 p_init_msg_list IN VARCHAR2,
4649 x_return_status OUT NOCOPY VARCHAR2,
4650 x_msg_count OUT NOCOPY NUMBER,
4651 x_msg_data OUT NOCOPY VARCHAR2,
4652 p_itiv_tbl IN itiv_tbl_type,
4653 x_itiv_tbl OUT NOCOPY itiv_tbl_type) IS
4654
4655 l_api_name VARCHAR2(30) := 'CREATE_SPLIT_COMP_SRL_NUM';
4656 l_api_version CONSTANT NUMBER := 1.0;
4657
4658 --Cursor to get inventory organization ids
4659 CURSOR inv_org_csr (p_tal_id IN NUMBER, p_asd_id IN NUMBER) IS
4660 SELECT mp.master_organization_id,
4661 chrb.inv_organization_id,
4662 txdb.inventory_item_id
4663 FROM mtl_parameters mp,
4664 okc_k_headers_b chrb,
4665 okc_k_lines_b cleb,
4666 okl_txl_Assets_b txlb,
4667 okl_txd_assets_b txdb
4668 WHERE mp.organization_id = chrb.inv_organization_id
4669 AND chrb.id = cleb.dnz_chr_id
4670 AND cleb.id = txlb.kle_id
4671 AND txlb.id = p_tal_id
4672 AND txdb.id = p_asd_id;
4673
4674 l_mast_org_id mtl_parameters.master_organization_id%TYPE;
4675 l_inv_org_id okc_k_headers_b.inv_organization_id%TYPE;
4676 l_inv_item_id okl_txd_assets_b.inventory_item_id%TYPE;
4677
4678 --Cursor to get location of parent instance from IB
4679 CURSOR ib_loc_csr (p_tal_id IN NUMBER) IS
4680 SELECT txlb.kle_id fa_cle_id,
4681 ib_cle.id ib_cle_id,
4682 txlb.tas_id,
4683 csi.location_id, --hz_locations
4684 csi.install_location_id,
4685 --Bug# 3569441
4686 csi.install_location_type_code, --hz_party_sites, hz_locations
4687 csi.instance_number
4688 FROM csi_item_instances csi,
4689 csi_instance_statuses csi_inst_sts,
4690 okc_k_items ib_cim,
4691 okc_k_lines_b ib_cle,
4692 okc_line_styles_b ib_lse,
4693 okc_k_lines_b inst_cle,
4694 okc_line_styles_b inst_lse,
4695 okc_statuses_b inst_sts,
4696 okc_k_lines_b fa_cle,
4697 okc_line_styles_b fa_lse,
4698 okl_txl_assets_b txlb
4699 WHERE csi.instance_id = TO_NUMBER(ib_cim.object1_id1)
4700 AND csi_inst_sts.instance_status_id = csi.instance_status_id
4701 AND NVL(csi_inst_sts.terminated_flag,'N') = 'N'
4702 AND ib_cim.cle_id = ib_cle.id
4703 AND ib_cim.dnz_chr_id = ib_cle.dnz_chr_id
4704 AND ib_cle.cle_id = inst_cle.id
4705 AND ib_cle.dnz_chr_id = inst_cle.dnz_chr_id
4706 AND ib_cle.lse_id = ib_lse.id
4707 AND ib_lse.lty_code = 'INST_ITEM'
4708 AND inst_cle.cle_id = fa_cle.cle_id
4709 AND inst_cle.dnz_chr_id = fa_cle.dnz_chr_id
4710 AND inst_cle.lse_id = inst_lse.id
4711 AND inst_lse.lty_code = 'FREE_FORM2'
4712 AND inst_sts.code = inst_cle.sts_code
4713 AND INST_STS.STE_CODE NOT IN ('HOLD', 'EXPIRED', 'TERMINATED', 'CANCELLED')
4714 AND fa_cle.id = txlb.kle_id
4715 AND fa_cle.lse_id = fa_lse.id
4716 AND fa_lse.lty_code = 'FIXED_ASSET'
4717 AND txlb.id = p_tal_id;
4718
4719 l_fa_cle_id okc_k_lines_b.id%TYPE;
4720 l_ib_cle_id okc_k_lines_b.id%TYPE;
4721 l_tas_id okl_txl_assets_b.tas_id%TYPE;
4722 l_location_id csi_item_instances.location_id%TYPE;
4723 l_install_location_id csi_item_instances.install_location_id%TYPE;
4724 --BUG# 3569441
4725 l_location_type_code csi_item_instances.install_location_type_code%TYPE;
4726 l_instance_number_csi csi_item_instances.instance_number%TYPE;
4727
4728 --Cursor to get install site use id
4729 CURSOR inst_site_csr (pty_site_id IN NUMBER) IS
4730 SELECT TO_CHAR(Party_site_use_id) party_site_use_id
4731 FROM hz_party_site_uses
4732 WHERE party_site_id = pty_site_id
4733 AND site_use_type = 'INSTALL_AT';
4734
4735
4736 --BUG# 3569441
4737 CURSOR inst_loc_csr (loc_id IN NUMBER) IS
4738 SELECT TO_CHAR(psu.party_site_use_id) party_site_use_id
4739 FROM hz_party_site_uses psu,
4740 hz_party_sites ps
4741 WHERE psu.party_site_id = ps.party_site_id
4742 AND psu.site_use_type = 'INSTALL_AT'
4743 AND ps.location_id = loc_id;
4744
4745 --Cursor to get address for error
4746 CURSOR l_address_csr (pty_site_id IN NUMBER ) IS
4747 SELECT SUBSTR(arp_addr_label_pkg.format_address(NULL,hl.address1,hl.address2,hl.address3, hl.address4,hl.city,hl.county,hl.state,hl.province,hl.postal_code,NULL,hl.country,NULL, NULL,NULL,NULL,NULL,NULL,NULL,'n','n',80,1,1),1,80)
4748 FROM hz_locations hl,
4749 hz_party_sites ps
4750 WHERE hl.location_id = ps.location_id
4751 AND ps.party_site_id = pty_site_id;
4752
4753 CURSOR l_address_csr2 (loc_id IN NUMBER) IS
4754 SELECT SUBSTR(arp_addr_label_pkg.format_address(NULL,hl.address1,hl.address2,hl.address3, hl.address4,hl.city,hl.county,hl.state,hl.province,hl.postal_code,NULL,hl.country,NULL, NULL,NULL,NULL,NULL,NULL,NULL,'n','n',80,1,1),1,80)
4755 FROM hz_locations hl
4756 WHERE hl.location_id = loc_id;
4757
4758 l_address VARCHAR2(80);
4759 --END BUG# 3569441
4760
4761 l_party_site_use_id okl_txl_itm_insts.object_id1_new%TYPE;
4762 l_itiv_tbl itiv_tbl_type;
4763 l_itiv_rec itiv_rec_type;
4764 lx_itiv_rec itiv_rec_type;
4765 i NUMBER;
4766 j NUMBER;
4767 l_instance_number OKL_TXL_ITM_INSTS.instance_number_ib%TYPE;
4768
4769 --Bug # 7047938
4770 cursor l_tal_csr (p_asd_id in number) is
4771 select tal_id
4772 from okl_txd_assets_b
4773 where id = p_asd_id;
4774
4775 l_tal_id okl_txd_assets_b.tal_id%TYPE;
4776 --Bug 7047938 End
4777 BEGIN
4778 ----
4779 x_return_status := OKL_API.START_ACTIVITY (
4780 l_api_name
4781 ,p_init_msg_list
4782 ,'_PVT'
4783 ,x_return_status);
4784 -- Check if activity started successfully
4785 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4786 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4787 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4788 RAISE OKL_API.G_EXCEPTION_ERROR;
4789 END IF;
4790
4791 l_itiv_tbl := p_itiv_tbl;
4792 IF l_itiv_tbl.COUNT > 0 THEN
4793 --Bug # 7047938
4794 If l_itiv_tbl(1).tal_id is NULL OR l_itiv_tbl(1).tal_id = OKL_API.G_MISS_NUM
4795 then
4796 open l_tal_csr (p_asd_id => l_itiv_tbl(1).asd_id);
4797 Fetch l_tal_csr into l_tal_id;
4798 close l_tal_csr;
4799 for j in l_itiv_tbl.FIRST..l_itiv_tbl.LAST
4800 LOOP
4801 l_itiv_tbl(j).tal_id := l_tal_id;
4802 END LOOP;
4803 End If;
4804 --Bug # 7047938 End
4805 --get inv org id
4806 OPEN inv_org_csr (p_tal_id => l_itiv_tbl(1).tal_id,
4807 p_asd_id => l_itiv_tbl(1).asd_id);
4808 FETCH inv_org_csr INTO
4809 l_mast_org_id,
4810 l_inv_org_id,
4811 l_inv_item_id;
4812 IF inv_org_csr%NOTFOUND THEN
4813 NULL; --this is not feasible
4814 END IF;
4815 CLOSE inv_org_csr;
4816
4817 --get locations
4818 OPEN ib_loc_csr (p_tal_id => l_itiv_tbl(1).tal_id);
4819 FETCH ib_loc_csr INTO
4820 l_fa_cle_id,
4821 l_ib_cle_id,
4822 l_tas_id,
4823 l_location_id,
4824 l_install_location_id,
4825 --Bug# 3569441
4826 l_location_type_code,
4827 l_instance_number_csi;
4828 IF ib_loc_csr%NOTFOUND THEN
4829 NULL; -- should not happen
4830 END IF;
4831 CLOSE ib_loc_csr;
4832
4833 --BUG# 3569441
4834 IF NVL(l_location_type_code,OKL_API.G_MISS_CHAR) NOT IN ('HZ_LOCATIONS','HZ_PARTY_SITES') THEN
4835 --RAISE ERROR
4836 OKL_API.Set_Message(p_app_name => G_APP_NAME,
4837 p_msg_name => G_INVALID_INSTALL_LOC_TYPE,
4838 p_token1 => G_LOCATION_TYPE_TOKEN,
4839 p_token1_value => l_location_type_code,
4840 p_token2 => G_LOC_TYPE1_TOKEN,
4841 p_token2_value => 'HZ_PARTY_SITES',
4842 p_token3 => G_LOC_TYPE2_TOKEN,
4843 p_token3_value => 'HZ_LOCATIONS');
4844 x_return_status := OKL_API.G_RET_STS_ERROR;
4845 RAISE OKL_API.G_EXCEPTION_ERROR;
4846
4847 ELSIF NVL(l_location_type_code,OKL_API.G_MISS_CHAR) = 'HZ_PARTY_SITES' THEN
4848
4849 --get site use id
4850 OPEN inst_site_csr(pty_site_id => l_install_location_id);
4851 FETCH inst_site_csr INTO l_party_site_use_id;
4852 IF inst_site_csr%NOTFOUND THEN
4853 OPEN l_address_csr(pty_site_id => l_install_location_id);
4854 FETCH l_address_csr INTO l_address;
4855 CLOSE l_address_csr;
4856 --Raise Error : not defined as install_at
4857 OKL_API.Set_Message(p_app_name => G_APP_NAME,
4858 p_msg_name => G_MISSING_USAGE,
4859 p_token1 => G_USAGE_TYPE_TOKEN,
4860 p_token1_value => 'INSTALL_AT',
4861 p_token2 => G_ADDRESS_TOKEN,
4862 p_token2_value => l_address,
4863 p_token3 => G_INSTANCE_NUMBER_TOKEN,
4864 p_token3_value => l_instance_number_csi);
4865 x_return_status := OKL_API.G_RET_STS_ERROR;
4866 RAISE OKL_API.G_EXCEPTION_ERROR;
4867 END IF;
4868 CLOSE inst_site_csr;
4869
4870 ELSIF NVL(l_location_type_code,OKL_API.G_MISS_CHAR) = 'HZ_LOCATIONS' THEN
4871
4872 --get site use id
4873 OPEN inst_loc_csr(loc_id => l_install_location_id);
4874 FETCH inst_loc_csr INTO l_party_site_use_id;
4875 IF inst_loc_csr%NOTFOUND THEN
4876 OPEN l_address_csr2(loc_id => l_install_location_id);
4877 FETCH l_address_csr2 INTO l_address;
4878 CLOSE l_address_csr2;
4879 --Raise Error : not defined as install_at
4880 OKL_API.Set_Message(p_app_name => G_APP_NAME,
4881 p_msg_name => G_MISSING_USAGE,
4882 p_token1 => G_USAGE_TYPE_TOKEN,
4883 p_token1_value => 'INSTALL_AT',
4884 p_token2 => G_ADDRESS_TOKEN,
4885 p_token2_value => l_address,
4886 p_token3 => G_INSTANCE_NUMBER_TOKEN,
4887 p_token3_value => l_instance_number_csi);
4888 x_return_status := OKL_API.G_RET_STS_ERROR;
4889 RAISE OKL_API.G_EXCEPTION_ERROR;
4890 END IF;
4891 CLOSE inst_loc_csr;
4892 END IF;
4893 --End BUG# 3569441
4894
4895 j := 1;
4896 FOR i IN 1..l_itiv_tbl.LAST LOOP
4897 IF l_itiv_tbl(i).id IS NULL OR l_itiv_tbl(i).id = OKL_API.G_MISS_NUM THEN
4898
4899 l_itiv_rec := l_itiv_tbl(i);
4900 --l_itiv_rec.kle_id := l_ib_cle_id;
4901 l_itiv_rec.kle_id := l_fa_cle_id;
4902 l_itiv_rec.tal_type := 'ALI';
4903 l_itiv_rec.tas_id := l_tas_id;
4904 l_itiv_rec.line_number := i;
4905 l_itiv_rec.object_id1_new := l_party_site_use_id;
4906 l_itiv_rec.object_id2_new := '#';
4907 l_itiv_rec.jtot_object_code_new := 'OKX_PARTSITE';
4908 l_itiv_rec.object_id1_old := l_party_site_use_id;
4909 l_itiv_rec.object_id2_old := '#';
4910 l_itiv_rec.jtot_object_code_old := 'OKX_PARTSITE';
4911 l_itiv_rec.inventory_org_id := l_inv_org_id;
4912 l_itiv_rec.mfg_serial_number_yn := 'N';
4913 l_itiv_rec.inventory_item_id := l_inv_item_id;
4914 l_itiv_rec.inv_master_org_id := l_mast_org_id;
4915 l_itiv_rec.selected_for_split_flag := 'Y';
4916
4917
4918 Validate_Serial_Number(x_return_status => x_return_status,
4919 p_serial_number => l_itiv_rec.serial_number);
4920 IF x_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
4921 RAISE OKL_API.G_EXCEPTION_ERROR;
4922 END IF;
4923
4924 x_return_status := generate_instance_number_ib(x_instance_number_ib => l_instance_number);
4925 IF x_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
4926 RAISE OKL_API.G_EXCEPTION_ERROR;
4927 END IF;
4928 l_itiv_rec.instance_number_ib := l_instance_number;
4929 --create record
4930 okl_txl_itm_insts_pub.create_txl_itm_insts
4931 (p_api_version => p_api_version,
4932 p_init_msg_list => p_init_msg_list,
4933 x_return_status => x_return_status,
4934 x_msg_count => x_msg_count,
4935 x_msg_data => x_msg_data,
4936 p_iipv_rec => l_itiv_rec,
4937 x_iipv_rec => lx_itiv_rec);
4938 IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
4939 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4940 ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
4941 RAISE OKL_API.G_EXCEPTION_ERROR;
4942 END IF;
4943 j:= j+1;
4944 x_itiv_tbl(j) := lx_itiv_rec;
4945 END IF;
4946 END LOOP;
4947 END IF;
4948 OKL_API.END_ACTIVITY (x_msg_count,
4949 x_msg_data );
4950 EXCEPTION
4951 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4952 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4953 l_api_name,
4954 G_PKG_NAME,
4955 'OKL_API.G_RET_STS_ERROR',
4956 x_msg_count,
4957 x_msg_data,
4958 '_PVT');
4959 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4960 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4961 l_api_name,
4962 G_PKG_NAME,
4963 'OKL_API.G_RET_STS_UNEXP_ERROR',
4964 x_msg_count,
4965 x_msg_data,
4966 '_PVT');
4967 WHEN OTHERS THEN
4968 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4969 l_api_name,
4970 G_PKG_NAME,
4971 'OTHERS',
4972 x_msg_count,
4973 x_msg_data,
4974 '_PVT');
4975 END create_split_comp_srl_num;
4976 --Bug#3222804 - serial number control based on setup in leasing inv org
4977 --------------------------------------------------------------------------------
4978 --Start of Comments
4979 --API Name : validate_srl_num_control
4980 --Description : Local API to validate whether serial # control code is in sync with
4981 -- existing serial numbers in Install Base.
4982 --History : 20-Nov-2003 avsingh Creation
4983 --End of comments
4984 --------------------------------------------------------------------------------
4985 PROCEDURE validate_srl_num_control(p_api_version IN NUMBER,
4986 p_init_msg_list IN VARCHAR2,
4987 x_return_status OUT NOCOPY VARCHAR2,
4988 x_msg_count OUT NOCOPY NUMBER,
4989 x_msg_data OUT NOCOPY VARCHAR2,
4990 p_cle_id IN NUMBER,
4991 p_split_into_individuals_yn IN VARCHAR2,
4992 p_split_into_units IN NUMBER,
4993 p_tal_id IN NUMBER) IS
4994
4995 l_api_name VARCHAR2(30) := 'VALIDATE_SRL_NUM_CONTROL';
4996 l_api_version CONSTANT NUMBER := 1.0;
4997
4998 l_serialized VARCHAR2(1) DEFAULT OKL_API.G_FALSE;
4999
5000 --cursor for asset_number
5001 CURSOR asset_num_csr (P_fin_ast_id IN NUMBER) IS
5002 SELECT name
5003 FROM okc_k_lines_tl
5004 WHERE id = p_fin_ast_id;
5005
5006 l_asset_number OKC_K_LINES_TL.NAME%TYPE;
5007
5008 --Bug# 3222804 : serial # control based on leasing inv org setup
5009 --cursor to find serialized item instances in installed base
5010 CURSOR l_srl_no_count_csr(fin_ast_id IN NUMBER) IS
5011 SELECT
5012 COUNT(1)
5013 FROM csi_item_instances csi,
5014 okc_k_items ib_cim,
5015 okc_k_lines_b ib_cle,
5016 okc_line_styles_b ib_lse,
5017 okc_k_lines_b inst_cle,
5018 okc_line_styles_b inst_lse,
5019 okc_statuses_b inst_sts
5020 WHERE csi.instance_id = TO_NUMBER(ib_cim.object1_id1)
5021 AND ib_cim.cle_id = ib_cle.id
5022 AND ib_cim.dnz_chr_id = ib_cle.dnz_chr_id
5023 AND ib_cle.cle_id = inst_cle.id
5024 AND ib_cle.dnz_chr_id = inst_cle.dnz_chr_id
5025 AND ib_cle.lse_id = ib_lse.id
5026 AND ib_lse.lty_code = 'INST_ITEM'
5027 AND inst_cle.cle_id = fin_ast_id
5028 AND inst_cle.lse_id = inst_lse.id
5029 AND inst_lse.lty_code = 'FREE_FORM2'
5030 AND inst_sts.code = inst_cle.sts_code
5031 --Bug# 5946411: ER
5032 --AND INST_STS.STE_CODE NOT IN ('HOLD', 'EXPIRED', 'TERMINATED', 'CANCELLED');
5033 AND INST_STS.STE_CODE NOT IN ('HOLD', 'CANCELLED');
5034 --Bug# 5946411: ER end
5035
5036 l_srl_no_count NUMBER DEFAULT 0;
5037
5038 --cursor to get txl quantity
5039 CURSOR l_txlqty_csr (p_tal_id IN NUMBER) IS
5040 SELECT txl.current_units
5041 FROM okl_txl_assets_b txl
5042 WHERE id = p_tal_id;
5043
5044 l_txlqty NUMBER DEFAULT NULL;
5045
5046 BEGIN
5047
5048 x_return_status := OKL_API.G_RET_STS_SUCCESS;
5049
5050 -- Call start_activity to create savepoint, check compatibility
5051 -- and initialize message list
5052 x_return_status := OKL_API.START_ACTIVITY (
5053 l_api_name
5054 ,p_init_msg_list
5055 ,'_PVT'
5056 ,x_return_status);
5057 -- Check if activity started successfully
5058 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5059 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5060 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5061 RAISE OKL_API.G_EXCEPTION_ERROR;
5062 END IF;
5063
5064 IF (NVL(p_split_into_individuals_yn,'N') = 'Y')
5065 OR
5066 (NVL(p_split_into_individuals_yn,'N') = 'N' AND NVL(p_split_into_units,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM) THEN
5067 --check if serialization has been done properly
5068 l_txlqty := NULL;
5069 OPEN l_txlqty_csr(p_tal_id => p_tal_id);
5070 FETCH l_txlqty_csr INTO l_txlqty;
5071 IF l_txlqty_csr%NOTFOUND THEN
5072 NULL;
5073 END IF;
5074 CLOSE l_txlqty_csr;
5075 IF NVL(l_txlqty,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM THEN
5076
5077 l_serialized := Is_Serialized(p_cle_id => p_cle_id);
5078 IF (l_serialized = OKL_API.G_TRUE) THEN
5079 --fetch total instances to find if qantity matches
5080
5081 l_srl_no_count := 0;
5082 OPEN l_srl_no_count_csr( fin_ast_id => p_cle_id);
5083 FETCH l_srl_no_count_csr INTO l_srl_no_count;
5084 IF l_srl_no_count_csr%NOTFOUND THEN
5085 NULL;
5086 END IF;
5087 CLOSE l_srl_no_count_csr;
5088
5089 IF l_srl_no_count = 1 AND l_txlqty <> 1 THEN
5090
5091 l_asset_number := NULL;
5092 OPEN asset_num_csr(p_fin_ast_id => p_cle_id);
5093 FETCH asset_num_csr INTO l_asset_number;
5094 IF asset_num_csr%NOTFOUND THEN
5095 NULL;
5096 END IF;
5097 CLOSE asset_num_csr;
5098
5099 OKL_API.set_message(p_app_name => G_APP_NAME,
5100 p_msg_name => G_NOT_SERIALIZED_IN_IB,
5101 p_token1 => G_ASSET_NUMBER_TOKEN,
5102 p_token1_value => l_Asset_number
5103 );
5104 --raise error
5105 RAISE OKL_API.G_EXCEPTION_ERROR;
5106
5107 ELSIF l_srl_no_count <> l_txlqty THEN
5108
5109 l_asset_number := NULL;
5110 OPEN asset_num_csr(p_fin_ast_id => p_cle_id);
5111 FETCH asset_num_csr INTO l_asset_number;
5112 IF asset_num_csr%NOTFOUND THEN
5113 NULL;
5114 END IF;
5115 CLOSE asset_num_csr;
5116
5117
5118 OKL_API.set_message(p_app_name => G_APP_NAME,
5119 p_msg_name => G_SERIAL_NUMBER_MISMATCH,
5120 p_token1 => G_ASSET_NUMBER_TOKEN,
5121 p_token1_value => l_Asset_number
5122 );
5123 --raise error
5124 RAISE OKL_API.G_EXCEPTION_ERROR;
5125
5126 ELSIF l_srl_no_count = l_txlqty THEN
5127 --data in installed base is correct
5128 NULL;
5129 END IF;
5130
5131 ELSIF l_serialized = OKL_API.G_FALSE THEN
5132 --fetch total instances to find if qantity matches
5133
5134 l_srl_no_count := 0;
5135 OPEN l_srl_no_count_csr( fin_ast_id => p_cle_id);
5136 FETCH l_srl_no_count_csr INTO l_srl_no_count;
5137 IF l_srl_no_count_csr%NOTFOUND THEN
5138 NULL;
5139 END IF;
5140 CLOSE l_srl_no_count_csr;
5141
5142 IF l_srl_no_count <> 1 AND l_srl_no_count = l_txlqty THEN
5143 --error asset is serilized in Installed Base
5144 l_asset_number := NULL;
5145 OPEN asset_num_csr(p_fin_ast_id => p_cle_id);
5146 FETCH asset_num_csr INTO l_asset_number;
5147 IF asset_num_csr%NOTFOUND THEN
5148 NULL;
5149 END IF;
5150 CLOSE asset_num_csr;
5151
5152 OKL_API.set_message(p_app_name => G_APP_NAME,
5153 p_msg_name => G_SERIALIZED_IN_IB,
5154 p_token1 => G_ASSET_NUMBER_TOKEN,
5155 p_token1_value => l_Asset_number
5156 );
5157 --raise error
5158 RAISE OKL_API.G_EXCEPTION_ERROR;
5159
5160 ELSIF l_srl_no_count <> 1 AND l_srl_no_count <> l_txlqty THEN
5161 --error in installed base data
5162 l_asset_number := NULL;
5163 OPEN asset_num_csr(p_fin_ast_id => p_cle_id);
5164 FETCH asset_num_csr INTO l_asset_number;
5165 IF asset_num_csr%NOTFOUND THEN
5166 NULL;
5167 END IF;
5168
5169 OKL_API.set_message(p_app_name => G_APP_NAME,
5170 p_msg_name => G_SERIAL_NUMBER_MISMATCH,
5171 p_token1 => G_ASSET_NUMBER_TOKEN,
5172 p_token1_value => l_Asset_number
5173 );
5174 --raise error
5175 RAISE OKL_API.G_EXCEPTION_ERROR;
5176
5177 ELSIF l_srl_no_count = 1 THEN
5178 --data in installed base is correct
5179 NULL;
5180 END IF;
5181 END IF;
5182 END IF;
5183
5184 ELSIF NVL(p_split_into_individuals_yn,'N') = 'X' THEN
5185 NULL; -- user will have to create new serail numbers
5186 END IF;
5187 OKL_API.END_ACTIVITY (x_msg_count,
5188 x_msg_data );
5189 EXCEPTION
5190 WHEN OKL_API.G_EXCEPTION_ERROR THEN
5191 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5192 l_api_name,
5193 G_PKG_NAME,
5194 'OKL_API.G_RET_STS_ERROR',
5195 x_msg_count,
5196 x_msg_data,
5197 '_PVT');
5198 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5199 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5200 l_api_name,
5201 G_PKG_NAME,
5202 'OKL_API.G_RET_STS_UNEXP_ERROR',
5203 x_msg_count,
5204 x_msg_data,
5205 '_PVT');
5206 WHEN OTHERS THEN
5207 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5208 l_api_name,
5209 G_PKG_NAME,
5210 'OTHERS',
5211 x_msg_count,
5212 x_msg_data,
5213 '_PVT');
5214 END validate_srl_num_control;
5215 --End Bug# 3222804 : serial number control setup in Leasing Inv Org
5216 --------------------------------------------------------------------------------
5217 --Start of Comments
5218 --Bug #2723498 : 11.5.9 enhancement for splitting assets by serial number
5219 --API Name : create_srl_num_trx
5220 --Description : Local API will create serial_number records in OKL_TXL_ITM_INSTS_V
5221 -- If financial asset inventory item is serialized
5222 --History : 03-Nov-2002 avsingh Creation (for asset split by serial numbers)
5223 --End of comments
5224 --------------------------------------------------------------------------------
5225 PROCEDURE create_srl_num_trx(p_api_version IN NUMBER,
5226 p_init_msg_list IN VARCHAR2,
5227 x_return_status OUT NOCOPY VARCHAR2,
5228 x_msg_count OUT NOCOPY NUMBER,
5229 x_msg_data OUT NOCOPY VARCHAR2,
5230 p_cle_id IN NUMBER,
5231 p_split_into_individuals_yn IN VARCHAR2,
5232 p_split_into_units IN NUMBER,
5233 p_ib_tbl IN ib_tbl_type,
5234 p_tas_id IN NUMBER,
5235 p_tal_id IN NUMBER,
5236 p_asd_id IN NUMBER) IS
5237
5238 l_api_name VARCHAR2(30) := 'CREATE_SRL_NUM_TRX';
5239 l_api_version CONSTANT NUMBER := 1.0;
5240
5241
5242 --Cursor to get all the serial numbers
5243 CURSOR srl_num_csr(fin_ast_id IN NUMBER) IS
5244 SELECT ib_cle.id ib_cle_id,
5245 csi.instance_id,
5246 csi.serial_number,
5247 csi.instance_number,
5248 csi.inv_organization_id,
5249 csi.inventory_item_id,
5250 csi.inv_master_organization_id,
5251 csi.unit_of_measure,
5252 csi.quantity,
5253 csi.instance_status_id,
5254 csi.location_id, --hz_locations
5255 csi.install_location_id,
5256 --BUG# 3569441
5257 csi.install_location_type_code --hz_party_sites OR hz_loactions
5258 FROM csi_item_instances csi,
5259 okc_k_items ib_cim,
5260 okc_k_lines_b ib_cle,
5261 okc_line_styles_b ib_lse,
5262 okc_k_lines_b inst_cle,
5263 okc_line_styles_b inst_lse,
5264 okc_statuses_b inst_sts
5265 WHERE csi.instance_id = TO_NUMBER(ib_cim.object1_id1)
5266 AND ib_cim.cle_id = ib_cle.id
5267 AND ib_cim.dnz_chr_id = ib_cle.dnz_chr_id
5268 AND ib_cle.cle_id = inst_cle.id
5269 AND ib_cle.dnz_chr_id = inst_cle.dnz_chr_id
5270 AND ib_cle.lse_id = ib_lse.id
5271 AND ib_lse.lty_code = 'INST_ITEM'
5272 AND inst_cle.cle_id = fin_ast_id
5273 AND inst_cle.lse_id = inst_lse.id
5274 AND inst_lse.lty_code = 'FREE_FORM2'
5275 AND inst_sts.code = inst_cle.sts_code
5276 --Bug# 5946411: ER
5277 --AND INST_STS.STE_CODE NOT IN ('HOLD', 'EXPIRED', 'TERMINATED', 'CANCELLED');
5278 AND INST_STS.STE_CODE NOT IN ('HOLD', 'CANCELLED');
5279 --Bug# 5946411: ER--end
5280
5281
5282 srl_num_rec srl_num_csr%ROWTYPE;
5283
5284 -- Cursor to get all the serial numbers if ib line id table is passed as input
5285 -- This will be done by asset managment during asset level termination
5286 CURSOR srl_num_csr2(fin_ast_id IN NUMBER, p_ib_cle_id IN VARCHAR2) IS
5287 SELECT ib_cle.id ib_cle_id,
5288 csi.instance_id,
5289 csi.serial_number,
5290 csi.instance_number,
5291 csi.inv_organization_id,
5292 csi.inventory_item_id,
5293 csi.inv_master_organization_id,
5294 csi.unit_of_measure,
5295 csi.quantity,
5296 csi.instance_status_id,
5297 csi.location_id, --hz_locations
5298 csi.install_location_id,
5299 --BUG# 3569441
5300 csi.install_location_type_code --hz_party_sites OR hz_locations
5301 FROM csi_item_instances csi,
5302 okc_k_items ib_cim,
5303 okc_k_lines_b ib_cle,
5304 okc_line_styles_b ib_lse,
5305 okc_k_lines_b inst_cle,
5306 okc_line_styles_b inst_lse,
5307 okc_statuses_b inst_sts
5308 WHERE csi.instance_id = TO_NUMBER(ib_cim.object1_id1)
5309 AND ib_cim.cle_id = ib_cle.id
5310 AND ib_cim.dnz_chr_id = ib_cle.dnz_chr_id
5311 AND ib_cle.cle_id = inst_cle.id
5312 AND ib_cle.dnz_chr_id = inst_cle.dnz_chr_id
5313 AND ib_cle.lse_id = ib_lse.id
5314 AND ib_cle.id = p_ib_cle_id
5315 AND ib_lse.lty_code = 'INST_ITEM'
5316 AND inst_cle.cle_id = fin_ast_id
5317 AND inst_cle.lse_id = inst_lse.id
5318 AND inst_lse.lty_code = 'FREE_FORM2'
5319 AND inst_sts.code = inst_cle.sts_code
5320 --Bug# 5946411: ER
5321 --AND INST_STS.STE_CODE NOT IN ('HOLD', 'EXPIRED', 'TERMINATED', 'CANCELLED');
5322 AND INST_STS.STE_CODE NOT IN ('HOLD', 'CANCELLED');
5323 --Bug# 5946411: ER -- End
5324
5325 srl_num_rec2 srl_num_csr2%ROWTYPE;
5326
5327 l_iipv_tbl okl_txl_itm_insts_pub.iipv_tbl_type;
5328 i NUMBER DEFAULT 0;
5329 lx_iipv_tbl okl_txl_itm_insts_pub.iipv_tbl_type;
5330
5331 --Cursor to get install site use id
5332 CURSOR inst_site_csr (pty_site_id IN NUMBER) IS
5333 SELECT TO_CHAR(Party_site_use_id) party_site_use_id
5334 FROM hz_party_site_uses
5335 WHERE party_site_id = pty_site_id
5336 AND site_use_type = 'INSTALL_AT';
5337
5338 --BUG# 3569441
5339 CURSOR inst_loc_csr (loc_id IN NUMBER) IS
5340 SELECT TO_CHAR(psu.party_site_use_id) party_site_use_id
5341 FROM hz_party_site_uses psu,
5342 hz_party_sites ps
5343 WHERE psu.party_site_id = ps.party_site_id
5344 AND psu.site_use_type = 'INSTALL_AT'
5345 AND ps.location_id = loc_id;
5346
5347 CURSOR l_address_csr (pty_site_id IN NUMBER ) IS
5348 SELECT SUBSTR(arp_addr_label_pkg.format_address(NULL,hl.address1,hl.address2,hl.address3, hl.address4,hl.city,hl.county,hl.state,hl.province,hl.postal_code,NULL,hl.country,NULL, NULL,NULL,NULL,NULL,NULL,NULL,'n','n',80,1,1),1,80)
5349 FROM hz_locations hl,
5350 hz_party_sites ps
5351 WHERE hl.location_id = ps.location_id
5352 AND ps.party_site_id = pty_site_id;
5353
5354 CURSOR l_address_csr2 (loc_id IN NUMBER) IS
5355 SELECT SUBSTR(arp_addr_label_pkg.format_address(NULL,hl.address1,hl.address2,hl.address3, hl.address4,hl.city,hl.county,hl.state,hl.province,hl.postal_code,NULL,hl.country,NULL, NULL,NULL,NULL,NULL,NULL,NULL,'n','n',80,1,1),1,80)
5356 FROM hz_locations hl
5357 WHERE hl.location_id = loc_id;
5358
5359 l_address VARCHAR2(80);
5360 --END BUG# 3569441
5361
5362 l_pty_site_use_id okl_txl_itm_insts.object_id1_new%TYPE;
5363 l_error_condition EXCEPTION;
5364
5365 l_ib_tbl ib_tbl_type;
5366 l_serialized VARCHAR2(1) DEFAULT OKL_API.G_FALSE;
5367
5368 --cursor for asset_number
5369 CURSOR asset_num_csr (P_fin_ast_id IN NUMBER) IS
5370 SELECT name
5371 FROM okc_k_lines_tl
5372 WHERE id = p_fin_ast_id;
5373
5374 l_asset_number OKC_K_LINES_TL.NAME%TYPE;
5375
5376 BEGIN
5377 x_return_status := OKL_API.G_RET_STS_SUCCESS;
5378
5379 -- Call start_activity to create savepoint, check compatibility
5380 -- and initialize message list
5381 x_return_status := OKL_API.START_ACTIVITY (
5382 l_api_name
5383 ,p_init_msg_list
5384 ,'_PVT'
5385 ,x_return_status);
5386 -- Check if activity started successfully
5387 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5388 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5389 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5390 RAISE OKL_API.G_EXCEPTION_ERROR;
5391 END IF;
5392
5393 --Bug# 3222804 : Serial number control to be based on leasing inv org setup
5394 validate_srl_num_control(
5395 p_api_version => p_api_version,
5396 p_init_msg_list => p_init_msg_list,
5397 x_return_status => x_return_status,
5398 x_msg_count => x_msg_count,
5399 x_msg_data => x_msg_data,
5400 p_cle_id => p_cle_id,
5401 p_split_into_individuals_yn => p_split_into_individuals_yn,
5402 p_split_into_units => p_split_into_units,
5403 p_tal_id => p_tal_id);
5404
5405 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5406 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5407 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5408 RAISE OKL_API.G_EXCEPTION_ERROR;
5409 END IF;
5410 --Bug# 3222804 : Serial number control to be based on leasing inv org setup
5411
5412 l_ib_tbl := p_ib_tbl;
5413 IF NVL(p_split_into_individuals_yn,'N') = 'Y' THEN
5414 NULL; --no need to create srl num transactions
5415 ELSIF NVL(p_split_into_individuals_yn,'N') = 'X' THEN
5416 NULL; -- user will have to create new serail numbers
5417 ELSIF NVL(p_split_into_individuals_yn,'N') = 'N' AND NVL(p_split_into_units,0) > 0 THEN
5418 --user needs to select serial numbers to split
5419 l_serialized := is_serialized(p_cle_id => p_cle_id);
5420 IF (l_serialized = OKL_API.G_TRUE) THEN
5421 -- asset inventory item is serial number controlled
5422 IF l_ib_tbl.COUNT <> 0 THEN
5423 FOR i IN 1..l_ib_tbl.LAST
5424 LOOP
5425 OPEN srl_num_csr2(fin_Ast_id => p_cle_id, p_ib_cle_id => l_ib_tbl(i).id);
5426 FETCH srl_num_csr2 INTO srl_num_rec2;
5427 IF srl_num_csr2%NOTFOUND THEN
5428 --Serial number does not belong to asset. Please select correct serial number to split.
5429 l_asset_number := NULL;
5430 OPEN asset_num_csr(p_fin_ast_id => p_cle_id);
5431 FETCH asset_num_csr INTO l_asset_number;
5432 IF asset_num_csr%NOTFOUND THEN
5433 NULL;
5434 END IF;
5435 CLOSE asset_num_csr;
5436
5437 OKL_API.set_message(p_app_name => G_APP_NAME,
5438 p_msg_name => G_IB_INSTANCE_MISMATCH,
5439 p_token1 => G_ASSET_NUMBER_TOKEN,
5440 p_token1_value => l_Asset_number,
5441 p_token2 => G_IB_LINE_TOKEN,
5442 p_token2_value => TO_CHAR(l_ib_tbl(i).id));
5443 --raise error
5444 RAISE OKL_API.G_EXCEPTION_ERROR;
5445 END IF;
5446 l_iipv_tbl(i).tas_id := p_tas_id;
5447 l_iipv_tbl(i).tal_id := p_tal_id;
5448 l_iipv_tbl(i).kle_id := srl_num_rec2.ib_cle_id;
5449 l_iipv_tbl(i).tal_type := 'ALI'; -- hardcoded for split asset
5450 l_iipv_tbl(i).line_number := i;
5451 l_iipv_tbl(i).instance_number_ib := srl_num_rec2.instance_number;
5452
5453 --fetch party site use id
5454 l_pty_site_use_id := NULL;
5455 --BUG# 3569441 :
5456 IF NVL(srl_num_rec2.install_location_type_code,OKL_API.G_MISS_CHAR) NOT IN ('HZ_LOCATIONS','HZ_PARTY_SITES') THEN
5457
5458 --Raise Error
5459 OKL_API.Set_Message(p_app_name => G_APP_NAME,
5460 p_msg_name => G_INVALID_INSTALL_LOC_TYPE,
5461 p_token1 => G_LOCATION_TYPE_TOKEN,
5462 p_token1_value => srl_num_rec2.install_location_type_code,
5463 p_token2 => G_LOC_TYPE1_TOKEN,
5464 p_token2_value => 'HZ_PARTY_SITES',
5465 p_token3 => G_LOC_TYPE2_TOKEN,
5466 p_token3_value => 'HZ_LOCATIONS');
5467 x_return_status := OKL_API.G_RET_STS_ERROR;
5468 RAISE OKL_API.G_EXCEPTION_ERROR;
5469
5470 ELSIF NVL(srl_num_rec2.install_location_type_code,OKL_API.G_MISS_CHAR) = 'HZ_PARTY_SITES' THEN
5471
5472 OPEN inst_site_csr(srl_num_rec2.install_location_id);
5473 FETCH inst_site_csr INTO l_pty_site_use_id;
5474 IF inst_site_csr%NOTFOUND THEN
5475 OPEN l_address_csr(pty_site_id => srl_num_rec2.install_location_id);
5476 FETCH l_address_csr INTO l_address;
5477 CLOSE l_address_csr;
5478 --Raise Error : not defined as install_at
5479 OKL_API.Set_Message(p_app_name => G_APP_NAME,
5480 p_msg_name => G_MISSING_USAGE,
5481 p_token1 => G_USAGE_TYPE_TOKEN,
5482 p_token1_value => 'INSTALL_AT',
5483 p_token2 => G_ADDRESS_TOKEN,
5484 p_token2_value => l_address,
5485 p_token3 => G_INSTANCE_NUMBER_TOKEN,
5486 p_token3_value => srl_num_rec2.instance_number);
5487 x_return_status := OKL_API.G_RET_STS_ERROR;
5488 RAISE OKL_API.G_EXCEPTION_ERROR;
5489 --l_pty_site_use_id := '-1';
5490 END IF;
5491 CLOSE inst_site_csr;
5492
5493 ELSIF NVL(srl_num_rec2.install_location_type_code, OKL_API.G_MISS_CHAR) = 'HZ_LOCATIONS' THEN
5494
5495 OPEN inst_loc_csr(srl_num_rec2.install_location_id);
5496 FETCH inst_loc_csr INTO l_pty_site_use_id;
5497 IF inst_loc_csr%NOTFOUND THEN
5498 --l_pty_site_use_id := '-1';
5499 OPEN l_address_csr2(loc_id => srl_num_rec2.install_location_id);
5500 FETCH l_address_csr2 INTO l_address;
5501 CLOSE l_address_csr2;
5502 --Raise Error : not defined as install_at
5503 OKL_API.Set_Message(p_app_name => G_APP_NAME,
5504 p_msg_name => G_MISSING_USAGE,
5505 p_token1 => G_USAGE_TYPE_TOKEN,
5506 p_token1_value => 'INSTALL_AT',
5507 p_token2 => G_ADDRESS_TOKEN,
5508 p_token2_value => l_address,
5509 p_token3 => G_INSTANCE_NUMBER_TOKEN,
5510 p_token3_value => srl_num_rec2.instance_number);
5511 x_return_status := OKL_API.G_RET_STS_ERROR;
5512 RAISE OKL_API.G_EXCEPTION_ERROR;
5513 END IF;
5514 CLOSE inst_loc_csr;
5515
5516 END IF;
5517 --End Bug # 3569441
5518
5519 l_iipv_tbl(i).object_id1_new := l_pty_site_use_id;
5520 l_iipv_tbl(i).object_id2_new := '#';
5521 l_iipv_tbl(i).jtot_object_code_new := 'OKX_PARTSITE';
5522 l_iipv_tbl(i).object_id1_old := l_pty_site_use_id;
5523 l_iipv_tbl(i).object_id2_old := '#';
5524 l_iipv_tbl(i).jtot_object_code_old := 'OKX_PARTSITE';
5525 l_iipv_tbl(i).inventory_org_id := srl_num_rec2.inv_organization_id;
5526 l_iipv_tbl(i).serial_number := srl_num_rec2.serial_number;
5527 l_iipv_tbl(i).mfg_serial_number_yn := 'N';
5528 l_iipv_tbl(i).inventory_item_id := srl_num_rec2.inventory_item_id;
5529 l_iipv_tbl(i).INV_MASTER_ORG_ID := srl_num_rec2.inv_master_organization_id;
5530 l_iipv_tbl(i).dnz_cle_id := p_cle_id;
5531 l_iipv_tbl(i).instance_id := srl_num_rec2.instance_id;
5532 l_iipv_tbl(i).selected_for_split_flag := 'Y';
5533 l_iipv_tbl(i).asd_id := p_asd_id;
5534 --Bug fix # 2753141
5535 CLOSE srl_num_csr2;
5536 END LOOP;
5537 ELSE --srl_tbl count is zero
5538 --get all the serial numbers
5539 i := 0;
5540 OPEN srl_num_csr (fin_Ast_id => p_cle_id);
5541 LOOP
5542 FETCH srl_num_csr INTO srl_num_rec;
5543 EXIT WHEN srl_num_csr%NOTFOUND;
5544 i := i + 1;
5545 l_iipv_tbl(i).tas_id := p_tas_id;
5546 l_iipv_tbl(i).tal_id := p_tal_id;
5547 l_iipv_tbl(i).kle_id := srl_num_rec.ib_cle_id;
5548 l_iipv_tbl(i).tal_type := 'ALI'; -- hardcoded for split asset
5549 l_iipv_tbl(i).line_number := i;
5550 l_iipv_tbl(i).instance_number_ib := srl_num_rec.instance_number;
5551
5552 --fetch party site use id
5553 l_pty_site_use_id := NULL;
5554 --BUG# 3569441
5555 IF NVL(srl_num_rec.install_location_type_code,OKL_API.G_MISS_CHAR) NOT IN ('HZ_LOCATIONS','HZ_PARTY_SITES') THEN
5556
5557 --Raise Error
5558 OKL_API.Set_Message(p_app_name => G_APP_NAME,
5559 p_msg_name => G_INVALID_INSTALL_LOC_TYPE,
5560 p_token1 => G_LOCATION_TYPE_TOKEN,
5561 p_token1_value => srl_num_rec.install_location_type_code,
5562 p_token2 => G_LOC_TYPE1_TOKEN,
5563 p_token2_value => 'HZ_PARTY_SITES',
5564 p_token3 => G_LOC_TYPE2_TOKEN,
5565 p_token3_value => 'HZ_LOCATIONS');
5566 x_return_status := OKL_API.G_RET_STS_ERROR;
5567 RAISE OKL_API.G_EXCEPTION_ERROR;
5568
5569 ELSIF NVL(srl_num_rec.install_location_type_code,OKL_API.G_MISS_CHAR) = 'HZ_PARTY_SITES' THEN
5570
5571 OPEN inst_site_csr(srl_num_rec.install_location_id);
5572 FETCH inst_site_csr INTO l_pty_site_use_id;
5573 IF inst_site_csr%NOTFOUND THEN
5574 OPEN l_address_csr(pty_site_id => srl_num_rec2.install_location_id);
5575 FETCH l_address_csr INTO l_address;
5576 CLOSE l_address_csr;
5577 --Raise Error : not defined as install_at
5578 OKL_API.Set_Message(p_app_name => G_APP_NAME,
5579 p_msg_name => G_MISSING_USAGE,
5580 p_token1 => G_USAGE_TYPE_TOKEN,
5581 p_token1_value => 'INSTALL_AT',
5582 p_token2 => G_ADDRESS_TOKEN,
5583 p_token2_value => l_address,
5584 p_token3 => G_INSTANCE_NUMBER_TOKEN,
5585 p_token3_value => srl_num_rec.instance_number);
5586 x_return_status := OKL_API.G_RET_STS_ERROR;
5587 RAISE OKL_API.G_EXCEPTION_ERROR;
5588 END IF;
5589
5590 CLOSE inst_site_csr;
5591 ELSIF NVL(srl_num_rec.install_location_type_code,OKL_API.G_MISS_CHAR) = 'HZ_LOCATIONS' THEN
5592
5593 OPEN inst_loc_csr(srl_num_rec.install_location_id);
5594 FETCH inst_loc_csr INTO l_pty_site_use_id;
5595 IF inst_loc_csr%NOTFOUND THEN
5596 OPEN l_address_csr2(loc_id => srl_num_rec2.install_location_id);
5597 FETCH l_address_csr2 INTO l_address;
5598 CLOSE l_address_csr2;
5599 --Raise Error : not defined as install_at
5600 OKL_API.Set_Message(p_app_name => G_APP_NAME,
5601 p_msg_name => G_MISSING_USAGE,
5602 p_token1 => G_USAGE_TYPE_TOKEN,
5603 p_token1_value => 'INSTALL_AT',
5604 p_token2 => G_ADDRESS_TOKEN,
5605 p_token2_value => l_address,
5606 p_token3 => G_INSTANCE_NUMBER_TOKEN,
5607 p_token3_value => srl_num_rec.instance_number);
5608 x_return_status := OKL_API.G_RET_STS_ERROR;
5609 RAISE OKL_API.G_EXCEPTION_ERROR;
5610 END IF;
5611 CLOSE inst_loc_csr;
5612
5613 END IF;
5614 --BUG# 3569441
5615
5616
5617 l_iipv_tbl(i).object_id1_new := l_pty_site_use_id;
5618 l_iipv_tbl(i).object_id2_new := '#';
5619 l_iipv_tbl(i).jtot_object_code_new := 'OKX_PARTSITE';
5620 l_iipv_tbl(i).object_id1_old := l_pty_site_use_id;
5621 l_iipv_tbl(i).object_id2_old := '#';
5622 l_iipv_tbl(i).jtot_object_code_old := 'OKX_PARTSITE';
5623 l_iipv_tbl(i).inventory_org_id := srl_num_rec.inv_organization_id;
5624 l_iipv_tbl(i).serial_number := srl_num_rec.serial_number;
5625 l_iipv_tbl(i).mfg_serial_number_yn := 'N';
5626 l_iipv_tbl(i).inventory_item_id := srl_num_rec.inventory_item_id;
5627 l_iipv_tbl(i).INV_MASTER_ORG_ID := srl_num_rec.inv_master_organization_id;
5628 l_iipv_tbl(i).dnz_cle_id := p_cle_id;
5629 l_iipv_tbl(i).instance_id := srl_num_rec.instance_id;
5630 l_iipv_tbl(i).selected_for_split_flag := 'N';
5631 l_iipv_tbl(i).asd_id := p_asd_id;
5632
5633 END LOOP;
5634 CLOSE srl_num_csr;
5635 END IF; --srl_tbl count is = 0
5636 IF l_iipv_tbl.COUNT > 0 THEN
5637 --call api to create records for srl num trx
5638 okl_txl_itm_insts_pub.create_txl_itm_insts(
5639 p_api_version => p_api_version,
5640 p_init_msg_list => p_init_msg_list,
5641 x_return_status => x_return_status,
5642 x_msg_count => x_msg_count,
5643 x_msg_data => x_msg_data,
5644 p_iipv_tbl => l_iipv_tbl,
5645 x_iipv_tbl => lx_iipv_tbl);
5646
5647 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5648 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5649 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5650 RAISE OKL_API.G_EXCEPTION_ERROR;
5651 END IF;
5652
5653 END IF;
5654 --Bug# 3222804 : serial # control based on leasing inv org setup
5655 ELSIF l_serialized = OKL_API.G_FALSE THEN
5656 NULL;
5657 END IF; -- if srl number controlled
5658 END IF;
5659 l_iipv_tbl.DELETE;
5660 OKL_API.END_ACTIVITY (x_msg_count,
5661 x_msg_data );
5662 EXCEPTION
5663 WHEN OKL_API.G_EXCEPTION_ERROR THEN
5664 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5665 l_api_name,
5666 G_PKG_NAME,
5667 'OKL_API.G_RET_STS_ERROR',
5668 x_msg_count,
5669 x_msg_data,
5670 '_PVT');
5671 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5672 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5673 l_api_name,
5674 G_PKG_NAME,
5675 'OKL_API.G_RET_STS_UNEXP_ERROR',
5676 x_msg_count,
5677 x_msg_data,
5678 '_PVT');
5679 WHEN OTHERS THEN
5680 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5681 l_api_name,
5682 G_PKG_NAME,
5683 'OTHERS',
5684 x_msg_count,
5685 x_msg_data,
5686 '_PVT');
5687 END create_srl_num_trx;
5688 --Bug #2723498 : 11.5.9 Split by serial numbers enhancement
5689 FUNCTION Check_If_Loan(p_cle_id IN NUMBER,
5690 x_return_status OUT nocopy VARCHAR2) RETURN VARCHAR2 IS
5691 --cursor to get deal type
5692 CURSOR l_dealtyp_csr(PCleId IN NUMBER) IS
5693 SELECT khr.deal_type
5694 FROM okl_k_headers khr,
5695 okc_k_headers_b chrb,
5696 okc_k_lines_b cleb
5697 WHERE khr.id = chrb.id
5698 AND chrb.id = cleb.dnz_chr_id
5699 AND cleb.id = PCleId;
5700
5701 l_deal_type okl_k_headers.deal_type%TYPE;
5702 l_loan_yn VARCHAR2(1) DEFAULT 'N';
5703
5704 BEGIN
5705 ----
5706 x_return_status := OKL_API.G_RET_STS_SUCCESS;
5707 OPEN l_dealtyp_csr (PCleId => p_cle_id);
5708 FETCH l_dealtyp_csr INTO l_deal_type;
5709 IF l_dealtyp_csr%NOTFOUND THEN
5710 NULL;
5711 END IF;
5712 CLOSE l_dealtyp_csr;
5713
5714 IF NVL(l_deal_type,'X') IN ('LOAN','LOAN-REVOLVING') THEN
5715 l_loan_yn := 'Y';
5716 ELSE
5717 l_loan_yn := 'N';
5718 END IF;
5719
5720 RETURN(l_loan_yn);
5721 EXCEPTION
5722 WHEN OTHERS THEN
5723 x_return_status := OKL_API.G_RET_STS_ERROR;
5724 ----
5725 END Check_If_Loan;
5726
5727 --------------------------------------------------------------------------------
5728 --Start of Comments
5729 --API Name : Create_Split_Transaction
5730 --Description : Process API to create Split Aseet Transaction Records in
5731 -- OKL_TXL_ASSETS_V and OKL_TXD_ASSETS_V
5732 -- 1. Take the line details to be split
5733 -- 2. Set the status of the contract as inactive
5734 -- 3. Create and save source record into okl_trx_assets_v
5735 -- 4. Create and save target record into okl_txd_assets_v
5736 --History :
5737 -- 10-OCT-2001 avsingh Creation
5738 -- 12-Dec-2002 avsingh Overloaded the procedure to take p_srl_tbl
5739 -- as IN parameter. This will be directly called
5740 -- by Asset management line level termination
5741 -- Process. The old call is kept for backward
5742 -- compatability. It will be still used from
5743 -- the split asset UI.
5744 -- 30-Jan-2004 avsingh Bug# 3156924
5745 -- Overloaded the procedure to accept
5746 -- trx_date
5747 -- 16-Aug-2005 smadhava Bug# 4542290 Variable Rate Enhancement
5748 --End of Comments
5749 ------------------------------------------------------------------------------
5750 PROCEDURE Create_Split_Transaction(p_api_version IN NUMBER,
5751 p_init_msg_list IN VARCHAR2,
5752 x_return_status OUT NOCOPY VARCHAR2,
5753 x_msg_count OUT NOCOPY NUMBER,
5754 x_msg_data OUT NOCOPY VARCHAR2,
5755 p_cle_id IN NUMBER,
5756 p_split_into_individuals_yn IN VARCHAR2,
5757 p_split_into_units IN NUMBER,
5758 p_ib_tbl IN ib_tbl_type,
5759 --Bug# 3156924
5760 p_trx_date IN DATE,
5761 --bug# 3156924
5762 x_txdv_tbl OUT NOCOPY txdv_tbl_type,
5763 x_txlv_rec OUT NOCOPY txlv_rec_type,
5764 x_trxv_rec OUT NOCOPY trxv_rec_type) IS
5765
5766 l_return_status VARCHAR2(1) DEFAULT OKL_API.G_RET_STS_SUCCESS;
5767 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_SPLIT_TRANSACTION';
5768 l_api_version CONSTANT NUMBER := 1.0;
5769
5770 --cursor to check presence of an already active transaction
5771 CURSOR chk_split_trx(p_cle_id IN NUMBER) IS
5772 SELECT txl.id, --tal_id
5773 txl.SPLIT_INTO_SINGLES_FLAG, --p_split_into_individuals_yn
5774 txl.SPLIT_INTO_UNITS, --p_split_into_units
5775 --Bug# 3156924
5776 tas.DATE_TRANS_OCCURRED,
5777 tas.ID
5778 FROM OKL_TXL_ASSETS_B txl,
5779 OKL_TRX_ASSETS tas
5780 WHERE txl.kle_id = p_cle_id
5781 AND txl.tas_id = tas.id
5782 AND txl.tal_type = 'ALI'
5783 AND tas.tas_type = 'ALI'
5784 AND tas.tsu_code = 'ENTERED'
5785 AND EXISTS (SELECT NULL
5786 FROM
5787 okl_trx_types_tl ttyp
5788 WHERE tas.try_id = ttyp.id
5789 AND ttyp.name = 'Split Asset'
5790 AND ttyp.LANGUAGE = 'US');
5791
5792 --for split asset components
5793 --cursor to check whether split asset comonent
5794
5795 l_split_into_ind_yn VARCHAR2(1) DEFAULT 'Z';
5796 l_split_units NUMBER DEFAULT 0;
5797 l_tal_id NUMBER;
5798 --Bug# 3156924
5799 l_trx_date okl_trx_assets.DATE_TRANS_OCCURRED%TYPE;
5800 l_tas_id okl_trx_assets.ID%TYPE;
5801
5802
5803 l_trxv_rec trxv_rec_type;
5804 l_txlv_rec txlv_rec_type;
5805 l_txdv_rec txdv_rec_type;
5806 l_txdv_rec_out txdv_rec_type;
5807 l_txdv_tbl txdv_tbl_type;
5808 l_ast_line_rec ast_line_rec_type;
5809 l_fa_location_id NUMBER;
5810 l_row_not_found BOOLEAN := TRUE;
5811 l_total_cost NUMBER;
5812 l_total_salvage_value NUMBER;
5813 l_units_on_child_line NUMBER;
5814 l_total_quantity NUMBER;
5815 l_split_into_units NUMBER;
5816 l_asset_exists VARCHAR2(1) DEFAULT 'N';
5817 j NUMBER DEFAULT 0; --counter for generating split asset numbers
5818 l_no_txd_data_found BOOLEAN DEFAULT TRUE;
5819
5820 --Bug #2723498 11.5.9 enhancement - Splitting assets by serial numbers
5821 --check if serial number data exists
5822 --cursor to check whether srl number data exists
5823 CURSOR srl_exist_chk (p_tal_id IN NUMBER) IS
5824 SELECT '!'
5825 FROM dual
5826 WHERE EXISTS
5827 (SELECT 1
5828 FROM okl_txl_itm_insts
5829 WHERE tal_id = p_tal_id
5830 AND tal_type = 'ALI');
5831
5832 l_srl_exists VARCHAR2(1) DEFAULT '?';
5833
5834 --Bug #2723498 11.5.9 enhancement - Splitting assets by serial numbers
5835 --cursor to fetch all the serail numbers
5836 CURSOR get_srl_csr (p_tal_id IN NUMBER) IS
5837 SELECT id
5838 FROM okl_txl_itm_insts
5839 WHERE tal_id = p_tal_id
5840 AND tal_type = 'ALI';
5841
5842 l_iipv_tbl okl_txl_itm_insts_pub.iipv_tbl_type;
5843 l_iipv_count NUMBER;
5844 l_iipv_id NUMBER;
5845
5846 l_ib_tbl ib_tbl_type;
5847
5848 --Bug #2723498 11.5.9 - Multi Currency
5849 CURSOR curr_conv_csr (PCleId IN NUMBER) IS
5850 SELECT khrv.currency_code,
5851 khrv.currency_conversion_type,
5852 khrv.currency_conversion_rate,
5853 khrv.currency_conversion_date,
5854 khrv.start_date
5855 FROM okl_k_headers_full_v khrv,
5856 okc_k_lines_b cle
5857 WHERE khrv.id = cle.dnz_chr_id
5858 AND cle.id = PCleId;
5859
5860 curr_conv_rec curr_conv_csr%ROWTYPE;
5861
5862
5863 --Bug# 2798006 : split asset for loan contracts
5864 CURSOR loan_ast_csr (PCleId IN NUMBER) IS
5865 SELECT
5866 cle_fa.id kle_id,
5867 clet.name NAME,
5868 clet.item_description DESCRIPTION,
5869 cle.chr_id CHR_ID,
5870 cle.dnz_chr_id DNZ_CHR_ID,
5871 cle.id PARENT_LINE_ID,
5872 cle.start_date START_DATE_ACTIVE,
5873 cle.end_date END_DATE_ACTIVE,
5874 cim_fa.number_of_items CURRENT_UNITS,
5875 clet.name ASSET_NUMBER,
5876 kle.OEC ORIGINAL_COST,
5877 kle.OEC COST,
5878 cle.sts_code LINE_STATUS
5879 FROM okc_k_items cim_fa,
5880 okc_k_lines_b cle_fa,
5881 okc_line_styles_b lse_fa,
5882 okl_k_lines kle,
5883 okc_k_lines_tl clet,
5884 okc_k_lines_b cle
5885 WHERE cim_fa.cle_id = cle_fa.id
5886 AND cle_fa.cle_id = cle.id
5887 AND cle_fa.dnz_chr_id = cle.dnz_chr_id
5888 AND cle_fa.lse_id = lse_fa.id
5889 AND lse_fa.lty_code = 'FIXED_ASSET'
5890 AND kle.id = cle.id
5891 AND clet.id = cle.id
5892 AND clet.LANGUAGE = USERENV('LANG')
5893 AND cle.id = PCleId;
5894
5895 l_loan_ast_rec loan_ast_csr%ROWTYPE;
5896 l_loan_yn VARCHAR2(1) DEFAULT 'N';
5897 l_fa_exists VARCHAR2(1) DEFAULT 'N';
5898
5899 --Bug Fix # 2881114
5900 --Cursor to check whether asset is linked to service contract
5901 CURSOR lnk_to_srv_csr(p_cle_id IN NUMBER) IS
5902 SELECT '!'
5903 FROM dual
5904 WHERE EXISTS
5905 (
5906 SELECT '1'
5907 FROM
5908 okc_k_headers_b oks_chrb,
5909 okc_line_styles_b oks_cov_pd_lse,
5910 okc_k_lines_b oks_cov_pd_cleb,
5911 okc_k_rel_objs krel,
5912 okc_line_styles_b lnk_srv_lse,
5913 okc_statuses_b lnk_srv_sts,
5914 okc_k_lines_b lnk_srv_cleb,
5915 okc_k_items lnk_srv_cim
5916 WHERE oks_chrb.scs_code = 'SERVICE'
5917 AND oks_chrb.id = oks_cov_pd_cleb.dnz_chr_id
5918 AND oks_cov_pd_cleb.lse_id = oks_cov_pd_lse.id
5919 AND oks_cov_pd_lse.lty_code = 'COVER_PROD'
5920 AND '#' = krel.object1_id2
5921 AND oks_cov_pd_cleb.id = krel.object1_id1
5922 AND krel.rty_code = 'OKLSRV'
5923 AND krel.chr_id = lnk_srv_cleb.dnz_chr_id
5924 AND krel.cle_id = lnk_srv_cleb.id
5925 AND lnk_srv_cleb.lse_id = lnk_srv_lse.id
5926 AND lnk_srv_lse.lty_code = 'LINK_SERV_ASSET'
5927 AND lnk_srv_cleb.sts_code = lnk_srv_sts.code
5928 AND lnk_srv_sts.ste_code NOT IN ('HOLD','EXPIRED','TERMINATED','CANCELLED')
5929 AND lnk_srv_cleb.dnz_chr_id = lnk_srv_cim.dnz_chr_id
5930 AND lnk_srv_cleb.id = lnk_srv_cim.cle_id
5931 AND lnk_srv_cim.jtot_object1_code = 'OKX_COVASST'
5932 AND lnk_srv_cim.object1_id2 = '#'
5933 AND lnk_srv_cim.object1_id1 = TO_CHAR(p_cle_id)
5934 );
5935
5936 l_lnk_to_srv VARCHAR2(1) DEFAULT '?';
5937
5938 --Bug# 2981308 : cursor to fetch asset key ccid
5939 CURSOR l_fab_csr(p_asset_id IN NUMBER) IS
5940 SELECT fab.asset_key_ccid
5941 FROM fa_additions_b fab
5942 WHERE fab.asset_id = p_asset_id;
5943
5944 l_asset_key_id fa_additions_b.asset_key_ccid%TYPE;
5945 --Bug# 2981308
5946
5947 --Bug# 3783518
5948 CURSOR l_chr_csr(p_cle_id IN NUMBER) IS
5949 SELECT dnz_chr_id
5950 FROM okc_k_lines_b
5951 WHERE id = p_cle_id;
5952
5953 l_chr_id okc_k_headers_b.id%TYPE;
5954
5955 --cursor to check if contract has re-lease assets
5956 -- Bug# 4631549
5957 -- Disable split asset process for
5958 -- Re-lease contract and Re-lease asset flows
5959 CURSOR l_chk_rel_ast_csr (p_chr_id IN NUMBER) IS
5960 SELECT '!'
5961 FROM OKC_RULES_B rul
5962 WHERE rul.dnz_chr_id = p_chr_id
5963 AND rul.rule_information_category = 'LARLES'
5964 AND NVL(rule_information1,'N') = 'Y';
5965
5966 l_rel_ast VARCHAR2(1);
5967 -- Bug# 4542290 - smadhava - Added - Start
5968 l_pdt_params_rec OKL_SETUPPRODUCTS_PUB.pdt_parameters_rec_type;
5969 l_rev_recog_meaning OKL_PRODUCT_PARAMETERS_V.REVENUE_RECOGNITION_MEANING%TYPE;
5970
5971 CURSOR get_prod_param_values(cp_name OKL_PDT_QUALITYS.NAME%TYPE
5972 , cp_value OKL_PQY_VALUES.VALUE%TYPE) IS
5973 SELECT
5974 QVE.DESCRIPTION
5975 FROM
5976 OKL_PDT_QUALITYS PQY
5977 , OKL_PQY_VALUES QVE
5978 WHERE
5979 QVE.PQY_ID = PQY.ID
5980 AND PQY.NAME = cp_name
5981 AND QVE.VALUE = cp_value;
5982
5983 -- Bug# 4542290 - smadhava - Added - End
5984
5985 --Added by dpsingh for LE uptake
5986 CURSOR contract_num_csr (p_ctr_id1 NUMBER) IS
5987 SELECT contract_number
5988 FROM OKC_K_HEADERS_B
5989 WHERE id = p_ctr_id1;
5990
5991 l_cntrct_number OKC_K_HEADERS_B.CONTRACT_NUMBER%TYPE;
5992 l_legal_entity_id NUMBER;
5993
5994 BEGIN
5995 --dbms_output.put_line('before start activity');
5996 x_return_status := OKL_API.G_RET_STS_SUCCESS;
5997 -- Call start_activity to create savepoint, check compatibility
5998 -- and initialize message list
5999 x_return_status := OKL_API.START_ACTIVITY (
6000 l_api_name
6001 ,p_init_msg_list
6002 ,'_PVT'
6003 ,x_return_status);
6004 -- Check if activity started successfully
6005 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6006 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6007 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6008 RAISE OKL_API.G_EXCEPTION_ERROR;
6009 END IF;
6010 l_ib_tbl := p_ib_tbl;
6011 --Bug# 6612475
6012 --1. Validate Split Request
6013 Validate_Split_Request
6014 (p_api_version => p_api_version
6015 ,p_init_msg_list => p_init_msg_list
6016 ,x_return_status => x_return_status
6017 ,x_msg_count => x_msg_count
6018 ,x_msg_data => x_msg_data
6019 ,p_cle_id => p_cle_id
6020 ,p_split_into_individuals_yn => p_split_into_individuals_yn
6021 ,p_split_into_units => p_split_into_units
6022 ,p_revision_date => p_trx_date
6023 );
6024
6025 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6026 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6027 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6028 RAISE OKL_API.G_EXCEPTION_ERROR;
6029 END IF;
6030
6031 --Commenting this validation as it is redundant now
6032 --because of newly added Validate_Split_Request
6033 --1.Verify p_cle_id
6034 --x_return_status := verify_cle_id(p_cle_id => p_cle_id);
6035 --IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
6036 --RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6037 --ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
6038 --RAISE OKL_API.G_EXCEPTION_ERROR;
6039 --END IF;
6040 --Bug# 6612475 End
6041
6042 --Bug# 3783518: start
6043 -- Do not allow split asset for contracts with release assets
6044 OPEN l_chr_csr(p_cle_id => p_cle_id);
6045 FETCH l_chr_csr INTO l_chr_id;
6046 CLOSE l_chr_csr;
6047
6048 -- Bug# 4542290 - smadhava - Added - Start
6049 -- Obtain the product parameter - Revenue Recognition method
6050 OKL_K_RATE_PARAMS_PVT.get_product(
6051 p_api_version => p_api_version,
6052 p_init_msg_list => p_init_msg_list,
6053 x_return_status => x_return_status,
6054 x_msg_count => x_msg_count,
6055 x_msg_data => x_msg_data,
6056 p_khr_id => l_chr_id,
6057 x_pdt_parameter_rec => l_pdt_params_rec);
6058
6059 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6060 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6061 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6062 RAISE OKL_API.G_EXCEPTION_ERROR;
6063 END IF;
6064
6065 -- Raise an error if the Revenue Recognition Method is 'Actual' or 'Estimated and Actual'
6066 IF ( l_pdt_params_rec.Revenue_Recognition_Method = G_RRB_ESTIMATED OR
6067 l_pdt_params_rec.Revenue_Recognition_Method = G_RRB_ACTUAL) THEN
6068 OPEN get_prod_param_values('REVENUE_RECOGNITION_METHOD',
6069 l_pdt_params_rec.Revenue_Recognition_Method);
6070 FETCH get_prod_param_values INTO l_rev_recog_meaning;
6071 CLOSE get_prod_param_values;
6072
6073 OKL_API.set_message(p_app_name => G_APP_NAME,
6074 p_msg_name => G_RRB_SPLIT_ASSET_NOT_ALLWD,
6075 p_token1 => G_METHOD,
6076 p_token1_value => l_rev_recog_meaning);
6077 RAISE OKL_API.G_EXCEPTION_ERROR;
6078 END IF;
6079 -- Bug# 4542290 - smadhava - Added - End
6080
6081 l_rel_ast := '?';
6082 --check for release assets in a contract
6083 OPEN l_chk_rel_ast_csr (p_chr_id => l_chr_id);
6084 FETCH l_chk_rel_ast_csr INTO l_rel_ast;
6085 CLOSE l_chk_rel_ast_csr;
6086
6087 IF l_rel_ast = '!' THEN
6088 OKL_API.set_message(p_app_name => G_APP_NAME,
6089 p_msg_name => 'OKL_REL_ASSET_SPLIT_NOT_ALLWD');
6090 RAISE OKL_API.G_EXCEPTION_ERROR;
6091 END IF;
6092 --Bug# 3783518: end
6093
6094 --Bug Fix # 2881114
6095 --check whether asset is linked to service contract
6096 l_lnk_to_srv := '?';
6097 OPEN lnk_to_srv_csr (p_cle_id => p_cle_id);
6098 FETCH lnk_to_srv_csr INTO l_lnk_to_srv;
6099 IF lnk_to_srv_csr%NOTFOUND THEN
6100 NULL;
6101 END IF;
6102 CLOSE lnk_to_srv_csr;
6103
6104 IF l_lnk_to_srv = '!' THEN
6105 OKL_API.set_message(p_app_name => G_APP_NAME,
6106 p_msg_name => G_ASSET_LINKED_TO_SERVICE);
6107 RAISE OKL_API.G_EXCEPTION_ERROR;
6108 END IF;
6109 --Bug Fix # 2881114 End
6110
6111 --2.Set the status of the Contract Line on HOLD
6112 --study the contract status concurrent program
6113 --possibly call it from here.
6114 --3.create and save split asset transaction
6115 l_trxv_rec.tas_type := 'ALI';
6116 l_trxv_rec.tsu_code := 'ENTERED';
6117 ----------------------------------
6118 --Bug# 3156924
6119 --validate trx_date :
6120 validate_trx_date(p_api_version => p_api_version,
6121 p_init_msg_list => p_init_msg_list,
6122 x_return_status => x_return_status,
6123 x_msg_count => x_msg_count,
6124 x_msg_data => x_msg_data,
6125 p_cle_id => p_cle_id,
6126
6127 p_trx_date => p_trx_date);
6128 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6129 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6130 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6131 RAISE OKL_API.G_EXCEPTION_ERROR;
6132 END IF;
6133
6134 --Bug# 5946411 :ER Added offlease pending transaction message
6135 Check_Offlease_Trans(p_api_version => p_api_version,
6136 p_init_msg_list => p_init_msg_list,
6137 x_return_status => x_return_status,
6138 x_msg_count => x_msg_count,
6139 x_msg_data => x_msg_data,
6140 p_cle_id => p_cle_id
6141 );
6142 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6143 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6144 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6145 RAISE OKL_API.G_EXCEPTION_ERROR;
6146 END IF;
6147 --Bug# 5946411 :ER end
6148 --l_trxv_rec.date_trans_occurred := sysdate;
6149 l_trxv_rec.date_trans_occurred := p_trx_date;
6150
6151 --Added by dpsingh for LE Uptake
6152
6153 l_legal_entity_id := OKL_LEGAL_ENTITY_UTIL.get_khr_le_id(l_chr_id) ;
6154 IF l_legal_entity_id IS NOT NULL THEN
6155 l_trxv_rec.legal_entity_id := l_legal_entity_id;
6156 ELSE
6157 -- get the contract number
6158 OPEN contract_num_csr(l_chr_id);
6159 FETCH contract_num_csr INTO l_cntrct_number;
6160 CLOSE contract_num_csr;
6161 Okl_Api.set_message(p_app_name => g_app_name,
6162 p_msg_name => 'OKL_LE_NOT_EXIST_CNTRCT',
6163 p_token1 => 'CONTRACT_NUMBER',
6164 p_token1_value => l_cntrct_number);
6165 RAISE OKL_API.G_EXCEPTION_ERROR;
6166 END IF;
6167 -------------------------------------
6168 --++++++++++++++++++++testing ty id only++++++++++++++++++++++
6169 x_return_status := get_try_id(p_try_name => G_TRY_NAME,
6170 x_try_id => l_trxv_rec.try_id);
6171 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6172 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6173 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6174 RAISE OKL_API.G_EXCEPTION_ERROR;
6175 END IF;
6176 --++++++++++++++++++++testing ty id only++++++++++++++++++++++
6177 --Check if a 'ENTRED' unprocessed split transaction alreadt exists for this line
6178 --dbms_output.put_line('Before chk_split_trx cursor fetch');
6179 l_ast_line_rec := get_ast_line(p_cle_id,l_row_not_found);
6180 --dbms_output.put_line('After fetching asset line '||l_ast_line_rec.description);
6181 l_fa_exists := 'N';
6182 IF (l_row_not_found) THEN
6183 --Bug #2798006 : call create split transaction for Loans
6184 l_loan_yn := 'N';
6185 l_loan_yn := Check_If_Loan(P_Cle_Id => p_cle_id,
6186 x_return_status => x_return_status);
6187
6188 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6189 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6190 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6191 RAISE OKL_API.G_EXCEPTION_ERROR;
6192 END IF;
6193
6194 IF l_loan_yn = 'N' THEN
6195 OKL_API.set_message(p_app_name => G_APP_NAME,
6196 p_msg_name => G_SPLIT_ASSET_NOT_FOUND);
6197 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6198 ELSIF l_loan_yn = 'Y' THEN
6199 --open cursor to get asset information from OKL tables
6200 OPEN loan_ast_csr(PCleId => p_cle_id);
6201 FETCH loan_ast_csr INTO l_loan_ast_rec;
6202 IF loan_ast_csr%NOTFOUND THEN
6203 OKL_API.set_message(p_app_name => G_APP_NAME,
6204 p_msg_name => G_SPLIT_ASSET_NOT_FOUND);
6205 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6206 ELSE
6207 l_fa_exists := 'N';
6208 END IF;
6209 END IF;
6210 --Bug# 2798006 end.
6211 ELSE
6212 l_fa_exists := 'Y';
6213 END IF;
6214 -- avsingh : added on 10-Aug-2002 : To Prevent Single unit assets to split into
6215 -- individuals
6216 IF (l_ast_line_rec.current_units = 1 AND l_loan_yn = 'N') OR
6217 (l_loan_ast_rec.current_units = 1 AND l_loan_yn = 'Y') THEN
6218 IF NVL(p_split_into_individuals_yn,'N') = 'Y' OR NVL(p_split_into_units,0) > 0 THEN
6219
6220 --Bug# 6336455: Display appropriate error message when
6221 -- splitting an off-lease asset
6222 IF (l_ast_line_rec.line_status IN ('TERMINATED','EXPIRED')) OR
6223 (l_loan_ast_rec.line_status IN ('TERMINATED','EXPIRED')) THEN
6224
6225 OKL_API.set_message(p_app_name => G_APP_NAME,
6226 p_msg_name => 'OKL_AM_SINGLE_UNIT_SPLIT');
6227 RAISE OKL_API.G_EXCEPTION_ERROR;
6228
6229 ELSE
6230 OKL_API.set_message(p_app_name => G_APP_NAME,
6231 p_msg_name => G_SINGLE_UNIT_ASSET);
6232 RAISE OKL_API.G_EXCEPTION_ERROR;
6233
6234 END IF;
6235 --Bug# 6336455: end
6236 END IF;
6237 END IF;
6238
6239
6240 OPEN chk_split_trx(p_cle_id => l_ast_line_rec.id1);
6241 FETCH chk_split_trx INTO
6242 l_tal_id,
6243 l_split_into_ind_yn,
6244 l_split_units,
6245 --Bug# 3156924
6246 l_trx_date,
6247 l_tas_id;
6248 --dbms_output.put_line('After chk_split_trx cursor fetch');
6249 IF chk_split_trx%NOTFOUND THEN
6250 --create new transaction (header, line and detail)
6251 -- Now creating the new header record
6252 --dbms_output.put_line('After chk_split_trx cursor fetch - trx not found.');
6253 Create_trx_header(p_api_version => p_api_version,
6254 p_init_msg_list => p_init_msg_list,
6255 x_return_status => x_return_status,
6256 x_msg_count => x_msg_count,
6257 x_msg_data => x_msg_data,
6258 p_trxv_rec => l_trxv_rec,
6259 x_trxv_rec => x_trxv_rec);
6260 --dbms_output.put_line('After creating trx header'||x_return_status);
6261 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6262 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6263 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6264 RAISE OKL_API.G_EXCEPTION_ERROR;
6265 END IF;
6266
6267 --Prepare txl record for insert into OKL_TXL_ASSETS_V
6268
6269 IF l_fa_exists = 'Y' THEN
6270 l_txlv_rec.tas_id := x_trxv_rec.id;
6271 l_txlv_rec.kle_id := l_ast_line_rec.id1;
6272 l_txlv_rec.dnz_khr_id := l_ast_line_rec.dnz_chr_id;
6273 l_txlv_rec.asset_number := l_ast_line_rec.name;
6274 l_txlv_rec.description := l_ast_line_rec.description;
6275 x_return_status := Get_Fa_Location(l_ast_line_rec.asset_id,
6276 l_ast_line_rec.corporate_book,
6277 l_fa_location_id);
6278 --dbms_output.put_line('After fetching fa location id'||x_return_status);
6279 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6280 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6281 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6282 RAISE OKL_API.G_EXCEPTION_ERROR;
6283 END IF;
6284 l_txlv_rec.fa_location_id := l_fa_location_id;
6285 l_txlv_rec.original_cost := l_ast_line_rec.original_cost;
6286 l_txlv_rec.current_units := l_ast_line_rec.current_units;
6287 IF l_ast_line_rec.new_used = 'NEW' THEN
6288 l_txlv_rec.used_asset_yn := 'Y';
6289 ELSIF l_ast_line_rec.new_used = 'USED' THEN
6290 l_txlv_rec.used_asset_yn := 'N';
6291 END IF;
6292
6293 l_txlv_rec.tag_number := l_ast_line_rec.tag_number;
6294 l_txlv_rec.model_number := l_ast_line_rec.model_number;
6295 l_txlv_rec.corporate_book := l_ast_line_rec.corporate_book;
6296 l_txlv_rec.in_service_date := l_ast_line_rec.in_service_date;
6297 l_txlv_rec.org_id := l_ast_line_rec.org_id;
6298 l_txlv_rec.depreciation_id := l_ast_line_rec.depreciation_category;
6299 l_txlv_rec.life_in_months := l_ast_line_rec.life_in_months;
6300 l_txlv_rec.depreciation_cost := l_ast_line_rec.cost;
6301 l_txlv_rec.deprn_method := l_ast_line_rec.deprn_method_code;
6302 l_txlv_rec.deprn_rate := l_ast_line_rec.basic_rate;
6303 l_txlv_rec.salvage_value := l_ast_line_rec.salvage_value;
6304 l_txlv_rec.percent_salvage_value := l_ast_line_rec.percent_salvage_value;
6305
6306 --------------------------------------
6307 --Bug# 2981308 : fetch asset key ccid
6308 --------------------------------------
6309 OPEN l_fab_csr(p_asset_id => l_ast_line_rec.asset_id);
6310 FETCH l_fab_csr INTO l_asset_key_id;
6311 IF l_fab_csr%NOTFOUND THEN
6312 NULL;
6313 END IF;
6314 CLOSE l_fab_csr;
6315
6316 l_txlv_rec.asset_key_id := l_asset_key_id;
6317 -------------------------------------
6318 --bug# 2981308 : fetch asset key ccid
6319 ------------------------------------
6320
6321 ELSIF l_fa_exists = 'N' THEN
6322 l_txlv_rec.tas_id := x_trxv_rec.id;
6323 l_txlv_rec.kle_id := l_loan_ast_rec.kle_id;
6324 l_txlv_rec.dnz_khr_id := l_loan_ast_rec.dnz_chr_id;
6325 l_txlv_rec.asset_number := l_loan_ast_rec.asset_number;
6326 l_txlv_rec.description := l_loan_ast_rec.description;
6327 l_txlv_rec.original_cost := l_loan_ast_rec.original_cost;
6328 l_txlv_rec.current_units := l_loan_ast_rec.current_units;
6329 l_txlv_rec.used_asset_yn := 'Y';
6330 l_txlv_rec.depreciation_cost := l_loan_ast_rec.cost;
6331 END IF;
6332 l_txlv_rec.SPLIT_INTO_SINGLES_FLAG := p_split_into_individuals_yn;
6333 l_txlv_rec.SPLIT_INTO_UNITS := p_split_into_units;
6334
6335
6336 IF (l_txlv_rec.tal_type = OKC_API.G_MISS_CHAR OR
6337 l_txlv_rec.tal_type IS NULL) THEN
6338 l_txlv_rec.tal_type := 'ALI';
6339 END IF;
6340 IF (l_txlv_rec.line_number = OKC_API.G_MISS_NUM OR
6341 l_txlv_rec.line_number IS NULL) THEN
6342 l_txlv_rec.line_number := 1;
6343 ELSE
6344 l_txlv_rec.line_number := l_txlv_rec.line_number + 1;
6345 END IF;
6346
6347 --Bug# : Multi Currency
6348 OPEN curr_conv_csr (PCleId => p_cle_id);
6349 FETCH curr_conv_csr INTO curr_conv_rec;
6350 IF curr_conv_csr%NOTFOUND THEN
6351 NULL;
6352 END IF;
6353 CLOSE curr_conv_csr;
6354
6355 l_txlv_rec.currency_code := curr_conv_rec.currency_code;
6356 l_txlv_rec.currency_conversion_type := curr_conv_rec.currency_conversion_type;
6357 l_txlv_rec.currency_conversion_rate := curr_conv_rec.currency_conversion_rate;
6358 l_txlv_rec.currency_conversion_date := curr_conv_rec.currency_conversion_date;
6359
6360 --create asset line transaction
6361 OKL_TXL_ASSETS_PUB.create_txl_asset_def(
6362 p_api_version => p_api_version,
6363 p_init_msg_list => p_init_msg_list,
6364 x_return_status => x_return_status,
6365 x_msg_count => x_msg_count,
6366 x_msg_data => x_msg_data,
6367 p_tlpv_rec => l_txlv_rec,
6368 x_tlpv_rec => x_txlv_rec);
6369 --dbms_output.put_line('After creating transaction line'||x_return_status);
6370 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6371 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6372 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6373 RAISE OKL_API.G_EXCEPTION_ERROR;
6374 END IF;
6375
6376 --call to create record for OKL_TXD_ASSETS_V
6377 --dbms_output.put_line('when fresh trx '||l_ast_line_rec.description);
6378 IF NVL(p_split_into_individuals_yn,'N') = 'X' THEN
6379 --split asset component transaction details will not be created
6380 NULL;
6381 ELSE
6382 Create_trx_details(p_api_version => p_api_version,
6383 p_init_msg_list => p_init_msg_list,
6384 x_return_status => x_return_status,
6385 x_msg_count => x_msg_count,
6386 x_msg_data => x_msg_data,
6387 p_ast_line_rec => l_ast_line_rec,
6388 p_txlv_rec => x_txlv_rec,
6389 x_txdv_tbl => x_txdv_tbl);
6390
6391 --dbms_output.put_line('After creating trx details'||x_return_status);
6392 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6393 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6394 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6395 RAISE OKL_API.G_EXCEPTION_ERROR;
6396 END IF;
6397 END IF;
6398
6399 --Bug #2723498 : 11.5.9 enahncement split asset by serial numbers
6400 --call to create serial number transaction
6401 create_srl_num_trx(p_api_version => p_api_version,
6402 p_init_msg_list => p_init_msg_list,
6403 x_return_status => x_return_status,
6404 x_msg_count => x_msg_count,
6405 x_msg_data => x_msg_data,
6406 p_cle_id => p_cle_id,
6407 p_split_into_individuals_yn => p_split_into_individuals_yn,
6408 p_split_into_units => p_split_into_units,
6409 p_ib_tbl => l_ib_tbl,
6410 p_tas_id => x_txlv_rec.tas_id,
6411 p_tal_id => x_txlv_rec.id,
6412 p_asd_id => NULL);
6413 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6414 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6415 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6416 RAISE OKL_API.G_EXCEPTION_ERROR;
6417 END IF;
6418 --Bug #2723498 : 11.5.9 enahncement split asset by serial numbers end
6419
6420 ELSE --chk_split_trx%FOUND
6421 -- If yes then chk if split parameters are same
6422 --dbms_output.put_line('transaction found');
6423 IF NVL(p_split_into_individuals_yn,'N') <> 'X' AND NVL(l_split_into_ind_yn,'N') = 'X' THEN
6424
6425 --split asset component transactions exist
6426 OKL_API.set_message(p_app_name => G_APP_NAME,
6427 p_msg_name => G_SPLIT_AST_COMP_TRX);
6428 RAISE OKL_API.G_EXCEPTION_ERROR;
6429
6430 ELSIF NVL(p_split_into_individuals_yn,'N') = 'X' AND NVL(l_split_into_ind_yn,'N') <> 'X' THEN
6431
6432 --split asset transactions exist
6433 OKL_API.set_message(p_app_name => G_APP_NAME,
6434 p_msg_name => G_SPLIT_ASSET_TRX);
6435 RAISE OKL_API.G_EXCEPTION_ERROR;
6436
6437 ELSIF (NVL(p_split_into_individuals_yn,'N') = NVL(l_split_into_ind_yn,'N') AND NVL(p_split_into_units,0) = NVL(l_split_units,0)
6438 --Bug# 3156924 :
6439 AND TRUNC(p_trx_date) = TRUNC(l_trx_date)) THEN
6440 -- If yes then do nothing
6441 NULL;
6442 --dbms_output.put_line('no change transaction found - doing nothing');
6443 ELSIF (NVL(p_split_into_individuals_yn,'N') <> 'X') AND
6444 (NVL(p_split_into_individuals_yn,'N') <> NVL(l_split_into_ind_yn,'N') OR NVL(p_split_into_units,0) <> NVL(l_split_units,0)
6445 --Bug# 3156924 :
6446 OR TRUNC(p_trx_date) <> TRUNC(l_trx_date)) THEN
6447 -- else
6448 -------------------------------------------------
6449 --Bug# 3156924
6450 ------------------------------------------------
6451 --update transaction header for transaction date
6452 l_trxv_rec.id := l_tas_id;
6453 l_trxv_rec.date_trans_occurred := p_trx_date;
6454 OKL_TRX_ASSETS_PUB.update_trx_ass_h_def(
6455 p_api_version => p_api_version,
6456 p_init_msg_list => p_init_msg_list,
6457 x_return_status => x_return_status,
6458 x_msg_count => x_msg_count,
6459 x_msg_data => x_msg_data,
6460 p_thpv_rec => l_trxv_rec,
6461 x_thpv_rec => x_trxv_rec);
6462
6463 --dbms_output.put_line('after updating contract trx status to processed '||x_return_status);
6464 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6465 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6466 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6467 RAISE OKL_API.G_EXCEPTION_ERROR;
6468 END IF;
6469 -------------------------------------------------
6470 --Bug# 3156924
6471 ------------------------------------------------
6472
6473 --update transaction lines for split assets
6474 l_txlv_rec.id := l_tal_id;
6475 --l_txlv_rec.depreciate_yn := p_split_into_individuals_yn;
6476 --l_txlv_rec.units_retired := p_split_into_units;
6477 l_txlv_rec.SPLIT_INTO_SINGLES_FLAG := p_split_into_individuals_yn;
6478 l_txlv_rec.SPLIT_INTO_UNITS := p_split_into_units;
6479 OKL_TXL_ASSETS_PUB.update_txl_asset_def(
6480 p_api_version => p_api_version,
6481 p_init_msg_list => p_init_msg_list,
6482 x_return_status => x_return_status,
6483 x_msg_count => x_msg_count,
6484 x_msg_data => x_msg_data,
6485 p_tlpv_rec => l_txlv_rec,
6486 x_tlpv_rec => x_txlv_rec);
6487 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6488 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6489 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6490 RAISE OKL_API.G_EXCEPTION_ERROR;
6491 END IF;
6492
6493 --fetch transaction details
6494 l_txdv_tbl := get_trx_details(p_tal_id => x_txlv_rec.id,
6495 x_no_data_found => l_no_txd_data_found);
6496 IF l_no_txd_data_found THEN
6497 NULL;
6498 --dbms_output.put_line('No Transaction Details Found');
6499 --call to create record for OKL_TXD_ASSETS_V
6500 --dbms_output.put_line('when txd assets not found '||l_ast_line_rec.description);
6501 Create_trx_details(p_api_version => p_api_version,
6502 p_init_msg_list => p_init_msg_list,
6503 x_return_status => x_return_status,
6504 x_msg_count => x_msg_count,
6505 x_msg_data => x_msg_data,
6506 p_ast_line_rec => l_ast_line_rec,
6507 p_txlv_rec => x_txlv_rec,
6508 x_txdv_tbl => x_txdv_tbl);
6509
6510 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6511 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6512 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6513 RAISE OKL_API.G_EXCEPTION_ERROR;
6514 END IF;
6515
6516 ELSE
6517 -- delete transaction details and approprately create new transaction details
6518 OKL_TXD_ASSETS_PUB.delete_txd_asset_def(p_api_version => p_api_version,
6519 p_init_msg_list => p_init_msg_list,
6520 x_return_status => x_return_status,
6521 x_msg_count => x_msg_count,
6522 x_msg_data => x_msg_data,
6523 p_adpv_tbl => l_txdv_tbl);
6524
6525 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6526 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6527 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6528 RAISE OKL_API.G_EXCEPTION_ERROR;
6529 END IF;
6530 --Bug fix# 2744213 : positioning of end if
6531 -- End If;
6532
6533 -- create new transaction details
6534 --call to create record for OKL_TXD_ASSETS_V
6535 --dbms_output.put_line('after deleting txd assets '||l_ast_line_rec.description);
6536 Create_trx_details(p_api_version => p_api_version,
6537 p_init_msg_list => p_init_msg_list,
6538 x_return_status => x_return_status,
6539 x_msg_count => x_msg_count,
6540 x_msg_data => x_msg_data,
6541 p_ast_line_rec => l_ast_line_rec,
6542 p_txlv_rec => x_txlv_rec,
6543 x_txdv_tbl => x_txdv_tbl);
6544
6545 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6546 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6547 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6548 RAISE OKL_API.G_EXCEPTION_ERROR;
6549 END IF;
6550 END IF;
6551
6552 --Bug #2723498 11.5.9 enhancement - Splitting assets by serial numbers
6553 --check if serial number data exists
6554
6555 l_srl_exists := '?';
6556 OPEN srl_exist_chk(x_txlv_rec.id);
6557 FETCH srl_exist_chk INTO l_srl_exists;
6558 IF srl_exist_chk%NOTFOUND THEN
6559 NULL;
6560 END IF;
6561 CLOSE srl_exist_chk;
6562
6563 IF l_srl_exists = '!' THEN
6564
6565 l_iipv_count := 0;
6566 OPEN get_srl_csr(x_txlv_rec.id);
6567 LOOP
6568 FETCH get_srl_csr INTO l_iipv_id;
6569 EXIT WHEN get_srl_csr%NOTFOUND;
6570 l_iipv_count := l_iipv_count + 1;
6571 l_iipv_tbl(l_iipv_count).id := l_iipv_id;
6572 END LOOP;
6573 CLOSE get_srl_csr;
6574
6575 IF l_iipv_tbl.COUNT > 0 THEN
6576 --delete the old records
6577 okl_txl_itm_insts_pub.delete_txl_itm_insts(
6578 p_api_version => p_api_version,
6579 p_init_msg_list => p_init_msg_list,
6580 x_return_status => x_return_status,
6581 x_msg_count => x_msg_count,
6582 x_msg_data => x_msg_data,
6583 p_iipv_tbl => l_iipv_tbl);
6584
6585 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6586 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6587 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6588 RAISE OKL_API.G_EXCEPTION_ERROR;
6589 END IF;
6590 END IF;
6591
6592 --create new srl numbers if required
6593 create_srl_num_trx(p_api_version => p_api_version,
6594 p_init_msg_list => p_init_msg_list,
6595 x_return_status => x_return_status,
6596 x_msg_count => x_msg_count,
6597 x_msg_data => x_msg_data,
6598 p_cle_id => p_cle_id,
6599 p_split_into_individuals_yn => p_split_into_individuals_yn,
6600 p_split_into_units => p_split_into_units,
6601 p_ib_tbl => l_ib_tbl,
6602 p_tas_id => x_txlv_rec.tas_id,
6603 p_tal_id => x_txlv_rec.id,
6604 p_asd_id => NULL);
6605
6606 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6607 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6608 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6609 RAISE OKL_API.G_EXCEPTION_ERROR;
6610 END IF;
6611
6612 ELSIF l_srl_exists = '?' THEN
6613 --create new srl numbers if required
6614 create_srl_num_trx(p_api_version => p_api_version,
6615 p_init_msg_list => p_init_msg_list,
6616 x_return_status => x_return_status,
6617 x_msg_count => x_msg_count,
6618 x_msg_data => x_msg_data,
6619 p_cle_id => p_cle_id,
6620 p_split_into_individuals_yn => p_split_into_individuals_yn,
6621 p_split_into_units => p_split_into_units,
6622 p_ib_tbl => l_ib_tbl,
6623 p_tas_id => x_txlv_rec.tas_id,
6624 p_tal_id => x_txlv_rec.id,
6625 p_asd_id => NULL);
6626
6627 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6628 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6629 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6630 RAISE OKL_API.G_EXCEPTION_ERROR;
6631 END IF;
6632 END IF; -- srl number exists
6633 --Bug #2723498 11.5.9 enhancement - Splitting assets by serial numbers
6634 --Bug fix# 2744213 : positioning of end if
6635 END IF; -- chenges in transaction
6636 END IF;
6637 OKL_API.END_ACTIVITY (x_msg_count,
6638 x_msg_data );
6639
6640 EXCEPTION
6641 WHEN OKL_API.G_EXCEPTION_ERROR THEN
6642 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6643 l_api_name,
6644 G_PKG_NAME,
6645 'OKL_API.G_RET_STS_ERROR',
6646 x_msg_count,
6647 x_msg_data,
6648 '_PVT');
6649 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6650 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6651 l_api_name,
6652 G_PKG_NAME,
6653 'OKL_API.G_RET_STS_UNEXP_ERROR',
6654 x_msg_count,
6655 x_msg_data,
6656 '_PVT');
6657 WHEN OTHERS THEN
6658 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6659 l_api_name,
6660 G_PKG_NAME,
6661 'OTHERS',
6662 x_msg_count,
6663 x_msg_data,
6664 '_PVT');
6665
6666 END Create_Split_Transaction;
6667 ------------------------------------------------------------------------------
6668 --Bug# 3156924
6669 --API Name : Create_Split_Transaction
6670 --Description : Process API to create Split Aseet Transaction Records in
6671 -- OKL_TXL_ASSETS_V and OKL_TXD_ASSETS_V
6672 --Note : Original split asset trx creation callo has been overloaded
6673 -- to include p_trx_date(trx_date) as parameter. This old
6674 -- signature preserved for backward compatability. It will
6675 -- create split asset transaction on SYSDATE
6676 --History :
6677 -- 30-Jan-2004 avsingh Creation
6678 --End of Comments
6679 ------------------------------------------------------------------------------
6680 PROCEDURE Create_Split_Transaction(p_api_version IN NUMBER,
6681 p_init_msg_list IN VARCHAR2,
6682 x_return_status OUT NOCOPY VARCHAR2,
6683 x_msg_count OUT NOCOPY NUMBER,
6684 x_msg_data OUT NOCOPY VARCHAR2,
6685 p_cle_id IN NUMBER,
6686 p_split_into_individuals_yn IN VARCHAR2,
6687 p_split_into_units IN NUMBER,
6688 p_ib_tbl IN ib_tbl_type,
6689 x_txdv_tbl OUT NOCOPY txdv_tbl_type,
6690 x_txlv_rec OUT NOCOPY txlv_rec_type,
6691 x_trxv_rec OUT NOCOPY trxv_rec_type) IS
6692
6693 l_return_status VARCHAR2(1) DEFAULT OKL_API.G_RET_STS_SUCCESS;
6694 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_SPLIT_TRANSACTION';
6695 l_api_version CONSTANT NUMBER := 1.0;
6696
6697 l_trx_date DATE := SYSDATE;
6698
6699 BEGIN
6700 x_return_status := OKL_API.G_RET_STS_SUCCESS;
6701 -- Call start_activity to create savepoint, check compatibility
6702 -- and initialize message list
6703 x_return_status := OKL_API.START_ACTIVITY (
6704 l_api_name
6705 ,p_init_msg_list
6706 ,'_PVT'
6707 ,x_return_status);
6708 -- Check if activity started successfully
6709 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6710 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6711 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6712 RAISE OKL_API.G_EXCEPTION_ERROR;
6713 END IF;
6714
6715 --call the overloded procedure :
6716 Create_Split_Transaction(p_api_version => p_api_version,
6717 p_init_msg_list => p_init_msg_list,
6718 x_return_status => x_return_status,
6719 x_msg_count => x_msg_count,
6720 x_msg_data => x_msg_data,
6721 p_cle_id => p_cle_id,
6722 p_split_into_individuals_yn => p_split_into_individuals_yn,
6723 p_split_into_units => p_split_into_units,
6724 p_ib_tbl => p_ib_tbl,
6725 --Bug# 3156924
6726 p_trx_date => l_trx_date,
6727 x_txdv_tbl => x_txdv_tbl,
6728 x_txlv_rec => x_txlv_rec,
6729 x_trxv_rec => x_trxv_rec);
6730
6731 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6732 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6733 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6734 RAISE OKL_API.G_EXCEPTION_ERROR;
6735 END IF;
6736 OKL_API.END_ACTIVITY (x_msg_count,
6737 x_msg_data );
6738
6739 EXCEPTION
6740 WHEN OKL_API.G_EXCEPTION_ERROR THEN
6741 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6742 l_api_name,
6743 G_PKG_NAME,
6744 'OKL_API.G_RET_STS_ERROR',
6745 x_msg_count,
6746 x_msg_data,
6747 '_PVT');
6748 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6749 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6750 l_api_name,
6751 G_PKG_NAME,
6752 'OKL_API.G_RET_STS_UNEXP_ERROR',
6753 x_msg_count,
6754 x_msg_data,
6755 '_PVT');
6756 WHEN OTHERS THEN
6757 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6758 l_api_name,
6759 G_PKG_NAME,
6760 'OTHERS',
6761 x_msg_count,
6762 x_msg_data,
6763 '_PVT');
6764
6765 END Create_Split_Transaction;
6766 -------------------------------------------------------------------------------------
6767 --Bug# 3156924
6768 --API Name : Create_Split_Transaction
6769 --Description : Process API to create Split Aseet Transaction Records in
6770 -- OKL_TXL_ASSETS_V and OKL_TXD_ASSETS_V
6771 --Note : New signature added to accomodate p_trx_date being passed. This is
6772 -- the one called from the UI. This will create transactions in OKL
6773 -- _TXL_ITM_INSTS if the asset is serialized ad being split by units
6774 -- UI will mark the selected records as selected_for_split_flag = 'Y'
6775 -- for all the assets being split out
6776 --History :
6777 -- 30-Jan-2004 avsingh Creation
6778 --End of Comments
6779 ------------------------------------------------------------------------------
6780 PROCEDURE Create_Split_Transaction(p_api_version IN NUMBER,
6781 p_init_msg_list IN VARCHAR2,
6782 x_return_status OUT NOCOPY VARCHAR2,
6783 x_msg_count OUT NOCOPY NUMBER,
6784 x_msg_data OUT NOCOPY VARCHAR2,
6785 p_cle_id IN NUMBER,
6786 p_split_into_individuals_yn IN VARCHAR2,
6787 p_split_into_units IN NUMBER,
6788 p_trx_date IN DATE,
6789 x_txdv_tbl OUT NOCOPY txdv_tbl_type,
6790 x_txlv_rec OUT NOCOPY txlv_rec_type,
6791 x_trxv_rec OUT NOCOPY trxv_rec_type) IS
6792
6793 l_return_status VARCHAR2(1) DEFAULT OKL_API.G_RET_STS_SUCCESS;
6794 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_SPLIT_TRANSACTION';
6795 l_api_version CONSTANT NUMBER := 1.0;
6796 l_ib_tbl ib_tbl_type;
6797
6798 /*
6799 -- mvasudev, 08/23/2004
6800 -- Added PROCEDURE to enable Business Event
6801 */
6802 PROCEDURE raise_business_event(
6803 x_return_status OUT NOCOPY VARCHAR2
6804 )
6805 IS
6806 CURSOR l_okl_cle_chr_csr IS
6807 SELECT dnz_chr_id
6808 FROM okc_k_lines_b
6809 WHERE id = p_cle_id;
6810
6811 l_parameter_list wf_parameter_list_t;
6812 BEGIN
6813
6814 FOR l_okl_cle_chr_rec IN l_okl_cle_chr_csr
6815 LOOP
6816
6817 wf_event.AddParameterToList(G_WF_ITM_CONTRACT_ID,l_okl_cle_chr_rec.dnz_chr_id,l_parameter_list);
6818 wf_event.AddParameterToList(G_WF_ITM_ASSET_ID,p_cle_id,l_parameter_list);
6819 wf_event.AddParameterToList(G_WF_ITM_TRANS_DATE,fnd_date.date_to_canonical(p_trx_date),l_parameter_list);
6820
6821 OKL_WF_PVT.raise_event (p_api_version => p_api_version,
6822 p_init_msg_list => p_init_msg_list,
6823 x_return_status => x_return_status,
6824 x_msg_count => x_msg_count,
6825 x_msg_data => x_msg_data,
6826 p_event_name => G_WF_EVT_KHR_SPLIT_ASSET_REQ,
6827 p_parameters => l_parameter_list);
6828
6829 END LOOP;
6830
6831 EXCEPTION
6832 WHEN OTHERS THEN
6833 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
6834 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6835 END raise_business_event;
6836
6837 /*
6838 -- mvasudev, 08/23/2004
6839 -- END, PROCEDURE to enable Business Event
6840 */
6841
6842 BEGIN
6843 x_return_status := OKL_API.G_RET_STS_SUCCESS;
6844 -- Call start_activity to create savepoint, check compatibility
6845 -- and initialize message list
6846 x_return_status := OKL_API.START_ACTIVITY (
6847 l_api_name
6848 ,p_init_msg_list
6849 ,'_PVT'
6850 ,x_return_status);
6851 -- Check if activity started successfully
6852 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6853 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6854 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6855 RAISE OKL_API.G_EXCEPTION_ERROR;
6856 END IF;
6857
6858 --call the overloded procedure :
6859 Create_Split_Transaction(p_api_version => p_api_version,
6860 p_init_msg_list => p_init_msg_list,
6861 x_return_status => x_return_status,
6862 x_msg_count => x_msg_count,
6863 x_msg_data => x_msg_data,
6864 p_cle_id => p_cle_id,
6865 p_split_into_individuals_yn => p_split_into_individuals_yn,
6866 p_split_into_units => p_split_into_units,
6867 p_ib_tbl => l_ib_tbl,
6868 p_trx_date => p_trx_date,
6869 x_txdv_tbl => x_txdv_tbl,
6870 x_txlv_rec => x_txlv_rec,
6871 x_trxv_rec => x_trxv_rec);
6872
6873
6874 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6875 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6876 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6877 RAISE OKL_API.G_EXCEPTION_ERROR;
6878 END IF;
6879
6880 /*
6881 -- mvasudev, 08/23/2004
6882 -- Code change to enable Business Event
6883 */
6884 raise_business_event(x_return_status => x_return_status);
6885 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6886 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6887 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6888 RAISE OKL_API.G_EXCEPTION_ERROR;
6889 END IF;
6890
6891 /*
6892 -- mvasudev, 08/23/2004
6893 -- END, Code change to enable Business Event
6894 */
6895
6896 OKL_API.END_ACTIVITY (x_msg_count,
6897 x_msg_data );
6898
6899 EXCEPTION
6900 WHEN OKL_API.G_EXCEPTION_ERROR THEN
6901 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6902 l_api_name,
6903 G_PKG_NAME,
6904 'OKL_API.G_RET_STS_ERROR',
6905 x_msg_count,
6906 x_msg_data,
6907 '_PVT');
6908 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6909 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6910 l_api_name,
6911 G_PKG_NAME,
6912 'OKL_API.G_RET_STS_UNEXP_ERROR',
6913 x_msg_count,
6914 x_msg_data,
6915 '_PVT');
6916 WHEN OTHERS THEN
6917 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6918 l_api_name,
6919 G_PKG_NAME,
6920 'OTHERS',
6921 x_msg_count,
6922 x_msg_data,
6923 '_PVT');
6924
6925 END Create_Split_Transaction;
6926 ---------------
6927 --Bug# 3156924
6928 ---------------
6929 --Bug #2723498 : 11.5.9 Split by serial numbers enhancement
6930 --------------------------------------------------------------------------------
6931 --Start of Comments
6932 --API Name : Create_Split_Transaction
6933 --Description : Process API to create Split Aseet Transaction Records in
6934 -- OKL_TXL_ASSETS_V and OKL_TXD_ASSETS_V
6935 -- 1. Take the line details to be split
6936 -- 2. Set the status of the contract as inactive
6937 -- 3. Create and save source record into okl_trx_assets_v
6938 -- 4. Create and save target record into okl_txd_assets_v
6939 --Note : old signature kept for backward compatability. This will be the
6940 -- the one called from the UI. This will create transactions in OKL
6941 -- _TXL_ITM_INSTS if the asset is serialized ad being split by units
6942 -- UI will mark the selected records as selected_for_split_flag = 'Y'
6943 -- for all the assets being split out
6944 --History :
6945 -- 10-OCT-2001 avsingh Creation
6946 --End of Comments
6947 ------------------------------------------------------------------------------
6948 PROCEDURE Create_Split_Transaction(p_api_version IN NUMBER,
6949 p_init_msg_list IN VARCHAR2,
6950 x_return_status OUT NOCOPY VARCHAR2,
6951 x_msg_count OUT NOCOPY NUMBER,
6952 x_msg_data OUT NOCOPY VARCHAR2,
6953 p_cle_id IN NUMBER,
6954 p_split_into_individuals_yn IN VARCHAR2,
6955 p_split_into_units IN NUMBER,
6956 x_txdv_tbl OUT NOCOPY txdv_tbl_type,
6957 x_txlv_rec OUT NOCOPY txlv_rec_type,
6958 x_trxv_rec OUT NOCOPY trxv_rec_type) IS
6959
6960 l_return_status VARCHAR2(1) DEFAULT OKL_API.G_RET_STS_SUCCESS;
6961 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_SPLIT_TRANSACTION';
6962 l_api_version CONSTANT NUMBER := 1.0;
6963 l_ib_tbl ib_tbl_type;
6964 BEGIN
6965 x_return_status := OKL_API.G_RET_STS_SUCCESS;
6966 -- Call start_activity to create savepoint, check compatibility
6967 -- and initialize message list
6968 x_return_status := OKL_API.START_ACTIVITY (
6969 l_api_name
6970 ,p_init_msg_list
6971 ,'_PVT'
6972 ,x_return_status);
6973 -- Check if activity started successfully
6974 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6975 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6976 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6977 RAISE OKL_API.G_EXCEPTION_ERROR;
6978 END IF;
6979
6980 --call the overloded procedure :
6981 Create_Split_Transaction(p_api_version => p_api_version,
6982 p_init_msg_list => p_init_msg_list,
6983 x_return_status => x_return_status,
6984 x_msg_count => x_msg_count,
6985 x_msg_data => x_msg_data,
6986 p_cle_id => p_cle_id,
6987 p_split_into_individuals_yn => p_split_into_individuals_yn,
6988 p_split_into_units => p_split_into_units,
6989 p_ib_tbl => l_ib_tbl,
6990 x_txdv_tbl => x_txdv_tbl,
6991 x_txlv_rec => x_txlv_rec,
6992 x_trxv_rec => x_trxv_rec);
6993
6994 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6995 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6996 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6997 RAISE OKL_API.G_EXCEPTION_ERROR;
6998 END IF;
6999 OKL_API.END_ACTIVITY (x_msg_count,
7000 x_msg_data );
7001
7002 EXCEPTION
7003 WHEN OKL_API.G_EXCEPTION_ERROR THEN
7004 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7005 l_api_name,
7006 G_PKG_NAME,
7007 'OKL_API.G_RET_STS_ERROR',
7008 x_msg_count,
7009 x_msg_data,
7010 '_PVT');
7011 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7012 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7013 l_api_name,
7014 G_PKG_NAME,
7015 'OKL_API.G_RET_STS_UNEXP_ERROR',
7016 x_msg_count,
7017 x_msg_data,
7018 '_PVT');
7019 WHEN OTHERS THEN
7020 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7021 l_api_name,
7022 G_PKG_NAME,
7023 'OTHERS',
7024 x_msg_count,
7025 x_msg_data,
7026 '_PVT');
7027
7028 END Create_Split_Transaction;
7029 --------------------------------------------------------------------------------
7030 --Start of Comments
7031 --Procedure Name : Update Split transaction
7032 --Description : Updates the split asset number and description
7033 -- on transaction details table
7034 --History :
7035 -- 08-Apr-2001 ashish.singh Created
7036 --End of Comments
7037 --------------------------------------------------------------------------------
7038 PROCEDURE Update_Split_Transaction(p_api_version IN NUMBER,
7039 p_init_msg_list IN VARCHAR2,
7040 x_return_status OUT NOCOPY VARCHAR2,
7041 x_msg_count OUT NOCOPY NUMBER,
7042 x_msg_data OUT NOCOPY VARCHAR2,
7043 p_cle_id IN NUMBER,
7044 p_txdv_tbl IN txdv_tbl_type,
7045 x_txdv_tbl OUT NOCOPY txdv_tbl_type) IS
7046
7047 l_return_status VARCHAR2(1) DEFAULT OKL_API.G_RET_STS_SUCCESS;
7048 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_SPLIT_TRX';
7049 l_api_version CONSTANT NUMBER := 1.0;
7050
7051 CURSOR fa_line_csr(p_cle_id IN NUMBER) IS
7052 SELECT cle.id
7053 FROM OKC_K_LINES_B cle,
7054 OKC_LINE_STYLES_B lse
7055 WHERE cle.cle_id = p_cle_id
7056 AND cle.lse_id = lse.id
7057 AND lse.lty_code = 'FIXED_ASSET'
7058 --Bug# 2761799 : Do not check for active status on sysdate
7059 --AND trunc(nvl(start_date,sysdate)) <= trunc(sysdate)
7060 --AND trunc(nvl(end_date,sysdate+1)) > trunc(sysdate)
7061 --Bug# 5946411: ER :commented following
7062 -- AND cle.sts_code = 'BOOKED';
7063 ;
7064 --Bug# 5946411: ER End
7065 l_txlv_rec txlv_rec_type;
7066 l_txdv_tbl txdv_tbl_type;
7067 l_txdv_rec txdv_rec_type;
7068 lx_txdv_rec txdv_rec_type;
7069 lx_txdv_tbl txdv_tbl_type;
7070
7071 l_no_data_found BOOLEAN DEFAULT TRUE;
7072 l_fa_line_id NUMBER;
7073
7074 j NUMBER;
7075
7076 BEGIN
7077
7078 -- Call start_activity to create savepoint, check compatibility
7079 -- and initialize message list
7080 x_return_status := OKL_API.START_ACTIVITY (
7081 l_api_name
7082 ,p_init_msg_list
7083 ,'_PVT'
7084 ,x_return_status);
7085 -- Check if activity started successfully
7086 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7087 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7088 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7089 RAISE OKL_API.G_EXCEPTION_ERROR;
7090 END IF;
7091
7092 --Verify cle_id
7093 x_return_status := verify_cle_id(p_cle_id => p_cle_id);
7094 IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
7095 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7096 ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
7097 RAISE OKL_API.G_EXCEPTION_ERROR;
7098 END IF;
7099
7100 --get fixed asset line
7101 OPEN fa_line_csr(p_cle_id => p_cle_id) ;
7102 FETCH fa_line_csr INTO l_fa_line_id;
7103 IF fa_line_csr%NOTFOUND THEN
7104 NULL; --not exactly
7105 ELSE
7106 l_txlv_rec := get_txlv_rec(l_fa_line_id, l_no_data_found);
7107 IF l_no_data_found THEN
7108 NULL;
7109 --dbms_output.put_line('No pending Split Asset Transactions for this Asset');
7110 OKL_API.set_message(p_app_name => G_APP_NAME,
7111 p_msg_name => G_SPLIT_AST_TRX_NOT_FOUND
7112 );
7113 ELSE
7114 l_txdv_tbl := p_txdv_tbl;
7115 --1. update txd assets
7116 IF l_txdv_tbl.LAST IS NOT NULL THEN
7117 j := 0;
7118 LOOP
7119 IF l_txdv_tbl.LAST = j THEN
7120 EXIT;
7121 ELSE
7122 j := j+1;
7123 --dbms_output.put_line('J ='||to_char(j));
7124 l_txdv_rec.id := l_txdv_tbl(j).id;
7125 --Bug# 4994713: convert asset number to upper case
7126 l_txdv_rec.asset_number := UPPER(l_txdv_tbl(j).asset_number);
7127 l_txdv_rec.description := l_txdv_tbl(j).description;
7128 --dbms_output.put_line('l_txdv_rec.id'||to_char(l_txdv_rec.id));
7129 IF (l_txdv_rec.id IS NULL) OR (l_txdv_rec.id = OKL_API.G_MISS_NUM) THEN
7130 EXIT;
7131 ELSE
7132
7133 OKL_TXD_ASSETS_PUB.update_txd_asset_def(
7134 p_api_version => p_api_version,
7135 p_init_msg_list => p_init_msg_list,
7136 x_return_status => x_return_status,
7137 x_msg_count => x_msg_count,
7138 x_msg_data => x_msg_data,
7139 p_adpv_rec => l_txdv_rec,
7140 x_adpv_rec => lx_txdv_rec);
7141 --dbms_output.put_line('after updating the transaction details for asset number '||l_txdv_rec.asset_number||':'||x_return_status);
7142 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7143 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7144 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7145 RAISE OKL_API.G_EXCEPTION_ERROR;
7146 END IF;
7147 ---
7148
7149 IF lx_txdv_rec.target_kle_id IS NULL THEN
7150 x_return_status := validate_attributes(p_txdv_rec => lx_txdv_rec);
7151
7152 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7153 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7154 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7155 RAISE OKL_API.G_EXCEPTION_ERROR;
7156 END IF;
7157 END IF;
7158
7159 --validate if original asset number has been modified
7160 IF l_txlv_rec.kle_id = lx_txdv_rec.target_kle_id THEN
7161 IF (lx_txdv_rec.asset_number <> l_txlv_rec.asset_number)
7162 OR (lx_txdv_rec.description <> l_txlv_rec.description) THEN
7163 OKL_API.Set_message(p_app_name => G_APP_NAME,
7164 p_msg_name => G_SPLIT_PARENT_NUMBER_CHANGE);
7165 RAISE OKL_API.G_EXCEPTION_ERROR;
7166 END IF;
7167 END IF;
7168
7169 lx_txdv_tbl(j) := lx_txdv_rec;
7170 END IF;
7171 END IF;
7172 END LOOP;
7173 END IF;
7174 -----
7175 END IF;
7176 END IF;
7177 x_txdv_tbl := lx_txdv_tbl;
7178 OKL_API.END_ACTIVITY (x_msg_count,
7179 x_msg_data );
7180 EXCEPTION
7181 WHEN OKL_API.G_EXCEPTION_ERROR THEN
7182 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7183 l_api_name,
7184 G_PKG_NAME,
7185 'OKL_API.G_RET_STS_ERROR',
7186 x_msg_count,
7187 x_msg_data,
7188 '_PVT');
7189 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7190 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7191 l_api_name,
7192 G_PKG_NAME,
7193 'OKL_API.G_RET_STS_UNEXP_ERROR',
7194 x_msg_count,
7195 x_msg_data,
7196 '_PVT');
7197 WHEN OTHERS THEN
7198 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7199 l_api_name,
7200 G_PKG_NAME,
7201 'OTHERS',
7202 x_msg_count,
7203 x_msg_data,
7204 '_PVT');
7205 END Update_Split_Transaction;
7206 ---------------------------------------------------------------------------
7207 -- FUNCTION get_rec for: OKC_K_ITEMS_V
7208 ---------------------------------------------------------------------------
7209 FUNCTION get_cimv_rec (
7210 p_cle_id IN NUMBER,
7211 x_no_data_found OUT NOCOPY BOOLEAN
7212 ) RETURN cimv_rec_type IS
7213 CURSOR okc_cimv_csr (p_cle_id IN NUMBER) IS
7214 SELECT
7215 ID,
7216 OBJECT_VERSION_NUMBER,
7217 CLE_ID,
7218 CHR_ID,
7219 CLE_ID_FOR,
7220 DNZ_CHR_ID,
7221 OBJECT1_ID1,
7222 OBJECT1_ID2,
7223 JTOT_OBJECT1_CODE,
7224 UOM_CODE,
7225 EXCEPTION_YN,
7226 NUMBER_OF_ITEMS,
7227 UPG_ORIG_SYSTEM_REF,
7228 UPG_ORIG_SYSTEM_REF_ID,
7229 PRICED_ITEM_YN,
7230 CREATED_BY,
7231 CREATION_DATE,
7232 LAST_UPDATED_BY,
7233 LAST_UPDATE_DATE,
7234 LAST_UPDATE_LOGIN
7235 FROM Okc_K_Items_V
7236 WHERE okc_k_items_v.cle_id = p_cle_id;
7237 l_cimv_rec cimv_rec_type;
7238 BEGIN
7239 x_no_data_found := TRUE;
7240 -- Get current database values
7241 OPEN okc_cimv_csr (p_cle_id);
7242 FETCH okc_cimv_csr INTO
7243 l_cimv_rec.ID,
7244 l_cimv_rec.OBJECT_VERSION_NUMBER,
7245 l_cimv_rec.CLE_ID,
7246 l_cimv_rec.CHR_ID,
7247 l_cimv_rec.CLE_ID_FOR,
7248 l_cimv_rec.DNZ_CHR_ID,
7249 l_cimv_rec.OBJECT1_ID1,
7250 l_cimv_rec.OBJECT1_ID2,
7251 l_cimv_rec.JTOT_OBJECT1_CODE,
7252 l_cimv_rec.UOM_CODE,
7253 l_cimv_rec.EXCEPTION_YN,
7254 l_cimv_rec.NUMBER_OF_ITEMS,
7255 l_cimv_rec.UPG_ORIG_SYSTEM_REF,
7256 l_cimv_rec.UPG_ORIG_SYSTEM_REF_ID,
7257 l_cimv_rec.PRICED_ITEM_YN,
7258 l_cimv_rec.CREATED_BY,
7259 l_cimv_rec.CREATION_DATE,
7260 l_cimv_rec.LAST_UPDATED_BY,
7261 l_cimv_rec.LAST_UPDATE_DATE,
7262 l_cimv_rec.LAST_UPDATE_LOGIN;
7263 x_no_data_found := okc_cimv_csr%NOTFOUND;
7264 CLOSE okc_cimv_csr;
7265 RETURN(l_cimv_rec);
7266 END get_cimv_rec;
7267
7268 FUNCTION get_cimv_rec (
7269 p_cle_id IN NUMBER
7270 ) RETURN cimv_rec_type IS
7271 l_row_notfound BOOLEAN := TRUE;
7272 BEGIN
7273 RETURN(get_cimv_rec(p_cle_id, l_row_notfound));
7274 END get_cimv_rec;
7275 ---------------------------------------------------------------------------
7276 -- FUNCTION get_rec for: OKL_K_LINES_V
7277 ---------------------------------------------------------------------------
7278 FUNCTION get_klev_rec (
7279 p_cle_id IN NUMBER,
7280 x_no_data_found OUT NOCOPY BOOLEAN
7281 ) RETURN klev_rec_type IS
7282 CURSOR okl_k_lines_v_csr (p_id IN NUMBER) IS
7283 SELECT
7284 ID,
7285 OBJECT_VERSION_NUMBER,
7286 KLE_ID,
7287 STY_ID,
7288 PRC_CODE,
7289 FCG_CODE,
7290 NTY_CODE,
7291 ESTIMATED_OEC,
7292 LAO_AMOUNT,
7293 TITLE_DATE,
7294 FEE_CHARGE,
7295 LRS_PERCENT,
7296 INITIAL_DIRECT_COST,
7297 PERCENT_STAKE,
7298 PERCENT,
7299 EVERGREEN_PERCENT,
7300 AMOUNT_STAKE,
7301 OCCUPANCY,
7302 COVERAGE,
7303 RESIDUAL_PERCENTAGE,
7304 DATE_LAST_INSPECTION,
7305 DATE_SOLD,
7306 LRV_AMOUNT,
7307 CAPITAL_REDUCTION,
7308 DATE_NEXT_INSPECTION_DUE,
7309 DATE_RESIDUAL_LAST_REVIEW,
7310 DATE_LAST_REAMORTISATION,
7311 VENDOR_ADVANCE_PAID,
7312 WEIGHTED_AVERAGE_LIFE,
7313 TRADEIN_AMOUNT,
7314 BOND_EQUIVALENT_YIELD,
7315 TERMINATION_PURCHASE_AMOUNT,
7316 REFINANCE_AMOUNT,
7317 YEAR_BUILT,
7318 DELIVERED_DATE,
7319 CREDIT_TENANT_YN,
7320 DATE_LAST_CLEANUP,
7321 YEAR_OF_MANUFACTURE,
7322 COVERAGE_RATIO,
7323 REMARKETED_AMOUNT,
7324 GROSS_SQUARE_FOOTAGE,
7325 PRESCRIBED_ASSET_YN,
7326 DATE_REMARKETED,
7327 NET_RENTABLE,
7328 REMARKET_MARGIN,
7329 DATE_LETTER_ACCEPTANCE,
7330 REPURCHASED_AMOUNT,
7331 DATE_COMMITMENT_EXPIRATION,
7332 DATE_REPURCHASED,
7333 DATE_APPRAISAL,
7334 RESIDUAL_VALUE,
7335 APPRAISAL_VALUE,
7336 SECURED_DEAL_YN,
7337 GAIN_LOSS,
7338 FLOOR_AMOUNT,
7339 RE_LEASE_YN,
7340 PREVIOUS_CONTRACT,
7341 TRACKED_RESIDUAL,
7342 DATE_TITLE_RECEIVED,
7343 AMOUNT,
7344 ATTRIBUTE_CATEGORY,
7345 ATTRIBUTE1,
7346 ATTRIBUTE2,
7347 ATTRIBUTE3,
7348 ATTRIBUTE4,
7349 ATTRIBUTE5,
7350 ATTRIBUTE6,
7351 ATTRIBUTE7,
7352 ATTRIBUTE8,
7353 ATTRIBUTE9,
7354 ATTRIBUTE10,
7355 ATTRIBUTE11,
7356 ATTRIBUTE12,
7357 ATTRIBUTE13,
7358 ATTRIBUTE14,
7359 ATTRIBUTE15,
7360 STY_ID_FOR,
7361 CLG_ID,
7362 CREATED_BY,
7363 CREATION_DATE,
7364 LAST_UPDATED_BY,
7365 LAST_UPDATE_DATE,
7366 LAST_UPDATE_LOGIN,
7367 DATE_FUNDING,
7368 DATE_FUNDING_REQUIRED,
7369 DATE_ACCEPTED,
7370 DATE_DELIVERY_EXPECTED,
7371 OEC,
7372 CAPITAL_AMOUNT,
7373 RESIDUAL_GRNTY_AMOUNT,
7374 RESIDUAL_CODE,
7375 RVI_PREMIUM,
7376 CREDIT_NATURE,
7377 CAPITALIZED_INTEREST,
7378 CAPITAL_REDUCTION_PERCENT,
7379 DATE_PAY_INVESTOR_START,
7380 PAY_INVESTOR_FREQUENCY,
7381 PAY_INVESTOR_EVENT,
7382 PAY_INVESTOR_REMITTANCE_DAYS,
7383 --Bug# 2998115
7384 FEE_TYPE,
7385 --Bug# 3143522 : Subsidies
7386 SUBSIDY_ID,
7387 --SUBSIDIZED_OEC,
7388 --SUBSIDIZED_CAP_AMOUNT,
7389 PRE_TAX_YIELD,
7390 AFTER_TAX_YIELD,
7391 IMPLICIT_INTEREST_RATE,
7392 IMPLICIT_NON_IDC_INTEREST_RATE,
7393 PRE_TAX_IRR,
7394 AFTER_TAX_IRR,
7395 SUBSIDY_OVERRIDE_AMOUNT,
7396 --quote
7397 SUB_PRE_TAX_YIELD,
7398 SUB_AFTER_TAX_YIELD,
7399 SUB_IMPL_INTEREST_RATE,
7400 SUB_IMPL_NON_IDC_INT_RATE,
7401 SUB_PRE_TAX_IRR,
7402 SUB_AFTER_TAX_IRR,
7403 --Bug# 2994971
7404 ITEM_INSURANCE_CATEGORY,
7405 --Bug# 3973640 : 11.5.10+ schema changes
7406 QTE_ID,
7407 FUNDING_DATE,
7408 STREAM_TYPE_SUBCLASS
7409 -- Bug#4508050 - smadhava - Added - Start
7410 , FEE_PURPOSE_CODE
7411 , DATE_FUNDING_EXPECTED
7412 , DATE_DELIVERY_EXPECTED
7413 , MANUFACTURER_NAME
7414 , MODEL_NUMBER
7415 , DOWN_PAYMENT_RECEIVER_CODE
7416 , CAPITALIZE_DOWN_PAYMENT_YN
7417 -- Bug#4508050 - smadhava - Added - End
7418 --Bug# 4631549
7419 ,Expected_asset_cost
7420
7421 FROM OKL_K_LINES_V
7422 WHERE OKL_K_LINES_V.id = p_id;
7423 l_klev_rec klev_rec_type;
7424 BEGIN
7425
7426 x_no_data_found := TRUE;
7427 -- Get current database values
7428 OPEN okl_k_lines_v_csr (p_cle_id);
7429 FETCH okl_k_lines_v_csr INTO
7430 l_klev_rec.ID,
7431 l_klev_rec.OBJECT_VERSION_NUMBER,
7432 l_klev_rec.KLE_ID,
7433 l_klev_rec.STY_ID,
7434 l_klev_rec.PRC_CODE,
7435 l_klev_rec.FCG_CODE,
7436 l_klev_rec.NTY_CODE,
7437 l_klev_rec.ESTIMATED_OEC,
7438 l_klev_rec.LAO_AMOUNT,
7439 l_klev_rec.TITLE_DATE,
7440 l_klev_rec.FEE_CHARGE,
7441 l_klev_rec.LRS_PERCENT,
7442 l_klev_rec.INITIAL_DIRECT_COST,
7443 l_klev_rec.PERCENT_STAKE,
7444 l_klev_rec.PERCENT,
7445 l_klev_rec.EVERGREEN_PERCENT,
7446 l_klev_rec.AMOUNT_STAKE,
7447 l_klev_rec.OCCUPANCY,
7448 l_klev_rec.COVERAGE,
7449 l_klev_rec.RESIDUAL_PERCENTAGE,
7450 l_klev_rec.DATE_LAST_INSPECTION,
7451 l_klev_rec.DATE_SOLD,
7452 l_klev_rec.LRV_AMOUNT,
7453 l_klev_rec.CAPITAL_REDUCTION,
7454 l_klev_rec.DATE_NEXT_INSPECTION_DUE,
7455 l_klev_rec.DATE_RESIDUAL_LAST_REVIEW,
7456 l_klev_rec.DATE_LAST_REAMORTISATION,
7457 l_klev_rec.VENDOR_ADVANCE_PAID,
7458 l_klev_rec.WEIGHTED_AVERAGE_LIFE,
7459 l_klev_rec.TRADEIN_AMOUNT,
7460 l_klev_rec.BOND_EQUIVALENT_YIELD,
7461 l_klev_rec.TERMINATION_PURCHASE_AMOUNT,
7462 l_klev_rec.REFINANCE_AMOUNT,
7463 l_klev_rec.YEAR_BUILT,
7464 l_klev_rec.DELIVERED_DATE,
7465 l_klev_rec.CREDIT_TENANT_YN,
7466 l_klev_rec.DATE_LAST_CLEANUP,
7467 l_klev_rec.YEAR_OF_MANUFACTURE,
7468 l_klev_rec.COVERAGE_RATIO,
7469 l_klev_rec.REMARKETED_AMOUNT,
7470 l_klev_rec.GROSS_SQUARE_FOOTAGE,
7471 l_klev_rec.PRESCRIBED_ASSET_YN,
7472 l_klev_rec.DATE_REMARKETED,
7473 l_klev_rec.NET_RENTABLE,
7474 l_klev_rec.REMARKET_MARGIN,
7475 l_klev_rec.DATE_LETTER_ACCEPTANCE,
7476 l_klev_rec.REPURCHASED_AMOUNT,
7477 l_klev_rec.DATE_COMMITMENT_EXPIRATION,
7478 l_klev_rec.DATE_REPURCHASED,
7479 l_klev_rec.DATE_APPRAISAL,
7480 l_klev_rec.RESIDUAL_VALUE,
7481 l_klev_rec.APPRAISAL_VALUE,
7482 l_klev_rec.SECURED_DEAL_YN,
7483 l_klev_rec.GAIN_LOSS,
7484 l_klev_rec.FLOOR_AMOUNT,
7485 l_klev_rec.RE_LEASE_YN,
7486 l_klev_rec.PREVIOUS_CONTRACT,
7487 l_klev_rec.TRACKED_RESIDUAL,
7488 l_klev_rec.DATE_TITLE_RECEIVED,
7489 l_klev_rec.AMOUNT,
7490 l_klev_rec.ATTRIBUTE_CATEGORY,
7491 l_klev_rec.ATTRIBUTE1,
7492 l_klev_rec.ATTRIBUTE2,
7493 l_klev_rec.ATTRIBUTE3,
7494 l_klev_rec.ATTRIBUTE4,
7495 l_klev_rec.ATTRIBUTE5,
7496 l_klev_rec.ATTRIBUTE6,
7497 l_klev_rec.ATTRIBUTE7,
7498 l_klev_rec.ATTRIBUTE8,
7499 l_klev_rec.ATTRIBUTE9,
7500 l_klev_rec.ATTRIBUTE10,
7501 l_klev_rec.ATTRIBUTE11,
7502 l_klev_rec.ATTRIBUTE12,
7503 l_klev_rec.ATTRIBUTE13,
7504 l_klev_rec.ATTRIBUTE14,
7505 l_klev_rec.ATTRIBUTE15,
7506 l_klev_rec.STY_ID_FOR,
7507 l_klev_rec.CLG_ID,
7508 l_klev_rec.CREATED_BY,
7509 l_klev_rec.CREATION_DATE,
7510 l_klev_rec.LAST_UPDATED_BY,
7511 l_klev_rec.LAST_UPDATE_DATE,
7512 l_klev_rec.LAST_UPDATE_LOGIN,
7513 l_klev_rec.DATE_FUNDING,
7514 l_klev_rec.DATE_FUNDING_REQUIRED,
7515 l_klev_rec.DATE_ACCEPTED,
7516 l_klev_rec.DATE_DELIVERY_EXPECTED,
7517 l_klev_rec.OEC,
7518 l_klev_rec.CAPITAL_AMOUNT,
7519 l_klev_rec.RESIDUAL_GRNTY_AMOUNT,
7520 l_klev_rec.RESIDUAL_CODE,
7521 l_klev_rec.RVI_PREMIUM,
7522 l_klev_rec.CREDIT_NATURE,
7523 l_klev_rec.CAPITALIZED_INTEREST,
7524 l_klev_rec.CAPITAL_REDUCTION_PERCENT,
7525 l_klev_rec.DATE_PAY_INVESTOR_START,
7526 l_klev_rec.PAY_INVESTOR_FREQUENCY,
7527 l_klev_rec.PAY_INVESTOR_EVENT,
7528 l_klev_rec.PAY_INVESTOR_REMITTANCE_DAYS,
7529 --Bug# 2998115:
7530 l_klev_rec.FEE_TYPE,
7531 --Bug#3143522 : Subsidies
7532 l_klev_rec.SUBSIDY_ID,
7533 --l_klev_rec.SUBSIDIZED_OEC,
7534 --l_klev_rec.SUBSIDIZED_CAP_AMOUNT,
7535 l_klev_rec.PRE_TAX_YIELD,
7536 l_klev_rec.AFTER_TAX_YIELD,
7537 l_klev_rec.IMPLICIT_INTEREST_RATE,
7538 l_klev_rec.IMPLICIT_NON_IDC_INTEREST_RATE,
7539 l_klev_rec.PRE_TAX_IRR,
7540 l_klev_rec.AFTER_TAX_IRR,
7541 l_klev_rec.SUBSIDY_OVERRIDE_AMOUNT,
7542 --quote
7543 l_klev_rec.SUB_PRE_TAX_YIELD,
7544 l_klev_rec.SUB_AFTER_TAX_YIELD,
7545 l_klev_rec.SUB_IMPL_INTEREST_RATE,
7546 l_klev_rec.SUB_IMPL_NON_IDC_INT_RATE,
7547 l_klev_rec.SUB_PRE_TAX_IRR,
7548 l_klev_rec.SUB_AFTER_TAX_IRR,
7549 --Bug# 2994971 :
7550 l_klev_rec.ITEM_INSURANCE_CATEGORY,
7551 --Bug# 3973640 : 11.5.10+ schema changes
7552 l_klev_rec.QTE_ID,
7553 l_klev_rec.FUNDING_DATE,
7554 l_klev_rec.STREAM_TYPE_SUBCLASS
7555 -- Bug#4508050 - smadhava - Added - Start
7556 , l_klev_rec.FEE_PURPOSE_CODE
7557 , l_klev_rec.DATE_FUNDING_EXPECTED
7558 , l_klev_rec.DATE_DELIVERY_EXPECTED
7559 , l_klev_rec.MANUFACTURER_NAME
7560 , l_klev_rec.MODEL_NUMBER
7561 , l_klev_rec.DOWN_PAYMENT_RECEIVER_CODE
7562 , l_klev_rec.CAPITALIZE_DOWN_PAYMENT_YN
7563 -- Bug#4508050 - smadhava - Added - End
7564 --Bug# 4631549
7565 ,l_klev_rec.Expected_Asset_Cost
7566 ;
7567 x_no_data_found := okl_k_lines_v_csr%NOTFOUND;
7568 CLOSE okl_k_lines_v_csr;
7569 RETURN(l_klev_rec);
7570 END get_klev_rec;
7571
7572 FUNCTION get_klev_rec (
7573 p_cle_id IN NUMBER
7574 ) RETURN klev_rec_type IS
7575 l_row_notfound BOOLEAN := TRUE;
7576 BEGIN
7577 RETURN(get_klev_rec(p_cle_id, l_row_notfound));
7578 END get_klev_rec;
7579 ---------------------------------------------------------------------------
7580 -- FUNCTION get_rec for: OKC_K_LINES_V
7581 ---------------------------------------------------------------------------
7582 FUNCTION get_clev_rec (
7583 p_cle_id IN NUMBER,
7584 x_no_data_found OUT NOCOPY BOOLEAN
7585 ) RETURN clev_rec_type IS
7586 CURSOR okc_clev_csr (p_id IN NUMBER) IS
7587 SELECT
7588 ID,
7589 OBJECT_VERSION_NUMBER,
7590 SFWT_FLAG,
7591 CHR_ID,
7592 CLE_ID,
7593 LSE_ID,
7594 LINE_NUMBER,
7595 STS_CODE,
7596 DISPLAY_SEQUENCE,
7597 TRN_CODE,
7598 DNZ_CHR_ID,
7599 COMMENTS,
7600 ITEM_DESCRIPTION,
7601 OKE_BOE_DESCRIPTION,
7602 HIDDEN_IND,
7603 PRICE_UNIT,
7604 PRICE_UNIT_PERCENT,
7605 PRICE_NEGOTIATED,
7606 PRICE_NEGOTIATED_RENEWED,
7607 PRICE_LEVEL_IND,
7608 INVOICE_LINE_LEVEL_IND,
7609 DPAS_RATING,
7610 BLOCK23TEXT,
7611 EXCEPTION_YN,
7612 TEMPLATE_USED,
7613 DATE_TERMINATED,
7614 NAME,
7615 START_DATE,
7616 END_DATE,
7617 DATE_RENEWED,
7618 UPG_ORIG_SYSTEM_REF,
7619 UPG_ORIG_SYSTEM_REF_ID,
7620 ORIG_SYSTEM_SOURCE_CODE,
7621 ORIG_SYSTEM_ID1,
7622 ORIG_SYSTEM_REFERENCE1,
7623 ATTRIBUTE_CATEGORY,
7624 ATTRIBUTE1,
7625 ATTRIBUTE2,
7626 ATTRIBUTE3,
7627 ATTRIBUTE4,
7628 ATTRIBUTE5,
7629 ATTRIBUTE6,
7630 ATTRIBUTE7,
7631 ATTRIBUTE8,
7632 ATTRIBUTE9,
7633 ATTRIBUTE10,
7634 ATTRIBUTE11,
7635 ATTRIBUTE12,
7636 ATTRIBUTE13,
7637 ATTRIBUTE14,
7638 ATTRIBUTE15,
7639 CREATED_BY,
7640 CREATION_DATE,
7641 LAST_UPDATED_BY,
7642 LAST_UPDATE_DATE,
7643 PRICE_TYPE,
7644 CURRENCY_CODE,
7645 CURRENCY_CODE_RENEWED,
7646 LAST_UPDATE_LOGIN
7647 FROM Okc_K_Lines_V
7648 WHERE okc_k_lines_v.id = p_id;
7649 l_clev_rec clev_rec_type;
7650 BEGIN
7651 x_no_data_found := TRUE;
7652 -- Get current database values
7653 OPEN okc_clev_csr (p_cle_id);
7654 FETCH okc_clev_csr INTO
7655 l_clev_rec.ID,
7656 l_clev_rec.OBJECT_VERSION_NUMBER,
7657 l_clev_rec.SFWT_FLAG,
7658 l_clev_rec.CHR_ID,
7659 l_clev_rec.CLE_ID,
7660 l_clev_rec.LSE_ID,
7661 l_clev_rec.LINE_NUMBER,
7662 l_clev_rec.STS_CODE,
7663 l_clev_rec.DISPLAY_SEQUENCE,
7664 l_clev_rec.TRN_CODE,
7665 l_clev_rec.DNZ_CHR_ID,
7666 l_clev_rec.COMMENTS,
7667 l_clev_rec.ITEM_DESCRIPTION,
7668 l_clev_rec.OKE_BOE_DESCRIPTION,
7669 l_clev_rec.HIDDEN_IND,
7670 l_clev_rec.PRICE_UNIT,
7671 l_clev_rec.PRICE_UNIT_PERCENT,
7672 l_clev_rec.PRICE_NEGOTIATED,
7673 l_clev_rec.PRICE_NEGOTIATED_RENEWED,
7674 l_clev_rec.PRICE_LEVEL_IND,
7675 l_clev_rec.INVOICE_LINE_LEVEL_IND,
7676 l_clev_rec.DPAS_RATING,
7677 l_clev_rec.BLOCK23TEXT,
7678 l_clev_rec.EXCEPTION_YN,
7679 l_clev_rec.TEMPLATE_USED,
7680 l_clev_rec.DATE_TERMINATED,
7681 l_clev_rec.NAME,
7682 l_clev_rec.START_DATE,
7683 l_clev_rec.END_DATE,
7684 l_clev_rec.DATE_RENEWED,
7685 l_clev_rec.UPG_ORIG_SYSTEM_REF,
7686 l_clev_rec.UPG_ORIG_SYSTEM_REF_ID,
7687 l_clev_rec.ORIG_SYSTEM_SOURCE_CODE,
7688 l_clev_rec.ORIG_SYSTEM_ID1,
7689 l_clev_rec.ORIG_SYSTEM_REFERENCE1,
7690 l_clev_rec.ATTRIBUTE_CATEGORY,
7691 l_clev_rec.ATTRIBUTE1,
7692 l_clev_rec.ATTRIBUTE2,
7693 l_clev_rec.ATTRIBUTE3,
7694 l_clev_rec.ATTRIBUTE4,
7695 l_clev_rec.ATTRIBUTE5,
7696 l_clev_rec.ATTRIBUTE6,
7697 l_clev_rec.ATTRIBUTE7,
7698 l_clev_rec.ATTRIBUTE8,
7699 l_clev_rec.ATTRIBUTE9,
7700 l_clev_rec.ATTRIBUTE10,
7701 l_clev_rec.ATTRIBUTE11,
7702 l_clev_rec.ATTRIBUTE12,
7703 l_clev_rec.ATTRIBUTE13,
7704 l_clev_rec.ATTRIBUTE14,
7705 l_clev_rec.ATTRIBUTE15,
7706 l_clev_rec.CREATED_BY,
7707 l_clev_rec.CREATION_DATE,
7708 l_clev_rec.LAST_UPDATED_BY,
7709 l_clev_rec.LAST_UPDATE_DATE,
7710 l_clev_rec.PRICE_TYPE,
7711 l_clev_rec.CURRENCY_CODE,
7712 l_clev_rec.CURRENCY_CODE_RENEWED,
7713 l_clev_rec.LAST_UPDATE_LOGIN;
7714 x_no_data_found := okc_clev_csr%NOTFOUND;
7715 CLOSE okc_clev_csr;
7716 RETURN(l_clev_rec);
7717 END get_clev_rec;
7718
7719 FUNCTION get_clev_rec (
7720 p_cle_id IN NUMBER
7721 ) RETURN clev_rec_type IS
7722 l_row_notfound BOOLEAN := TRUE;
7723 BEGIN
7724 RETURN(get_clev_rec(p_cle_id, l_row_notfound));
7725 END get_clev_rec;
7726 --Bug #2648280 Begin
7727 --------------------------------------------------------------------------------
7728 -- Procedure to split streams : will be called after split asset processing
7729 -- Bug #2648280 - During the split asset process streams were not getting split
7730 -- for the financial asset lines getting split. Splitting of streams being done
7731 -- in this procedure
7732 -- Bug # 2723498 : 11.5.9 Enhancement Multi-GAAP support . Split reporting streams
7733 --------------------------------------------------------------------------------
7734 PROCEDURE split_streams(p_api_version IN NUMBER,
7735 p_init_msg_list IN VARCHAR2,
7736 x_return_status OUT NOCOPY VARCHAR2,
7737 x_msg_count OUT NOCOPY NUMBER,
7738 x_msg_data OUT NOCOPY VARCHAR2,
7739 p_txl_id IN NUMBER) AS
7740
7741 l_api_name CONSTANT VARCHAR2(256) := 'SPLIT_STREAMS';
7742 l_api_version CONSTANT NUMBER := 1.0;
7743 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
7744
7745
7746 l_stmv_rec Okl_Streams_pub.stmv_rec_type;
7747 l_selv_tbl Okl_Streams_pub.selv_tbl_type;
7748 x_stmv_rec Okl_Streams_pub.stmv_rec_type;
7749 x_selv_tbl Okl_Streams_pub.selv_tbl_type;
7750
7751 --Cursor to fetch split child records (for split asset as well as split asset into components)
7752 CURSOR l_split_trx_csr1(p_trxline_id IN NUMBER) IS
7753 SELECT txd.split_percent,
7754 txl.kle_id,
7755 txd.target_kle_id,
7756 cle.cle_id cle_id,
7757 target_cle.cle_id target_cle_id,
7758 txd.quantity,
7759 txl.current_units
7760 FROM okl_txd_assets_b txd,
7761 okl_txl_Assets_b txl,
7762 okc_k_lines_b cle,
7763 okc_k_lines_b target_cle
7764 WHERE txl.tal_type = 'ALI'
7765 AND txd.tal_id = txl.id
7766 AND txl.id = p_trxline_id
7767 AND txl.kle_id <> txd.target_kle_id
7768 AND cle.id = txl.kle_id
7769 AND target_cle.id = txd.target_kle_id
7770 --Bug# 3502142
7771 ORDER BY NVL(txd.split_percent,-1);
7772
7773 --Bug# 3502142
7774 subtype l_split_trx_rec is l_split_trx_csr1%ROWTYPE;
7775 type l_split_trx_tbl is table of l_split_trx_rec INDEX BY BINARY_INTEGER;
7776 l_split_trx_tbl1 l_split_trx_tbl;
7777
7778 --Cursor to fetch split parent record for Split Asset (Not split Asset into components)
7779 CURSOR l_split_trx_csr2(p_trxline_id IN NUMBER) IS
7780 SELECT txd.split_percent,
7781 txl.kle_id,
7782 txd.target_kle_id,
7783 cle.cle_id cle_id,
7784 target_cle.cle_id target_cle_id,
7785 txd.quantity,
7786 txl.current_units
7787 FROM okl_txd_assets_b txd,
7788 okl_txl_Assets_b txl,
7789 okc_k_lines_b cle,
7790 okc_k_lines_b target_cle
7791 WHERE txl.tal_type = 'ALI'
7792 AND txd.tal_id = txl.id
7793 AND txl.id = p_trxline_id
7794 AND txl.kle_id = txd.target_kle_id
7795 AND cle.id = txl.kle_id
7796 AND target_cle.id = txd.target_kle_id;
7797
7798
7799
7800 l_split_trx_rec1 l_split_trx_csr1%ROWTYPE;
7801 l_split_trx_rec2 l_split_trx_csr2%ROWTYPE;
7802
7803 l_kle_id NUMBER;
7804 l_split_factor NUMBER;
7805
7806 --Bug# 3066375:
7807 --Cursor to find any linked asset lines
7808 CURSOR l_lnk_asst_csr1 (p_cle_id IN NUMBER, p_target_cle_id IN NUMBER) IS
7809 SELECT lnk_cle.id,
7810 lnk_target_cle.id,
7811 --Bug 3502142
7812 lnk_target_cle.cle_id
7813 FROM okc_k_lines_b lnk_cle,
7814 okc_k_items lnk_cim,
7815 okc_line_styles_b lnk_lse,
7816 okc_k_lines_b lnk_target_cle,
7817 okc_k_items lnk_target_cim,
7818 okc_line_styles_b lnk_target_lse
7819 WHERE lnk_cim.object1_id1 = TO_CHAR(p_cle_id)
7820 AND lnk_cim.object1_id2 = '#'
7821 AND lnk_cim.jtot_object1_code = 'OKX_COVASST'
7822 AND lnk_cle.id = lnk_cim.cle_id
7823 AND lnk_cle.dnz_chr_id = lnk_cim.dnz_chr_id
7824 AND lnk_cle.lse_id = lnk_lse.id
7825 AND lnk_lse.lty_code IN ('LINK_FEE_ASSET','LINK_SERV_ASSET','LINK_USAGE_ASSET')
7826 AND lnk_target_cim.object1_id1 = TO_CHAR(p_target_cle_id)
7827 AND lnk_target_cim.object1_id2 = '#'
7828 AND lnk_target_cim.jtot_object1_code = 'OKX_COVASST'
7829 AND lnk_target_cle.id = lnk_target_cim.cle_id
7830 AND lnk_target_cle.dnz_chr_id = lnk_target_cim.dnz_chr_id
7831 AND lnk_target_cle.lse_id = lnk_target_lse.id
7832 AND lnk_target_lse.lty_code IN ('LINK_FEE_ASSET','LINK_SERV_ASSET','LINK_USAGE_ASSET')
7833 AND lnk_cle.cle_id = lnk_target_cle.cle_id
7834 AND lnk_cle.id <> lnk_target_cle.id
7835 AND lnk_cle.dnz_chr_id = lnk_target_cle.dnz_chr_id;
7836
7837 CURSOR l_lnk_asst_csr2 (p_cle_id IN NUMBER, p_target_cle_id IN NUMBER) IS
7838 SELECT lnk_cle.id,
7839 lnk_target_cle.id,
7840 --Bug 3502142
7841 lnk_target_cle.cle_id
7842 FROM okc_k_lines_b lnk_cle,
7843 okc_k_items lnk_cim,
7844 okc_line_styles_b lnk_lse,
7845 okc_k_lines_b lnk_target_cle,
7846 okc_k_items lnk_target_cim,
7847 okc_line_styles_b lnk_target_lse
7848 WHERE lnk_cim.object1_id1 = TO_CHAR(p_cle_id)
7849 AND lnk_cim.object1_id2 = '#'
7850 AND lnk_cim.jtot_object1_code = 'OKX_COVASST'
7851 AND lnk_cle.id = lnk_cim.cle_id
7852 AND lnk_cle.dnz_chr_id = lnk_cim.dnz_chr_id
7853 AND lnk_cle.lse_id = lnk_lse.id
7854 AND lnk_lse.lty_code IN ('LINK_FEE_ASSET','LINK_SERV_ASSET','LINK_USAGE_ASSET')
7855 AND lnk_target_cim.object1_id1 = TO_CHAR(p_target_cle_id)
7856 AND lnk_target_cim.object1_id2 = '#'
7857 AND lnk_target_cim.jtot_object1_code = 'OKX_COVASST'
7858 AND lnk_target_cle.id = lnk_target_cim.cle_id
7859 AND lnk_target_cle.dnz_chr_id = lnk_target_cim.dnz_chr_id
7860 AND lnk_target_cle.lse_id = lnk_target_lse.id
7861 AND lnk_target_lse.lty_code IN ('LINK_FEE_ASSET','LINK_SERV_ASSET','LINK_USAGE_ASSET')
7862 AND lnk_cle.cle_id = lnk_target_cle.cle_id
7863 AND lnk_cle.id = lnk_target_cle.id
7864 AND lnk_cle.dnz_chr_id = lnk_target_cle.dnz_chr_id;
7865
7866
7867 l_lnk_cle_id okc_k_lines_b.id%TYPE;
7868 l_lnk_target_cle_id okc_k_lines_b.id%TYPE;
7869
7870 -- Bug# 3502142
7871 l_lnk_top_cle_id okc_k_lines_b.id%TYPE;
7872 --Bug# 6344223
7873 l_highest_split_comp_amt VARCHAR2(30);
7874 l_count NUMBER;
7875
7876 --------------------------------------------------------------------------------
7877 -- Local procedure to do split streams processing
7878 -- IN parameters - p_kle_id (child top line)
7879 -- - p_parent_kle_id (parent top line)
7880 -- - p_split_factor (split factor)
7881 --------------------------------------------------------------------------------
7882 PROCEDURE Process_Split_Streams(p_api_version IN NUMBER,
7883 p_init_msg_list IN VARCHAR2,
7884 x_return_status OUT NOCOPY VARCHAR2,
7885 x_msg_count OUT NOCOPY NUMBER,
7886 x_msg_data OUT NOCOPY VARCHAR2,
7887 p_kle_id IN NUMBER,
7888 p_split_factor IN NUMBER,
7889 p_parent_kle_id IN NUMBER,
7890 p_txl_id IN NUMBER,
7891 --Bug# 6344223
7892 p_highest_split_comp_amt IN VARCHAR2 DEFAULT 'N') IS
7893
7894 l_stmv_rec Okl_Streams_pub.stmv_rec_type;
7895 l_selv_tbl Okl_Streams_pub.selv_tbl_type;
7896 l_stmv_rec_hist Okl_Streams_pub.stmv_rec_type;
7897 l_selv_tbl_hist Okl_Streams_pub.selv_tbl_type;
7898 x_stmv_rec Okl_Streams_pub.stmv_rec_type;
7899 x_selv_tbl Okl_Streams_pub.selv_tbl_type;
7900
7901
7902 CURSOR l_strm_csr ( kleId NUMBER, status VARCHAR2) IS
7903 SELECT str.Id,
7904 str.transaction_number,
7905 str.sgn_code SGN_CODE,
7906 str.khr_id,
7907 str.sty_id,
7908 str.say_code,
7909 str.active_yn,
7910 str.kle_id,
7911 --Bug# 3502142
7912 str.purpose_code,
7913 str.comments,
7914 str.date_current,
7915 -- Bug# 4775555
7916 sty.stream_type_purpose,
7917 --Bug# 6344223
7918 str.link_hist_stream_id
7919 FROM okl_streams str,
7920 okl_strm_type_b sty
7921 WHERE
7922 str.kle_id = kleId
7923 AND str.say_code = status
7924 AND str.sty_id = sty.id;
7925
7926 --Bug# 3502142
7927 CURSOR l_strmele_csr( kleId NUMBER, styId NUMBER, strId NUMBER,
7928 purposeCode VARCHAR2, activeYn VARCHAR2) IS
7929 SELECT ele.id,
7930 ele.DATE_BILLED,
7931 ele.STREAM_ELEMENT_DATE,
7932 ele.AMOUNT,
7933 ele.ACCRUED_YN,
7934 ele.comments,
7935 str.transaction_number,
7936 str.sgn_code SGN_CODE,
7937 ele.stm_id STM_ID,
7938 ele.se_line_number SE_LINE_NUMBER
7939 FROM okl_strm_elements ele,
7940 okl_streams str
7941 WHERE ele.stm_id = str.id
7942 AND str.id = strId
7943 AND str.kle_id = kleId
7944 AND str.sty_id = styId
7945 AND UPPER(str.say_code) = 'CURR'
7946 AND UPPER(str.active_yn) = activeYn
7947 AND NVL(str.purpose_code,'ORIG') = purposeCode
7948 ORDER BY 3;
7949
7950 l_strms_rec l_strm_csr%ROWTYPE;
7951 l_strmele_rec l_strmele_csr%ROWTYPE;
7952 i NUMBER;
7953 l_kle_id NUMBER;
7954
7955 --cursor to fetch transaction number
7956 CURSOR l_sifseq_csr IS
7957 SELECT okl_sif_seq.NEXTVAL
7958 FROM dual;
7959
7960 -- Bug# 3502142: start
7961 CURSOR curr_code_csr(p_kle_id IN NUMBER) IS
7962 SELECT currency_code
7963 FROM okc_k_lines_b
7964 WHERE id = p_kle_id;
7965
7966 l_currency_code OKC_K_LINES_B.currency_code%type;
7967
7968 l_active_yn OKL_STREAMS.ACTIVE_YN%TYPE;
7969
7970 --Bug# 4775555
7971 l_stmv_rec_temp Okl_Streams_pub.stmv_rec_type;
7972
7973 --Bug# 6344223
7974 CURSOR l_txd_csr(p_trxline_id IN NUMBER) IS
7975 SELECT txd.id,
7976 txd.split_percent,
7977 txl.kle_id,
7978 txd.target_kle_id,
7979 cle.cle_id cle_id,
7980 target_cle.cle_id target_cle_id,
7981 txd.quantity,
7982 txl.current_units
7983 FROM okl_txd_assets_b txd,
7984 okl_txl_Assets_b txl,
7985 okc_k_lines_b cle,
7986 okc_k_lines_b target_cle
7987 WHERE txl.tal_type = 'ALI'
7988 AND txd.tal_id = txl.id
7989 AND txl.id = p_trxline_id
7990 AND txl.kle_id <> txd.target_kle_id
7991 AND cle.id = txl.kle_id
7992 AND target_cle.id = txd.target_kle_id;
7993
7994
7995 l_split_pymt NUMBER;
7996 l_split_pymt_sum NUMBER;
7997 l_child_split_factor NUMBER;
7998 l_rounded_amount NUMBER;
7999 l_child_amount NUMBER;
8000
8001 BEGIN
8002 x_return_status := OKL_API.G_RET_STS_SUCCESS;
8003
8004 IF ( p_parent_kle_id = p_kle_id ) THEN
8005 l_kle_id := p_kle_id;
8006 ELSE
8007 l_kle_id := p_parent_kle_id;
8008 END IF;
8009
8010 -- Bug# 3502142
8011 open curr_code_csr(p_kle_id => p_kle_id);
8012 fetch curr_code_csr into l_currency_code;
8013 close curr_code_csr;
8014
8015 FOR l_strms_rec IN l_strm_csr( l_kle_id, 'CURR' )
8016 LOOP
8017
8018 -- Bug# 4775555
8019 -- Disbursement Basis streams should only be Historized here
8020 -- They will be recreated later by the call to
8021 -- okl_stream_generator_pvt.create_disb_streams
8022 IF (l_strms_rec.stream_type_purpose
8023 IN ('INVESTOR_RENT_DISB_BASIS',
8024 'INVESTOR_RESIDUAL_DISB_BASIS','INVESTOR_PRINCIPAL_DISB_BASIS','INVESTOR_INTEREST_DISB_BASIS')) THEN
8025
8026 IF (p_parent_kle_id = p_kle_id) THEN
8027
8028 l_stmv_rec_hist := l_stmv_rec_temp;
8029 l_stmv_rec_hist.id := l_strms_rec.id;
8030 l_stmv_rec_hist.kle_id := l_kle_id;
8031 l_stmv_rec_hist.say_code := 'HIST';
8032 l_stmv_rec_hist.active_yn := 'N';
8033 l_stmv_rec_hist.date_history := SYSDATE;
8034 --Bug# 6344223
8035 l_stmv_rec_hist.link_hist_stream_id := l_strms_rec.link_hist_stream_id;
8036 Okl_Streams_Pub.update_streams(
8037 p_api_version => l_api_version
8038 ,p_init_msg_list => p_init_msg_list
8039 ,x_return_status => x_return_status
8040 ,x_msg_count => x_msg_count
8041 ,x_msg_data => x_msg_data
8042 ,p_stmv_rec => l_stmv_rec_hist
8043 ,x_stmv_rec => x_stmv_rec);
8044
8045 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8046 RAISE G_EXCEPTION_HALT_VALIDATION;
8047 END IF;
8048
8049 END IF;
8050
8051 ELSE
8052
8053 l_stmv_rec.sty_id := l_strms_rec.sty_id;
8054 --l_stmv_rec.khr_id := p_chr_id;
8055 l_stmv_rec.khr_id := l_strms_rec.khr_id;
8056
8057 IF ((p_parent_kle_id = p_kle_id ) AND (p_split_factor = 0)) THEN
8058 l_stmv_rec.say_code := 'HIST';
8059 l_stmv_rec.active_yn := 'N';
8060 l_stmv_rec.date_history := SYSDATE;
8061 --Bug# 6344223
8062 l_stmv_rec.link_hist_stream_id := l_strms_rec.link_hist_stream_id;
8063 ELSE
8064 l_stmv_rec.say_code := 'CURR';
8065 --Bug# 6344223
8066 l_stmv_rec.link_hist_stream_id := l_strms_rec.id;
8067 --Bug# 3502142
8068 --l_stmv_rec.active_yn := 'Y';
8069 --l_stmv_rec.date_current := SYSDATE;
8070 END IF;
8071 --Bug# 3502142
8072 --l_stmv_rec.active_yn := 'Y';
8073 --l_stmv_rec.date_current := SYSDATE;
8074 l_stmv_rec.transaction_number := l_strms_rec.transaction_number;
8075 l_stmv_rec.sgn_code := l_strms_rec.sgn_code;
8076 --Bug# 3502142
8077 l_stmv_rec.purpose_code := l_strms_rec.purpose_code;
8078 l_stmv_rec.active_yn := l_strms_rec.active_yn;
8079 l_stmv_rec.comments := l_strms_rec.comments;
8080 l_stmv_rec.date_current := l_strms_rec.date_current;
8081
8082 i := 0;
8083 -- Bug# 3502142
8084
8085 if NVL(l_strms_rec.purpose_code,'ORIG') = 'ORIG' then
8086 l_active_yn := 'Y';
8087 elsif l_strms_rec.purpose_code = 'REPORT' then
8088 l_active_yn := 'N';
8089 end if;
8090
8091 FOR l_strmele_rec IN l_strmele_csr(l_kle_id, l_strms_rec.sty_id, l_strms_rec.id,
8092 NVL(l_strms_rec.purpose_code,'ORIG'), l_active_yn)
8093 LOOP
8094 i := i + 1;
8095 l_selv_tbl(i).accrued_yn := l_strmele_rec.accrued_yn;
8096 l_selv_tbl(i).stream_element_date := l_strmele_rec.stream_element_date;
8097 l_selv_tbl(i).date_billed := l_strmele_rec.date_billed;
8098 l_selv_tbl(i).se_line_number := l_strmele_rec.SE_LINE_NUMBER;
8099 l_selv_tbl(i).comments := l_strmele_rec.comments;
8100
8101 IF p_split_factor <> 0 THEN
8102 --for parent line adjust the stream element amount
8103 l_split_pymt_sum := 0;
8104
8105 --get the sum of stream element amount for child asset if
8106 -- calculating cost for the parent line or for the
8107 -- child line with highest split percent
8108 IF (p_parent_kle_id = p_kle_id ) OR (p_highest_split_comp_amt='Y') THEN
8109
8110 FOR l_txd_rec in l_txd_csr(p_txl_id)
8111 LOOP
8112 IF NVL(l_txd_rec.split_percent,0) IN (0,OKL_API.G_MISS_NUM) THEN
8113 l_child_split_factor := l_txd_rec.quantity/l_txd_rec.current_units;
8114 ELSE
8115 l_child_split_factor := l_txd_rec.split_percent/100;
8116 END IF;
8117 l_split_pymt := l_strmele_rec.amount * l_child_split_factor;
8118 okl_accounting_util.round_amount(
8119 p_api_version => p_api_version,
8120 p_init_msg_list => p_init_msg_list,
8121 x_return_status => x_return_status,
8122 x_msg_count => x_msg_count,
8123 x_msg_data => x_msg_data,
8124 p_amount => l_split_pymt,
8125 p_currency_code => l_currency_code,
8126 p_round_option => 'STM',
8127 x_rounded_amount => l_rounded_amount
8128 );
8129 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8130 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8131 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8132 RAISE OKL_API.G_EXCEPTION_ERROR;
8133 END IF;
8134 l_split_pymt_sum := l_split_pymt_sum + l_rounded_amount;
8135 END LOOP;
8136 END IF;
8137
8138 IF (p_parent_kle_id = p_kle_id ) THEN
8139 --for split by unit--
8140 l_selv_tbl(i).amount :=l_strmele_rec.amount - l_split_pymt_sum;
8141
8142 ELSE
8143 --claculate the amount for child line
8144 l_child_amount :=l_strmele_rec.amount * p_split_factor;
8145 okl_accounting_util.round_amount(
8146 p_api_version => p_api_version,
8147 p_init_msg_list => p_init_msg_list,
8148 x_return_status => x_return_status,
8149 x_msg_count => x_msg_count,
8150 x_msg_data => x_msg_data,
8151 p_amount => l_child_amount,
8152 p_currency_code => l_currency_code,
8153 p_round_option => 'STM',
8154 x_rounded_amount => l_rounded_amount
8155 );
8156 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8157 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8158 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8159 RAISE OKL_API.G_EXCEPTION_ERROR;
8160 END IF;
8161 l_child_amount :=l_rounded_amount;
8162 --adjust the amount for highest asset percent if split by component
8163 if p_highest_split_comp_amt='Y' THEN
8164 l_selv_tbl(i).amount :=l_child_amount+ l_strmele_rec.amount - l_split_pymt_sum;
8165 else
8166 -- no adjustment required
8167 l_selv_tbl(i).amount :=l_child_amount;
8168 END IF;
8169
8170 END IF; --end if for parent line check
8171 --dbms_output.put_line('l_selv_tbl(i).amount '||l_selv_tbl(i).amount );
8172 END IF; --p_split_factor
8173 -----------------------------------------------------------------
8174 --If (p_parent_kle_id = p_kle_id ) then
8175 --l_selv_tbl(i).stm_id := l_strms_rec.id;
8176 --l_selv_tbl(i).id := l_strmele_rec.id;
8177 --End If;
8178 -----------------------------------------------------------------
8179 l_selv_tbl_hist(i) := l_selv_tbl(i);
8180 l_selv_tbl_hist(i).amount := l_strmele_rec.amount;
8181 l_selv_tbl_hist(i).stm_id := l_strms_rec.id;
8182 l_selv_tbl_hist(i).id := l_strmele_rec.id;
8183
8184 END LOOP;
8185
8186 IF (i <> 0) THEN
8187 IF (p_parent_kle_id = p_kle_id ) THEN
8188 ------------------------------------------------------------------------
8189 --Bug# : historize old streams and recreate with new values for old asset
8190 ------------------------------------------------------------------------
8191 l_stmv_rec_hist := l_stmv_rec;
8192 l_stmv_rec_hist.id := l_strms_rec.id;
8193 l_stmv_rec_hist.kle_id := l_kle_id;
8194 l_stmv_rec_hist.say_code := 'HIST';
8195 l_stmv_rec_hist.active_yn := 'N';
8196 l_stmv_rec_hist.date_history := SYSDATE;
8197 --Bug# 6344223
8198 l_stmv_rec_hist.link_hist_stream_id := l_strms_rec.link_hist_stream_id;
8199 Okl_Streams_Pub.update_streams(
8200 p_api_version => l_api_version
8201 ,p_init_msg_list => p_init_msg_list
8202 ,x_return_status => x_return_status
8203 ,x_msg_count => x_msg_count
8204 ,x_msg_data => x_msg_data
8205 ,p_stmv_rec => l_stmv_rec_hist
8206 ,p_selv_tbl => l_selv_tbl_hist
8207 ,x_stmv_rec => x_stmv_rec
8208 ,x_selv_tbl => x_selv_tbl);
8209
8210 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8211 RAISE G_EXCEPTION_HALT_VALIDATION;
8212 END IF;
8213
8214 IF (p_split_factor <> 0 ) THEN
8215 l_stmv_rec.kle_id := l_kle_id;
8216 l_stmv_rec.sgn_code := 'MANL';
8217 l_stmv_rec.comments := 'Generated manually during split asset from parent transaction number '||TO_CHAR(l_stmv_rec.transaction_number);
8218 OPEN l_sifseq_csr;
8219 FETCH l_sifseq_csr INTO l_stmv_rec.transaction_number;
8220 CLOSE l_sifseq_csr;
8221 --Bug# 3502142
8222 l_stmv_rec.date_current := SYSDATE;
8223
8224 Okl_Streams_Pub.create_streams(
8225 p_api_version => l_api_version
8226 ,p_init_msg_list => p_init_msg_list
8227 ,x_return_status => x_return_status
8228 ,x_msg_count => x_msg_count
8229 ,x_msg_data => x_msg_data
8230 ,p_stmv_rec => l_stmv_rec
8231 ,p_selv_tbl => l_selv_tbl
8232 ,x_stmv_rec => x_stmv_rec
8233 ,x_selv_tbl => x_selv_tbl);
8234
8235 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8236 RAISE G_EXCEPTION_HALT_VALIDATION;
8237 END IF;
8238 END IF;
8239
8240 ELSE
8241
8242 l_stmv_rec.kle_id := p_kle_id;
8243 l_stmv_rec.sgn_code := 'MANL';
8244 --Bug# 3502142
8245 l_stmv_rec.comments := 'Generated manually during split asset from parent transaction number '||TO_CHAR(l_stmv_rec.transaction_number);
8246 OPEN l_sifseq_csr;
8247 FETCH l_sifseq_csr INTO l_stmv_rec.transaction_number;
8248 CLOSE l_sifseq_csr;
8249 --Bug# 3502142
8250 l_stmv_rec.date_current := SYSDATE;
8251
8252 Okl_Streams_Pub.create_streams(
8253 p_api_version => l_api_version
8254 ,p_init_msg_list => p_init_msg_list
8255 ,x_return_status => x_return_status
8256 ,x_msg_count => x_msg_count
8257 ,x_msg_data => x_msg_data
8258 ,p_stmv_rec => l_stmv_rec
8259 ,p_selv_tbl => l_selv_tbl
8260 ,x_stmv_rec => x_stmv_rec
8261 ,x_selv_tbl => x_selv_tbl);
8262
8263 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8264 RAISE G_EXCEPTION_HALT_VALIDATION;
8265 END IF;
8266
8267
8268 END IF;
8269 ELSE
8270 NULL;
8271 END IF;
8272
8273 l_selv_tbl.DELETE(1, l_selv_tbl.LAST);
8274 l_selv_tbl_hist.DELETE(1, l_selv_tbl.LAST);
8275
8276 END IF;
8277 END LOOP;
8278
8279 EXCEPTION
8280 WHEN G_EXCEPTION_HALT_VALIDATION THEN
8281 IF l_strm_csr%ISOPEN THEN
8282 CLOSE l_strm_csr;
8283 END IF;
8284 IF l_strmele_csr%ISOPEN THEN
8285 CLOSE l_strmele_csr;
8286 END IF;
8287 NULL;
8288 WHEN OTHERS THEN
8289 IF l_strm_csr%ISOPEN THEN
8290 CLOSE l_strm_csr;
8291 END IF;
8292 IF l_strmele_csr%ISOPEN THEN
8293 CLOSE l_strmele_csr;
8294 END IF;
8295 x_return_status := OKL_API.G_RET_STS_ERROR;
8296
8297 END process_split_streams;
8298 /*begin main body*/
8299 BEGIN
8300
8301 x_return_status := l_return_status;
8302
8303 --open cursor only for parent records as should not
8304 --update the parent streams till all child lines are fixed.
8305 --Bug# 3502142
8306 l_count := 0;
8307 --Bug# 6344223
8308 l_highest_split_comp_amt := 'N';
8309
8310 FOR l_split_trx_rec1 IN l_split_trx_csr1 (p_trxLine_id => p_txl_id) LOOP
8311 l_count := l_count + 1;
8312 l_split_trx_tbl1(l_count) := l_split_trx_rec1;
8313 END LOOP;
8314
8315 IF (l_count > 0) THEN
8316 FOR i IN l_split_trx_tbl1.FIRST .. l_split_trx_tbl1.LAST
8317 LOOP
8318
8319 l_split_trx_rec1 := l_split_trx_tbl1(i);
8320
8321 IF NVL(l_split_trx_rec1.split_percent,0) NOT IN (0,OKL_API.G_MISS_NUM) THEN
8322 l_split_factor := (l_split_trx_rec1.split_percent/100);
8323
8324 --Bug# 3502142
8325 --Bug# 6344223
8326 IF i = l_split_trx_tbl1.LAST THEN
8327 l_highest_split_comp_amt := 'Y';
8328 ELSE
8329 l_highest_split_comp_amt := 'N';
8330 END IF;
8331 ELSE
8332 --1. By comparing the cost and quantities on txlv record and txdv record find the split factor
8333 l_split_factor := l_split_trx_rec1.quantity/l_split_trx_rec1.current_units;
8334 END IF;
8335 --split streams for split child lines
8336 Process_split_streams(p_api_version => p_api_version,
8337 p_init_msg_list => p_init_msg_list,
8338 x_return_status => x_return_status,
8339 x_msg_count => x_msg_count,
8340 x_msg_data => x_msg_data,
8341 p_kle_id => l_split_trx_rec1.target_cle_id,
8342 p_split_factor => l_split_factor,
8343 p_parent_kle_id => l_split_trx_rec1.cle_id,
8344 --Bug# 3502142
8345 p_txl_id => p_txl_id,
8346 --Bug# 6344223
8347 p_highest_split_comp_amt => l_highest_split_comp_amt);
8348
8349
8350 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8351 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8352 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8353 RAISE OKL_API.G_EXCEPTION_ERROR;
8354 END IF;
8355
8356 --Bug# 3066375:: split streams attached to linked asset lines
8357 OPEN l_lnk_asst_csr1(p_cle_id => l_split_trx_rec1.cle_id, p_target_cle_id => l_split_trx_rec1.target_cle_id);
8358 LOOP
8359 --Bug# 3502142
8360 FETCH l_lnk_asst_csr1 INTO l_lnk_cle_id, l_lnk_target_cle_id,l_lnk_top_cle_id;
8361 EXIT WHEN l_lnk_asst_csr1%NOTFOUND;
8362 Process_split_streams(p_api_version => p_api_version,
8363 p_init_msg_list => p_init_msg_list,
8364 x_return_status => x_return_status,
8365 x_msg_count => x_msg_count,
8366 x_msg_data => x_msg_data,
8367 p_kle_id => l_lnk_target_cle_id,
8368 p_split_factor => l_split_factor,
8369 p_parent_kle_id => l_lnk_cle_id,
8370 --Bug# 3502142
8371 p_txl_id => p_txl_id,
8372 --Bug# 6344223
8373 p_highest_split_comp_amt => l_highest_split_comp_amt);
8374
8375
8376 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8377 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8378 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8379 RAISE OKL_API.G_EXCEPTION_ERROR;
8380 END IF;
8381 END LOOP;
8382 CLOSE l_lnk_asst_csr1;
8383
8384 END LOOP;
8385 END IF;
8386
8387 IF NVL(l_split_trx_rec1.split_percent,0) NOT IN (0,OKL_API.G_MISS_NUM) THEN
8388 --split asset component : Process_split_streams to historize for parent line
8389 Process_split_streams(p_api_version => p_api_version,
8390 p_init_msg_list => p_init_msg_list,
8391 x_return_status => x_return_status,
8392 x_msg_count => x_msg_count,
8393 x_msg_data => x_msg_data,
8394 p_kle_id => l_split_trx_rec1.cle_id,
8395 p_split_factor => 0,
8396 p_parent_kle_id => l_split_trx_rec1.cle_id,
8397 --Bug# 3502142
8398 p_txl_id => p_txl_id,
8399 --Bug# 6344223
8400 p_highest_split_comp_amt => 'N');
8401
8402 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8403 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8404 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8405 RAISE OKL_API.G_EXCEPTION_ERROR;
8406 END IF;
8407
8408 --Bug# 3066375: split streams attached to linked asset lines
8409 OPEN l_lnk_asst_csr1(p_cle_id => l_split_trx_rec1.cle_id, p_target_cle_id => l_split_trx_rec1.target_cle_id);
8410 LOOP
8411 --Bug# 3502142
8412 FETCH l_lnk_asst_csr1 INTO l_lnk_cle_id, l_lnk_target_cle_id, l_lnk_top_cle_id;
8413 EXIT WHEN l_lnk_asst_csr1%NOTFOUND;
8414 Process_split_streams(p_api_version => p_api_version,
8415 p_init_msg_list => p_init_msg_list,
8416 x_return_status => x_return_status,
8417 x_msg_count => x_msg_count,
8418 x_msg_data => x_msg_data,
8419 p_kle_id => l_lnk_cle_id,
8420 p_split_factor => 0,
8421 p_parent_kle_id => l_lnk_cle_id,
8422 --Bug# 3502142
8423 p_txl_id => p_txl_id,
8424 --Bug# 6344223
8425 p_highest_split_comp_amt => 'N');
8426
8427
8428 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8429 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8430 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8431 RAISE OKL_API.G_EXCEPTION_ERROR;
8432 END IF;
8433 END LOOP;
8434 CLOSE l_lnk_asst_csr1;
8435
8436 ELSE
8437
8438 --split asset case : get percent for parent split
8439 --
8440 OPEN l_split_trx_csr2 (p_trxLine_id => p_txl_id);
8441 FETCH l_split_trx_csr2 INTO l_split_trx_rec2;
8442 IF l_split_trx_csr2%NOTFOUND THEN
8443 NULL;
8444 ELSE
8445 --split streams for split parent
8446 l_split_factor := (l_split_trx_rec2.quantity/l_split_trx_rec2.current_units);
8447
8448 Process_split_streams(p_api_version => p_api_version,
8449 p_init_msg_list => p_init_msg_list,
8450 x_return_status => x_return_status,
8451 x_msg_count => x_msg_count,
8452 x_msg_data => x_msg_data,
8453 p_kle_id => l_split_trx_rec2.target_cle_id,
8454 p_split_factor => l_split_factor,
8455 p_parent_kle_id => l_split_trx_rec2.cle_id,
8456 --Bug# 3502142
8457 p_txl_id => p_txl_id,
8458 --Bug# 6344223
8459 p_highest_split_comp_amt => 'N');
8460
8461
8462 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8463 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8464 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8465 RAISE OKL_API.G_EXCEPTION_ERROR;
8466 END IF;
8467
8468 --Bug# 3066375: split streams attached to linked asset lines
8469 OPEN l_lnk_asst_csr2(p_cle_id => l_split_trx_rec2.cle_id, p_target_cle_id => l_split_trx_rec2.target_cle_id);
8470 LOOP
8471 --Bug# 3502142
8472 FETCH l_lnk_asst_csr2 INTO l_lnk_cle_id, l_lnk_target_cle_id,l_lnk_top_cle_id;
8473 EXIT WHEN l_lnk_asst_csr2%NOTFOUND;
8474 Process_split_streams(p_api_version => p_api_version,
8475 p_init_msg_list => p_init_msg_list,
8476 x_return_status => x_return_status,
8477 x_msg_count => x_msg_count,
8478 x_msg_data => x_msg_data,
8479 p_kle_id => l_lnk_target_cle_id,
8480 p_split_factor => l_split_factor,
8481 p_parent_kle_id => l_lnk_cle_id,
8482 --Bug# 3502142
8483 p_txl_id => p_txl_id,
8484 --Bug# 6344223
8485 p_highest_split_comp_amt => 'N');
8486
8487 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8488 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8489 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8490 RAISE OKL_API.G_EXCEPTION_ERROR;
8491 END IF;
8492 END LOOP;
8493 CLOSE l_lnk_asst_csr2;
8494
8495 END IF;
8496 CLOSE l_split_trx_csr2;
8497
8498 NULL;
8499 END IF;
8500
8501 EXCEPTION
8502 WHEN OKL_API.G_EXCEPTION_ERROR THEN
8503
8504 IF l_split_trx_csr1%ISOPEN THEN
8505 CLOSE l_split_trx_csr1;
8506 END IF;
8507
8508 IF l_split_trx_csr2%ISOPEN THEN
8509 CLOSE l_split_trx_csr2;
8510 END IF;
8511
8512 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8513
8514 IF l_split_trx_csr1%ISOPEN THEN
8515 CLOSE l_split_trx_csr1;
8516 END IF;
8517
8518 IF l_split_trx_csr2%ISOPEN THEN
8519 CLOSE l_split_trx_csr2;
8520 END IF;
8521
8522 IF l_lnk_asst_csr1%ISOPEN THEN
8523 CLOSE l_lnk_asst_csr1;
8524 END IF;
8525
8526 IF l_lnk_asst_csr2%ISOPEN THEN
8527 CLOSE l_lnk_asst_csr2;
8528 END IF;
8529
8530 WHEN OTHERS THEN
8531
8532 IF l_split_trx_csr1%ISOPEN THEN
8533 CLOSE l_split_trx_csr1;
8534 END IF;
8535
8536 IF l_split_trx_csr2%ISOPEN THEN
8537 CLOSE l_split_trx_csr2;
8538 END IF;
8539
8540 IF l_lnk_asst_csr1%ISOPEN THEN
8541 CLOSE l_lnk_asst_csr1;
8542 END IF;
8543
8544 IF l_lnk_asst_csr2%ISOPEN THEN
8545 CLOSE l_lnk_asst_csr2;
8546 END IF;
8547
8548 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
8549 END Split_Streams;
8550 --Bug #2648280 End
8551
8552 ---------------
8553 --Bug# 2994971
8554 ---------------
8555 PROCEDURE populate_insurance_category(p_api_version IN NUMBER,
8556 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
8557 x_return_status OUT NOCOPY VARCHAR2,
8558 x_msg_count OUT NOCOPY NUMBER,
8559 x_msg_data OUT NOCOPY VARCHAR2,
8560 p_cle_id IN NUMBER,
8561 p_inv_item_id IN NUMBER,
8562 p_inv_org_id IN NUMBER) IS
8563
8564 l_api_name CONSTANT VARCHAR2(30) := 'POPULATE_INS_CATEGORY';
8565
8566 --cursor to get asset category
8567 CURSOR l_msi_csr(p_inv_item_id IN NUMBER,
8568 p_inv_org_id IN NUMBER) IS
8569 SELECT msi.asset_category_id
8570 FROM mtl_system_items msi
8571 WHERE msi.organization_id = p_inv_org_id
8572 AND msi.inventory_item_id = p_inv_item_id;
8573
8574 l_asset_category_id mtl_system_items.asset_category_id%TYPE DEFAULT NULL;
8575 l_clev_rec okl_okc_migration_pvt.clev_rec_type;
8576 l_klev_rec okl_contract_pub.klev_rec_type;
8577 lx_clev_rec okl_okc_migration_pvt.clev_rec_type;
8578 lx_klev_rec okl_contract_pub.klev_rec_type;
8579
8580
8581 BEGIN
8582
8583 x_return_status := OKL_API.G_RET_STS_SUCCESS;
8584 -- Call start_activity to create savepoint, check compatibility
8585 -- and initialize message list
8586 x_return_status := OKL_API.START_ACTIVITY (l_api_name
8587 ,p_init_msg_list
8588 ,'_PVT'
8589 ,x_return_status);
8590 -- Check if activity started successfully
8591 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8592 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8593 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8594 RAISE OKL_API.G_EXCEPTION_ERROR;
8595 END IF;
8596
8597 --fetch asset category
8598 l_asset_category_id := NULL;
8599 OPEN l_msi_csr (p_inv_item_id => p_inv_item_id,
8600 p_inv_org_id => p_inv_org_id);
8601 FETCH l_msi_csr INTO l_asset_category_id;
8602 IF l_msi_csr%NOTFOUND THEN
8603 NULL;
8604 END IF;
8605 CLOSE l_msi_csr;
8606
8607
8608 l_clev_rec.id := p_cle_id;
8609 l_klev_rec.id := p_cle_id;
8610 l_klev_rec.item_insurance_category := l_asset_category_id;
8611
8612 okl_contract_pub.update_contract_line(
8613 p_api_version => p_api_version,
8614 p_init_msg_list => p_init_msg_list,
8615 x_return_status => x_return_status,
8616 x_msg_count => x_msg_count,
8617 x_msg_data => x_msg_data,
8618 p_clev_rec => l_clev_rec,
8619 p_klev_rec => l_klev_rec,
8620 x_clev_rec => lx_clev_rec,
8621 x_klev_rec => lx_klev_rec
8622 );
8623
8624 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8625 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8626 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8627 RAISE OKL_API.G_EXCEPTION_ERROR;
8628 END IF;
8629
8630 OKL_API.END_ACTIVITY (x_msg_count,
8631 x_msg_data );
8632 EXCEPTION
8633 WHEN OKL_API.G_EXCEPTION_ERROR THEN
8634 IF l_msi_csr%ISOPEN THEN
8635 CLOSE l_msi_csr;
8636 END IF;
8637 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8638 l_api_name,
8639 G_PKG_NAME,
8640 'OKL_API.G_RET_STS_ERROR',
8641 x_msg_count,
8642 x_msg_data,
8643 '_PVT');
8644 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8645 IF l_msi_csr%ISOPEN THEN
8646 CLOSE l_msi_csr;
8647 END IF;
8648 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8649 l_api_name,
8650 G_PKG_NAME,
8651 'OKL_API.G_RET_STS_UNEXP_ERROR',
8652 x_msg_count,
8653 x_msg_data,
8654 '_PVT');
8655 WHEN OTHERS THEN
8656 IF l_msi_csr%ISOPEN THEN
8657 CLOSE l_msi_csr;
8658 END IF;
8659 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8660 l_api_name,
8661 G_PKG_NAME,
8662 'OTHERS',
8663 x_msg_count,
8664 x_msg_data,
8665 '_PVT');
8666 END POPULATE_INSURANCE_CATEGORY;
8667 -------------------
8668 --Bug# 2994971
8669 ------------------
8670 --------------------------------------------------------------------------------
8671 --Procedure to adjust the quantities on copied split lines
8672 --modified for Bug# 2648280 - null amounts to remain null on copied lines
8673 --------------------------------------------------------------------------------
8674 PROCEDURE Adjust_Split_Lines(
8675 p_api_version IN NUMBER,
8676 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
8677 x_return_status OUT NOCOPY VARCHAR2,
8678 x_msg_count OUT NOCOPY NUMBER,
8679 x_msg_data OUT NOCOPY VARCHAR2,
8680 p_cle_id IN NUMBER, --id of the new top line after copy or parent top line
8681 p_parent_line_id IN NUMBER, --parent top line id which is split
8682 p_txdv_rec IN txdv_rec_type,
8683 p_txlv_rec IN txlv_rec_type,
8684 --Bug# 3502142
8685 p_round_split_comp_amt IN VARCHAR2 DEFAULT 'N') IS
8686
8687 l_return_status VARCHAR2(1) DEFAULT OKL_API.G_RET_STS_SUCCESS;
8688 l_api_name CONSTANT VARCHAR2(30) := 'ADJUST_SPLIT_LINES';
8689 l_api_version CONSTANT NUMBER := 1.0;
8690
8691 l_parent_cost NUMBER;
8692 l_parent_quantity NUMBER;
8693 l_child_cost NUMBER;
8694 l_child_quantity NUMBER;
8695 l_split_factor NUMBER;
8696 l_no_data_found BOOLEAN;
8697 l_cimv_rec cimv_rec_type;
8698 l_cimv_rec_out cimv_rec_type;
8699 lupd_cimv_rec cimv_rec_type;
8700 l_klev_rec klev_rec_type;
8701 l_klev_rec_out klev_rec_type;
8702 l_clev_rec clev_rec_type;
8703 l_clev_rec_out clev_rec_type;
8704
8705
8706 l_lnk_klev_rec klev_rec_type;
8707 l_lnk_clev_rec clev_rec_type;
8708 l_lnk_klev_old_rec klev_rec_type;
8709 l_lnk_clev_old_rec clev_rec_type;
8710
8711 lx_lnk_klev_rec klev_rec_type;
8712 lx_lnk_clev_rec clev_rec_type;
8713 lx_lnk_klev_old_rec klev_rec_type;
8714 lx_lnk_clev_old_rec clev_rec_type;
8715
8716 l_lnk_cimv_rec cimv_rec_type;
8717 lx_lnk_cimv_rec cimv_rec_type;
8718 l_lnk_cimv_old_rec cimv_rec_type;
8719 lx_lnk_cimv_old_rec cimv_rec_type;
8720
8721
8722 CURSOR c_lines(p_cle_id IN NUMBER) IS
8723 SELECT LEVEL,
8724 id,
8725 chr_id,
8726 cle_id,
8727 dnz_chr_id,
8728 lse_id
8729 FROM okc_k_lines_b
8730 CONNECT BY PRIOR id = cle_id
8731 START WITH id = p_cle_id;
8732
8733 CURSOR c_lty_code(p_lse_id IN NUMBER) IS
8734 SELECT lty_code
8735 FROM okc_line_styles_b
8736 WHERE id = p_lse_id;
8737
8738 --Bug# 3897490 : modified cursor to join to SLH row
8739 --Bug# 3066375 : modified cursor
8740 CURSOR l_sll_cur (p_cle_id IN NUMBER) IS
8741 SELECT rul.id sll_id,
8742 rul.jtot_object1_code,
8743 rul.object1_id1,
8744 rul.object1_id2,
8745 rul.jtot_object2_code,
8746 rul.object2_id2,
8747 --nvl(rul.Rule_information6,'0') amount_sll,
8748 rul.Rule_information6 amount_sll,
8749 rul.object2_id1 slh_id,
8750 rul.rule_information1,
8751 rul.rule_information2,
8752 rul.rule_information3,
8753 rul.rule_information4,
8754 rul.rule_information5,
8755 rul.rule_information7,
8756 rul.rule_information8 amount_stub,
8757 rul.rule_information9,
8758 rul.rule_information10,
8759 rul.rule_information11,
8760 rul.rule_information12,
8761 rul.rule_information13,
8762 rul.rule_information14,
8763 rul.rule_information15,
8764 rul_slh.jtot_object1_code strm_type_source,
8765 rul_slh.object1_id1 strm_type_id1,
8766 rul_slh.object1_id2 strm_type_id2,
8767 cleb.currency_code
8768 FROM okc_rules_b rul,
8769 okc_rule_groups_b rgp,
8770 okc_rules_b rul_slh,
8771 okc_k_lines_b cleb
8772 --Bug# : 3124577 - 11.5.10 : Rule Migration
8773 WHERE rul.rule_information_category = 'LASLL'
8774 --where rul.rule_information_category = 'SLL'
8775 AND rul.rgp_id = rgp.id
8776 AND rgp.rgd_code = 'LALEVL'
8777 and rgp.cle_id = cleb.id
8778 and cleb.id = p_cle_id
8779 AND rul_slh.id = rul.object2_id1
8780 AND rul_slh.rgp_id = rgp.id
8781 AND rul_slh.rule_information_category = 'LASLH'
8782 ORDER BY rul_slh.object1_id1;
8783
8784 l_sll_rec l_sll_cur%ROWTYPE;
8785
8786 --Bug# 3897490: SLH details are now fetched by cursor l_sll_cur
8787 /*--Bug : 3066375
8788 CURSOR l_slh_cur (p_rul_id IN NUMBER) IS
8789 SELECT rul.id slh_id,
8790 rul.jtot_object1_code strm_type_source,
8791 rul.object1_id1 strm_type_id1,
8792 rul.object1_id2 strm_type_id2
8793 FROM okc_rules_b rul
8794 WHERE rul.id = p_rul_id
8795 --Bug# - 3124577: 11.5.10 :---Rule Migration
8796 AND rul.rule_information_category = 'LASLH';
8797 --And rul.rule_information_category = 'SLH';
8798 */
8799
8800 l_slh_rul_id okc_rules_b.id%TYPE;
8801 l_strm_type_source okc_rules_b.jtot_object1_code%TYPE;
8802 l_strm_type_id1 okc_rules_b.object1_id1%TYPE;
8803 l_strm_type_id2 okc_rules_b.object1_id2%TYPE;
8804
8805
8806
8807
8808 --Bug# 2881114 - modified cursor
8809 CURSOR l_lnk_asst_cur (p_cle_id IN NUMBER) IS
8810 SELECT cle.cle_id srv_fee_line_id,
8811 cle.id lnk_line_id
8812 FROM OKC_K_LINES_B cle,
8813 OKC_LINE_STYLES_B lse,
8814 OKC_STATUSES_B sts,
8815 OKC_K_ITEMS cim,
8816 OKC_K_LINES_B fin_asst_line
8817 WHERE cle.lse_id = lse.id
8818 AND lse.lty_code IN ('LINK_FEE_ASSET','LINK_SERV_ASSET','LINK_USAGE_ASSET')
8819 AND cle.dnz_chr_id = fin_asst_line.dnz_chr_id
8820 AND sts.code = cle.sts_code
8821 AND sts.ste_code NOT IN ('HOLD','EXPIRED','TERMINATED','CANCELLED')
8822 AND cim.cle_id = cle.id
8823 AND cim.dnz_chr_id = cle.dnz_chr_id
8824 AND cim.object1_id1 = TO_CHAR(p_cle_id)
8825 AND cim.object1_id2 = '#'
8826 AND cim.jtot_object1_code = 'OKX_COVASST'
8827 AND cim.dnz_chr_id = fin_asst_line.dnz_chr_id
8828 AND fin_asst_line.id = p_cle_id;
8829
8830 l_srv_fee_line_id OKC_K_LINES_B.cle_id%TYPE;
8831 l_lnk_line_id OKC_K_LINES_B.id%TYPE;
8832
8833
8834 l_level NUMBER;
8835 l_cle_id NUMBER;
8836 l_chr_id NUMBER;
8837 l_parent_cle_id NUMBER;
8838 l_dnz_chr_id NUMBER;
8839 l_lse_id NUMBER;
8840 l_lty_code VARCHAR2(30);
8841 l_txdv_rec txdv_rec_type;
8842 l_txdv_rec_out txdv_rec_type;
8843
8844 l_sll_id OKC_RULES_B.ID%TYPE;
8845 l_amount_sll OKC_RULES_B.Rule_Information6%TYPE;
8846 l_slh_id OKC_RULES_B.OBJECT2_ID1%TYPE;
8847 L_UPDATED_SLL_AMOUNT NUMBER;
8848 --Bug# 2757289 : For Payment stubs
8849 l_updated_stub_amount NUMBER;
8850
8851 l_rulv_rec OKL_RULE_PUB.rulv_rec_type;
8852 l_rulv_rec_out OKL_RULE_PUB.rulv_rec_type;
8853
8854 --Bug# 3066375:
8855 l_rgpv_rec OKL_RULE_PUB.rgpv_rec_type;
8856 lx_rgpv_rec OKL_RULE_PUB.rgpv_rec_type;
8857
8858 l_sll_rulv_rec OKL_RULE_PUB.rulv_rec_type;
8859 lx_sll_rulv_rec OKL_RULE_PUB.rulv_rec_type;
8860 l_slh_rulv_rec OKL_RULE_PUB.rulv_rec_type;
8861 lx_slh_rulv_rec OKL_RULE_PUB.rulv_rec_type;
8862
8863 --Bug#3143522 : Subsidies enhancement
8864 --cursor to fetch associated subsidy details
8865 CURSOR l_sub_csr (p_asset_cle_id IN NUMBER) IS
8866 SELECT
8867 kle_sub.subsidy_id subsidy_id
8868 ,cleb_sub.id subsidy_cle_id
8869 ,clet_sub.name name
8870 ,clet_sub.item_description description
8871 ,kle_sub.amount amount
8872 ,kle_sub.subsidy_override_amount subsidy_override_amount
8873 ,cleb_sub.dnz_chr_id dnz_chr_id
8874 ,cleb_asst.id asset_cle_id
8875 ,cplb.id cpl_id
8876 ,pov.vendor_id vendor_id
8877 ,pov.vendor_name vendor_name
8878 ,clet_asst.name asset_number
8879 ,cleb_sub.orig_system_id1 parent_sub_cle_id
8880 FROM
8881 po_vendors pov,
8882 okc_k_party_roles_b cplb,
8883 okl_k_lines kle_sub,
8884 okc_k_lines_tl clet_sub,
8885 okc_k_lines_b cleb_sub,
8886 okc_line_styles_b lseb_sub,
8887 okc_k_lines_tl clet_asst,
8888 okc_k_lines_b cleb_asst
8889 WHERE
8890 pov.vendor_id = cplb.object1_id1
8891 AND cplb.object1_id2 = '#'
8892 AND cplb.jtot_object1_code = 'OKX_VENDOR'
8893 AND cplb.dnz_chr_id = cleb_sub.dnz_chr_id
8894 AND cplb.cle_id = cleb_sub.id
8895 AND cplb.chr_id IS NULL
8896 AND cplb.rle_code = 'OKL_VENDOR'
8897 AND kle_sub.id = cleb_sub.id
8898 AND clet_sub.id = cleb_sub.id
8899 AND clet_sub.LANGUAGE = USERENV('LANG')
8900 AND cleb_sub.cle_id = cleb_asst.id
8901 AND cleb_sub.dnz_chr_id = cleb_asst.dnz_chr_id
8902 AND cleb_sub.sts_code <> 'ABANDONED'
8903 AND lseb_sub.id = cleb_sub.lse_id
8904 AND lseb_sub.lty_code = 'SUBSIDY'
8905 AND clet_asst.id = cleb_asst.id
8906 AND clet_asst.LANGUAGE =USERENV('LANG')
8907 AND cleb_asst.id = p_asset_cle_id;
8908
8909 l_sub_rec l_sub_csr%ROWTYPE;
8910
8911 l_asb_rec okl_asset_subsidy_pvt.asb_rec_type;
8912
8913
8914 --cursor to select supplier invoice details to copy
8915 CURSOR l_sid_csr (p_cle_id IN NUMBER) IS
8916 SELECT
8917 sid.ID
8918 ,sid.OBJECT_VERSION_NUMBER
8919 ,sid.CLE_ID
8920 ,sid.FA_CLE_ID
8921 ,sid.INVOICE_NUMBER
8922 ,sid.DATE_INVOICED
8923 ,sid.DATE_DUE
8924 ,sid.SHIPPING_ADDRESS_ID1
8925 ,sid.SHIPPING_ADDRESS_ID2
8926 ,sid.SHIPPING_ADDRESS_CODE
8927 ,sid.ATTRIBUTE_CATEGORY
8928 ,sid.ATTRIBUTE1
8929 ,sid.ATTRIBUTE2
8930 ,sid.ATTRIBUTE3
8931 ,sid.ATTRIBUTE4
8932 ,sid.ATTRIBUTE5
8933 ,sid.ATTRIBUTE6
8934 ,sid.ATTRIBUTE7
8935 ,sid.ATTRIBUTE8
8936 ,sid.ATTRIBUTE9
8937 ,sid.ATTRIBUTE10
8938 ,sid.ATTRIBUTE11
8939 ,sid.ATTRIBUTE12
8940 ,sid.ATTRIBUTE13
8941 ,sid.ATTRIBUTE14
8942 ,sid.ATTRIBUTE15
8943 ,sid.CREATED_BY
8944 ,sid.CREATION_DATE
8945 ,sid.LAST_UPDATED_BY
8946 ,sid.LAST_UPDATE_DATE
8947 ,sid.LAST_UPDATE_LOGIN
8948 ,cleb_fa.id fixed_asset_cle_id
8949 FROM okl_supp_invoice_dtls sid,
8950 okc_k_lines_b cleb_fa,
8951 okc_line_styles_b lseb_fa,
8952 okc_k_lines_b cleb
8953 WHERE sid.cle_id = cleb.orig_system_id1
8954 AND cleb_fa.cle_id = cleb.cle_id
8955 AND cleb_fa.dnz_chr_id = cleb.dnz_chr_id
8956 AND lseb_fa.id = cleb_fa.lse_id
8957 AND lseb_fa.lty_code = 'FIXED_ASSET'
8958 AND cleb.id = p_cle_id;
8959
8960 l_sid_rec l_sid_csr%ROWTYPE;
8961 l_sidv_rec okl_supp_invoice_dtls_pub.sidv_rec_type;
8962 lx_sidv_rec okl_supp_invoice_dtls_pub.sidv_rec_type;
8963 ----------------
8964 --Bug# 2994971
8965 ---------------
8966 l_inv_item_id NUMBER;
8967 l_inv_org_id NUMBER;
8968
8969 --Bug# 3897490
8970 l_strm_type_id OKC_RULES_B.OBJECT1_ID1%TYPE;
8971
8972 --Bug# 3502142
8973 l_rounded_amount NUMBER;
8974
8975 CURSOR l_txd_csr(p_tal_id IN NUMBER,
8976 p_cle_id IN NUMBER) IS
8977 SELECT id,
8978 quantity,
8979 split_percent
8980 FROM okl_txd_assets_b txd
8981 WHERE txd.tal_id = p_tal_id
8982 AND NVL(txd.target_kle_id,-1) <> p_cle_id;
8983
8984 l_sll_amount NUMBER;
8985 l_stub_amount NUMBER;
8986 l_sll_split_factor NUMBER;
8987 l_split_pymt NUMBER;
8988 l_split_pymt_sum NUMBER;
8989
8990 CURSOR l_new_lnk_assts_cur (p_chr_id IN NUMBER,
8991 p_cle_id IN NUMBER) IS
8992 SELECT cle.id
8993 FROM OKC_K_LINES_B cle
8994 WHERE cle.dnz_chr_id = p_chr_id
8995 AND cle.orig_system_id1 = p_cle_id;
8996
8997 l_target_kle_id NUMBER;
8998
8999 CURSOR l_fa_line_csr(p_chr_id IN NUMBER,
9000 p_cle_id IN NUMBER) IS
9001 SELECT cle.id
9002 FROM okc_k_lines_b cle,
9003 okc_line_styles_b lse
9004 WHERE cle.cle_id = p_cle_id
9005 AND cle.dnz_chr_id = p_chr_id
9006 AND cle.lse_id = lse.id
9007 AND lse.lty_code = 'FIXED_ASSET';
9008
9009 -- Bug# 5946411: ER
9010 --cursor to check the status of asset
9011 CURSOR l_cleb_sts_csr(pcleid IN NUMBER) IS
9012 SELECT cleb.sts_code sts_code
9013 FROM okc_k_lines_b cleb
9014 WHERE cleb.id = pcleid;
9015 l_cle_status okc_k_lines_b.sts_code%TYPE;
9016 -- Bug# 5946411: ER End
9017
9018 --Bug# 6344223 : Start
9019 l_fa_line_id NUMBER;
9020 l_klev_round_out klev_rec_type;
9021 l_clev_round_out clev_rec_type;
9022 --Bug# 6344223 : end
9023 BEGIN
9024 x_return_status := OKL_API.G_RET_STS_SUCCESS;
9025 -- Call start_activity to create savepoint, check compatibility
9026 -- and initialize message list
9027 x_return_status := OKL_API.START_ACTIVITY (
9028 l_api_name
9029 ,p_init_msg_list
9030 ,'_PVT'
9031 ,x_return_status);
9032 -- Check if activity started successfully
9033 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9034 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9035 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9036 RAISE OKL_API.G_EXCEPTION_ERROR;
9037 END IF;
9038 IF NVL(p_txdv_rec.split_percent,0) NOT IN (0,OKL_API.G_MISS_NUM) THEN
9039 l_split_factor := (p_txdv_rec.split_percent/100);
9040 ELSE
9041 --1. By comparing the cost and quantities on txlv record and txdv record find the split factor
9042 l_parent_cost := p_txlv_rec.depreciation_cost;
9043 l_parent_quantity := p_txlv_rec.current_units;
9044 l_child_cost := p_txdv_rec.cost;
9045 l_child_quantity := p_txdv_rec.quantity;
9046 l_split_factor := p_txdv_rec.quantity/p_txlv_rec.current_units;
9047 END IF;
9048 -- Bug# 5946411: ER
9049 -- get the status of the parent line id
9050 OPEN l_cleb_sts_csr( p_txlv_rec.kle_id);
9051 FETCH l_cleb_sts_csr INTO l_cle_status;
9052 close l_cleb_sts_csr;
9053 --dbms_output.put_line('Adjust_split_lines--p_txlv_rec.kle_id'||p_txlv_rec.kle_id);
9054 --dbms_output.put_line('Status set as l_cle_status'||l_cle_status);
9055 -- Bug# 5946411: ER End
9056 --2. Select split lines using connect by prior starting with top line (p_clev_id)
9057 OPEN c_lines(p_cle_id);
9058 ---For each line selected in 2
9059 ---2.1 depending on the line style recalculate the amount and unit fields
9060 ---2.2 Call Update Line API to update the line with recalculated amounts and units
9061 LOOP
9062 FETCH c_lines INTO l_level,
9063 l_cle_id,
9064 l_chr_id,
9065 l_parent_cle_id,
9066 l_dnz_chr_id,
9067 l_lse_id;
9068 EXIT WHEN c_lines%NOTFOUND;
9069 OPEN c_lty_code(l_lse_id);
9070 FETCH c_lty_code INTO l_lty_code;
9071 IF c_lty_code%NOTFOUND THEN
9072 --dbms_output.put_line('lty_code not found for lse_id "'||to_char(l_lse_id));
9073 --handle error appropriately
9074 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
9075 p_msg_name => G_LTY_CODE_NOT_FOUND
9076 );
9077 RAISE OKL_API.G_EXCEPTION_ERROR;
9078 END IF;
9079 CLOSE c_lty_code;
9080
9081 --Bug# 6344223 : start
9082 IF l_lty_code ='FIXED_ASSET' THEN
9083 l_fa_line_id := l_cle_id;
9084 END IF;
9085 --Bug# 6344223 : End
9086
9087 --dbms_output.put_line(l_lty_code);
9088 --update transaction details and item links on lines
9089 IF l_lty_code IN ('ITEM','ADD_ITEM','FIXED_ASSET','INST_ITEM','LINK_SERV_ASSET',
9090 'LINK_FEE_ASSET','LINK_USAGE_ASSET') THEN
9091 l_cimv_rec := get_cimv_rec(p_cle_id => l_cle_id);
9092 IF l_lty_code <> 'INST_ITEM' THEN
9093 IF NVL(p_txdv_rec.split_percent,0) NOT IN (0,OKL_API.G_MISS_NUM) THEN
9094 --number of items will remain same in case of split asset components
9095 l_cimv_rec.number_of_items := l_cimv_rec.number_of_items;
9096 ELSE
9097 l_cimv_rec.number_of_items := (l_split_factor*l_cimv_rec.number_of_items);
9098 END IF;
9099 END IF;
9100 IF (l_lty_code = 'FIXED_ASSET') AND (NVL(p_txdv_rec.target_kle_id,-99) <> p_txlv_rec.kle_id) THEN
9101 l_txdv_rec := p_txdv_rec;
9102 l_txdv_rec.target_kle_id := l_cle_id;
9103 --update txd record to indicate correct target_kle_id
9104 --dbms_output.put_line('before updating txd target kle_id :'||to_char(l_cle_id));
9105 OKL_TXD_ASSETS_PUB.update_txd_asset_def(p_api_version => p_api_version,
9106 p_init_msg_list => p_init_msg_list,
9107 x_return_status => x_return_status,
9108 x_msg_count => x_msg_count,
9109 x_msg_data => x_msg_data,
9110 p_adpv_rec => l_txdv_rec,
9111 x_adpv_rec => l_txdv_rec_out);
9112 --dbms_output.put_line('target kle_id :'||l_txdv_rec_out.target_kle_id);
9113 --dbms_output.put_line('After updating trx details:'||x_return_status);
9114 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9115 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9116 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9117 RAISE OKL_API.G_EXCEPTION_ERROR;
9118 END IF;
9119 END IF;
9120
9121 --update the number of items on model and fa lines
9122 --Bug#5559502 --Modification Start
9123 --Update number of items for ADDON record in OKC_K_ITEMS table
9124 IF l_lty_code IN ('ADD_ITEM','ITEM','FIXED_ASSET') THEN
9125 --Bug#5559502 --Modification End
9126 IF (l_cimv_rec.id IS NOT NULL) OR (l_cimv_rec.id <> OKL_API.G_MISS_NUM) THEN
9127 --dbms_output.put_line('cimv rec id'|| to_char(l_cimv_rec.id));
9128 lupd_cimv_rec.id := l_cimv_rec.id;
9129 --dbms_output.put_line('Split Factor '|| to_char(l_split_factor));
9130 --dbms_output.put_line('Split Factor '|| to_char(p_txlv_rec.current_units));
9131 IF NVL(p_txdv_rec.split_percent,0) NOT IN (0,OKL_API.G_MISS_NUM) THEN
9132 --number of items will remain same in case of split asset components
9133 lupd_cimv_rec.number_of_items := p_txlv_rec.current_units;
9134 --if it is split asset component update the inventory item on model line
9135 IF l_lty_code = ('ITEM') THEN
9136 lupd_cimv_rec.object1_id1 := TO_CHAR(p_txdv_rec.inventory_item_id);
9137 --dbms_output.put_line('object1_id1 '||lupd_cimv_rec.object1_id1);
9138 lupd_cimv_rec.object1_id2 := l_cimv_rec.object1_id2;
9139 --dbms_output.put_line('object1_id2 '||lupd_cimv_rec.object1_id2);
9140 lupd_cimv_rec.jtot_object1_code := l_cimv_rec.jtot_object1_code;
9141 --dbms_output.put_line('object_code '||lupd_cimv_rec.jtot_object1_code);
9142 --dbms_output.put_line('ITEM_ID '||to_char(lupd_cimv_rec.id));
9143
9144 ---------------
9145 --Bug# 2994971
9146 ---------------
9147 IF NVL(lupd_cimv_rec.object1_id1,okl_api.g_miss_char) <> OKL_API.G_MISS_CHAR AND
9148 NVL(lupd_cimv_rec.object1_id2,okl_api.g_miss_char) <> OKL_API.G_MISS_CHAR THEN
9149
9150 --Bug# 3438811 :
9151 l_inv_item_id := TO_NUMBER(lupd_cimv_rec.object1_id1);
9152 l_inv_org_id := TO_NUMBER(lupd_cimv_rec.object1_id2);
9153 --l_inv_item_id := to_char(lupd_cimv_rec.object1_id1);
9154 --l_inv_org_id := to_char(lupd_cimv_rec.object1_id2);
9155
9156 populate_insurance_category(p_api_version => p_api_version,
9157 p_init_msg_list => p_init_msg_list,
9158 x_return_status => x_return_status,
9159 x_msg_count => x_msg_count,
9160 x_msg_data => x_msg_data,
9161 p_cle_id => l_parent_cle_id,
9162 p_inv_item_id => l_inv_item_id,
9163 p_inv_org_id => l_inv_org_id);
9164 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9165 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9166 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9167 RAISE OKL_API.G_EXCEPTION_ERROR;
9168 END IF;
9169 END IF;
9170 ---------------
9171 --Bug# 2994971
9172 ---------------
9173
9174 ELSE
9175 lupd_cimv_rec.object1_id1 := l_cimv_rec.object1_id1;
9176 --dbms_output.put_line('object1_id1 '||lupd_cimv_rec.object1_id1);
9177 lupd_cimv_rec.object1_id2 := l_cimv_rec.object1_id2;
9178 --dbms_output.put_line('object1_id2 '||lupd_cimv_rec.object1_id2);
9179 lupd_cimv_rec.jtot_object1_code := l_cimv_rec.jtot_object1_code;
9180 --dbms_output.put_line('object_code '||lupd_cimv_rec.jtot_object1_code);
9181 --dbms_output.put_line('ITEM_ID '||to_char(lupd_cimv_rec.id));
9182 END IF;
9183 ELSE
9184 --lupd_cimv_rec.number_of_items := (l_split_factor*nvl(p_txlv_rec.current_units,0));
9185 --Bug#2761799 - did a round as whole number of units may not be found as split factor
9186 --is being calculated earlier - so rounding issues
9187 --lupd_cimv_rec.number_of_items := (l_split_factor*p_txlv_rec.current_units);
9188 lupd_cimv_rec.number_of_items := ROUND((l_split_factor*p_txlv_rec.current_units));
9189 END IF;
9190
9191 --dbms_output.put_line('Number of items'|| to_char(lupd_cimv_rec.number_of_items));
9192 --update the item record
9193 OKL_OKC_MIGRATION_PVT.update_contract_item( p_api_version => p_api_version,
9194 p_init_msg_list => p_init_msg_list,
9195 x_return_status => x_return_status,
9196 x_msg_count => x_msg_count,
9197 x_msg_data => x_msg_data,
9198 p_cimv_rec => lupd_cimv_rec,
9199 x_cimv_rec => l_cimv_rec_out);
9200 --dbms_output.put_line('After updating contract item to nulls :'||x_return_status);
9201 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9202 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9203 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9204 RAISE OKL_API.G_EXCEPTION_ERROR;
9205 END IF;
9206 --End If;
9207 END IF;
9208
9209 END IF;
9210
9211
9212 END IF;
9213
9214 l_klev_rec := get_klev_rec(p_cle_id => l_cle_id);
9215 l_clev_rec := get_clev_rec(p_cle_id => l_cle_id);
9216
9217 --Bug# 6344223 : Start
9218 IF (NVL(p_txdv_rec.target_kle_id,-99) = p_txlv_rec.kle_id)
9219 OR p_round_split_comp_amt = 'Y' THEN
9220 --get the rounding logic
9221 get_split_round_amount(
9222 p_api_version =>p_api_version
9223 ,p_init_msg_list =>p_init_msg_list
9224 ,x_return_status =>x_return_status
9225 ,x_msg_count =>x_msg_count
9226 ,x_msg_data =>x_msg_data
9227 ,p_txl_id =>p_txlv_rec.id
9228 ,p_split_factor =>l_split_factor
9229 ,p_klev_rec =>l_klev_rec
9230 ,p_clev_rec =>l_clev_rec
9231 ,x_klev_rec =>l_klev_round_out
9232 ,x_clev_rec =>l_clev_round_out
9233 );
9234 --dbms_output.put_line('After get_split_round_amount :'||x_return_status);
9235
9236 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9237 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9238 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9239 RAISE OKL_API.G_EXCEPTION_ERROR;
9240 END IF;
9241
9242 l_klev_rec :=l_klev_round_out;
9243 l_clev_rec :=l_clev_round_out;
9244
9245 ELSE
9246 --Bug# 6344223 : End
9247 --
9248 l_klev_rec.ESTIMATED_OEC := (l_split_factor * l_klev_rec.ESTIMATED_OEC);
9249 l_klev_rec.LAO_AMOUNT := (l_split_factor * l_klev_rec.LAO_AMOUNT);
9250 l_klev_rec.FEE_CHARGE := (l_split_factor * l_klev_rec.FEE_CHARGE);
9251 l_klev_rec.INITIAL_DIRECT_COST := (l_split_factor * l_klev_rec.INITIAL_DIRECT_COST);
9252 l_klev_rec.AMOUNT_STAKE := (l_split_factor * l_klev_rec.AMOUNT_STAKE);
9253 l_klev_rec.LRV_AMOUNT := (l_split_factor * l_klev_rec.LRV_AMOUNT);
9254 l_klev_rec.COVERAGE := (l_split_factor * l_klev_rec.COVERAGE);
9255 l_klev_rec.CAPITAL_REDUCTION := (l_split_factor * l_klev_rec.CAPITAL_REDUCTION);
9256 l_klev_rec.VENDOR_ADVANCE_PAID := (l_split_factor * l_klev_rec.VENDOR_ADVANCE_PAID);
9257 l_klev_rec.TRADEIN_AMOUNT := (l_split_factor * l_klev_rec.TRADEIN_AMOUNT);
9258 l_klev_rec.BOND_EQUIVALENT_YIELD := (l_split_factor * l_klev_rec.BOND_EQUIVALENT_YIELD);
9259 l_klev_rec.TERMINATION_PURCHASE_AMOUNT :=(l_split_factor * l_klev_rec.TERMINATION_PURCHASE_AMOUNT);
9260 l_klev_rec.REFINANCE_AMOUNT := (l_split_factor * l_klev_rec.REFINANCE_AMOUNT);
9261 l_klev_rec.REMARKETED_AMOUNT := (l_split_factor * l_klev_rec.REMARKETED_AMOUNT);
9262 l_klev_rec.REMARKET_MARGIN := (l_split_factor * l_klev_rec.REMARKET_MARGIN);
9263 l_klev_rec.REPURCHASED_AMOUNT := (l_split_factor * l_klev_rec.REPURCHASED_AMOUNT);
9264 l_klev_rec.RESIDUAL_VALUE := (l_split_factor * l_klev_rec.RESIDUAL_VALUE);
9265 l_klev_rec.APPRAISAL_VALUE := (l_split_factor * l_klev_rec.APPRAISAL_VALUE);
9266 l_klev_rec.GAIN_LOSS := (l_split_factor * l_klev_rec.GAIN_LOSS);
9267 l_klev_rec.FLOOR_AMOUNT := (l_split_factor * l_klev_rec.FLOOR_AMOUNT);
9268 l_klev_rec.TRACKED_RESIDUAL := (l_split_factor * l_klev_rec.TRACKED_RESIDUAL);
9269 l_klev_rec.AMOUNT := (l_split_factor * l_klev_rec.AMOUNT);
9270 l_klev_rec.OEC := (l_split_factor * l_klev_rec.OEC);
9271 l_klev_rec.CAPITAL_AMOUNT := (l_split_factor * l_klev_rec.CAPITAL_AMOUNT);
9272 l_klev_rec.RESIDUAL_GRNTY_AMOUNT := (l_split_factor * l_klev_rec.RESIDUAL_GRNTY_AMOUNT);
9273 l_klev_rec.RVI_PREMIUM := (l_split_factor * l_klev_rec.RVI_PREMIUM);
9274 l_klev_rec.CAPITALIZED_INTEREST := (l_split_factor * l_klev_rec.CAPITALIZED_INTEREST);
9275 --
9276 --Bug#3143522 : Subsidies additional columns
9277 l_klev_rec.SUBSIDY_OVERRIDE_AMOUNT := (l_split_factor * l_klev_rec.SUBSIDY_OVERRIDE_AMOUNT);
9278 --Bug#3143522 : Subsidy additional columns
9279
9280 --Bug#4631549 :
9281 l_klev_rec.Expected_Asset_Cost := (l_split_factor * l_klev_rec.Expected_Asset_Cost);
9282 --Bug# 4631549
9283
9284 IF (NVL(p_txdv_rec.target_kle_id,-99) <> p_txlv_rec.kle_id) THEN
9285 l_clev_rec.ORIG_SYSTEM_SOURCE_CODE := 'OKL_SPLIT';
9286 END IF;
9287 --Bug# 5946411: ER
9288 --set the status same as that of the parent line
9289 --l_clev_rec.STS_CODE := 'BOOKED';
9290 l_clev_rec.STS_CODE:=l_cle_status;
9291 --Bug# 5946411: ER End
9292
9293 --price unit to be split only for split into components
9294 IF NVL(p_txdv_rec.split_percent,0) IN (0,OKL_API.G_MISS_NUM)
9295 THEN
9296 NULL;
9297 ELSIF NVL(p_txdv_rec.split_percent,0) NOT IN (0,OKL_API.G_MISS_NUM) THEN
9298 --
9299 l_clev_rec.price_unit := (l_split_factor * l_clev_rec.price_unit);
9300 l_clev_rec.price_negotiated := (l_split_factor * l_clev_rec.price_negotiated);
9301 l_clev_rec.price_negotiated_renewed := (l_split_factor * l_clev_rec.price_negotiated_renewed);
9302
9303 END IF;
9304 --Bug# 6344223
9305 END IF;
9306 --update asset number on top line
9307 IF l_lty_code IN ('FREE_FORM1','FIXED_ASSET') THEN
9308 l_clev_rec.name := p_txdv_rec.asset_number;
9309 l_clev_rec.item_description := p_txdv_rec.description;
9310 END IF;
9311
9312 --Call api to update line
9313 OKL_CONTRACT_PUB.update_contract_line(
9314 p_api_version => p_api_version,
9315 p_init_msg_list => p_init_msg_list,
9316 x_return_status => x_return_status,
9317 x_msg_count => x_msg_count,
9318 x_msg_data => x_msg_data,
9319 p_clev_rec => l_clev_rec,
9320 p_klev_rec => l_klev_rec,
9321 x_clev_rec => l_clev_rec_out,
9322 x_klev_rec => l_klev_rec_out);
9323 --dbms_output.put_line('After updating contract line :'||x_return_status);
9324 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9325 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9326 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9327 RAISE OKL_API.G_EXCEPTION_ERROR;
9328 END IF;
9329
9330 -------------------------------------------------------
9331 --Bug# 3143522: subsidies - Validate all associated subsidies
9332 ------------------------------------------------------
9333 IF l_lty_code = 'FREE_FORM1' THEN
9334 --check if any subsidies exist and are valid
9335 OPEN l_sub_csr (p_asset_cle_id => l_cle_id);
9336 LOOP
9337 FETCH l_sub_csr INTO l_sub_rec;
9338 EXIT WHEN l_sub_csr%NOTFOUND;
9339 --check whether subsidy is valid for the asset :
9340 l_asb_rec.SUBSIDY_ID := l_sub_rec.SUBSIDY_ID;
9341 l_asb_rec.SUBSIDY_CLE_ID := l_sub_rec.SUBSIDY_CLE_ID;
9342 l_asb_rec.NAME := l_sub_rec.NAME;
9343 l_asb_rec.DESCRIPTION := l_sub_rec.DESCRIPTION;
9344 l_asb_rec.AMOUNT := l_sub_rec.AMOUNT;
9345 l_asb_rec.SUBSIDY_OVERRIDE_AMOUNT := l_sub_rec.SUBSIDY_OVERRIDE_AMOUNT;
9346 l_asb_rec.DNZ_CHR_ID := l_sub_rec.DNZ_CHR_ID;
9347 l_asb_rec.ASSET_CLE_ID := l_sub_rec.ASSET_CLE_ID;
9348 l_asb_rec.CPL_ID := l_sub_rec.CPL_ID;
9349 l_asb_rec.VENDOR_ID := l_sub_rec.VENDOR_ID;
9350 l_asb_rec.VENDOR_NAME := l_sub_rec.VENDOR_NAME;
9351
9352 --call api to validate asset subsidy
9353 okl_asset_subsidy_pvt.validate_asset_subsidy(
9354 p_api_version => p_api_version,
9355 p_init_msg_list => p_init_msg_list,
9356 x_return_status => x_return_status,
9357 x_msg_count => x_msg_count,
9358 x_msg_data => x_msg_data,
9359 p_asb_rec => l_asb_rec);
9360
9361 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9362 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9363 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9364 RAISE OKL_API.G_EXCEPTION_ERROR;
9365 END IF;
9366
9367 /*------------------Commented as this will be done as part of copy lines now
9368 ------------------------------------------
9369 --create party payment details from parent
9370 ------------------------------------------
9371 ---------------------------------Commented as this being done in copy lines base proc*/
9372 END LOOP;
9373 CLOSE l_sub_csr;
9374 END IF;
9375 ------------------------------------------------------
9376 --Bug# 3143522 : End Subsidies
9377 ------------------------------------------------------
9378 ------------------------------------------------------
9379 --to_copy supplier invoice details linked to model line
9380 ------------------------------------------------------
9381 IF l_lty_code = 'ITEM' THEN
9382 IF (NVL(p_txdv_rec.target_kle_id,-99) <> p_txlv_rec.kle_id) THEN --is new line
9383 OPEN l_sid_csr(p_cle_id => l_cle_id);
9384 FETCH l_sid_csr INTO l_sid_rec;
9385 IF l_sid_csr%NOTFOUND THEN
9386 NULL;
9387 ELSE
9388 l_sidv_rec.CLE_ID := l_cle_id;
9389 l_sidv_rec.FA_CLE_ID := l_sid_rec.fixed_asset_cle_id;
9390 l_sidv_rec.INVOICE_NUMBER := l_sid_rec.invoice_number;
9391 l_sidv_rec.DATE_INVOICED := l_sid_rec.date_invoiced;
9392 l_sidv_rec.DATE_DUE := l_sid_rec.date_due;
9393 l_sidv_rec.SHIPPING_ADDRESS_ID1 := l_sid_rec.shipping_address_id1;
9394 l_sidv_rec.SHIPPING_ADDRESS_ID2 := l_sid_rec.shipping_address_id2;
9395 l_sidv_rec.SHIPPING_ADDRESS_CODE := l_sid_rec.shipping_address_code;
9396 l_sidv_rec.ATTRIBUTE_CATEGORY := l_sid_rec.attribute_category;
9397 l_sidv_rec.ATTRIBUTE1 := l_sid_rec.attribute1;
9398 l_sidv_rec.ATTRIBUTE2 := l_sid_rec.attribute2;
9399 l_sidv_rec.ATTRIBUTE3 := l_sid_rec.attribute3;
9400 l_sidv_rec.ATTRIBUTE4 := l_sid_rec.attribute4;
9401 l_sidv_rec.ATTRIBUTE5 := l_sid_rec.attribute5;
9402 l_sidv_rec.ATTRIBUTE6 := l_sid_rec.attribute6;
9403 l_sidv_rec.ATTRIBUTE7 := l_sid_rec.attribute7;
9404 l_sidv_rec.ATTRIBUTE8 := l_sid_rec.attribute8;
9405 l_sidv_rec.ATTRIBUTE9 := l_sid_rec.attribute9;
9406 l_sidv_rec.ATTRIBUTE10 := l_sid_rec.attribute10;
9407 l_sidv_rec.ATTRIBUTE11 := l_sid_rec.attribute11;
9408 l_sidv_rec.ATTRIBUTE12 := l_sid_rec.attribute12;
9409 l_sidv_rec.ATTRIBUTE13 := l_sid_rec.attribute13;
9410 l_sidv_rec.ATTRIBUTE14 := l_sid_rec.attribute14;
9411 l_sidv_rec.ATTRIBUTE15 := l_sid_rec.attribute15;
9412
9413 --------------------------------------------
9414 --call api to create supplier invoice dtls
9415 -------------------------------------------
9416 OKL_SUPP_INVOICE_DTLS_PUB.Create_sup_inv_dtls
9417 (p_api_version => p_api_version,
9418 p_init_msg_list => p_init_msg_list,
9419 x_return_status => x_return_status,
9420 x_msg_count => x_msg_count,
9421 x_msg_data => x_msg_data,
9422 p_sidv_rec => l_sidv_rec,
9423 x_sidv_rec => lx_sidv_rec);
9424
9425 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9426 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9427 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9428 RAISE OKL_API.G_EXCEPTION_ERROR;
9429 END IF;
9430
9431 END IF;
9432 END IF;
9433 END IF;
9434
9435 END LOOP;
9436 CLOSE c_lines;
9437
9438 --after completing adjustment on lines
9439 --adjust rule amounts SLL/SLH
9440
9441 --Bug# 3502142
9442 IF (NVL(p_txdv_rec.target_kle_id,-1) <> p_txlv_rec.kle_id) AND
9443 (p_round_split_comp_amt = 'N') THEN -- child line
9444
9445 OPEN l_sll_cur(p_cle_id => p_cle_id);
9446 LOOP
9447 l_updated_sll_amount := NULL;
9448 l_updated_stub_amount := NULL;
9449 FETCH l_sll_cur INTO l_sll_rec;
9450 EXIT WHEN l_sll_cur%NOTFOUND;
9451
9452 l_updated_sll_amount := TO_NUMBER(l_sll_rec.amount_sll)*l_split_factor;
9453 --Bug# 4028371
9454 --Bug# 3502142: Use Streams Rounding Option
9455 okl_accounting_util.round_amount(
9456 p_api_version => p_api_version,
9457 p_init_msg_list => p_init_msg_list,
9458 x_return_status => x_return_status,
9459 x_msg_count => x_msg_count,
9460 x_msg_data => x_msg_data,
9461 p_amount => l_updated_sll_amount,
9462 p_currency_code => l_sll_rec.currency_code,
9463 p_round_option => 'STM',
9464 x_rounded_amount => l_rounded_amount
9465 );
9466 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9467 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9468 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9469 RAISE OKL_API.G_EXCEPTION_ERROR;
9470 END IF;
9471
9472 l_updated_sll_amount := l_rounded_amount;
9473
9474 --Bug# 2757289 :enhancement for stub payments
9475 l_updated_stub_amount := TO_NUMBER(l_sll_rec.amount_stub)*l_split_factor;
9476 --Bug# 4028371
9477 --Bug# 3502142: Use Streams Rounding Option
9478 okl_accounting_util.round_amount(
9479 p_api_version => p_api_version,
9480 p_init_msg_list => p_init_msg_list,
9481 x_return_status => x_return_status,
9482 x_msg_count => x_msg_count,
9483 x_msg_data => x_msg_data,
9484 p_amount => l_updated_stub_amount,
9485 p_currency_code => l_sll_rec.currency_code,
9486 p_round_option => 'STM',
9487 x_rounded_amount => l_rounded_amount
9488 );
9489 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9490 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9491 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9492 RAISE OKL_API.G_EXCEPTION_ERROR;
9493 END IF;
9494
9495 l_updated_stub_amount := l_rounded_amount;
9496
9497 --update the rule record
9498 l_rulv_rec.id := l_sll_rec.sll_id;
9499 IF NVL(l_updated_sll_amount,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM THEN
9500 l_rulv_rec.rule_information6 := l_updated_sll_amount;
9501 ELSIF NVL(l_updated_sll_amount,OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM THEN
9502 l_rulv_rec.rule_information6 := NULL;
9503 END IF;
9504 --Bug# 2757289 :enhancement for stub payments
9505 IF NVL(l_updated_stub_amount,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM THEN
9506 l_rulv_rec.rule_information8 := l_updated_stub_amount;
9507 ELSIF NVL(l_updated_stub_amount,OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM THEN
9508 l_rulv_rec.rule_information8 := NULL;
9509 END IF;
9510
9511 OKL_RULE_PUB.update_rule(
9512 p_api_version => p_api_version,
9513 p_init_msg_list => p_init_msg_list,
9514 x_return_status => x_return_status,
9515 x_msg_count => x_msg_count,
9516 x_msg_data => x_msg_data,
9517 p_rulv_rec => l_rulv_rec,
9518 x_rulv_rec => l_rulv_rec_out);
9519 --dbms_output.put_line('After updating payments :'||x_return_status);
9520 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9521 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9522 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9523 RAISE OKL_API.G_EXCEPTION_ERROR;
9524 END IF;
9525 END LOOP;
9526 CLOSE l_sll_cur;
9527
9528 ELSE -- parent line
9529
9530 -- Apply Rounding Difference to
9531 -- Parent Line for Split assets into Units
9532 -- Largest asset cost for Split assets into Components
9533
9534 OPEN l_sll_cur(p_cle_id => p_cle_id);
9535 LOOP
9536 FETCH l_sll_cur INTO l_sll_rec;
9537 EXIT WHEN l_sll_cur%NOTFOUND;
9538
9539 l_sll_amount := TO_NUMBER(l_sll_rec.amount_sll);
9540 l_stub_amount := TO_NUMBER(l_sll_rec.amount_stub);
9541
9542 l_split_pymt_sum := 0;
9543
9544 -- Split into units
9545 IF NVL(p_txdv_rec.split_percent,0) IN (0,OKL_API.G_MISS_NUM) THEN
9546 l_target_kle_id := p_txlv_rec.kle_id;
9547
9548 -- Split into components
9549 ELSE
9550 open l_fa_line_csr(p_chr_id => p_txlv_rec.dnz_khr_id
9551 ,p_cle_id => p_cle_id);
9552 fetch l_fa_line_csr into l_target_kle_id;
9553 close l_fa_line_csr;
9554 END IF;
9555
9556 FOR l_txd_rec in l_txd_csr(p_tal_id => p_txlv_rec.id
9557 ,p_cle_id => l_target_kle_id)
9558 LOOP
9559
9560 IF NVL(p_txdv_rec.split_percent,0) IN (0,OKL_API.G_MISS_NUM) THEN
9561 l_sll_split_factor := l_txd_rec.quantity/p_txlv_rec.current_units;
9562 ELSE
9563 l_sll_split_factor := l_txd_rec.split_percent/100;
9564 END IF;
9565
9566 IF NVL(l_sll_amount,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM THEN
9567 l_split_pymt := l_sll_amount * l_sll_split_factor;
9568 ELSIF NVL(l_stub_amount,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM THEN
9569 l_split_pymt := l_stub_amount * l_sll_split_factor;
9570 END IF;
9571
9572 okl_accounting_util.round_amount(
9573 p_api_version => p_api_version,
9574 p_init_msg_list => p_init_msg_list,
9575 x_return_status => x_return_status,
9576 x_msg_count => x_msg_count,
9577 x_msg_data => x_msg_data,
9578 p_amount => l_split_pymt,
9579 p_currency_code => l_sll_rec.currency_code,
9580 p_round_option => 'STM',
9581 x_rounded_amount => l_rounded_amount
9582 );
9583 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9584 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9585 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9586 RAISE OKL_API.G_EXCEPTION_ERROR;
9587 END IF;
9588
9589 l_split_pymt_sum := l_split_pymt_sum + l_rounded_amount;
9590
9591 END LOOP;
9592
9593 --update the rule record
9594 l_rulv_rec.id := l_sll_rec.sll_id;
9595 IF NVL(l_sll_amount,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM THEN
9596 l_rulv_rec.rule_information6 := TO_CHAR(l_sll_amount - l_split_pymt_sum);
9597 ELSIF NVL(l_sll_amount,OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM THEN
9598 l_rulv_rec.rule_information6 := NULL;
9599 END IF;
9600 --Bug# 2757289 :enhancement for stub payments
9601 IF NVL(l_stub_amount,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM THEN
9602 l_rulv_rec.rule_information8 := TO_CHAR(l_stub_amount - l_split_pymt_sum);
9603 ELSIF NVL(l_stub_amount,OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM THEN
9604 l_rulv_rec.rule_information8 := NULL;
9605 END IF;
9606
9607 OKL_RULE_PUB.update_rule(
9608 p_api_version => p_api_version,
9609 p_init_msg_list => p_init_msg_list,
9610 x_return_status => x_return_status,
9611 x_msg_count => x_msg_count,
9612 x_msg_data => x_msg_data,
9613 p_rulv_rec => l_rulv_rec,
9614 x_rulv_rec => l_rulv_rec_out);
9615 --dbms_output.put_line('After updating payments :'||x_return_status);
9616 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9617 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9618 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9619 RAISE OKL_API.G_EXCEPTION_ERROR;
9620 END IF;
9621 END LOOP;
9622 CLOSE l_sll_cur;
9623 END IF;
9624
9625 --Bug Fix# 2881114 :
9626 --find out if the parent top line is linked to an asset/fee line
9627 -- Bug# 3502142
9628 IF (NVL(p_txdv_rec.target_kle_id,-1) <> p_txlv_rec.kle_id) AND
9629 (p_round_split_comp_amt = 'N') THEN -- it is a child line
9630
9631 --get if top line is linked to an asset
9632 OPEN l_lnk_asst_cur (p_cle_id => p_parent_line_id);
9633 LOOP
9634 FETCH l_lnk_asst_cur INTO
9635 l_srv_fee_line_id,
9636 l_lnk_line_id;
9637 EXIT WHEN l_lnk_asst_cur%NOTFOUND;
9638 --create new linked line and update old line
9639 l_lnk_klev_rec := get_klev_rec(p_cle_id => l_lnk_line_id,
9640 x_no_data_found => l_no_data_found);
9641 IF l_no_data_found THEN
9642 NULL;
9643 --raise appropriate error
9644 ELSE
9645 --End If;
9646 l_lnk_klev_old_rec := l_lnk_klev_rec;
9647
9648 l_lnk_clev_rec := get_clev_rec(p_cle_id => l_lnk_line_id,
9649 x_no_data_found => l_no_data_found);
9650 IF l_no_data_found THEN
9651 NULL;
9652 --raise appropriate error
9653 ELSE
9654 --End If;
9655 l_lnk_clev_old_rec := l_lnk_clev_rec;
9656 --adjusted entries
9657 --
9658 l_lnk_klev_rec.ESTIMATED_OEC := (l_split_factor * l_lnk_klev_rec.ESTIMATED_OEC);
9659 l_lnk_klev_rec.LAO_AMOUNT := (l_split_factor * l_lnk_klev_rec.LAO_AMOUNT);
9660 l_lnk_klev_rec.FEE_CHARGE := (l_split_factor * l_lnk_klev_rec.FEE_CHARGE);
9661 l_lnk_klev_rec.INITIAL_DIRECT_COST := (l_split_factor * l_lnk_klev_rec.INITIAL_DIRECT_COST);
9662 l_lnk_klev_rec.AMOUNT_STAKE := (l_split_factor * l_lnk_klev_rec.AMOUNT_STAKE);
9663 l_lnk_klev_rec.LRV_AMOUNT := (l_split_factor * l_lnk_klev_rec.LRV_AMOUNT);
9664 l_lnk_klev_rec.COVERAGE := (l_split_factor * l_lnk_klev_rec.COVERAGE);
9665 l_lnk_klev_rec.CAPITAL_REDUCTION := (l_split_factor * l_lnk_klev_rec.CAPITAL_REDUCTION);
9666 l_lnk_klev_rec.VENDOR_ADVANCE_PAID := (l_split_factor * l_lnk_klev_rec.VENDOR_ADVANCE_PAID);
9667 l_lnk_klev_rec.TRADEIN_AMOUNT := (l_split_factor * l_lnk_klev_rec.TRADEIN_AMOUNT);
9668 l_lnk_klev_rec.BOND_EQUIVALENT_YIELD := (l_split_factor * l_lnk_klev_rec.BOND_EQUIVALENT_YIELD);
9669 l_lnk_klev_rec.TERMINATION_PURCHASE_AMOUNT :=(l_split_factor * l_lnk_klev_rec.TERMINATION_PURCHASE_AMOUNT);
9670 l_lnk_klev_rec.REFINANCE_AMOUNT := (l_split_factor * l_lnk_klev_rec.REFINANCE_AMOUNT);
9671 l_lnk_klev_rec.REMARKETED_AMOUNT := (l_split_factor * l_lnk_klev_rec.REMARKETED_AMOUNT);
9672 l_lnk_klev_rec.REMARKET_MARGIN := (l_split_factor * l_lnk_klev_rec.REMARKET_MARGIN);
9673 l_lnk_klev_rec.REPURCHASED_AMOUNT := (l_split_factor * l_lnk_klev_rec.REPURCHASED_AMOUNT);
9674 l_lnk_klev_rec.RESIDUAL_VALUE := (l_split_factor * l_lnk_klev_rec.RESIDUAL_VALUE);
9675 l_lnk_klev_rec.APPRAISAL_VALUE := (l_split_factor * l_lnk_klev_rec.APPRAISAL_VALUE);
9676 l_lnk_klev_rec.GAIN_LOSS := (l_split_factor * l_lnk_klev_rec.GAIN_LOSS);
9677 l_lnk_klev_rec.FLOOR_AMOUNT := (l_split_factor * l_lnk_klev_rec.FLOOR_AMOUNT);
9678 l_lnk_klev_rec.TRACKED_RESIDUAL := (l_split_factor * l_lnk_klev_rec.TRACKED_RESIDUAL);
9679 l_lnk_klev_rec.AMOUNT := (l_split_factor * l_lnk_klev_rec.AMOUNT);
9680 l_lnk_klev_rec.OEC := (l_split_factor * l_lnk_klev_rec.OEC);
9681 l_lnk_klev_rec.CAPITAL_AMOUNT := (l_split_factor * l_lnk_klev_rec.CAPITAL_AMOUNT);
9682 l_lnk_klev_rec.RESIDUAL_GRNTY_AMOUNT := (l_split_factor * l_lnk_klev_rec.RESIDUAL_GRNTY_AMOUNT);
9683 l_lnk_klev_rec.RVI_PREMIUM := (l_split_factor * l_lnk_klev_rec.RVI_PREMIUM);
9684 --
9685 --Bug# 3143522 : Subsidy New Columns
9686 ---
9687 l_lnk_klev_rec.SUBSIDY_OVERRIDE_AMOUNT := (l_split_factor * l_lnk_klev_rec.SUBSIDY_OVERRIDE_AMOUNT);
9688 --
9689 --price unit to be split only for split into components
9690 --old record to be adjusted only for normal split asset
9691 IF NVL(p_txdv_rec.split_percent,0) IN (0,OKL_API.G_MISS_NUM)
9692 THEN
9693 NULL;
9694 ELSIF NVL(p_txdv_rec.split_percent,0) NOT IN (0,OKL_API.G_MISS_NUM) THEN
9695 --
9696 l_lnk_clev_rec.price_unit := (l_split_factor * l_lnk_clev_rec.price_unit);
9697 l_lnk_clev_rec.price_negotiated := (l_split_factor * l_lnk_clev_rec.price_negotiated);
9698 l_lnk_clev_rec.price_negotiated_renewed := (l_split_factor * l_lnk_clev_rec.price_negotiated_renewed);
9699 --make the old line as 'ABANDONED'
9700 --l_lnk_clev_old_rec.sts_code := 'ABANDONED';
9701 END IF;
9702 l_lnk_clev_rec.ORIG_SYSTEM_ID1 := l_lnk_clev_rec.ID;
9703 l_lnk_clev_rec.ID := OKL_API.G_MISS_NUM;
9704 l_lnk_clev_rec.OBJECT_VERSION_NUMBER := OKL_API.G_MISS_NUM;
9705 l_lnk_clev_rec.SFWT_FLAG := OKL_API.G_MISS_CHAR;
9706 l_lnk_clev_rec.LINE_NUMBER := OKL_API.G_MISS_NUM;
9707 l_lnk_clev_rec.DISPLAY_SEQUENCE := l_clev_rec.DISPLAY_SEQUENCE + 1;
9708 --l_lnk_clev_rec.START_DATE := sysdate;
9709 --l_clev_rec.END_DATE :=
9710 l_lnk_clev_rec.ORIG_SYSTEM_SOURCE_CODE := 'OKL_SPLIT';
9711 l_lnk_clev_rec.CREATED_BY := OKL_API.G_MISS_NUM;
9712 l_lnk_clev_rec.CREATION_DATE := OKL_API.G_MISS_DATE;
9713 l_lnk_clev_rec.LAST_UPDATED_BY := OKL_API.G_MISS_NUM;
9714 l_lnk_clev_rec.LAST_UPDATE_DATE := OKL_API.G_MISS_DATE;
9715 l_lnk_clev_rec.LAST_UPDATE_LOGIN := OKL_API.G_MISS_NUM;
9716 --Bug# 5946411: ER
9717 --set the status same as that of the parent line
9718 --make new line as BOOKED
9719 --l_lnk_clev_rec.STS_CODE := 'BOOKED';
9720 l_lnk_clev_rec.STS_CODE :=l_cle_status;
9721 --dbms_output.put_line('Status set as l_lnk_clev_rec'||l_lnk_clev_rec.STS_CODE);
9722 --Bug# 5946411: ER End
9723 --bug# 3066375
9724 l_lnk_clev_rec.name := l_txdv_rec.asset_number;
9725 l_lnk_clev_rec.item_description := l_txdv_rec.description;
9726 ----
9727 l_lnk_klev_rec.ID := OKL_API.G_MISS_NUM;
9728 l_lnk_klev_rec.OBJECT_VERSION_NUMBER := OKL_API.G_MISS_NUM;
9729 l_lnk_klev_rec.CREATED_BY := OKL_API.G_MISS_NUM;
9730 l_lnk_klev_rec.CREATION_DATE := OKL_API.G_MISS_DATE;
9731 l_klev_rec.LAST_UPDATED_BY := OKL_API.G_MISS_NUM;
9732 l_klev_rec.LAST_UPDATE_DATE := OKL_API.G_MISS_DATE;
9733 l_klev_rec.LAST_UPDATE_LOGIN := OKL_API.G_MISS_NUM;
9734
9735
9736 OKL_CONTRACT_PUB.create_contract_line(
9737 p_api_version => p_api_version,
9738 p_init_msg_list => p_init_msg_list,
9739 x_return_status => x_return_status,
9740 x_msg_count => x_msg_count,
9741 x_msg_data => x_msg_data,
9742 p_clev_rec => l_lnk_clev_rec,
9743 p_klev_rec => l_lnk_klev_rec,
9744 x_clev_rec => lx_lnk_clev_rec,
9745 x_klev_rec => lx_lnk_klev_rec);
9746 --dbms_output.put_line('After creating service fee link line :'||x_return_status);
9747 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9748 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9749 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9750 RAISE OKL_API.G_EXCEPTION_ERROR;
9751 END IF;
9752
9753 l_lnk_cimv_rec := get_cimv_rec(p_cle_id => l_lnk_line_id, x_no_data_found => l_no_data_found);
9754
9755 IF l_no_data_found THEN
9756 NULL;
9757 --raise appropriate error
9758 ELSE
9759 --End If;
9760 l_lnk_cimv_old_rec := l_lnk_cimv_rec;
9761 l_lnk_cimv_rec.ID := OKL_API.G_MISS_NUM;
9762 l_lnk_cimv_rec.OBJECT_VERSION_NUMBER := OKL_API.G_MISS_NUM;
9763 l_lnk_cimv_rec.OBJECT1_ID1 := TO_CHAR(p_cle_id);
9764 l_lnk_cimv_rec.CLE_ID := lx_lnk_clev_rec.id;
9765
9766 IF NVL(p_txdv_rec.split_percent,0) NOT IN (0,OKL_API.G_MISS_NUM) THEN
9767 --number of items will remain same in case of split asset components
9768 l_lnk_cimv_rec.NUMBER_OF_ITEMS := l_lnk_cimv_rec.NUMBER_OF_ITEMS;
9769 ELSE
9770 --number of items will be split in case of normal split asset
9771 l_lnk_cimv_rec.NUMBER_OF_ITEMS := l_lnk_cimv_rec.NUMBER_OF_ITEMS * l_split_factor;
9772 END IF;
9773
9774 l_lnk_cimv_rec.CREATED_BY := OKL_API.G_MISS_NUM;
9775 l_lnk_cimv_rec.CREATION_DATE := OKL_API.G_MISS_DATE;
9776 l_lnk_cimv_rec.LAST_UPDATED_BY := OKL_API.G_MISS_NUM;
9777 l_lnk_cimv_rec.LAST_UPDATE_DATE := OKL_API.G_MISS_DATE;
9778 l_lnk_cimv_rec.LAST_UPDATE_LOGIN := OKL_API.G_MISS_NUM;
9779
9780 OKL_OKC_MIGRATION_PVT.create_contract_item( p_api_version => p_api_version,
9781 p_init_msg_list => p_init_msg_list,
9782 x_return_status => x_return_status,
9783 x_msg_count => x_msg_count,
9784 x_msg_data => x_msg_data,
9785 p_cimv_rec => l_lnk_cimv_rec,
9786 x_cimv_rec => lx_lnk_cimv_rec);
9787
9788 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9789 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9790 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9791 RAISE OKL_API.G_EXCEPTION_ERROR;
9792 END IF;
9793
9794 END IF;
9795 END IF;
9796 END IF;
9797
9798 --Bug#3066375 : Split the payments attached to the covered asset line
9799 --adjust rule amounts SLL/SLH
9800 --Bug# 3897490 : Fix creation of SLH and SLL lines when more than one
9801 --payment types are defined at service subline level
9802 l_strm_type_id := NULL;
9803 OPEN l_sll_cur(p_cle_id => l_lnk_line_id);
9804 LOOP
9805 l_updated_sll_amount := NULL;
9806 --Bug# 275289 : For stub payments
9807 l_updated_stub_amount := NULL;
9808 FETCH l_sll_cur INTO l_sll_rec;
9809 EXIT WHEN l_sll_cur%NOTFOUND;
9810
9811 -------------------------------------------------------------
9812 --create LALEVL,SLH and SLL against new linked asset line :
9813 --30-oct-03: 3143522 - LALEVL to be created only once
9814 IF l_sll_cur%RowCount = 1 THEN
9815 l_rgpv_rec.rgd_code := 'LALEVL';
9816 l_rgpv_rec.cle_id := lx_lnk_clev_rec.id;
9817 l_rgpv_rec.dnz_chr_id := lx_lnk_clev_rec.dnz_chr_id;
9818 l_rgpv_rec.rgp_type := 'KRG';
9819
9820 OKL_RULE_PUB.create_rule_group(
9821 p_api_version => p_api_version,
9822 p_init_msg_list => p_init_msg_list,
9823 x_return_status => x_return_status,
9824 x_msg_count => x_msg_count,
9825 x_msg_data => x_msg_data,
9826 p_rgpv_rec => l_rgpv_rec,
9827 x_rgpv_rec => lx_rgpv_rec);
9828
9829 --dbms_output.put_line('After updating payments :'||x_return_status);
9830 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9831 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9832 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9833 RAISE OKL_API.G_EXCEPTION_ERROR;
9834 END IF;
9835 END IF;
9836
9837 --Bug# 3897490
9838 IF (l_strm_type_id IS NULL OR l_strm_type_id <> l_sll_rec.strm_type_id1) THEN
9839 --30-oct-03 : 3143522 - SLH should be created only once
9840
9841 --create slh
9842 l_slh_rulv_rec.rgp_id := lx_rgpv_rec.id;
9843 l_slh_rulv_rec.rule_information_category := 'LASLH';
9844 l_slh_rulv_rec.jtot_object1_code := l_sll_rec.strm_type_source;
9845 l_slh_rulv_rec.object1_id1 := l_sll_rec.strm_type_id1;
9846 l_slh_rulv_rec.object1_id2 := l_sll_rec.strm_type_id2;
9847 l_slh_rulv_rec.dnz_chr_id := lx_rgpv_rec.dnz_chr_id;
9848 l_slh_rulv_rec.std_template_yn := 'N';
9849 l_slh_rulv_rec.warn_yn := 'N';
9850 l_slh_rulv_rec.template_yn := 'N';
9851
9852 OKL_RULE_PUB.create_rule(
9853 p_api_version => p_api_version,
9854 p_init_msg_list => p_init_msg_list,
9855 x_return_status => x_return_status,
9856 x_msg_count => x_msg_count,
9857 x_msg_data => x_msg_data,
9858 p_rulv_rec => l_slh_rulv_rec,
9859 x_rulv_rec => lx_slh_rulv_rec);
9860
9861 --dbms_output.put_line('After updating payments :'||x_return_status);
9862 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9863 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9864 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9865 RAISE OKL_API.G_EXCEPTION_ERROR;
9866 END IF;
9867
9868 --Bug# 3897490
9869 l_strm_type_id := l_sll_rec.strm_type_id1;
9870 END IF;
9871
9872 --create sll
9873 l_sll_rulv_rec.dnz_chr_id := lx_rgpv_rec.dnz_chr_id;
9874 l_sll_rulv_rec.rgp_id := lx_rgpv_rec.id;
9875 l_sll_rulv_rec.std_template_yn := lx_slh_rulv_rec.std_template_yn;
9876 l_sll_rulv_rec.warn_yn := lx_slh_rulv_rec.warn_yn;
9877 l_sll_rulv_rec.template_yn := lx_slh_rulv_rec.template_yn;
9878 l_sll_rulv_rec.rule_information_category := 'LASLL';
9879 l_sll_rulv_rec.jtot_object1_code := l_sll_rec.jtot_object1_code;
9880 l_sll_rulv_rec.object1_id1 := l_sll_rec.object1_id1;
9881 l_sll_rulv_rec.object1_id2 := l_sll_Rec.object1_id2;
9882 l_sll_rulv_rec.jtot_object2_code := l_sll_rec.jtot_object2_code;
9883 l_sll_rulv_rec.object2_id1 := lx_slh_rulv_rec.id;
9884 -- ansethur 28-feb-08 bug # 6697542
9885 l_sll_rulv_rec.object2_id2 := '#' ; -- l_sll_rec.object2_id2;
9886 -- ansethur 28-feb-08 bug # 6697542
9887 l_sll_rulv_rec.rule_information1 := l_sll_rec.rule_information1;
9888 l_sll_rulv_rec.rule_information2 := l_sll_rec.rule_information2;
9889 l_sll_rulv_rec.rule_information3 := l_sll_rec.rule_information3;
9890 l_sll_rulv_rec.rule_information4 := l_sll_rec.rule_information4;
9891 l_sll_rulv_rec.rule_information5 := l_sll_rec.rule_information5;
9892 IF NVL(TO_NUMBER(l_sll_rec.amount_sll)*l_split_factor,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM THEN
9893
9894 --Bug# 4028371
9895 --Bug# 3502142: Use Streams Rounding Option
9896 l_updated_sll_amount := TO_NUMBER(l_sll_rec.amount_sll)*l_split_factor;
9897 okl_accounting_util.round_amount(
9898 p_api_version => p_api_version,
9899 p_init_msg_list => p_init_msg_list,
9900 x_return_status => x_return_status,
9901 x_msg_count => x_msg_count,
9902 x_msg_data => x_msg_data,
9903 p_amount => l_updated_sll_amount,
9904 p_currency_code => l_sll_rec.currency_code,
9905 p_round_option => 'STM',
9906 x_rounded_amount => l_rounded_amount
9907 );
9908 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9909 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9910 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9911 RAISE OKL_API.G_EXCEPTION_ERROR;
9912 END IF;
9913
9914 l_updated_sll_amount := l_rounded_amount;
9915 l_sll_rulv_rec.rule_information6 := l_updated_sll_amount;
9916
9917 ELSIF NVL(TO_NUMBER(l_sll_rec.amount_sll)*l_split_factor,OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM THEN
9918 l_sll_rulv_rec.rule_information6 := NULL;
9919 END IF;
9920 l_sll_rulv_rec.rule_information7 := l_sll_rec.rule_information7;
9921 --Bug# 2757289 : For stup payments
9922 IF NVL(TO_NUMBER(l_sll_rec.amount_stub)*l_split_factor,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM THEN
9923
9924 --Bug# 4028371
9925 --Bug# 3502142: Use Streams Rounding Option
9926 l_updated_stub_amount := TO_NUMBER(l_sll_rec.amount_stub)*l_split_factor;
9927 okl_accounting_util.round_amount(
9928 p_api_version => p_api_version,
9929 p_init_msg_list => p_init_msg_list,
9930 x_return_status => x_return_status,
9931 x_msg_count => x_msg_count,
9932 x_msg_data => x_msg_data,
9933 p_amount => l_updated_stub_amount,
9934 p_currency_code => l_sll_rec.currency_code,
9935 p_round_option => 'STM',
9936 x_rounded_amount => l_rounded_amount
9937 );
9938 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9939 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9940 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9941 RAISE OKL_API.G_EXCEPTION_ERROR;
9942 END IF;
9943
9944 l_updated_stub_amount := l_rounded_amount;
9945 l_sll_rulv_rec.rule_information8 := l_updated_stub_amount;
9946
9947 ELSIF NVL(TO_NUMBER(l_sll_rec.amount_stub)*l_split_factor,OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM THEN
9948 l_sll_rulv_rec.rule_information8 := NULL;
9949 END IF;
9950 --l_sll_rulv_rec.rule_information8 := l_sll_rec.rule_information8;
9951 l_sll_rulv_rec.rule_information9 := l_sll_rec.rule_information9;
9952 l_sll_rulv_rec.rule_information10 := l_sll_rec.rule_information10;
9953 l_sll_rulv_rec.rule_information11 := l_sll_rec.rule_information11;
9954 l_sll_rulv_rec.rule_information12 := l_sll_rec.rule_information12;
9955 l_sll_rulv_rec.rule_information13 := l_sll_rec.rule_information13;
9956 l_sll_rulv_rec.rule_information14 := l_sll_rec.rule_information14;
9957 l_sll_rulv_rec.rule_information15 := l_sll_rec.rule_information15;
9958
9959 OKL_RULE_PUB.create_rule(
9960 p_api_version => p_api_version,
9961 p_init_msg_list => p_init_msg_list,
9962 x_return_status => x_return_status,
9963 x_msg_count => x_msg_count,
9964 x_msg_data => x_msg_data,
9965 p_rulv_rec => l_sll_rulv_rec,
9966 x_rulv_rec => lx_sll_rulv_rec);
9967
9968 --dbms_output.put_line('After updating payments :'||x_return_status);
9969 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9970 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9971 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9972 RAISE OKL_API.G_EXCEPTION_ERROR;
9973 END IF;
9974
9975 ------------------------------------------------------------------------
9976
9977 END LOOP;
9978 CLOSE l_sll_cur;
9979 --End Bug# 3066375
9980
9981 END LOOP;
9982 CLOSE l_lnk_asst_cur;
9983
9984 --Bug# 3502142
9985 ELSE -- Parent line
9986
9987 -- For Split Asset into Units, Update Parent linked asset
9988 -- line after all child linked lines have been created
9989
9990 -- For Split Asset into Components, create linked asset
9991 -- line for largest asset cost after all other child linked lines
9992 -- have been created
9993
9994 OPEN l_lnk_asst_cur (p_cle_id => p_parent_line_id);
9995 LOOP
9996 FETCH l_lnk_asst_cur INTO
9997 l_srv_fee_line_id,
9998 l_lnk_line_id;
9999 EXIT WHEN l_lnk_asst_cur%NOTFOUND;
10000
10001 l_lnk_klev_rec := get_klev_rec(p_cle_id => l_lnk_line_id,
10002 x_no_data_found => l_no_data_found);
10003 IF l_no_data_found THEN
10004 NULL;
10005 --raise appropriate error
10006 ELSE
10007 l_lnk_klev_old_rec := l_lnk_klev_rec;
10008
10009 l_lnk_clev_rec := get_clev_rec(p_cle_id => l_lnk_line_id,
10010 x_no_data_found => l_no_data_found);
10011 IF l_no_data_found THEN
10012 NULL;
10013 --raise appropriate error
10014 ELSE
10015 l_lnk_clev_old_rec := l_lnk_clev_rec;
10016
10017 FOR l_new_lnk_assts_rec in l_new_lnk_assts_cur
10018 (p_chr_id => l_lnk_clev_old_rec.dnz_chr_id,
10019 p_cle_id => l_lnk_line_id) LOOP
10020
10021 l_lnk_klev_rec := get_klev_rec(p_cle_id => l_new_lnk_assts_rec.id,
10022 x_no_data_found => l_no_data_found);
10023 IF l_no_data_found THEN
10024 NULL;
10025 --raise appropriate error
10026 ELSE
10027 l_lnk_klev_old_rec.ESTIMATED_OEC := l_lnk_klev_old_rec.ESTIMATED_OEC - l_lnk_klev_rec.ESTIMATED_OEC;
10028 l_lnk_klev_old_rec.LAO_AMOUNT := l_lnk_klev_old_rec.LAO_AMOUNT - l_lnk_klev_rec.LAO_AMOUNT;
10029 l_lnk_klev_old_rec.FEE_CHARGE := l_lnk_klev_old_rec.FEE_CHARGE - l_lnk_klev_rec.FEE_CHARGE;
10030 l_lnk_klev_old_rec.INITIAL_DIRECT_COST := l_lnk_klev_old_rec.INITIAL_DIRECT_COST - l_lnk_klev_rec.INITIAL_DIRECT_COST;
10031 l_lnk_klev_old_rec.AMOUNT_STAKE := l_lnk_klev_old_rec.AMOUNT_STAKE - l_lnk_klev_rec.AMOUNT_STAKE;
10032 l_lnk_klev_old_rec.LRV_AMOUNT := l_lnk_klev_old_rec.LRV_AMOUNT - l_lnk_klev_rec.LRV_AMOUNT;
10033 l_lnk_klev_old_rec.COVERAGE := l_lnk_klev_old_rec.COVERAGE - l_lnk_klev_rec.COVERAGE;
10034 l_lnk_klev_old_rec.CAPITAL_REDUCTION := l_lnk_klev_old_rec.CAPITAL_REDUCTION - l_lnk_klev_rec.CAPITAL_REDUCTION;
10035 l_lnk_klev_old_rec.VENDOR_ADVANCE_PAID := l_lnk_klev_old_rec.VENDOR_ADVANCE_PAID - l_lnk_klev_rec.VENDOR_ADVANCE_PAID;
10036 l_lnk_klev_old_rec.TRADEIN_AMOUNT := l_lnk_klev_old_rec.TRADEIN_AMOUNT - l_lnk_klev_rec.TRADEIN_AMOUNT;
10037 l_lnk_klev_old_rec.BOND_EQUIVALENT_YIELD := l_lnk_klev_old_rec.BOND_EQUIVALENT_YIELD - l_lnk_klev_rec.BOND_EQUIVALENT_YIELD;
10038 l_lnk_klev_old_rec.TERMINATION_PURCHASE_AMOUNT :=l_lnk_klev_old_rec.TERMINATION_PURCHASE_AMOUNT - l_lnk_klev_rec.TERMINATION_PURCHASE_AMOUNT;
10039 l_lnk_klev_old_rec.REFINANCE_AMOUNT := l_lnk_klev_old_rec.REFINANCE_AMOUNT - l_lnk_klev_rec.REFINANCE_AMOUNT;
10040 l_lnk_klev_old_rec.REMARKETED_AMOUNT := l_lnk_klev_old_rec.REMARKETED_AMOUNT - l_lnk_klev_rec.REMARKETED_AMOUNT;
10041 l_lnk_klev_old_rec.REMARKET_MARGIN := l_lnk_klev_old_rec.REMARKET_MARGIN - l_lnk_klev_rec.REMARKET_MARGIN;
10042 l_lnk_klev_old_rec.REPURCHASED_AMOUNT := l_lnk_klev_old_rec.REPURCHASED_AMOUNT - l_lnk_klev_rec.REPURCHASED_AMOUNT;
10043 l_lnk_klev_old_rec.RESIDUAL_VALUE := l_lnk_klev_old_rec.RESIDUAL_VALUE - l_lnk_klev_rec.RESIDUAL_VALUE;
10044 l_lnk_klev_old_rec.APPRAISAL_VALUE := l_lnk_klev_old_rec.APPRAISAL_VALUE - l_lnk_klev_rec.APPRAISAL_VALUE;
10045 l_lnk_klev_old_rec.GAIN_LOSS := l_lnk_klev_old_rec.GAIN_LOSS - l_lnk_klev_rec.GAIN_LOSS;
10046 l_lnk_klev_old_rec.FLOOR_AMOUNT := l_lnk_klev_old_rec.FLOOR_AMOUNT -l_lnk_klev_rec.FLOOR_AMOUNT;
10047 l_lnk_klev_old_rec.TRACKED_RESIDUAL := l_lnk_klev_old_rec.TRACKED_RESIDUAL - l_lnk_klev_rec.TRACKED_RESIDUAL;
10048 l_lnk_klev_old_rec.AMOUNT := l_lnk_klev_old_rec.AMOUNT - l_lnk_klev_rec.AMOUNT;
10049 l_lnk_klev_old_rec.OEC := l_lnk_klev_old_rec.OEC - l_lnk_klev_rec.OEC;
10050 l_lnk_klev_old_rec.CAPITAL_AMOUNT := l_lnk_klev_old_rec.CAPITAL_AMOUNT - l_lnk_klev_rec.CAPITAL_AMOUNT;
10051 l_lnk_klev_old_rec.RESIDUAL_GRNTY_AMOUNT := l_lnk_klev_old_rec.RESIDUAL_GRNTY_AMOUNT - l_lnk_klev_rec.RESIDUAL_GRNTY_AMOUNT;
10052 l_lnk_klev_old_rec.RVI_PREMIUM := l_lnk_klev_old_rec.RVI_PREMIUM - l_lnk_klev_rec.RVI_PREMIUM;
10053 l_lnk_klev_old_rec.SUBSIDY_OVERRIDE_AMOUNT := l_lnk_klev_old_rec.SUBSIDY_OVERRIDE_AMOUNT - l_lnk_klev_rec.SUBSIDY_OVERRIDE_AMOUNT;
10054 END IF;
10055 END LOOP;
10056
10057 -- Split into units
10058 IF NVL(p_txdv_rec.split_percent,0) IN (0,OKL_API.G_MISS_NUM) THEN
10059
10060 --update contract line
10061 OKL_CONTRACT_PUB.update_contract_line(
10062 p_api_version => p_api_version,
10063 p_init_msg_list => p_init_msg_list,
10064 x_return_status => x_return_status,
10065 x_msg_count => x_msg_count,
10066 x_msg_data => x_msg_data,
10067 p_clev_rec => l_lnk_clev_old_rec,
10068 p_klev_rec => l_lnk_klev_old_rec,
10069 x_clev_rec => lx_lnk_clev_old_rec,
10070 x_klev_rec => lx_lnk_klev_old_rec);
10071 --dbms_output.put_line('After updating service fee link line :'||x_return_status);
10072 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10073 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10074 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10075 RAISE OKL_API.G_EXCEPTION_ERROR;
10076 END IF;
10077
10078 -- Split into components
10079 ELSIF NVL(p_txdv_rec.split_percent,0) NOT IN (0,OKL_API.G_MISS_NUM) THEN
10080
10081 l_lnk_klev_rec := l_lnk_klev_old_rec;
10082 --
10083 l_lnk_clev_rec.price_unit := (l_split_factor * l_lnk_clev_rec.price_unit);
10084 l_lnk_clev_rec.price_negotiated := (l_split_factor * l_lnk_clev_rec.price_negotiated);
10085 l_lnk_clev_rec.price_negotiated_renewed := (l_split_factor * l_lnk_clev_rec.price_negotiated_renewed);
10086
10087 l_lnk_clev_rec.ORIG_SYSTEM_ID1 := l_lnk_clev_rec.ID;
10088 l_lnk_clev_rec.ID := OKL_API.G_MISS_NUM;
10089 l_lnk_clev_rec.OBJECT_VERSION_NUMBER := OKL_API.G_MISS_NUM;
10090 l_lnk_clev_rec.SFWT_FLAG := OKL_API.G_MISS_CHAR;
10091 l_lnk_clev_rec.LINE_NUMBER := OKL_API.G_MISS_NUM;
10092 l_lnk_clev_rec.DISPLAY_SEQUENCE := l_clev_rec.DISPLAY_SEQUENCE + 1;
10093
10094 l_lnk_clev_rec.ORIG_SYSTEM_SOURCE_CODE := 'OKL_SPLIT';
10095 l_lnk_clev_rec.CREATED_BY := OKL_API.G_MISS_NUM;
10096 l_lnk_clev_rec.CREATION_DATE := OKL_API.G_MISS_DATE;
10097 l_lnk_clev_rec.LAST_UPDATED_BY := OKL_API.G_MISS_NUM;
10098 l_lnk_clev_rec.LAST_UPDATE_DATE := OKL_API.G_MISS_DATE;
10099 l_lnk_clev_rec.LAST_UPDATE_LOGIN := OKL_API.G_MISS_NUM;
10100 --make new line as BOOKED
10101 l_lnk_clev_rec.STS_CODE := 'BOOKED';
10102 --bug# 3066375
10103 l_lnk_clev_rec.name := l_txdv_rec.asset_number;
10104 l_lnk_clev_rec.item_description := l_txdv_rec.description;
10105 ----
10106 l_lnk_klev_rec.ID := OKL_API.G_MISS_NUM;
10107 l_lnk_klev_rec.OBJECT_VERSION_NUMBER := OKL_API.G_MISS_NUM;
10108 l_lnk_klev_rec.CREATED_BY := OKL_API.G_MISS_NUM;
10109 l_lnk_klev_rec.CREATION_DATE := OKL_API.G_MISS_DATE;
10110 l_klev_rec.LAST_UPDATED_BY := OKL_API.G_MISS_NUM;
10111 l_klev_rec.LAST_UPDATE_DATE := OKL_API.G_MISS_DATE;
10112 l_klev_rec.LAST_UPDATE_LOGIN := OKL_API.G_MISS_NUM;
10113
10114 OKL_CONTRACT_PUB.create_contract_line(
10115 p_api_version => p_api_version,
10116 p_init_msg_list => p_init_msg_list,
10117 x_return_status => x_return_status,
10118 x_msg_count => x_msg_count,
10119 x_msg_data => x_msg_data,
10120 p_clev_rec => l_lnk_clev_rec,
10121 p_klev_rec => l_lnk_klev_rec,
10122 x_clev_rec => lx_lnk_clev_rec,
10123 x_klev_rec => lx_lnk_klev_rec);
10124 --dbms_output.put_line('After creating service fee link line :'||x_return_status);
10125 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10126 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10127 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10128 RAISE OKL_API.G_EXCEPTION_ERROR;
10129 END IF;
10130
10131 END IF;
10132
10133 l_lnk_cimv_rec := get_cimv_rec(p_cle_id => l_lnk_line_id, x_no_data_found => l_no_data_found);
10134
10135 IF l_no_data_found THEN
10136 NULL;
10137 --raise appropriate error
10138 ELSE
10139 l_lnk_cimv_old_rec := l_lnk_cimv_rec;
10140
10141 -- Split into units
10142 IF NVL(p_txdv_rec.split_percent,0) IN (0,OKL_API.G_MISS_NUM) THEN
10143
10144 FOR l_new_lnk_assts_rec in l_new_lnk_assts_cur
10145 (p_chr_id => l_lnk_clev_old_rec.dnz_chr_id,
10146 p_cle_id => l_lnk_line_id) LOOP
10147
10148 l_lnk_cimv_rec := get_cimv_rec(p_cle_id => l_new_lnk_assts_rec.id,
10149 x_no_data_found => l_no_data_found);
10150 IF l_no_data_found THEN
10151 NULL;
10152 --raise appropriate error
10153 ELSE
10154 --number of items will be split in case of normal split asset
10155 l_lnk_cimv_old_rec.NUMBER_OF_ITEMS := l_lnk_cimv_old_rec.NUMBER_OF_ITEMS - l_lnk_cimv_rec.NUMBER_OF_ITEMS;
10156 END IF;
10157 END LOOP;
10158
10159 --update original item record
10160 OKL_OKC_MIGRATION_PVT.update_contract_item( p_api_version => p_api_version,
10161 p_init_msg_list => p_init_msg_list,
10162 x_return_status => x_return_status,
10163 x_msg_count => x_msg_count,
10164 x_msg_data => x_msg_data,
10165 p_cimv_rec => l_lnk_cimv_old_rec,
10166 x_cimv_rec => lx_lnk_cimv_old_rec);
10167
10168 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10169 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10170 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10171 RAISE OKL_API.G_EXCEPTION_ERROR;
10172 END IF;
10173
10174 -- Split into components
10175 ELSIF NVL(p_txdv_rec.split_percent,0) NOT IN (0,OKL_API.G_MISS_NUM) THEN
10176
10177 l_lnk_cimv_rec.ID := OKL_API.G_MISS_NUM;
10178 l_lnk_cimv_rec.OBJECT_VERSION_NUMBER := OKL_API.G_MISS_NUM;
10179 l_lnk_cimv_rec.OBJECT1_ID1 := TO_CHAR(p_cle_id);
10180 l_lnk_cimv_rec.CLE_ID := lx_lnk_clev_rec.id;
10181
10182 l_lnk_cimv_rec.CREATED_BY := OKL_API.G_MISS_NUM;
10183 l_lnk_cimv_rec.CREATION_DATE := OKL_API.G_MISS_DATE;
10184 l_lnk_cimv_rec.LAST_UPDATED_BY := OKL_API.G_MISS_NUM;
10185 l_lnk_cimv_rec.LAST_UPDATE_DATE := OKL_API.G_MISS_DATE;
10186 l_lnk_cimv_rec.LAST_UPDATE_LOGIN := OKL_API.G_MISS_NUM;
10187
10188 OKL_OKC_MIGRATION_PVT.create_contract_item( p_api_version => p_api_version,
10189 p_init_msg_list => p_init_msg_list,
10190 x_return_status => x_return_status,
10191 x_msg_count => x_msg_count,
10192 x_msg_data => x_msg_data,
10193 p_cimv_rec => l_lnk_cimv_rec,
10194 x_cimv_rec => lx_lnk_cimv_rec);
10195
10196 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10197 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10198 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10199 RAISE OKL_API.G_EXCEPTION_ERROR;
10200 END IF;
10201 END IF;
10202
10203 END IF; -- cimv rec found
10204 END IF; -- clev rec found
10205 END IF; --klev rec found
10206
10207 l_strm_type_id := NULL;
10208 OPEN l_sll_cur(p_cle_id => l_lnk_line_id);
10209 LOOP
10210 FETCH l_sll_cur INTO l_sll_rec;
10211 EXIT WHEN l_sll_cur%NOTFOUND;
10212
10213 l_sll_amount := TO_NUMBER(l_sll_rec.amount_sll);
10214 l_stub_amount := TO_NUMBER(l_sll_rec.amount_stub);
10215
10216 l_split_pymt_sum := 0;
10217
10218 -- Split into units
10219 IF NVL(p_txdv_rec.split_percent,0) IN (0,OKL_API.G_MISS_NUM) THEN
10220 l_target_kle_id := p_txlv_rec.kle_id;
10221
10222 -- Split into components
10223 ELSE
10224 open l_fa_line_csr(p_chr_id => p_txlv_rec.dnz_khr_id
10225 ,p_cle_id => p_cle_id);
10226 fetch l_fa_line_csr into l_target_kle_id;
10227 close l_fa_line_csr;
10228 END IF;
10229
10230 FOR l_txd_rec in l_txd_csr(p_tal_id => p_txlv_rec.id
10231 ,p_cle_id => l_target_kle_id)
10232 LOOP
10233
10234 IF NVL(p_txdv_rec.split_percent,0) IN (0,OKL_API.G_MISS_NUM) THEN
10235 l_sll_split_factor := l_txd_rec.quantity/p_txlv_rec.current_units;
10236 ELSE
10237 l_sll_split_factor := l_txd_rec.split_percent/100;
10238 END IF;
10239
10240 IF NVL(l_sll_amount,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM THEN
10241 l_split_pymt := l_sll_amount * l_sll_split_factor;
10242 ELSIF NVL(l_stub_amount,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM THEN
10243 l_split_pymt := l_stub_amount * l_sll_split_factor;
10244 END IF;
10245
10246 okl_accounting_util.round_amount(
10247 p_api_version => p_api_version,
10248 p_init_msg_list => p_init_msg_list,
10249 x_return_status => x_return_status,
10250 x_msg_count => x_msg_count,
10251 x_msg_data => x_msg_data,
10252 p_amount => l_split_pymt,
10253 p_currency_code => l_sll_rec.currency_code,
10254 p_round_option => 'STM',
10255 x_rounded_amount => l_rounded_amount
10256 );
10257 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10258 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10259 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10260 RAISE OKL_API.G_EXCEPTION_ERROR;
10261 END IF;
10262
10263 l_split_pymt_sum := l_split_pymt_sum + l_rounded_amount;
10264
10265 END LOOP;
10266
10267 -- Split into units
10268 IF NVL(p_txdv_rec.split_percent,0) IN (0,OKL_API.G_MISS_NUM) THEN
10269
10270 --update the rule record
10271 l_rulv_rec.id := l_sll_rec.sll_id;
10272 IF NVL(l_sll_amount,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM THEN
10273 l_rulv_rec.rule_information6 := TO_CHAR(l_sll_amount - l_split_pymt_sum);
10274 ELSIF NVL(l_sll_amount,OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM THEN
10275 l_rulv_rec.rule_information6 := NULL;
10276 END IF;
10277
10278 IF NVL(l_stub_amount,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM THEN
10279 l_rulv_rec.rule_information8 := TO_CHAR(l_stub_amount - l_split_pymt_sum);
10280 ELSIF NVL(l_stub_amount,OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM THEN
10281 l_rulv_rec.rule_information8 := NULL;
10282 END IF;
10283
10284 OKL_RULE_PUB.update_rule(
10285 p_api_version => p_api_version,
10286 p_init_msg_list => p_init_msg_list,
10287 x_return_status => x_return_status,
10288 x_msg_count => x_msg_count,
10289 x_msg_data => x_msg_data,
10290 p_rulv_rec => l_rulv_rec,
10291 x_rulv_rec => l_rulv_rec_out);
10292
10293 --dbms_output.put_line('After updating payments :'||x_return_status);
10294 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10295 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10296 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10297 RAISE OKL_API.G_EXCEPTION_ERROR;
10298 END IF;
10299
10300 -- Split into components
10301 ELSIF NVL(p_txdv_rec.split_percent,0) NOT IN (0,OKL_API.G_MISS_NUM) THEN
10302
10303 IF l_sll_cur%RowCount = 1 THEN
10304 l_rgpv_rec.rgd_code := 'LALEVL';
10305 l_rgpv_rec.cle_id := lx_lnk_clev_rec.id;
10306 l_rgpv_rec.dnz_chr_id := lx_lnk_clev_rec.dnz_chr_id;
10307 l_rgpv_rec.rgp_type := 'KRG';
10308
10309 OKL_RULE_PUB.create_rule_group(
10310 p_api_version => p_api_version,
10311 p_init_msg_list => p_init_msg_list,
10312 x_return_status => x_return_status,
10313 x_msg_count => x_msg_count,
10314 x_msg_data => x_msg_data,
10315 p_rgpv_rec => l_rgpv_rec,
10316 x_rgpv_rec => lx_rgpv_rec);
10317
10318 --dbms_output.put_line('After updating payments :'||x_return_status);
10319 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10320 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10321 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10322 RAISE OKL_API.G_EXCEPTION_ERROR;
10323 END IF;
10324 END IF;
10325
10326 --Bug# 3897490
10327 IF (l_strm_type_id IS NULL OR l_strm_type_id <> l_sll_rec.strm_type_id1) THEN
10328 --30-oct-03 : 3143522 - SLH should be created only once
10329 --create slh
10330 l_slh_rulv_rec.rgp_id := lx_rgpv_rec.id;
10331 l_slh_rulv_rec.rule_information_category := 'LASLH';
10332 l_slh_rulv_rec.jtot_object1_code := l_sll_rec.strm_type_source;
10333 l_slh_rulv_rec.object1_id1 := l_sll_rec.strm_type_id1;
10334 l_slh_rulv_rec.object1_id2 := l_sll_rec.strm_type_id2;
10335 l_slh_rulv_rec.dnz_chr_id := lx_rgpv_rec.dnz_chr_id;
10336 l_slh_rulv_rec.std_template_yn := 'N';
10337 l_slh_rulv_rec.warn_yn := 'N';
10338 l_slh_rulv_rec.template_yn := 'N';
10339
10340 OKL_RULE_PUB.create_rule(
10341 p_api_version => p_api_version,
10342 p_init_msg_list => p_init_msg_list,
10343 x_return_status => x_return_status,
10344 x_msg_count => x_msg_count,
10345 x_msg_data => x_msg_data,
10346 p_rulv_rec => l_slh_rulv_rec,
10347 x_rulv_rec => lx_slh_rulv_rec);
10348
10349 --dbms_output.put_line('After updating payments :'||x_return_status);
10350 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10351 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10352 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10353 RAISE OKL_API.G_EXCEPTION_ERROR;
10354 END IF;
10355
10356 --Bug# 3897490
10357 l_strm_type_id := l_sll_rec.strm_type_id1;
10358 END IF;
10359
10360 --create sll
10361 l_sll_rulv_rec.dnz_chr_id := lx_rgpv_rec.dnz_chr_id;
10362 l_sll_rulv_rec.rgp_id := lx_rgpv_rec.id;
10363 l_sll_rulv_rec.std_template_yn := lx_slh_rulv_rec.std_template_yn;
10364 l_sll_rulv_rec.warn_yn := lx_slh_rulv_rec.warn_yn;
10365 l_sll_rulv_rec.template_yn := lx_slh_rulv_rec.template_yn;
10366 l_sll_rulv_rec.rule_information_category := 'LASLL';
10367 l_sll_rulv_rec.jtot_object1_code := l_sll_rec.jtot_object1_code;
10368 l_sll_rulv_rec.object1_id1 := l_sll_rec.object1_id1;
10369 l_sll_rulv_rec.object1_id2 := l_sll_Rec.object1_id2;
10370 l_sll_rulv_rec.jtot_object2_code := l_sll_rec.jtot_object2_code;
10371 l_sll_rulv_rec.object2_id1 := lx_slh_rulv_rec.id;
10372 -- ansethur 28-feb-08 bug # 6697542
10373 l_sll_rulv_rec.object2_id2 := '#' ; -- l_sll_rec.object2_id2;
10374 -- ansethur 28-feb-08 bug # 6697542
10375 l_sll_rulv_rec.rule_information1 := l_sll_rec.rule_information1;
10376 l_sll_rulv_rec.rule_information2 := l_sll_rec.rule_information2;
10377 l_sll_rulv_rec.rule_information3 := l_sll_rec.rule_information3;
10378 l_sll_rulv_rec.rule_information4 := l_sll_rec.rule_information4;
10379 l_sll_rulv_rec.rule_information5 := l_sll_rec.rule_information5;
10380
10381 IF NVL(TO_NUMBER(l_sll_rec.amount_sll),OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM THEN
10382
10383 --Bug# 4028371
10384 --Bug# 3502142: Use Streams Rounding Option
10385 l_updated_sll_amount := TO_NUMBER(l_sll_rec.amount_sll) - l_split_pymt_sum;
10386 okl_accounting_util.round_amount(
10387 p_api_version => p_api_version,
10388 p_init_msg_list => p_init_msg_list,
10389 x_return_status => x_return_status,
10390 x_msg_count => x_msg_count,
10391 x_msg_data => x_msg_data,
10392 p_amount => l_updated_sll_amount,
10393 p_currency_code => l_sll_rec.currency_code,
10394 p_round_option => 'STM',
10395 x_rounded_amount => l_rounded_amount
10396 );
10397 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10398 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10399 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10400 RAISE OKL_API.G_EXCEPTION_ERROR;
10401 END IF;
10402
10403 l_updated_sll_amount := l_rounded_amount;
10404 l_sll_rulv_rec.rule_information6 := l_updated_sll_amount;
10405
10406 ELSIF NVL(TO_NUMBER(l_sll_rec.amount_sll),OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM THEN
10407 l_sll_rulv_rec.rule_information6 := NULL;
10408 END IF;
10409 l_sll_rulv_rec.rule_information7 := l_sll_rec.rule_information7;
10410 --Bug# 2757289 : For stup payments
10411 IF NVL(TO_NUMBER(l_sll_rec.amount_stub),OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM THEN
10412
10413 --Bug# 4028371
10414 --Bug# 3502142: Use Streams Rounding Option
10415 l_updated_stub_amount := TO_NUMBER(l_sll_rec.amount_stub) - l_split_pymt_sum;
10416 okl_accounting_util.round_amount(
10417 p_api_version => p_api_version,
10418 p_init_msg_list => p_init_msg_list,
10419 x_return_status => x_return_status,
10420 x_msg_count => x_msg_count,
10421 x_msg_data => x_msg_data,
10422 p_amount => l_updated_stub_amount,
10423 p_currency_code => l_sll_rec.currency_code,
10424 p_round_option => 'STM',
10425 x_rounded_amount => l_rounded_amount
10426 );
10427 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10428 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10429 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10430 RAISE OKL_API.G_EXCEPTION_ERROR;
10431 END IF;
10432
10433 l_updated_stub_amount := l_rounded_amount;
10434 l_sll_rulv_rec.rule_information8 := l_updated_stub_amount;
10435
10436 ELSIF NVL(TO_NUMBER(l_sll_rec.amount_stub),OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM THEN
10437 l_sll_rulv_rec.rule_information8 := NULL;
10438 END IF;
10439 --l_sll_rulv_rec.rule_information8 := l_sll_rec.rule_information8;
10440 l_sll_rulv_rec.rule_information9 := l_sll_rec.rule_information9;
10441 l_sll_rulv_rec.rule_information10 := l_sll_rec.rule_information10;
10442 l_sll_rulv_rec.rule_information11 := l_sll_rec.rule_information11;
10443 l_sll_rulv_rec.rule_information12 := l_sll_rec.rule_information12;
10444 l_sll_rulv_rec.rule_information13 := l_sll_rec.rule_information13;
10445 l_sll_rulv_rec.rule_information14 := l_sll_rec.rule_information14;
10446 l_sll_rulv_rec.rule_information15 := l_sll_rec.rule_information15;
10447
10448 OKL_RULE_PUB.create_rule(
10449 p_api_version => p_api_version,
10450 p_init_msg_list => p_init_msg_list,
10451 x_return_status => x_return_status,
10452 x_msg_count => x_msg_count,
10453 x_msg_data => x_msg_data,
10454 p_rulv_rec => l_sll_rulv_rec,
10455 x_rulv_rec => lx_sll_rulv_rec);
10456
10457 --dbms_output.put_line('After updating payments :'||x_return_status);
10458 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10459 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10460 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10461 RAISE OKL_API.G_EXCEPTION_ERROR;
10462 END IF;
10463
10464 END IF;
10465
10466 END LOOP;
10467 CLOSE l_sll_cur;
10468 END LOOP;
10469 CLOSE l_lnk_asst_cur;
10470 END IF;
10471 --will also have to think about UBB
10472
10473 --Bug# 6344223
10474 --update unit cost
10475 adjust_unit_cost(p_api_version => p_api_version,
10476 p_init_msg_list =>p_init_msg_list,
10477 x_return_status =>x_return_status,
10478 x_msg_count =>x_msg_count,
10479 x_msg_data =>x_msg_data,
10480 p_cle_id =>l_fa_line_id ,
10481 p_txdv_rec =>p_txdv_rec,
10482 p_txlv_rec =>p_txlv_rec
10483 );
10484 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10485 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10486 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10487 RAISE OKL_API.G_EXCEPTION_ERROR;
10488 END IF;
10489
10490 -- Bug# 6344223
10491
10492 OKL_API.END_ACTIVITY (x_msg_count,
10493 x_msg_data );
10494 EXCEPTION
10495 WHEN OKL_API.G_EXCEPTION_ERROR THEN
10496 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10497 l_api_name,
10498 G_PKG_NAME,
10499 'OKL_API.G_RET_STS_ERROR',
10500 x_msg_count,
10501 x_msg_data,
10502 '_PVT');
10503 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
10504 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10505 l_api_name,
10506 G_PKG_NAME,
10507 'OKL_API.G_RET_STS_UNEXP_ERROR',
10508 x_msg_count,
10509 x_msg_data,
10510 '_PVT');
10511 WHEN OTHERS THEN
10512 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10513 l_api_name,
10514 G_PKG_NAME,
10515 'OTHERS',
10516 x_msg_count,
10517 x_msg_data,
10518 '_PVT');
10519 END Adjust_Split_Lines;
10520 --------------------------------------------------------------------------------
10521 --Start of Comments
10522 --Procedure Name : ABANDON_PARENT_ASSET
10523 --Description : Abandons Parent Asset for Split Asset Component Parent
10524 --History :
10525 -- 24-Jul-2002 ashish.singh Created
10526 --End of Comments
10527 --------------------------------------------------------------------------------
10528 PROCEDURE ABANDON_PARENT_ASSET(
10529 p_api_version IN NUMBER,
10530 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
10531 x_return_status OUT NOCOPY VARCHAR2,
10532 x_msg_count OUT NOCOPY NUMBER,
10533 x_msg_data OUT NOCOPY VARCHAR2,
10534 p_cle_id IN NUMBER) IS
10535
10536 l_return_status VARCHAR2(1) DEFAULT OKL_API.G_RET_STS_SUCCESS;
10537 l_api_name CONSTANT VARCHAR2(30) := 'ABANDON_PARENT_ASSET';
10538 l_api_version CONSTANT NUMBER := 1.0;
10539
10540 CURSOR c_lines_cur(p_cle_id IN NUMBER) IS
10541 SELECT LEVEL,
10542 id,
10543 chr_id,
10544 cle_id,
10545 dnz_chr_id,
10546 lse_id
10547 FROM okc_k_lines_b
10548 CONNECT BY PRIOR id = cle_id
10549 START WITH id = p_cle_id;
10550
10551 c_lines_rec c_lines_cur%ROWTYPE;
10552 l_clev_rec okl_okc_migration_pvt.clev_rec_type;
10553 lx_clev_rec okl_okc_migration_pvt.clev_rec_type;
10554
10555 --Bug#3066375 :
10556 --Cursor to fetch linked asset lines for parent asset being abandoned
10557 CURSOR l_lnk_asst_csr (p_cle_id IN NUMBER) IS
10558 SELECT lnk_cleb.id lnk_cle_id
10559 FROM okc_k_lines_b lnk_cleb,
10560 okc_line_styles_b lnk_lseb,
10561 okc_statuses_b lnk_stsb,
10562 okc_k_items lnk_cim
10563 WHERE lnk_cleb.id = lnk_cim.cle_id
10564 AND lnk_cleb.dnz_chr_id = lnk_cim.dnz_chr_id
10565 AND lnk_cleb.lse_id = lnk_lseb.id
10566 AND lnk_lseb.lty_code IN
10567 ('LINK_FEE_ASSET','LINK_SERV_ASSET','LINK_USAGE_ASSET')
10568 AND lnk_cleb.sts_code = lnk_stsb.code
10569 AND lnk_stsb.ste_code NOT IN ('HOLD','EXPIRED','TERMINATED','CANCELLED')
10570 AND lnk_cim.object1_id1 = TO_CHAR(p_cle_id)
10571 AND lnk_cim.object1_id2 = '#'
10572 AND lnk_cim.jtot_object1_code = 'OKX_COVASST';
10573
10574 l_lnk_cle_id okc_k_lines_b.id%TYPE;
10575 l_lnk_clev_rec okl_okc_migration_pvt.clev_rec_type;
10576 lx_lnk_clev_rec okl_okc_migration_pvt.clev_rec_type;
10577
10578 BEGIN
10579 -----
10580 x_return_status := OKL_API.G_RET_STS_SUCCESS;
10581 -- Call start_activity to create savepoint, check compatibility
10582 -- and initialize message list
10583 x_return_status := OKL_API.START_ACTIVITY (
10584 l_api_name
10585 ,p_init_msg_list
10586 ,'_PVT'
10587 ,x_return_status);
10588 -- Check if activity started successfully
10589 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10590 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10591 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10592 RAISE OKL_API.G_EXCEPTION_ERROR;
10593 END IF;
10594
10595 OPEN c_lines_cur(p_cle_id => p_cle_id);
10596 LOOP
10597 FETCH c_lines_cur INTO c_lines_rec;
10598 EXIT WHEN c_lines_cur%NOTFOUND;
10599 l_clev_rec.id := c_lines_rec.id;
10600 l_clev_rec.sts_code := 'ABANDONED';
10601
10602 okl_okc_migration_pvt.update_contract_line(
10603 p_api_version => p_api_version,
10604 p_init_msg_list => p_init_msg_list,
10605 x_return_status => x_return_status,
10606 x_msg_count => x_msg_count,
10607 x_msg_data => x_msg_data,
10608 p_clev_rec => l_clev_rec,
10609 x_clev_rec => lx_clev_rec);
10610
10611 --Bug# 3066375 : abandon linked asset lines
10612 OPEN l_lnk_asst_csr(p_cle_id => p_cle_id);
10613 LOOP
10614 FETCH l_lnk_asst_csr INTO l_lnk_cle_id;
10615 EXIT WHEN l_lnk_asst_csr%NOTFOUND;
10616 l_lnk_clev_rec.id := l_lnk_cle_id;
10617 l_lnk_clev_rec.sts_code := 'ABANDONED';
10618
10619 okl_okc_migration_pvt.update_contract_line(
10620 p_api_version => p_api_version,
10621 p_init_msg_list => p_init_msg_list,
10622 x_return_status => x_return_status,
10623 x_msg_count => x_msg_count,
10624 x_msg_data => x_msg_data,
10625 p_clev_rec => l_lnk_clev_rec,
10626 x_clev_rec => lx_lnk_clev_rec);
10627
10628 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10629 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10630 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10631 RAISE OKL_API.G_EXCEPTION_ERROR;
10632 END IF;
10633
10634 END LOOP;
10635 CLOSE l_lnk_asst_csr;
10636 --Bug# 3066375 end.
10637
10638 END LOOP;
10639 CLOSE c_lines_cur;
10640 --will also have to think about UBB
10641 OKL_API.END_ACTIVITY (x_msg_count,
10642 x_msg_data );
10643 EXCEPTION
10644 WHEN OKL_API.G_EXCEPTION_ERROR THEN
10645 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10646 l_api_name,
10647 G_PKG_NAME,
10648 'OKL_API.G_RET_STS_ERROR',
10649 x_msg_count,
10650 x_msg_data,
10651 '_PVT');
10652 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
10653 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10654 l_api_name,
10655 G_PKG_NAME,
10656 'OKL_API.G_RET_STS_UNEXP_ERROR',
10657 x_msg_count,
10658 x_msg_data,
10659 '_PVT');
10660 WHEN OTHERS THEN
10661 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10662 l_api_name,
10663 G_PKG_NAME,
10664 'OTHERS',
10665 x_msg_count,
10666 x_msg_data,
10667 '_PVT');
10668 END ABANDON_PARENT_ASSET;
10669
10670 --Bug# 6061103
10671 PROCEDURE is_evergreen_df_lease
10672 (p_api_version IN NUMBER,
10673 p_init_msg_list IN VARCHAR2,
10674 x_return_status OUT NOCOPY VARCHAR2,
10675 x_msg_count OUT NOCOPY NUMBER,
10676 x_msg_data OUT NOCOPY VARCHAR2,
10677 p_cle_id IN NUMBER,
10678 p_book_type_code IN VARCHAR2,
10679 p_asset_status IN VARCHAR2,
10680 p_pdt_id IN NUMBER,
10681 p_start_date IN DATE,
10682 x_amortization_date OUT NOCOPY DATE,
10683 x_special_treatment_required OUT NOCOPY VARCHAR2
10684 ) IS
10685 l_return_status VARCHAR2(1) default OKL_API.G_RET_STS_SUCCESS;
10686 l_api_name CONSTANT varchar2(30) := 'is_evergreen_df_lease';
10687 l_api_version CONSTANT NUMBER := 1.0;
10688 --cursor to find book class
10689 CURSOR l_book_class_cur(p_book_type_code IN VARCHAR2) IS
10690 SELECT book_class
10691 FROM okx_asst_bk_controls_v
10692 WHERE book_type_code = p_book_type_code;
10693 l_book_class okx_asst_bk_controls_v.book_class%TYPE;
10694 l_contract_number OKC_K_HEADERS_B.contract_number%TYPE;
10695 l_scs_code Varchar2(30);
10696 l_sts_code Varchar2(30);
10697 l_deal_type Varchar2(30);
10698 l_pdt_id Number;
10699 l_start_date Date;
10700 l_asset_status okc_k_lines_b.sts_code%TYPE;
10701 l_chr_id NUMBER;
10702 l_amortization_date DATE;
10703 l_special_treatment_required VARCHAR2(1);
10704 l_pdt_date DATE;
10705 l_pdtv_rec okl_setupproducts_pub.pdtv_rec_type;
10706 l_pdt_parameter_rec okl_setupproducts_pub.pdt_parameters_rec_type;
10707 l_rep_pdt_parameter_rec okl_setupproducts_pub.pdt_parameters_rec_type;
10708 l_reporting_product OKL_PRODUCTS_V.NAME%TYPE;
10709 l_no_data_found BOOLEAN;
10710 l_rep_pdt_id NUMBER;
10711 l_rep_deal_type okl_product_parameters_v.deal_type%TYPE;
10712 l_tax_owner Varchar2(150);
10713 l_rep_tax_owner Varchar2(150);
10714 l_Multi_GAAP_YN Varchar2(1);
10715 l_mg_rep_book fa_book_controls.book_type_code%TYPE;
10716 l_amortization_start_date DATE:=NULL;
10717 -- CURSOR TO GET MAX OFF LEASE TRX DATESELECT
10718 Cursor tax_off_trx_amt(p_asset_id in number, p_tax_book in varchar2) is
10719 select tas.date_trans_occurred
10720 FROM OKL_TRX_ASSETS tas,
10721 OKL_TXL_ASSETS_B tal,
10722 OKL_TXD_ASSETS_B txl
10723 WHERE tas.id = tal.tas_id
10724 AND tal.id = txl.tal_id
10725 AND txl.tax_book = p_tax_book
10726 AND tas.tsu_code = 'PROCESSED'
10727 AND tas.tas_type in ('AMT')
10728 And tal.kle_id = p_asset_id;
10729 Cursor corp_off_trx_amt(p_asset_id in number, p_corp_book in varchar2) is
10730 SELECT
10731 tas.date_trans_occurred
10732 FROM OKL_TRX_ASSETS tas,
10733 OKL_TXL_ASSETS_B tal,
10734 OKL_TXD_ASSETS_B txd
10735 WHERE tas.id = tal.tas_id
10736 AND tal.corporate_book = P_corp_book
10737 AND tas.tsu_code = 'PROCESSED'
10738 AND tas.tas_type in ('AMT')
10739 And tal.kle_id = p_asset_id
10740 AND tal.id = txd.tal_id(+)
10741 AND TAX_BOOK IS NULL ;
10742 Cursor tax_off_trx_aus(p_asset_id in number, p_tax_book in varchar2) is
10743 select tas.date_trans_occurred
10744 FROM OKL_TRX_ASSETS tas,
10745 OKL_TXL_ASSETS_B tal,
10746 OKL_TXD_ASSETS_B txl
10747 WHERE tas.id = tal.tas_id
10748 AND tal.id = txl.tal_id
10749 AND txl.tax_book = p_tax_book
10750 AND tas.tsu_code = 'PROCESSED'
10751 AND tas.tas_type in ('AUS')
10752 And tal.kle_id = p_asset_id;
10753 Cursor corp_off_trx_aus(p_asset_id in number, p_corp_book in varchar2) is
10754 SELECT
10755 tas.date_trans_occurred
10756 FROM OKL_TRX_ASSETS tas,
10757 OKL_TXL_ASSETS_B tal,
10758 OKL_TXD_ASSETS_B txd
10759 WHERE tas.id = tal.tas_id
10760 AND tal.corporate_book = P_corp_book
10761 AND tas.tsu_code = 'PROCESSED'
10762 AND tas.tas_type in ('AUS')
10763 And tal.kle_id = p_asset_id
10764 AND tal.id = txd.tal_id(+)
10765 AND TAX_BOOK IS NULL ;
10766 l_trans_date_aus DATE;
10767 l_trans_date_amt DATE;
10768 BEGIN
10769 --call start activity to set savepoint
10770 l_return_status := OKL_API.START_ACTIVITY( substr(l_api_name,1,26),
10771 p_init_msg_list,
10772 '_PVT',
10773 x_return_status);
10774 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10775 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10776 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
10777 RAISE OKL_API.G_EXCEPTION_ERROR;
10778 END IF;
10779 l_pdtv_rec.id := p_pdt_id;
10780 l_no_data_found := TRUE;
10781 l_pdt_date :=p_start_date;
10782 okl_setupproducts_pub.Getpdt_parameters(p_api_version => p_api_version,
10783 p_init_msg_list => p_init_msg_list,
10784 x_return_status => l_return_status,
10785 x_no_data_found => l_no_data_found,
10786 x_msg_count => x_msg_count,
10787 x_msg_data => x_msg_data,
10788 p_pdtv_rec => l_pdtv_rec,
10789 p_product_date => l_pdt_date,
10790 p_pdt_parameter_rec => l_pdt_parameter_rec);
10791 IF l_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
10792 -- Error getting financial product parameters for contract CONTRACT_NUMBER.
10793 OKC_API.set_message( p_app_name => 'OKL',
10794 p_msg_name => 'OKL_AM_FIN_PROD_PARAM_ERR',
10795 p_token1 => 'CONTRACT_NUMBER',
10796 p_token1_value => l_contract_number);
10797 RAISE OKL_API.G_EXCEPTION_ERROR;
10798 END IF;
10799 --dbms_output.put_line('l_pdt_parameter_rec.reporting_pdt_id '||l_pdt_parameter_rec.reporting_pdt_id );
10800 l_mg_rep_book :=NULL;
10801 if l_pdt_parameter_rec.reporting_pdt_id IS NULL Then
10802 l_rep_pdt_id := Null;
10803 l_tax_owner := l_pdt_parameter_rec.tax_owner;
10804 l_deal_type := l_pdt_parameter_rec.deal_type;
10805 l_rep_deal_type := Null;
10806 l_rep_tax_owner :=NULL;
10807 Else
10808 l_rep_pdt_id := l_pdt_parameter_rec.reporting_pdt_id;
10809 l_tax_owner := l_pdt_parameter_rec.tax_owner;
10810 l_deal_type := l_pdt_parameter_rec.deal_type;
10811 --get reporting product param values
10812 l_no_data_found := TRUE;
10813 l_pdtv_rec.id := l_rep_pdt_id;
10814 IF l_rep_pdt_id IS NOT NULL AND l_rep_pdt_id <> OKC_API.G_MISS_NUM THEN
10815 okl_setupproducts_pub.Getpdt_parameters(p_api_version => p_api_version,
10816 p_init_msg_list => p_init_msg_list,
10817 x_return_status => l_return_status,
10818 x_no_data_found => l_no_data_found,
10819 x_msg_count => x_msg_count,
10820 x_msg_data => x_msg_data,
10821 p_pdtv_rec => l_pdtv_rec,
10822 p_product_date => l_pdt_date,
10823 p_pdt_parameter_rec => l_rep_pdt_parameter_rec);
10824 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS Then
10825 -- Error getting reporting product parameters for contract CONTRACT_NUMBER.
10826 OKC_API.set_message( p_app_name => 'OKL',
10827 p_msg_name => 'OKL_AM_REP_PROD_PARAM_ERR',
10828 p_token1 => 'CONTRACT_NUMBER',
10829 p_token1_value => l_contract_number);
10830 RAISE OKL_API.G_EXCEPTION_ERROR;
10831 Else
10832 l_rep_deal_type := l_rep_pdt_parameter_rec.deal_type;
10833 l_rep_tax_owner := l_rep_pdt_parameter_rec.tax_owner;
10834 IF l_rep_deal_type IS NULL OR l_rep_deal_type = OKC_API.G_MISS_CHAR THEN
10835 --Deal Type not defined for Reporting product REP_PROD.
10836 OKC_API.set_message( p_app_name => 'OKL',
10837 p_msg_name => 'OKL_AM_NO_MG_DEAL_TYPE',
10838 p_token1 => 'REP_PROD',
10839 p_token1_value => l_reporting_product);
10840 RAISE OKL_API.G_EXCEPTION_ERROR;
10841 End If;
10842 l_Multi_GAAP_YN := 'Y';
10843 End If;
10844 -- get the MG reporting book
10845 -- Bug#6695409
10846 l_mg_rep_book := OKL_SYSTEM_PARAMS_ALL_PUB.get_system_param_value(OKL_SYSTEM_PARAMS_ALL_PUB.G_RPT_PROD_BOOK_TYPE_CODE);
10847
10848 IF l_mg_rep_book IS NULL THEN
10849 --Multi GAAP Reporting Book is not defined.
10850 OKL_API.set_message( p_app_name => 'OKL',
10851 p_msg_name => 'OKL_AM_NO_MG_REP_BOOK');
10852 RAISE OKL_API.G_EXCEPTION_ERROR;
10853 END IF; --mg book
10854 END IF; --l_rep_pdt_id IS not null
10855 END IF; --reporting_pdt_id IS NULL
10856 l_book_class := NULL;
10857 OPEN l_book_class_cur(p_book_type_code => p_book_type_code);
10858 FETCH l_book_class_cur INTO l_book_class;
10859 IF l_book_class_cur%NOTFOUND THEN
10860 NULL;
10861 END IF;
10862 CLOSE l_book_class_cur;
10863 l_special_treatment_required :='N';
10864 IF p_asset_status IN ('TERMINATED','EXPIRED','EVERGREEN') THEN
10865 IF (l_book_class = 'CORPORATE') AND (l_deal_type in ('LEASEDF','LEASEST')) then
10866 --rirawat
10867 open corp_off_trx_aus(p_cle_id , p_book_type_code);
10868 FETCH corp_off_trx_aus INTO l_amortization_date;
10869 close corp_off_trx_aus ;
10870 IF l_amortization_date IS NULL THEN
10871 open corp_off_trx_amt(p_cle_id , p_book_type_code);
10872 FETCH corp_off_trx_amt INTO l_amortization_date;
10873 close corp_off_trx_amt ;
10874 END IF ;
10875 --l_amortization_date := sysdate;
10876 l_special_treatment_required := 'Y';
10877 elsif ((l_book_class = 'TAX') and (l_Multi_GAAP_YN = 'Y') and (l_rep_deal_type in ('LEASEDF','LEASEST')) and (p_book_type_code = l_mg_rep_book)) then
10878 --rirawat
10879 open tax_off_trx_aus(p_cle_id , p_book_type_code);
10880 FETCH tax_off_trx_aus INTO l_amortization_date;
10881 close tax_off_trx_aus ;
10882 IF l_amortization_date IS NULL THEN
10883 open tax_off_trx_amt(p_cle_id , p_book_type_code);
10884 FETCH tax_off_trx_amt INTO l_amortization_date;
10885 close tax_off_trx_amt ;
10886 END IF;
10887 --l_amortization_date := sysdate;
10888 l_special_treatment_required := 'Y';
10889 elsif ((l_book_class = 'TAX') and (l_tax_owner ='LESSEE')) THEN
10890 open tax_off_trx_aus(p_cle_id , p_book_type_code);
10891 FETCH tax_off_trx_aus INTO l_amortization_date;
10892 close tax_off_trx_aus ;
10893 IF l_amortization_date IS NULL THEN
10894 open tax_off_trx_amt(p_cle_id , p_book_type_code);
10895 FETCH tax_off_trx_amt INTO l_amortization_date;
10896 close tax_off_trx_amt ;
10897 END IF;
10898 --l_amortization_date := sysdate;
10899 l_special_treatment_required := 'Y';
10900 END IF;
10901 END IF;
10902 x_amortization_date := l_amortization_date;
10903 x_special_treatment_required := l_special_treatment_required;
10904 --Call end Activity
10905 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
10906 EXCEPTION
10907 WHEN OKL_API.G_EXCEPTION_ERROR THEN
10908 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10909 l_api_name,
10910 G_PKG_NAME,
10911 'OKL_API.G_RET_STS_ERROR',
10912 x_msg_count,
10913 x_msg_data,
10914 '_PVT');
10915 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
10916 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10917 l_api_name,
10918 G_PKG_NAME,
10919 'OKL_API.G_RET_STS_UNEXP_ERROR',
10920 x_msg_count,
10921 x_msg_data,
10922 '_PVT');
10923 WHEN OTHERS THEN
10924 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10925 l_api_name,
10926 G_PKG_NAME,
10927 'OTHERS',
10928 x_msg_count,
10929 x_msg_data,
10930 '_PVT');
10931 END;
10932 --------------------------------------------------------------------------------
10933 --Start of Comments
10934 --Procedure Name : FIXED_ASSET_ADD
10935 --Description : Calls FA additions api to create new assets for
10936 -- and split children
10937 --History :
10938 -- 28-Nov-2001 ashish.singh Created
10939 -- Bug# 6373605 (OKL.R12.B SLA CRs
10940 -- p_sla_source_header_id IN Number,
10941 -- ID of source OKL_TRX_ASSETS record
10942 -- p_sla_source_header_table IN Varchar2,
10943 -- 'OKL_TRX_ASSETS'
10944 -- p_sla_source_try_id IN Number,
10945 -- OKL_TRX_ASSETS.try_id (transaction type id)
10946 -- p_sla_source_line_id IN Number,
10947 -- ID of line table (OKL_TXL_ASSETS_B or
10948 -- OKL_TXD_ASSETS_B
10949 -- p_sla_source_line_table IN Varchar2,
10950 -- OKL_TXL_ASSETS_B or OKL_TXD_ASSETS_B
10951 -- p_sla_source_chr_id IN Number,
10952 -- Contract id of the contract on which
10953 -- source transaction happened
10954 -- p_sla_source_kle_id IN Number,
10955 -- Financial asset line id (lse_id = 33)
10956 -- p_sla_asset_chr_id IN Number,
10957 -- Contract on which asset is present
10958 -- at the time of transaction (in case of
10959 -- online rebook transaction is against the rebook
10960 -- copy contract whereas the asset is on
10961 -- original contract
10962 --End of Comments
10963 --------------------------------------------------------------------------------
10964 PROCEDURE FIXED_ASSET_ADD (p_api_version IN NUMBER,
10965 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
10966 x_return_status OUT NOCOPY VARCHAR2,
10967 x_msg_count OUT NOCOPY NUMBER,
10968 x_msg_data OUT NOCOPY VARCHAR2,
10969 p_ast_line_rec IN ast_line_rec_type,
10970 p_txlv_rec IN txlv_rec_type,
10971 p_txdv_rec IN txdv_rec_type,
10972 --3156924
10973 p_trx_date IN DATE,
10974 p_trx_number IN NUMBER,
10975 --Bug# 6373605--SLA populate source
10976 p_sla_source_header_id IN Number,
10977 p_sla_source_header_table IN Varchar2,
10978 p_sla_source_try_id IN Number,
10979 p_sla_source_line_id IN Number,
10980 p_sla_source_line_table IN Varchar2,
10981 p_sla_source_chr_id IN Number,
10982 p_sla_source_kle_id IN Number,
10983 p_sla_asset_chr_id IN Number,
10984 --Bug# 6373605--SLA populate source
10985 --Bug# 4028371
10986 x_fa_trx_date OUT NOCOPY date,
10987 x_asset_hdr_rec OUT NOCOPY FA_API_TYPES.asset_hdr_rec_type) IS
10988
10989 l_return_status VARCHAR2(1) DEFAULT OKL_API.G_RET_STS_SUCCESS;
10990 l_api_name CONSTANT VARCHAR2(30) := 'FIXED_ASSET_ADD';
10991 l_api_version CONSTANT NUMBER := 1.0;
10992
10993 l_trans_rec FA_API_TYPES.trans_rec_type;
10994 l_dist_trans_rec FA_API_TYPES.trans_rec_type;
10995 l_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type;
10996 l_asset_desc_rec FA_API_TYPES.asset_desc_rec_type;
10997 l_asset_cat_rec FA_API_TYPES.asset_cat_rec_type;
10998 l_asset_type_rec FA_API_TYPES.asset_type_rec_type;
10999 l_asset_fin_rec FA_API_TYPES.asset_fin_rec_type;
11000 --l_asset_fin_glob_dff_rec FA_API_TYPES.asset_fin_glob_dff_rec_type;
11001 l_asset_deprn_rec FA_API_TYPES.asset_deprn_rec_type;
11002 l_asset_dist_rec FA_API_TYPES.asset_dist_rec_type;
11003 l_asset_dist_tbl FA_API_TYPES.asset_dist_tbl_type;
11004 l_inv_tbl FA_API_TYPES.inv_tbl_type;
11005 l_asset_hierarchy_rec fa_api_types.asset_hierarchy_rec_type;
11006
11007 l_split_factor NUMBER;
11008
11009 --cursor to get asset key ccid
11010 CURSOR asset_k_ccid_cur(p_asset_id IN NUMBER) IS
11011 SELECT asset_key_ccid
11012 FROM fa_additions
11013 WHERE asset_id = p_asset_id;
11014
11015 --cursor to get depreciation info
11016 CURSOR deprn_cur (p_asset_id IN NUMBER,
11017 p_book_type_code IN VARCHAR2,
11018 p_split_factor IN NUMBER) IS
11019 SELECT ytd_deprn - (ytd_deprn -(ytd_deprn*p_split_factor)),
11020 deprn_reserve - (deprn_reserve -(deprn_reserve*p_split_factor)),
11021 prior_fy_expense - (prior_fy_expense-(prior_fy_expense*p_split_factor)),
11022 bonus_ytd_deprn - (bonus_ytd_deprn-(bonus_ytd_deprn*p_split_factor)),
11023 bonus_deprn_reserve - (bonus_deprn_reserve-(bonus_deprn_reserve*p_split_factor))
11024 FROM okx_ast_dprtns_v
11025 WHERE asset_id = p_asset_id
11026 AND book_type_code = p_book_type_code
11027 AND deprn_run_date = (SELECT MAX(deprn_run_date)
11028 FROM okx_ast_dprtns_v
11029 WHERE asset_id = p_asset_id
11030 AND book_type_code = p_book_type_code);
11031
11032 --cursor to get asset distribution rec
11033 CURSOR ast_dist_cur (p_asset_id IN NUMBER,
11034 p_book_type_code IN VARCHAR2,
11035 p_units IN NUMBER) IS
11036 SELECT --p_txdv_rec.quantity,
11037 --p_ast_line_rec.current_units,
11038 p_units,
11039 assigned_to,
11040 code_combination_id,
11041 location_id,
11042 p_units
11043 --p_txdv_rec.quantity
11044 --p_ast_line_rec.current_units
11045 FROM okx_ast_dst_hst_v
11046 WHERE asset_id = p_asset_id
11047 AND book_type_code = p_book_type_code
11048 AND transaction_header_id_out IS NULL
11049 AND retirement_id IS NULL;
11050
11051 -- Bug# 5946411 -- start
11052 CURSOR ast_dep_limit_csr (p_asset_id IN NUMBER,
11053 p_book_type_code IN VARCHAR2
11054 ) IS
11055 SELECT ALLOWED_DEPRN_LIMIT,
11056 ALLOWED_DEPRN_LIMIT_AMOUNT
11057 ,DEPRN_LIMIT_TYPE
11058 ,DEPRECIATE_FLAG
11059 --Bug# 6152614
11060 ,PRORATE_CONVENTION_CODE
11061 ,PRORATE_DATE
11062 FROM FA_books
11063 WHERE asset_id = p_asset_id
11064 AND book_type_code = p_book_type_code
11065 AND transaction_header_id_out IS NULL;
11066
11067 l_allowed_deprn_limit FA_books.ALLOWED_DEPRN_LIMIT%TYPE;
11068 l_allowed_deprn_limit_amount FA_books.allowed_deprn_limit_amount%type;
11069 l_deprn_limit_type FA_books.DEPRN_LIMIT_TYPE%TYPE;
11070 l_depreciate_flag FA_books.DEPRECIATE_FLAG%TYPE;
11071 -- Bug# 5946411 -- end
11072 -- Bug# 6152614
11073 l_prorate_convention_code FA_books.PRORATE_CONVENTION_CODE%TYPE;
11074 l_prorate_date FA_books.PRORATE_DATE%TYPE;
11075
11076 --cursor to fetch already created asset id if book_class is TAX ie. corp book is already created
11077 CURSOR get_ast_id_cur (p_asset_number IN VARCHAR2,
11078 p_book_type_code IN VARCHAR2) IS
11079 SELECT DECODE(bkc.book_class,'CORPORATE',NULL,'TAX',ast.asset_id)
11080 FROM okx_assets_v ast,
11081 okx_asst_bk_controls_v bkc
11082 WHERE ast.asset_number = p_asset_number
11083 AND ast.corporate_book = bkc.mass_copy_source_book
11084 AND bkc.book_type_code = p_book_type_code;
11085
11086 --3156924:
11087 l_calling_interface Varchar2(30) := 'OKLRSPAB:Split Asset';
11088
11089 --Bug# 5946411
11090 l_asset_hdr_orig_rec FA_API_TYPES.asset_hdr_rec_type;
11091
11092 -- bug 6061103 -- start
11093 CURSOR l_cleb_sts_csr(pcleid IN NUMBER) IS
11094 SELECT cleb.sts_code sts_code,
11095 cleb.dnz_chr_id chr_id,
11096 khr.PDT_ID,
11097 chr.START_DATE
11098 FROM okc_k_lines_b cleb,
11099 okl_k_headers khr,
11100 OKC_K_HEADERS_B chr
11101 WHERE cleb.id = pcleid
11102 and khr.id = cleb.dnz_chr_id
11103 and chr.id = khr.id;
11104 l_cle_status okc_k_lines_b.sts_code%TYPE;
11105 --cursor to find book class
11106 CURSOR l_book_class_cur(p_book_type_code IN VARCHAR2) IS
11107 SELECT book_class
11108 FROM okx_asst_bk_controls_v
11109 WHERE book_type_code = p_book_type_code;
11110 l_book_class okx_asst_bk_controls_v.book_class%TYPE;
11111 l_pdt_id Number;
11112 l_start_date Date;
11113 l_chr_id number;
11114 l_temp_cost number;
11115 l_temp_original_cost number;
11116 l_temp_salvage_value number;
11117 l_temp_ytd_deprn number;
11118 l_temp_deprn_reserve number;
11119 l_temp_prior_fy_expense number;
11120 l_temp_bonus_ytd_deprn number;
11121 l_temp_bonus_deprn_reserve number;
11122 l_amortization_date DATE;
11123 l_special_treatment_required VARCHAR2(1);
11124 l_adj_trans_rec FA_API_TYPES.trans_rec_type;
11125 l_adj_asset_fin_rec_adj FA_API_TYPES.asset_fin_rec_type;
11126 l_adj_asset_fin_rec_new FA_API_TYPES.asset_fin_rec_type;
11127 l_adj_asset_fin_mrc_tbl_new FA_API_TYPES.asset_fin_tbl_type;
11128 --l_asset_fin_glob_dff_rec FA_API_TYPES.asset_fin_glob_dff_rec_type;
11129 l_adj_inv_trans_rec FA_API_TYPES.inv_trans_rec_type;
11130 l_adj_inv_tbl FA_API_TYPES.inv_tbl_type;
11131 l_adj_inv_rate_tbl FA_API_TYPES.inv_rate_tbl_type;
11132 l_adj_asset_deprn_rec_adj FA_API_TYPES.asset_deprn_rec_type;
11133 l_adj_asset_deprn_rec_new FA_API_TYPES.asset_deprn_rec_type;
11134 l_adj_asset_deprn_mrc_tbl_new FA_API_TYPES.asset_deprn_tbl_type;
11135 l_adj_inv_rec FA_API_TYPES.inv_rec_type;
11136 l_adj_asset_deprn_rec FA_API_TYPES.asset_deprn_rec_type;
11137 l_adj_group_recalss_option_rec FA_API_TYPES.group_reclass_options_rec_type;
11138 -- bug 6061103 -- end
11139
11140 --Bug# 6373605 begin
11141 l_fxhv_rec okl_sla_acc_sources_pvt.fxhv_rec_type;
11142 l_fxlv_rec okl_sla_acc_sources_pvt.fxlv_rec_type;
11143 --Bug# 6373605 end
11144
11145 --Bug# 6955027
11146 x_log_level_rec FA_API_TYPES.log_level_rec_type;
11147
11148 BEGIN
11149 x_return_status := OKL_API.G_RET_STS_SUCCESS;
11150 -- Call start_activity to create savepoint, check compatibility
11151 -- and initialize message list
11152 x_return_status := OKL_API.START_ACTIVITY (
11153 l_api_name
11154 ,p_init_msg_list
11155 ,'_PVT'
11156 ,x_return_status);
11157 -- Check if activity started successfully
11158 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11159 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11160 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11161 RAISE OKL_API.G_EXCEPTION_ERROR;
11162 END IF;
11163
11164 --dbms_output.enable(1000000);
11165
11166 --FA_SRVR_MSG.Init_Server_Message;
11167 --FA_DEBUG_PKG.Initialize;
11168
11169 --Bug# 6955027
11170 IF NOT FA_TRX_APPROVAL_PKG.faxcat
11171 (X_book => p_ast_line_rec.corporate_book,
11172 X_asset_id => p_ast_line_rec.asset_id,
11173 X_trx_type => 'ADJUSTMENT',
11174 X_trx_date => NULL,
11175 X_init_message_flag => 'NO',
11176 p_log_level_rec => x_log_level_rec) then
11177 RAISE OKL_API.G_EXCEPTION_ERROR;
11178 END IF;
11179 --Bug# 6955027
11180
11181 -----------------
11182 --trans_rec_info
11183 -----------------
11184 l_trans_rec.transaction_type_code := 'ADDITION'; --optional
11185 --Bug# 3156924 :
11186 --l_trans_rec.transaction_date_entered := p_ast_line_rec.in_service_date; --optional.defaults to dpis
11187 --l_trans_rec.transaction_date_entered := p_trx_date; --optional.defaults to dpis
11188 l_trans_rec.who_info.last_updated_by := FND_GLOBAL.USER_ID;
11189 --l_trans_rec.calling_interface := 'OKL SPLIT ASSET';
11190 --Bug# 3156924 :
11191 l_trans_rec.calling_interface := l_calling_interface; --optional
11192 l_trans_rec.transaction_name := SUBSTR(TO_CHAR(p_trx_number),1,20); --optional
11193
11194
11195 ---------------
11196 --hdr_rec info
11197 --------------
11198 l_asset_hdr_rec.book_type_code := p_ast_line_rec.corporate_book;
11199 l_asset_hdr_rec.set_of_books_id := p_ast_line_rec.set_of_books_id;
11200 l_asset_hdr_rec.asset_id := NULL;
11201
11202 --for tax books fetch the asset id
11203 OPEN get_ast_id_cur (p_asset_number => p_txdv_rec.asset_number,
11204 p_book_type_code => p_ast_line_rec.corporate_book);
11205 FETCH get_ast_id_cur INTO l_asset_hdr_rec.asset_id;
11206 IF get_ast_id_cur%NOTFOUND THEN
11207 NULL;
11208 END IF;
11209 CLOSE get_ast_id_cur;
11210
11211 ---------------
11212 -- desc info
11213 ---------------
11214 l_asset_desc_rec.asset_number := p_txdv_rec.asset_number;
11215 l_asset_desc_rec.description := p_txdv_rec.description;
11216 l_asset_desc_rec.manufacturer_name := p_ast_line_rec.manufacturer_name;
11217 l_asset_desc_rec.in_use_flag := p_ast_line_rec.in_use_flag;
11218 l_asset_desc_rec.inventorial := p_ast_line_rec.inventorial;
11219 l_asset_desc_rec.property_type_code := p_ast_line_rec.property_type_code;
11220 l_asset_desc_rec.property_1245_1250_code := p_ast_line_rec.property_1245_1250_code;
11221 l_asset_desc_rec.owned_leased := p_ast_line_rec.owned_leased;
11222 l_asset_desc_rec.new_used := p_ast_line_rec.new_used;
11223 --Bug# 2761799: model number not being copied
11224 l_asset_desc_rec.model_number := p_ast_line_rec.model_number;
11225
11226
11227 OPEN asset_k_ccid_cur(p_asset_id => p_ast_line_rec.asset_id);
11228 FETCH asset_k_ccid_cur INTO l_asset_desc_rec.asset_key_ccid;
11229 IF asset_k_ccid_cur%NOTFOUND THEN
11230 NULL;
11231 END IF;
11232 CLOSE asset_k_ccid_cur;
11233
11234 IF NVL(p_txdv_rec.split_percent,0) NOT IN (0,OKL_API.G_MISS_NUM) THEN
11235 l_split_factor := (p_txdv_rec.split_percent/100);
11236 l_asset_desc_rec.current_units := p_ast_line_rec.current_units;
11237 ELSE
11238 l_split_factor := (p_txdv_rec.quantity/p_txlv_rec.current_units);
11239 --l_asset_desc_rec.current_units := p_txdv_rec.quantity;
11240 l_asset_desc_rec.current_units := p_ast_line_rec.current_units -
11241 (p_ast_line_rec.current_units -
11242 (p_ast_line_rec.current_units*l_split_factor)
11243 );
11244 END IF;
11245
11246
11247 --original_units - (original_units - (original_units*split_factor))
11248 --this should actually be on the current quantity and not on the qty when trx was saved
11249 --modify it later
11250
11251 ----------------------
11252 --asset_type_rec info
11253 ---------------------
11254 l_asset_type_rec.asset_type := p_ast_line_rec.asset_type;
11255
11256 ----------------------
11257 --asset_cat_rec_info
11258 ---------------------
11259 l_asset_cat_rec.category_id := p_ast_line_rec.depreciation_category;
11260
11261 --asset_fin_rec
11262 l_asset_fin_rec.set_of_books_id := p_ast_line_rec.set_of_books_id;
11263 --3156924
11264 l_asset_fin_rec.date_placed_in_service := p_ast_line_rec.in_service_date;
11265 --l_asset_fin_rec.date_placed_in_service := p_trx_date;
11266 l_asset_fin_rec.deprn_method_code := p_ast_line_rec.deprn_method_code;
11267 l_asset_fin_rec.life_in_months := p_ast_line_rec.life_in_months;
11268 l_asset_fin_rec.cost := p_ast_line_rec.cost -(p_ast_line_rec.cost- (p_ast_line_rec.cost*l_split_factor));
11269 l_asset_fin_rec.original_cost := p_ast_line_rec.original_cost -(p_ast_line_rec.original_cost - (p_ast_line_rec.original_cost*l_split_factor));
11270 l_asset_fin_rec.salvage_value := p_ast_line_rec.salvage_value -(p_ast_line_rec.salvage_value -(p_ast_line_rec.salvage_value*l_split_factor));
11271 l_asset_fin_rec.basic_rate := p_ast_line_rec.basic_rate;
11272 l_asset_fin_rec.adjusted_rate := p_ast_line_rec.adjusted_rate;
11273 l_asset_fin_rec.percent_salvage_value := p_ast_line_rec.percent_salvage_value;
11274 l_asset_fin_rec.rate_adjustment_factor := 1;
11275
11276 -- Bug# 5946411 -- start
11277 OPEN ast_dep_limit_csr (p_asset_id => p_ast_line_rec.asset_id,
11278 p_book_type_code => p_ast_line_rec.corporate_book);
11279
11280 FETCH ast_dep_limit_csr INTO l_allowed_deprn_limit,
11281 l_allowed_deprn_limit_amount,
11282 l_deprn_limit_type,
11283 l_depreciate_flag
11284 --Bug# 6152614
11285 ,l_prorate_convention_code
11286 ,l_prorate_date;
11287
11288 IF ast_dep_limit_csr%NOTFOUND THEN
11289 NULL;
11290 END IF;
11291 CLOSE ast_dep_limit_csr;
11292 l_asset_fin_rec.allowed_deprn_limit := l_allowed_deprn_limit;
11293 l_asset_fin_rec.allowed_deprn_limit_amount := l_allowed_deprn_limit_amount;
11294 -- Bug# 6152614
11295 l_asset_fin_rec.prorate_convention_code := l_prorate_convention_code;
11296 l_asset_fin_rec.prorate_date := l_prorate_date;
11297 -- Bug# 5946411 -- end
11298
11299 --Bug# 6373605 start
11300 l_asset_fin_rec.contract_id := p_sla_asset_chr_id;
11301 --Bug# 6373605 end
11302
11303 -----------------
11304 --Bug# 3156924
11305 ----------------
11306 --l_asset_fin_rec.depreciate_flag := 'YES';
11307
11308 l_asset_deprn_rec.set_of_books_id := p_ast_line_rec.set_of_books_id;
11309
11310 /* Bug# 5946411
11311 --commented following and added FA_UTIL to retrive asset deprn_rec
11312
11313 OPEN deprn_cur (p_asset_id => p_ast_line_rec.asset_id,
11314 p_book_type_code => p_ast_line_rec.corporate_book,
11315 p_split_factor => l_split_factor);
11316
11317 FETCH deprn_cur INTO l_asset_deprn_rec.ytd_deprn,
11318 l_asset_deprn_rec.deprn_reserve,
11319 l_asset_deprn_rec.prior_fy_expense,
11320 l_asset_deprn_rec.bonus_ytd_deprn,
11321 l_asset_deprn_rec.bonus_deprn_reserve;
11322 IF deprn_cur%NOTFOUND THEN
11323 NULL;
11324 END IF;
11325 CLOSE deprn_cur;
11326
11327 */
11328 l_asset_fin_rec.depreciate_flag := l_depreciate_flag;
11329 l_asset_fin_rec.deprn_limit_type :=l_deprn_limit_type;
11330 if NOT fa_cache_pkg.fazcbc(x_book => p_ast_line_rec.corporate_book) then
11331 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
11332 p_msg_name => 'OKL_LLA_FA_CACHE_ERROR'
11333 );
11334 Raise OKL_API.G_EXCEPTION_ERROR;
11335 end if;
11336 l_asset_hdr_orig_rec.asset_id:=p_ast_line_rec.asset_id;
11337 l_asset_hdr_orig_rec.book_type_code := p_ast_line_rec.corporate_book;
11338 -- To fetch Depreciation Reserve
11339 if not FA_UTIL_PVT.get_asset_deprn_rec
11340 (p_asset_hdr_rec => l_asset_hdr_orig_rec ,
11341 px_asset_deprn_rec => l_asset_deprn_rec,
11342 p_period_counter => NULL,
11343 p_mrc_sob_type_code => 'P'
11344 ) then
11345 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
11346 p_msg_name => 'OKL_LLA_FA_DEPRN_REC_ERROR'
11347 );
11348 Raise OKL_API.G_EXCEPTION_ERROR;
11349 end if;
11350 l_asset_deprn_rec.ytd_deprn:= l_asset_deprn_rec.ytd_deprn - (l_asset_deprn_rec.ytd_deprn -(l_asset_deprn_rec.ytd_deprn*l_split_factor));
11351 l_asset_deprn_rec.deprn_reserve:= l_asset_deprn_rec.deprn_reserve - (l_asset_deprn_rec.deprn_reserve -(l_asset_deprn_rec.deprn_reserve*l_split_factor));
11352 l_asset_deprn_rec.prior_fy_expense:=l_asset_deprn_rec.prior_fy_expense - (l_asset_deprn_rec.prior_fy_expense-(l_asset_deprn_rec.prior_fy_expense*l_split_factor));
11353 l_asset_deprn_rec.bonus_ytd_deprn:=l_asset_deprn_rec.bonus_ytd_deprn - (l_asset_deprn_rec.bonus_ytd_deprn-(l_asset_deprn_rec.bonus_ytd_deprn*l_split_factor));
11354 l_asset_deprn_rec.bonus_deprn_reserve:=l_asset_deprn_rec.bonus_deprn_reserve - (l_asset_deprn_rec.bonus_deprn_reserve-(l_asset_deprn_rec.bonus_deprn_reserve*l_split_factor));
11355
11356 -- Bug# 6189396 -- start
11357 okl_execute_formula_pub.g_additional_parameters(1).name := 'SPLIT_ASSET_DEPRN_RESRVE';
11358 okl_execute_formula_pub.g_additional_parameters(1).value := to_char(l_asset_deprn_rec.deprn_reserve);
11359 -- Bug# 6189396 -- end
11360
11361 ---------------------------------------------------------------------------------------
11362 --Bug# 3156924 : Due to partial retirement ytd_deprn may get greater than deprn_reserve
11363 ---------------------------------------------------------------------------------------
11364 IF l_asset_deprn_rec.ytd_deprn > l_asset_deprn_rec.deprn_reserve THEN
11365 l_asset_deprn_rec.ytd_deprn := l_asset_deprn_rec.deprn_reserve;
11366 END IF;
11367
11368 --asset_dist_rec
11369 OPEN ast_dist_cur (p_asset_id => p_ast_line_rec.asset_id,
11370 p_book_type_code => p_ast_line_rec.corporate_book,
11371 p_units => l_asset_desc_rec.current_units);
11372
11373 FETCH ast_dist_cur INTO l_asset_dist_rec.units_assigned,
11374 l_asset_dist_rec.assigned_to,
11375 l_asset_dist_rec.expense_ccid,
11376 l_asset_dist_rec.location_ccid,
11377 l_asset_dist_rec.transaction_units;
11378
11379 IF ast_dist_cur%NOTFOUND THEN
11380 NULL;
11381 END IF;
11382
11383 CLOSE ast_dist_cur;
11384
11385 -- bug 6061103 start
11386 OPEN l_cleb_sts_csr( p_txlv_rec.kle_id);
11387 FETCH l_cleb_sts_csr INTO l_cle_status, l_chr_id, l_pdt_id, l_start_date ;
11388 close l_cleb_sts_csr;
11389 is_evergreen_df_lease
11390 (p_api_version => p_api_version,
11391 p_init_msg_list => p_init_msg_list,
11392 x_return_status => x_return_status,
11393 x_msg_count => x_msg_count,
11394 x_msg_data => x_msg_data,
11395 p_cle_id => p_ast_line_rec.PARENT_LINE_ID ,--p_ast_line_rec.asset_id, rirawat
11396 p_book_type_code => p_ast_line_rec.corporate_book,
11397 p_asset_status => l_cle_status,
11398 p_pdt_id => l_pdt_id,
11399 p_start_date => l_start_date,
11400 x_amortization_date => l_amortization_date,
11401 x_special_treatment_required => l_special_treatment_required);
11402 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11403 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11404 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11405 RAISE OKL_API.G_EXCEPTION_ERROR;
11406 END IF;
11407 if (l_special_treatment_required = 'Y') then
11408 l_temp_cost := l_asset_fin_rec.cost;
11409 l_temp_original_cost := l_asset_fin_rec.original_cost;
11410 l_temp_salvage_value := l_asset_fin_rec.salvage_value;
11411 l_temp_ytd_deprn := l_asset_deprn_rec.ytd_deprn;
11412 l_temp_deprn_reserve := l_asset_deprn_rec.deprn_reserve;
11413 l_temp_prior_fy_expense := l_asset_deprn_rec.prior_fy_expense;
11414 l_temp_bonus_ytd_deprn := l_asset_deprn_rec.bonus_ytd_deprn ;
11415 l_temp_bonus_deprn_reserve := l_asset_deprn_rec.bonus_deprn_reserve;
11416 l_asset_fin_rec.cost := 0;
11417 l_asset_fin_rec.original_cost := 0;
11418 l_asset_fin_rec.salvage_value := 0 ;
11419 l_asset_deprn_rec.ytd_deprn:= 0;
11420 l_asset_deprn_rec.deprn_reserve:= 0;
11421 l_asset_deprn_rec.prior_fy_expense:= 0;
11422 l_asset_deprn_rec.bonus_ytd_deprn:= 0;
11423 l_asset_deprn_rec.bonus_deprn_reserve:= 0;
11424 end if;
11425 -- bug 6061103 end
11426 l_asset_dist_tbl(1) := l_asset_dist_rec;
11427
11428 --dbms_output.put_line('Add '||l_asset_desc_rec.asset_number || ' Deprn reserve '||to_char(l_asset_deprn_rec.deprn_reserve));
11429 -- call the api
11430 fa_addition_pub.do_addition
11431 (p_api_version => p_api_version,
11432 p_init_msg_list => OKL_API.G_FALSE,
11433 p_commit => OKL_API.G_FALSE,
11434 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
11435 x_return_status => x_return_status,
11436 x_msg_count => x_msg_count,
11437 x_msg_data => x_msg_data,
11438 --Bug# 3156924
11439 p_calling_fn => l_calling_interface,
11440 px_trans_rec => l_trans_rec,
11441 px_dist_trans_rec => l_dist_trans_rec,
11442 px_asset_hdr_rec => l_asset_hdr_rec,
11443 px_asset_desc_rec => l_asset_desc_rec,
11444 px_asset_type_rec => l_asset_type_rec,
11445 px_asset_cat_rec => l_asset_cat_rec,
11446 px_asset_hierarchy_rec => l_asset_hierarchy_rec,
11447 px_asset_fin_rec => l_asset_fin_rec,
11448 px_asset_deprn_rec => l_asset_deprn_rec,
11449 px_asset_dist_tbl => l_asset_dist_tbl,
11450 px_inv_tbl => l_inv_tbl
11451 );
11452
11453 --dbms_output.put_line(x_return_status);
11454 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11455 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11456 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11457 RAISE OKL_API.G_EXCEPTION_ERROR;
11458 END IF;
11459
11460 --bug# 6373605 -- call populate sla sources
11461 l_fxhv_rec.source_id := p_sla_source_header_id;
11462 l_fxhv_rec.source_table := p_sla_source_header_table;
11463 l_fxhv_rec.khr_id := p_sla_source_chr_id;
11464 l_fxhv_rec.try_id := p_sla_source_try_id;
11465
11466 l_fxlv_rec.source_id := p_sla_source_line_id;
11467 l_fxlv_rec.source_table := p_sla_source_line_table;
11468 l_fxlv_rec.kle_id := p_sla_source_kle_id;
11469
11470 l_fxlv_rec.asset_id := l_asset_hdr_rec.asset_id;
11471 l_fxlv_rec.fa_transaction_id := l_trans_rec.transaction_header_id;
11472 l_fxlv_rec.asset_book_type_name := l_asset_hdr_rec.book_type_code;
11473
11474 OKL_SLA_ACC_SOURCES_PVT.populate_sources(
11475 p_api_version => p_api_version
11476 ,p_init_msg_list => p_init_msg_list
11477 ,p_fxhv_rec => l_fxhv_rec
11478 ,p_fxlv_rec => l_fxlv_rec
11479 ,x_return_status => x_return_status
11480 ,x_msg_count => x_msg_count
11481 ,x_msg_data => x_msg_data
11482 );
11483 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11484 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11485 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11486 RAISE OKL_API.G_EXCEPTION_ERROR;
11487 END IF;
11488 --bug# 6373605 -- call populate SLA sources
11489
11490 --Bug# 6061103
11491 if (l_special_treatment_required = 'Y') and (l_temp_cost <> 0) then
11492 l_adj_trans_rec.transaction_subtype := 'AMORTIZED';
11493 --Bug# 6331465
11494 --l_adj_trans_rec.amortization_start_date := l_amortization_date;
11495 l_adj_trans_rec.transaction_name := SUBSTR(TO_CHAR(p_trx_number),1,20); --optional
11496 l_adj_trans_rec.calling_interface := l_calling_interface; --optional
11497 l_adj_asset_fin_rec_adj.cost := l_temp_cost;
11498 l_adj_asset_fin_rec_adj.original_cost := l_temp_original_cost;
11499 l_adj_asset_fin_rec_adj.salvage_value := l_temp_salvage_value ;
11500 l_adj_asset_deprn_rec_adj.ytd_deprn:= l_temp_ytd_deprn;
11501 l_adj_asset_deprn_rec_adj.deprn_reserve:= l_temp_deprn_reserve;
11502 l_adj_asset_deprn_rec_adj.prior_fy_expense:= l_temp_prior_fy_expense;
11503 l_adj_asset_deprn_rec_adj.bonus_ytd_deprn:= l_temp_bonus_ytd_deprn;
11504 l_adj_asset_deprn_rec_adj.bonus_deprn_reserve:= l_temp_bonus_deprn_reserve;
11505
11506 FA_ADJUSTMENT_PUB.do_adjustment
11507 (p_api_version => p_api_version,
11508 p_init_msg_list => p_init_msg_list,
11509 p_commit => OKL_API.G_FALSE,
11510 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
11511 x_return_status => x_return_status,
11512 x_msg_count => x_msg_count,
11513 x_msg_data => x_msg_data,
11514 --Bug# 3156924
11515 --p_calling_fn => null,
11516 p_calling_fn => l_calling_interface,
11517 px_trans_rec => l_adj_trans_rec,
11518 px_asset_hdr_rec => l_asset_hdr_rec,
11519 p_asset_fin_rec_adj => l_adj_asset_fin_rec_adj,
11520 x_asset_fin_rec_new => l_adj_asset_fin_rec_new,
11521 x_asset_fin_mrc_tbl_new => l_adj_asset_fin_mrc_tbl_new,
11522 px_inv_trans_rec => l_adj_inv_trans_rec,
11523 px_inv_tbl => l_adj_inv_tbl,
11524 p_asset_deprn_rec_adj => l_adj_asset_deprn_rec_adj,
11525 x_asset_deprn_rec_new => l_adj_asset_deprn_rec_new,
11526 x_asset_deprn_mrc_tbl_new => l_adj_asset_deprn_mrc_tbl_new,
11527 p_group_reclass_options_rec => l_adj_group_recalss_option_rec
11528 );
11529 --dbms_output.put_line('After calling FA adjustment Api '||x_return_status);
11530 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11531 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11532 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11533 RAISE OKL_API.G_EXCEPTION_ERROR;
11534 END IF;
11535
11536 --bug# 6373605 -- call populate sla sources
11537 l_fxhv_rec.source_id := p_sla_source_header_id;
11538 l_fxhv_rec.source_table := p_sla_source_header_table;
11539 l_fxhv_rec.khr_id := p_sla_source_chr_id;
11540 l_fxhv_rec.try_id := p_sla_source_try_id;
11541
11542 l_fxlv_rec.source_id := p_sla_source_line_id;
11543 l_fxlv_rec.source_table := p_sla_source_line_table;
11544 l_fxlv_rec.kle_id := p_sla_source_kle_id;
11545
11546 l_fxlv_rec.asset_id := l_asset_hdr_rec.asset_id;
11547 l_fxlv_rec.fa_transaction_id := l_adj_trans_rec.transaction_header_id;
11548 l_fxlv_rec.asset_book_type_name := l_asset_hdr_rec.book_type_code;
11549
11550 OKL_SLA_ACC_SOURCES_PVT.populate_sources(
11551 p_api_version => p_api_version
11552 ,p_init_msg_list => p_init_msg_list
11553 ,p_fxhv_rec => l_fxhv_rec
11554 ,p_fxlv_rec => l_fxlv_rec
11555 ,x_return_status => x_return_status
11556 ,x_msg_count => x_msg_count
11557 ,x_msg_data => x_msg_data
11558 );
11559 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11560 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11561 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11562 RAISE OKL_API.G_EXCEPTION_ERROR;
11563 END IF;
11564 --bug# 6373605 -- call populate SLA sources
11565
11566 end if;
11567 x_asset_hdr_rec := l_asset_hdr_rec;
11568 --Bug# 4028371
11569 x_fa_trx_date := l_adj_trans_rec.transaction_date_entered; -- for 6061103 chaged to adj
11570
11571 OKL_API.END_ACTIVITY (x_msg_count,
11572 x_msg_data );
11573 EXCEPTION
11574 WHEN OKL_API.G_EXCEPTION_ERROR THEN
11575 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11576 l_api_name,
11577 G_PKG_NAME,
11578 'OKL_API.G_RET_STS_ERROR',
11579 x_msg_count,
11580 x_msg_data,
11581 '_PVT');
11582 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
11583 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11584 l_api_name,
11585 G_PKG_NAME,
11586 'OKL_API.G_RET_STS_UNEXP_ERROR',
11587 x_msg_count,
11588 x_msg_data,
11589 '_PVT');
11590 WHEN OTHERS THEN
11591 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11592 l_api_name,
11593 G_PKG_NAME,
11594 'OTHERS',
11595 x_msg_count,
11596 x_msg_data,
11597 '_PVT');
11598 END FIXED_ASSET_ADD;
11599 --Bug# 3156924
11600 --------------------------------------------------------------------------------
11601 --Start of Comments
11602 --Procedure Name : FIXED_ASSET_UNIT_ADJUST
11603 --Description : Does unit adjustment on parent asset (source asset to split) in FA
11604 --History :
11605 -- 26-Feb-2004 ashish.singh Created
11606 --End of Comments
11607 --------------------------------------------------------------------------------
11608 PROCEDURE FIXED_ASSET_unit_adjust
11609 (p_api_version IN NUMBER,
11610 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
11611 x_return_status OUT NOCOPY VARCHAR2,
11612 x_msg_count OUT NOCOPY NUMBER,
11613 x_msg_data OUT NOCOPY VARCHAR2,
11614 p_ast_line_rec IN ast_line_rec_type,
11615 p_txlv_rec IN txlv_rec_type,
11616 p_txdv_rec IN txdv_rec_type,
11617 --Bug# 3156924
11618 p_trx_date IN DATE,
11619 p_trx_number IN NUMBER,
11620 --Bug# 4028371
11621 x_fa_trx_date OUT NOCOPY DATE) IS
11622
11623 l_return_status VARCHAR2(1) DEFAULT OKL_API.G_RET_STS_SUCCESS;
11624 l_api_name CONSTANT VARCHAR2(30) := 'FIXED_ASSET_UNIT_ADJ';
11625 l_api_version CONSTANT NUMBER := 1.0;
11626
11627
11628 l_trans_rec fa_api_types.trans_rec_type;
11629 l_asset_hdr_rec fa_api_types.asset_hdr_rec_type;
11630 l_asset_dist_tbl fa_api_types.asset_dist_tbl_type;
11631
11632 l_calling_interface VARCHAR2(30) := 'OKL:Split Asset';
11633 l_units_to_adjust NUMBER;
11634 i NUMBER;
11635 l_split_factor NUMBER;
11636
11637
11638 --cursor to get the distributions
11639 CURSOR l_dist_curs(p_asset_id IN NUMBER,
11640 p_corporate_book IN VARCHAR2) IS
11641 SELECT units_assigned,
11642 distribution_id
11643 FROM OKX_AST_DST_HST_V
11644 WHERE asset_id = p_ast_line_rec.asset_id
11645 AND book_type_code = p_ast_line_rec.corporate_book
11646 AND transaction_header_id_out IS NULL
11647 AND retirement_id IS NULL;
11648
11649 l_units_assigned NUMBER;
11650 l_distribution_id NUMBER;
11651
11652 BEGIN
11653 x_return_status := OKL_API.G_RET_STS_SUCCESS;
11654 -- Call start_activity to create savepoint, check compatibility
11655 -- and initialize message list
11656 x_return_status := OKL_API.START_ACTIVITY (
11657 l_api_name
11658 ,p_init_msg_list
11659 ,'_PVT'
11660 ,x_return_status);
11661 -- Check if activity started successfully
11662 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11663 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11664 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11665 RAISE OKL_API.G_EXCEPTION_ERROR;
11666 END IF;
11667
11668 l_split_factor := (p_txdv_rec.quantity/p_txlv_rec.current_units);
11669 l_asset_hdr_rec.asset_id := p_ast_line_rec.asset_id;
11670 l_asset_hdr_rec.book_type_code := p_ast_line_rec.corporate_book;
11671
11672 -- transaction date must be filled in if performing
11673 -- prior period transfer
11674 l_trans_rec.transaction_date_entered := NULL;
11675 l_trans_rec.transaction_name := SUBSTR(TO_CHAR(p_trx_number),1,20);
11676 l_trans_rec.calling_interface := l_calling_interface;
11677 l_trans_rec.who_info.last_updated_by := FND_GLOBAL.USER_ID;
11678 l_trans_rec.who_info.last_update_login := FND_GLOBAL.LOGIN_ID;
11679
11680
11681 l_asset_dist_tbl.DELETE;
11682
11683 l_units_to_adjust := p_ast_line_rec.current_units - (p_ast_line_rec.current_units*l_split_factor);
11684
11685 --dbms_output.put_line('Units to adjust outside loop'||l_units_to_adjust );
11686 i := 1;
11687 OPEN l_dist_curs(p_ast_line_rec.asset_id, p_ast_line_rec.corporate_book);
11688 LOOP
11689 FETCH l_dist_curs INTO l_units_assigned, l_distribution_id;
11690 EXIT WHEN l_dist_curs%NOTFOUND;
11691 IF l_units_to_adjust = 0 THEN
11692 EXIT;
11693 ELSIF l_units_to_adjust >= l_units_assigned THEN
11694 l_asset_dist_tbl(i).distribution_id := l_distribution_id;
11695 l_asset_dist_tbl(i).transaction_units := (-1)*l_units_assigned;
11696 --dbms_output.put_line('Units to adjust '||to_char(l_asset_dist_tbl(i).transaction_units));
11697 l_asset_dist_tbl(i).units_assigned := NULL;
11698 l_asset_dist_tbl(i).assigned_to := NULL;
11699 l_asset_dist_tbl(i).expense_ccid := NULL;
11700 l_asset_dist_tbl(i).location_ccid := NULL;
11701 l_units_to_adjust := l_units_to_adjust - l_units_assigned;
11702 i := i + 1;
11703 ELSIF l_units_to_adjust < l_units_assigned THEN
11704 l_asset_dist_tbl(i).distribution_id := l_distribution_id;
11705 l_asset_dist_tbl(i).transaction_units := (-1)*l_units_to_adjust;
11706 --dbms_output.put_line('Units to adjust '||to_char(l_asset_dist_tbl(i).transaction_units));
11707 l_asset_dist_tbl(i).units_assigned := NULL;
11708 l_asset_dist_tbl(i).assigned_to := NULL;
11709 l_asset_dist_tbl(i).expense_ccid := NULL;
11710 l_asset_dist_tbl(i).location_ccid := NULL;
11711 l_units_to_adjust := l_units_to_adjust - l_units_to_adjust;
11712 i := i + 1;
11713 END IF;
11714 END LOOP;
11715 CLOSE l_dist_curs;
11716
11717 FA_UNIT_ADJ_PUB.do_unit_adjustment(
11718 p_api_version => p_api_version,
11719 p_init_msg_list => FND_API.G_FALSE,
11720 p_commit => FND_API.G_FALSE,
11721 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
11722 --bug# 3156924 :
11723 p_calling_fn => l_calling_interface,
11724 --p_calling_fn => NULL,
11725 x_return_status => x_return_status,
11726 x_msg_count => x_msg_count,
11727 x_msg_data => x_msg_data,
11728 px_trans_rec => l_trans_rec,
11729 px_asset_hdr_rec => l_asset_hdr_rec,
11730 px_asset_dist_tbl => l_asset_dist_tbl);
11731
11732 --dbms_output.put_line('After calling FA unit adjust Api '||x_return_status);
11733 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11734 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11735 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11736 RAISE OKL_API.G_EXCEPTION_ERROR;
11737 END IF;
11738 OKL_API.END_ACTIVITY (x_msg_count,
11739 x_msg_data );
11740 EXCEPTION
11741 WHEN OKL_API.G_EXCEPTION_ERROR THEN
11742 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11743 l_api_name,
11744 G_PKG_NAME,
11745 'OKL_API.G_RET_STS_ERROR',
11746 x_msg_count,
11747 x_msg_data,
11748 '_PVT');
11749 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
11750 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11751 l_api_name,
11752 G_PKG_NAME,
11753 'OKL_API.G_RET_STS_UNEXP_ERROR',
11754 x_msg_count,
11755 x_msg_data,
11756 '_PVT');
11757 WHEN OTHERS THEN
11758 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11759 l_api_name,
11760 G_PKG_NAME,
11761 'OTHERS',
11762 x_msg_count,
11763 x_msg_data,
11764 '_PVT');
11765 END FIXED_ASSET_unit_ADJUST;
11766 --Bug# 3156924
11767 --------------------------------------------------------------------------------
11768 --Start of Comments
11769 --Procedure Name : FIXED_ASSET_RETIRE
11770 --Description : Retires the Parent fixed Asset (source asset to split) in FA
11771 --History :
11772 -- 20-Dec-2001 ashish.singh Created
11773 -- 24-Jul-2002 ashish.singh Modified to take care of Full
11774 -- retirement for split asset compoents
11775 --End of Comments
11776 --------------------------------------------------------------------------------
11777 PROCEDURE FIXED_ASSET_RETIRE (p_api_version IN NUMBER,
11778 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
11779 x_return_status OUT NOCOPY VARCHAR2,
11780 x_msg_count OUT NOCOPY NUMBER,
11781 x_msg_data OUT NOCOPY VARCHAR2,
11782 p_ast_line_rec IN ast_line_rec_type,
11783 p_txlv_rec IN txlv_rec_type,
11784 p_txdv_rec IN txdv_rec_type,
11785 --Bug# 3156924
11786 p_trx_date IN DATE,
11787 p_trx_number IN NUMBER,
11788 --Bug# 4028371
11789 x_fa_trx_date OUT NOCOPY date) IS
11790
11791 l_return_status VARCHAR2(1) DEFAULT OKL_API.G_RET_STS_SUCCESS;
11792 l_api_name CONSTANT VARCHAR2(30) := 'FIXED_ASSET_RETIRE';
11793 l_api_version CONSTANT NUMBER := 1.0;
11794
11795 l_user_id NUMBER := 1001; -- USER_ID must properly be set to run calc gain/loss
11796 l_request_id NUMBER;
11797 l_split_factor NUMBER;
11798 l_units_to_retire NUMBER;
11799
11800 /* define local record types */
11801 l_trans_rec FA_API_TYPES.trans_rec_type;
11802 l_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type;
11803 l_asset_retire_rec FA_API_TYPES.asset_retire_rec_type;
11804 l_asset_dist_tbl FA_API_TYPES.asset_dist_tbl_type;
11805 l_subcomp_tbl FA_API_TYPES.subcomp_tbl_type;
11806 l_inv_tbl FA_API_TYPES.inv_tbl_type;
11807 l_dist_trans_rec FA_API_TYPES.trans_rec_type;
11808
11809
11810 l_commit VARCHAR2(1) := FND_API.G_FALSE;
11811 l_validation_level NUMBER := FND_API.G_VALID_LEVEL_FULL;
11812 l_calling_fn VARCHAR2(80) := 'OKL_SPLIT_ASSET_PVT';
11813
11814 i NUMBER := 0;
11815
11816 --cursor to get the distributions
11817 CURSOR l_dist_curs(p_asset_id IN NUMBER,
11818 p_corporate_book IN VARCHAR2) IS
11819 SELECT units_assigned,
11820 distribution_id
11821 FROM OKX_AST_DST_HST_V
11822 WHERE asset_id = p_ast_line_rec.asset_id
11823 AND book_type_code = p_ast_line_rec.corporate_book
11824 AND transaction_header_id_out IS NULL
11825 AND retirement_id IS NULL;
11826
11827 l_units_assigned NUMBER;
11828 l_distribution_id NUMBER;
11829
11830 --cursor to find book class
11831 CURSOR l_book_class_cur(p_book_type_code IN VARCHAR2) IS
11832 SELECT book_class
11833 FROM okx_asst_bk_controls_v
11834 WHERE book_type_code = p_book_type_code;
11835
11836 l_book_class okx_asst_bk_controls_v.book_class%TYPE;
11837
11838 --debug variables
11839 api_error EXCEPTION;
11840 mesg_count NUMBER;
11841 temp_str VARCHAR2(2000);
11842
11843 --Bug# 3156924 : cursor to get retirement prorate convention from defaults
11844 CURSOR l_fcbd_csr (p_book_type_code IN VARCHAR2,
11845 p_category_id IN NUMBER,
11846 p_dpis IN DATE) IS
11847 SELECT retirement_prorate_convention
11848 FROM fa_category_book_defaults
11849 WHERE book_type_code = p_book_type_code
11850 AND category_id = p_category_id
11851 AND p_dpis BETWEEN start_dpis AND NVL(end_dpis,p_dpis);
11852
11853 l_retire_prorate_convention fa_category_book_defaults.retirement_prorate_convention%TYPE;
11854
11855 --Bug# 3156924 :
11856 l_calling_interface CONSTANT VARCHAR2(30) := 'OKLRSPAB:Split Asset';
11857 --Bug# 4028371
11858 l_fa_unit_adj_date date;
11859
11860
11861 BEGIN
11862
11863 x_return_status := OKL_API.G_RET_STS_SUCCESS;
11864 -- Call start_activity to create savepoint, check compatibility
11865 -- and initialize message list
11866 x_return_status := OKL_API.START_ACTIVITY (
11867 l_api_name
11868 ,p_init_msg_list
11869 ,'_PVT'
11870 ,x_return_status);
11871 -- Check if activity started successfully
11872 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11873 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11874 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11875 RAISE OKL_API.G_EXCEPTION_ERROR;
11876 END IF;
11877
11878
11879 --dbms_output.disable;
11880 --dbms_output.enable(1000000);
11881 --dbms_output.put_line('begin');
11882 --fa_srvr_msg.init_server_message;
11883 --fa_debug_pkg.set_debug_flag(debug_flag => 'YES');
11884
11885 -- Get standard who info
11886 l_request_id := fnd_global.conc_request_id;
11887 fnd_profile.get('LOGIN_ID', l_trans_rec.who_info.last_update_login);
11888 fnd_profile.get('USER_ID', l_trans_rec.who_info.last_updated_by);
11889 IF (l_trans_rec.who_info.last_updated_by IS NULL) THEN
11890 l_trans_rec.who_info.last_updated_by := -1;
11891 END IF;
11892 IF (l_trans_rec.who_info.last_update_login IS NULL) THEN
11893 l_trans_rec.who_info.last_update_login := -1;
11894 END IF;
11895
11896 l_trans_rec.who_info.last_update_date := SYSDATE;
11897 l_trans_rec.who_info.creation_date := l_trans_rec.who_info.last_update_date;
11898 l_trans_rec.who_info.created_by := l_trans_rec.who_info.last_updated_by;
11899
11900 l_trans_rec.transaction_type_code := NULL; -- this will be determined inside API
11901 l_trans_rec.transaction_date_entered := NULL; --defaults to dpis
11902 --Bug# 3156924 :
11903 l_trans_rec.calling_interface := l_calling_interface;
11904 l_trans_rec.transaction_name := SUBSTR(TO_CHAR(p_trx_number),1,20);
11905
11906 l_asset_hdr_rec.asset_id := p_ast_line_rec.asset_id;
11907 l_asset_hdr_rec.book_type_code := p_ast_line_rec.corporate_book;
11908 l_asset_hdr_rec.period_of_addition := NULL;
11909
11910 l_split_factor := (p_txdv_rec.quantity/p_txlv_rec.current_units);
11911
11912 --Bug# 3156924 :
11913 OPEN l_fcbd_csr(p_book_type_code => l_asset_hdr_rec.book_type_code,
11914 p_category_id => p_ast_line_rec.depreciation_category,
11915 p_dpis => p_ast_line_rec.in_service_date);
11916
11917 FETCH l_fcbd_csr INTO l_retire_prorate_convention;
11918 IF l_fcbd_csr%NOTFOUND THEN
11919 NULL;
11920 END IF;
11921 CLOSE l_fcbd_csr;
11922
11923 --l_asset_retire_rec.retirement_prorate_convention := 'MID-MONTH';
11924 l_asset_retire_rec.retirement_prorate_convention := l_retire_prorate_convention;
11925 -- what should retirement prorate convntion be
11926 --l_asset_retire_rec.date_retired := NULL; -- will be current period by default
11927 --3156924 :
11928 --l_asset_retire_rec.date_retired := p_trx_date; -- will be current period by default
11929
11930 IF NVL(p_txdv_rec.split_percent,0) <> 0 OR p_txdv_rec.split_percent <> OKL_API.G_MISS_NUM THEN
11931 --fully retire for split asset compoents
11932 l_asset_retire_rec.units_retired := NULL;
11933 l_asset_retire_rec.cost_retired := p_ast_line_rec.cost;
11934 ELSE
11935 --partially retire for normal split asset
11936 --Bug# 3156924 : either units or cost should be retired
11937 --l_asset_retire_rec.units_retired := p_ast_line_rec.current_units -(p_ast_line_rec.current_units*l_split_factor);
11938 --l_asset_retire_rec.cost_retired := 30000;
11939 l_asset_retire_rec.cost_retired := p_ast_line_rec.cost - (p_ast_line_rec.cost*l_split_factor);
11940 END IF;
11941
11942 l_asset_retire_rec.proceeds_of_sale := 0;
11943 l_asset_retire_rec.cost_of_removal := 0;
11944 l_asset_retire_rec.retirement_type_code := FND_PROFILE.VALUE('OKL_SPLIT_ASSET_RETIRE_TYPE');
11945 --l_asset_retire_rec.retirement_type_code := 'SPLIT';
11946 l_asset_retire_rec.trade_in_asset_id := NULL;
11947 --l_asset_retire_rec.calculate_gain_loss := FND_API.G_FALSE;
11948 l_asset_retire_rec.calculate_gain_loss := FND_API.G_TRUE;
11949 --assign this to FND_API.G_TRUE if it is required to calculate the gain loss
11950
11951 fnd_profile.put('USER_ID',l_user_id);
11952
11953 IF NVL(p_txdv_rec.split_percent,0) <> 0 OR p_txdv_rec.split_percent <> OKL_API.G_MISS_NUM THEN
11954 --no need to do distribution level retirements as full retirment being done
11955 -- for split asset components
11956 NULL;
11957 ELSE
11958
11959 --do distribution level unit adjustments
11960 l_book_class := NULL;
11961
11962 OPEN l_book_class_cur(p_book_type_code => p_ast_line_rec.corporate_book);
11963 FETCH l_book_class_cur INTO l_book_class;
11964 IF l_book_class_cur%NOTFOUND THEN
11965 NULL;
11966 END IF;
11967 CLOSE l_book_class_cur;
11968
11969
11970 IF l_book_class = 'CORPORATE' THEN
11971 --Bug# 3156924 : either do cost retire or units retire
11972 FIXED_ASSET_unit_adjust
11973 (p_api_version => p_api_version ,
11974 p_init_msg_list => p_init_msg_list,
11975 x_return_status => x_return_status,
11976 x_msg_count => x_msg_count,
11977 x_msg_data => x_msg_data,
11978 p_ast_line_rec => p_ast_line_rec,
11979 p_txlv_rec => p_txlv_rec,
11980 p_txdv_rec => p_txdv_rec,
11981 --Bug# 3156924
11982 p_trx_date => p_trx_date,
11983 p_trx_number => p_trx_number,
11984 --Bug# 4028371
11985 x_fa_trx_date => l_fa_unit_adj_date);
11986
11987 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11988 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11989 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11990 RAISE OKL_API.G_EXCEPTION_ERROR;
11991 END IF;
11992 --Bug# 3156924
11993 /*---------------commented; either retire cost or units---------------------------------------
11994 --l_asset_dist_tbl.delete;
11995 --how to find which distribution to retire from ??
11996 --l_units_to_retire := p_ast_line_rec.current_units -(p_ast_line_rec.current_units*l_split_factor);
11997 --i := 1;
11998 --open l_dist_curs(p_ast_line_rec.asset_id, p_ast_line_rec.corporate_book);
11999 --Loop
12000 --Fetch l_dist_curs into l_units_assigned, l_distribution_id;
12001 --Exit When l_dist_curs%NOTFOUND;
12002 --If l_units_to_retire = 0 Then
12003 --Exit;
12004 --Elsif l_units_to_retire >= l_units_assigned Then
12005 --l_asset_dist_tbl(i).distribution_id := l_distribution_id;
12006 --l_asset_dist_tbl(i).transaction_units := (-1)*l_units_assigned;
12007 --l_asset_dist_tbl(i).units_assigned := null;
12008 --l_asset_dist_tbl(i).assigned_to := null;
12009 --l_asset_dist_tbl(i).expense_ccid := null;
12010 --l_asset_dist_tbl(i).location_ccid := null;
12011 --l_units_to_retire := l_units_to_retire - l_units_assigned;
12012 --i := i + 1;
12013 --Elsif l_units_to_retire < l_units_assigned Then
12014 --l_asset_dist_tbl(i).distribution_id := l_distribution_id;
12015 --l_asset_dist_tbl(i).transaction_units := (-1)*l_units_to_retire;
12016 --l_asset_dist_tbl(i).units_assigned := null;
12017 --l_asset_dist_tbl(i).assigned_to := null;
12018 --l_asset_dist_tbl(i).expense_ccid := null;
12019 --l_asset_dist_tbl(i).location_ccid := null;
12020 --l_units_to_retire := l_units_to_retire - l_units_to_retire;
12021 --i := i + 1;
12022 --End If;
12023 --End Loop;
12024 --close l_dist_curs;
12025 -------------------------------------------------------------------------------------------------*/
12026 --end of commented code : 3156924
12027 END IF;
12028 --bug# 3156924
12029 END IF;
12030
12031 -- l_asset_dist_tbl(2).distribution_id := 1338;
12032 -- l_asset_dist_tbl(2).transaction_units := -1;
12033 -- l_asset_dist_tbl(2).units_assigned := null;
12034 -- l_asset_dist_tbl(2).assigned_to := null;
12035 -- l_asset_dist_tbl(2).expense_ccid := null;
12036 -- l_asset_dist_tbl(2).location_ccid := null;
12037
12038
12039 FA_RETIREMENT_PUB.do_retirement
12040 (p_api_version => p_api_version
12041 ,p_init_msg_list => p_init_msg_list
12042 ,p_commit => l_commit
12043 ,p_validation_level => l_validation_level
12044 --Bug# 3156924:
12045 --,p_calling_fn => l_calling_fn
12046 ,p_calling_fn => l_calling_interface
12047 ,x_return_status => x_return_status
12048 ,x_msg_count => x_msg_count
12049 ,x_msg_data => x_msg_data
12050 ,px_trans_rec => l_trans_rec
12051 ,px_dist_trans_rec => l_dist_trans_rec
12052 ,px_asset_hdr_rec => l_asset_hdr_rec
12053 ,px_asset_retire_rec => l_asset_retire_rec
12054 ,p_asset_dist_tbl => l_asset_dist_tbl
12055 ,p_subcomp_tbl => l_subcomp_tbl
12056 ,p_inv_tbl => l_inv_tbl
12057 );
12058
12059 /*--------------------FA Debugging Code Commented ------------------------------
12060 if x_return_status = FND_API.G_FALSE then
12061 raise api_error;
12062 end if;
12063
12064 -- Dump Debug messages when run in debug mode to log file
12065 if (fa_debug_pkg.print_debug) then
12066 fa_debug_pkg.Write_Debug_Log;
12067 end if;
12068
12069 fa_srvr_msg.add_message(
12070 calling_fn => l_calling_fn,
12071 name => 'FA_SHARED_END_SUCCESS',
12072 token1 => 'PROGRAM',
12073 value1 => 'RETIREMENT_API');
12074
12075 mesg_count := fnd_msg_pub.count_msg;
12076
12077 if (mesg_count > 0) then
12078 temp_str := fnd_msg_pub.get(fnd_msg_pub.G_FIRST, fnd_api.G_FALSE);
12079 --dbms_output.put_line('dump: ' || temp_str);
12080
12081 for I in 1..(mesg_count -1) loop
12082 temp_str := fnd_msg_pub.get(fnd_msg_pub.G_NEXT, fnd_api.G_FALSE);
12083 --dbms_output.put_line('dump: ' || temp_str);
12084 end loop;
12085 else
12086 --dbms_output.put_line('dump: NO MESSAGE !');
12087 end if;
12088 --------------------FA Debugging Code Commented END------------------------------*/
12089 --dbms_output.put_line('After do retirement :'||x_return_status);
12090
12091 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12092 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12093 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12094 RAISE OKL_API.G_EXCEPTION_ERROR;
12095 END IF;
12096 --Bug# 3156924
12097 --End If;
12098 --x_asset_hdr_rec := l_asset_hdr_rec;
12099 --Bug# 4028371
12100 x_fa_trx_date := l_trans_rec.transaction_date_entered;
12101 OKL_API.END_ACTIVITY (x_msg_count,
12102 x_msg_data );
12103 EXCEPTION
12104 WHEN OKL_API.G_EXCEPTION_ERROR THEN
12105 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
12106 l_api_name,
12107 G_PKG_NAME,
12108 'OKL_API.G_RET_STS_ERROR',
12109 x_msg_count,
12110 x_msg_data,
12111 '_PVT');
12112 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
12113 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
12114 l_api_name,
12115 G_PKG_NAME,
12116 'OKL_API.G_RET_STS_UNEXP_ERROR',
12117 x_msg_count,
12118 x_msg_data,
12119 '_PVT');
12120 /*--------------------FA Debugging Code Commented -------------------------------
12121 when api_error then
12122 ROLLBACK WORK;
12123
12124 fa_srvr_msg.add_message(
12125 calling_fn => l_calling_fn,
12126 name => 'FA_SHARED_PROGRAM_FAILED',
12127 token1 => 'PROGRAM',
12128 value1 => l_calling_fn);
12129
12130 mesg_count := fnd_msg_pub.count_msg;
12131 if (mesg_count > 0) then
12132 temp_str := fnd_msg_pub.get(fnd_msg_pub.G_FIRST, fnd_api.G_FALSE);
12133 --dbms_output.put_line('dump: ' || temp_str);
12134
12135 for I in 1..(mesg_count -1) loop
12136 temp_str := fnd_msg_pub.get(fnd_msg_pub.G_NEXT, fnd_api.G_FALSE);
12137 --dbms_output.put_line('dump: ' || temp_str);
12138 end loop;
12139 else
12140 --dbms_output.put_line('dump: NO MESSAGE !');
12141 end if;
12142 --------------------FA Debugging Code Commented END -----------------------------*/
12143 WHEN OTHERS THEN
12144 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
12145 l_api_name,
12146 G_PKG_NAME,
12147 'OTHERS',
12148 x_msg_count,
12149 x_msg_data,
12150 '_PVT');
12151
12152
12153 END FIXED_ASSET_RETIRE;
12154 --------------------------------------------------------------------------------
12155 --Start of Comments
12156 --Procedure Name : Fixed_Asset_Adjust
12157 --Description : Adjusts the Parent fixed Asset (source asset to split) in FA
12158 --History :
12159 -- 29-Nov-2001 ashish.singh Created
12160 -- 25-JUL-2002 ashish.singh Enhancement for Fixed Asset componet
12161 -- split
12162 -- Bug# 6373605 -R12.B SAL CRs
12163 -- New IN parameters as descriped earlier in
12164 -- FIXED_ASSET_ADD
12165 --End of Comments
12166 --------------------------------------------------------------------------------
12167 PROCEDURE FIXED_ASSET_ADJUST(p_api_version IN NUMBER,
12168 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
12169 x_return_status OUT NOCOPY VARCHAR2,
12170 x_msg_count OUT NOCOPY NUMBER,
12171 x_msg_data OUT NOCOPY VARCHAR2,
12172 p_ast_line_rec IN ast_line_rec_type,
12173 p_txlv_rec IN txlv_rec_type,
12174 p_txdv_rec IN txdv_rec_type,
12175 --Bug# 3156924
12176 p_trx_date IN DATE,
12177 p_trx_number IN NUMBER,
12178 --Bug# 6373605--SLA populate source
12179 p_sla_source_header_id IN Number,
12180 p_sla_source_header_table IN Varchar2,
12181 p_sla_source_try_id IN Number,
12182 p_sla_source_line_id IN Number,
12183 p_sla_source_line_table IN Varchar2,
12184 p_sla_source_chr_id IN Number,
12185 p_sla_source_kle_id IN Number,
12186 --Bug# 6373605--SLA populate source
12187 --Bug# 4028371
12188 x_fa_trx_date OUT NOCOPY DATE) IS
12189
12190 l_return_status VARCHAR2(1) DEFAULT OKL_API.G_RET_STS_SUCCESS;
12191 l_api_name CONSTANT VARCHAR2(30) := 'FIXED_ASSET_ADJUST';
12192 l_api_version CONSTANT NUMBER := 1.0;
12193
12194 l_trans_rec FA_API_TYPES.trans_rec_type;
12195 l_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type;
12196 l_asset_fin_rec_adj FA_API_TYPES.asset_fin_rec_type;
12197 l_asset_fin_rec_new FA_API_TYPES.asset_fin_rec_type;
12198 l_asset_fin_mrc_tbl_new FA_API_TYPES.asset_fin_tbl_type;
12199 --l_asset_fin_glob_dff_rec FA_API_TYPES.asset_fin_glob_dff_rec_type;
12200 l_inv_trans_rec FA_API_TYPES.inv_trans_rec_type;
12201 l_inv_tbl FA_API_TYPES.inv_tbl_type;
12202 l_asset_deprn_rec_adj FA_API_TYPES.asset_deprn_rec_type;
12203 l_asset_deprn_rec_new FA_API_TYPES.asset_deprn_rec_type;
12204 l_asset_deprn_mrc_tbl_new FA_API_TYPES.asset_deprn_tbl_type;
12205 l_inv_rec FA_API_TYPES.inv_rec_type;
12206 l_asset_deprn_rec FA_API_TYPES.asset_deprn_rec_type;
12207 l_group_recalss_option_rec FA_API_TYPES.group_reclass_options_rec_type;
12208
12209 --parameters for unit adjustment
12210 l_asset_dist_tbl FA_API_TYPES.asset_dist_tbl_type;
12211 l_trans_rec_ua FA_API_TYPES.trans_rec_type;
12212 l_asset_hdr_rec_ua FA_API_TYPES.asset_hdr_rec_type;
12213
12214
12215 l_split_factor NUMBER;
12216 l_units_to_adjust NUMBER;
12217 i NUMBER;
12218
12219 --cursor to get the distributions
12220 CURSOR l_dist_curs(p_asset_id IN NUMBER,
12221 p_corporate_book IN VARCHAR2) IS
12222 SELECT units_assigned,
12223 distribution_id
12224 FROM OKX_AST_DST_HST_V
12225 WHERE asset_id = p_ast_line_rec.asset_id
12226 AND book_type_code = p_ast_line_rec.corporate_book
12227 AND transaction_header_id_out IS NULL
12228 AND retirement_id IS NULL;
12229
12230 l_units_assigned NUMBER;
12231 l_distribution_id NUMBER;
12232
12233 --cursor to find book class
12234 CURSOR l_book_class_cur(p_book_type_code IN VARCHAR2) IS
12235 SELECT book_class
12236 FROM okx_asst_bk_controls_v
12237 WHERE book_type_code = p_book_type_code;
12238
12239 l_book_class okx_asst_bk_controls_v.book_class%TYPE;
12240
12241 --cursor to get depreciation info
12242
12243 CURSOR deprn_cur (p_asset_id IN NUMBER,
12244 p_book_type_code IN VARCHAR2,
12245 p_split_factor IN NUMBER) IS
12246 -- gk removed below 2 params for bug 5946411
12247 SELECT -- -1 * (ytd_deprn -(ytd_deprn*p_split_factor)),
12248 -- -1 * (deprn_reserve -(deprn_reserve*p_split_factor)),
12249 -1 * (prior_fy_expense-(prior_fy_expense*p_split_factor)),
12250 -1 * (bonus_ytd_deprn-(bonus_ytd_deprn*p_split_factor)),
12251 -1 * (bonus_deprn_reserve-(bonus_deprn_reserve*p_split_factor))
12252 FROM okx_ast_dprtns_v
12253 WHERE asset_id = p_asset_id
12254 AND book_type_code = p_book_type_code
12255 AND deprn_run_date = (SELECT MAX(deprn_run_date)
12256 FROM okx_ast_dprtns_v
12257 WHERE asset_id = p_asset_id
12258 AND book_type_code = p_book_type_code);
12259
12260
12261
12262 CURSOR deprn_cur2 (p_asset_id IN NUMBER,
12263 p_book_type_code IN VARCHAR2) IS
12264 -- gk removed below 2 params for bug 5946411
12265 SELECT -- -1 * ytd_deprn,
12266 -- -1 * deprn_reserve,
12267 -1 * prior_fy_expense,
12268 -1 * bonus_ytd_deprn,
12269 -1 * bonus_deprn_reserve
12270 FROM okx_ast_dprtns_v
12271 WHERE asset_id = p_asset_id
12272 AND book_type_code = p_book_type_code
12273 AND deprn_run_date = (SELECT MAX(deprn_run_date)
12274 FROM okx_ast_dprtns_v
12275 WHERE asset_id = p_asset_id
12276 AND book_type_code = p_book_type_code);
12277
12278 --Bug# 4028371 :
12279 l_calling_interface CONSTANT VARCHAR2(30) := 'OKLRSPAB:Split Asset';
12280
12281 --Bug# 6373605 begin
12282 l_fxhv_rec okl_sla_acc_sources_pvt.fxhv_rec_type;
12283 l_fxlv_rec okl_sla_acc_sources_pvt.fxlv_rec_type;
12284 --Bug# 6373605 end
12285
12286 -- Bug# 5946411: ER
12287 --cursor to check the status of asset
12288 /* CURSOR l_cleb_sts_csr(pcleid IN NUMBER) IS
12289 SELECT cleb.sts_code sts_code,cleb.dnz_chr_id chr_id
12290 FROM okc_k_lines_b cleb
12291 WHERE cleb.id = pcleid;
12292 l_cle_status okc_k_lines_b.sts_code%TYPE; */
12293 -- Bug# 6061103
12294 CURSOR l_cleb_sts_csr(pcleid IN NUMBER) IS
12295 SELECT cleb.sts_code sts_code,
12296 cleb.dnz_chr_id chr_id,
12297 khr.PDT_ID,
12298 chr.START_DATE
12299 FROM okc_k_lines_b cleb,
12300 okl_k_headers khr,
12301 OKC_K_HEADERS_B chr
12302 WHERE cleb.id = pcleid
12303 and khr.id = cleb.dnz_chr_id
12304 and chr.id = khr.id;
12305 l_cle_status okc_k_lines_b.sts_code%TYPE;
12306
12307 --cursor to get the amortization date
12308 cursor l_max_amortize_date_csr (p_asset_id IN NUMBER,p_book_type_code IN VARCHAR2) is
12309 select max(th.amortization_start_date) amortization_start_date
12310 from fa_transaction_headers th,
12311 fa_books inbk,
12312 fa_books outbk
12313 where inbk.asset_id = p_asset_id
12314 and inbk.book_type_code = p_book_type_code
12315 and outbk.asset_id(+) = p_asset_id
12316 and outbk.book_type_code(+) = p_book_type_code
12317 and inbk.transaction_header_id_in = th.transaction_header_id
12318 and outbk.transaction_header_id_out(+) = th.transaction_header_id
12319 and th.asset_id = p_asset_id
12320 and th.book_type_code = p_book_type_code
12321 and th.transaction_type_code not in ('TRANSFER OUT', 'TRANSFER IN',
12322 'TRANSFER', 'TRANSFER IN/VOID',
12323 'RECLASS', 'UNIT ADJUSTMENT',
12324 'REINSTATEMENT');
12325 l_amortization_start_date DATE:=NULL;
12326 -- Bug# 5946411: ER End
12327
12328 -- Bug# 6061103
12329 l_amortization_date DATE;
12330 l_special_treatment_required VARCHAR2(1);
12331 l_pdt_id Number;
12332 l_start_date Date;
12333 l_chr_id number;
12334 -- Bug# 6061103 end
12335
12336 --Bug# 5946411: avsingh - parameters for getting depreciation reserve
12337 l_fa_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type;
12338 l_fa_asset_deprn_rec FA_API_TYPES.asset_deprn_rec_type;
12339 BEGIN
12340 x_return_status := OKL_API.G_RET_STS_SUCCESS;
12341 --call start activity to set savepoint
12342 x_return_status := OKL_API.START_ACTIVITY( SUBSTR(l_api_name,1,26),
12343 p_init_msg_list,
12344 '_PVT',
12345 x_return_status);
12346 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12347 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12348 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12349 RAISE OKL_API.G_EXCEPTION_ERROR;
12350 END IF;
12351
12352 --------------------
12353 -- asset header info
12354 -------------------
12355 l_asset_hdr_rec.asset_id := p_ast_line_rec.asset_id;
12356 l_asset_hdr_rec.book_type_code := p_ast_line_rec.corporate_book;
12357
12358 ----------------
12359 -- trans struct
12360 ----------------
12361 -- from the dld :
12362 -- You must populate the transaction type code as. This applies to any asset
12363 -- type. The transaction subtype will default to 'EXPENSED' so u should popul
12364 -- ate the transaction subtype with 'AMORTIZED' if you wish to instead
12365 -- amortize the adjustment. If transaction subtype is AMORTIZED, you must also
12366 -- provide the amortization start date
12367
12368 --Bug# 3156924 :
12369 --l_trans_rec.transaction_type_code := 'ADJUSTMENT'; --will be derived as per DOC
12370 --l_trans_rec.transaction_subtype := 'AMORTIZED';
12371 --by default will be 'EXPENSED'
12372 --l_trans_rec.amortization_start_date := to_date('01-JAN-1995','DD-MON-YYYY');
12373
12374 --Bug# 3156924 :
12375 --l_trans_rec.amortization_start_date := p_trx_date; --required only if amortize
12376 --l_trans_rec.transaction_date_entered := p_trx_date; --will be derived as per DOC
12377 --l_trans_rec.amortization_start_date := p_ast_line_rec.in_service_date;
12378
12379
12380 --Bug# 3783518: Cost adjustment on Split to be Amortized
12381 l_trans_rec.transaction_subtype := 'AMORTIZED';
12382
12383 --Bug# 5946411: ER
12384 -- l_trans_rec.amortization_start_date := p_ast_line_rec.in_service_date;
12385 --dbms_output.put_line('l_trans_rec.amortization_start_date '||l_trans_rec.amortization_start_date);
12386 l_amortization_start_date:=NULL;
12387 -- get the status of the parent line id
12388 OPEN l_cleb_sts_csr( p_txlv_rec.kle_id);
12389 FETCH l_cleb_sts_csr INTO l_cle_status, l_chr_id, l_pdt_id, l_start_date ;
12390 close l_cleb_sts_csr;
12391 -- Bug# 6061103 start
12392 is_evergreen_df_lease
12393 (p_api_version => p_api_version,
12394 p_init_msg_list => p_init_msg_list,
12395 x_return_status => x_return_status,
12396 x_msg_count => x_msg_count,
12397 x_msg_data => x_msg_data,
12398 p_cle_id =>p_ast_line_rec.PARENT_LINE_ID, -- p_ast_line_rec.asset_id,
12399 p_book_type_code => p_ast_line_rec.corporate_book,
12400 p_asset_status => l_cle_status,
12401 p_pdt_id => l_pdt_id,
12402 p_start_date => l_start_date,
12403 x_amortization_date => l_amortization_date,
12404 x_special_treatment_required => l_special_treatment_required);
12405 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12406 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12407 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12408 RAISE OKL_API.G_EXCEPTION_ERROR;
12409 END IF;
12410 if l_special_treatment_required = 'Y' then
12411 l_trans_rec.amortization_start_date := l_amortization_date;
12412 --rirawat : Handle scenario for asset with no off lease transaction
12413 IF l_amortization_date IS NULL THEN
12414 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
12415 p_msg_name => 'OKL_LA_SPLIT_NOT_ALLOWED'
12416 );
12417 RAISE OKL_API.G_EXCEPTION_ERROR;
12418 END IF;
12419 else
12420 -- Bug# 6061103 end
12421 --dbms_output.put_line('Status set as l_cle_status'||l_cle_status);
12422 /* IF l_cle_status IN ('TERMINATED','EXPIRED') THEN
12423 --To prevent following FA error FA_INVALID_AMOUNT_ADJUSTMENT:
12424 -- 'The amounts you entered cause the results of the adjustment to be
12425 -- invalid for the amortization date you entered.'
12426 -- do the adjustement on the last amortization date
12427 open l_max_amortize_date_csr(p_ast_line_rec.asset_id,p_ast_line_rec.corporate_book);
12428 fetch l_max_amortize_date_csr into l_amortization_start_date;
12429 close l_max_amortize_date_csr;
12430 ELSE
12431 l_trans_rec.amortization_start_date := p_ast_line_rec.in_service_date;
12432 END IF;
12433 if l_amortization_start_date IS NOT NULL THEN
12434 l_trans_rec.amortization_start_date := l_amortization_start_date;
12435 ELSE */
12436 l_trans_rec.amortization_start_date := p_ast_line_rec.in_service_date;
12437 -- END IF;
12438 end if; -- 6061103 end if;
12439 --Bug# 5946411: ER End
12440
12441 --Bug# 3156924 :
12442 l_trans_rec.transaction_name := SUBSTR(TO_CHAR(p_trx_number),1,20); --optional
12443 l_trans_rec.calling_interface := l_calling_interface; --optional
12444
12445 IF NVL(p_txdv_rec.split_percent,0) <> 0 OR p_txdv_rec.split_percent <> OKL_API.G_MISS_NUM THEN
12446 l_split_factor := (p_txdv_rec.split_percent/100);
12447 ELSE
12448 l_split_factor := (p_txdv_rec.quantity/p_txlv_rec.current_units);
12449 END IF;
12450
12451 -----------
12452 -- fin info
12453 -----------
12454 l_asset_fin_rec_adj.set_of_books_id := p_ast_line_rec.set_of_books_id;
12455 --should take the true snapshot at this point in time and not from split trx
12456 --this is just for testing
12457 --l_asset_fin_rec_adj.cost := p_txdv_rec.cost;
12458 --l_asset_fin_rec_adj.salvage_value := p_ast_line_rec.salvage_value*l_split_factor;
12459 --
12460 --------------------
12461 --Bug #2723498 11.5.9 enhancement fix :
12462 -- For Direct Finance Lease Asset cost for original asset will be zero
12463 -- Calling adjustment API for already zero cost gives error msg. this if clause
12464 -- to avoid that
12465 --This is fixed in branch by bug#2598894
12466 --------------------
12467 IF p_ast_line_rec.cost = 0 THEN
12468 --do not call adjustments for DFL contracts
12469 NULL;
12470 ELSE
12471 IF NVL(p_txdv_rec.split_percent,0) <> 0 OR p_txdv_rec.split_percent <> OKL_API.G_MISS_NUM THEN
12472 l_asset_fin_rec_adj.cost := - p_ast_line_rec.cost;
12473 --Bug# 3950089
12474 If (p_ast_line_rec.percent_salvage_value is not null) Then
12475 l_asset_fin_rec_adj.percent_salvage_value := - p_ast_line_rec.percent_salvage_value;
12476 Else
12477 l_asset_fin_rec_adj.salvage_value := - p_ast_line_rec.salvage_value;
12478 End If;
12479 ELSE
12480 l_asset_fin_rec_adj.cost := (p_ast_line_rec.cost*l_split_factor) - p_ast_line_rec.cost;
12481 --Bug# 3950089
12482 If (p_ast_line_rec.percent_salvage_value is not null) Then
12483 l_asset_fin_rec_adj.percent_salvage_value := 0;
12484 Else
12485 l_asset_fin_rec_adj.salvage_value := (p_ast_line_rec.salvage_value*l_split_factor) - p_ast_line_rec.salvage_value;
12486 End If;
12487 END IF;
12488 --
12489
12490 --asset_deprn_rec
12491 l_asset_deprn_rec_adj.set_of_books_id := p_ast_line_rec.set_of_books_id;
12492
12493 ---------------------------------------------------------------------------------------------
12494 --Bug# 5946411 : avsingh
12495 -- If adjustment being done in period of addition depreciation reserve needs to be backed out
12496 ---------------------------------------------------------------------------------------------
12497 --1. Check if adjustment is being made in the period of addition of the asset
12498 ---------------------------------------------------------------------------------------------
12499 l_fa_asset_hdr_rec.asset_id := p_ast_line_rec.asset_id;
12500 l_fa_asset_hdr_rec.book_type_code := p_ast_line_rec.corporate_book;
12501
12502 If NOT fa_cache_pkg.fazcbc(x_book => l_fa_asset_hdr_rec.book_type_code) then
12503 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
12504 p_msg_name => 'OKL_LLA_FA_CACHE_ERROR'
12505 );
12506 Raise OKL_API.G_EXCEPTION_ERROR;
12507 end if;
12508
12509 --Bug# 6804043: In R12 codeline, do not back out depreciation reserve
12510 -- when cost adjustment is done in period of addition
12511 /*
12512 If not FA_ASSET_VAL_PVT.validate_period_of_addition
12513 (p_asset_id => l_fa_asset_hdr_rec.asset_id,
12514 p_book => l_fa_asset_hdr_rec.book_type_code,
12515 p_mode => 'ABSOLUTE',
12516 px_period_of_addition => l_fa_asset_hdr_rec.period_of_addition
12517 ) then
12518 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
12519 p_msg_name => 'OKL_LLA_FA_POA_ERROR'
12520 );
12521 Raise OKL_API.G_EXCEPTION_ERROR;
12522 end if;
12523
12524
12525 If nvl(l_fa_asset_hdr_rec.period_of_addition,'N') = 'Y' Then
12526 --------------------------------------
12527 --2. Get the depreciation reserve
12528 --------------------------------------
12529 get_deprn_reserve
12530 (p_api_version => p_api_version,
12531 p_init_msg_list => p_init_msg_list,
12532 x_return_status => x_return_status,
12533 x_msg_count => x_msg_count,
12534 x_msg_data => x_msg_data,
12535 p_asset_id => p_ast_line_rec.asset_id,
12536 p_book_type_code => p_ast_line_rec.corporate_book,
12537 x_asset_deprn_rec => l_fa_asset_deprn_rec);
12538
12539 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12540 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12541 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12542 RAISE OKL_API.G_EXCEPTION_ERROR;
12543 END IF;
12544
12545 If l_fa_asset_deprn_rec.deprn_reserve > 0 then
12546 l_asset_deprn_rec_adj.deprn_reserve := (-1) * l_fa_asset_deprn_rec.deprn_reserve;
12547 End If;
12548 If l_fa_asset_deprn_rec.ytd_deprn > 0 then
12549 l_asset_deprn_rec_adj.ytd_deprn := (-1) * l_fa_asset_deprn_rec.ytd_deprn;
12550 End If;
12551 If l_fa_asset_deprn_rec.prior_fy_expense > 0 then
12552 l_asset_deprn_rec_adj.prior_fy_expense := (-1) * l_fa_asset_deprn_rec.prior_fy_expense;
12553 End If;
12554 If l_fa_asset_deprn_rec.bonus_ytd_deprn > 0 then
12555 l_asset_deprn_rec_adj.bonus_ytd_deprn := (-1) * l_fa_asset_deprn_rec.bonus_ytd_deprn;
12556 End If;
12557 If l_fa_asset_deprn_rec.bonus_deprn_reserve > 0 then
12558 l_asset_deprn_rec_adj.bonus_deprn_reserve := (-1) * l_fa_asset_deprn_rec.bonus_deprn_reserve;
12559 End If;
12560
12561 End If;
12562 --End Bug# 5946411
12563 */
12564 --End Bug# 6804043
12565
12566 /***** Commented as part of Bug # 5946411****************************************************/
12567 /*--avsingh : commented - As per FA no depreciation should be passed during Adjustments if it
12568 -- adjustment is not period of addition
12569 IF (p_ast_line_rec.cost + l_asset_fin_rec_adj.cost) = 0 THEN
12570 --dbms_output.put_line('opening deprn_cur2');
12571 OPEN deprn_cur2 (p_asset_id => p_ast_line_rec.asset_id,
12572 p_book_type_code => p_ast_line_rec.corporate_book);
12573 -- gk removed below 2 params for bug 5946411
12574 FETCH deprn_cur2 INTO --l_asset_deprn_rec_adj.ytd_deprn,
12575 --l_asset_deprn_rec_adj.deprn_reserve,
12576 l_asset_deprn_rec_adj.prior_fy_expense,
12577 l_asset_deprn_rec_adj.bonus_ytd_deprn,
12578 l_asset_deprn_rec_adj.bonus_deprn_reserve;
12579 IF deprn_cur2%NOTFOUND THEN
12580 NULL;
12581 END IF;
12582 CLOSE deprn_cur2;
12583 ELSE
12584 --dbms_output.put_line('opening deprn_cur');
12585 OPEN deprn_cur (p_asset_id => p_ast_line_rec.asset_id,
12586 p_book_type_code => p_ast_line_rec.corporate_book,
12587 p_split_factor => l_split_factor);
12588 -- gk removed below 2 params for bug 5946411
12589 FETCH deprn_cur INTO --l_asset_deprn_rec_adj.ytd_deprn,
12590 --l_asset_deprn_rec_adj.deprn_reserve,
12591 l_asset_deprn_rec_adj.prior_fy_expense,
12592 l_asset_deprn_rec_adj.bonus_ytd_deprn,
12593 l_asset_deprn_rec_adj.bonus_deprn_reserve;
12594 IF deprn_cur%NOTFOUND THEN
12595 NULL;
12596 END IF;
12597 CLOSE deprn_cur;
12598 END IF;
12599 ---------------End of Commented Code for Bug# 5946411-----------------------------------------------------*/
12600
12601 --dbms_output.put_line('Deprn reserve '||to_char(l_asset_deprn_rec_adj.deprn_reserve));
12602 FA_ADJUSTMENT_PUB.do_adjustment
12603 (p_api_version => p_api_version,
12604 p_init_msg_list => p_init_msg_list,
12605 p_commit => OKL_API.G_FALSE,
12606 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
12607 x_return_status => x_return_status,
12608 x_msg_count => x_msg_count,
12609 x_msg_data => x_msg_data,
12610 --Bug# 3156924
12611 --p_calling_fn => null,
12612 p_calling_fn => l_calling_interface,
12613 px_trans_rec => l_trans_rec,
12614 px_asset_hdr_rec => l_asset_hdr_rec,
12615 p_asset_fin_rec_adj => l_asset_fin_rec_adj,
12616 x_asset_fin_rec_new => l_asset_fin_rec_new,
12617 x_asset_fin_mrc_tbl_new => l_asset_fin_mrc_tbl_new,
12618 px_inv_trans_rec => l_inv_trans_rec,
12619 px_inv_tbl => l_inv_tbl,
12620 p_asset_deprn_rec_adj => l_asset_deprn_rec_adj,
12621 x_asset_deprn_rec_new => l_asset_deprn_rec_new,
12622 x_asset_deprn_mrc_tbl_new => l_asset_deprn_mrc_tbl_new,
12623 p_group_reclass_options_rec => l_group_recalss_option_rec
12624 );
12625 --dbms_output.put_line('After calling FA adjustment Api '||x_return_status);
12626 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12627 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12628 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12629 RAISE OKL_API.G_EXCEPTION_ERROR;
12630 END IF;
12631
12632 --Bug# 4028371 :
12633 x_fa_trx_date := l_trans_rec.transaction_date_entered;
12634
12635 --bug# 6373605 -- call populate sla sources
12636 l_fxhv_rec.source_id := p_sla_source_header_id;
12637 l_fxhv_rec.source_table := p_sla_source_header_table;
12638 l_fxhv_rec.khr_id := p_sla_source_chr_id;
12639 l_fxhv_rec.try_id := p_sla_source_try_id;
12640
12641 l_fxlv_rec.source_id := p_sla_source_line_id;
12642 l_fxlv_rec.source_table := p_sla_source_line_table;
12643 l_fxlv_rec.kle_id := p_sla_source_kle_id;
12644
12645 l_fxlv_rec.asset_id := l_asset_hdr_rec.asset_id;
12646 l_fxlv_rec.fa_transaction_id := l_trans_rec.transaction_header_id;
12647 l_fxlv_rec.asset_book_type_name := l_asset_hdr_rec.book_type_code;
12648
12649 OKL_SLA_ACC_SOURCES_PVT.populate_sources(
12650 p_api_version => p_api_version
12651 ,p_init_msg_list => p_init_msg_list
12652 ,p_fxhv_rec => l_fxhv_rec
12653 ,p_fxlv_rec => l_fxlv_rec
12654 ,x_return_status => x_return_status
12655 ,x_msg_count => x_msg_count
12656 ,x_msg_data => x_msg_data
12657 );
12658 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12659 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12660 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12661 RAISE OKL_API.G_EXCEPTION_ERROR;
12662 END IF;
12663 --bug# 6373605 -- call populate SLA sources
12664
12665 END IF;
12666
12667 l_book_class := NULL;
12668 OPEN l_book_class_cur(p_book_type_code => p_ast_line_rec.corporate_book);
12669 FETCH l_book_class_cur INTO l_book_class;
12670 IF l_book_class_cur%NOTFOUND THEN
12671 NULL;
12672 END IF;
12673 CLOSE l_book_class_cur;
12674
12675 IF l_book_class = 'CORPORATE' THEN
12676 --dbms_output.put_line('In adjust split units book type code '|| p_ast_line_rec.corporate_book);
12677 --now do the unit adjustments
12678 l_asset_hdr_rec_ua.asset_id := p_ast_line_rec.asset_id;
12679 l_asset_hdr_rec_ua.book_type_code := p_ast_line_rec.corporate_book;
12680
12681 --l_trans_rec_ua.transaction_type_code := NULL;
12682 --l_trans_rec_ua.transaction_subtype := NULL;
12683 --l_trans_rec_ua.amortization_start_date := to_date('01-JAN-1995','DD-MON-YYYY');
12684 --l_trans_rec_ua.amortization_start_date := NULL;
12685 --l_trans_rec_ua.transaction_date_entered := p_ast_line_rec.in_service_date;
12686 --Bug# 3156924 :
12687 --l_trans_rec_ua.transaction_date_entered := null;
12688 --l_trans_rec_ua.transaction_date_entered := p_trx_date;
12689 -- Bug# 6061103 -- start
12690 l_trans_rec_ua.amortization_start_date := p_ast_line_rec.in_service_date;
12691 -- Bug# 6061103 -- end
12692 l_trans_rec_ua.transaction_name := SUBSTR(TO_CHAR(p_trx_number),1,20);
12693 l_trans_rec_ua.calling_interface := l_calling_interface;
12694
12695 l_trans_rec_ua.who_info.last_updated_by := FND_GLOBAL.USER_ID;
12696 l_trans_rec_ua.who_info.last_update_login := FND_GLOBAL.LOGIN_ID;
12697
12698
12699 --how to find which distribution to adjust from ??
12700 l_asset_dist_tbl.DELETE;
12701 --dbms_output.put_line('split factor '||to_char(l_split_factor));
12702 --dbms_output.put_line('current units '||to_char(p_ast_line_rec.current_units));
12703
12704 IF NVL(p_txdv_rec.split_percent,0) <> 0 OR p_txdv_rec.split_percent <> OKL_API.G_MISS_NUM THEN
12705 --l_units_to_adjust := p_ast_line_rec.current_units;
12706 NULL;
12707 ELSE
12708 l_units_to_adjust := p_ast_line_rec.current_units - (p_ast_line_rec.current_units*l_split_factor);
12709 --End If;
12710
12711 --dbms_output.put_line('Units to adjust outside loop'||l_units_to_adjust );
12712 i := 1;
12713 OPEN l_dist_curs(p_ast_line_rec.asset_id, p_ast_line_rec.corporate_book);
12714 LOOP
12715 FETCH l_dist_curs INTO l_units_assigned, l_distribution_id;
12716 EXIT WHEN l_dist_curs%NOTFOUND;
12717 IF l_units_to_adjust = 0 THEN
12718 EXIT;
12719 ELSIF l_units_to_adjust >= l_units_assigned THEN
12720 l_asset_dist_tbl(i).distribution_id := l_distribution_id;
12721 l_asset_dist_tbl(i).transaction_units := (-1)*l_units_assigned;
12722 --dbms_output.put_line('Units to adjust '||to_char(l_asset_dist_tbl(i).transaction_units));
12723 l_asset_dist_tbl(i).units_assigned := NULL;
12724 l_asset_dist_tbl(i).assigned_to := NULL;
12725 l_asset_dist_tbl(i).expense_ccid := NULL;
12726 l_asset_dist_tbl(i).location_ccid := NULL;
12727 l_units_to_adjust := l_units_to_adjust - l_units_assigned;
12728 i := i + 1;
12729 ELSIF l_units_to_adjust < l_units_assigned THEN
12730 l_asset_dist_tbl(i).distribution_id := l_distribution_id;
12731 l_asset_dist_tbl(i).transaction_units := (-1)*l_units_to_adjust;
12732 --dbms_output.put_line('Units to adjust '||to_char(l_asset_dist_tbl(i).transaction_units));
12733 l_asset_dist_tbl(i).units_assigned := NULL;
12734 l_asset_dist_tbl(i).assigned_to := NULL;
12735 l_asset_dist_tbl(i).expense_ccid := NULL;
12736 l_asset_dist_tbl(i).location_ccid := NULL;
12737 l_units_to_adjust := l_units_to_adjust - l_units_to_adjust;
12738 i := i + 1;
12739 END IF;
12740 END LOOP;
12741 CLOSE l_dist_curs;
12742
12743 FA_UNIT_ADJ_PUB.do_unit_adjustment(
12744 p_api_version => p_api_version,
12745 p_init_msg_list => FND_API.G_FALSE,
12746 p_commit => FND_API.G_FALSE,
12747 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
12748 --bug# 3156924 :
12749 p_calling_fn => l_calling_interface,
12750 --p_calling_fn => NULL,
12751 x_return_status => x_return_status,
12752 x_msg_count => x_msg_count,
12753 x_msg_data => x_msg_data,
12754 px_trans_rec => l_trans_rec_ua,
12755 px_asset_hdr_rec => l_asset_hdr_rec_ua,
12756 px_asset_dist_tbl => l_asset_dist_tbl);
12757
12758 --dbms_output.put_line('After calling FA unit adjust Api '||x_return_status);
12759 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12760 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12761 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12762 RAISE OKL_API.G_EXCEPTION_ERROR;
12763 END IF;
12764
12765 --bug# 6373605 -- call populate sla sources
12766 l_fxhv_rec.source_id := p_sla_source_header_id;
12767 l_fxhv_rec.source_table := p_sla_source_header_table;
12768 l_fxhv_rec.khr_id := p_sla_source_chr_id;
12769 l_fxhv_rec.try_id := p_sla_source_try_id;
12770
12771 l_fxlv_rec.source_id := p_sla_source_line_id;
12772 l_fxlv_rec.source_table := p_sla_source_line_table;
12773 l_fxlv_rec.kle_id := p_sla_source_kle_id;
12774
12775 l_fxlv_rec.asset_id := l_asset_hdr_rec_ua.asset_id;
12776 l_fxlv_rec.fa_transaction_id := l_trans_rec_ua.transaction_header_id;
12777 l_fxlv_rec.asset_book_type_name := l_asset_hdr_rec_ua.book_type_code;
12778
12779 OKL_SLA_ACC_SOURCES_PVT.populate_sources(
12780 p_api_version => p_api_version
12781 ,p_init_msg_list => p_init_msg_list
12782 ,p_fxhv_rec => l_fxhv_rec
12783 ,p_fxlv_rec => l_fxlv_rec
12784 ,x_return_status => x_return_status
12785 ,x_msg_count => x_msg_count
12786 ,x_msg_data => x_msg_data
12787 );
12788
12789 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12790 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12791 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12792 RAISE OKL_API.G_EXCEPTION_ERROR;
12793 END IF;
12794 --bug# 6373605 -- call populate SLA sources
12795
12796 END IF;
12797 END IF;
12798 OKL_API.END_ACTIVITY (x_msg_count,
12799 x_msg_data );
12800 EXCEPTION
12801 WHEN OKL_API.G_EXCEPTION_ERROR THEN
12802 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
12803 l_api_name,
12804 G_PKG_NAME,
12805 'OKL_API.G_RET_STS_ERROR',
12806 x_msg_count,
12807 x_msg_data,
12808 '_PVT');
12809 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
12810 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
12811 l_api_name,
12812 G_PKG_NAME,
12813 'OKL_API.G_RET_STS_UNEXP_ERROR',
12814 x_msg_count,
12815 x_msg_data,
12816 '_PVT');
12817 WHEN OTHERS THEN
12818 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
12819 l_api_name,
12820 G_PKG_NAME,
12821 'OTHERS',
12822 x_msg_count,
12823 x_msg_data,
12824 '_PVT');
12825 END FIXED_ASSET_ADJUST;
12826 ------------------------------------------------------------------------------
12827 --Start of comments
12828 --
12829 --Procedure Name : get_trx_rec
12830 --Purpose : Gets source transaction record for IB interface
12831 --Modification History :
12832 --15-Jun-2001 ashish.singh Created
12833 --Notes : Assigns values to transaction_type_id and source_line_ref_id
12834 --End of Comments
12835 ------------------------------------------------------------------------------
12836 PROCEDURE get_trx_rec
12837 (p_api_version IN NUMBER,
12838 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
12839 x_return_status OUT NOCOPY VARCHAR2,
12840 x_msg_count OUT NOCOPY NUMBER,
12841 x_msg_data OUT NOCOPY VARCHAR2,
12842 p_cle_id IN NUMBER,
12843 p_transaction_type IN VARCHAR2,
12844 x_trx_rec OUT NOCOPY CSI_DATASTRUCTURES_PUB.transaction_rec) IS
12845
12846 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
12847 l_api_name CONSTANT VARCHAR2(30) := 'GET_TRX_REC';
12848 l_api_version CONSTANT NUMBER := 1.0;
12849
12850 --Following cursor assumes that a transaction type called
12851 --'OKL_BOOK' will be seeded in IB
12852 CURSOR okl_trx_type_csr(p_transaction_type IN VARCHAR2)IS
12853 SELECT transaction_type_id
12854 FROM CSI_TXN_TYPES
12855 WHERE source_transaction_type = p_transaction_type;
12856 l_trx_type_id NUMBER;
12857 BEGIN
12858 OPEN okl_trx_type_csr(p_transaction_type);
12859 FETCH okl_trx_type_csr
12860 INTO l_trx_type_id;
12861 IF okl_trx_type_csr%NOTFOUND THEN
12862 --OKL LINE ACTIVATION not seeded as a source transaction in IB
12863 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
12864 p_msg_name => G_IB_TXN_TYPE_NOT_FOUND,
12865 p_token1 => G_TXN_TYPE_TOKEN,
12866 p_token1_value => p_transaction_type
12867 );
12868 RAISE OKL_API.G_EXCEPTION_ERROR;
12869 END IF;
12870 CLOSE okl_trx_type_csr;
12871 --Assign transaction Type id to seeded value in cs_lookups
12872 x_trx_rec.transaction_type_id := l_trx_type_id;
12873 --Assign Source Line Ref id to contract line id of IB instance line
12874 x_trx_rec.source_line_ref_id := p_cle_id;
12875 x_trx_rec.transaction_date := SYSDATE;
12876 --confirm whether this has to be sysdate or creation date on line
12877 x_trx_rec.source_transaction_date := SYSDATE;
12878 EXCEPTION
12879 WHEN OKL_API.G_EXCEPTION_ERROR THEN
12880 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
12881 (
12882 l_api_name,
12883 G_PKG_NAME,
12884 'OKL_API.G_RET_STS_ERROR',
12885 x_msg_count,
12886 x_msg_data,
12887 '_PVT'
12888 );
12889 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
12890 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
12891 (
12892 l_api_name,
12893 G_PKG_NAME,
12894 'OKL_API.G_RET_STS_UNEXP_ERROR',
12895 x_msg_count,
12896 x_msg_data,
12897 '_PVT'
12898 );
12899 WHEN OTHERS THEN
12900 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
12901 (
12902 l_api_name,
12903 G_PKG_NAME,
12904 'OTHERS',
12905 x_msg_count,
12906 x_msg_data,
12907 '_PVT'
12908 );
12909 END get_trx_rec;
12910 ------------------------------------------------------------------------------
12911 --Start of comments
12912 --
12913 --Procedure Name : get_party_rec
12914 --Purpose : Gets Party records for IB interface
12915 --Modification History :
12916 --15-Jun-2001 avsingh Created
12917 --Notes : Takes chr_id as input and tries to get the party role
12918 -- for that contract for party role = 'LESSEE'
12919 -- Assuming that LESSEE will be the owner of the IB instance
12920 --End of Comments
12921 ------------------------------------------------------------------------------
12922 PROCEDURE get_party_rec
12923 (p_api_version IN NUMBER,
12924 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
12925 x_return_status OUT NOCOPY VARCHAR2,
12926 x_msg_count OUT NOCOPY NUMBER,
12927 x_msg_data OUT NOCOPY VARCHAR2,
12928 p_chrv_id IN NUMBER,
12929 x_party_tbl OUT NOCOPY CSI_DATASTRUCTURES_PUB.party_tbl) IS
12930
12931 l_party_tab OKL_JTOT_EXTRACT.party_tab_type;
12932 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
12933 l_api_name CONSTANT VARCHAR2(30) := 'GET_PARTY_REC';
12934 l_api_version CONSTANT NUMBER := 1.0;
12935
12936 l_index NUMBER;
12937
12938 BEGIN
12939 --call start activity to set savepoint
12940 l_return_status := OKL_API.START_ACTIVITY( SUBSTR(l_api_name,1,26),
12941 p_init_msg_list,
12942 '_PVT',
12943 x_return_status);
12944 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12945 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12946 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
12947 RAISE OKL_API.G_EXCEPTION_ERROR;
12948 END IF;
12949
12950 --get Party
12951 OKL_JTOT_EXTRACT.Get_Party(p_api_version => p_api_version,
12952 p_init_msg_list => p_init_msg_list,
12953 x_return_status => x_return_status,
12954 x_msg_count => x_msg_count,
12955 x_msg_data => x_msg_data,
12956 p_chr_id => p_chrv_id,
12957 p_cle_id => NULL,
12958 p_role_code => G_ITM_INST_PARTY,
12959 p_intent => G_CONTRACT_INTENT,
12960 x_party_tab => l_party_tab);
12961
12962 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12963 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12964 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12965 RAISE OKL_API.G_EXCEPTION_ERROR;
12966 END IF;
12967
12968 FOR l_index IN 1..l_party_tab.LAST
12969 LOOP
12970 x_party_tbl(l_index).party_id := l_party_tab(l_index).id1;
12971 x_party_tbl(l_index).party_source_table := G_PARTY_SRC_TABLE;
12972 x_party_tbl(l_index).relationship_type_code := G_PARTY_RELATIONSHIP;
12973 x_party_tbl(l_index).contact_flag := 'N';
12974 --dbms_output.put_line('party_id' || to_char(l_index)||'-'||to_char(x_party_tbl(l_index).party_id));
12975 END LOOP;
12976
12977 IF (l_index = 0) THEN
12978 --no owner party record found
12979 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
12980 p_msg_name => G_PARTY_NOT_FOUND,
12981 p_token1 => G_ROLE_CODE_TOKEN,
12982 p_token1_value => G_ITM_INST_PARTY
12983 );
12984 RAISE OKL_API.G_EXCEPTION_ERROR;
12985 END IF;
12986
12987 --Call end Activity
12988 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
12989 EXCEPTION
12990 WHEN OKL_API.G_EXCEPTION_ERROR THEN
12991 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
12992 (
12993 l_api_name,
12994 G_PKG_NAME,
12995 'OKL_API.G_RET_STS_ERROR',
12996 x_msg_count,
12997 x_msg_data,
12998 '_PVT'
12999 );
13000 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
13001 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
13002 (
13003 l_api_name,
13004 G_PKG_NAME,
13005 'OKL_API.G_RET_STS_UNEXP_ERROR',
13006 x_msg_count,
13007 x_msg_data,
13008 '_PVT'
13009 );
13010 WHEN OTHERS THEN
13011 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
13012 (
13013 l_api_name,
13014 G_PKG_NAME,
13015 'OTHERS',
13016 x_msg_count,
13017 x_msg_data,
13018 '_PVT'
13019 );
13020 END get_party_rec;
13021 --------------------------------------------------------------------------------
13022 --Start of comments
13023 --Procedure Name : delete_instance_lines(Local)
13024 --Description : deletes split our instance lines in case of serialized split asset
13025 --Created for Bug# 2726870 : Split assets by serial numbers
13026 --End of comments
13027 --------------------------------------------------------------------------------
13028 PROCEDURE delete_instance_lines(p_api_version IN NUMBER,
13029 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
13030 x_return_status OUT NOCOPY VARCHAR2,
13031 x_msg_count OUT NOCOPY NUMBER,
13032 x_msg_data OUT NOCOPY VARCHAR2,
13033 p_inst_cle_id IN NUMBER,
13034 p_ib_cle_id IN NUMBER) IS
13035
13036 l_return_status VARCHAR2(1) DEFAULT OKL_API.G_RET_STS_SUCCESS;
13037 l_api_name CONSTANT VARCHAR2(30) := 'DELETE_INSTANCE_LINES';
13038 l_api_version CONSTANT NUMBER := 1.0;
13039
13040 l_inst_cle_id OKC_K_LINES_B.ID%TYPE;
13041 l_ib_cle_id OKC_K_LINES_B.ID%TYPE;
13042
13043 l_inst_clev_rec okc_contract_pub.clev_rec_type;
13044 l_ib_clev_rec okc_contract_pub.clev_rec_type;
13045 lx_inst_clev_rec okc_contract_pub.clev_rec_type;
13046 lx_ib_clev_rec okc_contract_pub.clev_rec_type;
13047
13048 l_inst_klev_rec okl_kle_pvt.klev_rec_type;
13049 l_ib_klev_rec okl_kle_pvt.klev_rec_type;
13050
13051
13052 BEGIN
13053 x_return_status := OKL_API.G_RET_STS_SUCCESS;
13054
13055 x_return_status := OKL_API.START_ACTIVITY (
13056 l_api_name
13057 ,p_init_msg_list
13058 ,'_PVT'
13059 ,x_return_status);
13060 -- Check if activity started successfully
13061 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13062 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13063 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13064 RAISE OKL_API.G_EXCEPTION_ERROR;
13065 END IF;
13066
13067 l_inst_cle_id := p_inst_cle_id;
13068 l_ib_cle_id := p_ib_cle_id;
13069 l_inst_klev_rec.id := l_inst_cle_id;
13070 l_ib_klev_rec.id := l_ib_cle_id;
13071 l_inst_clev_rec.id := l_inst_cle_id;
13072 l_ib_clev_rec.id := l_ib_cle_id;
13073
13074 l_inst_clev_rec.sts_code := 'ABANDONED';
13075 l_ib_clev_rec.sts_code := 'ABANDONED';
13076
13077 ---update status of the line
13078 OKC_CONTRACT_PUB.update_contract_line(
13079 p_api_version => p_api_version,
13080 p_init_msg_list => p_init_msg_list,
13081 x_return_status => x_return_status,
13082 x_msg_count => x_msg_count,
13083 x_msg_data => x_msg_data,
13084 p_clev_rec => l_ib_clev_rec,
13085 x_clev_rec => lx_ib_clev_rec);
13086 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13087 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13088 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13089 RAISE OKL_API.G_EXCEPTION_ERROR;
13090 END IF;
13091
13092 --Call line deletion API.
13093 OKC_CONTRACT_PUB.delete_contract_line(
13094 p_api_version => p_api_version,
13095 p_init_msg_list => p_init_msg_list,
13096 x_return_status => x_return_status,
13097 x_msg_count => x_msg_count,
13098 x_msg_data => x_msg_data,
13099 p_line_id => l_ib_cle_id);
13100 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13101 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13102 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13103 RAISE OKL_API.G_EXCEPTION_ERROR;
13104 END IF;
13105
13106 -- delete shadows explicitly
13107 OKL_KLE_PVT.delete_row(
13108 p_api_version => l_api_version,
13109 p_init_msg_list => p_init_msg_list,
13110 x_return_status => x_return_status,
13111 x_msg_count => x_msg_count,
13112 x_msg_data => x_msg_data,
13113 p_klev_rec => l_ib_klev_rec);
13114
13115 IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
13116 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13117 ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
13118 RAISE OKL_API.G_EXCEPTION_ERROR;
13119 END IF;
13120
13121 ---update status of the line
13122 OKC_CONTRACT_PUB.update_contract_line(
13123 p_api_version => p_api_version,
13124 p_init_msg_list => p_init_msg_list,
13125 x_return_status => x_return_status,
13126 x_msg_count => x_msg_count,
13127 x_msg_data => x_msg_data,
13128 p_clev_rec => l_inst_clev_rec,
13129 x_clev_rec => lx_inst_clev_rec);
13130 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13131 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13132 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13133 RAISE OKL_API.G_EXCEPTION_ERROR;
13134 END IF;
13135
13136 --Call line deletion API
13137 OKC_CONTRACT_PUB.delete_contract_line(
13138 p_api_version => p_api_version,
13139 p_init_msg_list => p_init_msg_list,
13140 x_return_status => x_return_status,
13141 x_msg_count => x_msg_count,
13142 x_msg_data => x_msg_data,
13143 p_line_id => l_inst_cle_id);
13144 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13145 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13146 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13147 RAISE OKL_API.G_EXCEPTION_ERROR;
13148 END IF;
13149
13150 -- delete shadows explicitly
13151 OKL_KLE_PVT.delete_row(
13152 p_api_version => l_api_version,
13153 p_init_msg_list => p_init_msg_list,
13154 x_return_status => x_return_status,
13155 x_msg_count => x_msg_count,
13156 x_msg_data => x_msg_data,
13157 p_klev_rec => l_ib_klev_rec);
13158
13159 IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
13160 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13161 ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
13162 RAISE OKL_API.G_EXCEPTION_ERROR;
13163 END IF;
13164
13165 --Bug# 7033247: Deleted the wrongly pasted
13166 --duplicate lines of code from below:
13167
13168 OKL_API.END_ACTIVITY (x_msg_count,
13169 x_msg_data );
13170 EXCEPTION
13171 WHEN OKL_API.G_EXCEPTION_ERROR THEN
13172 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
13173 l_api_name,
13174 G_PKG_NAME,
13175 'OKL_API.G_RET_STS_ERROR',
13176 x_msg_count,
13177 x_msg_data,
13178 '_PVT');
13179 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
13180 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
13181 l_api_name,
13182 G_PKG_NAME,
13183 'OKL_API.G_RET_STS_UNEXP_ERROR',
13184 x_msg_count,
13185 x_msg_data,
13186 '_PVT');
13187 WHEN OTHERS THEN
13188 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
13189 l_api_name,
13190 G_PKG_NAME,
13191 'OTHERS',
13192 x_msg_count,
13193 x_msg_data,
13194 '_PVT');
13195 END delete_instance_lines;
13196 --------------------------------------------------------------------------------
13197 --Start of comments
13198 --Procedure Name : Create_ib_instance
13199 --Description : procedure creates split child ib instance
13200 --Modified for Bug# 2648280 : to take care of IB fix on expire instance API
13201 --end of comments
13202 --------------------------------------------------------------------------------
13203 PROCEDURE create_ib_instance(p_api_version IN NUMBER,
13204 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
13205 x_return_status OUT NOCOPY VARCHAR2,
13206 x_msg_count OUT NOCOPY NUMBER,
13207 x_msg_data OUT NOCOPY VARCHAR2,
13208 p_csi_id1 IN VARCHAR2,
13209 p_csi_id2 IN VARCHAR2,
13210 p_ib_cle_id IN NUMBER,
13211 p_chr_id IN NUMBER,
13212 p_split_qty IN NUMBER,
13213 p_txdv_rec IN txdv_rec_type,
13214 x_instance_id OUT NOCOPY NUMBER) IS
13215
13216 l_return_status VARCHAR2(1) DEFAULT OKL_API.G_RET_STS_SUCCESS;
13217 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_IB_INSTANCE';
13218 l_api_version CONSTANT NUMBER := 1.0;
13219
13220 --instance query recs
13221 l_instance_query_rec CSI_DATASTRUCTURES_PUB.instance_query_rec;
13222 l_party_query_rec CSI_DATASTRUCTURES_PUB.party_query_rec;
13223 l_account_query_rec CSI_DATASTRUCTURES_PUB.party_account_query_rec;
13224 l_instance_header_tbl CSI_DATASTRUCTURES_PUB.instance_header_tbl;
13225
13226 --instance recs for creation
13227 l_instance_rec CSI_DATASTRUCTURES_PUB.instance_rec;
13228 l_ext_attrib_values_tbl CSI_DATASTRUCTURES_PUB.extend_attrib_values_tbl;
13229 l_party_tbl CSI_DATASTRUCTURES_PUB.party_tbl;
13230 l_party_tbl_in CSI_DATASTRUCTURES_PUB.party_tbl;
13231 l_account_tbl CSI_DATASTRUCTURES_PUB.party_account_tbl;
13232 l_pricing_attrib_tbl CSI_DATASTRUCTURES_PUB.pricing_attribs_tbl;
13233 l_org_assignments_tbl CSI_DATASTRUCTURES_PUB.organization_units_tbl;
13234 l_asset_assignment_tbl CSI_DATASTRUCTURES_PUB.instance_asset_tbl;
13235 l_txn_rec CSI_DATASTRUCTURES_PUB.transaction_rec;
13236
13237 --original instance updation parameters
13238 l_upd_instance_rec CSI_DATASTRUCTURES_PUB.instance_rec;
13239 l_upd_ext_attrib_values_tbl CSI_DATASTRUCTURES_PUB.extend_attrib_values_tbl;
13240 l_upd_party_tbl CSI_DATASTRUCTURES_PUB.party_tbl;
13241 l_upd_party_tbl_in CSI_DATASTRUCTURES_PUB.party_tbl;
13242 l_upd_account_tbl CSI_DATASTRUCTURES_PUB.party_account_tbl;
13243 l_upd_pricing_attrib_tbl CSI_DATASTRUCTURES_PUB.pricing_attribs_tbl;
13244 l_upd_org_assignments_tbl CSI_DATASTRUCTURES_PUB.organization_units_tbl;
13245 l_upd_asset_assignment_tbl CSI_DATASTRUCTURES_PUB.instance_asset_tbl;
13246 l_upd_txn_rec CSI_DATASTRUCTURES_PUB.transaction_rec;
13247 l_upd_instance_id_lst CSI_DATASTRUCTURES_PUB.id_tbl;
13248
13249 l_exp_txn_rec CSI_DATASTRUCTURES_PUB.transaction_rec;
13250 l_exp_instance_id_lst CSI_DATASTRUCTURES_PUB.id_tbl;
13251
13252
13253 l_no_data_found BOOLEAN;
13254
13255 --cursor to fetch customer account
13256 /*--Bug# 3124577: 11.5.10 : Rule Migration--------------------------------------
13257 CURSOR party_account_csr(p_chrv_id IN NUMBER) is
13258 SELECT to_number(rulv.object1_id1)
13259 FROM OKC_RULES_V rulv
13260 WHERE rulv.rule_information_category = G_CUST_ACCT_RULE
13261 AND rulv.dnz_chr_id = p_chrv_id
13262 AND exists (select '1'
13263 from OKC_RULE_GROUPS_V rgpv
13264 where rgpv.chr_id = p_chrv_id
13265 and rgpv.rgd_code = G_CUST_ACCT_RULE_GROUP
13266 and rgpv.id = rulv.rgp_id);
13267 --------------------------------------Bug# 3124577 : 11.5.10 Rule Migration----*/
13268
13269 CURSOR party_account_csr(p_chrv_id IN NUMBER) IS
13270 SELECT chrb.cust_acct_id
13271 FROM OKC_K_HEADERS_B chrb
13272 WHERE chrb.id = p_chrv_id;
13273
13274 l_party_account NUMBER;
13275
13276 --bug# 2648280
13277 --modified to get all the terminated statuses
13278 CURSOR inst_sts_csr(p_status_name IN VARCHAR2) IS
13279 SELECT instance_status_id
13280 FROM CSI_INSTANCE_STATUSES
13281 WHERE NVL(TERMINATED_FLAG,'N') = 'Y'
13282 AND name = p_status_name;
13283
13284 l_expired_status_id csi_instance_statuses.instance_status_id%TYPE DEFAULT NULL;
13285
13286 l_active_instances_only VARCHAR2(1);
13287
13288 --Bug # 2726870 11.5.9 enhancements - split asset into components
13289 --cursor to check if instance is to be split out in case of split asset by serial numbers
13290 CURSOR chk_instance_csr (PInstanceId IN NUMBER,PTalId IN NUMBER ) IS
13291 SELECT '!'
13292 FROM OKL_TXL_ITM_INSTS iti
13293 WHERE iti.instance_id = PInstanceId
13294 AND iti.tal_id = PTalId
13295 AND NVL(iti.selected_for_split_flag,'N') = 'Y'
13296 AND iti.tal_type = 'ALI';
13297
13298 l_instance_for_split VARCHAR2(1) DEFAULT '?';
13299
13300 --cursor to get the instance line id for parent asset line for delete
13301 CURSOR get_instance_cle_csr (PInstanceId IN NUMBER, PTalId IN NUMBER, PChrId IN NUMBER) IS
13302 SELECT inst_cle.id inst_cle_id,
13303 ib_cle.id ib_cle_id
13304 FROM
13305 okc_k_items ib_cim,
13306 okc_k_lines_b ib_cle,
13307 okc_line_styles_b ib_lse,
13308 okc_k_lines_b inst_cle,
13309 okc_line_styles_b inst_lse,
13310 okc_k_lines_b fa_cle,
13311 okc_line_styles_b fa_lse,
13312 okl_txl_Assets_b tal
13313 WHERE ib_cim.object1_id1 = TO_CHAR(PInstanceId)
13314 AND ib_cim.object1_id2 = '#'
13315 AND ib_cim.jtot_object1_code = 'OKX_IB_ITEM'
13316 AND ib_cim.cle_id = ib_cle.id
13317 AND ib_cim.dnz_chr_id = ib_cle.dnz_chr_id
13318 AND ib_cle.cle_id = inst_cle.id
13319 AND ib_cle.dnz_chr_id = inst_cle.dnz_chr_id
13320 AND ib_cle.lse_id = ib_lse.id
13321 AND ib_lse.lty_code = 'INST_ITEM'
13322 AND inst_cle.cle_id = fa_cle.cle_id
13323 AND inst_cle.dnz_chr_id = fa_cle.dnz_chr_id
13324 AND inst_cle.lse_id = inst_lse.id
13325 AND inst_lse.lty_code = 'FREE_FORM2'
13326 AND fa_cle.id = tal.kle_id
13327 AND fa_cle.dnz_chr_id = PChrId
13328 AND fa_cle.lse_id = fa_lse.id
13329 AND fa_lse.lty_code = 'FIXED_ASSET'
13330 AND tal.id = PTalId;
13331
13332 l_inst_cle_id OKC_K_LINES_B.ID%TYPE;
13333 l_ib_cle_id OKC_K_LINES_B.ID%TYPE;
13334
13335 --Cursors for Split asset components which are serialized
13336 CURSOR get_instance_cle_csr2 (PTarget_kle_id IN NUMBER, PChrId IN NUMBER) IS
13337 SELECT inst_cle.id inst_cle_id,
13338 ib_cim.id ib_cim_id
13339 FROM
13340 okc_k_items ib_cim,
13341 okc_k_lines_b ib_cle,
13342 okc_line_styles_b ib_lse,
13343 okc_k_lines_b inst_cle,
13344 okc_line_styles_b inst_lse,
13345 okc_k_lines_b fa_cle,
13346 okc_line_styles_b fa_lse
13347 WHERE
13348 ib_cim.cle_id = ib_cle.id
13349 AND ib_cim.dnz_chr_id = ib_cle.dnz_chr_id
13350 AND ib_cle.cle_id = inst_cle.id
13351 AND ib_cle.dnz_chr_id = inst_cle.dnz_chr_id
13352 AND ib_cle.lse_id = ib_lse.id
13353 AND ib_lse.lty_code = 'INST_ITEM'
13354 AND inst_cle.cle_id = fa_cle.cle_id
13355 AND inst_cle.dnz_chr_id = fa_cle.dnz_chr_id
13356 AND inst_cle.lse_id = inst_lse.id
13357 AND inst_lse.lty_code = 'FREE_FORM1'
13358 AND fa_cle.id = PTarget_kle_id
13359 AND fa_cle.dnz_chr_id = PChrId
13360 AND fa_cle.lse_id = fa_lse.id
13361 AND fa_lse.lty_code = 'FIXED_ASSET';
13362
13363
13364 l_ib_cim_id OKC_K_ITEMS.ID%TYPE;
13365 l_serialized VARCHAR2(1) DEFAULT okl_api.g_false;
13366
13367 --cursor to get the serial numbers for serialized split asset components
13368 CURSOR comp_srl_csr (p_asd_id IN NUMBER) IS
13369 SELECT serial_number,
13370 id
13371 FROM okl_txl_itm_insts
13372 WHERE asd_id = p_asd_id
13373 AND NVL(selected_for_split_flag,'N') = 'Y';
13374
13375 l_itiv_id OKL_TXL_ITM_INSTS.ID%TYPE;
13376
13377 l_iipv_rec OKL_TXL_ITM_INSTS_PUB.iipv_rec_type;
13378 lx_iipv_rec OKL_TXL_ITM_INSTS_PUB.iipv_rec_type;
13379
13380
13381 BEGIN
13382 x_return_status := OKL_API.G_RET_STS_SUCCESS;
13383 -- Call start_activity to create savepoint, check compatibility
13384 -- and initialize message list
13385 x_return_status := OKL_API.START_ACTIVITY (
13386 l_api_name
13387 ,p_init_msg_list
13388 ,'_PVT'
13389 ,x_return_status);
13390 -- Check if activity started successfully
13391 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13392 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13393 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13394 RAISE OKL_API.G_EXCEPTION_ERROR;
13395 END IF;
13396
13397 --get item instance record
13398 --l_instance_rec := get_csi_rec(p_csi_id1 => p_csi_id1,
13399 -- p_csi_id2 => p_csi_id2,
13400 -- x_no_data_found => l_no_data_found);
13401
13402 l_instance_query_rec.instance_id := p_csi_id1;
13403
13404 --split asset into components modfn.
13405 IF NVL(p_txdv_rec.split_percent,0) NOT IN (0,OKL_API.G_MISS_NUM) THEN
13406 l_active_instances_only := FND_API.G_FALSE;
13407 ELSE
13408 l_active_instances_only := FND_API.G_TRUE;
13409 END IF;
13410
13411 csi_item_instance_pub.get_item_instances (
13412 p_api_version => p_api_version,
13413 p_commit => FND_API.G_FALSE,
13414 p_init_msg_list => FND_API.G_FALSE,
13415 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
13416 p_instance_query_rec => l_instance_query_rec,
13417 p_party_query_rec => l_party_query_rec,
13418 p_account_query_rec => l_account_query_rec,
13419 p_transaction_id => NULL,
13420 p_resolve_id_columns => FND_API.G_FALSE,
13421 p_active_instance_only => l_active_instances_only,
13422 --modfn for split asset component
13423 --p_active_instance_only => FND_API.TRUE,
13424 x_instance_header_tbl => l_instance_header_tbl,
13425 x_return_status => x_return_status,
13426 x_msg_count => x_msg_count,
13427 x_msg_data => x_msg_data);
13428
13429 --dbms_output.put_line('After calling IB API for query status '||x_return_status);
13430 --dbms_output.put_line('After calling IB API for query instance_id '||to_char(l_instance_header_tbl(1).instance_id));
13431 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13432 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13433 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13434 RAISE OKL_API.G_EXCEPTION_ERROR;
13435 ELSIF (NVL (l_instance_header_tbl.COUNT, 0) <> 1) THEN
13436 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13437 END IF;
13438
13439 --bug# 2982927 : resetting okc inv org again from k header :
13440 okl_context.set_okc_org_context(p_chr_id => p_chr_id);
13441 --bug# 2982927
13442
13443 --BUG# 3489089 :
13444 l_instance_rec.vld_organization_id := okl_context.get_okc_organization_id;
13445 --BUG# 3489089
13446
13447 l_instance_rec.instance_id := l_instance_header_tbl(1).instance_id;
13448 l_instance_rec.instance_number := l_instance_header_tbl(1).instance_number;
13449 l_instance_rec.external_reference := l_instance_header_tbl(1).external_reference;
13450 l_instance_rec.INVENTORY_ITEM_ID := l_instance_header_tbl(1).INVENTORY_ITEM_ID;
13451 l_instance_rec.INVENTORY_REVISION := l_instance_header_tbl(1).INVENTORY_REVISION;
13452 l_instance_rec.INV_MASTER_ORGANIZATION_ID := l_instance_header_tbl(1).INV_MASTER_ORGANIZATION_ID;
13453 l_instance_rec.SERIAL_NUMBER := l_instance_header_tbl(1).SERIAL_NUMBER;
13454 l_instance_rec.MFG_SERIAL_NUMBER_FLAG := l_instance_header_tbl(1).MFG_SERIAL_NUMBER_FLAG;
13455 l_instance_rec.LOT_NUMBER := l_instance_header_tbl(1).LOT_NUMBER;
13456 l_instance_rec.QUANTITY := l_instance_header_tbl(1).QUANTITY;
13457 l_instance_rec.UNIT_OF_MEASURE := l_instance_header_tbl(1).UNIT_OF_MEASURE;
13458 l_instance_rec.ACCOUNTING_CLASS_CODE := l_instance_header_tbl(1).ACCOUNTING_CLASS_CODE;
13459 l_instance_rec.INSTANCE_CONDITION_ID := l_instance_header_tbl(1).INSTANCE_CONDITION_ID;
13460 l_instance_rec.INSTANCE_STATUS_ID := l_instance_header_tbl(1).INSTANCE_STATUS_ID;
13461 l_instance_rec.CUSTOMER_VIEW_FLAG := l_instance_header_tbl(1).CUSTOMER_VIEW_FLAG;
13462 l_instance_rec.MERCHANT_VIEW_FLAG := l_instance_header_tbl(1).MERCHANT_VIEW_FLAG;
13463 l_instance_rec.SELLABLE_FLAG := l_instance_header_tbl(1).SELLABLE_FLAG;
13464 l_instance_rec.SYSTEM_ID := l_instance_header_tbl(1).SYSTEM_ID;
13465 l_instance_rec.INSTANCE_TYPE_CODE := l_instance_header_tbl(1).INSTANCE_TYPE_CODE;
13466 l_instance_rec.LOCATION_TYPE_CODE := l_instance_header_tbl(1).LOCATION_TYPE_CODE;
13467 l_instance_rec.LOCATION_ID := l_instance_header_tbl(1).LOCATION_ID;
13468 l_instance_rec.INV_ORGANIZATION_ID := l_instance_header_tbl(1).INV_ORGANIZATION_ID;
13469 l_instance_rec.INV_SUBINVENTORY_NAME := l_instance_header_tbl(1).INV_SUBINVENTORY_NAME;
13470 l_instance_rec.INV_LOCATOR_ID := l_instance_header_tbl(1).INV_LOCATOR_ID;
13471 l_instance_rec.PA_PROJECT_ID := l_instance_header_tbl(1).PA_PROJECT_ID;
13472 l_instance_rec.PA_PROJECT_TASK_ID := l_instance_header_tbl(1).PA_PROJECT_TASK_ID;
13473 l_instance_rec.IN_TRANSIT_ORDER_LINE_ID := l_instance_header_tbl(1).IN_TRANSIT_ORDER_LINE_ID;
13474 l_instance_rec.WIP_JOB_ID := l_instance_header_tbl(1).WIP_JOB_ID;
13475 l_instance_rec.PO_ORDER_LINE_ID := l_instance_header_tbl(1).PO_ORDER_LINE_ID;
13476 l_instance_rec.LAST_OE_ORDER_LINE_ID := l_instance_header_tbl(1).LAST_OE_ORDER_LINE_ID;
13477 l_instance_rec.LAST_OE_RMA_LINE_ID := l_instance_header_tbl(1).LAST_OE_RMA_LINE_ID;
13478 l_instance_rec.LAST_PO_PO_LINE_ID := l_instance_header_tbl(1).LAST_PO_PO_LINE_ID;
13479 l_instance_rec.LAST_OE_PO_NUMBER := l_instance_header_tbl(1).LAST_OE_PO_NUMBER;
13480 l_instance_rec.LAST_WIP_JOB_ID := l_instance_header_tbl(1).LAST_WIP_JOB_ID;
13481 l_instance_rec.LAST_PA_PROJECT_ID := l_instance_header_tbl(1).LAST_PA_PROJECT_ID;
13482 l_instance_rec.LAST_PA_TASK_ID := l_instance_header_tbl(1).LAST_PA_TASK_ID;
13483 l_instance_rec.LAST_OE_AGREEMENT_ID := l_instance_header_tbl(1).LAST_OE_AGREEMENT_ID;
13484 l_instance_rec.INSTALL_DATE := l_instance_header_tbl(1).INSTALL_DATE;
13485 l_instance_rec.MANUALLY_CREATED_FLAG := l_instance_header_tbl(1).MANUALLY_CREATED_FLAG;
13486 l_instance_rec.RETURN_BY_DATE := l_instance_header_tbl(1).RETURN_BY_DATE;
13487 l_instance_rec.ACTUAL_RETURN_DATE := l_instance_header_tbl(1).ACTUAL_RETURN_DATE;
13488 l_instance_rec.CREATION_COMPLETE_FLAG := l_instance_header_tbl(1).CREATION_COMPLETE_FLAG;
13489 l_instance_rec.COMPLETENESS_FLAG := l_instance_header_tbl(1).COMPLETENESS_FLAG;
13490 l_instance_rec.LAST_TXN_LINE_DETAIL_ID := l_instance_header_tbl(1).LAST_TXN_LINE_DETAIL_ID;
13491 l_instance_rec.INSTALL_LOCATION_TYPE_CODE := l_instance_header_tbl(1).INSTALL_LOCATION_TYPE_CODE;
13492 l_instance_rec.INSTALL_LOCATION_ID := l_instance_header_tbl(1).INSTALL_LOCATION_ID;
13493 l_instance_rec.INSTANCE_USAGE_CODE := l_instance_header_tbl(1).INSTANCE_USAGE_CODE;
13494 l_instance_rec.OBJECT_VERSION_NUMBER := l_instance_header_tbl(1).OBJECT_VERSION_NUMBER;
13495
13496 IF NVL(p_txdv_rec.split_percent,0) NOT IN (0,OKL_API.G_MISS_NUM) THEN --splitting into components
13497 --expire original item instances
13498 l_expired_status_id := NULL;
13499 OPEN inst_sts_csr(p_status_name => l_instance_rec.instance_status_id);
13500 FETCH inst_sts_csr INTO l_expired_status_id;
13501 IF inst_sts_csr%NOTFOUND THEN
13502 --get trx record
13503 get_trx_rec(p_api_version => p_api_version,
13504 p_init_msg_list => p_init_msg_list,
13505 x_return_status => x_return_status,
13506 x_msg_count => x_msg_count,
13507 x_msg_data => x_msg_data,
13508 p_cle_id => p_ib_cle_id,
13509 p_transaction_type => G_IB_SPLIT_TXN_TYPE,
13510 x_trx_rec => l_exp_txn_rec);
13511
13512 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13513 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13514 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13515 RAISE OKL_API.G_EXCEPTION_ERROR;
13516 END IF;
13517
13518 l_instance_rec.INSTANCE_STATUS_ID := NULL;
13519 csi_item_instance_pub.expire_item_instance
13520 (p_api_version => p_api_version
13521 ,p_commit => fnd_api.g_false
13522 ,p_init_msg_list => p_init_msg_list
13523 ,p_validation_level => fnd_api.g_valid_level_full
13524 ,p_instance_rec => l_instance_rec
13525 ,p_expire_children => fnd_api.g_false
13526 ,p_txn_rec => l_exp_txn_rec
13527 ,x_instance_id_lst => l_exp_instance_id_lst
13528 ,x_return_status => x_return_status
13529 ,x_msg_count => x_msg_count
13530 ,x_msg_data => x_msg_data);
13531
13532 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13533 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13534 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13535 RAISE OKL_API.G_EXCEPTION_ERROR;
13536 END IF;
13537
13538 --bug# 2982927 : resetting okc inv org again from k header :
13539 okl_context.set_okc_org_context(p_chr_id => p_chr_id);
13540 --bug# 2982927
13541
13542 ELSE
13543
13544 NULL;
13545
13546 END IF;
13547
13548 --Bug # 2726870 :11.5.9 enhancement Split asset by serial numbers for Split Asset by components
13549 l_serialized := OKL_API.G_FALSE;
13550 Is_Inv_Item_Serialized(p_api_version => p_api_version,
13551 p_init_msg_list => p_init_msg_list,
13552 x_return_status => x_return_status,
13553 x_msg_count => x_msg_count,
13554 x_msg_data => x_msg_data,
13555 p_inv_item_id => p_txdv_rec.inventory_item_id,
13556 p_chr_id => p_chr_id,
13557 p_cle_id => NULL,
13558 x_serialized => l_serialized);
13559 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13560 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13561 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13562 RAISE OKL_API.G_EXCEPTION_ERROR;
13563 END IF;
13564
13565 --If l_serialized = OKL_API.G_FALSE Then
13566 --if not serialized create new instances normally
13567 IF l_serialized = OKL_API.G_FALSE THEN
13568 l_instance_rec.serial_number := NULL;
13569 l_instance_rec.quantity := p_split_qty;
13570 ELSIF l_serialized = OKL_API.G_TRUE THEN
13571 --set serial number
13572 OPEN comp_srl_csr (p_asd_id => p_txdv_rec.id);
13573 FETCH comp_srl_csr INTO l_instance_rec.serial_number,
13574 l_itiv_id;
13575 IF comp_srl_csr%NOTFOUND THEN
13576 l_instance_rec.serial_number := NULL;
13577 END IF;
13578 CLOSE comp_srl_csr;
13579 IF l_itiv_id IS NOT NULL OR l_itiv_id <> OKL_API.G_MISS_NUM THEN
13580 --update the serail number record as processed
13581 l_iipv_rec.id := l_itiv_id;
13582 l_iipv_rec.selected_for_split_flag := 'P';
13583 --dbms_output.put_line('before update of txl itm insts sts'||x_return_status);
13584 --dbms_output.put_line('before update of txl itm insts sts'||to_char(l_iipv_rec.id));
13585 --dbms_output.put_line('before update of txl itm insts sts'||to_char(l_iipv_rec.kle_id));
13586 okl_txl_itm_insts_pub.update_txl_itm_insts
13587 (p_api_version => p_api_version,
13588 p_init_msg_list => p_init_msg_list,
13589 x_return_status => x_return_status,
13590 x_msg_count => x_msg_count,
13591 x_msg_data => x_msg_data,
13592 p_iipv_rec => l_iipv_rec,
13593 x_iipv_rec => lx_iipv_rec);
13594 --dbms_output.put_line('after update of txl itm insts sts'||x_return_status);
13595 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13596 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13597 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13598 RAISE OKL_API.G_EXCEPTION_ERROR;
13599 END IF;
13600 END IF;
13601 l_instance_rec.quantity := 1;
13602 END IF;
13603
13604 l_instance_rec.INSTANCE_STATUS_ID := NULL;
13605
13606 -- now process for new ib instance creation.
13607 --get trx record
13608 l_instance_rec.instance_id := NULL;
13609 l_instance_rec.instance_number := NULL;
13610 --l_instance_rec.serial_number := Null;
13611 l_instance_rec.creation_complete_flag := NULL;
13612 --l_instance_rec.quantity := p_split_qty;
13613 l_instance_rec.object_version_number := NULL;
13614 l_instance_rec.inventory_item_id := p_txdv_rec.inventory_item_id;
13615 --Bug# 3066375:
13616 l_instance_rec.call_contracts := okl_api.g_false;
13617
13618
13619 get_trx_rec(p_api_version => p_api_version,
13620 p_init_msg_list => p_init_msg_list,
13621 x_return_status => x_return_status,
13622 x_msg_count => x_msg_count,
13623 x_msg_data => x_msg_data,
13624 p_cle_id => p_ib_cle_id,
13625 p_transaction_type => G_IB_SPLIT_TXN_TYPE,
13626 x_trx_rec => l_txn_rec);
13627
13628 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13629 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13630 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13631 RAISE OKL_API.G_EXCEPTION_ERROR;
13632 END IF;
13633
13634 --get party tbl
13635 get_party_rec(p_api_version => p_api_version,
13636 p_init_msg_list => p_init_msg_list,
13637 x_return_status => x_return_status,
13638 x_msg_count => x_msg_count,
13639 x_msg_data => x_msg_data,
13640 p_chrv_id => p_chr_id,
13641 x_party_tbl => l_party_tbl);
13642
13643 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13644 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13645 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13646 RAISE OKL_API.G_EXCEPTION_ERROR;
13647 END IF;
13648
13649 --get party accoutnt id
13650 l_party_account := NULL;
13651 OPEN party_account_csr(p_chrv_id => p_chr_id);
13652 FETCH party_account_csr INTO
13653 l_party_account;
13654 IF party_account_csr%NOTFOUND THEN
13655 --raise error for unable to find inv mstr org
13656 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
13657 p_msg_name => G_CUST_ACCOUNT_FOUND,
13658 p_token1 => G_CONTRACT_ID_TOKEN,
13659 p_token1_value => TO_CHAR(p_chr_id)
13660 );
13661 RAISE OKL_API.G_EXCEPTION_ERROR;
13662 ELSE
13663 NULL;
13664 END IF;
13665 CLOSE party_account_csr;
13666
13667 l_account_tbl(1).instance_party_id := l_party_tbl(1).party_id;
13668 l_account_tbl(1).party_account_id := l_party_account;
13669 l_account_tbl(1).relationship_type_code := G_PARTY_RELATIONSHIP;
13670 --l_account_tbl(1).active_start_date := sysdate;
13671 l_account_tbl(1).parent_tbl_index := 1;
13672
13673 --dbms_output.put_line('before calling ib API');
13674
13675 csi_item_instance_pub.create_item_instance(p_api_version => p_api_version,
13676 p_commit => fnd_api.g_false,
13677 p_init_msg_list => p_init_msg_list,
13678 p_instance_rec => l_instance_rec,
13679 p_validation_level => fnd_api.g_valid_level_full,
13680 p_ext_attrib_values_tbl => l_ext_attrib_values_tbl,
13681 p_party_tbl => l_party_tbl,
13682 p_account_tbl => l_account_tbl,
13683 p_pricing_attrib_tbl => l_pricing_attrib_tbl,
13684 p_org_assignments_tbl => l_org_assignments_tbl,
13685 p_asset_assignment_tbl => l_asset_assignment_tbl,
13686 p_txn_rec => l_txn_rec,
13687 x_return_status => x_return_status,
13688 x_msg_count => x_msg_count,
13689 x_msg_data => x_msg_data);
13690
13691 --dbms_output.put_line('After calling IB API status '||x_return_status);
13692 --dbms_output.put_line('After calling IB API instance_id '||to_char(l_instance_rec.instance_id));
13693
13694 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13695 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13696 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13697 RAISE OKL_API.G_EXCEPTION_ERROR;
13698 END IF;
13699
13700 --bug# 2982927 : resetting okc inv org again from k header :
13701 okl_context.set_okc_org_context(p_chr_id => p_chr_id);
13702 --bug# 2982927
13703
13704 x_instance_id := l_instance_rec.instance_id;
13705
13706 --Elsif l_serialized = OKL_API.G_TRUE Then
13707
13708 --1. read from the split transaction to create new serial numbers
13709 --2. For each record create instance in IB
13710 --3. Loop through all the created instances
13711 --4. fetch existing ib line
13712 -- If line found update id1,id2
13713 -- else create new ib line and plug in id1,id2
13714 --Null;
13715 --End If; --serialized
13716
13717 ELSE --for normal split assets
13718
13719 --Bug # 2726870 :11.5.9 enhancement Split asset by serial numbers for Split Asset by components
13720 l_serialized := OKL_API.G_FALSE;
13721 Is_Inv_Item_Serialized(p_api_version => p_api_version,
13722 p_init_msg_list => p_init_msg_list,
13723 x_return_status => x_return_status,
13724 x_msg_count => x_msg_count,
13725 x_msg_data => x_msg_data,
13726 p_inv_item_id => l_instance_rec.inventory_item_id,
13727 p_chr_id => p_chr_id,
13728 p_cle_id => NULL,
13729 x_serialized => l_serialized);
13730 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13731 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13732 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13733 RAISE OKL_API.G_EXCEPTION_ERROR;
13734 END IF;
13735
13736 IF (l_instance_rec.quantity = 1) OR
13737 (l_instance_rec.quantity - p_split_qty) <= 0 THEN -- this will never be the case
13738 NULL; -- no need to update quantity - item instance may be serailized
13739
13740 --Bug # 2726870 11.5.9 enhancements - split asset into components
13741 IF l_serialized = OKL_API.G_TRUE THEN
13742 l_instance_for_split := '?';
13743 OPEN chk_instance_csr(PInstanceId => l_instance_rec.instance_id,
13744 PTalId => P_txdv_rec.tal_id);
13745 FETCH chk_instance_csr INTO l_instance_for_split;
13746 IF chk_instance_csr%NOTFOUND THEN
13747 NULL;
13748 END IF;
13749 CLOSE chk_instance_csr;
13750
13751 IF l_instance_for_split = '!' THEN
13752 --delete instance line from parent asset
13753 --dbms_output.put_line('instance for split');
13754 OPEN get_instance_cle_csr (PInstanceId => l_instance_rec.instance_id,
13755 PTalId => P_txdv_rec.tal_id,
13756 PChrId => p_chr_id);
13757 FETCH get_instance_cle_csr INTO l_inst_cle_id, l_ib_cle_id;
13758 IF get_instance_cle_csr%NOTFOUND THEN
13759 NULL;
13760 ELSE
13761 --Call line deletion API
13762 delete_instance_lines(
13763 p_api_version => p_api_version,
13764 p_init_msg_list => p_init_msg_list,
13765 x_return_status => x_return_status,
13766 x_msg_count => x_msg_count,
13767 x_msg_data => x_msg_data,
13768 p_inst_cle_id => l_inst_cle_id,
13769 p_ib_cle_id => l_ib_cle_id);
13770 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13771 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13772 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13773 RAISE OKL_API.G_EXCEPTION_ERROR;
13774 END IF;
13775 END IF;
13776 x_instance_id := l_instance_rec.instance_id;
13777 END IF; -- If item instance is selected for serial split
13778 END IF;--if serialized
13779
13780 ELSE
13781
13782 --do csi adjustment
13783 l_upd_instance_rec.instance_id := l_instance_rec.instance_id;
13784 l_upd_instance_rec.quantity := (l_instance_rec.quantity - p_split_qty);
13785 l_upd_instance_rec.object_version_number := l_instance_rec.object_version_number;
13786
13787 --get trx record
13788 get_trx_rec(p_api_version => p_api_version,
13789 p_init_msg_list => p_init_msg_list,
13790 x_return_status => x_return_status,
13791 x_msg_count => x_msg_count,
13792 x_msg_data => x_msg_data,
13793 p_cle_id => p_ib_cle_id,
13794 p_transaction_type => G_IB_SPLIT_TXN_TYPE,
13795 x_trx_rec => l_upd_txn_rec);
13796
13797 l_upd_txn_rec.transaction_quantity := (-1)* p_split_qty;
13798
13799 csi_item_instance_pub.update_item_instance
13800 (
13801 p_api_version => p_api_version
13802 ,p_commit => fnd_api.g_false
13803 ,p_init_msg_list => p_init_msg_list
13804 ,p_validation_level => fnd_api.g_valid_level_full
13805 ,p_instance_rec => l_upd_instance_rec
13806 ,p_ext_attrib_values_tbl => l_upd_ext_attrib_values_tbl
13807 ,p_party_tbl => l_upd_party_tbl
13808 ,p_account_tbl => l_upd_account_tbl
13809 ,p_pricing_attrib_tbl => l_upd_pricing_attrib_tbl
13810 ,p_org_assignments_tbl => l_upd_org_assignments_tbl
13811 ,p_asset_assignment_tbl => l_upd_asset_assignment_tbl
13812 ,p_txn_rec => l_upd_txn_rec
13813 ,x_instance_id_lst => l_upd_instance_id_lst
13814 ,x_return_status => x_return_status
13815 ,x_msg_count => x_msg_count
13816 ,x_msg_data => x_msg_data
13817 );
13818
13819 --dbms_output.put_line('After calling IB API for update status '||x_return_status);
13820 --dbms_output.put_line('After calling IB API update instance_id '||to_char(l_instance_rec.instance_id));
13821 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13822 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13823 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13824 RAISE OKL_API.G_EXCEPTION_ERROR;
13825 END IF;
13826
13827 --bug# 2982927 : resetting okc inv org again from k header :
13828 okl_context.set_okc_org_context(p_chr_id => p_chr_id);
13829 --bug# 2982927
13830
13831 END IF;
13832
13833
13834 IF (l_serialized = OKL_API.G_TRUE) THEN
13835 NULL;
13836 --dbms_output.put_line('Serialized');
13837 x_instance_id := l_instance_rec.instance_id;
13838 ELSE
13839 --dbms_output.put_line('Not Serialized');
13840 -- now process for new ib instance creation.
13841 --get trx record
13842 l_instance_rec.instance_id := NULL;
13843 l_instance_rec.instance_number := NULL;
13844 l_instance_rec.serial_number := NULL;
13845 l_instance_rec.creation_complete_flag := NULL;
13846 l_instance_rec.quantity := p_split_qty;
13847 l_instance_rec.object_version_number := NULL;
13848 --Bug# 3066375:
13849 l_instance_rec.call_contracts := okl_api.g_false;
13850
13851
13852 get_trx_rec(p_api_version => p_api_version,
13853 p_init_msg_list => p_init_msg_list,
13854 x_return_status => x_return_status,
13855 x_msg_count => x_msg_count,
13856 x_msg_data => x_msg_data,
13857 p_cle_id => p_ib_cle_id,
13858 p_transaction_type => G_IB_SPLIT_TXN_TYPE,
13859 x_trx_rec => l_txn_rec);
13860
13861 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13862 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13863 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13864 RAISE OKL_API.G_EXCEPTION_ERROR;
13865 END IF;
13866
13867 --get party tbl
13868 get_party_rec(p_api_version => p_api_version,
13869 p_init_msg_list => p_init_msg_list,
13870 x_return_status => x_return_status,
13871 x_msg_count => x_msg_count,
13872 x_msg_data => x_msg_data,
13873 p_chrv_id => p_chr_id,
13874 x_party_tbl => l_party_tbl);
13875
13876 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13877 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13878 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13879 RAISE OKL_API.G_EXCEPTION_ERROR;
13880 END IF;
13881
13882 --get party accoutnt id
13883 l_party_account := NULL;
13884 OPEN party_account_csr(p_chrv_id => p_chr_id);
13885 FETCH party_account_csr INTO
13886 l_party_account;
13887 IF party_account_csr%NOTFOUND THEN
13888 --raise error for unable to find inv mstr org
13889 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
13890 p_msg_name => G_CUST_ACCOUNT_FOUND,
13891 p_token1 => G_CONTRACT_ID_TOKEN,
13892 p_token1_value => TO_CHAR(p_chr_id)
13893 );
13894 RAISE OKL_API.G_EXCEPTION_ERROR;
13895 ELSE
13896 NULL;
13897 END IF;
13898 CLOSE party_account_csr;
13899
13900 l_account_tbl(1).instance_party_id := l_party_tbl(1).party_id;
13901 l_account_tbl(1).party_account_id := l_party_account;
13902 l_account_tbl(1).relationship_type_code := G_PARTY_RELATIONSHIP;
13903 --l_account_tbl(1).active_start_date := sysdate;
13904 l_account_tbl(1).parent_tbl_index := 1;
13905
13906 --dbms_output.put_line('before calling ib API');
13907
13908 csi_item_instance_pub.create_item_instance(p_api_version => p_api_version,
13909 p_commit => fnd_api.g_false,
13910 p_init_msg_list => p_init_msg_list,
13911 p_instance_rec => l_instance_rec,
13912 p_validation_level => fnd_api.g_valid_level_full,
13913 p_ext_attrib_values_tbl => l_ext_attrib_values_tbl,
13914 p_party_tbl => l_party_tbl,
13915 p_account_tbl => l_account_tbl,
13916 p_pricing_attrib_tbl => l_pricing_attrib_tbl,
13917 p_org_assignments_tbl => l_org_assignments_tbl,
13918 p_asset_assignment_tbl => l_asset_assignment_tbl,
13919 p_txn_rec => l_txn_rec,
13920 x_return_status => x_return_status,
13921 x_msg_count => x_msg_count,
13922 x_msg_data => x_msg_data);
13923
13924 --dbms_output.put_line('After calling IB API status '||x_return_status);
13925 --dbms_output.put_line('After calling IB API instance_id '||to_char(l_instance_rec.instance_id));
13926
13927 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13928 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13929 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13930 RAISE OKL_API.G_EXCEPTION_ERROR;
13931 END IF;
13932
13933 --bug# 2982927 : resetting okc inv org again from k header :
13934 okl_context.set_okc_org_context(p_chr_id => p_chr_id);
13935 --bug# 2982927
13936
13937 END IF; --If serail number split
13938 x_instance_id := l_instance_rec.instance_id;
13939 END IF; --type of split
13940
13941 OKL_API.END_ACTIVITY (x_msg_count,
13942 x_msg_data );
13943 EXCEPTION
13944 WHEN OKL_API.G_EXCEPTION_ERROR THEN
13945 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
13946 l_api_name,
13947 G_PKG_NAME,
13948 'OKL_API.G_RET_STS_ERROR',
13949 x_msg_count,
13950 x_msg_data,
13951 '_PVT');
13952 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
13953 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
13954 l_api_name,
13955 G_PKG_NAME,
13956 'OKL_API.G_RET_STS_UNEXP_ERROR',
13957 x_msg_count,
13958 x_msg_data,
13959 '_PVT');
13960 WHEN OTHERS THEN
13961 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
13962 l_api_name,
13963 G_PKG_NAME,
13964 'OTHERS',
13965 x_msg_count,
13966 x_msg_data,
13967 '_PVT');
13968 END create_ib_instance;
13969 --------------------------------------------------------------------------------
13970 --Start of Comments
13971 --Procedure Name : consolidate_ib_lines (local)
13972 --Description : Will consoldate the ib lines for split asset into
13973 -- components when either source or target asset is serialized
13974 --History :
13975 -- 30-Jan-2003 ashish.singh Created
13976 --End of Comments
13977 --------------------------------------------------------------------------------
13978 PROCEDURE consolidate_ib_lines(p_api_version IN NUMBER,
13979 p_init_msg_list IN VARCHAR2,
13980 x_return_status OUT NOCOPY VARCHAR2,
13981 x_msg_count OUT NOCOPY NUMBER,
13982 x_msg_data OUT NOCOPY VARCHAR2,
13983 p_txdv_rec IN txdv_rec_type,
13984 p_txlv_rec IN txlv_rec_type
13985 ) IS
13986 l_return_status VARCHAR2(1) DEFAULT OKL_API.G_RET_STS_SUCCESS;
13987 l_api_name CONSTANT VARCHAR2(30) := 'CONSOLIDATE_IB_LINES';
13988 l_api_version CONSTANT NUMBER := 1.0;
13989
13990 --Cursor to get model line inventory item on parent line
13991 CURSOR inv_itm_csr(p_fa_line_id IN NUMBER) IS
13992 SELECT cim_model.object1_id1,
13993 cim_model.object1_id2,
13994 cle_fa.dnz_chr_id,
13995 cle_fa.cle_id
13996 FROM okc_k_items cim_model,
13997 okc_k_lines_b cle_model,
13998 okc_line_styles_b lse_model,
13999 okc_k_lines_b cle_fa
14000 WHERE cim_model.dnz_chr_id = cle_model.dnz_chr_id
14001 AND cim_model.cle_id = cle_model.id
14002 AND cle_model.lse_id = lse_model.id
14003 AND lse_model.lty_code = 'ITEM'
14004 AND cle_model.cle_id = cle_fa.cle_id
14005 AND cle_model.dnz_chr_id = cle_fa.dnz_chr_id
14006 AND cle_fa.id = p_fa_line_id;
14007
14008 l_object1_id1 OKC_K_ITEMS.object1_id1%TYPE;
14009 l_object1_id2 OKC_K_ITEMS.object1_id2%TYPE;
14010 l_chr_id NUMBER;
14011 l_cle_id NUMBER; --top line id
14012
14013 l_parent_serialized VARCHAR2(1) DEFAULT OKL_API.G_FALSE;
14014 l_child_serialized VARCHAR2(1) DEFAULT OKL_API.G_FALSE;
14015
14016 --Cursor to fetch ib instances
14017 CURSOR ib_inst_csr(p_fin_ast_id IN NUMBER) IS
14018 SELECT cle_ib.id,
14019 cle_inst.id
14020 FROM okc_k_lines_b cle_ib,
14021 okc_line_styles_b lse_ib,
14022 okc_k_lines_b cle_inst,
14023 okc_line_styles_b lse_inst
14024 WHERE cle_ib.lse_id = lse_ib.id
14025 AND lse_ib.lty_code = 'INST_ITEM'
14026 AND cle_ib.dnz_chr_id = cle_inst.dnz_chr_id
14027 AND cle_ib.cle_id = cle_inst.id
14028 AND cle_inst.lse_id = lse_inst.id
14029 AND lse_inst.lty_code = 'FREE_FORM2'
14030 AND cle_inst.cle_id = p_fin_ast_id;
14031
14032 l_ib_cle_id OKC_K_LINES_B.ID%TYPE;
14033 l_inst_cle_id OKC_K_LINES_B.ID%TYPE;
14034
14035 --Cursor to fetch new ib instance lines
14036 --Cursor ib_inst_csr(p_fin_ast_id IN NUMBER) is
14037 CURSOR new_ib_inst_csr(p_txd_id IN NUMBER) IS
14038 SELECT cle_ib.id,
14039 cle_inst.id
14040 FROM okc_k_lines_b cle_ib,
14041 okc_line_styles_b lse_ib,
14042 okc_k_lines_b cle_inst,
14043 okc_line_styles_b lse_inst,
14044 okc_k_lines_b cle_fa,
14045 okl_txd_assets_b txdb
14046 WHERE cle_ib.lse_id = lse_ib.id
14047 AND lse_ib.lty_code = 'INST_ITEM'
14048 AND cle_ib.dnz_chr_id = cle_inst.dnz_chr_id
14049 AND cle_ib.cle_id = cle_inst.id
14050 AND cle_inst.lse_id = lse_inst.id
14051 AND lse_inst.lty_code = 'FREE_FORM2'
14052 AND cle_inst.cle_id = cle_fa.cle_id
14053 AND cle_fa.id = txdb.target_kle_id
14054 AND txdb.id = p_txd_id;
14055
14056 l_tgt_ib_cle_id OKC_K_LINES_B.ID%TYPE;
14057 l_tgt_inst_cle_id OKC_K_LINES_B.ID%TYPE;
14058
14059
14060 --cursor to fetch child asset top line is
14061 CURSOR child_cle_csr(p_txd_id IN NUMBER) IS
14062 SELECT cle_fa.cle_id
14063 FROM okc_k_lines_b cle_fa,
14064 okl_txd_assets_b txdb
14065 WHERE cle_fa.id = txdb.target_kle_id
14066 AND txdb.id = p_txd_id;
14067
14068 l_target_cle_id OKC_K_LINES_B.ID%TYPE;
14069 l_new_inst_cle_id OKC_K_LINES_B.ID%TYPE;
14070
14071 --cursor to fetch the newly created ib line
14072 CURSOR new_ib_csr(p_new_inst_id IN NUMBER) IS
14073 SELECT id
14074 FROM okc_k_lines_b cle_new_ib
14075 WHERE cle_new_ib.cle_id = p_new_inst_id;
14076
14077 l_new_ib_cle_id OKC_K_LINES_B.ID%TYPE;
14078
14079 --table of line records for updating statuses of the new lines
14080 l_clev_tbl OKL_OKC_MIGRATION_PVT.clev_tbl_type;
14081 lx_clev_tbl OKL_OKC_MIGRATION_PVT.clev_tbl_type;
14082 j NUMBER DEFAULT 0;
14083
14084 -- Bug# 5946411: ER
14085 --cursor to check the status of asset
14086 CURSOR l_cleb_sts_csr(pcleid IN NUMBER) IS
14087 SELECT cleb.sts_code sts_code
14088 FROM okc_k_lines_b cleb
14089 WHERE cleb.id = pcleid;
14090 l_cle_status okc_k_lines_b.sts_code%TYPE;
14091 -- Bug# 5946411: ER End
14092 BEGIN
14093 x_return_status := OKL_API.G_RET_STS_SUCCESS;
14094 -- Call start_activity to create savepoint, check compatibility
14095 -- and initialize message list
14096 x_return_status := OKL_API.START_ACTIVITY (
14097 l_api_name
14098 ,p_init_msg_list
14099 ,'_PVT'
14100 ,x_return_status);
14101 -- Check if activity started successfully
14102 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14103 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14104 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14105 RAISE OKL_API.G_EXCEPTION_ERROR;
14106 END IF;
14107 -- Bug# 5946411: ER
14108 -- get the status of the parent line id
14109 OPEN l_cleb_sts_csr( p_txlv_rec.kle_id);
14110 FETCH l_cleb_sts_csr INTO l_cle_status;
14111 close l_cleb_sts_csr;
14112 --dbms_output.put_line('consolidate_ib_line--p_txlv_rec.kle_id'||p_txlv_rec.kle_id);
14113 --dbms_output.put_line('Status set as l_cle_status'||l_cle_status);
14114 -- Bug# 5946411: ER End
14115
14116 OPEN inv_itm_csr(p_fa_line_id => p_txlv_rec.kle_id);
14117 FETCH inv_itm_csr INTO l_object1_id1,
14118 l_object1_id2,
14119 l_chr_id,
14120 l_cle_id;
14121 CLOSE inv_itm_csr;
14122
14123 --evaluate if parent asset is serialized
14124 l_parent_serialized := OKL_API.G_FALSE;
14125 Is_Inv_Item_Serialized(p_api_version => p_api_version,
14126 p_init_msg_list => p_init_msg_list,
14127 x_return_status => x_return_status,
14128 x_msg_count => x_msg_count,
14129 x_msg_data => x_msg_data,
14130 p_inv_item_id => TO_NUMBER(l_object1_id1),
14131 p_chr_id => l_chr_id,
14132 p_cle_id => NULL,
14133 x_serialized => l_parent_serialized);
14134 --dbms_output.put_line('After parent serialized '||x_return_status);
14135 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14136 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14137 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14138 RAISE OKL_API.G_EXCEPTION_ERROR;
14139 END IF;
14140
14141 --evaluate if child asset is serialized
14142 l_child_serialized := OKL_API.G_FALSE;
14143 Is_Inv_Item_Serialized(p_api_version => p_api_version,
14144 p_init_msg_list => p_init_msg_list,
14145 x_return_status => x_return_status,
14146 x_msg_count => x_msg_count,
14147 x_msg_data => x_msg_data,
14148 p_inv_item_id => p_txdv_rec.inventory_item_id,
14149 p_chr_id => l_chr_id,
14150 p_cle_id => NULL,
14151 x_serialized => l_child_serialized);
14152 --dbms_output.put_line('After child serialized '||x_return_status);
14153 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14154 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14155 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14156 RAISE OKL_API.G_EXCEPTION_ERROR;
14157 END IF;
14158
14159 IF l_parent_serialized = OKL_API.G_FALSE AND l_child_serialized = OKL_API.G_FALSE THEN
14160 --dbms_output.put_line('Both not serialized '||x_return_status);
14161 NULL;
14162 ELSIF l_parent_serialized = OKL_API.G_TRUE AND l_child_serialized = OKL_API.G_TRUE THEN
14163 --dbms_output.put_line('Both serialized '||x_return_status);
14164 NULL;
14165 ELSIF l_parent_serialized = OKL_API.G_TRUE AND l_child_serialized = OKL_API.G_FALSE THEN
14166 --dbms_output.put_line('Parent serialized,Child not'||x_return_status);
14167 --trim extra ib instance lines from child
14168 FOR i IN 1..(p_txlv_rec.current_units -1)
14169 LOOP
14170 --Open ib_inst_csr(p_fin_ast_id => l_cle_id);
14171 OPEN new_ib_inst_csr(p_txd_id => p_txdv_rec.id);
14172 FETCH new_ib_inst_csr INTO l_tgt_ib_cle_id,
14173 l_tgt_inst_cle_id;
14174 CLOSE new_ib_inst_csr;
14175 delete_instance_lines(p_api_version => p_api_version,
14176 p_init_msg_list => p_init_msg_list,
14177 x_return_status => x_return_status,
14178 x_msg_count => x_msg_count,
14179 x_msg_data => x_msg_data,
14180 p_inst_cle_id => l_tgt_inst_cle_id,
14181 p_ib_cle_id => l_tgt_ib_cle_id);
14182 END LOOP;
14183
14184 ELSIF l_parent_serialized = OKL_API.G_FALSE AND l_child_serialized = OKL_API.G_TRUE THEN
14185 --dbms_output.put_line('Add extra ib instance line to child '||x_return_status);
14186 --Add extra ib instance line to child
14187 OPEN ib_inst_csr(p_fin_ast_id => l_cle_id);
14188 FETCH ib_inst_csr INTO l_ib_cle_id,
14189 l_inst_cle_id;
14190 CLOSE ib_inst_csr;
14191
14192 OPEN child_cle_csr(p_txd_id => p_txdv_rec.id);
14193 FETCH child_cle_csr INTO l_target_cle_id;
14194 CLOSE child_cle_csr;
14195
14196 j := 0;
14197 FOR i IN 1..(p_txlv_rec.current_units-1)
14198 LOOP
14199 --dbms_output.put_line('before Copying lines '||to_char(i)||x_return_status);
14200 --dbms_output.put_line('source cle '||to_char(l_inst_cle_id)||x_return_status);
14201 --dbms_output.put_line('target cle '||to_char(l_target_cle_id)||x_return_status);
14202
14203 OKL_COPY_CONTRACT_PUB.COPY_CONTRACT_LINES(
14204 p_api_version => p_api_version,
14205 p_init_msg_list => p_init_msg_list,
14206 x_return_status => x_return_status,
14207 x_msg_count => x_msg_count,
14208 x_msg_data => x_msg_data,
14209 p_from_cle_id => l_inst_cle_id,
14210 p_to_cle_id => l_target_cle_id,
14211 p_to_chr_id => NULL,
14212 p_to_template_yn => 'N',
14213 p_copy_reference => 'COPY',
14214 p_copy_line_party_yn => 'Y',
14215 p_renew_ref_yn => 'N',
14216 x_cle_id => l_new_inst_cle_id);
14217
14218 --dbms_output.put_line('After Copying lines '||to_char(i)||x_return_status);
14219 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14220 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14221 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14222 RAISE OKL_API.G_EXCEPTION_ERROR;
14223 END IF;
14224 --making the line table for update of status
14225 j := j+1;
14226 l_clev_tbl(j).id := l_new_inst_cle_id;
14227 --Bug# 5946411: ER
14228 --l_clev_tbl(j).sts_code := 'BOOKED';
14229 l_clev_tbl(j).sts_code:=l_cle_status;
14230 --dbms_output.put_line('consolidate_ib_lines l_clev_tbl(j).sts_code-->'||l_clev_tbl(j).sts_code);
14231 --Bug# 5946411: ER End
14232 OPEN new_ib_csr(p_new_inst_id=> l_new_inst_cle_id);
14233 FETCH new_ib_csr INTO l_new_ib_cle_id;
14234 CLOSE new_ib_csr;
14235 j := j+1;
14236 l_clev_tbl(j).id := l_new_ib_cle_id;
14237 --Bug# 5946411: ER
14238 --l_clev_tbl(j).sts_code := 'BOOKED';
14239 l_clev_tbl(j).sts_code := l_cle_status;
14240 --dbms_output.put_line('consolidate_ib_lines * l_clev_tbl(j).sts_code-->'||l_clev_tbl(j).sts_code);
14241 --Bug# 5946411: ER End
14242 --
14243 END LOOP;
14244 --change status of newly created lines to BOOKED
14245 IF l_clev_tbl.COUNT > 0 THEN
14246 OKL_OKC_MIGRATION_PVT.update_contract_line(
14247 p_api_version => p_api_version,
14248 p_init_msg_list => p_init_msg_list,
14249 x_return_status => x_return_status,
14250 x_msg_count => x_msg_count,
14251 x_msg_data => x_msg_data,
14252 p_restricted_update => OKC_API.G_FALSE,
14253 p_clev_tbl => l_clev_tbl,
14254 x_clev_tbl => lx_clev_tbl);
14255
14256 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14257 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14258 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14259 RAISE OKL_API.G_EXCEPTION_ERROR;
14260 END IF;
14261 END IF;
14262 END IF;
14263 OKL_API.END_ACTIVITY (x_msg_count,
14264 x_msg_data );
14265 EXCEPTION
14266 WHEN OKL_API.G_EXCEPTION_ERROR THEN
14267 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
14268 l_api_name,
14269 G_PKG_NAME,
14270 'OKL_API.G_RET_STS_ERROR',
14271 x_msg_count,
14272 x_msg_data,
14273 '_PVT');
14274 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
14275 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
14276 l_api_name,
14277 G_PKG_NAME,
14278 'OKL_API.G_RET_STS_UNEXP_ERROR',
14279 x_msg_count,
14280 x_msg_data,
14281 '_PVT');
14282 WHEN OTHERS THEN
14283 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
14284 l_api_name,
14285 G_PKG_NAME,
14286 'OTHERS',
14287 x_msg_count,
14288 x_msg_data,
14289 '_PVT');
14290 END consolidate_ib_lines;
14291 --------------------------------------------------------------------------------
14292 --Start of Comments
14293 --Procedure Name : Relink_Ib_Lines
14294 --Description : Local procedure will be called if invnetory item is serial
14295 -- Number Controlled and split criteria is split into individu
14296 -- -als
14297 --History :
14298 -- 20-Nov-2003 avsingh Bug#3222804
14299 -- Fixed as part of this bug
14300 --End of Comments
14301 --------------------------------------------------------------------------------
14302 PROCEDURE Relink_Ib_Lines( p_api_version IN NUMBER,
14303 p_init_msg_list IN VARCHAR2,
14304 x_return_status OUT NOCOPY VARCHAR2,
14305 x_msg_count OUT NOCOPY NUMBER,
14306 x_msg_data OUT NOCOPY VARCHAR2,
14307 p_txlv_rec IN txlv_rec_type) IS
14308
14309 l_return_status VARCHAR2(1) DEFAULT OKL_API.G_RET_STS_SUCCESS;
14310 l_api_name CONSTANT VARCHAR2(30) := 'RELINK_IB_LINES';
14311 l_api_version CONSTANT NUMBER := 1.0;
14312
14313 --cursor to fetch top line id for a fixed asset line
14314 CURSOR l_cleb_csr (p_cle_id IN NUMBER) IS
14315 SELECT cleb.cle_id
14316 FROM okc_k_lines_b cleb
14317 WHERE cleb.id = p_cle_id;
14318
14319 l_parent_fina_cle_id NUMBER DEFAULT NULL;
14320 l_child_fina_cle_id NUMBER DEFAULT NULL;
14321
14322
14323 --cursor to fetch child instance lines
14324 CURSOR l_target_kle_csr(p_tal_id IN NUMBER) IS
14325 SELECT txdb.target_kle_id
14326 FROM okl_txd_assets_b txdb
14327 WHERE txdb.tal_id = p_tal_id;
14328
14329 l_target_kle_id NUMBER DEFAULT 0;
14330
14331 --cursor to fetch Inastance line id
14332 CURSOR l_instcle_csr(p_cle_id IN NUMBER) IS
14333 SELECT cleb.id
14334 FROM okc_k_lines_b cleb,
14335 okc_line_styles_b lseb
14336 WHERE lseb.id = cleb.lse_id
14337 AND lseb.lty_code = 'FREE_FORM2'
14338 AND cleb.sts_code <> 'ABANDONED'
14339 AND cleb.cle_id = p_cle_id;
14340
14341 l_instcle_id NUMBER DEFAULT NULL;
14342
14343 l_clev_rec okl_okc_migration_pvt.clev_rec_type;
14344 lx_clev_rec okl_okc_migration_pvt.clev_rec_type;
14345
14346 l_serialized VARCHAR2(1) DEFAULT OKL_API.G_FALSE;
14347
14348 BEGIN
14349
14350 x_return_status := OKL_API.G_RET_STS_SUCCESS;
14351 -- Call start_activity to create savepoint, check compatibility
14352 -- and initialize message list
14353 x_return_status := OKL_API.START_ACTIVITY (
14354 l_api_name
14355 ,p_init_msg_list
14356 ,'_PVT'
14357 ,x_return_status);
14358 -- Check if activity started successfully
14359 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14360 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14361 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14362 RAISE OKL_API.G_EXCEPTION_ERROR;
14363 END IF;
14364
14365 --get the top line id for parent fixed asset line
14366
14367 OPEN l_cleb_csr(p_cle_id => p_txlv_rec.kle_id);
14368 FETCH l_cleb_csr INTO l_parent_fina_cle_id;
14369 IF l_cleb_csr%NOTFOUND THEN
14370 NULL;
14371 END IF;
14372 CLOSE l_cleb_csr;
14373
14374 IF NVL(l_parent_fina_cle_id,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM THEN
14375
14376 l_serialized := is_serialized(p_cle_id => l_parent_fina_cle_id);
14377 IF l_serialized = OKL_API.G_TRUE THEN
14378 l_target_kle_id := NULL;
14379 OPEN l_target_kle_csr(p_tal_id => p_txlv_rec.id);
14380 LOOP
14381 FETCH l_target_kle_csr INTO l_target_kle_id;
14382 EXIT WHEN l_target_kle_csr%NOTFOUND;
14383 IF l_target_kle_id = p_txlv_rec.kle_id THEN
14384 NULL;
14385 ELSE
14386 l_child_fina_cle_id := NULL;
14387 OPEN l_cleb_csr(p_cle_id => l_target_kle_id);
14388 FETCH l_cleb_csr INTO l_child_fina_cle_id;
14389 IF l_cleb_csr%NOTFOUND THEN
14390 NULL;
14391 END IF;
14392 CLOSE l_cleb_csr;
14393
14394 IF NVL(l_child_fina_cle_id,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM THEN
14395 l_instcle_id := NULL;
14396 OPEN l_instcle_csr(p_cle_id => l_parent_fina_cle_id);
14397 FETCH l_instcle_csr INTO l_instcle_id;
14398 IF l_instcle_csr%NOTFOUND THEN
14399 NULL;
14400 END IF;
14401 CLOSE l_instcle_csr;
14402 IF NVL(l_instcle_id,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM THEN
14403 l_clev_rec.id := l_instcle_id;
14404 l_clev_rec.cle_id := l_child_fina_cle_id;
14405 OKL_OKC_MIGRATION_PVT.update_contract_line(p_api_version => p_api_version,
14406 p_init_msg_list => p_init_msg_list,
14407 x_return_status => x_return_status,
14408 x_msg_count => x_msg_count,
14409 x_msg_data => x_msg_data,
14410 p_clev_rec => l_clev_rec,
14411 x_clev_rec => lx_clev_rec);
14412 --dbms_output.put_line('after updating contract item for Asset link '||x_return_status);
14413 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14414 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14415 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14416 RAISE OKL_API.G_EXCEPTION_ERROR;
14417 END IF;
14418 END IF;
14419 END IF;
14420 END IF;
14421 END LOOP;
14422 CLOSE l_target_kle_csr;
14423 ELSIF l_serialized = OKL_API.G_FALSE THEN
14424
14425 --this processing will be done in the create instance routine
14426 --as new IB instances need to be created
14427 NULL;
14428
14429 END IF;
14430 END IF;
14431 OKL_API.END_ACTIVITY (x_msg_count,
14432 x_msg_data );
14433 EXCEPTION
14434 WHEN OKL_API.G_EXCEPTION_ERROR THEN
14435 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
14436 l_api_name,
14437 G_PKG_NAME,
14438 'OKL_API.G_RET_STS_ERROR',
14439 x_msg_count,
14440 x_msg_data,
14441 '_PVT');
14442 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
14443 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
14444 l_api_name,
14445 G_PKG_NAME,
14446 'OKL_API.G_RET_STS_UNEXP_ERROR',
14447 x_msg_count,
14448 x_msg_data,
14449 '_PVT');
14450 WHEN OTHERS THEN
14451 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
14452 l_api_name,
14453 G_PKG_NAME,
14454 'OTHERS',
14455 x_msg_count,
14456 x_msg_data,
14457 '_PVT');
14458 END Relink_Ib_Lines;
14459 --------------------------------------------------------------------------------
14460 --Bug# : 11.5.10
14461 --Name : recalculate_costs
14462 --Creation : 23-Sep-2003
14463 --Purpose : Local procedure to recalculate and update costs on split lines
14464 --------------------------------------------------------------------------------
14465 PROCEDURE recalculate_costs(
14466 p_api_version IN NUMBER,
14467 p_init_msg_list IN VARCHAR2,
14468 x_return_status OUT NOCOPY VARCHAR2,
14469 x_msg_count OUT NOCOPY NUMBER,
14470 x_msg_data OUT NOCOPY VARCHAR2,
14471 p_chr_id IN NUMBER,
14472 p_cle_tbl IN cle_tbl_type
14473 ) IS
14474
14475 l_return_status VARCHAR2(1) DEFAULT OKL_API.G_RET_STS_SUCCESS;
14476 l_api_name CONSTANT VARCHAR2(30) := 'RECALCULATE_COSTS';
14477 l_api_version CONSTANT NUMBER := 1.0;
14478
14479 l_oec NUMBER;
14480 l_cap_amount NUMBER;
14481 l_residual_value NUMBER;
14482
14483
14484 l_clev_rec okl_okc_migration_pvt.clev_rec_type;
14485 l_klev_rec okl_contract_pub.klev_rec_type;
14486 lx_clev_rec okl_okc_migration_pvt.clev_rec_type;
14487 lx_klev_rec okl_contract_pub.klev_rec_type;
14488
14489 i NUMBER;
14490
14491 BEGIN
14492
14493 x_return_status := OKL_API.G_RET_STS_SUCCESS;
14494 -- Call start_activity to create savepoint, check compatibility
14495 -- and initialize message list
14496 x_return_status := OKL_API.START_ACTIVITY (
14497 l_api_name
14498 ,p_init_msg_list
14499 ,'_PVT'
14500 ,x_return_status);
14501 -- Check if activity started successfully
14502 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14503 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14504 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14505 RAISE OKL_API.G_EXCEPTION_ERROR;
14506 END IF;
14507
14508 IF p_cle_tbl.COUNT > 0 THEN
14509 FOR i IN p_cle_tbl.FIRST..p_cle_tbl.LAST
14510 LOOP
14511 --calculate and update subsidised OEC , Capital Amount, Residual Value
14512 OKL_EXECUTE_FORMULA_PUB.EXECUTE(p_api_version => p_api_version,
14513 p_init_msg_list => p_init_msg_list,
14514 x_return_status => x_return_status,
14515 x_msg_count => x_msg_count,
14516 x_msg_data => x_msg_data,
14517 p_formula_name => G_FORMULA_OEC,
14518 p_contract_id => p_chr_id,
14519 p_line_id => p_cle_tbl(i).cle_id,
14520 x_value => l_oec);
14521
14522 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14523 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14524 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14525 RAISE OKL_API.G_EXCEPTION_ERROR;
14526 END IF;
14527
14528 OKL_EXECUTE_FORMULA_PUB.EXECUTE(p_api_version => p_api_version,
14529 p_init_msg_list => p_init_msg_list,
14530 x_return_status => x_return_status,
14531 x_msg_count => x_msg_count,
14532 x_msg_data => x_msg_data,
14533 p_formula_name => G_FORMULA_CAP,
14534 p_contract_id => p_chr_id,
14535 p_line_id => p_cle_tbl(i).cle_id,
14536 x_value => l_cap_amount);
14537
14538 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14539 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14540 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14541 RAISE OKL_API.G_EXCEPTION_ERROR;
14542 END IF;
14543
14544 OKL_EXECUTE_FORMULA_PUB.EXECUTE(p_api_version => p_api_version,
14545 p_init_msg_list => p_init_msg_list,
14546 x_return_status => x_return_status,
14547 x_msg_count => x_msg_count,
14548 x_msg_data => x_msg_data,
14549 p_formula_name => G_FORMULA_RES,
14550 p_contract_id => p_chr_id,
14551 p_line_id => p_cle_tbl(i).cle_id,
14552 x_value => l_residual_value);
14553
14554 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14555 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14556 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14557 RAISE OKL_API.G_EXCEPTION_ERROR;
14558 END IF;
14559
14560 ----------------------------------------------------------------------
14561 --call api to update costs on asset line
14562 ----------------------------------------------------------------------
14563 l_clev_rec.id := p_cle_tbl(i).cle_id;
14564 l_klev_rec.id := p_cle_tbl(i).cle_id;
14565 l_klev_rec.oec := l_oec;
14566 l_klev_rec.capital_amount := l_cap_amount;
14567 l_klev_rec.residual_value := l_residual_value;
14568
14569
14570 okl_contract_pub.update_contract_line
14571 (p_api_version => p_api_version,
14572 p_init_msg_list => p_init_msg_list,
14573 x_return_status => x_return_status,
14574 x_msg_count => x_msg_count,
14575 x_msg_data => x_msg_data,
14576 p_clev_rec => l_clev_rec,
14577 p_klev_rec => l_klev_rec,
14578 x_clev_rec => lx_clev_rec,
14579 x_klev_rec => lx_klev_rec
14580 );
14581
14582 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14583 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14584 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14585 RAISE OKL_API.G_EXCEPTION_ERROR;
14586 END IF;
14587 END LOOP;
14588 END IF;
14589
14590 OKL_API.END_ACTIVITY (x_msg_count,x_msg_data );
14591 EXCEPTION
14592 WHEN OKL_API.G_EXCEPTION_ERROR THEN
14593 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
14594 l_api_name,
14595 G_PKG_NAME,
14596 'OKL_API.G_RET_STS_ERROR',
14597 x_msg_count,
14598 x_msg_data,
14599 '_PVT');
14600 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
14601 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
14602 l_api_name,
14603 G_PKG_NAME,
14604 'OKL_API.G_RET_STS_UNEXP_ERROR',
14605 x_msg_count,
14606 x_msg_data,
14607 '_PVT');
14608 WHEN OTHERS THEN
14609 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
14610 l_api_name,
14611 G_PKG_NAME,
14612 'OTHERS',
14613 x_msg_count,
14614 x_msg_data,
14615 '_PVT');
14616 END recalculate_costs;
14617 --------------------------------------------------------------------------------
14618 --Start of Comments
14619 --Procedure Name : Split_Asset
14620 --Description : Selects the split Asset transaction against the line
14621 -- and splits the Asset in OKL and FA
14622 --History :
14623 -- 03-Nov-2001 ashish.singh Created
14624 -- 12-Aug-2005 smadhava Fix for Bug# 4508050
14625 --End of Comments
14626 --------------------------------------------------------------------------------
14627 PROCEDURE Split_Fixed_Asset(p_api_version IN NUMBER,
14628 p_init_msg_list IN VARCHAR2,
14629 x_return_status OUT NOCOPY VARCHAR2,
14630 x_msg_count OUT NOCOPY NUMBER,
14631 x_msg_data OUT NOCOPY VARCHAR2,
14632 p_txdv_tbl IN txdv_tbl_type,
14633 p_txlv_rec IN txlv_rec_type,
14634 x_cle_tbl OUT NOCOPY cle_tbl_type,
14635 --Bug# 6344223
14636 p_source_call IN VARCHAR2 DEFAULT 'UI') IS
14637
14638 l_return_status VARCHAR2(1) DEFAULT OKL_API.G_RET_STS_SUCCESS;
14639 l_api_name CONSTANT VARCHAR2(30) := 'SPLIT_FIXED_ASSET';
14640 l_api_version CONSTANT NUMBER := 1.0;
14641
14642 CURSOR k_line_curs(p_fa_line_id IN NUMBER) IS
14643 SELECT cle_id,
14644 dnz_chr_id,
14645 --Bug# 6373605 start
14646 sts_code
14647 --Bug# 6373605 end
14648 FROM okc_k_lines_b
14649 WHERE id = p_fa_line_id;
14650
14651 l_source_cle_id NUMBER;
14652 l_chr_id NUMBER;
14653 i NUMBER;
14654 --Bug# 6373605 start
14655 l_sts_code okc_k_lines_b.STS_CODE%TYPE;
14656 --Bug# 6373605 end
14657
14658 l_txdv_rec txdv_rec_type;
14659 l_txlv_rec txlv_rec_type;
14660
14661 l_split_cle_id NUMBER;
14662 l_split_cle_id_orig NUMBER; -- 7626121
14663 l_cle_tbl cle_tbl_type;
14664 l_ast_line_rec ast_line_rec_type;
14665
14666 CURSOR c_cim(p_id IN NUMBER) IS
14667 SELECT id,
14668 cle_id
14669 FROM okc_k_items cim
14670 WHERE EXISTS
14671 (SELECT '1'
14672 FROM okl_txd_assets_b txd
14673 WHERE txd.target_kle_id = cim.cle_id
14674 AND txd.id = p_id
14675 );
14676
14677 l_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type;
14678 l_cim_id NUMBER;
14679 l_cimv_rec cimv_rec_type;
14680 l_cimv_rec_out cimv_rec_type;
14681 l_cim_cle_id NUMBER;
14682
14683 CURSOR ib_item_cur (p_fa_line_id IN NUMBER) IS
14684 SELECT cim.object1_id1,
14685 cim.object1_id2,
14686 cim.id,
14687 cim.cle_id,
14688 cim.dnz_chr_id
14689 FROM OKC_K_ITEMS cim,
14690 OKC_K_LINES_B inst_item,
14691 OKC_LINE_STYLES_B inst_item_lse,
14692 OKC_K_LINES_B f_frm2,
14693 OKC_LINE_STYLES_B f_frm2_lse,
14694 OKC_K_LINES_B fa
14695 WHERE cim.cle_id = inst_item.id
14696 AND cim.dnz_chr_id = inst_item.dnz_chr_id
14697 AND inst_item.cle_id = f_frm2.id
14698 AND inst_item.lse_id = inst_item_lse.id
14699 AND inst_item_lse.lty_code = 'INST_ITEM'
14700 AND f_frm2.cle_id = fa.cle_id
14701 AND f_frm2.lse_id = f_frm2_lse.id
14702 AND f_frm2_lse.lty_code = 'FREE_FORM2'
14703 AND fa.id = p_fa_line_id;
14704
14705 l_csi_id1 okc_k_items.object1_id1%TYPE;
14706 l_csi_id2 okc_k_items.object1_id2%TYPE;
14707 l_csi_cim_id okc_k_items.id%TYPE;
14708 l_csi_cle_id okc_k_items.cle_id%TYPE;
14709 l_csi_chr_id okc_k_items.dnz_chr_id%TYPE;
14710 l_csi_number_of_items okc_k_items.number_of_items%TYPE;
14711
14712 l_csi_instance_id NUMBER;
14713
14714 l_trxv_rec trxv_rec_type;
14715 lx_trxv_rec trxv_rec_type;
14716
14717 l_txdv_tbl txdv_tbl_type;
14718
14719 --cursor to find if asset added in current period
14720 CURSOR check_period_of_addition(p_asset_id IN NUMBER,
14721 p_book_type_code IN VARCHAR2) IS
14722 SELECT 'Y' -- 'Y' if the current period of the asset is period of addition.
14723 FROM dual
14724 WHERE NOT EXISTS
14725 (SELECT 'x'
14726 FROM fa_deprn_summary
14727 WHERE asset_id = p_asset_id
14728 AND book_type_code = p_book_type_code
14729 AND deprn_amount <> 0
14730 AND deprn_source_code = 'DEPRN'
14731 );
14732 l_check_period_of_addition VARCHAR2(1) DEFAULT NULL;
14733
14734 --cursor to get all books for parent asset
14735 CURSOR all_books_curs(p_asset_id IN NUMBER) IS
14736 SELECT
14737 id1,
14738 id2,
14739 name,
14740 description,
14741 book_type_code,
14742 book_class,
14743 asset_id,
14744 asset_number,
14745 serial_number,
14746 salvage_value,
14747 percent_salvage_value,
14748 life_in_months,
14749 acquisition_date,
14750 original_cost,
14751 cost,
14752 adjusted_cost,
14753 tag_number,
14754 current_units,
14755 reval_ceiling,
14756 new_used,
14757 manufacturer_name,
14758 model_number,
14759 asset_type,
14760 depreciation_category,
14761 deprn_start_date,
14762 deprn_method_code,
14763 rate_adjustment_factor,
14764 basic_rate,
14765 adjusted_rate,
14766 start_date_active,
14767 end_date_active,
14768 status,
14769 primary_uom_code,
14770 recoverable_cost,
14771 org_id,
14772 set_of_books_id
14773 FROM OKX_AST_BKS_V
14774 WHERE TRUNC(NVL(start_date_active,SYSDATE)) <= TRUNC(SYSDATE)
14775 AND TRUNC(NVL(end_date_active,SYSDATE+1)) >TRUNC(SYSDATE)
14776 AND book_class IN ('CORPORATE','TAX')
14777 AND asset_id = p_asset_id
14778 ORDER BY book_class,asset_id;
14779
14780 l_all_books_rec all_books_curs%ROWTYPE;
14781
14782 --Bug #2723498 :11.5.9 split asset by serial numbers
14783 CURSOR get_dup_inst_csr (p_asd_id IN NUMBER) IS
14784 SELECT f_frm2.id instance_id,
14785 inst_item.id ib_line_id
14786 FROM OKC_K_ITEMS cim,
14787 OKC_K_LINES_B inst_item,
14788 OKC_LINE_STYLES_B inst_item_lse,
14789 OKC_K_LINES_B f_frm2,
14790 OKC_LINE_STYLES_B f_frm2_lse,
14791 OKC_K_LINES_B fa,
14792 OKL_TXD_ASSETS_B asd
14793 WHERE cim.cle_id = inst_item.id
14794 AND cim.dnz_chr_id = inst_item.dnz_chr_id
14795 AND inst_item.cle_id = f_frm2.id
14796 AND inst_item.lse_id = inst_item_lse.id
14797 AND inst_item_lse.lty_code = 'INST_ITEM'
14798 AND f_frm2.cle_id = fa.cle_id
14799 AND f_frm2.lse_id = f_frm2_lse.id
14800 AND f_frm2_lse.lty_code = 'FREE_FORM2'
14801 AND fa.id = asd.target_kle_id
14802 AND asd.id = p_asd_id
14803 AND EXISTS (SELECT NULL
14804 FROM OKC_K_ITEMS cim_p,
14805 OKC_K_LINES_B inst_item_p,
14806 OKC_LINE_STYLES_B inst_item_lse_p,
14807 OKC_K_LINES_B f_frm2_p,
14808 OKC_LINE_STYLES_B f_frm2_lse_p,
14809 OKC_K_LINES_B fa_p,
14810 OKL_TXL_ASSETS_B tal
14811 WHERE cim_p.object1_id1 = cim.object1_id1
14812 AND cim_p.object1_id2 = cim.object1_id2
14813 AND cim_p.jtot_object1_code = cim.jtot_object1_code
14814 AND cim_p.dnz_chr_id = cim.dnz_chr_id
14815 AND cim_p.cle_id = inst_item_p.id
14816 AND cim_p.dnz_chr_id = inst_item_p.dnz_chr_id
14817 AND inst_item_p.cle_id = f_frm2_p.id
14818 AND inst_item_p.lse_id = inst_item_lse_p.id
14819 AND inst_item_lse_p.lty_code = 'INST_ITEM'
14820 AND f_frm2_p.cle_id = fa_p.cle_id
14821 AND f_frm2_p.lse_id = f_frm2_lse_p.id
14822 AND f_frm2_lse_p.lty_code = 'FREE_FORM2'
14823 AND fa_p.id = tal.kle_id
14824 AND tal.id = asd.tal_id
14825 );
14826
14827 l_dup_inst_cle_id OKC_K_LINES_B.ID%TYPE;
14828 l_dup_ib_cle_id OKC_K_LINES_B.ID%TYPE;
14829
14830 --Bug# : cursor to check if split is called by asset level termination process
14831 CURSOR asset_trmn_csr(pcleid IN NUMBER) IS
14832 SELECT '!'
14833 FROM DUAL
14834 WHERE EXISTS
14835 (SELECT 1
14836 FROM okl_trx_quotes_b h,
14837 okl_txl_quote_lines_b l,
14838 okl_trx_contracts t,
14839 okl_k_headers k
14840 WHERE h.id = l.qte_id
14841 AND h.id = t.qte_id
14842 AND h.khr_id = k.id
14843 AND (( k.deal_type LIKE 'LEASE%' AND h.qtp_code IN
14844 ('TER_PURCHASE','TER_RECOURSE','TER_ROLL_PURCHASE','TER_MAN_PURCHASE'))
14845 OR
14846 (k.deal_type LIKE 'LOAN%' )
14847 )
14848 AND l.qlt_code = 'AMCFIA'
14849 AND l.quote_quantity < l.asset_quantity
14850 AND l.kle_id = pcleid
14851 AND t.tcn_type = 'ALT'
14852 --rkuttiya added for 12.1.1 Multi GAAP
14853 AND t.representation_type = 'PRIMARY'
14854 --
14855 --Bug# 6043327 : R12B SLA impact
14856 --AND t.tsu_code = 'WORKING'
14857 AND t.tmt_status_code = 'WORKING'
14858 );
14859
14860 l_asset_trmn_exists VARCHAR2(1) DEFAULT '?';
14861
14862 l_loan_yn VARCHAR2(1) DEFAULT 'N';
14863 l_fa_exists VARCHAR2(1) DEFAULT 'N';
14864 l_row_not_found BOOLEAN DEFAULT FALSE;
14865
14866 --------------------------------------
14867 --Bug# : 11.5.10 : Securitization impact
14868 -------------------------------------
14869 l_is_asset_securitized VARCHAR2(1);
14870 l_inv_agmt_chr_id_tbl okl_securitization_pvt.inv_agmt_chr_id_tbl_type;
14871 l_trx_reason_asset_split VARCHAR2(20) := okl_securitization_pvt.g_trx_reason_Asset_split;
14872 --------------------------------------
14873 --Bug# : 11.5.10 : Securitization impact
14874 -------------------------------------
14875
14876 --Bug# 3156924 : cursor to get transaction date and transaction number from transaction
14877 CURSOR l_trx_csr (ptrxid IN NUMBER) IS
14878 SELECT DATE_TRANS_OCCURRED,
14879 TRANS_NUMBER,
14880 --Bug# 6373605 start
14881 TRY_ID
14882 --Bug# 6373605 end
14883 FROM OKL_TRX_ASSETS
14884 WHERE id = ptrxid;
14885
14886 l_trx_rec l_trx_csr%ROWTYPE;
14887
14888 --Bg# 4028371
14889 l_fa_retire_date date;
14890 l_fa_adj_date date;
14891 l_fa_add_date date;
14892
14893 l_talv_date_rec okl_tal_pvt.talv_rec_type;
14894 lx_talv_date_rec okl_tal_pvt.talv_rec_type;
14895 --Bug# 4028371
14896
14897 --Bug# 3502142
14898 l_round_split_comp_amt varchar2(30);
14899
14900 --Bug# 4631549
14901 --cursor to fetch re-lease contract flag
14902 cursor l_chrb_csr (p_chr_id in number) is
14903 select chrb.orig_system_source_code
14904 from okc_k_headers_b chrb
14905 where chrb.id = p_chr_id;
14906
14907 l_chrb_rec l_chrb_csr%ROWTYPE;
14908
14909 --cursor to fetch expected asset cost
14910 cursor l_exp_cost_csr(p_cle_id in number) is
14911 select kle.expected_asset_cost
14912 from okl_k_lines kle
14913 where kle.id = p_cle_id;
14914
14915 l_exp_cost_rec l_exp_cost_csr%ROWTYPE;
14916
14917 l_clev_exp_cost_rec okl_okc_migration_pvt.clev_rec_type;
14918 lx_clev_exp_cost_rec okl_okc_migration_pvt.clev_rec_type;
14919 l_klev_exp_cost_rec okl_contract_pub.klev_rec_type;
14920 lx_klev_exp_cost_rec okl_contract_pub.klev_rec_type;
14921
14922 --Bug# 6373605 start
14923 l_sla_asset_chr_id NUMBER;
14924 --Bug# 6373605 end
14925
14926 BEGIN
14927 x_return_status := OKL_API.G_RET_STS_SUCCESS;
14928 -- Call start_activity to create savepoint, check compatibility
14929 -- and initialize message list
14930 x_return_status := OKL_API.START_ACTIVITY (
14931 l_api_name
14932 ,p_init_msg_list
14933 ,'_PVT'
14934 ,x_return_status);
14935 -- Check if activity started successfully
14936 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14937 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14938 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14939 RAISE OKL_API.G_EXCEPTION_ERROR;
14940 END IF;
14941
14942 l_txdv_tbl := p_txdv_tbl;
14943
14944 --Bug# 3156924 : Get the transaction details
14945 OPEN l_trx_csr(ptrxid => p_txlv_rec.tas_id);
14946 FETCH l_trx_csr INTO l_trx_rec;
14947 IF l_trx_csr%NOTFOUND THEN
14948 NULL;
14949 END IF;
14950 CLOSE l_trx_csr;
14951 --Bug# 3156924 end
14952
14953 --2. get financial asset line id and chr_id
14954 OPEN k_line_curs(p_fa_line_id => p_txlv_rec.kle_id);
14955 FETCH k_line_curs INTO l_source_cle_id, l_chr_id,
14956 --Bug# 6373605 start
14957 l_sts_code;
14958 --Bug# 6373605 end
14959 IF k_line_curs%NOTFOUND THEN
14960 --dbms_output.put_line('unable to find financial asset line for fixed asset line!!!');
14961 --handle error appropraitely
14962 OKL_API.set_message(p_app_name => G_APP_NAME,
14963 p_msg_name => G_NO_DATA_FOUND,
14964 p_token1 => 'COL_NAME',
14965 p_token1_value => 'Financial Asset Line');
14966 RAISE OKL_API.G_EXCEPTION_ERROR;
14967 END IF;
14968 CLOSE k_line_curs;
14969
14970 --Bug# 2982927 : Resetting okc inv organization id from k header
14971 okl_context.set_okc_org_context(p_chr_id => l_chr_id);
14972 --Bug# 2982927
14973
14974 --Bug# 3222804 : Serial number control to be based on leasing inv org setup
14975 validate_srl_num_control(
14976 p_api_version => p_api_version,
14977 p_init_msg_list => p_init_msg_list,
14978 x_return_status => x_return_status,
14979 x_msg_count => x_msg_count,
14980 x_msg_data => x_msg_data,
14981 p_cle_id => l_source_cle_id,
14982 p_split_into_individuals_yn => p_txlv_rec.split_into_singles_flag,
14983 p_split_into_units => p_txlv_rec.split_into_units,
14984 p_tal_id => p_txlv_rec.id);
14985
14986 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14987 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14988 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14989 RAISE OKL_API.G_EXCEPTION_ERROR;
14990 END IF;
14991 --Bug# 3222804 : Serial number control to be based on leasing inv org setup
14992
14993 --1. get values for the parent asset
14994 l_fa_exists := 'N';
14995 l_ast_line_rec := get_ast_line(l_source_cle_id,l_row_not_found);
14996 --dbms_output.put_line('After fetching asset line '||l_ast_line_rec.description);
14997 IF (l_row_not_found) THEN
14998 --Bug #2798006 : call create split transaction for Loans
14999 l_loan_yn := 'N';
15000 l_loan_yn := Check_If_Loan(P_Cle_Id => l_source_cle_id,
15001 x_return_status => x_return_status);
15002
15003 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15004 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15005 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15006 RAISE OKL_API.G_EXCEPTION_ERROR;
15007 END IF;
15008
15009 IF l_loan_yn = 'N' THEN
15010 OKL_API.set_message(p_app_name => G_APP_NAME,
15011 p_msg_name => G_SPLIT_ASSET_NOT_FOUND);
15012 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15013 ELSIF l_loan_yn = 'Y' THEN
15014 l_fa_exists := 'N';
15015 END IF;
15016 ELSE
15017 l_fa_exists := 'Y';
15018 END IF;
15019 --Bug# 2798006 end.
15020 --------------------------------------------------------------------------------
15021 i := 1;
15022 LOOP
15023 ------------------------------------------------------------------------
15024 -- Normal split asset parent adjustments
15025 IF (l_txdv_tbl(i).target_kle_id IS NOT NULL AND l_txdv_tbl(i).target_kle_id = p_txlv_rec.kle_id) THEN
15026 --this record needs asset adjustment only
15027 --no line creation is required
15028 --1.Call local procedure to adjust quantities and amounts
15029 l_txdv_rec := l_txdv_tbl(i);
15030 l_txlv_rec := p_txlv_rec;
15031 --dbms_output.put_line('before adjusting split lines');
15032 Adjust_Split_Lines(
15033 p_api_version => p_api_version,
15034 p_init_msg_list => p_init_msg_list,
15035 x_return_status => x_return_status,
15036 x_msg_count => x_msg_count,
15037 x_msg_data => x_msg_data,
15038 p_cle_id => l_source_cle_id,
15039 p_parent_line_id => l_source_cle_id,
15040 p_txdv_rec => l_txdv_rec,
15041 p_txlv_rec => l_txlv_rec);
15042 --dbms_output.put_line('after adjusting split lines'||x_return_status);
15043 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15044 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15045 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15046 RAISE OKL_API.G_EXCEPTION_ERROR;
15047 END IF;
15048
15049 --2. Call Asset Retire Api -
15050 -- to confirm with Mukul whether retirement or
15051 -- adjustment will
15052
15053 IF l_fa_exists = 'Y' THEN
15054 --to get all books for this asset
15055 OPEN all_books_curs(p_asset_id => l_ast_line_rec.asset_id);
15056 LOOP
15057 FETCH all_books_curs INTO l_all_books_rec;
15058 EXIT WHEN all_books_curs%NOTFOUND;
15059 --reinitialize l_Ast_line_rec
15060 l_ast_line_rec.START_DATE_ACTIVE := l_all_books_rec.start_date_active;
15061 l_ast_line_rec.END_DATE_ACTIVE := l_all_books_rec.end_date_active;
15062 l_ast_line_rec.ASSET_ID := l_all_books_rec.asset_id;
15063 l_ast_line_rec.QUANTITY := l_all_books_rec.current_units;
15064 l_ast_line_rec.ASSET_NUMBER := l_all_books_rec.asset_number;
15065 l_ast_line_rec.CORPORATE_BOOK := l_all_books_rec.book_type_code; --this will be tax book in case of tax books inspite of var name
15066 l_ast_line_rec.LIFE_IN_MONTHS := l_all_books_rec.life_in_months;
15067 l_ast_line_rec.ORIGINAL_COST := l_all_books_rec.original_cost;
15068 l_ast_line_rec.COST := l_all_books_rec.cost;
15069 l_ast_line_rec.ADJUSTED_COST := l_all_books_rec.adjusted_cost;
15070 l_ast_line_rec.TAG_NUMBER := l_all_books_rec.tag_number;
15071 l_ast_line_rec.CURRENT_UNITS := l_all_books_rec.current_units ;
15072 l_ast_line_rec.SERIAL_NUMBER := l_all_books_rec.serial_number;
15073 l_ast_line_rec.REVAL_CEILING := l_all_books_rec.reval_ceiling;
15074 l_ast_line_rec.NEW_USED := l_all_books_rec.new_used;
15075 l_ast_line_rec.IN_SERVICE_DATE := l_all_books_rec.acquisition_date;
15076 l_ast_line_rec.MANUFACTURER_NAME := l_all_books_rec.manufacturer_name;
15077 l_ast_line_rec.MODEL_NUMBER := l_all_books_rec.model_number;
15078 l_ast_line_rec.ASSET_TYPE := l_all_books_rec.asset_type;
15079 l_ast_line_rec.SALVAGE_VALUE := l_all_books_rec.salvage_value;
15080 l_ast_line_rec.PERCENT_SALVAGE_VALUE := l_all_books_rec.percent_salvage_value;
15081 l_ast_line_rec.DEPRECIATION_CATEGORY := l_all_books_rec.depreciation_category;
15082 l_ast_line_rec.DEPRN_START_DATE := l_all_books_rec.deprn_start_date;
15083 l_ast_line_rec.DEPRN_METHOD_CODE := l_all_books_rec.deprn_method_code;
15084 l_ast_line_rec.RATE_ADJUSTMENT_FACTOR := l_all_books_rec.rate_adjustment_factor;
15085 l_ast_line_rec.BASIC_RATE := l_all_books_rec.basic_rate;
15086 l_ast_line_rec.ADJUSTED_RATE := l_all_books_rec.adjusted_rate;
15087 l_ast_line_rec.RECOVERABLE_COST := l_all_books_rec.recoverable_cost;
15088 l_ast_line_rec.ORG_ID := l_all_books_rec.org_id;
15089 l_ast_line_rec.SET_OF_BOOKS_ID := l_all_books_rec.set_of_books_id;
15090
15091 --check period of addition
15092 l_check_period_of_Addition := 'N';
15093 OPEN check_period_of_addition(p_asset_id => l_ast_line_rec.asset_id,
15094 p_book_type_code => l_ast_line_rec.corporate_book);
15095 FETCH check_period_of_addition INTO l_check_period_of_Addition;
15096 IF check_period_of_addition%NOTFOUND THEN
15097 NULL;
15098 END IF;
15099 CLOSE check_period_of_addition;
15100
15101 /* Bug#4508050 - smadhava - Modified - Start*/
15102 -- Commented code to avoid retiring of original asset after splitting
15103 /*
15104 IF NVL(l_check_period_of_addition,'N') = 'N' THEN
15105 --dbms_output.put_line('before retiring fA'||x_return_status);
15106 --check if call is being made from asset level termination process
15107 l_asset_trmn_exists := '?';
15108 OPEN asset_trmn_csr(pcleid => l_source_cle_id);
15109 FETCH asset_trmn_csr INTO l_asset_trmn_exists;
15110 IF asset_trmn_csr%NOTFOUND THEN
15111 NULL;
15112 END IF;
15113 CLOSE asset_trmn_csr;
15114
15115 IF l_asset_trmn_exists = '!' THEN --exists
15116 --call special procedure for asset level termination : suspen retirement
15117 NULL;
15118 ELSIF l_asset_trmn_exists = '?' THEN --does not exist
15119 --Bug# : 3156924 : cost retirement for all books
15120 --If (l_all_books_rec.book_class = 'CORPORATE') Then
15121 FIXED_ASSET_RETIRE(p_api_version => p_api_version,
15122 p_init_msg_list => p_init_msg_list,
15123 x_return_status => x_return_status,
15124 x_msg_count => x_msg_count,
15125 x_msg_data => x_msg_data,
15126 p_ast_line_rec => l_ast_line_rec,
15127 p_txlv_rec => l_txlv_rec,
15128 p_txdv_rec => l_txdv_rec,
15129 --Bug# 3156924
15130 p_trx_date => l_trx_rec.date_trans_occurred,
15131 p_trx_number => l_trx_rec.trans_number,
15132 --Bug# 4028371
15133 x_fa_trx_date => l_fa_retire_date);
15134
15135 --dbms_output.put_line('after retiring fA'||x_return_status);
15136 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15137 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15138 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15139 RAISE OKL_API.G_EXCEPTION_ERROR;
15140 END IF;
15141 */
15142 /* Bug#4508050 - smadhava - Modified - End*/
15143 --Bug# 3156924
15144 /*
15145 ElsIf (l_all_books_rec.book_class = 'TAX') Then
15146 -- since FA does not allow unit retirements on tax books
15147 -- we have to restore to doing adjustments here for tax books
15148 FIXED_ASSET_ADJUST(p_api_version => p_api_version,
15149 p_init_msg_list => p_init_msg_list,
15150 x_return_status => x_return_status,
15151 x_msg_count => x_msg_count,
15152 x_msg_data => x_msg_data,
15153 p_ast_line_rec => l_ast_line_rec,
15154 p_txlv_rec => l_txlv_rec,
15155 p_txdv_rec => l_txdv_rec,
15156 --3156924
15157 p_trx_date => l_trx_rec.date_trans_occurred,
15158 p_trx_number => l_trx_rec.trans_number,
15159 --Bug# 4028371
15160 x_fa_trx_date => l_fa_adj_date);
15161
15162 --dbms_output.put_line('after adjusting fA'||x_return_status);
15163 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15164 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15165 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15166 RAISE OKL_API.G_EXCEPTION_ERROR;
15167 END IF;
15168 End If;
15169 */
15170 /* Bug#4508050 - smadhava - Modified - Start*/
15171 /*
15172 END IF; --asset_trmn_exists
15173 ELSIF NVL(l_check_period_of_addition,'N') = 'Y' THEN
15174 */
15175 /* Bug#4508050 - smadhava - Modified - End*/
15176 --dbms_output.put_line('before adjusting fA'||x_return_status);
15177 --dbms_output.put_line('before adjusting fA units'||to_char(l_ast_line_rec.current_units));
15178 FIXED_ASSET_ADJUST(p_api_version => p_api_version,
15179 p_init_msg_list => p_init_msg_list,
15180 x_return_status => x_return_status,
15181 x_msg_count => x_msg_count,
15182 x_msg_data => x_msg_data,
15183 p_ast_line_rec => l_ast_line_rec,
15184 p_txlv_rec => l_txlv_rec,
15185 p_txdv_rec => l_txdv_rec,
15186 --3156924
15187 p_trx_date => l_trx_rec.date_trans_occurred,
15188 p_trx_number => l_trx_rec.trans_number,
15189 --Bug# 6373605--SLA populate source
15190 p_sla_source_header_id => l_txlv_rec.tas_id,
15191 p_sla_source_header_table => 'OKL_TRX_ASSETS',
15192 p_sla_source_try_id => l_trx_rec.try_id,
15193 p_sla_source_line_id => l_txlv_rec.id,
15194 p_sla_source_line_table => 'OKL_TXL_ASSETS_B',
15195 p_sla_source_chr_id => l_chr_id,
15196 p_sla_source_kle_id => l_source_cle_id,
15197 --Bug# 6373605--SLA populate sources
15198 --Bug# 4028371
15199 x_fa_trx_date => l_fa_adj_date);
15200
15201 --dbms_output.put_line('after adjusting fA'||x_return_status);
15202 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15203 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15204 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15205 RAISE OKL_API.G_EXCEPTION_ERROR;
15206 END IF;
15207 /* Bug#4508050 - smadhava - Modified - Start*/
15208 /*
15209 END IF;
15210 */
15211 /* Bug#4508050 - smadhava - Modified - End*/
15212 END LOOP;
15213 CLOSE all_books_curs;
15214 --adjustments done for all the books
15215 END IF; --l_fa_exists
15216 --3. Put record onto the lines table
15217 l_cle_tbl(i).cle_id := l_source_cle_id;
15218
15219 ELSIF l_txdv_tbl(i).target_kle_id IS NULL THEN
15220
15221 --1.Call to Copy Lines api to create split line
15222 OKL_COPY_CONTRACT_PUB.COPY_CONTRACT_LINES(
15223 p_api_version => p_api_version,
15224 p_init_msg_list => p_init_msg_list,
15225 x_return_status => x_return_status,
15226 x_msg_count => x_msg_count,
15227 x_msg_data => x_msg_data,
15228 p_from_cle_id => l_source_cle_id,
15229 p_to_cle_id => NULL,
15230 p_to_chr_id => l_chr_id,
15231 p_to_template_yn => 'N',
15232 p_copy_reference => 'COPY',
15233 p_copy_line_party_yn => 'Y',
15234 p_renew_ref_yn => 'N',
15235 x_cle_id => l_split_cle_id);
15236
15237 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15238 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15239 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15240 RAISE OKL_API.G_EXCEPTION_ERROR;
15241 END IF;
15242
15243 --Bug# 4631549 : If release contract copy expected_asset_cost from source line to target line
15244 Open l_chrb_csr (p_chr_id => l_chr_id);
15245 fetch l_chrb_csr into l_chrb_rec;
15246 close l_chrb_csr;
15247
15248 If nvl(l_chrb_rec.orig_system_source_code,OKL_API.G_MISS_CHAR) = 'OKL_RELEASE' then
15249 open l_exp_cost_csr(p_cle_id => l_source_cle_id);
15250 fetch l_exp_cost_csr into l_exp_cost_rec;
15251 close l_exp_cost_csr;
15252
15253 l_clev_exp_cost_rec.id := l_split_cle_id;
15254 l_klev_exp_cost_rec.id := l_split_cle_id;
15255 l_klev_exp_cost_rec.expected_asset_cost := l_exp_cost_rec.expected_asset_cost;
15256
15257 OKL_CONTRACT_PUB.update_contract_line(
15258 p_api_version => p_api_version,
15259 p_init_msg_list => p_init_msg_list,
15260 x_return_status => x_return_status,
15261 x_msg_count => x_msg_count,
15262 x_msg_data => x_msg_data,
15263 p_clev_rec => l_clev_exp_cost_rec,
15264 p_klev_rec => l_klev_exp_cost_rec,
15265 x_clev_rec => lx_clev_exp_cost_rec,
15266 x_klev_rec => lx_klev_exp_cost_rec
15267 );
15268
15269 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
15270 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15271 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
15272 RAISE OKL_API.G_EXCEPTION_ERROR;
15273 END IF;
15274 End If;
15275
15276 --2. Call local procedure to adjust quantities and amounts
15277 --3. Call local procedure to null out line source references on copied lines
15278 l_txdv_rec := l_txdv_tbl(i);
15279 l_txlv_rec := p_txlv_rec;
15280
15281 --Bug# 3502142
15282 l_round_split_comp_amt := 'N';
15283 IF (i = l_txdv_tbl.LAST) AND
15284 (NVL(l_txdv_tbl(i).split_percent,0) > 0 OR l_txdv_tbl(i).split_percent <> OKL_API.G_MISS_NUM) THEN
15285 l_round_split_comp_amt := 'Y';
15286 END IF;
15287
15288 Adjust_Split_Lines(
15289 p_api_version => p_api_version,
15290 p_init_msg_list => p_init_msg_list,
15291 x_return_status => x_return_status,
15292 x_msg_count => x_msg_count,
15293 x_msg_data => x_msg_data,
15294 p_cle_id => l_split_cle_id,
15295 p_parent_line_id => l_source_cle_id,
15296 p_txdv_rec => l_txdv_rec,
15297 p_txlv_rec => l_txlv_rec,
15298 p_round_split_comp_amt => l_round_split_comp_amt);
15299
15300 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15301 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15302 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15303 RAISE OKL_API.G_EXCEPTION_ERROR;
15304 END IF;
15305 IF l_fa_exists = 'Y' THEN
15306 --to get all books for this asset
15307 OPEN all_books_curs(p_asset_id => l_ast_line_rec.asset_id);
15308 LOOP
15309 FETCH all_books_curs INTO l_all_books_rec;
15310 EXIT WHEN all_books_curs%NOTFOUND;
15311 --reinitialize l_Ast_line_rec
15312 l_ast_line_rec.START_DATE_ACTIVE := l_all_books_rec.start_date_active;
15313 l_ast_line_rec.END_DATE_ACTIVE := l_all_books_rec.end_date_active;
15314 l_ast_line_rec.ASSET_ID := l_all_books_rec.asset_id;
15315 l_ast_line_rec.QUANTITY := l_all_books_rec.current_units;
15316 l_ast_line_rec.ASSET_NUMBER := l_all_books_rec.asset_number;
15317 l_ast_line_rec.CORPORATE_BOOK := l_all_books_rec.book_type_code; --this will be tax book in case of tax books inspite of var name
15318 l_ast_line_rec.LIFE_IN_MONTHS := l_all_books_rec.life_in_months;
15319 l_ast_line_rec.ORIGINAL_COST := l_all_books_rec.original_cost;
15320 l_ast_line_rec.COST := l_all_books_rec.cost;
15321 l_ast_line_rec.ADJUSTED_COST := l_all_books_rec.adjusted_cost;
15322 l_ast_line_rec.TAG_NUMBER := l_all_books_rec.tag_number;
15323 l_ast_line_rec.CURRENT_UNITS := l_all_books_rec.current_units ;
15324 l_ast_line_rec.SERIAL_NUMBER := l_all_books_rec.serial_number;
15325 l_ast_line_rec.REVAL_CEILING := l_all_books_rec.reval_ceiling;
15326 l_ast_line_rec.NEW_USED := l_all_books_rec.new_used;
15327 l_ast_line_rec.IN_SERVICE_DATE := l_all_books_rec.acquisition_date;
15328 l_ast_line_rec.MANUFACTURER_NAME := l_all_books_rec.manufacturer_name;
15329 l_ast_line_rec.MODEL_NUMBER := l_all_books_rec.model_number;
15330 l_ast_line_rec.ASSET_TYPE := l_all_books_rec.asset_type;
15331 l_ast_line_rec.SALVAGE_VALUE := l_all_books_rec.salvage_value;
15332 l_ast_line_rec.PERCENT_SALVAGE_VALUE := l_all_books_rec.percent_salvage_value;
15333 l_ast_line_rec.DEPRECIATION_CATEGORY := l_all_books_rec.depreciation_category;
15334 l_ast_line_rec.DEPRN_START_DATE := l_all_books_rec.deprn_start_date;
15335 l_ast_line_rec.DEPRN_METHOD_CODE := l_all_books_rec.deprn_method_code;
15336 l_ast_line_rec.RATE_ADJUSTMENT_FACTOR := l_all_books_rec.rate_adjustment_factor;
15337 l_ast_line_rec.BASIC_RATE := l_all_books_rec.basic_rate;
15338 l_ast_line_rec.ADJUSTED_RATE := l_all_books_rec.adjusted_rate;
15339 l_ast_line_rec.RECOVERABLE_COST := l_all_books_rec.recoverable_cost;
15340 l_ast_line_rec.ORG_ID := l_all_books_rec.org_id;
15341 l_ast_line_rec.SET_OF_BOOKS_ID := l_all_books_rec.set_of_books_id;
15342
15343 --Bug# 6373605 start
15344 If nvl(l_sts_code,OKL_API.G_MISS_CHAR) in
15345 ('TERMINATED','EXPIRED') Then
15346 l_sla_asset_chr_id := NULL;
15347 Else
15348 l_sla_asset_chr_id := l_chr_id;
15349 End If;
15350 --Bug# 6373605
15351
15352 --4. Call Local procedure to add asset
15353 FIXED_ASSET_ADD(p_api_version => p_api_version,
15354 p_init_msg_list => p_init_msg_list,
15355 x_return_status => x_return_status,
15356 x_msg_count => x_msg_count,
15357 x_msg_data => x_msg_data,
15358 p_ast_line_rec => l_ast_line_rec,
15359 p_txlv_rec => l_txlv_rec,
15360 p_txdv_rec => l_txdv_rec,
15361 --3156924
15362 p_trx_date => l_trx_rec.date_trans_occurred,
15363 p_trx_number => l_trx_rec.trans_number,
15364 --Bug# 6373605--SLA populate source
15365 p_sla_source_header_id => l_txlv_rec.tas_id,
15366 p_sla_source_header_table => 'OKL_TRX_ASSETS',
15367 p_sla_source_try_id => l_trx_rec.try_id,
15368 p_sla_source_line_id => l_txdv_rec.id,
15369 p_sla_source_line_table => 'OKL_TXD_ASSETS_B',
15370 p_sla_source_chr_id => l_chr_id,
15371 p_sla_source_kle_id => l_split_cle_id,
15372 p_sla_asset_chr_id => l_sla_asset_chr_id,
15373 --Bug# 6373605--SLA populate sources
15374 --Bug# 4028371
15375 x_fa_trx_date => l_fa_add_date,
15376 x_asset_hdr_rec => l_asset_hdr_rec);
15377 --dbms_output.put_line('after adding fixed asset '||x_return_status);
15378 --dbms_output.put_line('after adding fixed asset '||to_char(l_asset_hdr_rec.asset_id));
15379 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15380 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15381 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15382 RAISE OKL_API.G_EXCEPTION_ERROR;
15383 END IF;
15384
15385 --Bug# 4028371
15386 --update the fa trx date on transaction line
15387 If l_all_books_rec.book_class = 'CORPORATE' then
15388 l_talv_date_rec.id := l_txlv_rec.id;
15389 l_talv_date_rec.fa_trx_date := l_fa_add_date;
15390 l_split_cle_id_orig := l_split_cle_id;
15391
15392 okl_tal_pvt.update_row
15393 (p_api_version => p_api_version,
15394 p_init_msg_list => p_init_msg_list,
15395 x_return_status => x_return_status,
15396 x_msg_count => x_msg_count,
15397 x_msg_data => x_msg_data,
15398 p_talv_rec => l_talv_date_rec,
15399 x_talv_rec => lx_talv_date_rec);
15400 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15401 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15402 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15403 RAISE OKL_API.G_EXCEPTION_ERROR;
15404 END IF;
15405
15406 --Bug# 6326479
15407 /* 7626121 commented out from here and moved outside
15408 process_split_accounting(
15409 p_api_version => p_api_version
15410 ,p_init_msg_list => p_init_msg_list
15411 ,x_return_status => x_return_status
15412 ,x_msg_count => x_msg_count
15413 ,x_msg_data => x_msg_data
15414 ,p_contract_id => l_chr_id
15415 ,p_kle_id => l_split_cle_id
15416 ,p_transaction_date=>l_trx_rec.date_trans_occurred
15417 );
15418
15419 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15420 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15421 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15422 RAISE OKL_API.G_EXCEPTION_ERROR;
15423 END IF; */
15424
15425 -- Bug# 6189396 -- start
15426 okl_execute_formula_pub.g_additional_parameters(1).name := '';
15427 okl_execute_formula_pub.g_additional_parameters(1).value := null;
15428 -- Bug# 6189396 -- end
15429
15430 End If;
15431 --End Bug# 4028371
15432 END LOOP;
15433 CLOSE all_books_curs;
15434
15435 -- Bug 7626121
15436 process_split_accounting(
15437 p_api_version => p_api_version
15438 ,p_init_msg_list => p_init_msg_list
15439 ,x_return_status => x_return_status
15440 ,x_msg_count => x_msg_count
15441 ,x_msg_data => x_msg_data
15442 ,p_contract_id => l_chr_id
15443 ,p_kle_id => l_split_cle_id_orig
15444 ,p_transaction_date=>l_trx_rec.date_trans_occurred
15445 );
15446
15447 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15448 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15449 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15450 RAISE OKL_API.G_EXCEPTION_ERROR;
15451 END IF;
15452
15453 okl_execute_formula_pub.g_additional_parameters(1).name := '';
15454 okl_execute_formula_pub.g_additional_parameters(1).value := null;
15455 END IF; --l_fa_exists
15456 --5. Tie back new asset records to OKL
15457 --dbms_output.put_line('before fetching the cim_id for FA link');
15458 OPEN c_cim(l_txdv_rec.id);
15459 LOOP
15460 FETCH c_cim INTO l_cim_id,l_cim_cle_id;
15461 --dbms_output.put_line('in fetching the cim_id for FA link'||to_char(l_cim_id));
15462 EXIT WHEN c_cim%NOTFOUND;
15463 IF l_fa_exists = 'Y' THEN
15464 l_cimv_rec.id := l_cim_id;
15465 l_cimv_rec.object1_id1 := l_asset_hdr_rec.asset_id;
15466 l_cimv_rec.object1_id2 := '#';
15467 l_cimv_rec.jtot_object1_code := 'OKX_ASSET';
15468 l_cimv_rec.number_of_items := l_txdv_rec.quantity;
15469 --dbms_output.put_line('Asset Id :'||to_char(l_asset_hdr_rec.asset_id));
15470
15471 OKL_OKC_MIGRATION_PVT.update_contract_item(p_api_version => p_api_version,
15472 p_init_msg_list => p_init_msg_list,
15473 x_return_status => x_return_status,
15474 x_msg_count => x_msg_count,
15475 x_msg_data => x_msg_data,
15476 p_cimv_rec => l_cimv_rec,
15477 x_cimv_rec => l_cimv_rec_out);
15478 --dbms_output.put_line('after updating contract item for Asset link '||x_return_status);
15479 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15480 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15481 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15482 RAISE OKL_API.G_EXCEPTION_ERROR;
15483 END IF;
15484 END IF; --l_fa_exits
15485 -- take care of the ib instances for this FA line
15486 --dbms_output.put_line('before splitting IB instances fa_line_id'||to_char(l_cimv_rec_out.cle_id));
15487 --bug# : serial number processing for split asset by serial numbers - consolidate ib lines
15488
15489 IF NVL(l_txdv_rec.split_percent,0) NOT IN (0,OKL_API.G_MISS_NUM) THEN -- Is serialized
15490 --consolidate the ib lines
15491 consolidate_ib_lines(p_api_version => p_api_version,
15492 p_init_msg_list => p_init_msg_list,
15493 x_return_status => x_return_status,
15494 x_msg_count => x_msg_count,
15495 x_msg_data => x_msg_data,
15496 p_txdv_rec => l_txdv_rec,
15497 p_txlv_rec => l_txlv_rec
15498 );
15499 --dbms_output.put_line('After consolidating ib lines'||x_return_status);
15500 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15501 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15502 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15503 RAISE OKL_API.G_EXCEPTION_ERROR;
15504 END IF;
15505 END IF;
15506
15507 --bug# : serial number processing for split asset by serial numbers - consolidate ib lines
15508 --OPEN ib_item_cur(p_fa_line_id => l_cimv_rec_out.cle_id);
15509 OPEN ib_item_cur(p_fa_line_id => l_cim_cle_id);
15510 LOOP
15511 FETCH ib_item_cur INTO l_csi_id1,
15512 l_csi_id2,
15513 l_csi_cim_id,
15514 l_csi_cle_id,
15515 l_csi_chr_id;
15516
15517 EXIT WHEN ib_item_cur%NOTFOUND;
15518 --create split ib instance
15519 --dbms_output.put_line('Before Create ib instance csi id1:'|| x_return_status);
15520 create_ib_instance(p_api_version => p_api_version,
15521 p_init_msg_list => p_init_msg_list,
15522 x_return_status => x_return_status,
15523 x_msg_count => x_msg_count,
15524 x_msg_data => x_msg_data,
15525 p_csi_id1 => l_csi_id1,
15526 p_csi_id2 => l_csi_id2,
15527 p_ib_cle_id => l_csi_cle_id,
15528 p_chr_id => l_csi_chr_id,
15529 p_split_qty => l_txdv_rec.quantity,
15530 --new parameter added for split asset into components feature
15531 p_txdv_rec => l_txdv_rec,
15532 x_instance_id => l_csi_instance_id);
15533
15534 --dbms_output.put_line('After Create ib instance '||x_return_status||':'||to_char(l_csi_instance_id));
15535 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15536 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15537 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15538 RAISE OKL_API.G_EXCEPTION_ERROR;
15539 END IF;
15540
15541 --update the coressponding okc_k_item record
15542 l_cimv_rec.id := l_csi_cim_id;
15543 l_cimv_rec.object1_id1 := TO_CHAR(l_csi_instance_id);
15544 l_cimv_rec.object1_id2 := '#';
15545 l_cimv_rec.jtot_object1_code := 'OKX_IB_ITEM';
15546
15547 OKL_OKC_MIGRATION_PVT.update_contract_item(p_api_version => p_api_version,
15548 p_init_msg_list => p_init_msg_list,
15549 x_return_status => x_return_status,
15550 x_msg_count => x_msg_count,
15551 x_msg_data => x_msg_data,
15552 p_cimv_rec => l_cimv_rec,
15553 x_cimv_rec => l_cimv_rec_out);
15554
15555 --dbms_output.put_line('after updating contract item for IB link '||x_return_status);
15556 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15557 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15558 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15559 RAISE OKL_API.G_EXCEPTION_ERROR;
15560 END IF;
15561 END LOOP;
15562 CLOSE ib_item_cur;
15563
15564 --Bug# 115.9 - Split by serial numbers
15565 --consolidate if serialized and delete duplicate instance lines on child
15566 --do it only for normal split assets as logic for split asset into compoets to be worked out
15567 IF NVL(l_txdv_rec.split_percent,0) IN (0,OKL_API.G_MISS_NUM) THEN
15568 ----
15569 OPEN get_dup_inst_csr (p_asd_id => l_txdv_rec.id);
15570 LOOP
15571 FETCH get_dup_inst_csr INTO l_dup_inst_cle_id, l_dup_ib_cle_id;
15572 EXIT WHEN get_dup_inst_csr%NOTFOUND;
15573 --Call line deletion API
15574 delete_instance_lines(
15575 p_api_version => p_api_version,
15576 p_init_msg_list => p_init_msg_list,
15577 x_return_status => x_return_status,
15578 x_msg_count => x_msg_count,
15579 x_msg_data => x_msg_data,
15580 p_inst_cle_id => l_dup_inst_cle_id,
15581 p_ib_cle_id => l_dup_ib_cle_id);
15582 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15583 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15584 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15585 RAISE OKL_API.G_EXCEPTION_ERROR;
15586 END IF;
15587 END LOOP;
15588 CLOSE get_dup_inst_csr;
15589 ----
15590 END IF;
15591 --Bug# 115.9 - Split by serial numbers
15592
15593
15594 END LOOP;
15595 CLOSE c_cim;
15596 --6. Update the lines table
15597 l_cle_tbl(i).cle_id := l_split_cle_id;
15598 END IF;
15599 IF (i=l_txdv_tbl.LAST) THEN
15600
15601
15602 IF (i = l_txdv_tbl.LAST) AND
15603 (NVL(l_txdv_tbl(i).split_percent,0) > 0 OR l_txdv_tbl(i).split_percent <> OKL_API.G_MISS_NUM) THEN
15604 --special processing for split asset components the original asset has to be retired completely
15605 --1.Abandon the old asset line as we have created assets
15606 Abandon_Parent_Asset(
15607 p_api_version => p_api_version,
15608 p_init_msg_list => p_init_msg_list,
15609 x_return_status => x_return_status,
15610 x_msg_count => x_msg_count,
15611 x_msg_data => x_msg_data,
15612 p_cle_id => l_source_cle_id);
15613
15614 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15615 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15616 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15617 RAISE OKL_API.G_EXCEPTION_ERROR;
15618 END IF;
15619 IF l_fa_exists = 'Y' THEN
15620 --2.Fully retire the Asset
15621 OPEN all_books_curs(p_asset_id => l_ast_line_rec.asset_id);
15622 LOOP
15623 FETCH all_books_curs INTO l_all_books_rec;
15624 EXIT WHEN all_books_curs%NOTFOUND;
15625 --reinitialize l_Ast_line_rec
15626 l_ast_line_rec.START_DATE_ACTIVE := l_all_books_rec.start_date_active;
15627 l_ast_line_rec.END_DATE_ACTIVE := l_all_books_rec.end_date_active;
15628 l_ast_line_rec.ASSET_ID := l_all_books_rec.asset_id;
15629 l_ast_line_rec.QUANTITY := l_all_books_rec.current_units;
15630 l_ast_line_rec.ASSET_NUMBER := l_all_books_rec.asset_number;
15631 l_ast_line_rec.CORPORATE_BOOK := l_all_books_rec.book_type_code; --this will be tax book in case of tax books inspite of var name
15632 l_ast_line_rec.LIFE_IN_MONTHS := l_all_books_rec.life_in_months;
15633 l_ast_line_rec.ORIGINAL_COST := l_all_books_rec.original_cost;
15634 l_ast_line_rec.COST := l_all_books_rec.cost;
15635 l_ast_line_rec.ADJUSTED_COST := l_all_books_rec.adjusted_cost;
15636 l_ast_line_rec.TAG_NUMBER := l_all_books_rec.tag_number;
15637 l_ast_line_rec.CURRENT_UNITS := l_all_books_rec.current_units ;
15638 l_ast_line_rec.SERIAL_NUMBER := l_all_books_rec.serial_number;
15639 l_ast_line_rec.REVAL_CEILING := l_all_books_rec.reval_ceiling;
15640 l_ast_line_rec.NEW_USED := l_all_books_rec.new_used;
15641 l_ast_line_rec.IN_SERVICE_DATE := l_all_books_rec.acquisition_date;
15642 l_ast_line_rec.MANUFACTURER_NAME := l_all_books_rec.manufacturer_name;
15643 l_ast_line_rec.MODEL_NUMBER := l_all_books_rec.model_number;
15644 l_ast_line_rec.ASSET_TYPE := l_all_books_rec.asset_type;
15645 l_ast_line_rec.SALVAGE_VALUE := l_all_books_rec.salvage_value;
15646 l_ast_line_rec.PERCENT_SALVAGE_VALUE := l_all_books_rec.percent_salvage_value;
15647 l_ast_line_rec.DEPRECIATION_CATEGORY := l_all_books_rec.depreciation_category;
15648 l_ast_line_rec.DEPRN_START_DATE := l_all_books_rec.deprn_start_date;
15649 l_ast_line_rec.DEPRN_METHOD_CODE := l_all_books_rec.deprn_method_code;
15650 l_ast_line_rec.RATE_ADJUSTMENT_FACTOR := l_all_books_rec.rate_adjustment_factor;
15651 l_ast_line_rec.BASIC_RATE := l_all_books_rec.basic_rate;
15652 l_ast_line_rec.ADJUSTED_RATE := l_all_books_rec.adjusted_rate;
15653 l_ast_line_rec.RECOVERABLE_COST := l_all_books_rec.recoverable_cost;
15654 l_ast_line_rec.ORG_ID := l_all_books_rec.org_id;
15655 l_ast_line_rec.SET_OF_BOOKS_ID := l_all_books_rec.set_of_books_id;
15656
15657 --check period of addition
15658 l_check_period_of_Addition := 'N';
15659 OPEN check_period_of_addition(p_asset_id => l_ast_line_rec.asset_id,
15660 p_book_type_code => l_ast_line_rec.corporate_book);
15661 FETCH check_period_of_addition INTO l_check_period_of_Addition;
15662 IF check_period_of_addition%NOTFOUND THEN
15663 NULL;
15664 END IF;
15665 CLOSE check_period_of_addition;
15666
15667 /* Bug#4508050 - smadhava - Modified - Start*/
15668 /*
15669 IF NVL(l_check_period_of_addition,'N') = 'N' THEN
15670 --dbms_output.put_line('before retiring fA'||x_return_status);
15671
15672 FIXED_ASSET_RETIRE(p_api_version => p_api_version,
15673 p_init_msg_list => p_init_msg_list,
15674 x_return_status => x_return_status,
15675 x_msg_count => x_msg_count,
15676 x_msg_data => x_msg_data,
15677 p_ast_line_rec => l_ast_line_rec,
15678 p_txlv_rec => l_txlv_rec,
15679 p_txdv_rec => l_txdv_rec,
15680 --Bug# 3156924
15681 p_trx_date => l_trx_rec.date_trans_occurred,
15682 p_trx_number => l_trx_rec.trans_number,
15683 x_fa_trx_date => l_fa_retire_date);
15684 --dbms_output.put_line('after retiring fA'||x_return_status);
15685 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15686 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15687 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15688 RAISE OKL_API.G_EXCEPTION_ERROR;
15689 END IF;
15690 ELSIF NVL(l_check_period_of_addition,'N') = 'Y' THEN
15691 */
15692 /* Bug#4508050 - smadhava - Modified - End*/
15693
15694 --ElsIf nvl(l_check_period_of_addition,'N') in ('Y','N') Then
15695 --dbms_output.put_line('before adjusting fA'||x_return_status);
15696 --dbms_output.put_line('before adjusting fA units'||to_char(l_ast_line_rec.current_units));
15697 FIXED_ASSET_ADJUST(p_api_version => p_api_version,
15698 p_init_msg_list => p_init_msg_list,
15699 x_return_status => x_return_status,
15700 x_msg_count => x_msg_count,
15701 x_msg_data => x_msg_data,
15702 p_ast_line_rec => l_ast_line_rec,
15703 p_txlv_rec => l_txlv_rec,
15704 p_txdv_rec => l_txdv_rec,
15705 --3156924
15706 p_trx_date => l_trx_rec.date_trans_occurred,
15707 p_trx_number => l_trx_rec.trans_number,
15708 --Bug# 6373605--SLA populate source
15709 p_sla_source_header_id => l_txlv_rec.tas_id,
15710 p_sla_source_header_table => 'OKL_TRX_ASSETS',
15711 p_sla_source_try_id => l_trx_rec.try_id,
15712 p_sla_source_line_id => l_txlv_rec.id,
15713 p_sla_source_line_table => 'OKL_TXL_ASSETS_B',
15714 p_sla_source_chr_id => l_chr_id,
15715 p_sla_source_kle_id => l_source_cle_id,
15716 --Bug# 6373605--SLA populate sources
15717 x_fa_trx_date => l_fa_adj_date);
15718
15719 --dbms_output.put_line('after adjusting fA'||x_return_status);
15720 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15721 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15722 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15723 RAISE OKL_API.G_EXCEPTION_ERROR;
15724 END IF;
15725 /* Bug#4508050 - smadhava - Modified - Start*/
15726 /*
15727 END IF;
15728 */
15729 /* Bug#4508050 - smadhava - Modified - End*/
15730 END LOOP;
15731 CLOSE all_books_curs;
15732 --adjustments done for all the books
15733 END IF; --l_fa_exists
15734 -- end of full retirement for split asset into components parent asset
15735 END IF;
15736 --now exit out of the loop
15737 EXIT;
15738 ELSE
15739 i := i + 1;
15740 --dbms_output.put_line('number of split records processed'||to_char(i));
15741 END IF;
15742 END LOOP;
15743 --End If;--unable to track unchanged
15744
15745 --Bug# 3222804 : relink ib lines in case split into individual units
15746 --and serialized
15747 IF NVL(l_txlv_rec.split_into_singles_flag,'N') = 'Y' THEN
15748 Relink_Ib_Lines(p_api_version => p_api_version,
15749 p_init_msg_list => p_init_msg_list,
15750 x_return_status => x_return_status,
15751 x_msg_count => x_msg_count,
15752 x_msg_data => x_msg_data,
15753 p_txlv_rec => l_txlv_rec);
15754
15755 --dbms_output.put_line('after calling process streams '|| x_return_status);
15756 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15757 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15758 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15759 RAISE OKL_API.G_EXCEPTION_ERROR;
15760 END IF;
15761 END IF;
15762 --Bug# 3257326 End : relink ib lines in case split into individual units
15763
15764 x_cle_tbl := l_cle_tbl;
15765 --Bug#2648280 Begin
15766 --dbms_output.put_line('Before calling process streams'|| x_return_status);
15767 --rounding streams could be an issue:
15768 split_streams(p_api_version => p_api_version,
15769 p_init_msg_list => p_init_msg_list,
15770 x_return_status => x_return_status,
15771 x_msg_count => x_msg_count,
15772 x_msg_data => x_msg_data,
15773 p_txl_id => l_txlv_rec.id);
15774 --dbms_output.put_line('after calling process streams '|| x_return_status);
15775 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15776 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15777 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15778 RAISE OKL_API.G_EXCEPTION_ERROR;
15779 END IF;
15780 --Bug#2648280 End
15781
15782 ------------------------------------------------------------------------
15783 --Bug# : 11.5.10 Recalculate costs on impacted lines and update
15784 ------------------------------------------------------------------------
15785 --Bug# 5946411: ER
15786 --recalculate only if split asset have status : BOOKED/EVERGREEN
15787 --dbms_output.put_line('before calling recalculate l_sts_code'||l_sts_code);
15788 IF (l_sts_code IN ('BOOKED','EVERGREEN')) THEN
15789
15790 recalculate_costs(
15791 p_api_version => p_api_version,
15792 p_init_msg_list => p_init_msg_list,
15793 x_return_status => x_return_status,
15794 x_msg_count => x_msg_count,
15795 x_msg_data => x_msg_data,
15796 p_chr_id => l_chr_id,
15797 p_cle_tbl => x_cle_tbl);
15798
15799 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15800 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15801 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15802 RAISE OKL_API.G_EXCEPTION_ERROR;
15803 END IF;
15804 END IF;
15805
15806 --Bug# 6788253
15807 --call API check if asset is securitized
15808 OKL_SECURITIZATION_PVT.check_kle_securitized(
15809 p_api_version => p_api_version,
15810 p_init_msg_list => p_init_msg_list,
15811 x_return_status => x_return_status,
15812 x_msg_count => x_msg_count,
15813 x_msg_data => x_msg_data,
15814 p_kle_id => l_source_cle_id,
15815 p_effective_date => SYSDATE,
15816 x_value => l_is_asset_securitized,
15817 x_inv_agmt_chr_id_tbl => l_inv_agmt_chr_id_tbl);
15818 --dbms_output.put_line('SFA-0 : calling check_kle_securitized--status >'||x_return_status);
15819 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15820 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15821 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15822 RAISE OKL_API.G_EXCEPTION_ERROR;
15823 END IF;
15824
15825 IF l_is_asset_securitized = OKL_API.G_TRUE THEN
15826 --call API to modify pool contents
15827
15828 OKL_SECURITIZATION_PVT.modify_pool_contents(
15829 p_api_version => p_api_version,
15830 p_init_msg_list => p_init_msg_list,
15831 x_return_status => x_return_status,
15832 x_msg_count => x_msg_count,
15833 x_msg_data => x_msg_data,
15834 p_transaction_reason => l_trx_reason_asset_split,
15835 p_khr_id => l_chr_id,
15836 p_kle_id => l_source_cle_id,
15837 p_split_kle_ids => x_cle_tbl,
15838 p_transaction_date => SYSDATE,
15839 p_effective_date => SYSDATE);
15840
15841 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15842 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15843 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15844 RAISE OKL_API.G_EXCEPTION_ERROR;
15845 END IF;
15846 END IF;
15847
15848 --Bug# 6344223
15849 IF (l_sts_code = 'BOOKED') AND (p_source_call = 'UI') THEN
15850 sync_streams( p_api_version => p_api_version,
15851 p_init_msg_list => p_init_msg_list,
15852 x_return_status => x_return_status,
15853 x_msg_count => x_msg_count,
15854 x_msg_data => x_msg_data,
15855 p_chr_id => l_chr_id );
15856
15857 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15858 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15859 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15860 RAISE OKL_API.G_EXCEPTION_ERROR;
15861 END IF;
15862
15863 ELSE
15864 -------------------------------------------------------------------------
15865 --Bug# : 11.5.10 Securitization impact
15866 -------------------------------------------------------------------------
15867 IF l_is_asset_securitized = OKL_API.G_TRUE THEN
15868
15869 -- Bug# 4775555
15870 -- Historize and Re-create Disbursement Basis Streams
15871 OKL_STREAM_GENERATOR_PVT.create_disb_streams(
15872 p_api_version => p_api_version,
15873 p_init_msg_list => p_init_msg_list,
15874 x_return_status => x_return_status,
15875 x_msg_count => x_msg_count,
15876 x_msg_data => x_msg_data,
15877 p_contract_id => l_chr_id
15878 );
15879
15880 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15881 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15882 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15883 RAISE OKL_API.G_EXCEPTION_ERROR;
15884 END IF;
15885
15886 --Bug# 6344223
15887 okl_stream_generator_pvt.create_pv_streams(
15888 p_api_version => 1.0,
15889 p_init_msg_list => OKC_API.G_FALSE,
15890 x_return_status => x_return_status,
15891 x_msg_count => x_msg_count,
15892 x_msg_data => x_msg_data,
15893 p_contract_id => l_chr_id
15894 );
15895
15896 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15897 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15898 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15899 RAISE OKL_API.G_EXCEPTION_ERROR;
15900 END IF;
15901
15902 okl_contract_rebook_pvt.create_inv_disb_adjustment(
15903 p_api_version => 1.0,
15904 p_init_msg_list => OKC_API.G_FALSE,
15905 x_return_status => x_return_status,
15906 x_msg_count => x_msg_count,
15907 x_msg_data => x_msg_data,
15908 p_orig_khr_id => l_chr_id
15909 );
15910
15911
15912 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15913 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15914 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15915 RAISE OKL_API.G_EXCEPTION_ERROR;
15916 END IF;
15917 --Bug# 6344223 : End
15918 END IF;
15919
15920
15921 -------------------------------------------------------------------------
15922 --Bug# : 11.5.10 Securitization impact End
15923 -------------------------------------------------------------------------
15924 -- Bug# 5946411: ER
15925 IF (l_sts_code IN ('TERMINATED','EXPIRED')) THEN
15926 create_split_asset_return (
15927 p_api_version => p_api_version,
15928 p_init_msg_list => p_init_msg_list,
15929 x_return_status => x_return_status,
15930 x_msg_count => x_msg_count,
15931 x_msg_data => x_msg_data,
15932 p_kle_id => l_source_cle_id,
15933 p_cle_tbl => x_cle_tbl,
15934 p_txlv_rec => l_txlv_rec
15935 );
15936
15937 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15938 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15939 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15940 RAISE OKL_API.G_EXCEPTION_ERROR;
15941 END IF;
15942 END IF;
15943 --Bug# 5946411: ER end
15944
15945 ------------------------------------------------------------------------
15946 --Bug# : R12.B eBTax impact Start
15947 ------------------------------------------------------------------------
15948 okl_process_sales_tax_pvt.calculate_sales_tax(
15949 p_api_version => p_api_version,
15950 p_init_msg_list => p_init_msg_list,
15951 x_return_status => x_return_status,
15952 x_msg_count => x_msg_count,
15953 x_msg_data => x_msg_data,
15954 p_source_trx_id => p_txlv_rec.tas_id, --<okl_trx_assets.id>,
15955 p_source_trx_name => 'Split Asset',
15956 p_source_table => 'OKL_TRX_ASSETS');
15957
15958 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15959 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15960 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15961 RAISE OKL_API.G_EXCEPTION_ERROR;
15962 END IF;
15963
15964 ------------------------------------------------------------------------
15965 --Bug# : R12.B eBTax impact End
15966 ------------------------------------------------------------------------
15967
15968 --update the transaction record to processed.
15969 l_trxv_rec.id := p_txlv_rec.tas_id;
15970 l_trxv_rec.tsu_code := 'PROCESSED';
15971 OKL_TRX_ASSETS_PUB.update_trx_ass_h_def(
15972 p_api_version => p_api_version,
15973 p_init_msg_list => p_init_msg_list,
15974 x_return_status => x_return_status,
15975 x_msg_count => x_msg_count,
15976 x_msg_data => x_msg_data,
15977 p_thpv_rec => l_trxv_rec,
15978 x_thpv_rec => lx_trxv_rec);
15979
15980 --dbms_output.put_line('after updating contract trx status to processed '||x_return_status);
15981 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15982 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15983 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15984 RAISE OKL_API.G_EXCEPTION_ERROR;
15985 END IF;
15986
15987 END IF;
15988 OKL_API.END_ACTIVITY (x_msg_count,
15989 x_msg_data );
15990 EXCEPTION
15991 WHEN OKL_API.G_EXCEPTION_ERROR THEN
15992 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
15993 l_api_name,
15994 G_PKG_NAME,
15995 'OKL_API.G_RET_STS_ERROR',
15996 x_msg_count,
15997 x_msg_data,
15998 '_PVT');
15999 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
16000 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
16001 l_api_name,
16002 G_PKG_NAME,
16003 'OKL_API.G_RET_STS_UNEXP_ERROR',
16004 x_msg_count,
16005 x_msg_data,
16006 '_PVT');
16007 WHEN OTHERS THEN
16008 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
16009 l_api_name,
16010 G_PKG_NAME,
16011 'OTHERS',
16012 x_msg_count,
16013 x_msg_data,
16014 '_PVT');
16015 END Split_Fixed_Asset;
16016 ------------------------------------------------------------------------------
16017 -- PROCEDURE version_contract
16018 --
16019 -- This procedure versions contract, i.e. making a contract Version History
16020 --
16021 -- Calls:
16022 -- Called By:
16023 ------------------------------------------------------------------------------
16024 PROCEDURE version_contract(
16025 x_return_status OUT NOCOPY VARCHAR2,
16026 x_msg_count OUT NOCOPY NUMBER,
16027 x_msg_data OUT NOCOPY VARCHAR2,
16028 p_chr_id IN OKC_K_HEADERS_V.ID%TYPE
16029 ) IS
16030
16031 l_proc_name VARCHAR2(35) := 'VERSION_CONTRACT';
16032 l_cvmv_rec okl_okc_migration_pvt.cvmv_rec_type;
16033 x_cvmv_rec okl_okc_migration_pvt.cvmv_rec_type;
16034
16035 BEGIN
16036
16037 x_return_status := OKC_API.G_RET_STS_SUCCESS;
16038
16039 l_cvmv_rec.chr_id := p_chr_id;
16040 okl_version_pub.version_contract(
16041 p_api_version => 1.0,
16042 p_init_msg_list => OKC_API.G_FALSE,
16043 x_return_status => x_return_status,
16044 x_msg_count => x_msg_count,
16045 x_msg_data => x_msg_data,
16046 p_cvmv_rec => l_cvmv_rec,
16047 x_cvmv_rec => x_cvmv_rec --,
16048 --p_commit => OKC_API.G_FALSE
16049 );
16050 RETURN;
16051
16052 END version_contract;
16053 --------------------------------------------------------------------------------
16054 --Start of Comments
16055 --Procedure Name : Split_Asset
16056 --Description : Selects the split Asset transaction against the line
16057 -- and splits the Asset in OKL and FA
16058 --History :
16059 -- 08-Apr-2001 ashish.singh Created
16060 --End of Comments
16061 --------------------------------------------------------------------------------
16062 PROCEDURE Split_Fixed_Asset(p_api_version IN NUMBER,
16063 p_init_msg_list IN VARCHAR2,
16064 x_return_status OUT NOCOPY VARCHAR2,
16065 x_msg_count OUT NOCOPY NUMBER,
16066 x_msg_data OUT NOCOPY VARCHAR2,
16067 p_cle_id IN NUMBER,
16068 x_cle_tbl OUT NOCOPY cle_tbl_type,
16069 --Bug# 6344223
16070 p_source_call IN VARCHAR2 DEFAULT 'UI') IS
16071
16072 l_return_status VARCHAR2(1) DEFAULT OKL_API.G_RET_STS_SUCCESS;
16073 l_api_name CONSTANT VARCHAR2(30) := 'SPLIT_FIXED_ASSET';
16074 l_api_version CONSTANT NUMBER := 1.0;
16075
16076 CURSOR fa_line_csr(p_cle_id IN NUMBER) IS
16077 SELECT cle.id,
16078 cle.dnz_chr_id
16079 FROM OKC_K_LINES_B cle,
16080 OKC_LINE_STYLES_B lse
16081 WHERE cle.cle_id = p_cle_id
16082 AND cle.lse_id = lse.id
16083 AND lse.lty_code = 'FIXED_ASSET'
16084 --Bug Fix# 2744213 - 2761799
16085 -- should not check for effectivity on sysdate
16086 -- AND trunc(nvl(start_date,sysdate)) <= trunc(sysdate)
16087 -- AND trunc(nvl(end_date,sysdate+1)) > trunc(sysdate)
16088 --Bug# 5946411: ER
16089 --commented the status as it should consider all kind of contract
16090 -- AND cle.sts_code = 'BOOKED';
16091 ;
16092 --Bug# 5946411: ER end
16093
16094 l_txlv_rec txlv_rec_type;
16095 l_txdv_tbl txdv_tbl_type;
16096
16097 l_no_data_found BOOLEAN DEFAULT TRUE;
16098 l_fa_line_id NUMBER;
16099 l_chr_id OKC_K_LINES_B.dnz_chr_id%TYPE;
16100
16101 i NUMBER;
16102
16103 --Bug #2723498: 11.5.9 Split Asset by serial Number enhancement
16104 CURSOR srl_num_csr1 (PTalid IN NUMBER) IS
16105 SELECT COUNT(iti.serial_number)
16106 FROM okl_txl_itm_insts iti
16107 WHERE iti.tal_id = PTalid
16108 AND tal_type = 'ALI'
16109 AND NVL(selected_for_split_flag,'N') = 'Y';
16110
16111
16112 CURSOR srl_num_csr2 (PTalId IN NUMBER,
16113 PTxdId IN NUMBER) IS
16114 SELECT COUNT(iti.serial_number)
16115 FROM okl_txl_itm_insts iti
16116 WHERE iti.tal_id = PTalId
16117 AND iti.asd_id = PTxdId
16118 AND tal_type = 'ALI'
16119 AND NVL(selected_for_split_flag,'N') = 'Y';
16120
16121 l_serial_count NUMBER;
16122
16123 --cursor for asset_number
16124 CURSOR asset_num_csr (P_fin_ast_id IN NUMBER) IS
16125 SELECT name
16126 FROM okc_k_lines_tl
16127 WHERE id = p_fin_ast_id;
16128
16129 l_asset_number OKC_K_LINES_TL.NAME%TYPE;
16130
16131 --cursor to fetch serial number control code
16132 CURSOR srl_ctrl_csr (PInvItmId IN NUMBER,
16133 P_fin_ast_id IN NUMBER) IS
16134 SELECT mtl.serial_number_control_code
16135 FROM mtl_system_items mtl,
16136 okc_k_headers_b CHR,
16137 okc_k_lines_b cle
16138 WHERE mtl.inventory_item_id = PInvItmId
16139 AND mtl.organization_id = CHR.INV_ORGANIZATION_ID
16140 AND CHR.id = cle.chr_id
16141 AND cle.id = P_fin_ast_id;
16142
16143
16144 l_srl_control_code mtl_system_items.serial_number_control_code%TYPE;
16145
16146 l_serialized VARCHAR2(1) DEFAULT OKL_API.G_FALSE;
16147
16148 --Bug# 5946411: ER
16149 CURSOR c_get_sts_code(p_chr_id NUMBER)
16150 IS
16151 SELECT st.ste_code
16152 FROM OKC_K_HEADERS_V chr,
16153 okc_statuses_b st
16154 WHERE chr.id = p_chr_id
16155 and st.code = chr.sts_code;
16156 lv_sts_code OKC_K_HEADERS_V.STS_CODE%TYPE;
16157 --Bug# 5946411: ER end
16158 /*
16159 -- mvasudev, 08/23/2004
16160 -- Added PROCEDURE to enable Business Event
16161 */
16162 CURSOR l_cle_tas_csr
16163 IS
16164 SELECT cleb.dnz_chr_id,
16165 tasb.date_trans_occurred
16166 FROM okl_trx_assets tasb
16167 ,okl_txl_assets_b txlb
16168 ,okc_k_lines_b cleb
16169 ,okc_line_styles_b lseb
16170 WHERE txlb.tas_id = tasb.id
16171 AND cleb.id = txlb.kle_id
16172 AND cleb.cle_id = p_cle_id
16173 AND cleb.lse_id = lseb.id
16174 AND lseb.lty_Code = 'FIXED_ASSET'
16175 AND tasb.tsu_code = 'ENTERED';
16176
16177 l_dnz_chr_id NUMBER;
16178 l_trx_date DATE;
16179
16180 PROCEDURE raise_business_event
16181 (p_dnz_chr_id IN NUMBER,
16182 p_trx_date IN DATE,
16183 x_return_status OUT NOCOPY VARCHAR2
16184 )
16185 IS
16186
16187
16188 l_parameter_list wf_parameter_list_t;
16189 BEGIN
16190 x_return_status := OKL_API.G_RET_STS_SUCCESS;
16191
16192 wf_event.AddParameterToList(G_WF_ITM_CONTRACT_ID,l_dnz_chr_id,l_parameter_list);
16193 wf_event.AddParameterToList(G_WF_ITM_ASSET_ID,p_cle_id,l_parameter_list);
16194 wf_event.AddParameterToList(G_WF_ITM_TRANS_DATE,fnd_date.date_to_canonical(l_trx_date),l_parameter_list);
16195
16196 OKL_WF_PVT.raise_event (p_api_version => p_api_version,
16197 p_init_msg_list => p_init_msg_list,
16198 x_return_status => x_return_status,
16199 x_msg_count => x_msg_count,
16200 x_msg_data => x_msg_data,
16201 p_event_name => G_WF_EVT_KHR_SPLIT_ASSET_COMP,
16202 p_parameters => l_parameter_list);
16203
16204
16205 EXCEPTION
16206 WHEN OTHERS THEN
16207 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
16208 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16209 END raise_business_event;
16210
16211 /*
16212 -- mvasudev, 08/23/2004
16213 -- END, PROCEDURE to enable Business Event
16214 */
16215
16216 BEGIN
16217
16218 -- Call start_activity to create savepoint, check compatibility
16219 -- and initialize message list
16220 x_return_status := OKL_API.START_ACTIVITY (
16221 l_api_name
16222 ,p_init_msg_list
16223 ,'_PVT'
16224 ,x_return_status);
16225 -- Check if activity started successfully
16226 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16227 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16228 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16229 RAISE OKL_API.G_EXCEPTION_ERROR;
16230 END IF;
16231
16232 --Verify cle_id
16233 x_return_status := verify_cle_id(p_cle_id => p_cle_id);
16234 IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
16235 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16236 ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
16237 RAISE OKL_API.G_EXCEPTION_ERROR;
16238 END IF;
16239
16240 --get fixed asset line
16241 OPEN fa_line_csr(p_cle_id => p_cle_id) ;
16242 FETCH fa_line_csr INTO l_fa_line_id, l_chr_id;
16243 IF fa_line_csr%NOTFOUND THEN
16244 NULL; --not exactly
16245 OKL_API.set_message(p_app_name => G_APP_NAME,
16246 p_msg_name => G_INACTIVE_ASSET
16247 );
16248 RAISE OKL_API.G_EXCEPTION_ERROR;
16249 ELSE
16250 /*
16251 -- mvasudev, 10/28/2004
16252 -- Fetch parameters for Business Event enabling
16253 */
16254 FOR l_cle_tas_rec IN l_cle_tas_csr
16255 LOOP
16256 l_dnz_chr_id := l_cle_tas_rec.dnz_chr_id;
16257 l_trx_date := l_cle_tas_rec.date_trans_occurred;
16258 END LOOP;
16259 /*
16260 -- mvasudev, 10/28/2004
16261 -- END, Fetch parameters for Business Event enabling
16262 */
16263
16264 l_txlv_rec := get_txlv_rec(l_fa_line_id, l_no_data_found);
16265 IF l_no_data_found THEN
16266 NULL;
16267 --dbms_output.put_line('No pending Split Asset Transactions FOR this Asset');
16268 OKL_API.set_message(p_app_name => G_APP_NAME,
16269 p_msg_name => G_SPLIT_AST_TRX_NOT_FOUND
16270 );
16271 RAISE OKL_API.G_EXCEPTION_ERROR;
16272 ELSE
16273 --dbms_output.put_line('txlv id FOR FETCH OF txd '|| to_char(l_txlv_rec.id));
16274 l_txdv_tbl := get_trx_details (
16275 p_tal_id => l_txlv_rec.id,
16276 x_no_data_found => l_no_data_found
16277 );
16278 IF l_no_data_found THEN
16279 NULL;
16280 --dbms_output.put_line('NO_DATA_FOUND FOR trx detail');
16281 OKL_API.set_message(p_app_name => G_APP_NAME,
16282 p_msg_name => G_SPLIT_AST_TRX_NOT_FOUND
16283 );
16284 RAISE OKL_API.G_EXCEPTION_ERROR;
16285
16286 ELSE
16287
16288 --Bug #2723498 : 11.5.9 Split by serial numbers validation
16289 --1. validate for split into units
16290
16291 IF NVL(l_txlv_rec.SPLIT_INTO_SINGLES_FLAG,'N') = 'N' AND
16292 NVL(l_txlv_rec.split_into_units,0) <> 0 THEN
16293 l_serialized := OKL_API.G_FALSE;
16294 l_serialized := Is_Serialized(p_cle_id => p_cle_id);
16295 IF (l_serialized = OKL_API.G_TRUE) THEN
16296 OPEN srl_num_csr1 (PTalid => l_txlv_rec.id);
16297 FETCH srl_num_csr1 INTO l_serial_count;
16298 IF srl_num_csr1%NOTFOUND THEN
16299 NULL; --it is count cursor so should not happen
16300 END IF;
16301 CLOSE srl_num_csr1;
16302
16303 IF (l_serial_Count <> NVL(l_txlv_rec.split_into_units,0)) THEN
16304 --Inventory item for asset is serialized. Please select split_into_units
16305 --serial nubers to split.
16306 l_asset_number := NULL;
16307 OPEN asset_num_csr(p_fin_ast_id => p_cle_id);
16308 FETCH asset_num_csr INTO l_asset_number;
16309 IF asset_num_csr%NOTFOUND THEN
16310 NULL;
16311 END IF;
16312 CLOSE asset_num_csr;
16313
16314 OKL_API.set_message(p_app_name => G_APP_NAME,
16315 p_msg_name => G_SPLIT_SERIAL_NOT_FOUND,
16316 p_token1 => G_ASSET_NUMBER_TOKEN,
16317 p_token1_value => l_asset_number,
16318 p_token2 => G_SPLIT_UNITS_TOKEN,
16319 p_token2_value => TO_CHAR(l_txlv_rec.split_into_units)
16320 );
16321 --raise exception
16322 RAISE OKL_API.G_EXCEPTION_ERROR;
16323 END IF;
16324 END IF;
16325 END IF;
16326
16327 --2. validate for split asset into components
16328 IF NVL(l_txlv_rec.SPLIT_INTO_SINGLES_FLAG,'N') = 'X' THEN
16329 IF l_txdv_tbl.COUNT > 0 THEN
16330 FOR i IN 1..l_txdv_tbl.COUNT
16331 LOOP
16332 l_serial_count := 0;
16333 OPEN srl_ctrl_csr (PInvItmId => l_txdv_tbl(i).inventory_item_id,
16334 P_fin_ast_id => p_cle_id);
16335 FETCH srl_ctrl_csr
16336 INTO l_srl_control_code;
16337 IF srl_ctrl_csr%NOTFOUND THEN
16338 NULL; -- will not happen
16339 END IF;
16340 CLOSE srl_ctrl_csr;
16341
16342
16343 IF NVL(l_srl_control_code,0) IN (2,5,6) THEN
16344 --is serialized
16345 --Bug fix #2744213 : invalid cursor
16346 --slr_num_csr1 was being checked after opening srl_num_csr2
16347 OPEN srl_num_csr2(PTalId => l_txlv_rec.id,
16348 PTxdId => l_txdv_tbl(i).id);
16349 FETCH srl_num_csr2 INTO l_serial_count;
16350 IF srl_num_csr2%NOTFOUND THEN
16351 NULL; --it is count cursor so should not happen
16352 END IF;
16353 CLOSE srl_num_csr2;
16354
16355 IF (l_serial_count <> l_txdv_tbl(i).quantity) THEN
16356 --Inventory item for asset is serialized. Please select split_into_units
16357 --serial nubers to split.
16358
16359 OKL_API.set_message(p_app_name => G_APP_NAME,
16360 p_msg_name => G_SPLIT_SERIAL_NOT_FOUND,
16361 p_token1 => G_ASSET_NUMBER_TOKEN,
16362 p_token1_value => l_txdv_tbl(i).Asset_Number,
16363 p_token2 => G_SPLIT_UNITS_TOKEN,
16364 p_token2_value => TO_CHAR(l_txdv_tbl(i).quantity)
16365 );
16366 --raise exception
16367 RAISE OKL_API.G_EXCEPTION_ERROR;
16368 END IF;
16369 END IF;
16370 END LOOP; -- txdv_tbl
16371 END IF;-- txdv_tb.count > 0
16372 END IF;
16373 --Bug #2723498 : 11.5.9 Split by serial numbers validation End
16374
16375 --Bug# 5946411: ER
16376 -- Get the sts code since we can version only active contract
16377 -- Required to perform split for the Expired contract
16378 OPEN c_get_sts_code(l_chr_id);
16379 FETCH c_get_sts_code INTO lv_sts_code;
16380 CLOSE c_get_sts_code;
16381 --Bug# 5946411: ER End
16382 IF NVL(lv_sts_code,'X') = 'ACTIVE' THEN
16383 --version contract
16384 version_contract(
16385 x_return_status => x_return_status,
16386 x_msg_count => x_msg_count,
16387 x_msg_data => x_msg_data,
16388 p_chr_id => l_chr_id
16389 );
16390 IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
16391 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16392 ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
16393 RAISE OKL_API.G_EXCEPTION_ERROR;
16394 END IF;
16395 END IF; --Bug# 5946411: ER
16396
16397 --Call split asset for transactions to be processed
16398 Split_Fixed_Asset(p_api_version => p_api_version,
16399 p_init_msg_list => p_init_msg_list,
16400 x_return_status => x_return_status,
16401 x_msg_count => x_msg_count,
16402 x_msg_data => x_msg_data,
16403 p_txdv_tbl => l_txdv_tbl,
16404 p_txlv_rec => l_txlv_rec,
16405 x_cle_tbl => x_cle_tbl,
16406 --Bug# 6344223
16407 p_source_call => p_source_call);
16408
16409 IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
16410 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16411 ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
16412 RAISE OKL_API.G_EXCEPTION_ERROR;
16413 END IF;
16414 END IF;
16415 END IF;
16416 END IF;
16417
16418 /*
16419 -- mvasudev, 08/23/2004
16420 -- Code change to enable Business Event
16421 */
16422 raise_business_event(p_dnz_chr_id => l_dnz_chr_id,
16423 p_trx_date => l_trx_date,
16424 x_return_status => x_return_status);
16425 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16426 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16427 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16428 RAISE OKL_API.G_EXCEPTION_ERROR;
16429 END IF;
16430
16431 /*
16432 -- mvasudev, 08/23/2004
16433 -- END, Code change to enable Business Event
16434 */
16435
16436 OKL_API.END_ACTIVITY (x_msg_count,
16437 x_msg_data );
16438
16439 EXCEPTION
16440 WHEN OKL_API.G_EXCEPTION_ERROR THEN
16441 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
16442 l_api_name,
16443 G_PKG_NAME,
16444 'OKL_API.G_RET_STS_ERROR',
16445 x_msg_count,
16446 x_msg_data,
16447 '_PVT');
16448 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
16449 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
16450 l_api_name,
16451 G_PKG_NAME,
16452 'OKL_API.G_RET_STS_UNEXP_ERROR',
16453 x_msg_count,
16454 x_msg_data,
16455 '_PVT');
16456 WHEN OTHERS THEN
16457 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
16458 l_api_name,
16459 G_PKG_NAME,
16460 'OTHERS',
16461 x_msg_count,
16462 x_msg_data,
16463 '_PVT');
16464
16465 END Split_Fixed_Asset;
16466 --------------------------------------------------------------------------------
16467 --Start of Comments
16468 --Procedure Name : Cancel_Split_Asset_Trs
16469 --Description : Marks the split asset transaction as cancelled
16470 --History :
16471 -- 03-Sep-2002 ashish.singh Created
16472 --End of Comments
16473 --------------------------------------------------------------------------------
16474 PROCEDURE Cancel_Split_Asset_Trs
16475 (p_api_version IN NUMBER,
16476 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
16477 x_return_status OUT NOCOPY VARCHAR2,
16478 x_msg_count OUT NOCOPY NUMBER,
16479 x_msg_data OUT NOCOPY VARCHAR2,
16480 p_cle_id IN NUMBER) IS
16481
16482 l_return_status VARCHAR2(1) DEFAULT OKL_API.G_RET_STS_SUCCESS;
16483 l_api_name CONSTANT VARCHAR2(30) := 'CANCEL_SPLIT_ASSET_TRS';
16484 l_api_version CONSTANT NUMBER := 1.0;
16485
16486 --Cursor to get the fixed Asset Line Id
16487 CURSOR l_fixedasst_csr (p_finasst_line IN NUMBER) IS
16488 SELECT cle.id fixedasst_line
16489 FROM OKC_K_LINES_B cle,
16490 OKC_LINE_STYLES_B lse
16491 WHERE cle.cle_id = p_finasst_line
16492 AND cle.lse_id = lse.id
16493 AND lse.lty_code = 'FIXED_ASSET';
16494
16495 l_fixedasst_line OKC_K_LINES_B.ID%TYPE;
16496
16497 --Cursor to find kle_id split transaction lines to be cancelled..
16498 CURSOR l_tal_csr(p_fixedasst_line IN NUMBER) IS
16499 SELECT tal.id tal_id,
16500 tas.id tas_id
16501 FROM OKL_TRX_ASSETS TAS,
16502 OKL_TXL_ASSETS_B TAL
16503 WHERE tas.id = tal.tas_id
16504 AND tas.tsu_code = 'ENTERED'
16505 AND tas.tas_type = 'ALI'
16506 AND tal.tal_type = 'ALI'
16507 AND tal.kle_id = p_fixedasst_line;
16508
16509 l_tas_id OKL_TRX_ASSETS.ID%TYPE;
16510 l_tal_id OKL_TXL_ASSETS_B.ID%TYPE;
16511 l_cle_id OKC_K_LINES_B.ID%TYPE;
16512
16513 l_tasv_rec okl_trx_assets_pub.thpv_rec_type;
16514 lx_tasv_rec okl_trx_assets_pub.thpv_rec_type;
16515
16516 BEGIN
16517 -- Call start_activity to create savepoint, check compatibility
16518 -- and initialize message list
16519 x_return_status := OKL_API.START_ACTIVITY (
16520 l_api_name
16521 ,p_init_msg_list
16522 ,'_PVT'
16523 ,x_return_status);
16524 -- Check if activity started successfully
16525 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16526 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16527 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16528 RAISE OKL_API.G_EXCEPTION_ERROR;
16529 END IF;
16530
16531 l_cle_id := p_cle_id;
16532 --1.Verify p_cle_id
16533 x_return_status := verify_cle_id(p_cle_id => l_cle_id);
16534 IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
16535 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16536 ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
16537 RAISE OKL_API.G_EXCEPTION_ERROR;
16538 END IF;
16539
16540 -- get fixedasset line id
16541 OPEN l_fixedasst_csr(p_finasst_line => l_cle_id);
16542 FETCH l_fixedasst_csr INTO l_fixedasst_line;
16543 IF l_fixedasst_csr%NOTFOUND THEN
16544 NULL;
16545 ELSE
16546 OPEN l_tal_csr(p_fixedasst_line => l_fixedasst_line);
16547 FETCH l_tal_csr INTO l_tal_id, l_tas_id;
16548 IF l_tal_csr%NOTFOUND THEN
16549 OKL_API.set_message(p_app_name => G_APP_NAME,
16550 p_msg_name => G_SPLIT_AST_TRX_NOT_FOUND
16551 );
16552 RAISE OKL_API.G_EXCEPTION_ERROR;
16553 ELSE
16554 --update the transaction status to cancelled
16555 l_tasv_rec.id := l_tas_id;
16556 l_tasv_rec.tsu_code := 'CANCELED';
16557 --update split transaction header
16558 OKL_TRX_ASSETS_PUB.update_trx_ass_h_def(
16559 p_api_version => p_api_version,
16560 p_init_msg_list => p_init_msg_list,
16561 x_return_status => x_return_status,
16562 x_msg_count => x_msg_count,
16563 x_msg_data => x_msg_data,
16564 p_thpv_rec => l_tasv_rec,
16565 x_thpv_rec => lx_tasv_rec);
16566
16567 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16568 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16569 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16570 RAISE OKL_API.G_EXCEPTION_ERROR;
16571 END IF;
16572 END IF;
16573 CLOSE l_tal_csr;
16574 END IF; --l_fixedasst_csr%NOTFOUND
16575 CLOSE l_fixedasst_csr;
16576 OKL_API.END_ACTIVITY (x_msg_count,
16577 x_msg_data );
16578 EXCEPTION
16579 WHEN OKL_API.G_EXCEPTION_ERROR THEN
16580 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
16581 l_api_name,
16582 G_PKG_NAME,
16583 'OKL_API.G_RET_STS_ERROR',
16584 x_msg_count,
16585 x_msg_data,
16586 '_PVT');
16587 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
16588 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
16589 l_api_name,
16590 G_PKG_NAME,
16591 'OKL_API.G_RET_STS_UNEXP_ERROR',
16592 x_msg_count,
16593 x_msg_data,
16594 '_PVT');
16595 WHEN OTHERS THEN
16596 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
16597 l_api_name,
16598 G_PKG_NAME,
16599 'OTHERS',
16600 x_msg_count,
16601 x_msg_data,
16602 '_PVT');
16603 END Cancel_Split_Asset_Trs;
16604 Procedure check_ser_num_checked(x_return_status OUT NOCOPY VARCHAR2,
16605 x_msg_count OUT NOCOPY NUMBER,
16606 x_msg_data OUT NOCOPY VARCHAR2,
16607 p_cle_id IN NUMBER) is
16608
16609 l_return_status VARCHAR2(1) DEFAULT OKL_API.G_RET_STS_SUCCESS;
16610 l_api_name CONSTANT VARCHAR2(30) := 'CHECK_SER_NUM_CHECKED';
16611 l_api_version CONSTANT NUMBER := 1.0;
16612
16613 CURSOR fa_line_csr(p_cle_id IN NUMBER) IS
16614 SELECT cle.id,
16615 cle.dnz_chr_id
16616 FROM OKC_K_LINES_B cle,
16617 OKC_LINE_STYLES_B lse
16618 WHERE cle.cle_id = p_cle_id
16619 AND cle.lse_id = lse.id
16620 AND lse.lty_code = 'FIXED_ASSET';
16621
16622 l_txlv_rec txlv_rec_type;
16623 l_txdv_tbl txdv_tbl_type;
16624
16625 l_no_data_found BOOLEAN DEFAULT TRUE;
16626 l_fa_line_id NUMBER;
16627 l_chr_id OKC_K_LINES_B.dnz_chr_id%TYPE;
16628
16629 i NUMBER;
16630
16631 CURSOR srl_num_csr1 (PTalid IN NUMBER) IS
16632 SELECT COUNT(iti.serial_number)
16633 FROM okl_txl_itm_insts iti
16634 WHERE iti.tal_id = PTalid
16635 AND tal_type = 'ALI'
16636 AND NVL(selected_for_split_flag,'N') = 'Y';
16637
16638 l_serial_count NUMBER;
16639
16640 --cursor for asset_number
16641 CURSOR asset_num_csr (P_fin_ast_id IN NUMBER) IS
16642 SELECT name
16643 FROM okc_k_lines_tl
16644 WHERE id = p_fin_ast_id;
16645
16646 l_asset_number OKC_K_LINES_TL.NAME%TYPE;
16647
16648 BEGIN
16649
16650 -- dbms_output.put_line('start');
16651 -- Call start_activity to create savepoint, check compatibility
16652 -- and initialize message list
16653 x_return_status := OKL_API.START_ACTIVITY (
16654 l_api_name
16655 ,OKL_API.G_FALSE
16656 ,'_PVT'
16657 ,x_return_status);
16658 -- Check if activity started successfully
16659 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16660 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16661 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16662 RAISE OKL_API.G_EXCEPTION_ERROR;
16663 END IF;
16664 -- dbms_output.put_line('ebd activity');
16665 --Verify cle_id
16666 x_return_status := verify_cle_id(p_cle_id => p_cle_id);
16667 -- dbms_output.put_line('x_return_status after verify : ' || x_return_status);
16668 IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
16669 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16670 ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
16671 RAISE OKL_API.G_EXCEPTION_ERROR;
16672 END IF;
16673
16674 -- dbms_output.put_line('b4 fa_line_csr');
16675 --get fixed asset line
16676 OPEN fa_line_csr(p_cle_id => p_cle_id) ;
16677 FETCH fa_line_csr INTO l_fa_line_id, l_chr_id;
16678 IF fa_line_csr%NOTFOUND THEN
16679 NULL; --not exactly
16680 OKL_API.set_message(p_app_name => G_APP_NAME,
16681 p_msg_name => G_INACTIVE_ASSET
16682 );
16683 RAISE OKL_API.G_EXCEPTION_ERROR;
16684 ELSE
16685 l_txlv_rec := get_txlv_rec(l_fa_line_id, l_no_data_found);
16686 IF l_no_data_found THEN
16687 NULL;
16688 OKL_API.set_message(p_app_name => G_APP_NAME,
16689 p_msg_name => G_SPLIT_AST_TRX_NOT_FOUND
16690 );
16691 RAISE OKL_API.G_EXCEPTION_ERROR;
16692 ELSE
16693 l_txdv_tbl := get_trx_details (
16694 p_tal_id => l_txlv_rec.id,
16695 x_no_data_found => l_no_data_found
16696 );
16697 IF l_no_data_found THEN
16698 NULL;
16699 OKL_API.set_message(p_app_name => G_APP_NAME,
16700 p_msg_name => G_SPLIT_AST_TRX_NOT_FOUND
16701 );
16702 RAISE OKL_API.G_EXCEPTION_ERROR;
16703
16704 ELSE
16705 IF NVL(l_txlv_rec.SPLIT_INTO_SINGLES_FLAG,'N') = 'N' AND
16706 NVL(l_txlv_rec.split_into_units,0) <> 0 THEN
16707 -- dbms_output.put_line('b4 srl_num_csr1:' || l_serial_count);
16708 OPEN srl_num_csr1 (PTalid => l_txlv_rec.id);
16709 FETCH srl_num_csr1 INTO l_serial_count;
16710 IF srl_num_csr1%NOTFOUND THEN
16711 NULL; --it is count cursor so should not happen
16712 END IF;
16713 CLOSE srl_num_csr1;
16714 IF (l_serial_Count <> NVL(l_txlv_rec.split_into_units,0))
16715 THEN
16716 --Inventory item for asset is serialized. Please select
16717 --serial nubers to split.
16718 l_asset_number := NULL;
16719 -- dbms_output.put_line('b4 asset_num_csr:');
16720 OPEN asset_num_csr(p_fin_ast_id => p_cle_id);
16721 FETCH asset_num_csr INTO l_asset_number;
16722 IF asset_num_csr%NOTFOUND THEN
16723 NULL;
16724 END IF;
16725 CLOSE asset_num_csr;
16726 -- dbms_output.put_line('after asset_num_csr:');
16727 OKL_API.set_message(p_app_name => G_APP_NAME,
16728 p_msg_name =>
16729 G_SPLIT_SERIAL_NOT_FOUND,
16730 p_token1 =>
16731 G_ASSET_NUMBER_TOKEN,
16732 p_token1_value => l_asset_number,
16733 p_token2 =>
16734 G_SPLIT_UNITS_TOKEN,
16735 p_token2_value =>
16736 TO_CHAR(l_txlv_rec.split_into_units)
16737 );
16738 --raise exception
16739 RAISE OKL_API.G_EXCEPTION_ERROR;
16740 END IF;
16741 END IF;
16742 END IF;
16743 END IF;
16744 END IF;
16745 exception
16746 WHEN OKL_API.G_EXCEPTION_ERROR THEN
16747 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
16748 l_api_name,
16749 G_PKG_NAME,
16750 'OKL_API.G_RET_STS_ERROR',
16751 x_msg_count,
16752 x_msg_data,
16753 '_PVT');
16754 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
16755 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
16756 l_api_name,
16757 G_PKG_NAME,
16758 'OKL_API.G_RET_STS_UNEXP_ERROR',
16759 x_msg_count,
16760 x_msg_data,
16761 '_PVT');
16762 WHEN OTHERS THEN
16763 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
16764 l_api_name,
16765 G_PKG_NAME,
16766 'OTHERS',
16767 x_msg_count,
16768 x_msg_data,
16769 '_PVT');
16770 end check_ser_num_checked;
16771 END Okl_Split_Asset_Pvt;