DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKS_KLN_PVT

Source


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