DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKS_KLN_PVT

Source


1 PACKAGE BODY OKS_KLN_PVT AS
2 /* $Header: OKSSKLNB.pls 120.6.12000000.2 2007/02/15 07:30:42 npalepu ship $ */
3   ---------------------------------------------------------------------------
4   -- PROCEDURE load_error_tbl
5   ---------------------------------------------------------------------------
6   PROCEDURE load_error_tbl (
7     px_error_rec                   IN OUT NOCOPY OKC_API.ERROR_REC_TYPE,
8     px_error_tbl                   IN OUT NOCOPY OKC_API.ERROR_TBL_TYPE) IS
9 
10     j                              INTEGER := NVL(px_error_tbl.LAST, 0) + 1;
11     last_msg_idx                   INTEGER := FND_MSG_PUB.COUNT_MSG;
12     l_msg_idx                      INTEGER := FND_MSG_PUB.G_NEXT;
13   BEGIN
14     -- FND_MSG_PUB has a small error in it.  If we call FND_MSG_PUB.COUNT_AND_GET before
15     -- we call FND_MSG_PUB.GET, the variable FND_MSG_PUB uses to control the index of the
16     -- message stack gets set to 1.  This makes sense until we call FND_MSG_PUB.GET which
17     -- automatically increments the index by 1, (making it 2), however, when the GET function
18     -- attempts to pull message 2, we get a NO_DATA_FOUND exception because there isn't any
19     -- message 2.  To circumvent this problem, check the amount of messages and compensate.
20     -- Again, this error only occurs when 1 message is on the stack because COUNT_AND_GET
21     -- will only update the index variable when 1 and only 1 message is on the stack.
22     IF (last_msg_idx = 1) THEN
23       l_msg_idx := FND_MSG_PUB.G_FIRST;
24     END IF;
25     LOOP
26       fnd_msg_pub.get(
27             p_msg_index     => l_msg_idx,
28             p_encoded       => fnd_api.g_false,
29             p_data          => px_error_rec.msg_data,
30             p_msg_index_out => px_error_rec.msg_count);
31       px_error_tbl(j) := px_error_rec;
32       j := j + 1;
33     EXIT WHEN (px_error_rec.msg_count = last_msg_idx);
34     END LOOP;
35   END load_error_tbl;
36   ---------------------------------------------------------------------------
37   -- FUNCTION find_highest_exception
38   ---------------------------------------------------------------------------
39   -- Finds the highest exception (G_RET_STS_UNEXP_ERROR)
40   -- in a OKC_API.ERROR_TBL_TYPE, and returns it.
41   FUNCTION find_highest_exception(
42     p_error_tbl                    IN OKC_API.ERROR_TBL_TYPE
43   ) RETURN VARCHAR2 IS
44     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
45     i                              INTEGER := 1;
46   BEGIN
47     IF (p_error_tbl.COUNT > 0) THEN
48       i := p_error_tbl.FIRST;
49       LOOP
50         IF (p_error_tbl(i).error_type <> OKC_API.G_RET_STS_SUCCESS) THEN
51           IF (l_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) THEN
52             l_return_status := p_error_tbl(i).error_type;
53           END IF;
54         END IF;
55         EXIT WHEN (i = p_error_tbl.LAST);
56         i := p_error_tbl.NEXT(i);
57       END LOOP;
58     END IF;
59     RETURN(l_return_status);
60   END find_highest_exception;
61   ---------------------------------------------------------------------------
62   -- FUNCTION get_seq_id
63   ---------------------------------------------------------------------------
64   FUNCTION get_seq_id RETURN NUMBER IS
65   BEGIN
66     RETURN(okc_p_util.raw_to_number(sys_guid()));
67   END get_seq_id;
68 
69   ---------------------------------------------------------------------------
70   -- PROCEDURE qc
71   ---------------------------------------------------------------------------
72   PROCEDURE qc IS
73   BEGIN
74     null;
75   END qc;
76 
77   ---------------------------------------------------------------------------
78   -- PROCEDURE change_version
79   ---------------------------------------------------------------------------
80   PROCEDURE change_version IS
81   BEGIN
82     null;
83   END change_version;
84 
85   ---------------------------------------------------------------------------
86   -- PROCEDURE api_copy
87   ---------------------------------------------------------------------------
88   PROCEDURE api_copy IS
89   BEGIN
90     null;
91   END api_copy;
92 
93   ---------------------------------------------------------------------------
94   -- PROCEDURE add_language
95   ---------------------------------------------------------------------------
96   PROCEDURE add_language IS
97   BEGIN
98 /* Mar/19/03 requested by Ric Ginsberg */
99 /* The following delete and update statements are commented out */
100 /* as a quick workaround to fix the time-consuming table handler issue */
101 /* Eventually we'll need to turn them into a separate fix_language procedure */
102 /* refer fnd bug# 3723612 for details and oks bug 4210278
103 /*
104     DELETE FROM OKS_K_LINES_TL T
105      WHERE NOT EXISTS (
106         SELECT NULL
107           FROM OKS_K_LINES_B B
108          WHERE B.ID =T.ID
109         );
110 
111     UPDATE OKS_K_LINES_TL T SET(
112         INVOICE_TEXT,
113         IB_TRX_DETAILS,
114         STATUS_TEXT,
115         REACT_TIME_NAME) = (SELECT
116                                   B.INVOICE_TEXT,
117                                   B.IB_TRX_DETAILS,
118                                   B.STATUS_TEXT,
119                                   B.REACT_TIME_NAME
120                                 FROM OKS_K_LINES_TL B
121                                WHERE B.ID = T.ID
122                                  AND B.LANGUAGE = T.SOURCE_LANG)
123       WHERE ( T.ID,
124               T.LANGUAGE)
125           IN (SELECT
126                   SUBT.ID,
127                   SUBT.LANGUAGE
128                 FROM OKS_K_LINES_TL SUBB, OKS_K_LINES_TL SUBT
129                WHERE SUBB.ID = SUBT.ID
130                  AND SUBB.LANGUAGE = SUBT.SOURCE_LANG
131                  AND (SUBB.INVOICE_TEXT <> SUBT.INVOICE_TEXT
132                       OR SUBB.IB_TRX_DETAILS <> SUBT.IB_TRX_DETAILS
133                       OR SUBB.STATUS_TEXT <> SUBT.STATUS_TEXT
134                       OR SUBB.REACT_TIME_NAME <> SUBT.REACT_TIME_NAME
135                       OR (SUBB.INVOICE_TEXT IS NULL AND SUBT.INVOICE_TEXT IS NOT NULL)
136                       OR (SUBB.IB_TRX_DETAILS IS NULL AND SUBT.IB_TRX_DETAILS IS NOT NULL)
137                       OR (SUBB.STATUS_TEXT IS NULL AND SUBT.STATUS_TEXT IS NOT NULL)
138                       OR (SUBB.REACT_TIME_NAME IS NULL AND SUBT.REACT_TIME_NAME IS NOT NULL)
139               ));
140 
141     */
142 
143     INSERT /* append parallel (tt) */ INTO OKS_K_LINES_TL tt (
144         ID,
145         LANGUAGE,
146         SOURCE_LANG,
147         SFWT_FLAG,
148         INVOICE_TEXT,
149         IB_TRX_DETAILS,
150         STATUS_TEXT,
151         REACT_TIME_NAME,
152         CREATED_BY,
153         CREATION_DATE,
154         LAST_UPDATED_BY,
155         LAST_UPDATE_DATE,
156         LAST_UPDATE_LOGIN)
157 
158 	 select /* parallel(v) parallel(t) use_nl(t) */ v.* from
159 	   (select /*+ no_merge ordered parallel(b) */
160             B.ID,
161             L.LANGUAGE_CODE,
162             B.SOURCE_LANG,
163             B.SFWT_FLAG,
164             B.INVOICE_TEXT,
165             B.IB_TRX_DETAILS,
166             B.STATUS_TEXT,
167             B.REACT_TIME_NAME,
168             B.CREATED_BY,
169             B.CREATION_DATE,
170             B.LAST_UPDATED_BY,
171             B.LAST_UPDATE_DATE,
172             B.LAST_UPDATE_LOGIN
173          from  OKS_K_LINES_TL B, FND_LANGUAGES L
174          where L.INSTALLED_FLAG IN ('I', 'B')
175 	    and B.LANGUAGE = USERENV('LANG')
176 	    ) v,
177 	 OKS_K_LINES_TL t
178 	WHERE t.ID(+) = v.ID
179 	AND t.LANGUAGE(+) = v.LANGUAGE_CODE
180 	and t.id is NULL;
181 
182   END add_language;
183 
184   ---------------------------------------------------------------------------
185   -- FUNCTION get_rec for: OKS_K_LINES_V
186   ---------------------------------------------------------------------------
187   FUNCTION get_rec (
188     p_klnv_rec                     IN klnv_rec_type,
189     x_no_data_found                OUT NOCOPY BOOLEAN
190   ) RETURN klnv_rec_type IS
191     CURSOR oks_klnv_pk_csr (p_id IN NUMBER) IS
192     SELECT
193             ID,
194             CLE_ID,
195             DNZ_CHR_ID,
196             DISCOUNT_LIST,
197             ACCT_RULE_ID,
198             PAYMENT_TYPE,
199             CC_NO,
200             CC_EXPIRY_DATE,
201             CC_BANK_ACCT_ID,
202             CC_AUTH_CODE,
203             COMMITMENT_ID,
204             LOCKED_PRICE_LIST_ID,
205             USAGE_EST_YN,
206             USAGE_EST_METHOD,
207             USAGE_EST_START_DATE,
208             TERMN_METHOD,
209             UBT_AMOUNT,
210             CREDIT_AMOUNT,
211             SUPPRESSED_CREDIT,
212             OVERRIDE_AMOUNT,
213             CUST_PO_NUMBER_REQ_YN,
214             CUST_PO_NUMBER,
215             GRACE_DURATION,
216             GRACE_PERIOD,
217             INV_PRINT_FLAG,
218             PRICE_UOM,
219             TAX_AMOUNT,
220             TAX_INCLUSIVE_YN,
221             TAX_STATUS,
222             TAX_CODE,
223             TAX_EXEMPTION_ID,
224             IB_TRANS_TYPE,
225             IB_TRANS_DATE,
226             PROD_PRICE,
227             SERVICE_PRICE,
228             CLVL_LIST_PRICE,
229             CLVL_QUANTITY,
230             CLVL_EXTENDED_AMT,
231             CLVL_UOM_CODE,
232             TOPLVL_OPERAND_CODE,
233             TOPLVL_OPERAND_VAL,
234             TOPLVL_QUANTITY,
235             TOPLVL_UOM_CODE,
236             TOPLVL_ADJ_PRICE,
237             TOPLVL_PRICE_QTY,
238             AVERAGING_INTERVAL,
239             SETTLEMENT_INTERVAL,
240             MINIMUM_QUANTITY,
241             DEFAULT_QUANTITY,
242             AMCV_FLAG,
243             FIXED_QUANTITY,
244             USAGE_DURATION,
245             USAGE_PERIOD,
246             LEVEL_YN,
247             USAGE_TYPE,
248             UOM_QUANTIFIED,
249             BASE_READING,
250             BILLING_SCHEDULE_TYPE,
251             FULL_CREDIT,
252             LOCKED_PRICE_LIST_LINE_ID,
253             BREAK_UOM,
254             PRORATE,
255             COVERAGE_TYPE,
256             EXCEPTION_COV_ID,
257             LIMIT_UOM_QUANTIFIED,
258             DISCOUNT_AMOUNT,
259             DISCOUNT_PERCENT,
260             OFFSET_DURATION,
261             OFFSET_PERIOD,
262             INCIDENT_SEVERITY_ID,
263             PDF_ID,
264             WORK_THRU_YN,
265             REACT_ACTIVE_YN,
266             TRANSFER_OPTION,
267             PROD_UPGRADE_YN,
268             INHERITANCE_TYPE,
269             PM_PROGRAM_ID,
270             PM_CONF_REQ_YN,
271             PM_SCH_EXISTS_YN,
272             ALLOW_BT_DISCOUNT,
273             APPLY_DEFAULT_TIMEZONE,
274             SYNC_DATE_INSTALL,
275             SFWT_FLAG,
276             INVOICE_TEXT,
277             IB_TRX_DETAILS,
278             STATUS_TEXT,
279             REACT_TIME_NAME,
280             OBJECT_VERSION_NUMBER,
281             SECURITY_GROUP_ID,
282             REQUEST_ID,
283             CREATED_BY,
284             CREATION_DATE,
285             LAST_UPDATED_BY,
286             LAST_UPDATE_DATE,
287             LAST_UPDATE_LOGIN,
288 -- R12 Data Model Changes 4485150 Start
289             TRXN_EXTENSION_ID,
290             TAX_CLASSIFICATION_CODE,
291             EXEMPT_CERTIFICATE_NUMBER,
292             EXEMPT_REASON_CODE,
293             COVERAGE_ID,
294             STANDARD_COV_YN,
295             ORIG_SYSTEM_ID1,
296             ORIG_SYSTEM_REFERENCE1,
297             ORIG_SYSTEM_SOURCE_CODE
298 -- R12 Data Model Changes 4485150 End
299       FROM Oks_K_Lines_V
300      WHERE oks_k_lines_v.id     = p_id;
301     l_oks_klnv_pk                  oks_klnv_pk_csr%ROWTYPE;
302     l_klnv_rec                     klnv_rec_type;
303   BEGIN
304     x_no_data_found := TRUE;
305     -- Get current database values
306     OPEN oks_klnv_pk_csr (p_klnv_rec.id);
307     FETCH oks_klnv_pk_csr INTO
308               l_klnv_rec.id,
309               l_klnv_rec.cle_id,
310               l_klnv_rec.dnz_chr_id,
311               l_klnv_rec.discount_list,
312               l_klnv_rec.acct_rule_id,
313               l_klnv_rec.payment_type,
314               l_klnv_rec.cc_no,
315               l_klnv_rec.cc_expiry_date,
316               l_klnv_rec.cc_bank_acct_id,
317               l_klnv_rec.cc_auth_code,
318               l_klnv_rec.commitment_id,
319               l_klnv_rec.locked_price_list_id,
320               l_klnv_rec.usage_est_yn,
321               l_klnv_rec.usage_est_method,
322               l_klnv_rec.usage_est_start_date,
323               l_klnv_rec.termn_method,
324               l_klnv_rec.ubt_amount,
325               l_klnv_rec.credit_amount,
326               l_klnv_rec.suppressed_credit,
327               l_klnv_rec.override_amount,
328               l_klnv_rec.cust_po_number_req_yn,
329               l_klnv_rec.cust_po_number,
330               l_klnv_rec.grace_duration,
331               l_klnv_rec.grace_period,
332               l_klnv_rec.inv_print_flag,
333               l_klnv_rec.price_uom,
334               l_klnv_rec.tax_amount,
335               l_klnv_rec.tax_inclusive_yn,
336               l_klnv_rec.tax_status,
337               l_klnv_rec.tax_code,
338               l_klnv_rec.tax_exemption_id,
339               l_klnv_rec.ib_trans_type,
340               l_klnv_rec.ib_trans_date,
341               l_klnv_rec.prod_price,
342               l_klnv_rec.service_price,
343               l_klnv_rec.clvl_list_price,
344               l_klnv_rec.clvl_quantity,
345               l_klnv_rec.clvl_extended_amt,
346               l_klnv_rec.clvl_uom_code,
347               l_klnv_rec.toplvl_operand_code,
348               l_klnv_rec.toplvl_operand_val,
349               l_klnv_rec.toplvl_quantity,
350               l_klnv_rec.toplvl_uom_code,
351               l_klnv_rec.toplvl_adj_price,
352               l_klnv_rec.toplvl_price_qty,
353               l_klnv_rec.averaging_interval,
354               l_klnv_rec.settlement_interval,
355               l_klnv_rec.minimum_quantity,
356               l_klnv_rec.default_quantity,
357               l_klnv_rec.amcv_flag,
358               l_klnv_rec.fixed_quantity,
359               l_klnv_rec.usage_duration,
360               l_klnv_rec.usage_period,
361               l_klnv_rec.level_yn,
362               l_klnv_rec.usage_type,
363               l_klnv_rec.uom_quantified,
364               l_klnv_rec.base_reading,
365               l_klnv_rec.billing_schedule_type,
366               l_klnv_rec.full_credit,
367               l_klnv_rec.locked_price_list_line_id,
368               l_klnv_rec.break_uom,
369               l_klnv_rec.prorate,
370               l_klnv_rec.coverage_type,
371               l_klnv_rec.exception_cov_id,
372               l_klnv_rec.limit_uom_quantified,
373               l_klnv_rec.discount_amount,
374               l_klnv_rec.discount_percent,
375               l_klnv_rec.offset_duration,
376               l_klnv_rec.offset_period,
377               l_klnv_rec.incident_severity_id,
378               l_klnv_rec.pdf_id,
379               l_klnv_rec.work_thru_yn,
380               l_klnv_rec.react_active_yn,
381               l_klnv_rec.transfer_option,
382               l_klnv_rec.prod_upgrade_yn,
383               l_klnv_rec.inheritance_type,
384               l_klnv_rec.pm_program_id,
385               l_klnv_rec.pm_conf_req_yn,
386               l_klnv_rec.pm_sch_exists_yn,
387               l_klnv_rec.allow_bt_discount,
388               l_klnv_rec.apply_default_timezone,
389               l_klnv_rec.sync_date_install,
390               l_klnv_rec.sfwt_flag,
391               l_klnv_rec.invoice_text,
392               l_klnv_rec.ib_trx_details,
393               l_klnv_rec.status_text,
394               l_klnv_rec.react_time_name,
395               l_klnv_rec.object_version_number,
396               l_klnv_rec.security_group_id,
397               l_klnv_rec.request_id,
398               l_klnv_rec.created_by,
399               l_klnv_rec.creation_date,
400               l_klnv_rec.last_updated_by,
401               l_klnv_rec.last_update_date,
402               l_klnv_rec.last_update_login,
403 -- R12 Data Model Changes 4485150 Start
404               l_klnv_rec.trxn_extension_id,
405               l_klnv_rec.tax_classification_code,
406               l_klnv_rec.exempt_certificate_number,
407               l_klnv_rec.exempt_reason_code,
408               l_klnv_rec.coverage_id,
409               l_klnv_rec.standard_cov_yn,
410               l_klnv_rec.orig_system_id1,
411               l_klnv_rec.orig_system_reference1,
412               l_klnv_rec.orig_system_source_code
413 -- R12 Data Model Changes 4485150 End
414 ;
415     x_no_data_found := oks_klnv_pk_csr%NOTFOUND;
416     CLOSE oks_klnv_pk_csr;
417     RETURN(l_klnv_rec);
418   END get_rec;
419 
420   ------------------------------------------------------------------
421   -- This version of get_rec sets error messages if no data found --
422   ------------------------------------------------------------------
423   FUNCTION get_rec (
424     p_klnv_rec                     IN klnv_rec_type,
425     x_return_status                OUT NOCOPY VARCHAR2
426   ) RETURN klnv_rec_type IS
427     l_klnv_rec                     klnv_rec_type;
428     l_row_notfound                 BOOLEAN := TRUE;
429   BEGIN
430     x_return_status := OKC_API.G_RET_STS_SUCCESS;
431     l_klnv_rec := get_rec(p_klnv_rec, l_row_notfound);
432     IF (l_row_notfound) THEN
433       OKC_API.set_message(G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'ID');
434       x_return_status := OKC_API.G_RET_STS_ERROR;
435     END IF;
436     RETURN(l_klnv_rec);
437   END get_rec;
438   -----------------------------------------------------------
439   -- So we don't have to pass an "l_row_notfound" variable --
440   -----------------------------------------------------------
441   FUNCTION get_rec (
442     p_klnv_rec                     IN klnv_rec_type
443   ) RETURN klnv_rec_type IS
444     l_row_not_found                BOOLEAN := TRUE;
445   BEGIN
446     RETURN(get_rec(p_klnv_rec, l_row_not_found));
447   END get_rec;
448   ---------------------------------------------------------------------------
449   -- FUNCTION get_rec for: OKS_K_LINES_B
450   ---------------------------------------------------------------------------
451   FUNCTION get_rec (
452     p_kln_rec                      IN kln_rec_type,
453     x_no_data_found                OUT NOCOPY BOOLEAN
454   ) RETURN kln_rec_type IS
455     CURSOR oks_k_lines_b_pk_csr (p_id IN NUMBER) IS
456     SELECT
457             ID,
458             CLE_ID,
459             DNZ_CHR_ID,
460             DISCOUNT_LIST,
461             ACCT_RULE_ID,
462             PAYMENT_TYPE,
463             CC_NO,
464             CC_EXPIRY_DATE,
465             CC_BANK_ACCT_ID,
466             CC_AUTH_CODE,
467             COMMITMENT_ID,
468             LOCKED_PRICE_LIST_ID,
469             USAGE_EST_YN,
470             USAGE_EST_METHOD,
471             USAGE_EST_START_DATE,
472             TERMN_METHOD,
473             UBT_AMOUNT,
474             CREDIT_AMOUNT,
475             SUPPRESSED_CREDIT,
476             OVERRIDE_AMOUNT,
477             CUST_PO_NUMBER_REQ_YN,
478             CUST_PO_NUMBER,
479             GRACE_DURATION,
480             GRACE_PERIOD,
481             INV_PRINT_FLAG,
482             PRICE_UOM,
483             TAX_AMOUNT,
484             TAX_INCLUSIVE_YN,
485             TAX_STATUS,
486             TAX_CODE,
487             TAX_EXEMPTION_ID,
488             IB_TRANS_TYPE,
489             IB_TRANS_DATE,
490             PROD_PRICE,
491             SERVICE_PRICE,
492             CLVL_LIST_PRICE,
493             CLVL_QUANTITY,
494             CLVL_EXTENDED_AMT,
495             CLVL_UOM_CODE,
496             TOPLVL_OPERAND_CODE,
497             TOPLVL_OPERAND_VAL,
498             TOPLVL_QUANTITY,
499             TOPLVL_UOM_CODE,
500             TOPLVL_ADJ_PRICE,
501             TOPLVL_PRICE_QTY,
502             AVERAGING_INTERVAL,
503             SETTLEMENT_INTERVAL,
504             MINIMUM_QUANTITY,
505             DEFAULT_QUANTITY,
506             AMCV_FLAG,
507             FIXED_QUANTITY,
508             USAGE_DURATION,
509             USAGE_PERIOD,
510             LEVEL_YN,
511             USAGE_TYPE,
512             UOM_QUANTIFIED,
513             BASE_READING,
514             BILLING_SCHEDULE_TYPE,
515             FULL_CREDIT,
516             LOCKED_PRICE_LIST_LINE_ID,
517             BREAK_UOM,
518             PRORATE,
519             COVERAGE_TYPE,
520             EXCEPTION_COV_ID,
521             LIMIT_UOM_QUANTIFIED,
522             DISCOUNT_AMOUNT,
523             DISCOUNT_PERCENT,
524             OFFSET_DURATION,
525             OFFSET_PERIOD,
526             INCIDENT_SEVERITY_ID,
527             PDF_ID,
528             WORK_THRU_YN,
529             REACT_ACTIVE_YN,
530             TRANSFER_OPTION,
531             PROD_UPGRADE_YN,
532             INHERITANCE_TYPE,
533             PM_PROGRAM_ID,
534             PM_CONF_REQ_YN,
535             PM_SCH_EXISTS_YN,
536             ALLOW_BT_DISCOUNT,
537             APPLY_DEFAULT_TIMEZONE,
538             SYNC_DATE_INSTALL,
539             OBJECT_VERSION_NUMBER,
540             REQUEST_ID,
541             CREATED_BY,
542             CREATION_DATE,
543             LAST_UPDATED_BY,
544             LAST_UPDATE_DATE,
545             LAST_UPDATE_LOGIN,
546 -- R12 Data Model Changes 4485150 Start
547             TRXN_EXTENSION_ID,
548             TAX_CLASSIFICATION_CODE,
549             EXEMPT_CERTIFICATE_NUMBER,
550             EXEMPT_REASON_CODE,
551             COVERAGE_ID,
552             STANDARD_COV_YN,
553             ORIG_SYSTEM_ID1,
554             ORIG_SYSTEM_REFERENCE1,
555             ORIG_SYSTEM_SOURCE_CODE
556 -- R12 Data Model Changes 4485150 End
557       FROM Oks_K_Lines_B
558      WHERE oks_k_lines_b.id     = p_id;
559     l_oks_k_lines_b_pk             oks_k_lines_b_pk_csr%ROWTYPE;
560     l_kln_rec                      kln_rec_type;
561   BEGIN
562     x_no_data_found := TRUE;
563     -- Get current database values
564     OPEN oks_k_lines_b_pk_csr (p_kln_rec.id);
565     FETCH oks_k_lines_b_pk_csr INTO
566               l_kln_rec.id,
567               l_kln_rec.cle_id,
568               l_kln_rec.dnz_chr_id,
569               l_kln_rec.discount_list,
570               l_kln_rec.acct_rule_id,
571               l_kln_rec.payment_type,
572               l_kln_rec.cc_no,
573               l_kln_rec.cc_expiry_date,
574               l_kln_rec.cc_bank_acct_id,
575               l_kln_rec.cc_auth_code,
576               l_kln_rec.commitment_id,
577               l_kln_rec.locked_price_list_id,
578               l_kln_rec.usage_est_yn,
579               l_kln_rec.usage_est_method,
580               l_kln_rec.usage_est_start_date,
581               l_kln_rec.termn_method,
582               l_kln_rec.ubt_amount,
583               l_kln_rec.credit_amount,
584               l_kln_rec.suppressed_credit,
585               l_kln_rec.override_amount,
586               l_kln_rec.cust_po_number_req_yn,
587               l_kln_rec.cust_po_number,
588               l_kln_rec.grace_duration,
589               l_kln_rec.grace_period,
590               l_kln_rec.inv_print_flag,
591               l_kln_rec.price_uom,
592               l_kln_rec.tax_amount,
593               l_kln_rec.tax_inclusive_yn,
594               l_kln_rec.tax_status,
595               l_kln_rec.tax_code,
596               l_kln_rec.tax_exemption_id,
597               l_kln_rec.ib_trans_type,
598               l_kln_rec.ib_trans_date,
599               l_kln_rec.prod_price,
600               l_kln_rec.service_price,
601               l_kln_rec.clvl_list_price,
602               l_kln_rec.clvl_quantity,
603               l_kln_rec.clvl_extended_amt,
604               l_kln_rec.clvl_uom_code,
605               l_kln_rec.toplvl_operand_code,
606               l_kln_rec.toplvl_operand_val,
607               l_kln_rec.toplvl_quantity,
608               l_kln_rec.toplvl_uom_code,
609               l_kln_rec.toplvl_adj_price,
610               l_kln_rec.toplvl_price_qty,
611               l_kln_rec.averaging_interval,
612               l_kln_rec.settlement_interval,
613               l_kln_rec.minimum_quantity,
614               l_kln_rec.default_quantity,
615               l_kln_rec.amcv_flag,
616               l_kln_rec.fixed_quantity,
617               l_kln_rec.usage_duration,
618               l_kln_rec.usage_period,
619               l_kln_rec.level_yn,
620               l_kln_rec.usage_type,
621               l_kln_rec.uom_quantified,
622               l_kln_rec.base_reading,
623               l_kln_rec.billing_schedule_type,
624               l_kln_rec.full_credit,
625               l_kln_rec.locked_price_list_line_id,
626               l_kln_rec.break_uom,
627               l_kln_rec.prorate,
628               l_kln_rec.coverage_type,
629               l_kln_rec.exception_cov_id,
630               l_kln_rec.limit_uom_quantified,
631               l_kln_rec.discount_amount,
632               l_kln_rec.discount_percent,
633               l_kln_rec.offset_duration,
634               l_kln_rec.offset_period,
635               l_kln_rec.incident_severity_id,
636               l_kln_rec.pdf_id,
637               l_kln_rec.work_thru_yn,
638               l_kln_rec.react_active_yn,
639               l_kln_rec.transfer_option,
640               l_kln_rec.prod_upgrade_yn,
641               l_kln_rec.inheritance_type,
642               l_kln_rec.pm_program_id,
643               l_kln_rec.pm_conf_req_yn,
644               l_kln_rec.pm_sch_exists_yn,
645               l_kln_rec.allow_bt_discount,
646               l_kln_rec.apply_default_timezone,
647               l_kln_rec.sync_date_install,
648               l_kln_rec.object_version_number,
649               l_kln_rec.request_id,
650               l_kln_rec.created_by,
651               l_kln_rec.creation_date,
652               l_kln_rec.last_updated_by,
653               l_kln_rec.last_update_date,
654               l_kln_rec.last_update_login,
655 -- R12 Data Model Changes 4485150 Start
656               l_kln_rec.trxn_extension_id,
657               l_kln_rec.tax_classification_code,
658               l_kln_rec.exempt_certificate_number,
659               l_kln_rec.exempt_reason_code,
660               l_kln_rec.coverage_id,
661               l_kln_rec.standard_cov_yn,
662               l_kln_rec.orig_system_id1,
663               l_kln_rec.orig_system_reference1,
664               l_kln_rec.orig_system_source_code
665 -- R12 Data Model Changes 4485150 End
666 ;
667     x_no_data_found := oks_k_lines_b_pk_csr%NOTFOUND;
668     CLOSE oks_k_lines_b_pk_csr;
669     RETURN(l_kln_rec);
670   END get_rec;
671 
672   ------------------------------------------------------------------
673   -- This version of get_rec sets error messages if no data found --
674   ------------------------------------------------------------------
675   FUNCTION get_rec (
676     p_kln_rec                      IN kln_rec_type,
677     x_return_status                OUT NOCOPY VARCHAR2
678   ) RETURN kln_rec_type IS
679     l_kln_rec                      kln_rec_type;
680     l_row_notfound                 BOOLEAN := TRUE;
681   BEGIN
682     x_return_status := OKC_API.G_RET_STS_SUCCESS;
683     l_kln_rec := get_rec(p_kln_rec, l_row_notfound);
684     IF (l_row_notfound) THEN
685       OKC_API.set_message(G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'ID');
686       x_return_status := OKC_API.G_RET_STS_ERROR;
687     END IF;
688     RETURN(l_kln_rec);
689   END get_rec;
690   -----------------------------------------------------------
691   -- So we don't have to pass an "l_row_notfound" variable --
692   -----------------------------------------------------------
693   FUNCTION get_rec (
694     p_kln_rec                      IN kln_rec_type
695   ) RETURN kln_rec_type IS
696     l_row_not_found                BOOLEAN := TRUE;
697   BEGIN
698     RETURN(get_rec(p_kln_rec, l_row_not_found));
699   END get_rec;
700   ---------------------------------------------------------------------------
701   -- FUNCTION get_rec for: OKS_K_LINES_TL
702   ---------------------------------------------------------------------------
703   FUNCTION get_rec (
704     p_klt_rec                      IN klt_rec_type,
705     x_no_data_found                OUT NOCOPY BOOLEAN
706   ) RETURN klt_rec_type IS
707     CURSOR oks_k_lines_tl_pk_csr (p_id       IN NUMBER,
708                                   p_language IN VARCHAR2) IS
709     SELECT
710             ID,
711             LANGUAGE,
712             SOURCE_LANG,
713             SFWT_FLAG,
714             INVOICE_TEXT,
715             IB_TRX_DETAILS,
716             STATUS_TEXT,
717             REACT_TIME_NAME,
718             CREATED_BY,
719             CREATION_DATE,
720             LAST_UPDATED_BY,
721             LAST_UPDATE_DATE,
722             LAST_UPDATE_LOGIN
723       FROM Oks_K_Lines_Tl
724      WHERE oks_k_lines_tl.id    = p_id
725        AND oks_k_lines_tl.language = p_language;
726     l_oks_k_lines_tl_pk            oks_k_lines_tl_pk_csr%ROWTYPE;
727     l_klt_rec                      klt_rec_type;
728   BEGIN
729     x_no_data_found := TRUE;
730     -- Get current database values
731     OPEN oks_k_lines_tl_pk_csr (p_klt_rec.id,
732                                 p_klt_rec.language);
733     FETCH oks_k_lines_tl_pk_csr INTO
734               l_klt_rec.id,
735               l_klt_rec.language,
736               l_klt_rec.source_lang,
737               l_klt_rec.sfwt_flag,
738               l_klt_rec.invoice_text,
739               l_klt_rec.ib_trx_details,
740               l_klt_rec.status_text,
741               l_klt_rec.react_time_name,
742               l_klt_rec.created_by,
743               l_klt_rec.creation_date,
744               l_klt_rec.last_updated_by,
745               l_klt_rec.last_update_date,
746               l_klt_rec.last_update_login;
747     x_no_data_found := oks_k_lines_tl_pk_csr%NOTFOUND;
748     CLOSE oks_k_lines_tl_pk_csr;
749     RETURN(l_klt_rec);
750   END get_rec;
751 
752   ------------------------------------------------------------------
753   -- This version of get_rec sets error messages if no data found --
754   ------------------------------------------------------------------
755   FUNCTION get_rec (
756     p_klt_rec                      IN klt_rec_type,
757     x_return_status                OUT NOCOPY VARCHAR2
758   ) RETURN klt_rec_type IS
759     l_klt_rec                      klt_rec_type;
760     l_row_notfound                 BOOLEAN := TRUE;
761   BEGIN
762     x_return_status := OKC_API.G_RET_STS_SUCCESS;
763     l_klt_rec := get_rec(p_klt_rec, l_row_notfound);
764     IF (l_row_notfound) THEN
765       OKC_API.set_message(G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'ID');
766       OKC_API.set_message(G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'LANGUAGE');
767       x_return_status := OKC_API.G_RET_STS_ERROR;
768     END IF;
769     RETURN(l_klt_rec);
770   END get_rec;
771   -----------------------------------------------------------
772   -- So we don't have to pass an "l_row_notfound" variable --
773   -----------------------------------------------------------
774   FUNCTION get_rec (
775     p_klt_rec                      IN klt_rec_type
776   ) RETURN klt_rec_type IS
777     l_row_not_found                BOOLEAN := TRUE;
778   BEGIN
779     RETURN(get_rec(p_klt_rec, l_row_not_found));
780   END get_rec;
781   ---------------------------------------------------------------------------
782   -- FUNCTION null_out_defaults for: OKS_K_LINES_V
783   ---------------------------------------------------------------------------
784   FUNCTION null_out_defaults (
785     p_klnv_rec   IN klnv_rec_type
786   ) RETURN klnv_rec_type IS
787     l_klnv_rec                     klnv_rec_type := p_klnv_rec;
788   BEGIN
789     IF (l_klnv_rec.id = OKC_API.G_MISS_NUM ) THEN
790       l_klnv_rec.id := NULL;
791     END IF;
792     IF (l_klnv_rec.cle_id = OKC_API.G_MISS_NUM ) THEN
793       l_klnv_rec.cle_id := NULL;
794     END IF;
795     IF (l_klnv_rec.dnz_chr_id = OKC_API.G_MISS_NUM ) THEN
796       l_klnv_rec.dnz_chr_id := NULL;
797     END IF;
798     IF (l_klnv_rec.discount_list = OKC_API.G_MISS_NUM ) THEN
799       l_klnv_rec.discount_list := NULL;
800     END IF;
801     IF (l_klnv_rec.acct_rule_id = OKC_API.G_MISS_NUM ) THEN
802       l_klnv_rec.acct_rule_id := NULL;
803     END IF;
804     IF (l_klnv_rec.payment_type = OKC_API.G_MISS_CHAR ) THEN
805       l_klnv_rec.payment_type := NULL;
806     END IF;
807     IF (l_klnv_rec.cc_no = OKC_API.G_MISS_CHAR ) THEN
808       l_klnv_rec.cc_no := NULL;
809     END IF;
810     IF (l_klnv_rec.cc_expiry_date = OKC_API.G_MISS_DATE ) THEN
811       l_klnv_rec.cc_expiry_date := NULL;
812     END IF;
813     IF (l_klnv_rec.cc_bank_acct_id = OKC_API.G_MISS_NUM ) THEN
814       l_klnv_rec.cc_bank_acct_id := NULL;
815     END IF;
816     IF (l_klnv_rec.cc_auth_code = OKC_API.G_MISS_CHAR ) THEN
817       l_klnv_rec.cc_auth_code := NULL;
818     END IF;
819     IF (l_klnv_rec.commitment_id = OKC_API.G_MISS_NUM ) THEN
820       l_klnv_rec.commitment_id := NULL;
821     END IF;
822     IF (l_klnv_rec.locked_price_list_id = OKC_API.G_MISS_NUM ) THEN
823       l_klnv_rec.locked_price_list_id := NULL;
824     END IF;
825     IF (l_klnv_rec.usage_est_yn = OKC_API.G_MISS_CHAR ) THEN
826       l_klnv_rec.usage_est_yn := NULL;
827     END IF;
828     IF (l_klnv_rec.usage_est_method = OKC_API.G_MISS_CHAR ) THEN
829       l_klnv_rec.usage_est_method := NULL;
830     END IF;
831     IF (l_klnv_rec.usage_est_start_date = OKC_API.G_MISS_DATE ) THEN
832       l_klnv_rec.usage_est_start_date := NULL;
833     END IF;
834     IF (l_klnv_rec.termn_method = OKC_API.G_MISS_CHAR ) THEN
835       l_klnv_rec.termn_method := NULL;
836     END IF;
837     IF (l_klnv_rec.ubt_amount = OKC_API.G_MISS_NUM ) THEN
838       l_klnv_rec.ubt_amount := NULL;
839     END IF;
840     IF (l_klnv_rec.credit_amount = OKC_API.G_MISS_NUM ) THEN
841       l_klnv_rec.credit_amount := NULL;
842     END IF;
843     IF (l_klnv_rec.suppressed_credit = OKC_API.G_MISS_NUM ) THEN
844       l_klnv_rec.suppressed_credit := NULL;
845     END IF;
846     IF (l_klnv_rec.override_amount = OKC_API.G_MISS_NUM ) THEN
847       l_klnv_rec.override_amount := NULL;
848     END IF;
849     IF (l_klnv_rec.cust_po_number_req_yn = OKC_API.G_MISS_CHAR ) THEN
850       l_klnv_rec.cust_po_number_req_yn := NULL;
851     END IF;
852     IF (l_klnv_rec.cust_po_number = OKC_API.G_MISS_CHAR ) THEN
853       l_klnv_rec.cust_po_number := NULL;
854     END IF;
855     IF (l_klnv_rec.grace_duration = OKC_API.G_MISS_NUM ) THEN
856       l_klnv_rec.grace_duration := NULL;
857     END IF;
858     IF (l_klnv_rec.grace_period = OKC_API.G_MISS_CHAR ) THEN
859       l_klnv_rec.grace_period := NULL;
860     END IF;
861     IF (l_klnv_rec.inv_print_flag = OKC_API.G_MISS_CHAR ) THEN
862       l_klnv_rec.inv_print_flag := NULL;
863     END IF;
864     IF (l_klnv_rec.price_uom = OKC_API.G_MISS_CHAR ) THEN
865       l_klnv_rec.price_uom := NULL;
866     END IF;
867     IF (l_klnv_rec.tax_amount = OKC_API.G_MISS_NUM ) THEN
868       l_klnv_rec.tax_amount := NULL;
869     END IF;
870     IF (l_klnv_rec.tax_inclusive_yn = OKC_API.G_MISS_CHAR ) THEN
871       l_klnv_rec.tax_inclusive_yn := NULL;
872     END IF;
873     IF (l_klnv_rec.tax_status = OKC_API.G_MISS_CHAR ) THEN
874       l_klnv_rec.tax_status := NULL;
875     END IF;
876     IF (l_klnv_rec.tax_code = OKC_API.G_MISS_NUM ) THEN
877       l_klnv_rec.tax_code := NULL;
878     END IF;
879     IF (l_klnv_rec.tax_exemption_id = OKC_API.G_MISS_NUM ) THEN
880       l_klnv_rec.tax_exemption_id := NULL;
881     END IF;
882     IF (l_klnv_rec.ib_trans_type = OKC_API.G_MISS_CHAR ) THEN
883       l_klnv_rec.ib_trans_type := NULL;
884     END IF;
885     IF (l_klnv_rec.ib_trans_date = OKC_API.G_MISS_DATE ) THEN
886       l_klnv_rec.ib_trans_date := NULL;
887     END IF;
888     IF (l_klnv_rec.prod_price = OKC_API.G_MISS_NUM ) THEN
889       l_klnv_rec.prod_price := NULL;
890     END IF;
891     IF (l_klnv_rec.service_price = OKC_API.G_MISS_NUM ) THEN
892       l_klnv_rec.service_price := NULL;
893     END IF;
894     IF (l_klnv_rec.clvl_list_price = OKC_API.G_MISS_NUM ) THEN
895       l_klnv_rec.clvl_list_price := NULL;
896     END IF;
897     IF (l_klnv_rec.clvl_quantity = OKC_API.G_MISS_NUM ) THEN
898       l_klnv_rec.clvl_quantity := NULL;
899     END IF;
900     IF (l_klnv_rec.clvl_extended_amt = OKC_API.G_MISS_NUM ) THEN
901       l_klnv_rec.clvl_extended_amt := NULL;
902     END IF;
903     IF (l_klnv_rec.clvl_uom_code = OKC_API.G_MISS_CHAR ) THEN
904       l_klnv_rec.clvl_uom_code := NULL;
905     END IF;
906     IF (l_klnv_rec.toplvl_operand_code = OKC_API.G_MISS_CHAR ) THEN
907       l_klnv_rec.toplvl_operand_code := NULL;
908     END IF;
909     IF (l_klnv_rec.toplvl_operand_val = OKC_API.G_MISS_NUM ) THEN
910       l_klnv_rec.toplvl_operand_val := NULL;
911     END IF;
912     IF (l_klnv_rec.toplvl_quantity = OKC_API.G_MISS_NUM ) THEN
913       l_klnv_rec.toplvl_quantity := NULL;
914     END IF;
915     IF (l_klnv_rec.toplvl_uom_code = OKC_API.G_MISS_CHAR ) THEN
916       l_klnv_rec.toplvl_uom_code := NULL;
917     END IF;
918     IF (l_klnv_rec.toplvl_adj_price = OKC_API.G_MISS_NUM ) THEN
919       l_klnv_rec.toplvl_adj_price := NULL;
920     END IF;
921     IF (l_klnv_rec.toplvl_price_qty = OKC_API.G_MISS_NUM ) THEN
922       l_klnv_rec.toplvl_price_qty := NULL;
923     END IF;
924     IF (l_klnv_rec.averaging_interval = OKC_API.G_MISS_NUM ) THEN
925       l_klnv_rec.averaging_interval := NULL;
926     END IF;
927     IF (l_klnv_rec.settlement_interval = OKC_API.G_MISS_CHAR ) THEN
928       l_klnv_rec.settlement_interval := NULL;
929     END IF;
930     IF (l_klnv_rec.minimum_quantity = OKC_API.G_MISS_NUM ) THEN
931       l_klnv_rec.minimum_quantity := NULL;
932     END IF;
933     IF (l_klnv_rec.default_quantity = OKC_API.G_MISS_NUM ) THEN
934       l_klnv_rec.default_quantity := NULL;
935     END IF;
936     IF (l_klnv_rec.amcv_flag = OKC_API.G_MISS_CHAR ) THEN
937       l_klnv_rec.amcv_flag := NULL;
938     END IF;
939     IF (l_klnv_rec.fixed_quantity = OKC_API.G_MISS_NUM ) THEN
940       l_klnv_rec.fixed_quantity := NULL;
941     END IF;
942     IF (l_klnv_rec.usage_duration = OKC_API.G_MISS_NUM ) THEN
943       l_klnv_rec.usage_duration := NULL;
944     END IF;
945     IF (l_klnv_rec.usage_period = OKC_API.G_MISS_CHAR ) THEN
946       l_klnv_rec.usage_period := NULL;
947     END IF;
948     IF (l_klnv_rec.level_yn = OKC_API.G_MISS_CHAR ) THEN
949       l_klnv_rec.level_yn := NULL;
950     END IF;
951     IF (l_klnv_rec.usage_type = OKC_API.G_MISS_CHAR ) THEN
952       l_klnv_rec.usage_type := NULL;
953     END IF;
954     IF (l_klnv_rec.uom_quantified = OKC_API.G_MISS_CHAR ) THEN
955       l_klnv_rec.uom_quantified := NULL;
956     END IF;
957     IF (l_klnv_rec.base_reading = OKC_API.G_MISS_NUM ) THEN
958       l_klnv_rec.base_reading := NULL;
959     END IF;
960     IF (l_klnv_rec.billing_schedule_type = OKC_API.G_MISS_CHAR ) THEN
961       l_klnv_rec.billing_schedule_type := NULL;
962     END IF;
963     IF (l_klnv_rec.full_credit = OKC_API.G_MISS_CHAR ) THEN
964       l_klnv_rec.full_credit := NULL;
965     END IF;
966     IF (l_klnv_rec.locked_price_list_line_id = OKC_API.G_MISS_NUM ) THEN
967       l_klnv_rec.locked_price_list_line_id := NULL;
968     END IF;
969     IF (l_klnv_rec.break_uom = OKC_API.G_MISS_CHAR ) THEN
970       l_klnv_rec.break_uom := NULL;
971     END IF;
972     IF (l_klnv_rec.prorate = OKC_API.G_MISS_CHAR ) THEN
973       l_klnv_rec.prorate := NULL;
974     END IF;
975     IF (l_klnv_rec.coverage_type = OKC_API.G_MISS_CHAR ) THEN
976       l_klnv_rec.coverage_type := NULL;
977     END IF;
978     IF (l_klnv_rec.exception_cov_id = OKC_API.G_MISS_NUM ) THEN
979       l_klnv_rec.exception_cov_id := NULL;
980     END IF;
981     IF (l_klnv_rec.limit_uom_quantified = OKC_API.G_MISS_CHAR ) THEN
982       l_klnv_rec.limit_uom_quantified := NULL;
983     END IF;
984     IF (l_klnv_rec.discount_amount = OKC_API.G_MISS_NUM ) THEN
985       l_klnv_rec.discount_amount := NULL;
986     END IF;
987     IF (l_klnv_rec.discount_percent = OKC_API.G_MISS_NUM ) THEN
988       l_klnv_rec.discount_percent := NULL;
989     END IF;
990     IF (l_klnv_rec.offset_duration = OKC_API.G_MISS_NUM ) THEN
991       l_klnv_rec.offset_duration := NULL;
992     END IF;
993     IF (l_klnv_rec.offset_period = OKC_API.G_MISS_CHAR ) THEN
994       l_klnv_rec.offset_period := NULL;
995     END IF;
996     IF (l_klnv_rec.incident_severity_id = OKC_API.G_MISS_NUM ) THEN
997       l_klnv_rec.incident_severity_id := NULL;
998     END IF;
999     IF (l_klnv_rec.pdf_id = OKC_API.G_MISS_NUM ) THEN
1000       l_klnv_rec.pdf_id := NULL;
1001     END IF;
1002     IF (l_klnv_rec.work_thru_yn = OKC_API.G_MISS_CHAR ) THEN
1003       l_klnv_rec.work_thru_yn := NULL;
1004     END IF;
1005     IF (l_klnv_rec.react_active_yn = OKC_API.G_MISS_CHAR ) THEN
1006       l_klnv_rec.react_active_yn := NULL;
1007     END IF;
1008     IF (l_klnv_rec.transfer_option = OKC_API.G_MISS_CHAR ) THEN
1009       l_klnv_rec.transfer_option := NULL;
1010     END IF;
1011     IF (l_klnv_rec.prod_upgrade_yn = OKC_API.G_MISS_CHAR ) THEN
1012       l_klnv_rec.prod_upgrade_yn := NULL;
1013     END IF;
1014     IF (l_klnv_rec.inheritance_type = OKC_API.G_MISS_CHAR ) THEN
1015       l_klnv_rec.inheritance_type := NULL;
1016     END IF;
1017     IF (l_klnv_rec.pm_program_id = OKC_API.G_MISS_NUM ) THEN
1018       l_klnv_rec.pm_program_id := NULL;
1019     END IF;
1020     IF (l_klnv_rec.pm_conf_req_yn = OKC_API.G_MISS_CHAR ) THEN
1021       l_klnv_rec.pm_conf_req_yn := NULL;
1022     END IF;
1023     IF (l_klnv_rec.pm_sch_exists_yn = OKC_API.G_MISS_CHAR ) THEN
1024       l_klnv_rec.pm_sch_exists_yn := NULL;
1025     END IF;
1026     IF (l_klnv_rec.allow_bt_discount = OKC_API.G_MISS_CHAR ) THEN
1027       l_klnv_rec.allow_bt_discount := NULL;
1028     END IF;
1029     IF (l_klnv_rec.apply_default_timezone = OKC_API.G_MISS_CHAR ) THEN
1030       l_klnv_rec.apply_default_timezone := NULL;
1031     END IF;
1032     IF (l_klnv_rec.sync_date_install = OKC_API.G_MISS_CHAR ) THEN
1033       l_klnv_rec.sync_date_install := NULL;
1034     END IF;
1035     IF (l_klnv_rec.sfwt_flag = OKC_API.G_MISS_CHAR ) THEN
1036       l_klnv_rec.sfwt_flag := NULL;
1037     END IF;
1038     IF (l_klnv_rec.invoice_text = OKC_API.G_MISS_CHAR ) THEN
1039       l_klnv_rec.invoice_text := NULL;
1040     END IF;
1041     IF (l_klnv_rec.ib_trx_details = OKC_API.G_MISS_CHAR ) THEN
1042       l_klnv_rec.ib_trx_details := NULL;
1043     END IF;
1044     IF (l_klnv_rec.status_text = OKC_API.G_MISS_CHAR ) THEN
1045       l_klnv_rec.status_text := NULL;
1046     END IF;
1047     IF (l_klnv_rec.react_time_name = OKC_API.G_MISS_CHAR ) THEN
1048       l_klnv_rec.react_time_name := NULL;
1049     END IF;
1050     IF (l_klnv_rec.object_version_number = OKC_API.G_MISS_NUM ) THEN
1051       l_klnv_rec.object_version_number := NULL;
1052     END IF;
1053     IF (l_klnv_rec.security_group_id = OKC_API.G_MISS_NUM ) THEN
1054       l_klnv_rec.security_group_id := NULL;
1055     END IF;
1056     IF (l_klnv_rec.request_id = OKC_API.G_MISS_NUM ) THEN
1057       l_klnv_rec.request_id := NULL;
1058     END IF;
1059     IF (l_klnv_rec.created_by = OKC_API.G_MISS_NUM ) THEN
1060       l_klnv_rec.created_by := NULL;
1061     END IF;
1062     IF (l_klnv_rec.creation_date = OKC_API.G_MISS_DATE ) THEN
1063       l_klnv_rec.creation_date := NULL;
1064     END IF;
1065     IF (l_klnv_rec.last_updated_by = OKC_API.G_MISS_NUM ) THEN
1066       l_klnv_rec.last_updated_by := NULL;
1067     END IF;
1068     IF (l_klnv_rec.last_update_date = OKC_API.G_MISS_DATE ) THEN
1069       l_klnv_rec.last_update_date := NULL;
1070     END IF;
1071     IF (l_klnv_rec.last_update_login = OKC_API.G_MISS_NUM ) THEN
1072       l_klnv_rec.last_update_login := NULL;
1073     END IF;
1074 -- R12 Data Model Changes 4485150 Start
1075 
1076     IF (l_klnv_rec.trxn_extension_id = OKC_API.G_MISS_NUM ) THEN
1077       l_klnv_rec.trxn_extension_id := NULL;
1078     END IF;
1079     IF (l_klnv_rec.tax_classification_code = OKC_API.G_MISS_CHAR ) THEN
1080       l_klnv_rec.tax_classification_code := NULL;
1081     END IF;
1082     IF (l_klnv_rec.exempt_certificate_number = OKC_API.G_MISS_CHAR ) THEN
1083       l_klnv_rec.exempt_certificate_number := NULL;
1084     END IF;
1085     IF (l_klnv_rec.exempt_reason_code = OKC_API.G_MISS_CHAR ) THEN
1086       l_klnv_rec.exempt_reason_code := NULL;
1087     END IF;
1088 
1089     IF (l_klnv_rec.coverage_id = OKC_API.G_MISS_NUM ) THEN
1090       l_klnv_rec.coverage_id := NULL;
1091     END IF;
1092     IF (l_klnv_rec.standard_cov_yn = OKC_API.G_MISS_CHAR ) THEN
1093       l_klnv_rec.standard_cov_yn := NULL;
1094     END IF;
1095     IF (l_klnv_rec.orig_system_id1 = OKC_API.G_MISS_NUM ) THEN
1096       l_klnv_rec.orig_system_id1 := NULL;
1097     END IF;
1098     IF (l_klnv_rec.orig_system_reference1 = OKC_API.G_MISS_CHAR ) THEN
1099       l_klnv_rec.orig_system_reference1 := NULL;
1100     END IF;
1101     IF (l_klnv_rec.orig_system_source_code = OKC_API.G_MISS_CHAR ) THEN
1102       l_klnv_rec.orig_system_source_code := NULL;
1103     END IF;
1104 -- R12 Data Model Changes 4485150 End
1105     RETURN(l_klnv_rec);
1106   END null_out_defaults;
1107   ---------------------------------
1108   -- Validate_Attributes for: ID --
1109   ---------------------------------
1110   PROCEDURE validate_id(
1111     x_return_status                OUT NOCOPY VARCHAR2,
1112     p_id                           IN NUMBER) IS
1113   BEGIN
1114     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1115     IF (p_id = OKC_API.G_MISS_NUM OR
1116         p_id IS NULL)
1117     THEN
1118       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'id');
1119       x_return_status := OKC_API.G_RET_STS_ERROR;
1120       RAISE G_EXCEPTION_HALT_VALIDATION;
1121     END IF;
1122   EXCEPTION
1123     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1124       null;
1125     WHEN OTHERS THEN
1126       OKC_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1127                           ,p_msg_name     => G_UNEXPECTED_ERROR
1128                           ,p_token1       => G_SQLCODE_TOKEN
1129                           ,p_token1_value => SQLCODE
1130                           ,p_token2       => G_SQLERRM_TOKEN
1131                           ,p_token2_value => SQLERRM);
1132       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1133   END validate_id;
1134   -------------------------------------
1135   -- Validate_Attributes for: CLE_ID --
1136   -------------------------------------
1137   PROCEDURE validate_cle_id(
1138     x_return_status                OUT NOCOPY VARCHAR2,
1139     p_cle_id                       IN NUMBER) IS
1140   BEGIN
1141     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1142     IF (p_cle_id = OKC_API.G_MISS_NUM OR
1143         p_cle_id IS NULL)
1144     THEN
1145       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'cle_id');
1146       x_return_status := OKC_API.G_RET_STS_ERROR;
1147       RAISE G_EXCEPTION_HALT_VALIDATION;
1148     END IF;
1149   EXCEPTION
1150     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1151       null;
1152     WHEN OTHERS THEN
1153       OKC_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1154                           ,p_msg_name     => G_UNEXPECTED_ERROR
1155                           ,p_token1       => G_SQLCODE_TOKEN
1156                           ,p_token1_value => SQLCODE
1157                           ,p_token2       => G_SQLERRM_TOKEN
1158                           ,p_token2_value => SQLERRM);
1159       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1160   END validate_cle_id;
1161   -----------------------------------------
1162   -- Validate_Attributes for: DNZ_CHR_ID --
1163   -----------------------------------------
1164   PROCEDURE validate_dnz_chr_id(
1165     x_return_status                OUT NOCOPY VARCHAR2,
1166     p_dnz_chr_id                   IN NUMBER) IS
1167   BEGIN
1168     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1169     IF (p_dnz_chr_id = OKC_API.G_MISS_NUM OR
1170         p_dnz_chr_id IS NULL)
1171     THEN
1172       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'dnz_chr_id');
1173       x_return_status := OKC_API.G_RET_STS_ERROR;
1174       RAISE G_EXCEPTION_HALT_VALIDATION;
1175     END IF;
1176   EXCEPTION
1177     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1178       null;
1179     WHEN OTHERS THEN
1180       OKC_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1181                           ,p_msg_name     => G_UNEXPECTED_ERROR
1182                           ,p_token1       => G_SQLCODE_TOKEN
1183                           ,p_token1_value => SQLCODE
1184                           ,p_token2       => G_SQLERRM_TOKEN
1185                           ,p_token2_value => SQLERRM);
1186       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1187   END validate_dnz_chr_id;
1188   ----------------------------------------
1189   -- Validate_Attributes for: SFWT_FLAG --
1190   ----------------------------------------
1191   PROCEDURE validate_sfwt_flag(
1192     x_return_status                OUT NOCOPY VARCHAR2,
1193     p_sfwt_flag                    IN VARCHAR2) IS
1194   BEGIN
1195     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1196     IF (p_sfwt_flag = OKC_API.G_MISS_CHAR OR
1197         p_sfwt_flag IS NULL)
1198     THEN
1199       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'sfwt_flag');
1200       x_return_status := OKC_API.G_RET_STS_ERROR;
1201       RAISE G_EXCEPTION_HALT_VALIDATION;
1202     END IF;
1203   EXCEPTION
1204     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1205       null;
1206     WHEN OTHERS THEN
1207       OKC_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1208                           ,p_msg_name     => G_UNEXPECTED_ERROR
1209                           ,p_token1       => G_SQLCODE_TOKEN
1210                           ,p_token1_value => SQLCODE
1211                           ,p_token2       => G_SQLERRM_TOKEN
1212                           ,p_token2_value => SQLERRM);
1213       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1214   END validate_sfwt_flag;
1215   ----------------------------------------------------
1216   -- Validate_Attributes for: OBJECT_VERSION_NUMBER --
1217   ----------------------------------------------------
1218   PROCEDURE validate_object_version_number(
1219     x_return_status                OUT NOCOPY VARCHAR2,
1220     p_object_version_number        IN NUMBER) IS
1221   BEGIN
1222     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1223     IF (p_object_version_number = OKC_API.G_MISS_NUM OR
1224         p_object_version_number IS NULL)
1225     THEN
1226       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'object_version_number');
1227       x_return_status := OKC_API.G_RET_STS_ERROR;
1228       RAISE G_EXCEPTION_HALT_VALIDATION;
1229     END IF;
1230   EXCEPTION
1231     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1232       null;
1233     WHEN OTHERS THEN
1234       OKC_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1235                           ,p_msg_name     => G_UNEXPECTED_ERROR
1236                           ,p_token1       => G_SQLCODE_TOKEN
1237                           ,p_token1_value => SQLCODE
1238                           ,p_token2       => G_SQLERRM_TOKEN
1239                           ,p_token2_value => SQLERRM);
1240       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1241   END validate_object_version_number;
1242   ---------------------------------------------------------------------------
1243   -- FUNCTION Validate_Attributes
1244   ---------------------------------------------------------------------------
1245   -------------------------------------------
1246   -- Validate_Attributes for:OKS_K_LINES_V --
1247   -------------------------------------------
1248   FUNCTION Validate_Attributes (
1249     p_klnv_rec                     IN klnv_rec_type
1250   ) RETURN VARCHAR2 IS
1251     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1252     x_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1253   BEGIN
1254     -----------------------------
1255     -- Column Level Validation --
1256     -----------------------------
1257     -- ***
1258     -- id
1259     -- ***
1260     validate_id(x_return_status, p_klnv_rec.id);
1261     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1262       l_return_status := x_return_status;
1263       RAISE G_EXCEPTION_HALT_VALIDATION;
1264     END IF;
1265 
1266     -- ***
1267     -- cle_id
1268     -- ***
1269     validate_cle_id(x_return_status, p_klnv_rec.cle_id);
1270     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1271       l_return_status := x_return_status;
1272       RAISE G_EXCEPTION_HALT_VALIDATION;
1273     END IF;
1274 
1275     -- ***
1276     -- dnz_chr_id
1277     -- ***
1278     validate_dnz_chr_id(x_return_status, p_klnv_rec.dnz_chr_id);
1279     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1280       l_return_status := x_return_status;
1281       RAISE G_EXCEPTION_HALT_VALIDATION;
1282     END IF;
1283 
1284     -- ***
1285     -- sfwt_flag
1286     -- ***
1287     validate_sfwt_flag(x_return_status, p_klnv_rec.sfwt_flag);
1288     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1289       l_return_status := x_return_status;
1290       RAISE G_EXCEPTION_HALT_VALIDATION;
1291     END IF;
1292 
1293     -- ***
1294     -- object_version_number
1295     -- ***
1296     validate_object_version_number(x_return_status, p_klnv_rec.object_version_number);
1297     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1298       l_return_status := x_return_status;
1299       RAISE G_EXCEPTION_HALT_VALIDATION;
1300     END IF;
1301 
1302     RETURN(l_return_status);
1303   EXCEPTION
1304     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1305       RETURN(l_return_status);
1306     WHEN OTHERS THEN
1307       OKC_API.SET_MESSAGE( p_app_name     => G_APP_NAME
1308                           ,p_msg_name     => G_UNEXPECTED_ERROR
1309                           ,p_token1       => G_SQLCODE_TOKEN
1310                           ,p_token1_value => SQLCODE
1311                           ,p_token2       => G_SQLERRM_TOKEN
1312                           ,p_token2_value => SQLERRM);
1313       l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1314       RETURN(l_return_status);
1315   END Validate_Attributes;
1316   ---------------------------------------------------------------------------
1317   -- PROCEDURE Validate_Record
1318   ---------------------------------------------------------------------------
1319   ---------------------------------------
1320   -- Validate Record for:OKS_K_LINES_V --
1321   ---------------------------------------
1322   FUNCTION Validate_Record (
1323     p_klnv_rec IN klnv_rec_type,
1324     p_db_klnv_rec IN klnv_rec_type
1325   ) RETURN VARCHAR2 IS
1326     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1327   BEGIN
1328     RETURN (l_return_status);
1329   END Validate_Record;
1330   FUNCTION Validate_Record (
1331     p_klnv_rec IN klnv_rec_type
1332   ) RETURN VARCHAR2 IS
1333     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1334     l_db_klnv_rec                  klnv_rec_type := get_rec(p_klnv_rec);
1335   BEGIN
1336     l_return_status := Validate_Record(p_klnv_rec => p_klnv_rec,
1337                                        p_db_klnv_rec => l_db_klnv_rec);
1338     RETURN (l_return_status);
1339   END Validate_Record;
1340 
1341   ---------------------------------------------------------------------------
1342   -- PROCEDURE Migrate
1343   ---------------------------------------------------------------------------
1344   PROCEDURE migrate (
1345     p_from IN klnv_rec_type,
1346     p_to   IN OUT NOCOPY kln_rec_type
1347   ) IS
1348   BEGIN
1349     p_to.id := p_from.id;
1350     p_to.cle_id := p_from.cle_id;
1351     p_to.dnz_chr_id := p_from.dnz_chr_id;
1352     p_to.discount_list := p_from.discount_list;
1353     p_to.acct_rule_id := p_from.acct_rule_id;
1354     p_to.payment_type := p_from.payment_type;
1355     p_to.cc_no := p_from.cc_no;
1356     p_to.cc_expiry_date := p_from.cc_expiry_date;
1357     p_to.cc_bank_acct_id := p_from.cc_bank_acct_id;
1358     p_to.cc_auth_code := p_from.cc_auth_code;
1359     p_to.commitment_id := p_from.commitment_id;
1360     p_to.locked_price_list_id := p_from.locked_price_list_id;
1361     p_to.usage_est_yn := p_from.usage_est_yn;
1362     p_to.usage_est_method := p_from.usage_est_method;
1363     p_to.usage_est_start_date := p_from.usage_est_start_date;
1364     p_to.termn_method := p_from.termn_method;
1365     p_to.ubt_amount := p_from.ubt_amount;
1366     p_to.credit_amount := p_from.credit_amount;
1367     p_to.suppressed_credit := p_from.suppressed_credit;
1368     p_to.override_amount := p_from.override_amount;
1369     p_to.cust_po_number_req_yn := p_from.cust_po_number_req_yn;
1370     p_to.cust_po_number := p_from.cust_po_number;
1371     p_to.grace_duration := p_from.grace_duration;
1372     p_to.grace_period := p_from.grace_period;
1373     p_to.inv_print_flag := p_from.inv_print_flag;
1374     p_to.price_uom := p_from.price_uom;
1375     p_to.tax_amount := p_from.tax_amount;
1376     p_to.tax_inclusive_yn := p_from.tax_inclusive_yn;
1377     p_to.tax_status := p_from.tax_status;
1378     p_to.tax_code := p_from.tax_code;
1379     p_to.tax_exemption_id := p_from.tax_exemption_id;
1380     p_to.ib_trans_type := p_from.ib_trans_type;
1381     p_to.ib_trans_date := p_from.ib_trans_date;
1382     p_to.prod_price := p_from.prod_price;
1383     p_to.service_price := p_from.service_price;
1384     p_to.clvl_list_price := p_from.clvl_list_price;
1385     p_to.clvl_quantity := p_from.clvl_quantity;
1386     p_to.clvl_extended_amt := p_from.clvl_extended_amt;
1387     p_to.clvl_uom_code := p_from.clvl_uom_code;
1388     p_to.toplvl_operand_code := p_from.toplvl_operand_code;
1389     p_to.toplvl_operand_val := p_from.toplvl_operand_val;
1390     p_to.toplvl_quantity := p_from.toplvl_quantity;
1391     p_to.toplvl_uom_code := p_from.toplvl_uom_code;
1392     p_to.toplvl_adj_price := p_from.toplvl_adj_price;
1393     p_to.toplvl_price_qty := p_from.toplvl_price_qty;
1394     p_to.averaging_interval := p_from.averaging_interval;
1395     p_to.settlement_interval := p_from.settlement_interval;
1396     p_to.minimum_quantity := p_from.minimum_quantity;
1397     p_to.default_quantity := p_from.default_quantity;
1398     p_to.amcv_flag := p_from.amcv_flag;
1399     p_to.fixed_quantity := p_from.fixed_quantity;
1400     p_to.usage_duration := p_from.usage_duration;
1401     p_to.usage_period := p_from.usage_period;
1402     p_to.level_yn := p_from.level_yn;
1403     p_to.usage_type := p_from.usage_type;
1404     p_to.uom_quantified := p_from.uom_quantified;
1405     p_to.base_reading := p_from.base_reading;
1406     p_to.billing_schedule_type := p_from.billing_schedule_type;
1407     p_to.full_credit := p_from.full_credit;
1408     p_to.locked_price_list_line_id := p_from.locked_price_list_line_id;
1409     p_to.break_uom := p_from.break_uom;
1410     p_to.prorate := p_from.prorate;
1411     p_to.coverage_type := p_from.coverage_type;
1412     p_to.exception_cov_id := p_from.exception_cov_id;
1413     p_to.limit_uom_quantified := p_from.limit_uom_quantified;
1414     p_to.discount_amount := p_from.discount_amount;
1415     p_to.discount_percent := p_from.discount_percent;
1416     p_to.offset_duration := p_from.offset_duration;
1417     p_to.offset_period := p_from.offset_period;
1418     p_to.incident_severity_id := p_from.incident_severity_id;
1419     p_to.pdf_id := p_from.pdf_id;
1420     p_to.work_thru_yn := p_from.work_thru_yn;
1421     p_to.react_active_yn := p_from.react_active_yn;
1422     p_to.transfer_option := p_from.transfer_option;
1423     p_to.prod_upgrade_yn := p_from.prod_upgrade_yn;
1424     p_to.inheritance_type := p_from.inheritance_type;
1425     p_to.pm_program_id := p_from.pm_program_id;
1426     p_to.pm_conf_req_yn := p_from.pm_conf_req_yn;
1427     p_to.pm_sch_exists_yn := p_from.pm_sch_exists_yn;
1428     p_to.allow_bt_discount := p_from.allow_bt_discount;
1429     p_to.apply_default_timezone := p_from.apply_default_timezone;
1430     p_to.sync_date_install := p_from.sync_date_install;
1431     p_to.object_version_number := p_from.object_version_number;
1432     p_to.request_id := p_from.request_id;
1433     p_to.created_by := p_from.created_by;
1434     p_to.creation_date := p_from.creation_date;
1435     p_to.last_updated_by := p_from.last_updated_by;
1436     p_to.last_update_date := p_from.last_update_date;
1437     p_to.last_update_login := p_from.last_update_login;
1438 -- R12 Data Model Changes 4485150 Start
1439     p_to.trxn_extension_id             := p_from.trxn_extension_id   ;
1440     p_to.tax_classification_code       := p_from.tax_classification_code;
1441     p_to.exempt_certificate_number     := p_from.exempt_certificate_number;
1442     p_to.exempt_reason_code            := p_from.exempt_reason_code;
1443 
1444     p_to.coverage_id                    := p_from.coverage_id;
1445     p_to.standard_cov_yn                := p_from.standard_cov_yn;
1446     p_to.orig_system_id1                := p_from.orig_system_id1;
1447     p_to.orig_system_reference1         := p_from.orig_system_reference1;
1448     p_to.orig_system_source_code        := p_from.orig_system_source_code;
1449 -- R12 Data Model Changes 4485150 End
1450 
1451   END migrate;
1452   PROCEDURE migrate (
1453     p_from IN kln_rec_type,
1454     p_to   IN OUT NOCOPY klnv_rec_type
1455   ) IS
1456   BEGIN
1457     p_to.id := p_from.id;
1458     p_to.cle_id := p_from.cle_id;
1459     p_to.dnz_chr_id := p_from.dnz_chr_id;
1460     p_to.discount_list := p_from.discount_list;
1461     p_to.acct_rule_id := p_from.acct_rule_id;
1462     p_to.payment_type := p_from.payment_type;
1463     p_to.cc_no := p_from.cc_no;
1464     p_to.cc_expiry_date := p_from.cc_expiry_date;
1465     p_to.cc_bank_acct_id := p_from.cc_bank_acct_id;
1466     p_to.cc_auth_code := p_from.cc_auth_code;
1467     p_to.commitment_id := p_from.commitment_id;
1468     p_to.locked_price_list_id := p_from.locked_price_list_id;
1469     p_to.usage_est_yn := p_from.usage_est_yn;
1470     p_to.usage_est_method := p_from.usage_est_method;
1471     p_to.usage_est_start_date := p_from.usage_est_start_date;
1472     p_to.termn_method := p_from.termn_method;
1473     p_to.ubt_amount := p_from.ubt_amount;
1474     p_to.credit_amount := p_from.credit_amount;
1475     p_to.suppressed_credit := p_from.suppressed_credit;
1476     p_to.override_amount := p_from.override_amount;
1477     p_to.cust_po_number_req_yn := p_from.cust_po_number_req_yn;
1478     p_to.cust_po_number := p_from.cust_po_number;
1479     p_to.grace_duration := p_from.grace_duration;
1480     p_to.grace_period := p_from.grace_period;
1481     p_to.inv_print_flag := p_from.inv_print_flag;
1482     p_to.price_uom := p_from.price_uom;
1483     p_to.tax_amount := p_from.tax_amount;
1484     p_to.tax_inclusive_yn := p_from.tax_inclusive_yn;
1485     p_to.tax_status := p_from.tax_status;
1486     p_to.tax_code := p_from.tax_code;
1487     p_to.tax_exemption_id := p_from.tax_exemption_id;
1488     p_to.ib_trans_type := p_from.ib_trans_type;
1489     p_to.ib_trans_date := p_from.ib_trans_date;
1490     p_to.prod_price := p_from.prod_price;
1491     p_to.service_price := p_from.service_price;
1492     p_to.clvl_list_price := p_from.clvl_list_price;
1493     p_to.clvl_quantity := p_from.clvl_quantity;
1494     p_to.clvl_extended_amt := p_from.clvl_extended_amt;
1495     p_to.clvl_uom_code := p_from.clvl_uom_code;
1496     p_to.toplvl_operand_code := p_from.toplvl_operand_code;
1497     p_to.toplvl_operand_val := p_from.toplvl_operand_val;
1498     p_to.toplvl_quantity := p_from.toplvl_quantity;
1499     p_to.toplvl_uom_code := p_from.toplvl_uom_code;
1500     p_to.toplvl_adj_price := p_from.toplvl_adj_price;
1501     p_to.toplvl_price_qty := p_from.toplvl_price_qty;
1502     p_to.averaging_interval := p_from.averaging_interval;
1503     p_to.settlement_interval := p_from.settlement_interval;
1504     p_to.minimum_quantity := p_from.minimum_quantity;
1505     p_to.default_quantity := p_from.default_quantity;
1506     p_to.amcv_flag := p_from.amcv_flag;
1507     p_to.fixed_quantity := p_from.fixed_quantity;
1508     p_to.usage_duration := p_from.usage_duration;
1509     p_to.usage_period := p_from.usage_period;
1510     p_to.level_yn := p_from.level_yn;
1511     p_to.usage_type := p_from.usage_type;
1512     p_to.uom_quantified := p_from.uom_quantified;
1513     p_to.base_reading := p_from.base_reading;
1514     p_to.billing_schedule_type := p_from.billing_schedule_type;
1515     p_to.full_credit := p_from.full_credit;
1516     p_to.locked_price_list_line_id := p_from.locked_price_list_line_id;
1517     p_to.break_uom := p_from.break_uom;
1518     p_to.prorate := p_from.prorate;
1519     p_to.coverage_type := p_from.coverage_type;
1520     p_to.exception_cov_id := p_from.exception_cov_id;
1521     p_to.limit_uom_quantified := p_from.limit_uom_quantified;
1522     p_to.discount_amount := p_from.discount_amount;
1523     p_to.discount_percent := p_from.discount_percent;
1524     p_to.offset_duration := p_from.offset_duration;
1525     p_to.offset_period := p_from.offset_period;
1526     p_to.incident_severity_id := p_from.incident_severity_id;
1527     p_to.pdf_id := p_from.pdf_id;
1528     p_to.work_thru_yn := p_from.work_thru_yn;
1529     p_to.react_active_yn := p_from.react_active_yn;
1530     p_to.transfer_option := p_from.transfer_option;
1531     p_to.prod_upgrade_yn := p_from.prod_upgrade_yn;
1532     p_to.inheritance_type := p_from.inheritance_type;
1533     p_to.pm_program_id := p_from.pm_program_id;
1534     p_to.pm_conf_req_yn := p_from.pm_conf_req_yn;
1535     p_to.pm_sch_exists_yn := p_from.pm_sch_exists_yn;
1536     p_to.allow_bt_discount := p_from.allow_bt_discount;
1537     p_to.apply_default_timezone := p_from.apply_default_timezone;
1538     p_to.sync_date_install := p_from.sync_date_install;
1539     p_to.object_version_number := p_from.object_version_number;
1540     p_to.request_id := p_from.request_id;
1541     p_to.created_by := p_from.created_by;
1542     p_to.creation_date := p_from.creation_date;
1543     p_to.last_updated_by := p_from.last_updated_by;
1544     p_to.last_update_date := p_from.last_update_date;
1545     p_to.last_update_login := p_from.last_update_login;
1546 -- R12 Data Model Changes 4485150 Start
1547     p_to.trxn_extension_id             := p_from.trxn_extension_id   ;
1548     p_to.tax_classification_code       := p_from.tax_classification_code;
1549     p_to.exempt_certificate_number     := p_from.exempt_certificate_number;
1550     p_to.exempt_reason_code            := p_from.exempt_reason_code;
1551 
1552     p_to.coverage_id                    := p_from.coverage_id;
1553     p_to.standard_cov_yn                := p_from.standard_cov_yn;
1554     p_to.orig_system_id1                := p_from.orig_system_id1;
1555     p_to.orig_system_reference1         := p_from.orig_system_reference1;
1556     p_to.orig_system_source_code        := p_from.orig_system_source_code;
1557 -- R12 Data Model Changes 4485150 End
1558   END migrate;
1559   PROCEDURE migrate (
1560     p_from IN klnv_rec_type,
1561     p_to   IN OUT NOCOPY klt_rec_type
1562   ) IS
1563   BEGIN
1564     p_to.id := p_from.id;
1565     p_to.sfwt_flag := p_from.sfwt_flag;
1566     p_to.invoice_text := p_from.invoice_text;
1567     p_to.ib_trx_details := p_from.ib_trx_details;
1568     p_to.status_text := p_from.status_text;
1569     p_to.react_time_name := p_from.react_time_name;
1570     p_to.created_by := p_from.created_by;
1571     p_to.creation_date := p_from.creation_date;
1572     p_to.last_updated_by := p_from.last_updated_by;
1573     p_to.last_update_date := p_from.last_update_date;
1574     p_to.last_update_login := p_from.last_update_login;
1575   END migrate;
1576   PROCEDURE migrate (
1577     p_from IN klt_rec_type,
1578     p_to   IN OUT NOCOPY klnv_rec_type
1579   ) IS
1580   BEGIN
1581     p_to.id := p_from.id;
1582     p_to.sfwt_flag := p_from.sfwt_flag;
1583     p_to.invoice_text := p_from.invoice_text;
1584     p_to.ib_trx_details := p_from.ib_trx_details;
1585     p_to.status_text := p_from.status_text;
1586     p_to.react_time_name := p_from.react_time_name;
1587     p_to.created_by := p_from.created_by;
1588     p_to.creation_date := p_from.creation_date;
1589     p_to.last_updated_by := p_from.last_updated_by;
1590     p_to.last_update_date := p_from.last_update_date;
1591     p_to.last_update_login := p_from.last_update_login;
1592   END migrate;
1593   ---------------------------------------------------------------------------
1594   -- PROCEDURE validate_row
1595   ---------------------------------------------------------------------------
1596   ------------------------------------
1597   -- validate_row for:OKS_K_LINES_V --
1598   ------------------------------------
1599   PROCEDURE validate_row(
1600     p_api_version                  IN NUMBER,
1601     p_init_msg_list                IN VARCHAR2,
1602     x_return_status                OUT NOCOPY VARCHAR2,
1603     x_msg_count                    OUT NOCOPY NUMBER,
1604     x_msg_data                     OUT NOCOPY VARCHAR2,
1605     p_klnv_rec                     IN klnv_rec_type) IS
1606 
1607     l_api_version                  CONSTANT NUMBER := 1;
1608     l_api_name                     CONSTANT VARCHAR2(30) := 'V_validate_row';
1609     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1610     l_klnv_rec                     klnv_rec_type := p_klnv_rec;
1611     l_kln_rec                      kln_rec_type;
1612     l_klt_rec                      klt_rec_type;
1613   BEGIN
1614     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1615                                               G_PKG_NAME,
1616                                               p_init_msg_list,
1617                                               l_api_version,
1618                                               p_api_version,
1619                                               '_PVT',
1620                                               x_return_status);
1621     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1622       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1623     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1624       RAISE OKC_API.G_EXCEPTION_ERROR;
1625     END IF;
1626     --- Validate all non-missing attributes (Item Level Validation)
1627     l_return_status := Validate_Attributes(l_klnv_rec);
1628     --- If any errors happen abort API
1629     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1630       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1631     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1632       RAISE OKC_API.G_EXCEPTION_ERROR;
1633     END IF;
1634     l_return_status := Validate_Record(l_klnv_rec);
1635     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1636       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1637     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1638       RAISE OKC_API.G_EXCEPTION_ERROR;
1639     END IF;
1640     x_return_status := l_return_status;
1641   EXCEPTION
1642     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1643       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1644       (
1645         l_api_name,
1646         G_PKG_NAME,
1647         'OKC_API.G_RET_STS_ERROR',
1648         x_msg_count,
1649         x_msg_data,
1650         '_PVT'
1651       );
1652     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1653       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1654       (
1655         l_api_name,
1656         G_PKG_NAME,
1657         'OKC_API.G_RET_STS_UNEXP_ERROR',
1658         x_msg_count,
1659         x_msg_data,
1660         '_PVT'
1661       );
1662     WHEN OTHERS THEN
1663       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1664       (
1665         l_api_name,
1666         G_PKG_NAME,
1667         'OTHERS',
1668         x_msg_count,
1669         x_msg_data,
1670         '_PVT'
1671       );
1672   END validate_row;
1673   -----------------------------------------------
1674   -- PL/SQL TBL validate_row for:OKS_K_LINES_V --
1675   -----------------------------------------------
1676   PROCEDURE validate_row(
1677     p_api_version                  IN NUMBER,
1678     p_init_msg_list                IN VARCHAR2,
1679     x_return_status                OUT NOCOPY VARCHAR2,
1680     x_msg_count                    OUT NOCOPY NUMBER,
1681     x_msg_data                     OUT NOCOPY VARCHAR2,
1682     p_klnv_tbl                     IN klnv_tbl_type,
1683     px_error_tbl                   IN OUT NOCOPY OKC_API.ERROR_TBL_TYPE) IS
1684 
1685     l_api_version                  CONSTANT NUMBER := 1;
1686     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_validate_row';
1687     i                              NUMBER := 0;
1688   BEGIN
1689     OKC_API.init_msg_list(p_init_msg_list);
1690     -- Make sure PL/SQL table has records in it before passing
1691     IF (p_klnv_tbl.COUNT > 0) THEN
1692       i := p_klnv_tbl.FIRST;
1693       LOOP
1694         DECLARE
1695           l_error_rec         OKC_API.ERROR_REC_TYPE;
1696         BEGIN
1697           l_error_rec.api_name := l_api_name;
1698           l_error_rec.api_package := G_PKG_NAME;
1699           l_error_rec.idx := i;
1700           validate_row (
1701             p_api_version                  => p_api_version,
1702             p_init_msg_list                => OKC_API.G_FALSE,
1703             x_return_status                => l_error_rec.error_type,
1704             x_msg_count                    => l_error_rec.msg_count,
1705             x_msg_data                     => l_error_rec.msg_data,
1706             p_klnv_rec                     => p_klnv_tbl(i));
1707           IF (l_error_rec.error_type <> OKC_API.G_RET_STS_SUCCESS) THEN
1708             l_error_rec.sqlcode := SQLCODE;
1709             load_error_tbl(l_error_rec, px_error_tbl);
1710           ELSE
1711             x_msg_count := l_error_rec.msg_count;
1712             x_msg_data := l_error_rec.msg_data;
1713           END IF;
1714         EXCEPTION
1715           WHEN OKC_API.G_EXCEPTION_ERROR THEN
1716             l_error_rec.error_type := OKC_API.G_RET_STS_ERROR;
1717             l_error_rec.sqlcode := SQLCODE;
1718             load_error_tbl(l_error_rec, px_error_tbl);
1719           WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1720             l_error_rec.error_type := OKC_API.G_RET_STS_UNEXP_ERROR;
1721             l_error_rec.sqlcode := SQLCODE;
1722             load_error_tbl(l_error_rec, px_error_tbl);
1723           WHEN OTHERS THEN
1724             l_error_rec.error_type := 'OTHERS';
1725             l_error_rec.sqlcode := SQLCODE;
1726             load_error_tbl(l_error_rec, px_error_tbl);
1727         END;
1728         EXIT WHEN (i = p_klnv_tbl.LAST);
1729         i := p_klnv_tbl.NEXT(i);
1730       END LOOP;
1731     END IF;
1732     -- Loop through the error_tbl to find the error with the highest severity
1733     -- and return it.
1734     x_return_status := find_highest_exception(px_error_tbl);
1735     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1736   EXCEPTION
1737     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1738       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1739       (
1740         l_api_name,
1741         G_PKG_NAME,
1742         'OKC_API.G_RET_STS_ERROR',
1743         x_msg_count,
1744         x_msg_data,
1745         '_PVT'
1746       );
1747     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1748       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1749       (
1750         l_api_name,
1751         G_PKG_NAME,
1752         'OKC_API.G_RET_STS_UNEXP_ERROR',
1753         x_msg_count,
1754         x_msg_data,
1755         '_PVT'
1756       );
1757     WHEN OTHERS THEN
1758       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1759       (
1760         l_api_name,
1761         G_PKG_NAME,
1762         'OTHERS',
1763         x_msg_count,
1764         x_msg_data,
1765         '_PVT'
1766       );
1767   END validate_row;
1768 
1769   -----------------------------------------------
1770   -- PL/SQL TBL validate_row for:OKS_K_LINES_V --
1771   -----------------------------------------------
1772   PROCEDURE validate_row(
1773     p_api_version                  IN NUMBER,
1774     p_init_msg_list                IN VARCHAR2,
1775     x_return_status                OUT NOCOPY VARCHAR2,
1776     x_msg_count                    OUT NOCOPY NUMBER,
1777     x_msg_data                     OUT NOCOPY VARCHAR2,
1778     p_klnv_tbl                     IN klnv_tbl_type) IS
1779 
1780     l_api_version                  CONSTANT NUMBER := 1;
1781     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_validate_row';
1782     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1783     l_error_tbl                    OKC_API.ERROR_TBL_TYPE;
1784   BEGIN
1785     OKC_API.init_msg_list(p_init_msg_list);
1786     -- Make sure PL/SQL table has records in it before passing
1787     IF (p_klnv_tbl.COUNT > 0) THEN
1788       validate_row (
1789         p_api_version                  => p_api_version,
1790         p_init_msg_list                => OKC_API.G_FALSE,
1791         x_return_status                => x_return_status,
1792         x_msg_count                    => x_msg_count,
1793         x_msg_data                     => x_msg_data,
1794         p_klnv_tbl                     => p_klnv_tbl,
1795         px_error_tbl                   => l_error_tbl);
1796     END IF;
1797     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1798   EXCEPTION
1799     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1800       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1801       (
1802         l_api_name,
1803         G_PKG_NAME,
1804         'OKC_API.G_RET_STS_ERROR',
1805         x_msg_count,
1806         x_msg_data,
1807         '_PVT'
1808       );
1809     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1810       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1811       (
1812         l_api_name,
1813         G_PKG_NAME,
1814         'OKC_API.G_RET_STS_UNEXP_ERROR',
1815         x_msg_count,
1816         x_msg_data,
1817         '_PVT'
1818       );
1819     WHEN OTHERS THEN
1820       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1821       (
1822         l_api_name,
1823         G_PKG_NAME,
1824         'OTHERS',
1825         x_msg_count,
1826         x_msg_data,
1827         '_PVT'
1828       );
1829   END validate_row;
1830 
1831   ---------------------------------------------------------------------------
1832   -- PROCEDURE insert_row
1833   ---------------------------------------------------------------------------
1834   ----------------------------------
1835   -- insert_row for:OKS_K_LINES_B --
1836   ----------------------------------
1837   PROCEDURE insert_row(
1838     p_init_msg_list                IN VARCHAR2,
1839     x_return_status                OUT NOCOPY VARCHAR2,
1840     x_msg_count                    OUT NOCOPY NUMBER,
1841     x_msg_data                     OUT NOCOPY VARCHAR2,
1842     p_kln_rec                      IN kln_rec_type,
1843     x_kln_rec                      OUT NOCOPY kln_rec_type) IS
1844 
1845     l_api_version                  CONSTANT NUMBER := 1;
1846     l_api_name                     CONSTANT VARCHAR2(30) := 'B_insert_row';
1847     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1848     l_kln_rec                      kln_rec_type := p_kln_rec;
1849     l_def_kln_rec                  kln_rec_type;
1850     --------------------------------------
1851     -- Set_Attributes for:OKS_K_LINES_B --
1852     --------------------------------------
1853     FUNCTION Set_Attributes (
1854       p_kln_rec IN kln_rec_type,
1855       x_kln_rec OUT NOCOPY kln_rec_type
1856     ) RETURN VARCHAR2 IS
1857       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1858     BEGIN
1859       x_kln_rec := p_kln_rec;
1860       RETURN(l_return_status);
1861     END Set_Attributes;
1862   BEGIN
1863     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1864                                               p_init_msg_list,
1865                                               '_PVT',
1866                                               x_return_status);
1867     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1868       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1869     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1870       RAISE OKC_API.G_EXCEPTION_ERROR;
1871     END IF;
1872     --- Setting item atributes
1873     l_return_status := Set_Attributes(
1874       p_kln_rec,                         -- IN
1875       l_kln_rec);                        -- OUT
1876     --- If any errors happen abort API
1877     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1878       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1879     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1880       RAISE OKC_API.G_EXCEPTION_ERROR;
1881     END IF;
1882     INSERT INTO OKS_K_LINES_B(
1883       id,
1884       cle_id,
1885       dnz_chr_id,
1886       discount_list,
1887       acct_rule_id,
1888       payment_type,
1889       cc_no,
1890       cc_expiry_date,
1891       cc_bank_acct_id,
1892       cc_auth_code,
1893       commitment_id,
1894       locked_price_list_id,
1895       usage_est_yn,
1896       usage_est_method,
1897       usage_est_start_date,
1898       termn_method,
1899       ubt_amount,
1900       credit_amount,
1901       suppressed_credit,
1902       override_amount,
1903       cust_po_number_req_yn,
1904       cust_po_number,
1905       grace_duration,
1906       grace_period,
1907       inv_print_flag,
1908       price_uom,
1909       tax_amount,
1910       tax_inclusive_yn,
1911       tax_status,
1912       tax_code,
1913       tax_exemption_id,
1914       ib_trans_type,
1915       ib_trans_date,
1916       prod_price,
1917       service_price,
1918       clvl_list_price,
1919       clvl_quantity,
1920       clvl_extended_amt,
1921       clvl_uom_code,
1922       toplvl_operand_code,
1923       toplvl_operand_val,
1924       toplvl_quantity,
1925       toplvl_uom_code,
1926       toplvl_adj_price,
1927       toplvl_price_qty,
1928       averaging_interval,
1929       settlement_interval,
1930       minimum_quantity,
1931       default_quantity,
1932       amcv_flag,
1933       fixed_quantity,
1934       usage_duration,
1935       usage_period,
1936       level_yn,
1937       usage_type,
1938       uom_quantified,
1939       base_reading,
1940       billing_schedule_type,
1941       full_credit,
1942       locked_price_list_line_id,
1943       break_uom,
1944       prorate,
1945       coverage_type,
1946       exception_cov_id,
1947       limit_uom_quantified,
1948       discount_amount,
1949       discount_percent,
1950       offset_duration,
1951       offset_period,
1952       incident_severity_id,
1953       pdf_id,
1954       work_thru_yn,
1955       react_active_yn,
1956       transfer_option,
1957       prod_upgrade_yn,
1958       inheritance_type,
1959       pm_program_id,
1960       pm_conf_req_yn,
1961       pm_sch_exists_yn,
1962       allow_bt_discount,
1963       apply_default_timezone,
1964       sync_date_install,
1965       object_version_number,
1966       request_id,
1967       created_by,
1968       creation_date,
1969       last_updated_by,
1970       last_update_date,
1971       last_update_login,
1972 -- R12 Data Model Changes 4485150 Start
1973       trxn_extension_id,
1974       tax_classification_code,
1975       exempt_certificate_number,
1976       exempt_reason_code,
1977       coverage_id,
1978       standard_cov_yn,
1979       orig_system_id1,
1980       orig_system_reference1,
1981       orig_system_source_code
1982 -- R12 Data Model Changes 4485150 End
1983 )
1984     VALUES (
1985       l_kln_rec.id,
1986       l_kln_rec.cle_id,
1987       l_kln_rec.dnz_chr_id,
1988       l_kln_rec.discount_list,
1989       l_kln_rec.acct_rule_id,
1990       l_kln_rec.payment_type,
1991       l_kln_rec.cc_no,
1992       l_kln_rec.cc_expiry_date,
1993       l_kln_rec.cc_bank_acct_id,
1994       l_kln_rec.cc_auth_code,
1995       l_kln_rec.commitment_id,
1996       l_kln_rec.locked_price_list_id,
1997       l_kln_rec.usage_est_yn,
1998       l_kln_rec.usage_est_method,
1999       l_kln_rec.usage_est_start_date,
2000       l_kln_rec.termn_method,
2001       l_kln_rec.ubt_amount,
2002       l_kln_rec.credit_amount,
2003       l_kln_rec.suppressed_credit,
2004       l_kln_rec.override_amount,
2005       l_kln_rec.cust_po_number_req_yn,
2006       l_kln_rec.cust_po_number,
2007       l_kln_rec.grace_duration,
2008       l_kln_rec.grace_period,
2009       l_kln_rec.inv_print_flag,
2010       l_kln_rec.price_uom,
2011       l_kln_rec.tax_amount,
2012       l_kln_rec.tax_inclusive_yn,
2013       l_kln_rec.tax_status,
2014       l_kln_rec.tax_code,
2015       l_kln_rec.tax_exemption_id,
2016       l_kln_rec.ib_trans_type,
2017       l_kln_rec.ib_trans_date,
2018       l_kln_rec.prod_price,
2019       l_kln_rec.service_price,
2020       l_kln_rec.clvl_list_price,
2021       l_kln_rec.clvl_quantity,
2022       l_kln_rec.clvl_extended_amt,
2023       l_kln_rec.clvl_uom_code,
2024       l_kln_rec.toplvl_operand_code,
2025       l_kln_rec.toplvl_operand_val,
2026       l_kln_rec.toplvl_quantity,
2027       l_kln_rec.toplvl_uom_code,
2028       l_kln_rec.toplvl_adj_price,
2029       l_kln_rec.toplvl_price_qty,
2030       l_kln_rec.averaging_interval,
2031       l_kln_rec.settlement_interval,
2032       l_kln_rec.minimum_quantity,
2033       l_kln_rec.default_quantity,
2034       l_kln_rec.amcv_flag,
2035       l_kln_rec.fixed_quantity,
2036       l_kln_rec.usage_duration,
2037       l_kln_rec.usage_period,
2038       l_kln_rec.level_yn,
2039       l_kln_rec.usage_type,
2040       l_kln_rec.uom_quantified,
2041       l_kln_rec.base_reading,
2042       l_kln_rec.billing_schedule_type,
2043       l_kln_rec.full_credit,
2044       l_kln_rec.locked_price_list_line_id,
2045       l_kln_rec.break_uom,
2046       l_kln_rec.prorate,
2047       l_kln_rec.coverage_type,
2048       l_kln_rec.exception_cov_id,
2049       l_kln_rec.limit_uom_quantified,
2050       l_kln_rec.discount_amount,
2051       l_kln_rec.discount_percent,
2052       l_kln_rec.offset_duration,
2053       l_kln_rec.offset_period,
2054       l_kln_rec.incident_severity_id,
2055       l_kln_rec.pdf_id,
2056       l_kln_rec.work_thru_yn,
2057       l_kln_rec.react_active_yn,
2058       l_kln_rec.transfer_option,
2059       l_kln_rec.prod_upgrade_yn,
2060       l_kln_rec.inheritance_type,
2061       l_kln_rec.pm_program_id,
2062       l_kln_rec.pm_conf_req_yn,
2063       l_kln_rec.pm_sch_exists_yn,
2064       l_kln_rec.allow_bt_discount,
2065       l_kln_rec.apply_default_timezone,
2066       l_kln_rec.sync_date_install,
2067       l_kln_rec.object_version_number,
2068       l_kln_rec.request_id,
2069       l_kln_rec.created_by,
2070       l_kln_rec.creation_date,
2071       l_kln_rec.last_updated_by,
2072       l_kln_rec.last_update_date,
2073       l_kln_rec.last_update_login,
2074 -- R12 Data Model Changes 4485150 Start
2075       l_kln_rec.trxn_extension_id,
2076       l_kln_rec.tax_classification_code,
2077       l_kln_rec.exempt_certificate_number,
2078       l_kln_rec.exempt_reason_code,
2079       l_kln_rec.coverage_id,
2080       l_kln_rec.standard_cov_yn,
2081       l_kln_rec.orig_system_id1,
2082       l_kln_rec.orig_system_reference1,
2083       l_kln_rec.orig_system_source_code
2084 -- R12 Data Model Changes 4485150 End
2085 );
2086     -- Set OUT values
2087     x_kln_rec := l_kln_rec;
2088     x_return_status := l_return_status;
2089     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2090   EXCEPTION
2091     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2092       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2093       (
2094         l_api_name,
2095         G_PKG_NAME,
2096         'OKC_API.G_RET_STS_ERROR',
2097         x_msg_count,
2098         x_msg_data,
2099         '_PVT'
2100       );
2101     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2102       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2103       (
2104         l_api_name,
2105         G_PKG_NAME,
2106         'OKC_API.G_RET_STS_UNEXP_ERROR',
2107         x_msg_count,
2108         x_msg_data,
2109         '_PVT'
2110       );
2111     WHEN OTHERS THEN
2112       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2113       (
2114         l_api_name,
2115         G_PKG_NAME,
2116         'OTHERS',
2117         x_msg_count,
2118         x_msg_data,
2119         '_PVT'
2120       );
2121   END insert_row;
2122   -----------------------------------
2123   -- insert_row for:OKS_K_LINES_TL --
2124   -----------------------------------
2125   PROCEDURE insert_row(
2126     p_init_msg_list                IN VARCHAR2,
2127     x_return_status                OUT NOCOPY VARCHAR2,
2128     x_msg_count                    OUT NOCOPY NUMBER,
2129     x_msg_data                     OUT NOCOPY VARCHAR2,
2130     p_klt_rec                      IN klt_rec_type,
2131     x_klt_rec                      OUT NOCOPY klt_rec_type) IS
2132 
2133     l_api_version                  CONSTANT NUMBER := 1;
2134     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_insert_row';
2135     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2136     l_klt_rec                      klt_rec_type := p_klt_rec;
2137     l_def_klt_rec                  klt_rec_type;
2138     CURSOR get_languages IS
2139       SELECT *
2140         FROM FND_LANGUAGES
2141        WHERE INSTALLED_FLAG IN ('I', 'B');
2142     ---------------------------------------
2143     -- Set_Attributes for:OKS_K_LINES_TL --
2144     ---------------------------------------
2145     FUNCTION Set_Attributes (
2146       p_klt_rec IN klt_rec_type,
2147       x_klt_rec OUT NOCOPY klt_rec_type
2148     ) RETURN VARCHAR2 IS
2149       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2150     BEGIN
2151       x_klt_rec := p_klt_rec;
2152       x_klt_rec.LANGUAGE := USERENV('LANG');
2153       x_klt_rec.SOURCE_LANG := USERENV('LANG');
2154       RETURN(l_return_status);
2155     END Set_Attributes;
2156   BEGIN
2157     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2158                                               p_init_msg_list,
2159                                               '_PVT',
2160                                               x_return_status);
2161     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2162       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2163     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2164       RAISE OKC_API.G_EXCEPTION_ERROR;
2165     END IF;
2166     --- Setting item attributes
2167     l_return_status := Set_Attributes(
2168       p_klt_rec,                         -- IN
2169       l_klt_rec);                        -- OUT
2170     --- If any errors happen abort API
2171     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2172       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2173     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2174       RAISE OKC_API.G_EXCEPTION_ERROR;
2175     END IF;
2176     FOR l_lang_rec IN get_languages LOOP
2177       l_klt_rec.language := l_lang_rec.language_code;
2178       INSERT INTO OKS_K_LINES_TL(
2179         id,
2180         language,
2181         source_lang,
2182         sfwt_flag,
2183         invoice_text,
2184         ib_trx_details,
2185         status_text,
2186         react_time_name,
2187         created_by,
2188         creation_date,
2189         last_updated_by,
2190         last_update_date,
2191         last_update_login)
2192       VALUES (
2193         l_klt_rec.id,
2194         l_klt_rec.language,
2195         l_klt_rec.source_lang,
2196         l_klt_rec.sfwt_flag,
2197         l_klt_rec.invoice_text,
2198         l_klt_rec.ib_trx_details,
2199         l_klt_rec.status_text,
2200         l_klt_rec.react_time_name,
2201         l_klt_rec.created_by,
2202         l_klt_rec.creation_date,
2203         l_klt_rec.last_updated_by,
2204         l_klt_rec.last_update_date,
2205         l_klt_rec.last_update_login);
2206     END LOOP;
2207     -- Set OUT values
2208     x_klt_rec := l_klt_rec;
2209     x_return_status := l_return_status;
2210     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2211   EXCEPTION
2212     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2213       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2214       (
2215         l_api_name,
2216         G_PKG_NAME,
2217         'OKC_API.G_RET_STS_ERROR',
2218         x_msg_count,
2219         x_msg_data,
2220         '_PVT'
2221       );
2222     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2223       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2224       (
2225         l_api_name,
2226         G_PKG_NAME,
2227         'OKC_API.G_RET_STS_UNEXP_ERROR',
2228         x_msg_count,
2229         x_msg_data,
2230         '_PVT'
2231       );
2232     WHEN OTHERS THEN
2233       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2234       (
2235         l_api_name,
2236         G_PKG_NAME,
2237         'OTHERS',
2238         x_msg_count,
2239         x_msg_data,
2240         '_PVT'
2241       );
2242   END insert_row;
2243   -----------------------------------
2244   -- insert_row for :OKS_K_LINES_V --
2245   -----------------------------------
2246   PROCEDURE insert_row(
2247     p_api_version                  IN NUMBER,
2248     p_init_msg_list                IN VARCHAR2,
2249     x_return_status                OUT NOCOPY VARCHAR2,
2250     x_msg_count                    OUT NOCOPY NUMBER,
2251     x_msg_data                     OUT NOCOPY VARCHAR2,
2252     p_klnv_rec                     IN klnv_rec_type,
2253     x_klnv_rec                     OUT NOCOPY klnv_rec_type) IS
2254 
2255     l_api_version                  CONSTANT NUMBER := 1;
2256     l_api_name                     CONSTANT VARCHAR2(30) := 'V_insert_row';
2257     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2258     l_klnv_rec                     klnv_rec_type := p_klnv_rec;
2259     l_def_klnv_rec                 klnv_rec_type;
2260     l_kln_rec                      kln_rec_type;
2261     lx_kln_rec                     kln_rec_type;
2262     l_klt_rec                      klt_rec_type;
2263     lx_klt_rec                     klt_rec_type;
2264     -------------------------------
2265     -- FUNCTION fill_who_columns --
2266     -------------------------------
2267     FUNCTION fill_who_columns (
2268       p_klnv_rec IN klnv_rec_type
2269     ) RETURN klnv_rec_type IS
2270       l_klnv_rec klnv_rec_type := p_klnv_rec;
2271     BEGIN
2272       l_klnv_rec.CREATION_DATE := SYSDATE;
2273       l_klnv_rec.CREATED_BY := FND_GLOBAL.USER_ID;
2274       l_klnv_rec.LAST_UPDATE_DATE := l_klnv_rec.CREATION_DATE;
2275       l_klnv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
2276       l_klnv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
2277       RETURN(l_klnv_rec);
2278     END fill_who_columns;
2279     --------------------------------------
2280     -- Set_Attributes for:OKS_K_LINES_V --
2281     --------------------------------------
2282     FUNCTION Set_Attributes (
2283       p_klnv_rec IN klnv_rec_type,
2284       x_klnv_rec OUT NOCOPY klnv_rec_type
2285     ) RETURN VARCHAR2 IS
2286       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2287     BEGIN
2288       x_klnv_rec := p_klnv_rec;
2289       x_klnv_rec.OBJECT_VERSION_NUMBER := 1;
2290       x_klnv_rec.SFWT_FLAG := 'N';
2291       RETURN(l_return_status);
2292     END Set_Attributes;
2293   BEGIN
2294     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2295                                               G_PKG_NAME,
2296                                               p_init_msg_list,
2297                                               l_api_version,
2298                                               p_api_version,
2299                                               '_PVT',
2300                                               x_return_status);
2301     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2302       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2303     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2304       RAISE OKC_API.G_EXCEPTION_ERROR;
2305     END IF;
2306     l_klnv_rec := null_out_defaults(p_klnv_rec);
2307     -- Set primary key value
2308     l_klnv_rec.ID := get_seq_id;
2309     -- Setting item attributes
2310     l_return_Status := Set_Attributes(
2311       l_klnv_rec,                        -- IN
2312       l_def_klnv_rec);                   -- OUT
2313     --- If any errors happen abort API
2314     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2315       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2316     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2317       RAISE OKC_API.G_EXCEPTION_ERROR;
2318     END IF;
2319     l_def_klnv_rec := fill_who_columns(l_def_klnv_rec);
2320     --- Validate all non-missing attributes (Item Level Validation)
2321     l_return_status := Validate_Attributes(l_def_klnv_rec);
2322     --- If any errors happen abort API
2323     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2324       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2325     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2326       RAISE OKC_API.G_EXCEPTION_ERROR;
2327     END IF;
2328     l_return_status := Validate_Record(l_def_klnv_rec);
2329     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2330       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2331     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2332       RAISE OKC_API.G_EXCEPTION_ERROR;
2333     END IF;
2334     -----------------------------------------
2335     -- Move VIEW record to "Child" records --
2336     -----------------------------------------
2337     migrate(l_def_klnv_rec, l_kln_rec);
2338     migrate(l_def_klnv_rec, l_klt_rec);
2339     -----------------------------------------------
2340     -- Call the INSERT_ROW for each child record --
2341     -----------------------------------------------
2342     insert_row(
2343       p_init_msg_list,
2344       l_return_status,
2345       x_msg_count,
2346       x_msg_data,
2347       l_kln_rec,
2348       lx_kln_rec
2349     );
2350     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2351       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2352     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2353       RAISE OKC_API.G_EXCEPTION_ERROR;
2354     END IF;
2355     migrate(lx_kln_rec, l_def_klnv_rec);
2356     insert_row(
2357       p_init_msg_list,
2358       l_return_status,
2359       x_msg_count,
2360       x_msg_data,
2361       l_klt_rec,
2362       lx_klt_rec
2363     );
2364     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2365       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2366     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2367       RAISE OKC_API.G_EXCEPTION_ERROR;
2368     END IF;
2369     migrate(lx_klt_rec, l_def_klnv_rec);
2370     -- Set OUT values
2371     x_klnv_rec := l_def_klnv_rec;
2372     x_return_status := l_return_status;
2373     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2374   EXCEPTION
2375     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2376       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2377       (
2378         l_api_name,
2379         G_PKG_NAME,
2380         'OKC_API.G_RET_STS_ERROR',
2381         x_msg_count,
2382         x_msg_data,
2383         '_PVT'
2384       );
2385     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2386       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2387       (
2388         l_api_name,
2389         G_PKG_NAME,
2390         'OKC_API.G_RET_STS_UNEXP_ERROR',
2391         x_msg_count,
2392         x_msg_data,
2393         '_PVT'
2394       );
2395     WHEN OTHERS THEN
2396       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2397       (
2398         l_api_name,
2399         G_PKG_NAME,
2400         'OTHERS',
2401         x_msg_count,
2402         x_msg_data,
2403         '_PVT'
2404       );
2405   END insert_row;
2406   ----------------------------------------
2407   -- PL/SQL TBL insert_row for:KLNV_TBL --
2408   ----------------------------------------
2409   PROCEDURE insert_row(
2410     p_api_version                  IN NUMBER,
2411     p_init_msg_list                IN VARCHAR2,
2412     x_return_status                OUT NOCOPY VARCHAR2,
2413     x_msg_count                    OUT NOCOPY NUMBER,
2414     x_msg_data                     OUT NOCOPY VARCHAR2,
2415     p_klnv_tbl                     IN klnv_tbl_type,
2416     x_klnv_tbl                     OUT NOCOPY klnv_tbl_type,
2417     px_error_tbl                   IN OUT NOCOPY OKC_API.ERROR_TBL_TYPE) IS
2418 
2419     l_api_version                  CONSTANT NUMBER := 1;
2420     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_insert_row';
2421     i                              NUMBER := 0;
2422   BEGIN
2423     OKC_API.init_msg_list(p_init_msg_list);
2424     -- Make sure PL/SQL table has records in it before passing
2425     IF (p_klnv_tbl.COUNT > 0) THEN
2426       i := p_klnv_tbl.FIRST;
2427       LOOP
2428         DECLARE
2429           l_error_rec         OKC_API.ERROR_REC_TYPE;
2430         BEGIN
2431           l_error_rec.api_name := l_api_name;
2432           l_error_rec.api_package := G_PKG_NAME;
2433           l_error_rec.idx := i;
2434           insert_row (
2435             p_api_version                  => p_api_version,
2436             p_init_msg_list                => OKC_API.G_FALSE,
2437             x_return_status                => l_error_rec.error_type,
2438             x_msg_count                    => l_error_rec.msg_count,
2439             x_msg_data                     => l_error_rec.msg_data,
2440             p_klnv_rec                     => p_klnv_tbl(i),
2441             x_klnv_rec                     => x_klnv_tbl(i));
2442           IF (l_error_rec.error_type <> OKC_API.G_RET_STS_SUCCESS) THEN
2443             l_error_rec.sqlcode := SQLCODE;
2444             load_error_tbl(l_error_rec, px_error_tbl);
2445           ELSE
2446             x_msg_count := l_error_rec.msg_count;
2447             x_msg_data := l_error_rec.msg_data;
2448           END IF;
2449         EXCEPTION
2450           WHEN OKC_API.G_EXCEPTION_ERROR THEN
2451             l_error_rec.error_type := OKC_API.G_RET_STS_ERROR;
2452             l_error_rec.sqlcode := SQLCODE;
2453             load_error_tbl(l_error_rec, px_error_tbl);
2454           WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2455             l_error_rec.error_type := OKC_API.G_RET_STS_UNEXP_ERROR;
2456             l_error_rec.sqlcode := SQLCODE;
2457             load_error_tbl(l_error_rec, px_error_tbl);
2458           WHEN OTHERS THEN
2459             l_error_rec.error_type := 'OTHERS';
2460             l_error_rec.sqlcode := SQLCODE;
2461             load_error_tbl(l_error_rec, px_error_tbl);
2462         END;
2463         EXIT WHEN (i = p_klnv_tbl.LAST);
2464         i := p_klnv_tbl.NEXT(i);
2465       END LOOP;
2466     END IF;
2467     -- Loop through the error_tbl to find the error with the highest severity
2468     -- and return it.
2469     x_return_status := find_highest_exception(px_error_tbl);
2470     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2471   EXCEPTION
2472     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2473       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2474       (
2475         l_api_name,
2476         G_PKG_NAME,
2477         'OKC_API.G_RET_STS_ERROR',
2478         x_msg_count,
2479         x_msg_data,
2480         '_PVT'
2481       );
2482     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2483       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2484       (
2485         l_api_name,
2486         G_PKG_NAME,
2487         'OKC_API.G_RET_STS_UNEXP_ERROR',
2488         x_msg_count,
2489         x_msg_data,
2490         '_PVT'
2491       );
2492     WHEN OTHERS THEN
2493       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2494       (
2495         l_api_name,
2496         G_PKG_NAME,
2497         'OTHERS',
2498         x_msg_count,
2499         x_msg_data,
2500         '_PVT'
2501       );
2502   END insert_row;
2503 
2504   ----------------------------------------
2505   -- PL/SQL TBL insert_row for:KLNV_TBL --
2506   ----------------------------------------
2507   -- This procedure is the same as the one above except it does not have a "px_error_tbl" argument.
2508   -- This procedure was create for backward compatibility and simply is a wrapper for the one above.
2509   PROCEDURE insert_row(
2510     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_klnv_tbl                     IN klnv_tbl_type,
2516     x_klnv_tbl                     OUT NOCOPY klnv_tbl_type) IS
2517 
2518     l_api_version                  CONSTANT NUMBER := 1;
2519     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_insert_row';
2520     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2521     l_error_tbl                    OKC_API.ERROR_TBL_TYPE;
2522   BEGIN
2523     OKC_API.init_msg_list(p_init_msg_list);
2524     -- Make sure PL/SQL table has records in it before passing
2525     IF (p_klnv_tbl.COUNT > 0) THEN
2526       insert_row (
2527         p_api_version                  => p_api_version,
2528         p_init_msg_list                => OKC_API.G_FALSE,
2529         x_return_status                => x_return_status,
2530         x_msg_count                    => x_msg_count,
2531         x_msg_data                     => x_msg_data,
2532         p_klnv_tbl                     => p_klnv_tbl,
2533         x_klnv_tbl                     => x_klnv_tbl,
2534         px_error_tbl                   => l_error_tbl);
2535     END IF;
2536     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2537   EXCEPTION
2538     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2539       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2540       (
2541         l_api_name,
2542         G_PKG_NAME,
2543         'OKC_API.G_RET_STS_ERROR',
2544         x_msg_count,
2545         x_msg_data,
2546         '_PVT'
2547       );
2548     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2549       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2550       (
2551         l_api_name,
2552         G_PKG_NAME,
2553         'OKC_API.G_RET_STS_UNEXP_ERROR',
2554         x_msg_count,
2555         x_msg_data,
2556         '_PVT'
2557       );
2558     WHEN OTHERS THEN
2559       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2560       (
2561         l_api_name,
2562         G_PKG_NAME,
2563         'OTHERS',
2564         x_msg_count,
2565         x_msg_data,
2566         '_PVT'
2567       );
2568   END insert_row;
2569 
2570   ---------------------------------------------------------------------------
2571   -- PROCEDURE lock_row
2572   ---------------------------------------------------------------------------
2573   --------------------------------
2574   -- lock_row for:OKS_K_LINES_B --
2575   --------------------------------
2576   PROCEDURE lock_row(
2577     p_init_msg_list                IN VARCHAR2,
2578     x_return_status                OUT NOCOPY VARCHAR2,
2579     x_msg_count                    OUT NOCOPY NUMBER,
2580     x_msg_data                     OUT NOCOPY VARCHAR2,
2581     p_kln_rec                      IN kln_rec_type) IS
2582 
2583     E_Resource_Busy                EXCEPTION;
2584     PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
2585     CURSOR lock_csr (p_kln_rec IN kln_rec_type) IS
2586     SELECT OBJECT_VERSION_NUMBER
2587       FROM OKS_K_LINES_B
2588      WHERE ID = p_kln_rec.id
2589        AND OBJECT_VERSION_NUMBER = p_kln_rec.object_version_number
2590     FOR UPDATE OF OBJECT_VERSION_NUMBER NOWAIT;
2591 
2592     CURSOR lchk_csr (p_kln_rec IN kln_rec_type) IS
2593     SELECT OBJECT_VERSION_NUMBER
2594       FROM OKS_K_LINES_B
2595      WHERE ID = p_kln_rec.id;
2596     l_api_version                  CONSTANT NUMBER := 1;
2597     l_api_name                     CONSTANT VARCHAR2(30) := 'B_lock_row';
2598     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2599     l_object_version_number        OKS_K_LINES_B.OBJECT_VERSION_NUMBER%TYPE;
2600     lc_object_version_number       OKS_K_LINES_B.OBJECT_VERSION_NUMBER%TYPE;
2601     l_row_notfound                 BOOLEAN := FALSE;
2602     lc_row_notfound                BOOLEAN := FALSE;
2603   BEGIN
2604     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2605                                               p_init_msg_list,
2606                                               '_PVT',
2607                                               x_return_status);
2608     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2609       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2610     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2611       RAISE OKC_API.G_EXCEPTION_ERROR;
2612     END IF;
2613     BEGIN
2614       OPEN lock_csr(p_kln_rec);
2615       FETCH lock_csr INTO l_object_version_number;
2616       l_row_notfound := lock_csr%NOTFOUND;
2617       CLOSE lock_csr;
2618     EXCEPTION
2619       WHEN E_Resource_Busy THEN
2620         IF (lock_csr%ISOPEN) THEN
2621           CLOSE lock_csr;
2622         END IF;
2623         OKC_API.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
2624         RAISE APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION;
2625     END;
2626 
2627     IF ( l_row_notfound ) THEN
2628       OPEN lchk_csr(p_kln_rec);
2629       FETCH lchk_csr INTO lc_object_version_number;
2630       lc_row_notfound := lchk_csr%NOTFOUND;
2631       CLOSE lchk_csr;
2632     END IF;
2633     IF (lc_row_notfound) THEN
2634       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
2635       RAISE OKC_API.G_EXCEPTION_ERROR;
2636     ELSIF lc_object_version_number > p_kln_rec.object_version_number THEN
2637       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
2638       RAISE OKC_API.G_EXCEPTION_ERROR;
2639     ELSIF lc_object_version_number <> p_kln_rec.object_version_number THEN
2640       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
2641       RAISE OKC_API.G_EXCEPTION_ERROR;
2642     ELSIF lc_object_version_number = -1 THEN
2643       OKC_API.set_message(G_APP_NAME,G_RECORD_LOGICALLY_DELETED);
2644       RAISE OKC_API.G_EXCEPTION_ERROR;
2645     END IF;
2646     x_return_status := l_return_status;
2647     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2648   EXCEPTION
2649     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2650       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2651       (
2652         l_api_name,
2653         G_PKG_NAME,
2654         'OKC_API.G_RET_STS_ERROR',
2655         x_msg_count,
2656         x_msg_data,
2657         '_PVT'
2658       );
2659     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2660       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2661       (
2662         l_api_name,
2663         G_PKG_NAME,
2664         'OKC_API.G_RET_STS_UNEXP_ERROR',
2665         x_msg_count,
2666         x_msg_data,
2667         '_PVT'
2668       );
2669     WHEN OTHERS THEN
2670       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2671       (
2672         l_api_name,
2673         G_PKG_NAME,
2674         'OTHERS',
2675         x_msg_count,
2676         x_msg_data,
2677         '_PVT'
2678       );
2679   END lock_row;
2680   ---------------------------------
2681   -- lock_row for:OKS_K_LINES_TL --
2682   ---------------------------------
2683   PROCEDURE lock_row(
2684     p_init_msg_list                IN VARCHAR2,
2685     x_return_status                OUT NOCOPY VARCHAR2,
2686     x_msg_count                    OUT NOCOPY NUMBER,
2687     x_msg_data                     OUT NOCOPY VARCHAR2,
2688     p_klt_rec                      IN klt_rec_type) IS
2689 
2690     E_Resource_Busy                EXCEPTION;
2691     PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
2692     CURSOR lock_csr (p_klt_rec IN klt_rec_type) IS
2693     SELECT *
2694       FROM OKS_K_LINES_TL
2695      WHERE ID = p_klt_rec.id
2696     FOR UPDATE NOWAIT;
2697 
2698     l_api_version                  CONSTANT NUMBER := 1;
2699     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_lock_row';
2700     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2701     l_lock_var                     lock_csr%ROWTYPE;
2702     l_row_notfound                 BOOLEAN := FALSE;
2703     lc_row_notfound                BOOLEAN := FALSE;
2704   BEGIN
2705     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2706                                               p_init_msg_list,
2707                                               '_PVT',
2708                                               x_return_status);
2709     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2710       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2711     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2712       RAISE OKC_API.G_EXCEPTION_ERROR;
2713     END IF;
2714     BEGIN
2715       OPEN lock_csr(p_klt_rec);
2716       FETCH lock_csr INTO l_lock_var;
2717       l_row_notfound := lock_csr%NOTFOUND;
2718       CLOSE lock_csr;
2719     EXCEPTION
2720       WHEN E_Resource_Busy THEN
2721         IF (lock_csr%ISOPEN) THEN
2722           CLOSE lock_csr;
2723         END IF;
2724         OKC_API.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
2725         RAISE APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION;
2726     END;
2727 
2728     IF ( l_row_notfound ) THEN
2729       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
2730       RAISE OKC_API.G_EXCEPTION_ERROR;
2731     END IF;
2732     x_return_status := l_return_status;
2733     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2734   EXCEPTION
2735     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2736       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2737       (
2738         l_api_name,
2739         G_PKG_NAME,
2740         'OKC_API.G_RET_STS_ERROR',
2741         x_msg_count,
2742         x_msg_data,
2743         '_PVT'
2744       );
2745     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2746       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2747       (
2748         l_api_name,
2749         G_PKG_NAME,
2750         'OKC_API.G_RET_STS_UNEXP_ERROR',
2751         x_msg_count,
2752         x_msg_data,
2753         '_PVT'
2754       );
2755     WHEN OTHERS THEN
2756       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2757       (
2758         l_api_name,
2759         G_PKG_NAME,
2760         'OTHERS',
2761         x_msg_count,
2762         x_msg_data,
2763         '_PVT'
2764       );
2765   END lock_row;
2766   ---------------------------------
2767   -- lock_row for: OKS_K_LINES_V --
2768   ---------------------------------
2769   PROCEDURE lock_row(
2770     p_api_version                  IN NUMBER,
2771     p_init_msg_list                IN VARCHAR2,
2772     x_return_status                OUT NOCOPY VARCHAR2,
2773     x_msg_count                    OUT NOCOPY NUMBER,
2774     x_msg_data                     OUT NOCOPY VARCHAR2,
2775     p_klnv_rec                     IN klnv_rec_type) IS
2776 
2777     l_api_version                  CONSTANT NUMBER := 1;
2778     l_api_name                     CONSTANT VARCHAR2(30) := 'V_lock_row';
2779     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2780     l_kln_rec                      kln_rec_type;
2781     l_klt_rec                      klt_rec_type;
2782   BEGIN
2783     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2784                                               G_PKG_NAME,
2785                                               p_init_msg_list,
2786                                               l_api_version,
2787                                               p_api_version,
2788                                               '_PVT',
2789                                               x_return_status);
2790     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2791       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2792     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2793       RAISE OKC_API.G_EXCEPTION_ERROR;
2794     END IF;
2795     -----------------------------------------
2796     -- Move VIEW record to "Child" records --
2797     -----------------------------------------
2798     migrate(p_klnv_rec, l_kln_rec);
2799     migrate(p_klnv_rec, l_klt_rec);
2800     ---------------------------------------------
2801     -- Call the LOCK_ROW for each child record --
2802     ---------------------------------------------
2803     lock_row(
2804       p_init_msg_list,
2805       l_return_status,
2806       x_msg_count,
2807       x_msg_data,
2808       l_kln_rec
2809     );
2810     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2811       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2812     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2813       RAISE OKC_API.G_EXCEPTION_ERROR;
2814     END IF;
2815     lock_row(
2816       p_init_msg_list,
2817       l_return_status,
2818       x_msg_count,
2819       x_msg_data,
2820       l_klt_rec
2821     );
2822     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2823       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2824     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2825       RAISE OKC_API.G_EXCEPTION_ERROR;
2826     END IF;
2827     x_return_status := l_return_status;
2828     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2829   EXCEPTION
2830     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2831       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2832       (
2833         l_api_name,
2834         G_PKG_NAME,
2835         'OKC_API.G_RET_STS_ERROR',
2836         x_msg_count,
2837         x_msg_data,
2838         '_PVT'
2839       );
2840     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2841       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2842       (
2843         l_api_name,
2844         G_PKG_NAME,
2845         'OKC_API.G_RET_STS_UNEXP_ERROR',
2846         x_msg_count,
2847         x_msg_data,
2848         '_PVT'
2849       );
2850     WHEN OTHERS THEN
2851       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2852       (
2853         l_api_name,
2854         G_PKG_NAME,
2855         'OTHERS',
2856         x_msg_count,
2857         x_msg_data,
2858         '_PVT'
2859       );
2860   END lock_row;
2861   --------------------------------------
2862   -- PL/SQL TBL lock_row for:KLNV_TBL --
2863   --------------------------------------
2864   PROCEDURE lock_row(
2865     p_api_version                  IN NUMBER,
2866     p_init_msg_list                IN VARCHAR2,
2867     x_return_status                OUT NOCOPY VARCHAR2,
2868     x_msg_count                    OUT NOCOPY NUMBER,
2869     x_msg_data                     OUT NOCOPY VARCHAR2,
2870     p_klnv_tbl                     IN klnv_tbl_type,
2871     px_error_tbl                   IN OUT NOCOPY OKC_API.ERROR_TBL_TYPE) IS
2872 
2873     l_api_version                  CONSTANT NUMBER := 1;
2874     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_lock_row';
2875     i                              NUMBER := 0;
2876   BEGIN
2877     OKC_API.init_msg_list(p_init_msg_list);
2878     -- Make sure PL/SQL table has recrods in it before passing
2879     IF (p_klnv_tbl.COUNT > 0) THEN
2880       i := p_klnv_tbl.FIRST;
2881       LOOP
2882         DECLARE
2883           l_error_rec         OKC_API.ERROR_REC_TYPE;
2884         BEGIN
2885           l_error_rec.api_name := l_api_name;
2886           l_error_rec.api_package := G_PKG_NAME;
2887           l_error_rec.idx := i;
2888           lock_row(
2889             p_api_version                  => p_api_version,
2890             p_init_msg_list                => OKC_API.G_FALSE,
2891             x_return_status                => l_error_rec.error_type,
2892             x_msg_count                    => l_error_rec.msg_count,
2893             x_msg_data                     => l_error_rec.msg_data,
2894             p_klnv_rec                     => p_klnv_tbl(i));
2895           IF (l_error_rec.error_type <> OKC_API.G_RET_STS_SUCCESS) THEN
2896             l_error_rec.sqlcode := SQLCODE;
2897             load_error_tbl(l_error_rec, px_error_tbl);
2898           ELSE
2899             x_msg_count := l_error_rec.msg_count;
2900             x_msg_data := l_error_rec.msg_data;
2901           END IF;
2902         EXCEPTION
2903           WHEN OKC_API.G_EXCEPTION_ERROR THEN
2904             l_error_rec.error_type := OKC_API.G_RET_STS_ERROR;
2905             l_error_rec.sqlcode := SQLCODE;
2906             load_error_tbl(l_error_rec, px_error_tbl);
2907           WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2908             l_error_rec.error_type := OKC_API.G_RET_STS_UNEXP_ERROR;
2909             l_error_rec.sqlcode := SQLCODE;
2910             load_error_tbl(l_error_rec, px_error_tbl);
2911           WHEN OTHERS THEN
2912             l_error_rec.error_type := 'OTHERS';
2913             l_error_rec.sqlcode := SQLCODE;
2914             load_error_tbl(l_error_rec, px_error_tbl);
2915         END;
2916         EXIT WHEN (i = p_klnv_tbl.LAST);
2917         i := p_klnv_tbl.NEXT(i);
2918       END LOOP;
2919     END IF;
2920     -- Loop through the error_tbl to find the error with the highest severity
2921     -- and return it.
2922     x_return_status := find_highest_exception(px_error_tbl);
2923     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2924   EXCEPTION
2925     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2926       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2927       (
2928         l_api_name,
2929         G_PKG_NAME,
2930         'OKC_API.G_RET_STS_ERROR',
2931         x_msg_count,
2932         x_msg_data,
2933         '_PVT'
2934       );
2935     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2936       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2937       (
2938         l_api_name,
2939         G_PKG_NAME,
2940         'OKC_API.G_RET_STS_UNEXP_ERROR',
2941         x_msg_count,
2942         x_msg_data,
2943         '_PVT'
2944       );
2945     WHEN OTHERS THEN
2946       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2947       (
2948         l_api_name,
2949         G_PKG_NAME,
2950         'OTHERS',
2951         x_msg_count,
2952         x_msg_data,
2953         '_PVT'
2954       );
2955   END lock_row;
2956   --------------------------------------
2957   -- PL/SQL TBL lock_row for:KLNV_TBL --
2958   --------------------------------------
2959   PROCEDURE lock_row(
2960     p_api_version                  IN NUMBER,
2961     p_init_msg_list                IN VARCHAR2,
2962     x_return_status                OUT NOCOPY VARCHAR2,
2963     x_msg_count                    OUT NOCOPY NUMBER,
2964     x_msg_data                     OUT NOCOPY VARCHAR2,
2965     p_klnv_tbl                     IN klnv_tbl_type) IS
2966 
2967     l_api_version                  CONSTANT NUMBER := 1;
2968     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_lock_row';
2969     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2970     l_error_tbl                    OKC_API.ERROR_TBL_TYPE;
2971   BEGIN
2972     OKC_API.init_msg_list(p_init_msg_list);
2973     x_return_status := l_return_status;
2974     -- Make sure PL/SQL table has recrods in it before passing
2975     IF (p_klnv_tbl.COUNT > 0) THEN
2976       lock_row(
2977         p_api_version                  => p_api_version,
2978         p_init_msg_list                => OKC_API.G_FALSE,
2979         x_return_status                => x_return_status,
2980         x_msg_count                    => x_msg_count,
2981         x_msg_data                     => x_msg_data,
2982         p_klnv_tbl                     => p_klnv_tbl,
2983         px_error_tbl                   => l_error_tbl);
2984     END IF;
2985 
2986     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2987   EXCEPTION
2988     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2989       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2990       (
2991         l_api_name,
2992         G_PKG_NAME,
2993         'OKC_API.G_RET_STS_ERROR',
2994         x_msg_count,
2995         x_msg_data,
2996         '_PVT'
2997       );
2998     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2999       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3000       (
3001         l_api_name,
3002         G_PKG_NAME,
3003         'OKC_API.G_RET_STS_UNEXP_ERROR',
3004         x_msg_count,
3005         x_msg_data,
3006         '_PVT'
3007       );
3008     WHEN OTHERS THEN
3009       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3010       (
3011         l_api_name,
3012         G_PKG_NAME,
3013         'OTHERS',
3014         x_msg_count,
3015         x_msg_data,
3016         '_PVT'
3017       );
3018   END lock_row;
3019   ---------------------------------------------------------------------------
3020   -- PROCEDURE update_row
3021   ---------------------------------------------------------------------------
3022   ----------------------------------
3023   -- update_row for:OKS_K_LINES_B --
3024   ----------------------------------
3025   PROCEDURE update_row(
3026     p_init_msg_list                IN VARCHAR2,
3027     x_return_status                OUT NOCOPY VARCHAR2,
3028     x_msg_count                    OUT NOCOPY NUMBER,
3029     x_msg_data                     OUT NOCOPY VARCHAR2,
3030     p_kln_rec                      IN kln_rec_type,
3031     x_kln_rec                      OUT NOCOPY kln_rec_type) IS
3032 
3033     l_api_version                  CONSTANT NUMBER := 1;
3034     l_api_name                     CONSTANT VARCHAR2(30) := 'B_update_row';
3035     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3036     l_kln_rec                      kln_rec_type := p_kln_rec;
3037     l_def_kln_rec                  kln_rec_type;
3038     l_row_notfound                 BOOLEAN := TRUE;
3039     l_credit_card_changed VARCHAR2(1) := 'N';
3040     ----------------------------------
3041     -- FUNCTION populate_new_record --
3042     ----------------------------------
3043     FUNCTION populate_new_record (
3044       p_kln_rec IN kln_rec_type,
3045       x_kln_rec OUT NOCOPY kln_rec_type,
3046       x_credit_card_changed OUT NOCOPY VARCHAR2
3047     ) RETURN VARCHAR2 IS
3048       l_kln_rec                      kln_rec_type;
3049       l_row_notfound                 BOOLEAN := TRUE;
3050       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3051     BEGIN
3052       x_kln_rec := p_kln_rec;
3053       -- Get current database values
3054       l_kln_rec := get_rec(p_kln_rec, l_return_status);
3055       IF (l_return_status = OKC_API.G_RET_STS_SUCCESS) THEN
3056         IF (x_kln_rec.id = OKC_API.G_MISS_NUM)
3057         THEN
3058           x_kln_rec.id := l_kln_rec.id;
3059         END IF;
3060         IF (x_kln_rec.cle_id = OKC_API.G_MISS_NUM)
3061         THEN
3062           x_kln_rec.cle_id := l_kln_rec.cle_id;
3063         END IF;
3064         IF (x_kln_rec.dnz_chr_id = OKC_API.G_MISS_NUM)
3065         THEN
3066           x_kln_rec.dnz_chr_id := l_kln_rec.dnz_chr_id;
3067         END IF;
3068         IF (x_kln_rec.discount_list = OKC_API.G_MISS_NUM)
3069         THEN
3070           x_kln_rec.discount_list := l_kln_rec.discount_list;
3071         END IF;
3072         IF (x_kln_rec.acct_rule_id = OKC_API.G_MISS_NUM)
3073         THEN
3074           x_kln_rec.acct_rule_id := l_kln_rec.acct_rule_id;
3075         END IF;
3076         IF (x_kln_rec.payment_type = OKC_API.G_MISS_CHAR)
3077         THEN
3078           x_kln_rec.payment_type := l_kln_rec.payment_type;
3079         END IF;
3080         IF (x_kln_rec.cc_no = OKC_API.G_MISS_CHAR)
3081         THEN
3082           x_kln_rec.cc_no := l_kln_rec.cc_no;
3083         END IF;
3084         IF (x_kln_rec.cc_expiry_date = OKC_API.G_MISS_DATE)
3085         THEN
3086           x_kln_rec.cc_expiry_date := l_kln_rec.cc_expiry_date;
3087         END IF;
3088         IF (x_kln_rec.cc_bank_acct_id = OKC_API.G_MISS_NUM)
3089         THEN
3090           x_kln_rec.cc_bank_acct_id := l_kln_rec.cc_bank_acct_id;
3091         END IF;
3092         IF (x_kln_rec.cc_auth_code = OKC_API.G_MISS_CHAR)
3093         THEN
3094           x_kln_rec.cc_auth_code := l_kln_rec.cc_auth_code;
3095         END IF;
3096         IF (x_kln_rec.commitment_id = OKC_API.G_MISS_NUM)
3097         THEN
3098           x_kln_rec.commitment_id := l_kln_rec.commitment_id;
3099         END IF;
3100         IF (x_kln_rec.locked_price_list_id = OKC_API.G_MISS_NUM)
3101         THEN
3102           x_kln_rec.locked_price_list_id := l_kln_rec.locked_price_list_id;
3103         END IF;
3104         IF (x_kln_rec.usage_est_yn = OKC_API.G_MISS_CHAR)
3105         THEN
3106           x_kln_rec.usage_est_yn := l_kln_rec.usage_est_yn;
3107         END IF;
3108         IF (x_kln_rec.usage_est_method = OKC_API.G_MISS_CHAR)
3109         THEN
3110           x_kln_rec.usage_est_method := l_kln_rec.usage_est_method;
3111         END IF;
3112         IF (x_kln_rec.usage_est_start_date = OKC_API.G_MISS_DATE)
3113         THEN
3114           x_kln_rec.usage_est_start_date := l_kln_rec.usage_est_start_date;
3115         END IF;
3116         IF (x_kln_rec.termn_method = OKC_API.G_MISS_CHAR)
3117         THEN
3118           x_kln_rec.termn_method := l_kln_rec.termn_method;
3119         END IF;
3120         IF (x_kln_rec.ubt_amount = OKC_API.G_MISS_NUM)
3121         THEN
3122           x_kln_rec.ubt_amount := l_kln_rec.ubt_amount;
3123         END IF;
3124         IF (x_kln_rec.credit_amount = OKC_API.G_MISS_NUM)
3125         THEN
3126           x_kln_rec.credit_amount := l_kln_rec.credit_amount;
3127         END IF;
3128         IF (x_kln_rec.suppressed_credit = OKC_API.G_MISS_NUM)
3129         THEN
3130           x_kln_rec.suppressed_credit := l_kln_rec.suppressed_credit;
3131         END IF;
3132         IF (x_kln_rec.override_amount = OKC_API.G_MISS_NUM)
3133         THEN
3134           x_kln_rec.override_amount := l_kln_rec.override_amount;
3135         END IF;
3136         IF (x_kln_rec.cust_po_number_req_yn = OKC_API.G_MISS_CHAR)
3137         THEN
3138           x_kln_rec.cust_po_number_req_yn := l_kln_rec.cust_po_number_req_yn;
3139         END IF;
3140         IF (x_kln_rec.cust_po_number = OKC_API.G_MISS_CHAR)
3141         THEN
3142           x_kln_rec.cust_po_number := l_kln_rec.cust_po_number;
3143         END IF;
3144         IF (x_kln_rec.grace_duration = OKC_API.G_MISS_NUM)
3145         THEN
3146           x_kln_rec.grace_duration := l_kln_rec.grace_duration;
3147         END IF;
3148         IF (x_kln_rec.grace_period = OKC_API.G_MISS_CHAR)
3149         THEN
3150           x_kln_rec.grace_period := l_kln_rec.grace_period;
3151         END IF;
3152         IF (x_kln_rec.inv_print_flag = OKC_API.G_MISS_CHAR)
3153         THEN
3154           x_kln_rec.inv_print_flag := l_kln_rec.inv_print_flag;
3155         END IF;
3156         IF (x_kln_rec.price_uom = OKC_API.G_MISS_CHAR)
3157         THEN
3158           x_kln_rec.price_uom := l_kln_rec.price_uom;
3159         END IF;
3160         IF (x_kln_rec.tax_amount = OKC_API.G_MISS_NUM)
3161         THEN
3162           x_kln_rec.tax_amount := l_kln_rec.tax_amount;
3163         END IF;
3164         IF (x_kln_rec.tax_inclusive_yn = OKC_API.G_MISS_CHAR)
3165         THEN
3166           x_kln_rec.tax_inclusive_yn := l_kln_rec.tax_inclusive_yn;
3167         END IF;
3168         IF (x_kln_rec.tax_status = OKC_API.G_MISS_CHAR)
3169         THEN
3170           x_kln_rec.tax_status := l_kln_rec.tax_status;
3171         END IF;
3172         IF (x_kln_rec.tax_code = OKC_API.G_MISS_NUM)
3173         THEN
3174           x_kln_rec.tax_code := l_kln_rec.tax_code;
3175         END IF;
3176         IF (x_kln_rec.tax_exemption_id = OKC_API.G_MISS_NUM)
3177         THEN
3178           x_kln_rec.tax_exemption_id := l_kln_rec.tax_exemption_id;
3179         END IF;
3180         IF (x_kln_rec.ib_trans_type = OKC_API.G_MISS_CHAR)
3181         THEN
3182           x_kln_rec.ib_trans_type := l_kln_rec.ib_trans_type;
3183         END IF;
3184         IF (x_kln_rec.ib_trans_date = OKC_API.G_MISS_DATE)
3185         THEN
3186           x_kln_rec.ib_trans_date := l_kln_rec.ib_trans_date;
3187         END IF;
3188         IF (x_kln_rec.prod_price = OKC_API.G_MISS_NUM)
3189         THEN
3190           x_kln_rec.prod_price := l_kln_rec.prod_price;
3191         END IF;
3192         IF (x_kln_rec.service_price = OKC_API.G_MISS_NUM)
3193         THEN
3194           x_kln_rec.service_price := l_kln_rec.service_price;
3195         END IF;
3196         IF (x_kln_rec.clvl_list_price = OKC_API.G_MISS_NUM)
3197         THEN
3198           x_kln_rec.clvl_list_price := l_kln_rec.clvl_list_price;
3199         END IF;
3200         IF (x_kln_rec.clvl_quantity = OKC_API.G_MISS_NUM)
3201         THEN
3202           x_kln_rec.clvl_quantity := l_kln_rec.clvl_quantity;
3203         END IF;
3204         IF (x_kln_rec.clvl_extended_amt = OKC_API.G_MISS_NUM)
3205         THEN
3206           x_kln_rec.clvl_extended_amt := l_kln_rec.clvl_extended_amt;
3207         END IF;
3208         IF (x_kln_rec.clvl_uom_code = OKC_API.G_MISS_CHAR)
3209         THEN
3210           x_kln_rec.clvl_uom_code := l_kln_rec.clvl_uom_code;
3211         END IF;
3212         IF (x_kln_rec.toplvl_operand_code = OKC_API.G_MISS_CHAR)
3213         THEN
3214           x_kln_rec.toplvl_operand_code := l_kln_rec.toplvl_operand_code;
3215         END IF;
3216         IF (x_kln_rec.toplvl_operand_val = OKC_API.G_MISS_NUM)
3217         THEN
3218           x_kln_rec.toplvl_operand_val := l_kln_rec.toplvl_operand_val;
3219         END IF;
3220         IF (x_kln_rec.toplvl_quantity = OKC_API.G_MISS_NUM)
3221         THEN
3222           x_kln_rec.toplvl_quantity := l_kln_rec.toplvl_quantity;
3223         END IF;
3224         IF (x_kln_rec.toplvl_uom_code = OKC_API.G_MISS_CHAR)
3225         THEN
3226           x_kln_rec.toplvl_uom_code := l_kln_rec.toplvl_uom_code;
3227         END IF;
3228         IF (x_kln_rec.toplvl_adj_price = OKC_API.G_MISS_NUM)
3229         THEN
3230           x_kln_rec.toplvl_adj_price := l_kln_rec.toplvl_adj_price;
3231         END IF;
3232         IF (x_kln_rec.toplvl_price_qty = OKC_API.G_MISS_NUM)
3233         THEN
3234           x_kln_rec.toplvl_price_qty := l_kln_rec.toplvl_price_qty;
3235         END IF;
3236         IF (x_kln_rec.averaging_interval = OKC_API.G_MISS_NUM)
3237         THEN
3238           x_kln_rec.averaging_interval := l_kln_rec.averaging_interval;
3239         END IF;
3240         IF (x_kln_rec.settlement_interval = OKC_API.G_MISS_CHAR)
3241         THEN
3242           x_kln_rec.settlement_interval := l_kln_rec.settlement_interval;
3243         END IF;
3244         IF (x_kln_rec.minimum_quantity = OKC_API.G_MISS_NUM)
3245         THEN
3246           x_kln_rec.minimum_quantity := l_kln_rec.minimum_quantity;
3247         END IF;
3248         IF (x_kln_rec.default_quantity = OKC_API.G_MISS_NUM)
3249         THEN
3250           x_kln_rec.default_quantity := l_kln_rec.default_quantity;
3251         END IF;
3252         IF (x_kln_rec.amcv_flag = OKC_API.G_MISS_CHAR)
3253         THEN
3254           x_kln_rec.amcv_flag := l_kln_rec.amcv_flag;
3255         END IF;
3256         IF (x_kln_rec.fixed_quantity = OKC_API.G_MISS_NUM)
3257         THEN
3258           x_kln_rec.fixed_quantity := l_kln_rec.fixed_quantity;
3259         END IF;
3260         IF (x_kln_rec.usage_duration = OKC_API.G_MISS_NUM)
3261         THEN
3262           x_kln_rec.usage_duration := l_kln_rec.usage_duration;
3263         END IF;
3264         IF (x_kln_rec.usage_period = OKC_API.G_MISS_CHAR)
3265         THEN
3266           x_kln_rec.usage_period := l_kln_rec.usage_period;
3267         END IF;
3268         IF (x_kln_rec.level_yn = OKC_API.G_MISS_CHAR)
3269         THEN
3270           x_kln_rec.level_yn := l_kln_rec.level_yn;
3271         END IF;
3272         IF (x_kln_rec.usage_type = OKC_API.G_MISS_CHAR)
3273         THEN
3274           x_kln_rec.usage_type := l_kln_rec.usage_type;
3275         END IF;
3276         IF (x_kln_rec.uom_quantified = OKC_API.G_MISS_CHAR)
3277         THEN
3278           x_kln_rec.uom_quantified := l_kln_rec.uom_quantified;
3279         END IF;
3280         IF (x_kln_rec.base_reading = OKC_API.G_MISS_NUM)
3281         THEN
3282           x_kln_rec.base_reading := l_kln_rec.base_reading;
3283         END IF;
3284         IF (x_kln_rec.billing_schedule_type = OKC_API.G_MISS_CHAR)
3285         THEN
3286           x_kln_rec.billing_schedule_type := l_kln_rec.billing_schedule_type;
3287         END IF;
3288         IF (x_kln_rec.full_credit = OKC_API.G_MISS_CHAR)
3289         THEN
3290           x_kln_rec.full_credit := l_kln_rec.full_credit;
3291         END IF;
3292         IF (x_kln_rec.locked_price_list_line_id = OKC_API.G_MISS_NUM)
3293         THEN
3294           x_kln_rec.locked_price_list_line_id := l_kln_rec.locked_price_list_line_id;
3295         END IF;
3296         IF (x_kln_rec.break_uom = OKC_API.G_MISS_CHAR)
3297         THEN
3298           x_kln_rec.break_uom := l_kln_rec.break_uom;
3299         END IF;
3300         IF (x_kln_rec.prorate = OKC_API.G_MISS_CHAR)
3301         THEN
3302           x_kln_rec.prorate := l_kln_rec.prorate;
3303         END IF;
3304         IF (x_kln_rec.coverage_type = OKC_API.G_MISS_CHAR)
3305         THEN
3306           x_kln_rec.coverage_type := l_kln_rec.coverage_type;
3307         END IF;
3308         IF (x_kln_rec.exception_cov_id = OKC_API.G_MISS_NUM)
3309         THEN
3310           x_kln_rec.exception_cov_id := l_kln_rec.exception_cov_id;
3311         END IF;
3312         IF (x_kln_rec.limit_uom_quantified = OKC_API.G_MISS_CHAR)
3313         THEN
3314           x_kln_rec.limit_uom_quantified := l_kln_rec.limit_uom_quantified;
3315         END IF;
3316         IF (x_kln_rec.discount_amount = OKC_API.G_MISS_NUM)
3317         THEN
3318           x_kln_rec.discount_amount := l_kln_rec.discount_amount;
3319         END IF;
3320         IF (x_kln_rec.discount_percent = OKC_API.G_MISS_NUM)
3321         THEN
3322           x_kln_rec.discount_percent := l_kln_rec.discount_percent;
3323         END IF;
3324         IF (x_kln_rec.offset_duration = OKC_API.G_MISS_NUM)
3325         THEN
3326           x_kln_rec.offset_duration := l_kln_rec.offset_duration;
3327         END IF;
3328         IF (x_kln_rec.offset_period = OKC_API.G_MISS_CHAR)
3329         THEN
3330           x_kln_rec.offset_period := l_kln_rec.offset_period;
3331         END IF;
3332         IF (x_kln_rec.incident_severity_id = OKC_API.G_MISS_NUM)
3333         THEN
3334           x_kln_rec.incident_severity_id := l_kln_rec.incident_severity_id;
3335         END IF;
3336         IF (x_kln_rec.pdf_id = OKC_API.G_MISS_NUM)
3337         THEN
3338           x_kln_rec.pdf_id := l_kln_rec.pdf_id;
3339         END IF;
3340         IF (x_kln_rec.work_thru_yn = OKC_API.G_MISS_CHAR)
3341         THEN
3342           x_kln_rec.work_thru_yn := l_kln_rec.work_thru_yn;
3343         END IF;
3344         IF (x_kln_rec.react_active_yn = OKC_API.G_MISS_CHAR)
3345         THEN
3346           x_kln_rec.react_active_yn := l_kln_rec.react_active_yn;
3347         END IF;
3348         IF (x_kln_rec.transfer_option = OKC_API.G_MISS_CHAR)
3349         THEN
3350           x_kln_rec.transfer_option := l_kln_rec.transfer_option;
3351         END IF;
3352         IF (x_kln_rec.prod_upgrade_yn = OKC_API.G_MISS_CHAR)
3353         THEN
3354           x_kln_rec.prod_upgrade_yn := l_kln_rec.prod_upgrade_yn;
3355         END IF;
3356         IF (x_kln_rec.inheritance_type = OKC_API.G_MISS_CHAR)
3357         THEN
3358           x_kln_rec.inheritance_type := l_kln_rec.inheritance_type;
3359         END IF;
3360         IF (x_kln_rec.pm_program_id = OKC_API.G_MISS_NUM)
3361         THEN
3362           x_kln_rec.pm_program_id := l_kln_rec.pm_program_id;
3363         END IF;
3364         IF (x_kln_rec.pm_conf_req_yn = OKC_API.G_MISS_CHAR)
3365         THEN
3366           x_kln_rec.pm_conf_req_yn := l_kln_rec.pm_conf_req_yn;
3367         END IF;
3368         IF (x_kln_rec.pm_sch_exists_yn = OKC_API.G_MISS_CHAR)
3369         THEN
3370           x_kln_rec.pm_sch_exists_yn := l_kln_rec.pm_sch_exists_yn;
3371         END IF;
3372         IF (x_kln_rec.allow_bt_discount = OKC_API.G_MISS_CHAR)
3373         THEN
3374           x_kln_rec.allow_bt_discount := l_kln_rec.allow_bt_discount;
3375         END IF;
3376         IF (x_kln_rec.apply_default_timezone = OKC_API.G_MISS_CHAR)
3377         THEN
3378           x_kln_rec.apply_default_timezone := l_kln_rec.apply_default_timezone;
3379         END IF;
3380         IF (x_kln_rec.sync_date_install = OKC_API.G_MISS_CHAR)
3381         THEN
3382           x_kln_rec.sync_date_install := l_kln_rec.sync_date_install;
3383         END IF;
3384         IF (x_kln_rec.object_version_number = OKC_API.G_MISS_NUM)
3385         THEN
3386           x_kln_rec.object_version_number := l_kln_rec.object_version_number;
3387         END IF;
3388         IF (x_kln_rec.request_id = OKC_API.G_MISS_NUM)
3389         THEN
3390           x_kln_rec.request_id := l_kln_rec.request_id;
3391         END IF;
3392         IF (x_kln_rec.created_by = OKC_API.G_MISS_NUM)
3393         THEN
3394           x_kln_rec.created_by := l_kln_rec.created_by;
3395         END IF;
3396         IF (x_kln_rec.creation_date = OKC_API.G_MISS_DATE)
3397         THEN
3398           x_kln_rec.creation_date := l_kln_rec.creation_date;
3399         END IF;
3400         IF (x_kln_rec.last_updated_by = OKC_API.G_MISS_NUM)
3401         THEN
3402           x_kln_rec.last_updated_by := l_kln_rec.last_updated_by;
3403         END IF;
3404         IF (x_kln_rec.last_update_date = OKC_API.G_MISS_DATE)
3405         THEN
3406           x_kln_rec.last_update_date := l_kln_rec.last_update_date;
3407         END IF;
3408         IF (x_kln_rec.last_update_login = OKC_API.G_MISS_NUM)
3409         THEN
3410           x_kln_rec.last_update_login := l_kln_rec.last_update_login;
3411         END IF;
3412 -- R12 Data Model Changes 4485150 Start
3413 
3414         /**
3415         IF (x_kln_rec.trxn_extension_id = OKC_API.G_MISS_NUM)
3416         THEN
3417           x_kln_rec.trxn_extension_id := l_kln_rec.trxn_extension_id;
3418         END IF;
3419         **/
3420         --bug 4656532 (QA updates cc_auth_code after authorization which we need to null out if credit card changes
3421         IF (x_kln_rec.trxn_extension_id = OKC_API.G_MISS_NUM)
3422                 THEN
3423                 x_kln_rec.trxn_extension_id := l_kln_rec.trxn_extension_id;
3424 
3425                 x_credit_card_changed := 'N';
3426         ELSIF
3427                 nvl(x_kln_rec.trxn_extension_id,  - 9999) <>
3428                 nvl(l_kln_rec.trxn_extension_id,  - 9999) THEN
3429                 x_credit_card_changed := 'Y';
3430         ELSE
3431                 x_credit_card_changed := 'N';
3432         END IF;
3433 
3434 
3435         IF (x_kln_rec.tax_classification_code = OKC_API.G_MISS_CHAR)
3436         THEN
3437           x_kln_rec.tax_classification_code := l_kln_rec.tax_classification_code;
3438         END IF;
3439         IF (x_kln_rec.exempt_certificate_number = OKC_API.G_MISS_CHAR)
3440         THEN
3441           x_kln_rec.exempt_certificate_number := l_kln_rec.exempt_certificate_number;
3442         END IF;
3443         IF (x_kln_rec.exempt_reason_code = OKC_API.G_MISS_CHAR)
3444         THEN
3445           x_kln_rec.exempt_reason_code := l_kln_rec.exempt_reason_code;
3446         END IF;
3447         IF (x_kln_rec.coverage_id = OKC_API.G_MISS_NUM)
3448         THEN
3449           x_kln_rec.coverage_id := l_kln_rec.coverage_id;
3450         END IF;
3451         IF (x_kln_rec.standard_cov_yn = OKC_API.G_MISS_CHAR)
3452         THEN
3453           x_kln_rec.standard_cov_yn := l_kln_rec.standard_cov_yn;
3454         END IF;
3455         IF (x_kln_rec.orig_system_id1 = OKC_API.G_MISS_NUM)
3456         THEN
3457           x_kln_rec.orig_system_id1 := l_kln_rec.orig_system_id1;
3458         END IF;
3459         IF (x_kln_rec.orig_system_reference1 = OKC_API.G_MISS_CHAR)
3460         THEN
3461           x_kln_rec.orig_system_reference1 := l_kln_rec.orig_system_reference1;
3462         END IF;
3463         IF (x_kln_rec.orig_system_source_code = OKC_API.G_MISS_CHAR)
3464         THEN
3465           x_kln_rec.orig_system_source_code := l_kln_rec.orig_system_source_code;
3466         END IF;
3467 -- R12 Data Model Changes 4485150 End
3468 
3469       END IF;
3470       RETURN(l_return_status);
3471     END populate_new_record;
3472     --------------------------------------
3473     -- Set_Attributes for:OKS_K_LINES_B --
3474     --------------------------------------
3475     FUNCTION Set_Attributes (
3476       p_kln_rec IN kln_rec_type,
3477       x_kln_rec OUT NOCOPY kln_rec_type
3478     ) RETURN VARCHAR2 IS
3479       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3480     BEGIN
3481       x_kln_rec := p_kln_rec;
3482       x_kln_rec.OBJECT_VERSION_NUMBER := p_kln_rec.OBJECT_VERSION_NUMBER + 1;
3483       RETURN(l_return_status);
3484     END Set_Attributes;
3485   BEGIN
3486     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
3487                                               p_init_msg_list,
3488                                               '_PVT',
3489                                               x_return_status);
3490     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3491       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3492     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3493       RAISE OKC_API.G_EXCEPTION_ERROR;
3494     END IF;
3495     --- Setting item attributes
3496     l_return_status := Set_Attributes(
3497       p_kln_rec,                         -- IN
3498       l_kln_rec);                        -- OUT
3499     --- If any errors happen abort API
3500     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3501       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3502     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3503       RAISE OKC_API.G_EXCEPTION_ERROR;
3504     END IF;
3505     l_return_status := populate_new_record(l_kln_rec, l_def_kln_rec, l_credit_card_changed);
3506     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3507       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3508     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3509       RAISE OKC_API.G_EXCEPTION_ERROR;
3510     END IF;
3511 
3512     --bug 4656532 (QA updates cc_auth_code after authorization which we need to null out if credit card changes
3513     IF l_credit_card_changed = 'Y' THEN
3514        l_def_kln_rec.cc_auth_code := NULL;
3515     END IF;
3516 
3517     UPDATE OKS_K_LINES_B
3518     SET CLE_ID = l_def_kln_rec.cle_id,
3519         DNZ_CHR_ID = l_def_kln_rec.dnz_chr_id,
3520         DISCOUNT_LIST = l_def_kln_rec.discount_list,
3521         ACCT_RULE_ID = l_def_kln_rec.acct_rule_id,
3522         PAYMENT_TYPE = l_def_kln_rec.payment_type,
3523         CC_NO = l_def_kln_rec.cc_no,
3524         CC_EXPIRY_DATE = l_def_kln_rec.cc_expiry_date,
3525         CC_BANK_ACCT_ID = l_def_kln_rec.cc_bank_acct_id,
3526         CC_AUTH_CODE = l_def_kln_rec.cc_auth_code,
3527         COMMITMENT_ID = l_def_kln_rec.commitment_id,
3528         LOCKED_PRICE_LIST_ID = l_def_kln_rec.locked_price_list_id,
3529         USAGE_EST_YN = l_def_kln_rec.usage_est_yn,
3530         USAGE_EST_METHOD = l_def_kln_rec.usage_est_method,
3531         USAGE_EST_START_DATE = l_def_kln_rec.usage_est_start_date,
3532         TERMN_METHOD = l_def_kln_rec.termn_method,
3533         UBT_AMOUNT = l_def_kln_rec.ubt_amount,
3534         CREDIT_AMOUNT = l_def_kln_rec.credit_amount,
3535         SUPPRESSED_CREDIT = l_def_kln_rec.suppressed_credit,
3536         OVERRIDE_AMOUNT = l_def_kln_rec.override_amount,
3537         CUST_PO_NUMBER_REQ_YN = l_def_kln_rec.cust_po_number_req_yn,
3538         CUST_PO_NUMBER = l_def_kln_rec.cust_po_number,
3539         GRACE_DURATION = l_def_kln_rec.grace_duration,
3540         GRACE_PERIOD = l_def_kln_rec.grace_period,
3541         INV_PRINT_FLAG = l_def_kln_rec.inv_print_flag,
3542         PRICE_UOM = l_def_kln_rec.price_uom,
3543         TAX_AMOUNT = l_def_kln_rec.tax_amount,
3544         TAX_INCLUSIVE_YN = l_def_kln_rec.tax_inclusive_yn,
3545         TAX_STATUS = l_def_kln_rec.tax_status,
3546         TAX_CODE = l_def_kln_rec.tax_code,
3547         TAX_EXEMPTION_ID = l_def_kln_rec.tax_exemption_id,
3548         IB_TRANS_TYPE = l_def_kln_rec.ib_trans_type,
3549         IB_TRANS_DATE = l_def_kln_rec.ib_trans_date,
3550         PROD_PRICE = l_def_kln_rec.prod_price,
3551         SERVICE_PRICE = l_def_kln_rec.service_price,
3552         CLVL_LIST_PRICE = l_def_kln_rec.clvl_list_price,
3553         CLVL_QUANTITY = l_def_kln_rec.clvl_quantity,
3554         CLVL_EXTENDED_AMT = l_def_kln_rec.clvl_extended_amt,
3555         CLVL_UOM_CODE = l_def_kln_rec.clvl_uom_code,
3556         TOPLVL_OPERAND_CODE = l_def_kln_rec.toplvl_operand_code,
3557         TOPLVL_OPERAND_VAL = l_def_kln_rec.toplvl_operand_val,
3558         TOPLVL_QUANTITY = l_def_kln_rec.toplvl_quantity,
3559         TOPLVL_UOM_CODE = l_def_kln_rec.toplvl_uom_code,
3560         TOPLVL_ADJ_PRICE = l_def_kln_rec.toplvl_adj_price,
3561         TOPLVL_PRICE_QTY = l_def_kln_rec.toplvl_price_qty,
3562         AVERAGING_INTERVAL = l_def_kln_rec.averaging_interval,
3563         SETTLEMENT_INTERVAL = l_def_kln_rec.settlement_interval,
3564         MINIMUM_QUANTITY = l_def_kln_rec.minimum_quantity,
3565         DEFAULT_QUANTITY = l_def_kln_rec.default_quantity,
3566         AMCV_FLAG = l_def_kln_rec.amcv_flag,
3567         FIXED_QUANTITY = l_def_kln_rec.fixed_quantity,
3568         USAGE_DURATION = l_def_kln_rec.usage_duration,
3569         USAGE_PERIOD = l_def_kln_rec.usage_period,
3570         LEVEL_YN = l_def_kln_rec.level_yn,
3571         USAGE_TYPE = l_def_kln_rec.usage_type,
3572         UOM_QUANTIFIED = l_def_kln_rec.uom_quantified,
3573         BASE_READING = l_def_kln_rec.base_reading,
3574         BILLING_SCHEDULE_TYPE = l_def_kln_rec.billing_schedule_type,
3575         FULL_CREDIT = l_def_kln_rec.full_credit,
3576         LOCKED_PRICE_LIST_LINE_ID = l_def_kln_rec.locked_price_list_line_id,
3577         BREAK_UOM = l_def_kln_rec.break_uom,
3578         PRORATE = l_def_kln_rec.prorate,
3579         COVERAGE_TYPE = l_def_kln_rec.coverage_type,
3580         EXCEPTION_COV_ID = l_def_kln_rec.exception_cov_id,
3581         LIMIT_UOM_QUANTIFIED = l_def_kln_rec.limit_uom_quantified,
3582         DISCOUNT_AMOUNT = l_def_kln_rec.discount_amount,
3583         DISCOUNT_PERCENT = l_def_kln_rec.discount_percent,
3584         OFFSET_DURATION = l_def_kln_rec.offset_duration,
3585         OFFSET_PERIOD = l_def_kln_rec.offset_period,
3586         INCIDENT_SEVERITY_ID = l_def_kln_rec.incident_severity_id,
3587         PDF_ID = l_def_kln_rec.pdf_id,
3588         WORK_THRU_YN = l_def_kln_rec.work_thru_yn,
3589         REACT_ACTIVE_YN = l_def_kln_rec.react_active_yn,
3590         TRANSFER_OPTION = l_def_kln_rec.transfer_option,
3591         PROD_UPGRADE_YN = l_def_kln_rec.prod_upgrade_yn,
3592         INHERITANCE_TYPE = l_def_kln_rec.inheritance_type,
3593         PM_PROGRAM_ID = l_def_kln_rec.pm_program_id,
3594         PM_CONF_REQ_YN = l_def_kln_rec.pm_conf_req_yn,
3595         PM_SCH_EXISTS_YN = l_def_kln_rec.pm_sch_exists_yn,
3596         ALLOW_BT_DISCOUNT = l_def_kln_rec.allow_bt_discount,
3597         APPLY_DEFAULT_TIMEZONE = l_def_kln_rec.apply_default_timezone,
3598         SYNC_DATE_INSTALL = l_def_kln_rec.sync_date_install,
3599         OBJECT_VERSION_NUMBER = l_def_kln_rec.object_version_number,
3600         REQUEST_ID = l_def_kln_rec.request_id,
3601         CREATED_BY = l_def_kln_rec.created_by,
3602         CREATION_DATE = l_def_kln_rec.creation_date,
3603         LAST_UPDATED_BY = l_def_kln_rec.last_updated_by,
3604         LAST_UPDATE_DATE = l_def_kln_rec.last_update_date,
3605         LAST_UPDATE_LOGIN = l_def_kln_rec.last_update_login,
3606 -- R12 Data Model Changes 4485150 Start
3607         TRXN_EXTENSION_ID = l_def_kln_rec.trxn_extension_id,
3608         TAX_CLASSIFICATION_CODE = l_def_kln_rec.tax_classification_code,
3609         EXEMPT_CERTIFICATE_NUMBER = l_def_kln_rec.exempt_certificate_number,
3610         EXEMPT_REASON_CODE = l_def_kln_rec.exempt_reason_code,
3611         COVERAGE_ID = l_def_kln_rec.coverage_id,
3612         STANDARD_COV_YN = l_def_kln_rec.standard_cov_yn,
3613         ORIG_SYSTEM_ID1 = l_def_kln_rec.orig_system_id1,
3614         ORIG_SYSTEM_REFERENCE1 = l_def_kln_rec.orig_system_reference1,
3615         ORIG_SYSTEM_SOURCE_CODE = l_def_kln_rec.orig_system_source_code
3616 -- R12 Data Model Changes 4485150 End
3617     WHERE ID = l_def_kln_rec.id;
3618 
3619     x_kln_rec := l_kln_rec;
3620     x_return_status := l_return_status;
3621     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
3622   EXCEPTION
3623     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3624       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3625       (
3626         l_api_name,
3627         G_PKG_NAME,
3628         'OKC_API.G_RET_STS_ERROR',
3629         x_msg_count,
3630         x_msg_data,
3631         '_PVT'
3632       );
3633     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3634       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3635       (
3636         l_api_name,
3637         G_PKG_NAME,
3638         'OKC_API.G_RET_STS_UNEXP_ERROR',
3639         x_msg_count,
3640         x_msg_data,
3641         '_PVT'
3642       );
3643     WHEN OTHERS THEN
3644       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3645       (
3646         l_api_name,
3647         G_PKG_NAME,
3648         'OTHERS',
3649         x_msg_count,
3650         x_msg_data,
3651         '_PVT'
3652       );
3653   END update_row;
3654   -----------------------------------
3655   -- update_row for:OKS_K_LINES_TL --
3656   -----------------------------------
3657   PROCEDURE update_row(
3658     p_init_msg_list                IN VARCHAR2,
3659     x_return_status                OUT NOCOPY VARCHAR2,
3660     x_msg_count                    OUT NOCOPY NUMBER,
3661     x_msg_data                     OUT NOCOPY VARCHAR2,
3662     p_klt_rec                      IN klt_rec_type,
3663     x_klt_rec                      OUT NOCOPY klt_rec_type) IS
3664 
3665     l_api_version                  CONSTANT NUMBER := 1;
3666     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_update_row';
3667     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3668     l_klt_rec                      klt_rec_type := p_klt_rec;
3669     l_def_klt_rec                  klt_rec_type;
3670     l_row_notfound                 BOOLEAN := TRUE;
3671     ----------------------------------
3672     -- FUNCTION populate_new_record --
3673     ----------------------------------
3674     FUNCTION populate_new_record (
3675       p_klt_rec IN klt_rec_type,
3676       x_klt_rec OUT NOCOPY klt_rec_type
3677     ) RETURN VARCHAR2 IS
3678       l_klt_rec                      klt_rec_type;
3679       l_row_notfound                 BOOLEAN := TRUE;
3680       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3681     BEGIN
3682       x_klt_rec := p_klt_rec;
3683       -- Get current database values
3684       l_klt_rec := get_rec(p_klt_rec, l_return_status);
3685       IF (l_return_status = OKC_API.G_RET_STS_SUCCESS) THEN
3686         IF (x_klt_rec.id = OKC_API.G_MISS_NUM)
3687         THEN
3688           x_klt_rec.id := l_klt_rec.id;
3689         END IF;
3690         IF (x_klt_rec.language = OKC_API.G_MISS_CHAR)
3691         THEN
3692           x_klt_rec.language := l_klt_rec.language;
3693         END IF;
3694         IF (x_klt_rec.source_lang = OKC_API.G_MISS_CHAR)
3695         THEN
3696           x_klt_rec.source_lang := l_klt_rec.source_lang;
3697         END IF;
3698         IF (x_klt_rec.sfwt_flag = OKC_API.G_MISS_CHAR)
3699         THEN
3700           x_klt_rec.sfwt_flag := l_klt_rec.sfwt_flag;
3701         END IF;
3702         IF (x_klt_rec.invoice_text = OKC_API.G_MISS_CHAR)
3703         THEN
3704           x_klt_rec.invoice_text := l_klt_rec.invoice_text;
3705         END IF;
3706         IF (x_klt_rec.ib_trx_details = OKC_API.G_MISS_CHAR)
3707         THEN
3708           x_klt_rec.ib_trx_details := l_klt_rec.ib_trx_details;
3709         END IF;
3710         IF (x_klt_rec.status_text = OKC_API.G_MISS_CHAR)
3711         THEN
3712           x_klt_rec.status_text := l_klt_rec.status_text;
3713         END IF;
3714         IF (x_klt_rec.react_time_name = OKC_API.G_MISS_CHAR)
3715         THEN
3716           x_klt_rec.react_time_name := l_klt_rec.react_time_name;
3717         END IF;
3718         IF (x_klt_rec.created_by = OKC_API.G_MISS_NUM)
3719         THEN
3720           x_klt_rec.created_by := l_klt_rec.created_by;
3721         END IF;
3722         IF (x_klt_rec.creation_date = OKC_API.G_MISS_DATE)
3723         THEN
3724           x_klt_rec.creation_date := l_klt_rec.creation_date;
3725         END IF;
3726         IF (x_klt_rec.last_updated_by = OKC_API.G_MISS_NUM)
3727         THEN
3728           x_klt_rec.last_updated_by := l_klt_rec.last_updated_by;
3729         END IF;
3730         IF (x_klt_rec.last_update_date = OKC_API.G_MISS_DATE)
3731         THEN
3732           x_klt_rec.last_update_date := l_klt_rec.last_update_date;
3733         END IF;
3734         IF (x_klt_rec.last_update_login = OKC_API.G_MISS_NUM)
3735         THEN
3736           x_klt_rec.last_update_login := l_klt_rec.last_update_login;
3737         END IF;
3738       END IF;
3739       RETURN(l_return_status);
3740     END populate_new_record;
3741     ---------------------------------------
3742     -- Set_Attributes for:OKS_K_LINES_TL --
3743     ---------------------------------------
3744     FUNCTION Set_Attributes (
3745       p_klt_rec IN klt_rec_type,
3746       x_klt_rec OUT NOCOPY klt_rec_type
3747     ) RETURN VARCHAR2 IS
3748       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3749     BEGIN
3750       x_klt_rec := p_klt_rec;
3751       x_klt_rec.LANGUAGE := USERENV('LANG');
3752       x_klt_rec.LANGUAGE := USERENV('LANG');
3753       RETURN(l_return_status);
3754     END Set_Attributes;
3755   BEGIN
3756     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
3757                                               p_init_msg_list,
3758                                               '_PVT',
3759                                               x_return_status);
3760     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3761       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3762     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3763       RAISE OKC_API.G_EXCEPTION_ERROR;
3764     END IF;
3765     --- Setting item attributes
3766     l_return_status := Set_Attributes(
3767       p_klt_rec,                         -- IN
3768       l_klt_rec);                        -- OUT
3769     --- If any errors happen abort API
3770     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3771       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3772     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3773       RAISE OKC_API.G_EXCEPTION_ERROR;
3774     END IF;
3775     l_return_status := populate_new_record(l_klt_rec, l_def_klt_rec);
3776     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3777       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3778     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3779       RAISE OKC_API.G_EXCEPTION_ERROR;
3780     END IF;
3781     UPDATE OKS_K_LINES_TL
3782     SET INVOICE_TEXT = l_def_klt_rec.invoice_text,
3783         IB_TRX_DETAILS = l_def_klt_rec.ib_trx_details,
3784         STATUS_TEXT = l_def_klt_rec.status_text,
3785         REACT_TIME_NAME = l_def_klt_rec.react_time_name,
3786         CREATED_BY = l_def_klt_rec.created_by,
3787         CREATION_DATE = l_def_klt_rec.creation_date,
3788         LAST_UPDATED_BY = l_def_klt_rec.last_updated_by,
3789         LAST_UPDATE_DATE = l_def_klt_rec.last_update_date,
3790         LAST_UPDATE_LOGIN = l_def_klt_rec.last_update_login
3791     WHERE ID = l_def_klt_rec.id
3792       --npalepu modified on 15-FEB-2007 for bug # 5691160
3793       /* AND SOURCE_LANG = USERENV('LANG'); */
3794       AND  USERENV('LANG') IN (SOURCE_LANG,LANGUAGE);
3795       --end 5691160
3796 
3797     UPDATE OKS_K_LINES_TL
3798     SET SFWT_FLAG = 'Y'
3799     WHERE ID = l_def_klt_rec.id
3800       AND SOURCE_LANG <> USERENV('LANG');
3801 
3802     x_klt_rec := l_klt_rec;
3803     x_return_status := l_return_status;
3804     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
3805   EXCEPTION
3806     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3807       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3808       (
3809         l_api_name,
3810         G_PKG_NAME,
3811         'OKC_API.G_RET_STS_ERROR',
3812         x_msg_count,
3813         x_msg_data,
3814         '_PVT'
3815       );
3816     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3817       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3818       (
3819         l_api_name,
3820         G_PKG_NAME,
3821         'OKC_API.G_RET_STS_UNEXP_ERROR',
3822         x_msg_count,
3823         x_msg_data,
3824         '_PVT'
3825       );
3826     WHEN OTHERS THEN
3827       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3828       (
3829         l_api_name,
3830         G_PKG_NAME,
3831         'OTHERS',
3832         x_msg_count,
3833         x_msg_data,
3834         '_PVT'
3835       );
3836   END update_row;
3837   ----------------------------------
3838   -- update_row for:OKS_K_LINES_V --
3839   ----------------------------------
3840   PROCEDURE update_row(
3841     p_api_version                  IN NUMBER,
3842     p_init_msg_list                IN VARCHAR2,
3843     x_return_status                OUT NOCOPY VARCHAR2,
3844     x_msg_count                    OUT NOCOPY NUMBER,
3845     x_msg_data                     OUT NOCOPY VARCHAR2,
3846     p_klnv_rec                     IN klnv_rec_type,
3847     x_klnv_rec                     OUT NOCOPY klnv_rec_type) IS
3848 
3849     l_api_version                  CONSTANT NUMBER := 1;
3850     l_api_name                     CONSTANT VARCHAR2(30) := 'V_update_row';
3851     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3852     l_klnv_rec                     klnv_rec_type := p_klnv_rec;
3853     l_def_klnv_rec                 klnv_rec_type;
3854     l_db_klnv_rec                  klnv_rec_type;
3855     l_kln_rec                      kln_rec_type;
3856     lx_kln_rec                     kln_rec_type;
3857     l_klt_rec                      klt_rec_type;
3858     lx_klt_rec                     klt_rec_type;
3859     -------------------------------
3860     -- FUNCTION fill_who_columns --
3861     -------------------------------
3862     FUNCTION fill_who_columns (
3863       p_klnv_rec IN klnv_rec_type
3864     ) RETURN klnv_rec_type IS
3865       l_klnv_rec klnv_rec_type := p_klnv_rec;
3866     BEGIN
3867       l_klnv_rec.LAST_UPDATE_DATE := SYSDATE;
3868       l_klnv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
3869       l_klnv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
3870       RETURN(l_klnv_rec);
3871     END fill_who_columns;
3872     ----------------------------------
3873     -- FUNCTION populate_new_record --
3874     ----------------------------------
3875     FUNCTION populate_new_record (
3876       p_klnv_rec IN klnv_rec_type,
3877       x_klnv_rec OUT NOCOPY klnv_rec_type
3878     ) RETURN VARCHAR2 IS
3879       l_row_notfound                 BOOLEAN := TRUE;
3880       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3881     BEGIN
3882       x_klnv_rec := p_klnv_rec;
3883       -- Get current database values
3884       -- NOTE: Never assign the OBJECT_VERSION_NUMBER.  Force the user to pass it
3885       --       so it may be verified through LOCK_ROW.
3886       l_db_klnv_rec := get_rec(p_klnv_rec, l_return_status);
3887       IF (l_return_status = OKC_API.G_RET_STS_SUCCESS) THEN
3888         IF (x_klnv_rec.id = OKC_API.G_MISS_NUM)
3889         THEN
3890           x_klnv_rec.id := l_db_klnv_rec.id;
3891         END IF;
3892         IF (x_klnv_rec.cle_id = OKC_API.G_MISS_NUM)
3893         THEN
3894           x_klnv_rec.cle_id := l_db_klnv_rec.cle_id;
3895         END IF;
3896         IF (x_klnv_rec.dnz_chr_id = OKC_API.G_MISS_NUM)
3897         THEN
3898           x_klnv_rec.dnz_chr_id := l_db_klnv_rec.dnz_chr_id;
3899         END IF;
3900         IF (x_klnv_rec.discount_list = OKC_API.G_MISS_NUM)
3901         THEN
3902           x_klnv_rec.discount_list := l_db_klnv_rec.discount_list;
3903         END IF;
3904         IF (x_klnv_rec.acct_rule_id = OKC_API.G_MISS_NUM)
3905         THEN
3906           x_klnv_rec.acct_rule_id := l_db_klnv_rec.acct_rule_id;
3907         END IF;
3908         IF (x_klnv_rec.payment_type = OKC_API.G_MISS_CHAR)
3909         THEN
3910           x_klnv_rec.payment_type := l_db_klnv_rec.payment_type;
3911         END IF;
3912         IF (x_klnv_rec.cc_no = OKC_API.G_MISS_CHAR)
3913         THEN
3914           x_klnv_rec.cc_no := l_db_klnv_rec.cc_no;
3915         END IF;
3916         IF (x_klnv_rec.cc_expiry_date = OKC_API.G_MISS_DATE)
3917         THEN
3918           x_klnv_rec.cc_expiry_date := l_db_klnv_rec.cc_expiry_date;
3919         END IF;
3920         IF (x_klnv_rec.cc_bank_acct_id = OKC_API.G_MISS_NUM)
3921         THEN
3922           x_klnv_rec.cc_bank_acct_id := l_db_klnv_rec.cc_bank_acct_id;
3923         END IF;
3924         IF (x_klnv_rec.cc_auth_code = OKC_API.G_MISS_CHAR)
3925         THEN
3926           x_klnv_rec.cc_auth_code := l_db_klnv_rec.cc_auth_code;
3927         END IF;
3928         IF (x_klnv_rec.commitment_id = OKC_API.G_MISS_NUM)
3929         THEN
3930           x_klnv_rec.commitment_id := l_db_klnv_rec.commitment_id;
3931         END IF;
3932         IF (x_klnv_rec.locked_price_list_id = OKC_API.G_MISS_NUM)
3933         THEN
3934           x_klnv_rec.locked_price_list_id := l_db_klnv_rec.locked_price_list_id;
3935         END IF;
3936         IF (x_klnv_rec.usage_est_yn = OKC_API.G_MISS_CHAR)
3937         THEN
3938           x_klnv_rec.usage_est_yn := l_db_klnv_rec.usage_est_yn;
3939         END IF;
3940         IF (x_klnv_rec.usage_est_method = OKC_API.G_MISS_CHAR)
3941         THEN
3942           x_klnv_rec.usage_est_method := l_db_klnv_rec.usage_est_method;
3943         END IF;
3944         IF (x_klnv_rec.usage_est_start_date = OKC_API.G_MISS_DATE)
3945         THEN
3946           x_klnv_rec.usage_est_start_date := l_db_klnv_rec.usage_est_start_date;
3947         END IF;
3948         IF (x_klnv_rec.termn_method = OKC_API.G_MISS_CHAR)
3949         THEN
3950           x_klnv_rec.termn_method := l_db_klnv_rec.termn_method;
3951         END IF;
3952         IF (x_klnv_rec.ubt_amount = OKC_API.G_MISS_NUM)
3953         THEN
3954           x_klnv_rec.ubt_amount := l_db_klnv_rec.ubt_amount;
3955         END IF;
3956         IF (x_klnv_rec.credit_amount = OKC_API.G_MISS_NUM)
3957         THEN
3958           x_klnv_rec.credit_amount := l_db_klnv_rec.credit_amount;
3959         END IF;
3960         IF (x_klnv_rec.suppressed_credit = OKC_API.G_MISS_NUM)
3961         THEN
3962           x_klnv_rec.suppressed_credit := l_db_klnv_rec.suppressed_credit;
3963         END IF;
3964         IF (x_klnv_rec.override_amount = OKC_API.G_MISS_NUM)
3965         THEN
3966           x_klnv_rec.override_amount := l_db_klnv_rec.override_amount;
3967         END IF;
3968         IF (x_klnv_rec.cust_po_number_req_yn = OKC_API.G_MISS_CHAR)
3969         THEN
3970           x_klnv_rec.cust_po_number_req_yn := l_db_klnv_rec.cust_po_number_req_yn;
3971         END IF;
3972         IF (x_klnv_rec.cust_po_number = OKC_API.G_MISS_CHAR)
3973         THEN
3974           x_klnv_rec.cust_po_number := l_db_klnv_rec.cust_po_number;
3975         END IF;
3976         IF (x_klnv_rec.grace_duration = OKC_API.G_MISS_NUM)
3977         THEN
3978           x_klnv_rec.grace_duration := l_db_klnv_rec.grace_duration;
3979         END IF;
3980         IF (x_klnv_rec.grace_period = OKC_API.G_MISS_CHAR)
3981         THEN
3982           x_klnv_rec.grace_period := l_db_klnv_rec.grace_period;
3983         END IF;
3984         IF (x_klnv_rec.inv_print_flag = OKC_API.G_MISS_CHAR)
3985         THEN
3986           x_klnv_rec.inv_print_flag := l_db_klnv_rec.inv_print_flag;
3987         END IF;
3988         IF (x_klnv_rec.price_uom = OKC_API.G_MISS_CHAR)
3989         THEN
3990           x_klnv_rec.price_uom := l_db_klnv_rec.price_uom;
3991         END IF;
3992         IF (x_klnv_rec.tax_amount = OKC_API.G_MISS_NUM)
3993         THEN
3994           x_klnv_rec.tax_amount := l_db_klnv_rec.tax_amount;
3995         END IF;
3996         IF (x_klnv_rec.tax_inclusive_yn = OKC_API.G_MISS_CHAR)
3997         THEN
3998           x_klnv_rec.tax_inclusive_yn := l_db_klnv_rec.tax_inclusive_yn;
3999         END IF;
4000         IF (x_klnv_rec.tax_status = OKC_API.G_MISS_CHAR)
4001         THEN
4002           x_klnv_rec.tax_status := l_db_klnv_rec.tax_status;
4003         END IF;
4004         IF (x_klnv_rec.tax_code = OKC_API.G_MISS_NUM)
4005         THEN
4006           x_klnv_rec.tax_code := l_db_klnv_rec.tax_code;
4007         END IF;
4008         IF (x_klnv_rec.tax_exemption_id = OKC_API.G_MISS_NUM)
4009         THEN
4010           x_klnv_rec.tax_exemption_id := l_db_klnv_rec.tax_exemption_id;
4011         END IF;
4012         IF (x_klnv_rec.ib_trans_type = OKC_API.G_MISS_CHAR)
4013         THEN
4014           x_klnv_rec.ib_trans_type := l_db_klnv_rec.ib_trans_type;
4015         END IF;
4016         IF (x_klnv_rec.ib_trans_date = OKC_API.G_MISS_DATE)
4017         THEN
4018           x_klnv_rec.ib_trans_date := l_db_klnv_rec.ib_trans_date;
4019         END IF;
4020         IF (x_klnv_rec.prod_price = OKC_API.G_MISS_NUM)
4021         THEN
4022           x_klnv_rec.prod_price := l_db_klnv_rec.prod_price;
4023         END IF;
4024         IF (x_klnv_rec.service_price = OKC_API.G_MISS_NUM)
4025         THEN
4026           x_klnv_rec.service_price := l_db_klnv_rec.service_price;
4027         END IF;
4028         IF (x_klnv_rec.clvl_list_price = OKC_API.G_MISS_NUM)
4029         THEN
4030           x_klnv_rec.clvl_list_price := l_db_klnv_rec.clvl_list_price;
4031         END IF;
4032         IF (x_klnv_rec.clvl_quantity = OKC_API.G_MISS_NUM)
4033         THEN
4034           x_klnv_rec.clvl_quantity := l_db_klnv_rec.clvl_quantity;
4035         END IF;
4036         IF (x_klnv_rec.clvl_extended_amt = OKC_API.G_MISS_NUM)
4037         THEN
4038           x_klnv_rec.clvl_extended_amt := l_db_klnv_rec.clvl_extended_amt;
4039         END IF;
4040         IF (x_klnv_rec.clvl_uom_code = OKC_API.G_MISS_CHAR)
4041         THEN
4042           x_klnv_rec.clvl_uom_code := l_db_klnv_rec.clvl_uom_code;
4043         END IF;
4044         IF (x_klnv_rec.toplvl_operand_code = OKC_API.G_MISS_CHAR)
4045         THEN
4046           x_klnv_rec.toplvl_operand_code := l_db_klnv_rec.toplvl_operand_code;
4047         END IF;
4048         IF (x_klnv_rec.toplvl_operand_val = OKC_API.G_MISS_NUM)
4049         THEN
4050           x_klnv_rec.toplvl_operand_val := l_db_klnv_rec.toplvl_operand_val;
4051         END IF;
4052         IF (x_klnv_rec.toplvl_quantity = OKC_API.G_MISS_NUM)
4053         THEN
4054           x_klnv_rec.toplvl_quantity := l_db_klnv_rec.toplvl_quantity;
4055         END IF;
4056         IF (x_klnv_rec.toplvl_uom_code = OKC_API.G_MISS_CHAR)
4057         THEN
4058           x_klnv_rec.toplvl_uom_code := l_db_klnv_rec.toplvl_uom_code;
4059         END IF;
4060         IF (x_klnv_rec.toplvl_adj_price = OKC_API.G_MISS_NUM)
4061         THEN
4062           x_klnv_rec.toplvl_adj_price := l_db_klnv_rec.toplvl_adj_price;
4063         END IF;
4064         IF (x_klnv_rec.toplvl_price_qty = OKC_API.G_MISS_NUM)
4065         THEN
4066           x_klnv_rec.toplvl_price_qty := l_db_klnv_rec.toplvl_price_qty;
4067         END IF;
4068         IF (x_klnv_rec.averaging_interval = OKC_API.G_MISS_NUM)
4069         THEN
4070           x_klnv_rec.averaging_interval := l_db_klnv_rec.averaging_interval;
4071         END IF;
4072         IF (x_klnv_rec.settlement_interval = OKC_API.G_MISS_CHAR)
4073         THEN
4074           x_klnv_rec.settlement_interval := l_db_klnv_rec.settlement_interval;
4075         END IF;
4076         IF (x_klnv_rec.minimum_quantity = OKC_API.G_MISS_NUM)
4077         THEN
4078           x_klnv_rec.minimum_quantity := l_db_klnv_rec.minimum_quantity;
4079         END IF;
4080         IF (x_klnv_rec.default_quantity = OKC_API.G_MISS_NUM)
4081         THEN
4082           x_klnv_rec.default_quantity := l_db_klnv_rec.default_quantity;
4083         END IF;
4084         IF (x_klnv_rec.amcv_flag = OKC_API.G_MISS_CHAR)
4085         THEN
4086           x_klnv_rec.amcv_flag := l_db_klnv_rec.amcv_flag;
4087         END IF;
4088         IF (x_klnv_rec.fixed_quantity = OKC_API.G_MISS_NUM)
4089         THEN
4090           x_klnv_rec.fixed_quantity := l_db_klnv_rec.fixed_quantity;
4091         END IF;
4092         IF (x_klnv_rec.usage_duration = OKC_API.G_MISS_NUM)
4093         THEN
4094           x_klnv_rec.usage_duration := l_db_klnv_rec.usage_duration;
4095         END IF;
4096         IF (x_klnv_rec.usage_period = OKC_API.G_MISS_CHAR)
4097         THEN
4098           x_klnv_rec.usage_period := l_db_klnv_rec.usage_period;
4099         END IF;
4100         IF (x_klnv_rec.level_yn = OKC_API.G_MISS_CHAR)
4101         THEN
4102           x_klnv_rec.level_yn := l_db_klnv_rec.level_yn;
4103         END IF;
4104         IF (x_klnv_rec.usage_type = OKC_API.G_MISS_CHAR)
4105         THEN
4106           x_klnv_rec.usage_type := l_db_klnv_rec.usage_type;
4107         END IF;
4108         IF (x_klnv_rec.uom_quantified = OKC_API.G_MISS_CHAR)
4109         THEN
4110           x_klnv_rec.uom_quantified := l_db_klnv_rec.uom_quantified;
4111         END IF;
4112         IF (x_klnv_rec.base_reading = OKC_API.G_MISS_NUM)
4113         THEN
4114           x_klnv_rec.base_reading := l_db_klnv_rec.base_reading;
4115         END IF;
4116         IF (x_klnv_rec.billing_schedule_type = OKC_API.G_MISS_CHAR)
4117         THEN
4118           x_klnv_rec.billing_schedule_type := l_db_klnv_rec.billing_schedule_type;
4119         END IF;
4120         IF (x_klnv_rec.full_credit = OKC_API.G_MISS_CHAR)
4121         THEN
4122           x_klnv_rec.full_credit := l_db_klnv_rec.full_credit;
4123         END IF;
4124         IF (x_klnv_rec.locked_price_list_line_id = OKC_API.G_MISS_NUM)
4125         THEN
4126           x_klnv_rec.locked_price_list_line_id := l_db_klnv_rec.locked_price_list_line_id;
4127         END IF;
4128         IF (x_klnv_rec.break_uom = OKC_API.G_MISS_CHAR)
4129         THEN
4130           x_klnv_rec.break_uom := l_db_klnv_rec.break_uom;
4131         END IF;
4132         IF (x_klnv_rec.prorate = OKC_API.G_MISS_CHAR)
4133         THEN
4134           x_klnv_rec.prorate := l_db_klnv_rec.prorate;
4135         END IF;
4136         IF (x_klnv_rec.coverage_type = OKC_API.G_MISS_CHAR)
4137         THEN
4138           x_klnv_rec.coverage_type := l_db_klnv_rec.coverage_type;
4139         END IF;
4140         IF (x_klnv_rec.exception_cov_id = OKC_API.G_MISS_NUM)
4141         THEN
4142           x_klnv_rec.exception_cov_id := l_db_klnv_rec.exception_cov_id;
4143         END IF;
4144         IF (x_klnv_rec.limit_uom_quantified = OKC_API.G_MISS_CHAR)
4145         THEN
4146           x_klnv_rec.limit_uom_quantified := l_db_klnv_rec.limit_uom_quantified;
4147         END IF;
4148         IF (x_klnv_rec.discount_amount = OKC_API.G_MISS_NUM)
4149         THEN
4150           x_klnv_rec.discount_amount := l_db_klnv_rec.discount_amount;
4151         END IF;
4152         IF (x_klnv_rec.discount_percent = OKC_API.G_MISS_NUM)
4153         THEN
4154           x_klnv_rec.discount_percent := l_db_klnv_rec.discount_percent;
4155         END IF;
4156         IF (x_klnv_rec.offset_duration = OKC_API.G_MISS_NUM)
4157         THEN
4158           x_klnv_rec.offset_duration := l_db_klnv_rec.offset_duration;
4159         END IF;
4160         IF (x_klnv_rec.offset_period = OKC_API.G_MISS_CHAR)
4161         THEN
4162           x_klnv_rec.offset_period := l_db_klnv_rec.offset_period;
4163         END IF;
4164         IF (x_klnv_rec.incident_severity_id = OKC_API.G_MISS_NUM)
4165         THEN
4166           x_klnv_rec.incident_severity_id := l_db_klnv_rec.incident_severity_id;
4167         END IF;
4168         IF (x_klnv_rec.pdf_id = OKC_API.G_MISS_NUM)
4169         THEN
4170           x_klnv_rec.pdf_id := l_db_klnv_rec.pdf_id;
4171         END IF;
4172         IF (x_klnv_rec.work_thru_yn = OKC_API.G_MISS_CHAR)
4173         THEN
4174           x_klnv_rec.work_thru_yn := l_db_klnv_rec.work_thru_yn;
4175         END IF;
4176         IF (x_klnv_rec.react_active_yn = OKC_API.G_MISS_CHAR)
4177         THEN
4178           x_klnv_rec.react_active_yn := l_db_klnv_rec.react_active_yn;
4179         END IF;
4180         IF (x_klnv_rec.transfer_option = OKC_API.G_MISS_CHAR)
4181         THEN
4182           x_klnv_rec.transfer_option := l_db_klnv_rec.transfer_option;
4183         END IF;
4184         IF (x_klnv_rec.prod_upgrade_yn = OKC_API.G_MISS_CHAR)
4185         THEN
4186           x_klnv_rec.prod_upgrade_yn := l_db_klnv_rec.prod_upgrade_yn;
4187         END IF;
4188         IF (x_klnv_rec.inheritance_type = OKC_API.G_MISS_CHAR)
4189         THEN
4190           x_klnv_rec.inheritance_type := l_db_klnv_rec.inheritance_type;
4191         END IF;
4192         IF (x_klnv_rec.pm_program_id = OKC_API.G_MISS_NUM)
4193         THEN
4194           x_klnv_rec.pm_program_id := l_db_klnv_rec.pm_program_id;
4195         END IF;
4196         IF (x_klnv_rec.pm_conf_req_yn = OKC_API.G_MISS_CHAR)
4197         THEN
4198           x_klnv_rec.pm_conf_req_yn := l_db_klnv_rec.pm_conf_req_yn;
4199         END IF;
4200         IF (x_klnv_rec.pm_sch_exists_yn = OKC_API.G_MISS_CHAR)
4201         THEN
4202           x_klnv_rec.pm_sch_exists_yn := l_db_klnv_rec.pm_sch_exists_yn;
4203         END IF;
4204         IF (x_klnv_rec.allow_bt_discount = OKC_API.G_MISS_CHAR)
4205         THEN
4206           x_klnv_rec.allow_bt_discount := l_db_klnv_rec.allow_bt_discount;
4207         END IF;
4208         IF (x_klnv_rec.apply_default_timezone = OKC_API.G_MISS_CHAR)
4209         THEN
4210           x_klnv_rec.apply_default_timezone := l_db_klnv_rec.apply_default_timezone;
4211         END IF;
4212         IF (x_klnv_rec.sync_date_install = OKC_API.G_MISS_CHAR)
4213         THEN
4214           x_klnv_rec.sync_date_install := l_db_klnv_rec.sync_date_install;
4215         END IF;
4216         IF (x_klnv_rec.sfwt_flag = OKC_API.G_MISS_CHAR)
4217         THEN
4218           x_klnv_rec.sfwt_flag := l_db_klnv_rec.sfwt_flag;
4219         END IF;
4220         IF (x_klnv_rec.invoice_text = OKC_API.G_MISS_CHAR)
4221         THEN
4222           x_klnv_rec.invoice_text := l_db_klnv_rec.invoice_text;
4223         END IF;
4224         IF (x_klnv_rec.ib_trx_details = OKC_API.G_MISS_CHAR)
4225         THEN
4226           x_klnv_rec.ib_trx_details := l_db_klnv_rec.ib_trx_details;
4227         END IF;
4228         IF (x_klnv_rec.status_text = OKC_API.G_MISS_CHAR)
4229         THEN
4230           x_klnv_rec.status_text := l_db_klnv_rec.status_text;
4231         END IF;
4232         IF (x_klnv_rec.react_time_name = OKC_API.G_MISS_CHAR)
4233         THEN
4234           x_klnv_rec.react_time_name := l_db_klnv_rec.react_time_name;
4235         END IF;
4236         IF (x_klnv_rec.security_group_id = OKC_API.G_MISS_NUM)
4237         THEN
4238           x_klnv_rec.security_group_id := l_db_klnv_rec.security_group_id;
4239         END IF;
4240         IF (x_klnv_rec.request_id = OKC_API.G_MISS_NUM)
4241         THEN
4242           x_klnv_rec.request_id := l_db_klnv_rec.request_id;
4243         END IF;
4244         IF (x_klnv_rec.created_by = OKC_API.G_MISS_NUM)
4245         THEN
4246           x_klnv_rec.created_by := l_db_klnv_rec.created_by;
4247         END IF;
4248         IF (x_klnv_rec.creation_date = OKC_API.G_MISS_DATE)
4249         THEN
4250           x_klnv_rec.creation_date := l_db_klnv_rec.creation_date;
4251         END IF;
4252         IF (x_klnv_rec.last_updated_by = OKC_API.G_MISS_NUM)
4253         THEN
4254           x_klnv_rec.last_updated_by := l_db_klnv_rec.last_updated_by;
4255         END IF;
4256         IF (x_klnv_rec.last_update_date = OKC_API.G_MISS_DATE)
4257         THEN
4258           x_klnv_rec.last_update_date := l_db_klnv_rec.last_update_date;
4259         END IF;
4260         IF (x_klnv_rec.last_update_login = OKC_API.G_MISS_NUM)
4261         THEN
4262           x_klnv_rec.last_update_login := l_db_klnv_rec.last_update_login;
4263         END IF;
4264 -- R12 Data Model Changes 4485150 Start
4265 
4266         IF (x_klnv_rec.trxn_extension_id = OKC_API.G_MISS_NUM)
4267         THEN
4268           x_klnv_rec.trxn_extension_id  := l_db_klnv_rec.trxn_extension_id ;
4269         END IF;
4270         IF (x_klnv_rec.tax_classification_code = OKC_API.G_MISS_CHAR)
4271         THEN
4272           x_klnv_rec.tax_classification_code := l_db_klnv_rec.tax_classification_code;
4273         END IF;
4274         IF (x_klnv_rec.exempt_certificate_number = OKC_API.G_MISS_CHAR)
4275         THEN
4276           x_klnv_rec.exempt_certificate_number := l_db_klnv_rec.exempt_certificate_number;
4277         END IF;
4278         IF (x_klnv_rec.exempt_reason_code = OKC_API.G_MISS_CHAR)
4279         THEN
4280           x_klnv_rec.exempt_reason_code := l_db_klnv_rec.exempt_reason_code;
4281         END IF;
4282 
4283         IF (x_klnv_rec.coverage_id = OKC_API.G_MISS_NUM)
4284         THEN
4285           x_klnv_rec.coverage_id  := l_db_klnv_rec.coverage_id ;
4286         END IF;
4287         IF (x_klnv_rec.standard_cov_yn = OKC_API.G_MISS_CHAR)
4288         THEN
4289           x_klnv_rec.standard_cov_yn := l_db_klnv_rec.standard_cov_yn;
4290         END IF;
4291         IF (x_klnv_rec.orig_system_id1 = OKC_API.G_MISS_NUM)
4292         THEN
4293           x_klnv_rec.orig_system_id1 := l_db_klnv_rec.orig_system_id1;
4294         END IF;
4295         IF (x_klnv_rec.orig_system_reference1 = OKC_API.G_MISS_CHAR)
4296         THEN
4297           x_klnv_rec.orig_system_reference1 := l_db_klnv_rec.orig_system_reference1;
4298         END IF;
4299         IF (x_klnv_rec.orig_system_source_code = OKC_API.G_MISS_CHAR)
4300         THEN
4301           x_klnv_rec.orig_system_source_code := l_db_klnv_rec.orig_system_source_code;
4302         END IF;
4303 -- R12 Data Model Changes 4485150 End
4304 
4305       END IF;
4306       RETURN(l_return_status);
4307     END populate_new_record;
4308     --------------------------------------
4309     -- Set_Attributes for:OKS_K_LINES_V --
4310     --------------------------------------
4311     FUNCTION Set_Attributes (
4312       p_klnv_rec IN klnv_rec_type,
4313       x_klnv_rec OUT NOCOPY klnv_rec_type
4314     ) RETURN VARCHAR2 IS
4315       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4316     BEGIN
4317       x_klnv_rec := p_klnv_rec;
4318       RETURN(l_return_status);
4319     END Set_Attributes;
4320   BEGIN
4321     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4322                                               G_PKG_NAME,
4323                                               p_init_msg_list,
4324                                               l_api_version,
4325                                               p_api_version,
4326                                               '_PVT',
4327                                               x_return_status);
4328     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4329       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4330     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4331       RAISE OKC_API.G_EXCEPTION_ERROR;
4332     END IF;
4333     --- Setting item attributes
4334     l_return_status := Set_Attributes(
4335       p_klnv_rec,                        -- IN
4336       x_klnv_rec);                       -- OUT
4337     --- If any errors happen abort API
4338     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4339       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4340     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4341       RAISE OKC_API.G_EXCEPTION_ERROR;
4342     END IF;
4343     l_return_status := populate_new_record(l_klnv_rec, l_def_klnv_rec);
4344     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4345       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4346     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4347       RAISE OKC_API.G_EXCEPTION_ERROR;
4348     END IF;
4349     l_def_klnv_rec := fill_who_columns(l_def_klnv_rec);
4350     --- Validate all non-missing attributes (Item Level Validation)
4351     l_return_status := Validate_Attributes(l_def_klnv_rec);
4352     --- If any errors happen abort API
4353     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4354       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4355     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4356       RAISE OKC_API.G_EXCEPTION_ERROR;
4357     END IF;
4358     l_return_status := Validate_Record(l_def_klnv_rec, l_db_klnv_rec);
4359     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4360       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4361     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4362       RAISE OKC_API.G_EXCEPTION_ERROR;
4363     END IF;
4364 
4365     -- Lock the Record
4366     lock_row(
4367       p_api_version                  => p_api_version,
4368       p_init_msg_list                => p_init_msg_list,
4369       x_return_status                => l_return_status,
4370       x_msg_count                    => x_msg_count,
4371       x_msg_data                     => x_msg_data,
4372       p_klnv_rec                     => p_klnv_rec);
4373     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4374       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4375     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4376       RAISE OKC_API.G_EXCEPTION_ERROR;
4377     END IF;
4378 
4379     -----------------------------------------
4380     -- Move VIEW record to "Child" records --
4381     -----------------------------------------
4382     migrate(l_def_klnv_rec, l_kln_rec);
4383     migrate(l_def_klnv_rec, l_klt_rec);
4384     -----------------------------------------------
4385     -- Call the UPDATE_ROW for each child record --
4386     -----------------------------------------------
4387     update_row(
4388       p_init_msg_list,
4389       l_return_status,
4390       x_msg_count,
4391       x_msg_data,
4392       l_kln_rec,
4393       lx_kln_rec
4394     );
4395     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4396       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4397     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4398       RAISE OKC_API.G_EXCEPTION_ERROR;
4399     END IF;
4400     migrate(lx_kln_rec, l_def_klnv_rec);
4401     update_row(
4402       p_init_msg_list,
4403       l_return_status,
4404       x_msg_count,
4405       x_msg_data,
4406       l_klt_rec,
4407       lx_klt_rec
4408     );
4409     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4410       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4411     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4412       RAISE OKC_API.G_EXCEPTION_ERROR;
4413     END IF;
4414     migrate(lx_klt_rec, l_def_klnv_rec);
4415     x_klnv_rec := l_def_klnv_rec;
4416     x_return_status := l_return_status;
4417     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4418   EXCEPTION
4419     WHEN OKC_API.G_EXCEPTION_ERROR THEN
4420       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4421       (
4422         l_api_name,
4423         G_PKG_NAME,
4424         'OKC_API.G_RET_STS_ERROR',
4425         x_msg_count,
4426         x_msg_data,
4427         '_PVT'
4428       );
4429     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4430       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4431       (
4432         l_api_name,
4433         G_PKG_NAME,
4434         'OKC_API.G_RET_STS_UNEXP_ERROR',
4435         x_msg_count,
4436         x_msg_data,
4437         '_PVT'
4438       );
4439     WHEN OTHERS THEN
4440       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4441       (
4442         l_api_name,
4443         G_PKG_NAME,
4444         'OTHERS',
4445         x_msg_count,
4446         x_msg_data,
4447         '_PVT'
4448       );
4449   END update_row;
4450   ----------------------------------------
4451   -- PL/SQL TBL update_row for:klnv_tbl --
4452   ----------------------------------------
4453   PROCEDURE update_row(
4454     p_api_version                  IN NUMBER,
4455     p_init_msg_list                IN VARCHAR2,
4456     x_return_status                OUT NOCOPY VARCHAR2,
4457     x_msg_count                    OUT NOCOPY NUMBER,
4458     x_msg_data                     OUT NOCOPY VARCHAR2,
4459     p_klnv_tbl                     IN klnv_tbl_type,
4460     x_klnv_tbl                     OUT NOCOPY klnv_tbl_type,
4461     px_error_tbl                   IN OUT NOCOPY OKC_API.ERROR_TBL_TYPE) IS
4462 
4463     l_api_version                  CONSTANT NUMBER := 1;
4464     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_update_row';
4465     i                              NUMBER := 0;
4466   BEGIN
4467     OKC_API.init_msg_list(p_init_msg_list);
4468     -- Make sure PL/SQL table has records in it before passing
4469     IF (p_klnv_tbl.COUNT > 0) THEN
4470       i := p_klnv_tbl.FIRST;
4471       LOOP
4472         DECLARE
4473           l_error_rec         OKC_API.ERROR_REC_TYPE;
4474         BEGIN
4475           l_error_rec.api_name := l_api_name;
4476           l_error_rec.api_package := G_PKG_NAME;
4477           l_error_rec.idx := i;
4478           update_row (
4479             p_api_version                  => p_api_version,
4480             p_init_msg_list                => OKC_API.G_FALSE,
4481             x_return_status                => l_error_rec.error_type,
4482             x_msg_count                    => l_error_rec.msg_count,
4483             x_msg_data                     => l_error_rec.msg_data,
4484             p_klnv_rec                     => p_klnv_tbl(i),
4485             x_klnv_rec                     => x_klnv_tbl(i));
4486           IF (l_error_rec.error_type <> OKC_API.G_RET_STS_SUCCESS) THEN
4487             l_error_rec.sqlcode := SQLCODE;
4488             load_error_tbl(l_error_rec, px_error_tbl);
4489           ELSE
4490             x_msg_count := l_error_rec.msg_count;
4491             x_msg_data := l_error_rec.msg_data;
4492           END IF;
4493         EXCEPTION
4494           WHEN OKC_API.G_EXCEPTION_ERROR THEN
4495             l_error_rec.error_type := OKC_API.G_RET_STS_ERROR;
4496             l_error_rec.sqlcode := SQLCODE;
4497             load_error_tbl(l_error_rec, px_error_tbl);
4498           WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4499             l_error_rec.error_type := OKC_API.G_RET_STS_UNEXP_ERROR;
4500             l_error_rec.sqlcode := SQLCODE;
4501             load_error_tbl(l_error_rec, px_error_tbl);
4502           WHEN OTHERS THEN
4503             l_error_rec.error_type := 'OTHERS';
4504             l_error_rec.sqlcode := SQLCODE;
4505             load_error_tbl(l_error_rec, px_error_tbl);
4506         END;
4507         EXIT WHEN (i = p_klnv_tbl.LAST);
4508         i := p_klnv_tbl.NEXT(i);
4509       END LOOP;
4510     END IF;
4511     -- Loop through the error_tbl to find the error with the highest severity
4512     -- and return it.
4513     x_return_status := find_highest_exception(px_error_tbl);
4514     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4515   EXCEPTION
4516     WHEN OKC_API.G_EXCEPTION_ERROR THEN
4517       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4518       (
4519         l_api_name,
4520         G_PKG_NAME,
4521         'OKC_API.G_RET_STS_ERROR',
4522         x_msg_count,
4523         x_msg_data,
4524         '_PVT'
4525       );
4526     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4527       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4528       (
4529         l_api_name,
4530         G_PKG_NAME,
4531         'OKC_API.G_RET_STS_UNEXP_ERROR',
4532         x_msg_count,
4533         x_msg_data,
4534         '_PVT'
4535       );
4536     WHEN OTHERS THEN
4537       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4538       (
4539         l_api_name,
4540         G_PKG_NAME,
4541         'OTHERS',
4542         x_msg_count,
4543         x_msg_data,
4544         '_PVT'
4545       );
4546   END update_row;
4547 
4548   ----------------------------------------
4549   -- PL/SQL TBL update_row for:KLNV_TBL --
4550   ----------------------------------------
4551   -- This procedure is the same as the one above except it does not have a "px_error_tbl" argument.
4552   -- This procedure was create for backward compatibility and simply is a wrapper for the one above.
4553   PROCEDURE update_row(
4554     p_api_version                  IN NUMBER,
4555     p_init_msg_list                IN VARCHAR2,
4556     x_return_status                OUT NOCOPY VARCHAR2,
4557     x_msg_count                    OUT NOCOPY NUMBER,
4558     x_msg_data                     OUT NOCOPY VARCHAR2,
4559     p_klnv_tbl                     IN klnv_tbl_type,
4560     x_klnv_tbl                     OUT NOCOPY klnv_tbl_type) IS
4561 
4562     l_api_version                  CONSTANT NUMBER := 1;
4563     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_update_row';
4564     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4565     l_error_tbl                    OKC_API.ERROR_TBL_TYPE;
4566   BEGIN
4567     OKC_API.init_msg_list(p_init_msg_list);
4568     -- Make sure PL/SQL table has records in it before passing
4569     IF (p_klnv_tbl.COUNT > 0) THEN
4570       update_row (
4571         p_api_version                  => p_api_version,
4572         p_init_msg_list                => OKC_API.G_FALSE,
4573         x_return_status                => x_return_status,
4574         x_msg_count                    => x_msg_count,
4575         x_msg_data                     => x_msg_data,
4576         p_klnv_tbl                     => p_klnv_tbl,
4577         x_klnv_tbl                     => x_klnv_tbl,
4578         px_error_tbl                   => l_error_tbl);
4579     END IF;
4580     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4581   EXCEPTION
4582     WHEN OKC_API.G_EXCEPTION_ERROR THEN
4583       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4584       (
4585         l_api_name,
4586         G_PKG_NAME,
4587         'OKC_API.G_RET_STS_ERROR',
4588         x_msg_count,
4589         x_msg_data,
4590         '_PVT'
4591       );
4592     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4593       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4594       (
4595         l_api_name,
4596         G_PKG_NAME,
4597         'OKC_API.G_RET_STS_UNEXP_ERROR',
4598         x_msg_count,
4599         x_msg_data,
4600         '_PVT'
4601       );
4602     WHEN OTHERS THEN
4603       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4604       (
4605         l_api_name,
4606         G_PKG_NAME,
4607         'OTHERS',
4608         x_msg_count,
4609         x_msg_data,
4610         '_PVT'
4611       );
4612   END update_row;
4613 
4614   ---------------------------------------------------------------------------
4615   -- PROCEDURE delete_row
4616   ---------------------------------------------------------------------------
4617   ----------------------------------
4618   -- delete_row for:OKS_K_LINES_B --
4619   ----------------------------------
4620   PROCEDURE delete_row(
4621     p_init_msg_list                IN VARCHAR2,
4622     x_return_status                OUT NOCOPY VARCHAR2,
4623     x_msg_count                    OUT NOCOPY NUMBER,
4624     x_msg_data                     OUT NOCOPY VARCHAR2,
4625     p_kln_rec                      IN kln_rec_type) IS
4626 
4627     l_api_version                  CONSTANT NUMBER := 1;
4628     l_api_name                     CONSTANT VARCHAR2(30) := 'B_delete_row';
4629     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4630     l_kln_rec                      kln_rec_type := p_kln_rec;
4631     l_row_notfound                 BOOLEAN := TRUE;
4632   BEGIN
4633     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4634                                               p_init_msg_list,
4635                                               '_PVT',
4636                                               x_return_status);
4637     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4638       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4639     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4640       RAISE OKC_API.G_EXCEPTION_ERROR;
4641     END IF;
4642 
4643     DELETE FROM OKS_K_LINES_B
4644      WHERE ID = p_kln_rec.id;
4645 
4646     x_return_status := l_return_status;
4647     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4648   EXCEPTION
4649     WHEN OKC_API.G_EXCEPTION_ERROR THEN
4650       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4651       (
4652         l_api_name,
4653         G_PKG_NAME,
4654         'OKC_API.G_RET_STS_ERROR',
4655         x_msg_count,
4656         x_msg_data,
4657         '_PVT'
4658       );
4659     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4660       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4661       (
4662         l_api_name,
4663         G_PKG_NAME,
4664         'OKC_API.G_RET_STS_UNEXP_ERROR',
4665         x_msg_count,
4666         x_msg_data,
4667         '_PVT'
4668       );
4669     WHEN OTHERS THEN
4670       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4671       (
4672         l_api_name,
4673         G_PKG_NAME,
4674         'OTHERS',
4675         x_msg_count,
4676         x_msg_data,
4677         '_PVT'
4678       );
4679   END delete_row;
4680   -----------------------------------
4681   -- delete_row for:OKS_K_LINES_TL --
4682   -----------------------------------
4683   PROCEDURE delete_row(
4684     p_init_msg_list                IN VARCHAR2,
4685     x_return_status                OUT NOCOPY VARCHAR2,
4686     x_msg_count                    OUT NOCOPY NUMBER,
4687     x_msg_data                     OUT NOCOPY VARCHAR2,
4688     p_klt_rec                      IN klt_rec_type) IS
4689 
4690     l_api_version                  CONSTANT NUMBER := 1;
4691     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_delete_row';
4692     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4693     l_klt_rec                      klt_rec_type := p_klt_rec;
4694     l_row_notfound                 BOOLEAN := TRUE;
4695   BEGIN
4696     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4697                                               p_init_msg_list,
4698                                               '_PVT',
4699                                               x_return_status);
4700     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4701       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4702     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4703       RAISE OKC_API.G_EXCEPTION_ERROR;
4704     END IF;
4705 
4706     DELETE FROM OKS_K_LINES_TL
4707      WHERE ID = p_klt_rec.id;
4708 
4709     x_return_status := l_return_status;
4710     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4711   EXCEPTION
4712     WHEN OKC_API.G_EXCEPTION_ERROR THEN
4713       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4714       (
4715         l_api_name,
4716         G_PKG_NAME,
4717         'OKC_API.G_RET_STS_ERROR',
4718         x_msg_count,
4719         x_msg_data,
4720         '_PVT'
4721       );
4722     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4723       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4724       (
4725         l_api_name,
4726         G_PKG_NAME,
4727         'OKC_API.G_RET_STS_UNEXP_ERROR',
4728         x_msg_count,
4729         x_msg_data,
4730         '_PVT'
4731       );
4732     WHEN OTHERS THEN
4733       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4734       (
4735         l_api_name,
4736         G_PKG_NAME,
4737         'OTHERS',
4738         x_msg_count,
4739         x_msg_data,
4740         '_PVT'
4741       );
4742   END delete_row;
4743   ----------------------------------
4744   -- delete_row for:OKS_K_LINES_V --
4745   ----------------------------------
4746   PROCEDURE delete_row(
4747     p_api_version                  IN NUMBER,
4748     p_init_msg_list                IN VARCHAR2,
4749     x_return_status                OUT NOCOPY VARCHAR2,
4750     x_msg_count                    OUT NOCOPY NUMBER,
4751     x_msg_data                     OUT NOCOPY VARCHAR2,
4752     p_klnv_rec                     IN klnv_rec_type) IS
4753 
4754     l_api_version                  CONSTANT NUMBER := 1;
4755     l_api_name                     CONSTANT VARCHAR2(30) := 'V_delete_row';
4756     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4757     l_klnv_rec                     klnv_rec_type := p_klnv_rec;
4758     l_klt_rec                      klt_rec_type;
4759     l_kln_rec                      kln_rec_type;
4760   BEGIN
4761     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4762                                               G_PKG_NAME,
4763                                               p_init_msg_list,
4764                                               l_api_version,
4765                                               p_api_version,
4766                                               '_PVT',
4767                                               x_return_status);
4768     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4769       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4770     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4771       RAISE OKC_API.G_EXCEPTION_ERROR;
4772     END IF;
4773     -----------------------------------------
4774     -- Move VIEW record to "Child" records --
4775     -----------------------------------------
4776     migrate(l_klnv_rec, l_klt_rec);
4777     migrate(l_klnv_rec, l_kln_rec);
4778     -----------------------------------------------
4779     -- Call the DELETE_ROW for each child record --
4780     -----------------------------------------------
4781     delete_row(
4782       p_init_msg_list,
4783       l_return_status,
4784       x_msg_count,
4785       x_msg_data,
4786       l_klt_rec
4787     );
4788     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4789       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4790     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4791       RAISE OKC_API.G_EXCEPTION_ERROR;
4792     END IF;
4793     delete_row(
4794       p_init_msg_list,
4795       l_return_status,
4796       x_msg_count,
4797       x_msg_data,
4798       l_kln_rec
4799     );
4800     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4801       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4802     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4803       RAISE OKC_API.G_EXCEPTION_ERROR;
4804     END IF;
4805     x_return_status := l_return_status;
4806     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4807   EXCEPTION
4808     WHEN OKC_API.G_EXCEPTION_ERROR THEN
4809       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4810       (
4811         l_api_name,
4812         G_PKG_NAME,
4813         'OKC_API.G_RET_STS_ERROR',
4814         x_msg_count,
4815         x_msg_data,
4816         '_PVT'
4817       );
4818     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4819       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4820       (
4821         l_api_name,
4822         G_PKG_NAME,
4823         'OKC_API.G_RET_STS_UNEXP_ERROR',
4824         x_msg_count,
4825         x_msg_data,
4826         '_PVT'
4827       );
4828     WHEN OTHERS THEN
4829       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4830       (
4831         l_api_name,
4832         G_PKG_NAME,
4833         'OTHERS',
4834         x_msg_count,
4835         x_msg_data,
4836         '_PVT'
4837       );
4838   END delete_row;
4839   ---------------------------------------------
4840   -- PL/SQL TBL delete_row for:OKS_K_LINES_V --
4841   ---------------------------------------------
4842   PROCEDURE delete_row(
4843     p_api_version                  IN NUMBER,
4844     p_init_msg_list                IN VARCHAR2,
4845     x_return_status                OUT NOCOPY VARCHAR2,
4846     x_msg_count                    OUT NOCOPY NUMBER,
4847     x_msg_data                     OUT NOCOPY VARCHAR2,
4848     p_klnv_tbl                     IN klnv_tbl_type,
4849     px_error_tbl                   IN OUT NOCOPY OKC_API.ERROR_TBL_TYPE) IS
4850 
4851     l_api_version                  CONSTANT NUMBER := 1;
4852     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_delete_row';
4853     i                              NUMBER := 0;
4854   BEGIN
4855     OKC_API.init_msg_list(p_init_msg_list);
4856     -- Make sure PL/SQL table has records in it before passing
4857     IF (p_klnv_tbl.COUNT > 0) THEN
4858       i := p_klnv_tbl.FIRST;
4859       LOOP
4860         DECLARE
4861           l_error_rec         OKC_API.ERROR_REC_TYPE;
4862         BEGIN
4863           l_error_rec.api_name := l_api_name;
4864           l_error_rec.api_package := G_PKG_NAME;
4865           l_error_rec.idx := i;
4866           delete_row (
4867             p_api_version                  => p_api_version,
4868             p_init_msg_list                => OKC_API.G_FALSE,
4869             x_return_status                => l_error_rec.error_type,
4870             x_msg_count                    => l_error_rec.msg_count,
4871             x_msg_data                     => l_error_rec.msg_data,
4872             p_klnv_rec                     => p_klnv_tbl(i));
4873           IF (l_error_rec.error_type <> OKC_API.G_RET_STS_SUCCESS) THEN
4874             l_error_rec.sqlcode := SQLCODE;
4875             load_error_tbl(l_error_rec, px_error_tbl);
4876           ELSE
4877             x_msg_count := l_error_rec.msg_count;
4878             x_msg_data := l_error_rec.msg_data;
4879           END IF;
4880         EXCEPTION
4881           WHEN OKC_API.G_EXCEPTION_ERROR THEN
4882             l_error_rec.error_type := OKC_API.G_RET_STS_ERROR;
4883             l_error_rec.sqlcode := SQLCODE;
4884             load_error_tbl(l_error_rec, px_error_tbl);
4885           WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4886             l_error_rec.error_type := OKC_API.G_RET_STS_UNEXP_ERROR;
4887             l_error_rec.sqlcode := SQLCODE;
4888             load_error_tbl(l_error_rec, px_error_tbl);
4889           WHEN OTHERS THEN
4890             l_error_rec.error_type := 'OTHERS';
4891             l_error_rec.sqlcode := SQLCODE;
4892             load_error_tbl(l_error_rec, px_error_tbl);
4893         END;
4894         EXIT WHEN (i = p_klnv_tbl.LAST);
4895         i := p_klnv_tbl.NEXT(i);
4896       END LOOP;
4897     END IF;
4898     -- Loop through the error_tbl to find the error with the highest severity
4899     -- and return it.
4900     x_return_status := find_highest_exception(px_error_tbl);
4901     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4902   EXCEPTION
4903     WHEN OKC_API.G_EXCEPTION_ERROR THEN
4904       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4905       (
4906         l_api_name,
4907         G_PKG_NAME,
4908         'OKC_API.G_RET_STS_ERROR',
4909         x_msg_count,
4910         x_msg_data,
4911         '_PVT'
4912       );
4913     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4914       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4915       (
4916         l_api_name,
4917         G_PKG_NAME,
4918         'OKC_API.G_RET_STS_UNEXP_ERROR',
4919         x_msg_count,
4920         x_msg_data,
4921         '_PVT'
4922       );
4923     WHEN OTHERS THEN
4924       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4925       (
4926         l_api_name,
4927         G_PKG_NAME,
4928         'OTHERS',
4929         x_msg_count,
4930         x_msg_data,
4931         '_PVT'
4932       );
4933   END delete_row;
4934 
4935   ---------------------------------------------
4936   -- PL/SQL TBL delete_row for:OKS_K_LINES_V --
4937   ---------------------------------------------
4938   PROCEDURE delete_row(
4939     p_api_version                  IN NUMBER,
4940     p_init_msg_list                IN VARCHAR2,
4941     x_return_status                OUT NOCOPY VARCHAR2,
4942     x_msg_count                    OUT NOCOPY NUMBER,
4943     x_msg_data                     OUT NOCOPY VARCHAR2,
4944     p_klnv_tbl                     IN klnv_tbl_type) IS
4945 
4946     l_api_version                  CONSTANT NUMBER := 1;
4947     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_delete_row';
4948     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4949     l_error_tbl                    OKC_API.ERROR_TBL_TYPE;
4950   BEGIN
4951     OKC_API.init_msg_list(p_init_msg_list);
4952     -- Make sure PL/SQL table has records in it before passing
4953     IF (p_klnv_tbl.COUNT > 0) THEN
4954       delete_row (
4955         p_api_version                  => p_api_version,
4956         p_init_msg_list                => OKC_API.G_FALSE,
4957         x_return_status                => x_return_status,
4958         x_msg_count                    => x_msg_count,
4959         x_msg_data                     => x_msg_data,
4960         p_klnv_tbl                     => p_klnv_tbl,
4961         px_error_tbl                   => l_error_tbl);
4962     END IF;
4963     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4964   EXCEPTION
4965     WHEN OKC_API.G_EXCEPTION_ERROR THEN
4966       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4967       (
4968         l_api_name,
4969         G_PKG_NAME,
4970         'OKC_API.G_RET_STS_ERROR',
4971         x_msg_count,
4972         x_msg_data,
4973         '_PVT'
4974       );
4975     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4976       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4977       (
4978         l_api_name,
4979         G_PKG_NAME,
4980         'OKC_API.G_RET_STS_UNEXP_ERROR',
4981         x_msg_count,
4982         x_msg_data,
4983         '_PVT'
4984       );
4985     WHEN OTHERS THEN
4986       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4987       (
4988         l_api_name,
4989         G_PKG_NAME,
4990         'OTHERS',
4991         x_msg_count,
4992         x_msg_data,
4993         '_PVT'
4994       );
4995   END delete_row;
4996 
4997 END OKS_KLN_PVT;