DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_OPEN_INTERFACE_PVT

Source


1 PACKAGE BODY OKL_OPEN_INTERFACE_PVT AS
2 /* $Header: OKLRKOIB.pls 120.109.12020000.4 2013/03/07 05:19:54 racheruv ship $*/
3 
4   SUBTYPE krpv_rec_type IS OKL_KRP_PVT.krpv_rec_type;
5   SUBTYPE krpv_tbl_type IS OKL_KRP_PVT.krpv_tbl_type;
6 
7   -- GLOBAL VARIABLES
8 
9 
10   g_customer_account_id NUMBER; -- only populated from populate_header_rec()
11   g_customer_id         NUMBER; -- only populated from populate_header_rec()
12   g_bill_to_address_id  NUMBER; -- only populated from populate_header_rec()
13   g_release_asset_flag  VARCHAR2(1); -- only updated at load_input_record()
14   g_instance_number  VARCHAR2(30); -- Parallel submission instance number
15   g_qcl_id              NUMBER;
16   G_FA_LINE_LTY_ID      OKC_LINE_STYLES_V.ID%TYPE := 42;
17   G_FIN_LINE_LTY_ID     OKC_LINE_STYLES_V.ID%TYPE := 33;
18 
19   G_BULK_BATCH_SIZE NUMBER := 10000;
20   G_PKG_NAME                 CONSTANT VARCHAR2(200) := 'OKL_OPEN_INTERFACE_PVT';
21   G_APP_NAME                 CONSTANT VARCHAR2(3)   :=  OKL_API.G_APP_NAME;
22 
23   G_API_TYPE                 CONSTANT VARCHAR2(4)   := '_PVT';
24   G_UNEXPECTED_ERROR         CONSTANT VARCHAR2(1000) := 'OKL_UNEXPECTED_ERROR';
25   G_MISSING_VALUE            CONSTANT VARCHAR2(1000) := 'OKL_MISSING_VALUE';
26   G_INVALID_VALUE            CONSTANT VARCHAR2(1000) := 'OKL_LLA_INVALID_IMPORT_VALUE';
27   G_VALIDATION_FAILED        CONSTANT VARCHAR2(1000) := 'OKL_VALIDATION_FAILED';
28 
29   G_NULL_CONTRACT            CONSTANT VARCHAr2(1000) := 'OKL_NULL_CONTRACT';
30   G_DUP_VALUE                CONSTANT VARCHAr2(1000) := 'OKL_DUP_VALUE';
31   G_LITERAL_MISMATCH         CONSTANT VARCHAr2(1000) := 'OKL_LITERAL_MISTMATCH';
32   G_PARTY_ROLE_LINE_ERROR    CONSTANT VARCHAR2(1000) := 'OKL_PARTY_ROLE_LINE_ERROR';
33   G_TERM_LINE_ERROR          CONSTANT VARCHAR2(1000) := 'OKL_TERM_LINE_ERROR';
34   G_TERM_NO_LINE_NUMBER      CONSTANT VARCHAR2(1000) := 'OKL_TERM_NO_LINE_NUMBER';
35   G_PAYMENT_NO_LINE_NUMBER   CONSTANT VARCHAR2(1000) := 'OKL_PAYMENT_NO_LINE_NUMBER';
36   G_PAYMENT_LINE_ERROR       CONSTANT VARCHAR2(1000) := 'OKL_PAYMENT_LINE_ERROR';
37 
38   G_INVALID_CONTRACT         CONSTANT VARCHAR2(1000) := 'OKL_INVALID_CONTRACT';
39   G_GUARANTOR_SETUP_ERROR    CONSTANT VARCHAR2(1000) := 'OKL_GUARANTOR_SETUP_ERROR';
40   G_INVALID_LTY_CODE         CONSTANT VARCHAR2(1000) := 'OKL_INVALID_LTY_CODE';
41   G_INVALID_COMBINATION      CONSTANT VARCHAR2(1000) := 'OKL_INVALID_FLEX_COMB';
42   G_PAYMENT_SCHD_ERROR       CONSTANT VARCHAR2(1000) := 'OKL_PAYMENT_SCHD_ERROR';
43   G_UOM_SETUP_ERROR          CONSTANT VARCHAR2(1000) := 'OKL_UOM_SETUP_ERROR';
44   G_PAYMENT_START_DATE_ERROR CONSTANT VARCHAR2(1000) := 'OKL_PAYMENT_START_DATE_ERROR';
45   G_MISSING_VALUE_FOR_STAGE  CONSTANT VARCHAR2(1000) := 'OKL_MISSING_VALUE_FOR_STAGE';
46   G_MISSING_VALUE_FOR_LINE   CONSTANT VARCHAR2(1000) := 'OKL_MISSING_VALUE_FOR_LINE';
47   G_MISSING_VALUE_STAGE_LINE CONSTANT VARCHAR2(1000) := 'OKL_MISSING_VALUE_STAGE_LINE';
48   G_FIN_ASSET_ERROR          CONSTANT VARCHAR2(1000) := 'OKL_FIN_ASSET_ERROR';
49   G_LABEL_SETUP_ERROR        CONSTANT VARCHAR2(1000) := 'OKL_LABEL_SETUP_ERROR';
50   --G_INVALID_USAGE_ITEM_ASSOC CONSTANT VARCHAR2(1000) := 'OKL_LLA_INVALID_USAGE_ITEM_ASSOC';
51   G_INVALID_USAGE_ITEM_ASSOC CONSTANT VARCHAR2(1000) := 'OKL_LLA_INVALID_USG_ITEM_ASSOC';
52   G_NULL_PARAMETER           CONSTANT VARCHAR2(1000) := 'OKL_NULL_INTF_PARAM';
53   G_INVALID_PARAMETER        CONSTANT VARCHAR2(1000) := 'OKL_INVALID_PARAM';
54   G_OKL_TXD_ID               CONSTANT VARCHAR2(1000) := 'OKL_LLA_TXD_ID';
55   G_DATESIGNED_LT_START      CONSTANT VARCHAR2(1000) := 'OKL_QA_DATESIGNED_LT_START';
56   G_INVALID_TEMPLATE         CONSTANT VARCHAR2(1000) := 'OKL_LLA_INVALID_TEMPLATE';
57   G_BILL_VENDOR_INVALID      CONSTANT VARCHAR2(1000) := 'OKL_LLA_BILL_VENDOR_INVALID';
58   G_UNSUPPORTED_VALUE        CONSTANT VARCHAR2(1000) := 'OKL_LLA_UNSUPPORTED_USAGE';
59   G_QA_USAGE_CHECK           CONSTANT VARCHAR2(1000) := 'OKL_QA_USAGE_CHECK';
60   G_QA_FIXED_USAGE           CONSTANT VARCHAR2(1000) := 'OKL_QA_FIXED_USAGE';
61   G_INIT_DIRC_COST           CONSTANT VARCHAR2(1000) := 'OKL_LLA_INIT_DIRECT_COST';
62   G_STUB_PMNT_BOTH           CONSTANT VARCHAR2(1000) := 'OKL_LLA_STUB_PMNT_BOTH';
63   G_DUP_TAX_BOOK             CONSTANT VARCHAR2(1000) := 'OKL_LLA_DUP_TAX_BOOK';
64   G_MIXED_ASSET              CONSTANT VARCHAR2(1000) := 'OKL_LLA_MIXED_ASSET';
65   G_VALUE_NOT_ALLOWED        CONSTANT VARCHAR2(1000) := 'OKL_TERM_VALUE_NOT_ALLOWED';
66   G_NO_STRM_TMPL             CONSTANT VARCHAR2(1000) := 'OKL_NO_STRM_TMPL';
67   G_INVALID_NEW_LINE_REQ     CONSTANT VARCHAR2(1000) := 'OKL_INVALID_NEW_LINE_REQ';
68   --Bug# 16344245
69   G_LINE_VALUE_NOT_ALLOWED    CONSTANT VARCHAR2(1000) := 'OKL_LINE_VALUE_NOT_ALLOWED';
70   G_MULTIPLE_LEGACY_BAL_DATE  CONSTANT VARCHAR2(1000)	 := 'OKL_MULTIPLE_LEGACY_BAL_DATE';
71 
72 -- start cklee 02/13/2004 bug# 3440442
73 -- 3rd party insurance
74   G_INSURER                       CONSTANT VARCHAR2(80) := 'INSURER';
75   G_INSURANCE_AGENT               CONSTANT VARCHAR2(80) := 'INSURANCE_AGENT';
76 
77 --   OKX_INSURER_V
78   G_INSURANCE_COMPANY_NAME        CONSTANT VARCHAR2(80) := 'INSURANCE_COMPANY_NAME';
79   G_INSURANCE_COMPANY_NUMBER      CONSTANT VARCHAR2(80) := 'INSURANCE_COMPANY_NUMBER';
80   G_INSURANCE_COMPANY_ID          CONSTANT VARCHAR2(80) := 'INSURANCE_COMPANY_ID';
81   G_INSURANCE_COMPANY_SITE_NAME   CONSTANT VARCHAR2(80) := 'INSURANCE_COMPANY_SITE_NAME';
82   G_INSURANCE_COMPANY_SITE_NUM    CONSTANT VARCHAR2(80) := 'INSURANCE_COMPANY_SITE_NUMBER';
83   G_INSURANCE_COMPANY_SITE_ID     CONSTANT VARCHAR2(80) := 'INSURANCE_COMPANY_SITE_ID';
84 --  OKX_INSURANCE_AGENT_V
85   G_AGENT_NAME                    CONSTANT VARCHAR2(80) := 'AGENT_NAME';
86   G_AGENT_NUMBER                  CONSTANT VARCHAR2(80) := 'AGENT_NUMBER';
87   G_AGENT_ID                      CONSTANT VARCHAR2(80) := 'AGENT_ID';
88   G_AGENT_ADDRESS_SITE_NAME       CONSTANT VARCHAR2(80) := 'AGENT_ADDRESS_SITE_NAME';
89   G_AGENT_ADDRESS_SITE_NUMBER     CONSTANT VARCHAR2(80) := 'AGENT_ADDRESS_SITE_NUMBER';
90   G_AGENT_ADDRESS_SITE_ID         CONSTANT VARCHAR2(80) := 'AGENT_ADDRESS_SITE_ID';
91 
92   G_DEFAULT_NUM  CONSTANT NUMBER := 0;
93   G_DEFAULT_CHAR CONSTANT VARCHAR2(1) := 'X';
94   G_DEFAULT_DATE CONSTANT DATE := TO_DATE('1111','YYYY');
95   G_FINAL_DATE   CONSTANT    DATE    	:= TO_DATE('1','j') + 5300000;
96 -- end cklee 02/13/2004 bug# 3440442
97   G_REQUIRED_VALUE CONSTANT VARCHAR2(200) := OKC_API.G_REQUIRED_VALUE;
98   G_COL_NAME_TOKEN CONSTANT VARCHAR2(200) := OKC_API.G_COL_NAME_TOKEN;
99   G_PRODUCT_ID NUMBER;
100   G_REVENUE_RECOGNITION_METHOD okl_product_parameters_v.REVENUE_RECOGNITION_METHOD%TYPE;
101   G_INTEREST_CALCULATION_BASIS okl_product_parameters_v.INTEREST_CALCULATION_BASIS%TYPE;
102   G_DEAL_TYPE okl_product_parameters_v.DEAL_TYPE%TYPE;
103 
104   -- hariven - Bug#5393374 - Added - Start
105   G_WF_EVT_KHR_IMPORTED CONSTANT VARCHAR2(50) := 'oracle.apps.okl.la.lease_contract.imported';
106   G_WF_ITM_CONTRACT_ID CONSTANT VARCHAR2(11) := 'CONTRACT_ID';
107   -- hariven - Bug#5393374 - Added - End
108 
109 TYPE req_tab_type is TABLE of NUMBER index by binary_integer;
110 TYPE batch_tab_type is TABLE of VARCHAR2(30) index by binary_integer;
111 
112   TYPE template_h_rec_type IS RECORD (
113       ID                               OKL_K_HEADERS_FULL_V.ID%TYPE
114      ,OBJECT_VERSION_NUMBER            OKL_K_HEADERS_FULL_V.OBJECT_VERSION_NUMBER%TYPE
115      ,SFWT_FLAG                        OKL_K_HEADERS_FULL_V.SFWT_FLAG%TYPE
116      ,CHR_ID_RESPONSE                  OKL_K_HEADERS_FULL_V.CHR_ID_RESPONSE%TYPE
117      ,CHR_ID_AWARD                     OKL_K_HEADERS_FULL_V.CHR_ID_AWARD%TYPE
118      ,CHR_ID_RENEWED                   OKL_K_HEADERS_FULL_V.CHR_ID_RENEWED%TYPE
119      ,INV_ORGANIZATION_ID              OKL_K_HEADERS_FULL_V.INV_ORGANIZATION_ID%TYPE
120      ,STS_CODE                         OKL_K_HEADERS_FULL_V.STS_CODE%TYPE
121      ,QCL_ID                           OKL_K_HEADERS_FULL_V.QCL_ID%TYPE
122      ,SCS_CODE                         OKL_K_HEADERS_FULL_V.SCS_CODE%TYPE
123      ,CONTRACT_NUMBER                  OKL_K_HEADERS_FULL_V.CONTRACT_NUMBER%TYPE
124      ,CURRENCY_CODE                    OKL_K_HEADERS_FULL_V.CURRENCY_CODE%TYPE
125      ,CONTRACT_NUMBER_MODIFIER         OKL_K_HEADERS_FULL_V.CONTRACT_NUMBER_MODIFIER%TYPE
126      ,ARCHIVED_YN                      OKL_K_HEADERS_FULL_V.ARCHIVED_YN%TYPE
127      ,DELETED_YN                       OKL_K_HEADERS_FULL_V.DELETED_YN%TYPE
128      ,CUST_PO_NUMBER_REQ_YN            OKL_K_HEADERS_FULL_V.CUST_PO_NUMBER_REQ_YN%TYPE
129      ,PRE_PAY_REQ_YN                   OKL_K_HEADERS_FULL_V.PRE_PAY_REQ_YN%TYPE
130      ,CUST_PO_NUMBER                   OKL_K_HEADERS_FULL_V.CUST_PO_NUMBER%TYPE
131      ,SHORT_DESCRIPTION                OKL_K_HEADERS_FULL_V.SHORT_DESCRIPTION%TYPE
132      ,COMMENTS                         OKL_K_HEADERS_FULL_V.COMMENTS%TYPE
133      ,DESCRIPTION                      OKL_K_HEADERS_FULL_V.DESCRIPTION%TYPE
134      ,DPAS_RATING                      OKL_K_HEADERS_FULL_V.DPAS_RATING%TYPE
135      ,COGNOMEN                         OKL_K_HEADERS_FULL_V.COGNOMEN%TYPE
136      ,TEMPLATE_YN                      OKL_K_HEADERS_FULL_V.TEMPLATE_YN%TYPE
137      ,tEMPLATE_USED                    OKL_K_HEADERS_FULL_V.TEMPLATE_USED%TYPE
138      ,DATE_APPROVED                    OKL_K_HEADERS_FULL_V.DATE_APPROVED%TYPE
139      ,DATETIME_CANCELLED               OKL_K_HEADERS_FULL_V.DATETIME_CANCELLED%TYPE
140      ,AUTO_RENEW_DAYS                  OKL_K_HEADERS_FULL_V.AUTO_RENEW_DAYS%TYPE
141      ,DATE_ISSUED                      OKL_K_HEADERS_FULL_V.DATE_ISSUED%TYPE
142      ,DATETIME_RESPONDED               OKL_K_HEADERS_FULL_V.DATETIME_RESPONDED%TYPE
143      ,NON_RESPONSE_REASON              OKL_K_HEADERS_FULL_V.NON_RESPONSE_REASON%TYPE
144      ,NON_RESPONSE_EXPLAIN             OKL_K_HEADERS_FULL_V.NON_RESPONSE_EXPLAIN%TYPE
145      ,RFP_TYPE                         OKL_K_HEADERS_FULL_V.RFP_TYPE%TYPE
146      ,CHR_TYPE                         OKL_K_HEADERS_FULL_V.CHR_TYPE%TYPE
147      ,KEEP_ON_MAIL_LIST                OKL_K_HEADERS_FULL_V.KEEP_ON_MAIL_LIST%TYPE
148      ,SET_ASIDE_REASON                 OKL_K_HEADERS_FULL_V.SET_ASIDE_REASON%TYPE
149      ,SET_ASIDE_PERCENT                OKL_K_HEADERS_FULL_V.SET_ASIDE_PERCENT%TYPE
150      ,RESPONSE_COPIES_REQ              OKL_K_HEADERS_FULL_V.RESPONSE_COPIES_REQ%TYPE
151      ,DATE_CLOSE_PROJECTED             OKL_K_HEADERS_FULL_V.DATE_CLOSE_PROJECTED%TYPE
152      ,DATETIME_PROPOSED                OKL_K_HEADERS_FULL_V.DATETIME_PROPOSED%TYPE
153      ,DATE_SIGNED                      OKL_K_HEADERS_FULL_V.DATE_SIGNED%TYPE
154      ,DATE_TERMINATED                  OKL_K_HEADERS_FULL_V.DATE_TERMINATED%TYPE
155      ,DATE_RENEWED                     OKL_K_HEADERS_FULL_V.DATE_RENEWED%TYPE
156      ,TRN_CODE                         OKL_K_HEADERS_FULL_V.TRN_CODE%TYPE
157      ,START_DATE                       OKL_K_HEADERS_FULL_V.START_DATE%TYPE
158      ,END_DATE                         OKL_K_HEADERS_FULL_V.END_DATE%TYPE
159      ,AUTHORING_ORG_ID                 OKL_K_HEADERS_FULL_V.AUTHORING_ORG_ID%TYPE
160      ,BUY_OR_SELL                      OKL_K_HEADERS_FULL_V.BUY_OR_SELL%TYPE
161      ,ISSUE_OR_RECEIVE                 OKL_K_HEADERS_FULL_V.ISSUE_OR_RECEIVE%TYPE
162      ,ESTIMATED_AMOUNT                 OKL_K_HEADERS_FULL_V.ESTIMATED_AMOUNT%TYPE
163      ,CHR_ID_RENEWED_TO                OKL_K_HEADERS_FULL_V.CHR_ID_RENEWED_TO%TYPE
164      ,ESTIMATED_AMOUNT_RENEWED         OKL_K_HEADERS_FULL_V.ESTIMATED_AMOUNT_RENEWED%TYPE
165      ,CURRENCY_CODE_RENEWED            OKL_K_HEADERS_FULL_V.CURRENCY_CODE_RENEWED%TYPE
166      ,USER_ACCESS_LEVEL                OKL_K_HEADERS_FULL_V.USER_ACCESS_LEVEL%TYPE
167      ,UPG_ORIG_SYSTEM_REF              OKL_K_HEADERS_FULL_V.UPG_ORIG_SYSTEM_REF%TYPE
168      ,UPG_ORIG_SYSTEM_REF_ID           OKL_K_HEADERS_FULL_V.UPG_ORIG_SYSTEM_REF_ID%TYPE
169      ,APPLICATION_ID                   OKL_K_HEADERS_FULL_V.APPLICATION_ID%TYPE
170      ,RESOLVED_UNTIL                   OKL_K_HEADERS_FULL_V.RESOLVED_UNTIL%TYPE
171      ,ATTRIBUTE_CATEGORY               OKL_K_HEADERS_FULL_V.ATTRIBUTE_CATEGORY%TYPE
172      ,ATTRIBUTE1                       OKL_K_HEADERS_FULL_V.ATTRIBUTE1%TYPE
173      ,ATTRIBUTE2                       OKL_K_HEADERS_FULL_V.ATTRIBUTE2%TYPE
174      ,ATTRIBUTE3                       OKL_K_HEADERS_FULL_V.ATTRIBUTE3%TYPE
175      ,ATTRIBUTE4                       OKL_K_HEADERS_FULL_V.ATTRIBUTE4%TYPE
176      ,ATTRIBUTE5                       OKL_K_HEADERS_FULL_V.ATTRIBUTE5%TYPE
177      ,ATTRIBUTE6                       OKL_K_HEADERS_FULL_V.ATTRIBUTE6%TYPE
178      ,ATTRIBUTE7                       OKL_K_HEADERS_FULL_V.ATTRIBUTE7%TYPE
179      ,ATTRIBUTE8                       OKL_K_HEADERS_FULL_V.ATTRIBUTE8%TYPE
180      ,ATTRIBUTE9                       OKL_K_HEADERS_FULL_V.ATTRIBUTE9%TYPE
181      ,ATTRIBUTE10                      OKL_K_HEADERS_FULL_V.ATTRIBUTE10%TYPE
182      ,ATTRIBUTE11                      OKL_K_HEADERS_FULL_V.ATTRIBUTE11%TYPE
183      ,ATTRIBUTE12                      OKL_K_HEADERS_FULL_V.ATTRIBUTE12%TYPE
184      ,ATTRIBUTE13                      OKL_K_HEADERS_FULL_V.ATTRIBUTE13%TYPE
185      ,ATTRIBUTE14                      OKL_K_HEADERS_FULL_V.ATTRIBUTE14%TYPE
186      ,ATTRIBUTE15                      OKL_K_HEADERS_FULL_V.ATTRIBUTE15%TYPE
187      ,CREATED_BY                       OKL_K_HEADERS_FULL_V.CREATED_BY%TYPE
188      ,CREATION_DATE                    OKL_K_HEADERS_FULL_V.CREATION_DATE%TYPE
189      ,LAST_UPDATED_BY                  OKL_K_HEADERS_FULL_V.LAST_UPDATED_BY%TYPE
190      ,LAST_UPDATE_DATE                 OKL_K_HEADERS_FULL_V.LAST_UPDATE_DATE%TYPE
191      ,LAST_UPDATE_LOGIN                OKL_K_HEADERS_FULL_V.LAST_UPDATE_LOGIN%TYPE
192      ,ORIG_SYSTEM_SOURCE_CODE          OKL_K_HEADERS_FULL_V.ORIG_SYSTEM_SOURCE_CODE%TYPE
193      ,ORIG_SYSTEM_ID1                  OKL_K_HEADERS_FULL_V.ORIG_SYSTEM_ID1%TYPE
194      ,ORIG_SYSTEM_REFERENCE1           OKL_K_HEADERS_FULL_V.ORIG_SYSTEM_REFERENCE1%TYPE
195      ,KHR_ROW_ID                       OKL_K_HEADERS_FULL_V.KHR_ROW_ID%TYPE
196      ,KHR_OBJECT_VERSION_NUMBER        OKL_K_HEADERS_FULL_V.KHR_OBJECT_VERSION_NUMBER%TYPE
197      ,ISG_ID                           OKL_K_HEADERS_FULL_V.ISG_ID%TYPE
198      ,KHR_ID                           OKL_K_HEADERS_FULL_V.KHR_ID%TYPE
199      ,PDT_ID                           OKL_K_HEADERS_FULL_V.PDT_ID%TYPE
200      ,AMD_CODE                         OKL_K_HEADERS_FULL_V.AMD_CODE%TYPE
201      ,DATE_FIRST_ACTIVITY              OKL_K_HEADERS_FULL_V.DATE_FIRST_ACTIVITY%TYPE
202      ,GENERATE_ACCRUAL_YN              OKL_K_HEADERS_FULL_V.GENERATE_ACCRUAL_YN%TYPE
203      ,GENERATE_ACCRUAL_OVERRIDE_YN     OKL_K_HEADERS_FULL_V.GENERATE_ACCRUAL_OVERRIDE_YN%TYPE
204      ,DATE_REFINANCED                  OKL_K_HEADERS_FULL_V.DATE_REFINANCED%TYPE
205      ,CREDIT_ACT_YN                    OKL_K_HEADERS_FULL_V.CREDIT_ACT_YN%TYPE
206      ,TERM_DURATION                    OKL_K_HEADERS_FULL_V.TERM_DURATION%TYPE
207      ,CONVERTED_ACCOUNT_YN             OKL_K_HEADERS_FULL_V.CONVERTED_ACCOUNT_YN%TYPE
208      ,DATE_CONVERSION_EFFECTIVE        OKL_K_HEADERS_FULL_V.DATE_CONVERSION_EFFECTIVE%TYPE
209      ,SYNDICATABLE_YN                  OKL_K_HEADERS_FULL_V.SYNDICATABLE_YN%TYPE
210      ,SALESTYPE_YN                     OKL_K_HEADERS_FULL_V.SALESTYPE_YN%TYPE
211      ,DATE_DEAL_TRANSFERRED            OKL_K_HEADERS_FULL_V.DATE_DEAL_TRANSFERRED%TYPE
212      ,DATETIME_PROPOSAL_EFFECTIVE      OKL_K_HEADERS_FULL_V.DATETIME_PROPOSAL_EFFECTIVE%TYPE
213      ,DATETIME_PROPOSAL_INEFFECTIVE    OKL_K_HEADERS_FULL_V.DATETIME_PROPOSAL_INEFFECTIVE%TYPE
214      ,DATE_PROPOSAL_ACCEPTED           OKL_K_HEADERS_FULL_V.DATE_PROPOSAL_ACCEPTED%TYPE
215      ,KHR_ATTRIBUTE_CATEGORY           OKL_K_HEADERS_FULL_V.KHR_ATTRIBUTE_CATEGORY%TYPE
216      ,KHR_ATTRIBUTE1                   OKL_K_HEADERS_FULL_V.KHR_ATTRIBUTE1%TYPE
217      ,KHR_ATTRIBUTE2                   OKL_K_HEADERS_FULL_V.KHR_ATTRIBUTE2%TYPE
218      ,KHR_ATTRIBUTE3                   OKL_K_HEADERS_FULL_V.KHR_ATTRIBUTE3%TYPE
219      ,KHR_ATTRIBUTE4                   OKL_K_HEADERS_FULL_V.KHR_ATTRIBUTE4%TYPE
220      ,KHR_ATTRIBUTE5                   OKL_K_HEADERS_FULL_V.KHR_ATTRIBUTE5%TYPE
221      ,KHR_ATTRIBUTE6                   OKL_K_HEADERS_FULL_V.KHR_ATTRIBUTE6%TYPE
222      ,KHR_ATTRIBUTE7                   OKL_K_HEADERS_FULL_V.KHR_ATTRIBUTE7%TYPE
223      ,KHR_ATTRIBUTE8                   OKL_K_HEADERS_FULL_V.KHR_ATTRIBUTE8%TYPE
224      ,KHR_ATTRIBUTE9                   OKL_K_HEADERS_FULL_V.KHR_ATTRIBUTE9%TYPE
225      ,KHR_ATTRIBUTE10                  OKL_K_HEADERS_FULL_V.KHR_ATTRIBUTE10%TYPE
226      ,KHR_ATTRIBUTE11                  OKL_K_HEADERS_FULL_V.KHR_ATTRIBUTE11%TYPE
227      ,KHR_ATTRIBUTE12                  OKL_K_HEADERS_FULL_V.KHR_ATTRIBUTE12%TYPE
228      ,KHR_ATTRIBUTE13                  OKL_K_HEADERS_FULL_V.KHR_ATTRIBUTE13%TYPE
229      ,KHR_ATTRIBUTE14                  OKL_K_HEADERS_FULL_V.KHR_ATTRIBUTE14%TYPE
230      ,KHR_ATTRIBUTE15                  OKL_K_HEADERS_FULL_V.KHR_ATTRIBUTE15%TYPE
231      ,KHR_CREATED_BY                   OKL_K_HEADERS_FULL_V.KHR_CREATED_BY%TYPE
232      ,KHR_CREATON_DATE                 OKL_K_HEADERS_FULL_V.KHR_CREATON_DATE%TYPE
233      ,KHR_LAST_UPDATED_BY              OKL_K_HEADERS_FULL_V.KHR_LAST_UPDATED_BY%TYPE
234      ,KHR_LAST_UPDATE_DATE             OKL_K_HEADERS_FULL_V.KHR_LAST_UPDATE_DATE%TYPE
235      ,KHR_LAST_UPDATE_LOGIN            OKL_K_HEADERS_FULL_V.KHR_LAST_UPDATE_LOGIN%TYPE
236      ,PRE_TAX_YIELD                    OKL_K_HEADERS_FULL_V.PRE_TAX_YIELD%TYPE
237      ,AFTER_TAX_YIELD                  OKL_K_HEADERS_FULL_V.AFTER_TAX_YIELD%TYPE
238      ,IMPLICIT_INTEREST_RATE           OKL_K_HEADERS_FULL_V.IMPLICIT_INTEREST_RATE%TYPE
239      ,IMPLICIT_NON_IDC_INTEREST_RATE   OKL_K_HEADERS_FULL_V.IMPLICIT_NON_IDC_INTEREST_RATE%TYPE
240      ,TARGET_PRE_TAX_YIELD             OKL_K_HEADERS_FULL_V.TARGET_PRE_TAX_YIELD%TYPE
241      ,TARGET_AFTER_TAX_YIELD           OKL_K_HEADERS_FULL_V.TARGET_AFTER_TAX_YIELD%TYPE
242      ,TARGET_IMPLICIT_INTEREST_RATE    OKL_K_HEADERS_FULL_V.TARGET_IMPLICIT_INTEREST_RATE%TYPE
243      ,TARGET_IMPLICIT_NONIDC_INTRATE   OKL_K_HEADERS_FULL_V.TARGET_IMPLICIT_NONIDC_INTRATE%TYPE
244      ,DATE_LAST_INTERIM_INTEREST_CAL   OKL_K_HEADERS_FULL_V.DATE_LAST_INTERIM_INTEREST_CAL%TYPE
245      ,DEAL_TYPE                        OKL_K_HEADERS_FULL_V.DEAL_TYPE%TYPE
246      ,PRE_TAX_IRR                      OKL_K_HEADERS_FULL_V.PRE_TAX_IRR%TYPE
247      ,AFTER_TAX_IRR                    OKL_K_HEADERS_FULL_V.AFTER_TAX_IRR%TYPE
248      ,EXPECTED_DELIVERY_DATE           OKL_K_HEADERS_FULL_V.EXPECTED_DELIVERY_DATE%TYPE
249      ,ACCEPTED_DATE                    OKL_K_HEADERS_FULL_V.ACCEPTED_DATE%TYPE
250      ,PREFUNDING_ELIGIBLE_YN           OKL_K_HEADERS_FULL_V.PREFUNDING_ELIGIBLE_YN%TYPE
251      ,REVOLVING_CREDIT_YN              OKL_K_HEADERS_FULL_V.REVOLVING_CREDIT_YN%TYPE
252      ,CURRENCY_CONVERSION_TYPE         OKL_K_HEADERS_FULL_V.CURRENCY_CONVERSION_TYPE%TYPE
253      ,CURRENCY_CONVERSION_RATE         OKL_K_HEADERS_FULL_V.CURRENCY_CONVERSION_RATE%TYPE
254      ,CURRENCY_CONVERSION_DATE         OKL_K_HEADERS_FULL_V.CURRENCY_CONVERSION_DATE%TYPE
255      ,ASSIGNABLE_YN                    OKL_K_HEADERS_FULL_V.ASSIGNABLE_YN%TYPE
256      ,CUST_ACCT_ID                     OKL_K_HEADERS_FULL_V.CUST_ACCT_ID%TYPE
257      ,BILL_TO_SITE_USE_ID              OKL_K_HEADERS_FULL_V.BILL_TO_SITE_USE_ID%TYPE);
258 
259 
260  TYPE intf_h_rec_type IS RECORD (
261       BATCH_NUMBER                       OKL_HEADER_INTERFACE.BATCH_NUMBER%TYPE
262       ,TEMPLATE_NUMBER                    OKL_HEADER_INTERFACE.TEMPLATE_NUMBER%TYPE
263      ,STATUS                             OKL_HEADER_INTERFACE.STATUS %TYPE
264      ,CREATED_BY                         OKL_HEADER_INTERFACE.CREATED_BY %TYPE
265      ,DATE_CREATED                       OKL_HEADER_INTERFACE.DATE_CREATED %TYPE
266      ,DATE_CREATED_IN_OKL                OKL_HEADER_INTERFACE.DATE_CREATED_IN_OKL%TYPE
267      ,APPLICATION_CODE                   OKL_HEADER_INTERFACE.APPLICATION_CODE%TYPE
268      ,CONTRACT_CATEGORY                  OKL_HEADER_INTERFACE.CONTRACT_CATEGORY%TYPE
269      ,CONTRACT_NUMBER_OLD                OKL_HEADER_INTERFACE.CONTRACT_NUMBER_OLD%TYPE
270      ,CONTRACT_SOURCE                    OKL_HEADER_INTERFACE.CONTRACT_SOURCE%TYPE
271      ,CONTRACT_NUMBER                    OKL_HEADER_INTERFACE.CONTRACT_NUMBER%TYPE
272      ,CUSTOMER_NUMBER                    OKL_HEADER_INTERFACE.CUSTOMER_NUMBER%TYPE
273      ,CUSTOMER_ID                        OKL_HEADER_INTERFACE.CUSTOMER_ID%TYPE
274      ,CUSTOMER_ACCOUNT_NUMBER            OKL_HEADER_INTERFACE.CUSTOMER_ACCOUNT_NUMBER%TYPE
275      ,CUSTOMER_ACCOUNT_ID                OKL_HEADER_INTERFACE.CUSTOMER_ACCOUNT_ID%TYPE
276      ,START_DATE                         OKL_HEADER_INTERFACE.START_DATE%TYPE
277      ,IMPORT_REQUEST_STAGE               OKL_HEADER_INTERFACE.IMPORT_REQUEST_STAGE%TYPE
278      ,CURRENCY_CODE                      OKL_HEADER_INTERFACE.CURRENCY_CODE%TYPE
279      ,CUSTOMER_PO_NUMBER                 OKL_HEADER_INTERFACE.CUSTOMER_PO_NUMBER%TYPE
280      ,DATE_SIGNED                        OKL_HEADER_INTERFACE.DATE_SIGNED%TYPE
281      ,DATE_APPROVED                      OKL_HEADER_INTERFACE.DATE_APPROVED%TYPE
282      ,ACCEPTANCE_METHOD_CODE             OKL_HEADER_INTERFACE.ACCEPTANCE_METHOD_CODE%TYPE
283      ,CONSUMER_CREDIT_ACT_DEAL_FLAG      OKL_HEADER_INTERFACE.CONSUMER_CREDIT_ACT_DEAL_FLAG%TYPE
284      ,TERM                               OKL_HEADER_INTERFACE.TERM%TYPE
285      ,CONVERTED_ACCOUNT                  OKL_HEADER_INTERFACE.CONVERTED_ACCOUNT%TYPE
286      ,ACCEPTED_DATE                      OKL_HEADER_INTERFACE.ACCEPTED_DATE%TYPE
287      ,DEAL_TYPE_CODE                     OKL_HEADER_INTERFACE.DEAL_TYPE_CODE%TYPE
288      ,EXPECTED_DELIVERY_DATE             OKL_HEADER_INTERFACE.EXPECTED_DELIVERY_DATE%TYPE
289      ,CONTRACT_DESCRIPTION               OKL_HEADER_INTERFACE.CONTRACT_DESCRIPTION%TYPE
290      ,SALESPERSON_NAME                   OKL_HEADER_INTERFACE.SALESPERSON_NAME%TYPE
291      ,SALESPERSON_ID                     OKL_HEADER_INTERFACE.SALESPERSON_ID%TYPE
292      ,PRIVATE_LABEL_NUMBER               OKL_HEADER_INTERFACE.PRIVATE_LABEL_NUMBER%TYPE
293      ,PRIVATE_LABEL_ID                   OKL_HEADER_INTERFACE.PRIVATE_LABEL_ID%TYPE
294      ,PRIVATE_LABEL_URL                  OKL_HEADER_INTERFACE.PRIVATE_LABEL_URL%TYPE
295      ,PROGRAM_AGREEMENT_NUMBER           OKL_HEADER_INTERFACE.PROGRAM_AGREEMENT_NUMBER%TYPE
296      ,PROGRAM_AGREEMENT_ID               OKL_HEADER_INTERFACE.PROGRAM_AGREEMENT_ID%TYPE
297      ,PROGRAM_VENDOR_NAME                OKL_HEADER_INTERFACE.PROGRAM_VENDOR_NAME%TYPE
298      ,PROGRAM_VENDOR_ID                  OKL_HEADER_INTERFACE.PROGRAM_VENDOR_ID%TYPE
299      ,MASTER_LEASE_AGREEMENT_NUMBER      OKL_HEADER_INTERFACE.MASTER_LEASE_AGREEMENT_NUMBER%TYPE
300      ,MASTER_LEASE_AGREEMENT_ID          OKL_HEADER_INTERFACE.MASTER_LEASE_AGREEMENT_ID%TYPE
301      ,PRODUCT_NAME                       OKL_HEADER_INTERFACE.PRODUCT_NAME%TYPE
302      ,PRODUCT_ID                         OKL_HEADER_INTERFACE.PRODUCT_ID%TYPE
303      ,CALCULATE_RESIDUAL_INSURANCE       OKL_HEADER_INTERFACE.CALCULATE_RESIDUAL_INSURANCE%TYPE
304      ,REBOOK_LIMIT_DATE                  OKL_HEADER_INTERFACE.REBOOK_LIMIT_DATE%TYPE
305      ,IMPORT_REQUEST_ID                  OKL_HEADER_INTERFACE.IMPORT_REQUEST_ID%TYPE
306      ,END_OF_TERM_OPTION                 OKL_HEADER_INTERFACE.END_OF_TERM_OPTION%TYPE
307      ,END_OF_TERM_AMOUNT                 OKL_HEADER_INTERFACE.END_OF_TERM_AMOUNT%TYPE
308      ,MID_TERM_OPTION                    OKL_HEADER_INTERFACE.MID_TERM_OPTION%TYPE
309      ,MID_TERM_AMOUNT                    OKL_HEADER_INTERFACE.MID_TERM_AMOUNT%TYPE
310      ,SECURITY_DEPOSIT_HOLD_FLAG         OKL_HEADER_INTERFACE.SECURITY_DEPOSIT_HOLD_FLAG%TYPE
311      ,SECURITY_DEPOSIT_NET_FLAG          OKL_HEADER_INTERFACE.SECURITY_DEPOSIT_NET_FLAG%TYPE
312      ,SECURITY_DEPOSIT_DATE              OKL_HEADER_INTERFACE.SECURITY_DEPOSIT_DATE%TYPE
313      ,RENEWAL_NOTICE_DAYS                OKL_HEADER_INTERFACE.RENEWAL_NOTICE_DAYS%TYPE
314      ,RENEWAL_OPTION                     OKL_HEADER_INTERFACE.RENEWAL_OPTION%TYPE
315      ,RENEWAL_AMOUNT                     OKL_HEADER_INTERFACE.RENEWAL_AMOUNT%TYPE
316      ,LATE_INTEREST_HELD_UNTIL_DATE      OKL_HEADER_INTERFACE.LATE_INTEREST_HELD_UNTIL_DATE%TYPE
317      ,LATE_INTEREST_EXEMPT_FLAG          OKL_HEADER_INTERFACE.LATE_INTEREST_EXEMPT_FLAG%TYPE
318      ,LATE_INTEREST_PRODUCT_CODE         OKL_HEADER_INTERFACE.LATE_INTEREST_PRODUCT_CODE%TYPE
319      ,LATE_CHARGE_HELD_UNTIL_DATE        OKL_HEADER_INTERFACE.LATE_CHARGE_HELD_UNTIL_DATE%TYPE
320      ,LATE_CHARGE_PRODUCT_CODE           OKL_HEADER_INTERFACE.LATE_CHARGE_PRODUCT_CODE%TYPE
321      ,LATE_CHARGE_EXEMPT_FLAG            OKL_HEADER_INTERFACE.LATE_CHARGE_EXEMPT_FLAG%TYPE
322      ,VARIABLE_RATE                      OKL_HEADER_INTERFACE.VARIABLE_RATE%TYPE
323      ,CONVERT_TYPE                       OKL_HEADER_INTERFACE.CONVERT_TYPE%TYPE
324      ,CONVERSION_METHOD                  OKL_HEADER_INTERFACE.CONVERSION_METHOD%TYPE
325      ,DATE_OF_CONVERSION                 OKL_HEADER_INTERFACE.DATE_OF_CONVERSION%TYPE
326      ,CONVERT_BY_DATE                    OKL_HEADER_INTERFACE.CONVERT_BY_DATE%TYPE
327      ,VARIABLE_METHOD                    OKL_HEADER_INTERFACE.VARIABLE_METHOD%TYPE
328      ,INDEX_NAME                         OKL_HEADER_INTERFACE.INDEX_NAME%TYPE
329      ,BASE_RATE                          OKL_HEADER_INTERFACE.BASE_RATE%TYPE
330      ,ADDER                              OKL_HEADER_INTERFACE.ADDER%TYPE
331      ,MINIMUM_RATE                       OKL_HEADER_INTERFACE.MINIMUM_RATE%TYPE
332      ,MAXIMUM_RATE                       OKL_HEADER_INTERFACE.MAXIMUM_RATE%TYPE
333      ,TOLERANCE                          OKL_HEADER_INTERFACE.TOLERANCE%TYPE
334      ,ADJUSTMENT_FREQUENCY               OKL_HEADER_INTERFACE.ADJUSTMENT_FREQUENCY%TYPE
335      ,DAYS_IN_YEAR                       OKL_HEADER_INTERFACE.DAYS_IN_YEAR%TYPE
336      ,DAYS_IN_MONTH                      OKL_HEADER_INTERFACE.DAYS_IN_MONTH%TYPE
337      ,INTEREST_METHOD                    OKL_HEADER_INTERFACE.INTEREST_METHOD%TYPE
338      ,INTEREST_START_DATE                OKL_HEADER_INTERFACE.INTEREST_START_DATE%TYPE
339      ,METHOD_OF_CALCULATION              OKL_HEADER_INTERFACE.METHOD_OF_CALCULATION%TYPE
340      ,FORMULA_NAME                       OKL_HEADER_INTERFACE.FORMULA_NAME%TYPE
341      ,CAPITALIZE_FLAG                    OKL_HEADER_INTERFACE.CAPITALIZE_FLAG%TYPE
342      ,NON_NOTIFICATION_FLAG              OKL_HEADER_INTERFACE.NON_NOTIFICATION_FLAG%TYPE
343      ,TAX_WITHHOLDING_FLAG               OKL_HEADER_INTERFACE.TAX_WITHHOLDING_FLAG%TYPE
344      ,TAX_CALC_FORMULA_NAME              OKL_HEADER_INTERFACE.TAX_CALC_FORMULA_NAME%TYPE
345      ,TAX_OWNER                          OKL_HEADER_INTERFACE.TAX_OWNER%TYPE
346      ,FACTORING_DATE                     OKL_HEADER_INTERFACE.FACTORING_DATE%TYPE
347      ,FACTORING_PERCENTAGE               OKL_HEADER_INTERFACE.FACTORING_PERCENTAGE%TYPE
348      ,FACTORING_DISCOUNT_RATE            OKL_HEADER_INTERFACE.FACTORING_DISCOUNT_RATE%TYPE
349      ,EVERGREEN_ELIGIBLE_FLAG            OKL_HEADER_INTERFACE.EVERGREEN_ELIGIBLE_FLAG%TYPE
350      ,BILL_TO_ADDRESS_ID                 OKL_HEADER_INTERFACE.BILL_TO_ADDRESS_ID%TYPE
351      ,BILL_TO_ADDRESS                    OKL_HEADER_INTERFACE.BILL_TO_ADDRESS%TYPE
352      ,BANK_ACCOUNT_ID                    OKL_HEADER_INTERFACE.BANK_ACCOUNT_ID%TYPE
353      ,BANK_ACCOUNT_NUMBER                OKL_HEADER_INTERFACE.BANK_ACCOUNT_NUMBER%TYPE
354      ,REASON_FOR_INVOICE_REVIEW          OKL_HEADER_INTERFACE.REASON_FOR_INVOICE_REVIEW%TYPE
355      ,INVOICE_REVIEW_UNTIL_DATE          OKL_HEADER_INTERFACE.INVOICE_REVIEW_UNTIL_DATE%TYPE
356      ,INVOICE_FORMAT_ID                  OKL_HEADER_INTERFACE.INVOICE_FORMAT_ID%TYPE
357      ,INVOICE_FORMAT_CODE                OKL_HEADER_INTERFACE.INVOICE_FORMAT_CODE%TYPE
358      ,PRINT_LEAD_DAYS                    OKL_HEADER_INTERFACE.PRINT_LEAD_DAYS%TYPE --hariven bug 5359935
359      ,REVIEW_INVOICE_FLAG                OKL_HEADER_INTERFACE.REVIEW_INVOICE_FLAG%TYPE
360      ,PAYMENT_METHOD_ID                  OKL_HEADER_INTERFACE.PAYMENT_METHOD_ID%TYPE
361      ,PAYMENT_METHOD                     OKL_HEADER_INTERFACE.PAYMENT_METHOD%TYPE
362      ,AUTHORING_ORG_ID                   OKL_HEADER_INTERFACE.AUTHORING_ORG_ID%TYPE
363      ,INVENTORY_ORGANIZATION_ID          OKL_HEADER_INTERFACE.INVENTORY_ORGANIZATION_ID%TYPE
364      ,POLICY_NUMBER                      OKL_HEADER_INTERFACE.POLICY_NUMBER%TYPE
365      ,POLICY_EFFECTIVE_FROM              OKL_HEADER_INTERFACE.POLICY_EFFECTIVE_FROM%TYPE
366      ,POLICY_EFFECTIVE_TO                OKL_HEADER_INTERFACE.POLICY_EFFECTIVE_TO%TYPE
367      ,COVERED_AMOUNT                     OKL_HEADER_INTERFACE.COVERED_AMOUNT%TYPE
368      ,DEDUCTIBLE_AMOUNT                  OKL_HEADER_INTERFACE.DEDUCTIBLE_AMOUNT%TYPE
369      ,ENDORSEMENT                        OKL_HEADER_INTERFACE.ENDORSEMENT%TYPE
370      ,NAME_OF_INSURED                    OKL_HEADER_INTERFACE.NAME_OF_INSURED%TYPE
371      ,LESSOR_INSURED_FLAG                OKL_HEADER_INTERFACE.LESSOR_INSURED_FLAG%TYPE
372      ,LESSOR_PAYEE_FLAG                  OKL_HEADER_INTERFACE.LESSOR_PAYEE_FLAG%TYPE
373      ,INSURANCE_COMPANY_NAME             OKL_HEADER_INTERFACE.INSURANCE_COMPANY_NAME%TYPE
374      ,INSURANCE_COMPANY_ID               OKL_HEADER_INTERFACE.INSURANCE_COMPANY_ID%TYPE
375      ,INSURANCE_COMPANY_SITE_NAME        OKL_HEADER_INTERFACE.INSURANCE_COMPANY_SITE_NAME%TYPE
376      ,INSURANCE_COMPANY_SITE_ID          OKL_HEADER_INTERFACE.INSURANCE_COMPANY_SITE_ID%TYPE
377      ,AGENT_NAME                         OKL_HEADER_INTERFACE.AGENT_NAME%TYPE
378      ,AGENT_ID                           OKL_HEADER_INTERFACE.AGENT_ID%TYPE
379      ,AGENT_ADDRESS_SITE_NAME            OKL_HEADER_INTERFACE.AGENT_ADDRESS_SITE_NAME%TYPE
380      ,AGENT_ADDRESS_SITE_ID              OKL_HEADER_INTERFACE.AGENT_ADDRESS_SITE_ID%TYPE
381      ,PROOF_DUE_DATE                     OKL_HEADER_INTERFACE.PROOF_DUE_DATE%TYPE
382      ,PROOF_PROVIDED_DATE                OKL_HEADER_INTERFACE.PROOF_PROVIDED_DATE%TYPE
383      ,PREFUNDING_ELIGIBLE_FLAG           OKL_HEADER_INTERFACE.PREFUNDING_ELIGIBLE_FLAG%TYPE
384      ,PRIVATE_ACTIVITY_BOND_FLAG         OKL_HEADER_INTERFACE.PRIVATE_ACTIVITY_BOND_FLAG%TYPE
385      ,RVI_AUTO_CALCULATE_FLAG            OKL_HEADER_INTERFACE.RVI_AUTO_CALCULATE_FLAG%TYPE
386      ,RVI_GUARANTEED_AMOUNT              OKL_HEADER_INTERFACE.RVI_GUARANTEED_AMOUNT%TYPE
387      ,RVI_PRESENT_GUARANTEED_AMOUNT      OKL_HEADER_INTERFACE.RVI_PRESENT_GUARANTEED_AMOUNT%TYPE
388      ,RVI_PREMIUM_AMOUNT                 OKL_HEADER_INTERFACE.RVI_PREMIUM_AMOUNT%TYPE
389      ,RVI_RATE                           OKL_HEADER_INTERFACE.RVI_RATE%TYPE
390      ,FLOOR_PRICE_FORMULA                OKL_HEADER_INTERFACE.FLOOR_PRICE_FORMULA%TYPE
391      ,REMKT_SALE_PRICE_FORMULA           OKL_HEADER_INTERFACE.REMKT_SALE_PRICE_FORMULA%TYPE
392      ,REPURCHASE_QUOTE_OPTION            OKL_HEADER_INTERFACE.REPURCHASE_QUOTE_OPTION%TYPE
393      ,REPURCHASE_QUOTE_FORMULA           OKL_HEADER_INTERFACE.REPURCHASE_QUOTE_FORMULA%TYPE
394      ,SALE_PRICE_OPTION                  OKL_HEADER_INTERFACE.SALE_PRICE_OPTION%TYPE
395      ,SALE_PRICE_AMOUNT                  OKL_HEADER_INTERFACE.SALE_PRICE_AMOUNT%TYPE
396      ,SALE_PRICE_FORMULA                 OKL_HEADER_INTERFACE.SALE_PRICE_FORMULA%TYPE
397      ,SALE_PRICE_PRORATE                 OKL_HEADER_INTERFACE.SALE_PRICE_PRORATE%TYPE
398      ,DISCOUNT_RATE_OPTION               OKL_HEADER_INTERFACE.DISCOUNT_RATE_OPTION%TYPE
399      ,DISCOUNT_RATE_AMOUNT               OKL_HEADER_INTERFACE.DISCOUNT_RATE_AMOUNT%TYPE
400      ,DISCOUNT_RATE_FORMULA              OKL_HEADER_INTERFACE.DISCOUNT_RATE_FORMULA%TYPE
401      ,DISCOUNT_RATE_PRORATE              OKL_HEADER_INTERFACE.DISCOUNT_RATE_PRORATE%TYPE
402      ,QUOTE_FEE_OPTION                   OKL_HEADER_INTERFACE.QUOTE_FEE_OPTION%TYPE
403      ,QUOTE_FEE_AMOUNT                   OKL_HEADER_INTERFACE.QUOTE_FEE_AMOUNT%TYPE
404      ,QUOTE_FEE_FORMULA                  OKL_HEADER_INTERFACE.QUOTE_FEE_FORMULA%TYPE
405      ,QUOTE_FEE_PRORATE                  OKL_HEADER_INTERFACE.QUOTE_FEE_PRORATE%TYPE
406      ,ERT_PURCHASE_OPT                   OKL_HEADER_INTERFACE.ERT_PURCHASE_OPT%TYPE
407      ,ERT_PURCHASE_OPT_TYPE              OKL_HEADER_INTERFACE.ERT_PURCHASE_OPT_TYPE%TYPE
408      ,ERT_PURCHASE_OPT_AMOUNT            OKL_HEADER_INTERFACE.ERT_PURCHASE_OPT_AMOUNT%TYPE
409      ,ERT_PURCHASE_OPT_FORMULA           OKL_HEADER_INTERFACE.ERT_PURCHASE_OPT_FORMULA%TYPE
410      ,ERT_PURCHASE_OPT_PRORATE           OKL_HEADER_INTERFACE.ERT_PURCHASE_OPT_PRORATE%TYPE
411      ,ERT_PURCHASE_OPT_MAX_OPT           OKL_HEADER_INTERFACE.ERT_PURCHASE_OPT_MAX_OPT%TYPE
412      ,ERT_PURCHASE_OPT_MAX_AMT           OKL_HEADER_INTERFACE.ERT_PURCHASE_OPT_MAX_AMT%TYPE
413      ,ERT_PURCHASE_OPT_MAX_FORMULA       OKL_HEADER_INTERFACE.ERT_PURCHASE_OPT_MAX_FORMULA%TYPE
414      ,ERT_PURCHASE_OPT_MIN_OPT           OKL_HEADER_INTERFACE.ERT_PURCHASE_OPT_MIN_OPT%TYPE
415      ,ERT_PURCHASE_OPT_MIN_AMT           OKL_HEADER_INTERFACE.ERT_PURCHASE_OPT_MIN_AMT%TYPE
416      ,ERT_PURCHASE_OPT_MIN_FORMULA       OKL_HEADER_INTERFACE.ERT_PURCHASE_OPT_MIN_FORMULA%TYPE
417      ,EOT_PURCHASE_OPT                   OKL_HEADER_INTERFACE.EOT_PURCHASE_OPT%TYPE
418      ,EOT_PURCHASE_OPT_TYPE              OKL_HEADER_INTERFACE.EOT_PURCHASE_OPT_TYPE%TYPE
419      ,EOT_PURCHASE_OPT_AMOUNT            OKL_HEADER_INTERFACE.EOT_PURCHASE_OPT_AMOUNT%TYPE
420      ,EOT_PURCHASE_OPT_FORMULA           OKL_HEADER_INTERFACE.EOT_PURCHASE_OPT_FORMULA%TYPE
421      ,EOT_PURCHASE_OPT_PRORATE           OKL_HEADER_INTERFACE.EOT_PURCHASE_OPT_PRORATE%TYPE
422      ,EOT_PURCHASE_OPT_MAX_OPT           OKL_HEADER_INTERFACE.EOT_PURCHASE_OPT_MAX_OPT%TYPE
423      ,EOT_PURCHASE_OPT_MAX_AMT           OKL_HEADER_INTERFACE.EOT_PURCHASE_OPT_MAX_AMT%TYPE
424      ,EOT_PURCHASE_OPT_MAX_FORMULA       OKL_HEADER_INTERFACE.EOT_PURCHASE_OPT_MAX_FORMULA%TYPE
425      ,EOT_PURCHASE_OPT_MIN_OPT           OKL_HEADER_INTERFACE.EOT_PURCHASE_OPT_MIN_OPT%TYPE
426      ,EOT_PURCHASE_OPT_MIN_AMT           OKL_HEADER_INTERFACE.EOT_PURCHASE_OPT_MIN_AMT%TYPE
427      ,EOT_PURCHASE_OPT_MIN_FORMULA       OKL_HEADER_INTERFACE.EOT_PURCHASE_OPT_MIN_FORMULA%TYPE
428      ,TQP_ERL_TERMINATION_ALWD_FLAG      OKL_HEADER_INTERFACE.TQP_ERL_TERMINATION_ALWD_FLAG%TYPE
429      ,TQP_PRT_TERMINATION_ALWD_FLAG      OKL_HEADER_INTERFACE.TQP_PRT_TERMINATION_ALWD_FLAG%TYPE
430      ,QUOTE_EFFECTIVE_DAYS               OKL_HEADER_INTERFACE.QUOTE_EFFECTIVE_DAYS%TYPE
431      ,QUOTE_EFF_MAX_DAYS                 OKL_HEADER_INTERFACE.QUOTE_EFF_MAX_DAYS%TYPE
432      ,EOT_TOLERANCE_DAYS                 OKL_HEADER_INTERFACE.EOT_TOLERANCE_DAYS%TYPE
433      ,PRT_TERMINATION_APPROVAL_REQ       OKL_HEADER_INTERFACE.PRT_TERMINATION_APPROVAL_REQ%TYPE
434      ,PRT_TERMINATION_ALLOWED_FLAG       OKL_HEADER_INTERFACE.PRT_TERMINATION_ALLOWED_FLAG%TYPE
435      ,GAIN_LOSS_APPROVAL_REQ             OKL_HEADER_INTERFACE.GAIN_LOSS_APPROVAL_REQ%TYPE
436      ,GAIN_LOSS_NET_QUOTE_OPT            OKL_HEADER_INTERFACE.GAIN_LOSS_NET_QUOTE_OPT%TYPE
437      ,GAIN_LOSS_NET_QUOTE_AMT            OKL_HEADER_INTERFACE.GAIN_LOSS_NET_QUOTE_AMT%TYPE
438      ,GAIN_LOSS_NET_QUOTE_FORMULA        OKL_HEADER_INTERFACE.GAIN_LOSS_NET_QUOTE_FORMULA%TYPE
439      ,GAIN_LOSS_TOLERANCE_ALLOWED        OKL_HEADER_INTERFACE.GAIN_LOSS_TOLERANCE_ALLOWED%TYPE
440      ,QUOTE_RCPT_CONTRACT_ROLE           OKL_HEADER_INTERFACE.QUOTE_RCPT_CONTRACT_ROLE%TYPE
441      ,QUOTE_APPROVER_CONTRACT_ROLE       OKL_HEADER_INTERFACE.QUOTE_APPROVER_CONTRACT_ROLE%TYPE
442      ,QUOTE_CRTSY_COPY_CONTRACT_ROLE     OKL_HEADER_INTERFACE.QUOTE_CRTSY_COPY_CONTRACT_ROLE%TYPE
443      ,ERT_QUOTE_CALC_TERM_OPTION         OKL_HEADER_INTERFACE.ERT_QUOTE_CALC_TERM_OPTION%TYPE
444      ,ERT_QUOTE_CALC_TERM_FORMULA        OKL_HEADER_INTERFACE.ERT_QUOTE_CALC_TERM_FORMULA%TYPE
445      ,ERT_CONTRACT_OBLIG_OPT             OKL_HEADER_INTERFACE.ERT_CONTRACT_OBLIG_OPT%TYPE
446      ,ERT_CONTRACT_OBLIG_AMOUNT          OKL_HEADER_INTERFACE.ERT_CONTRACT_OBLIG_AMOUNT%TYPE
447      ,ERT_CONTRACT_OBLIG_FORMULA         OKL_HEADER_INTERFACE.ERT_CONTRACT_OBLIG_FORMULA%TYPE
448      ,ERT_CONTRACT_OBLIG_PRORATE         OKL_HEADER_INTERFACE.ERT_CONTRACT_OBLIG_PRORATE%TYPE
449      ,ERT_DISC_RATE_OPT                  OKL_HEADER_INTERFACE.ERT_DISC_RATE_OPT%TYPE
450      ,ERT_DISC_RATE_AMOUNT               OKL_HEADER_INTERFACE.ERT_DISC_RATE_AMOUNT%TYPE
451      ,ERT_DISC_RATE_FORMULA              OKL_HEADER_INTERFACE.ERT_DISC_RATE_FORMULA%TYPE
452      ,ERT_DISC_RATE_PRORATE              OKL_HEADER_INTERFACE.ERT_DISC_RATE_PRORATE%TYPE
453      ,ERT_QUOTE_FEE_OPT                  OKL_HEADER_INTERFACE.ERT_QUOTE_FEE_OPT%TYPE
454      ,ERT_QUOTE_FEE_AMOUNT               OKL_HEADER_INTERFACE.ERT_QUOTE_FEE_AMOUNT%TYPE
455      ,ERT_QUOTE_FEE_FORMULA              OKL_HEADER_INTERFACE.ERT_QUOTE_FEE_FORMULA%TYPE
456      ,ERT_QUOTE_FEE_PRORATE              OKL_HEADER_INTERFACE.ERT_QUOTE_FEE_PRORATE%TYPE
457      ,ERT_RETURN_FEE_OPTION              OKL_HEADER_INTERFACE.ERT_RETURN_FEE_OPTION%TYPE
458      ,ERT_RETURN_FEE_AMOUNT              OKL_HEADER_INTERFACE.ERT_RETURN_FEE_AMOUNT%TYPE
459      ,ERT_RETURN_FEE_FORMULA             OKL_HEADER_INTERFACE.ERT_RETURN_FEE_FORMULA%TYPE
460      ,ERT_RETURN_FEE_PRORATE             OKL_HEADER_INTERFACE.ERT_RETURN_FEE_PRORATE%TYPE
461      ,ERT_ROLL_INCTV_OPTION              OKL_HEADER_INTERFACE.ERT_ROLL_INCTV_OPTION%TYPE
462      ,ERT_ROLL_INCTV_AMOUNT              OKL_HEADER_INTERFACE.ERT_ROLL_INCTV_AMOUNT%TYPE
463      ,ERT_ROLL_INCTV_FORMULA             OKL_HEADER_INTERFACE.ERT_ROLL_INCTV_FORMULA%TYPE
464      ,ERT_ROLL_INCTV_PRORATE             OKL_HEADER_INTERFACE.ERT_ROLL_INCTV_PRORATE%TYPE
465      ,ERT_SECU_DEP_DISPO_OPTION          OKL_HEADER_INTERFACE.ERT_SECU_DEP_DISPO_OPTION%TYPE
466      ,ERT_SECU_DEP_DISPO_AMOUNT          OKL_HEADER_INTERFACE.ERT_SECU_DEP_DISPO_AMOUNT%TYPE
467      ,ERT_SECU_DEP_DISPO_FORMULA         OKL_HEADER_INTERFACE.ERT_SECU_DEP_DISPO_FORMULA%TYPE
468      ,ERT_SECU_DEP_DISPO_PRORATE         OKL_HEADER_INTERFACE.ERT_SECU_DEP_DISPO_PRORATE%TYPE
469      ,ERT_TERM_PENALTY_OPTION            OKL_HEADER_INTERFACE.ERT_TERM_PENALTY_OPTION%TYPE
470      ,ERT_TERM_PENALTY_AMOUNT            OKL_HEADER_INTERFACE.ERT_TERM_PENALTY_AMOUNT%TYPE
471      ,ERT_TERM_PENALTY_FORMULA           OKL_HEADER_INTERFACE.ERT_TERM_PENALTY_FORMULA%TYPE
472      ,ERT_TERM_PENALTY_PRORATE           OKL_HEADER_INTERFACE.ERT_TERM_PENALTY_PRORATE%TYPE
473      ,ERT_TERM_PENALTY_CAP_OPTION        OKL_HEADER_INTERFACE.ERT_TERM_PENALTY_CAP_OPTION%TYPE
474      ,ERT_TERM_PENALTY_CAP_AMOUNT        OKL_HEADER_INTERFACE.ERT_TERM_PENALTY_CAP_AMOUNT%TYPE
475      ,ERT_TERM_PENALTY_CAP_FORMULA       OKL_HEADER_INTERFACE.ERT_TERM_PENALTY_CAP_FORMULA%TYPE
476      ,ERT_EST_PROP_TAX_OPTION            OKL_HEADER_INTERFACE.ERT_EST_PROP_TAX_OPTION%TYPE
477      ,ERT_EST_PROP_TAX_AMOUNT            OKL_HEADER_INTERFACE.ERT_EST_PROP_TAX_AMOUNT%TYPE
478      ,ERT_EST_PROP_TAX_FORMULA           OKL_HEADER_INTERFACE.ERT_EST_PROP_TAX_FORMULA%TYPE
479      ,ERT_EST_PROP_TAX_PRORATE           OKL_HEADER_INTERFACE.ERT_EST_PROP_TAX_PRORATE%TYPE
480      ,ERT_CONTR_FEES_OPTION              OKL_HEADER_INTERFACE.ERT_CONTR_FEES_OPTION%TYPE
481      ,ERT_OUTSTND_BAL_OPTION             OKL_HEADER_INTERFACE.ERT_OUTSTND_BAL_OPTION%TYPE
482      ,ERT_SERV_MANT_OPTION               OKL_HEADER_INTERFACE.ERT_SERV_MANT_OPTION%TYPE
483      ,EOT_QUOTE_CALC_TERM_OPTION         OKL_HEADER_INTERFACE.EOT_QUOTE_CALC_TERM_OPTION%TYPE
484      ,EOT_QUOTE_CALC_TERM_FORMULA        OKL_HEADER_INTERFACE.EOT_QUOTE_CALC_TERM_FORMULA%TYPE
485      ,EOT_CONTRACT_OBLIG_OPT             OKL_HEADER_INTERFACE.EOT_CONTRACT_OBLIG_OPT%TYPE
486      ,EOT_CONTRACT_OBLIG_AMOUNT          OKL_HEADER_INTERFACE.EOT_CONTRACT_OBLIG_AMOUNT%TYPE
487      ,EOT_CONTRACT_OBLIG_FORMULA         OKL_HEADER_INTERFACE.EOT_CONTRACT_OBLIG_FORMULA%TYPE
488      ,EOT_CONTRACT_OBLIG_PRORATE         OKL_HEADER_INTERFACE.EOT_CONTRACT_OBLIG_PRORATE%TYPE
489      ,EOT_DISC_RATE_OPT                  OKL_HEADER_INTERFACE.EOT_DISC_RATE_OPT%TYPE
490      ,EOT_DISC_RATE_AMOUNT               OKL_HEADER_INTERFACE.EOT_DISC_RATE_AMOUNT%TYPE
491      ,EOT_DISC_RATE_FORMULA              OKL_HEADER_INTERFACE.EOT_DISC_RATE_FORMULA%TYPE
492      ,EOT_DISC_RATE_PRORATE              OKL_HEADER_INTERFACE.EOT_DISC_RATE_PRORATE%TYPE
493      ,EOT_QUOTE_FEE_OPT                  OKL_HEADER_INTERFACE.EOT_QUOTE_FEE_OPT%TYPE
494      ,EOT_QUOTE_FEE_AMOUNT               OKL_HEADER_INTERFACE.EOT_QUOTE_FEE_AMOUNT%TYPE
495      ,EOT_QUOTE_FEE_FORMULA              OKL_HEADER_INTERFACE.EOT_QUOTE_FEE_FORMULA%TYPE
496      ,EOT_QUOTE_FEE_PRORATE              OKL_HEADER_INTERFACE.EOT_QUOTE_FEE_PRORATE%TYPE
497      ,EOT_RETURN_FEE_OPTION              OKL_HEADER_INTERFACE.EOT_RETURN_FEE_OPTION%TYPE
498      ,EOT_RETURN_FEE_AMOUNT              OKL_HEADER_INTERFACE.EOT_RETURN_FEE_AMOUNT%TYPE
499      ,EOT_RETURN_FEE_FORMULA             OKL_HEADER_INTERFACE.EOT_RETURN_FEE_FORMULA%TYPE
500      ,EOT_RETURN_FEE_PRORATE             OKL_HEADER_INTERFACE.EOT_RETURN_FEE_PRORATE%TYPE
501      ,EOT_ROLL_INCTV_OPTION              OKL_HEADER_INTERFACE.EOT_ROLL_INCTV_OPTION%TYPE
502      ,EOT_ROLL_INCTV_AMOUNT              OKL_HEADER_INTERFACE.EOT_ROLL_INCTV_AMOUNT%TYPE
503      ,EOT_ROLL_INCTV_FORMULA             OKL_HEADER_INTERFACE.EOT_ROLL_INCTV_FORMULA%TYPE
504      ,EOT_ROLL_INCTV_PRORATE             OKL_HEADER_INTERFACE.EOT_ROLL_INCTV_PRORATE%TYPE
505      ,EOT_SECU_DEP_DISPO_OPTION          OKL_HEADER_INTERFACE.EOT_SECU_DEP_DISPO_OPTION%TYPE
506      ,EOT_SECU_DEP_DISPO_AMOUNT          OKL_HEADER_INTERFACE.EOT_SECU_DEP_DISPO_AMOUNT%TYPE
507      ,EOT_SECU_DEP_DISPO_FORMULA         OKL_HEADER_INTERFACE.EOT_SECU_DEP_DISPO_FORMULA%TYPE
508      ,EOT_SECU_DEP_DISPO_PRORATE         OKL_HEADER_INTERFACE.EOT_SECU_DEP_DISPO_PRORATE%TYPE
509      ,EOT_TERM_PENALTY_OPTION            OKL_HEADER_INTERFACE.EOT_TERM_PENALTY_OPTION%TYPE
510      ,EOT_TERM_PENALTY_AMOUNT            OKL_HEADER_INTERFACE.EOT_TERM_PENALTY_AMOUNT%TYPE
511      ,EOT_TERM_PENALTY_FORMULA           OKL_HEADER_INTERFACE.EOT_TERM_PENALTY_FORMULA%TYPE
512      ,EOT_TERM_PENALTY_PRORATE           OKL_HEADER_INTERFACE.EOT_TERM_PENALTY_PRORATE%TYPE
513      ,EOT_TERM_PENALTY_CAP_OPTION        OKL_HEADER_INTERFACE.EOT_TERM_PENALTY_CAP_OPTION%TYPE
514      ,EOT_TERM_PENALTY_CAP_AMOUNT        OKL_HEADER_INTERFACE.EOT_TERM_PENALTY_CAP_AMOUNT%TYPE
515      ,EOT_TERM_PENALTY_CAP_FORMULA       OKL_HEADER_INTERFACE.EOT_TERM_PENALTY_CAP_FORMULA%TYPE
516      ,EOT_EST_PROP_TAX_OPTION            OKL_HEADER_INTERFACE.EOT_EST_PROP_TAX_OPTION%TYPE
517      ,EOT_EST_PROP_TAX_AMOUNT            OKL_HEADER_INTERFACE.EOT_EST_PROP_TAX_AMOUNT%TYPE
518      ,EOT_EST_PROP_TAX_FORMULA           OKL_HEADER_INTERFACE.EOT_EST_PROP_TAX_FORMULA%TYPE
519      ,EOT_EST_PROP_TAX_PRORATE           OKL_HEADER_INTERFACE.EOT_EST_PROP_TAX_PRORATE%TYPE
520      ,EOT_CONTR_FEES_OPTION              OKL_HEADER_INTERFACE.EOT_CONTR_FEES_OPTION%TYPE
521      ,EOT_OUTSTND_BAL_OPTION             OKL_HEADER_INTERFACE.EOT_OUTSTND_BAL_OPTION%TYPE
522      ,EOT_SERV_MANT_OPTION               OKL_HEADER_INTERFACE.EOT_SERV_MANT_OPTION%TYPE
523      ,EVERGREEN_PASSTHRU_FEES            OKL_HEADER_INTERFACE.EVERGREEN_PASSTHRU_FEES%TYPE
524      ,EVERGREEN_PASSTHRU_PERCENT         OKL_HEADER_INTERFACE.EVERGREEN_PASSTHRU_PERCENT%TYPE
525      ,LIEN_TYPE                          OKL_HEADER_INTERFACE.LIEN_TYPE%TYPE
526      ,FILING_NUMBER                      OKL_HEADER_INTERFACE.FILING_NUMBER%TYPE
527      ,FILING_DATE                        OKL_HEADER_INTERFACE.FILING_DATE%TYPE
528      ,FILING_STATUS                      OKL_HEADER_INTERFACE.FILING_STATUS%TYPE
529      ,LIEN_HOLDER_NAME                   OKL_HEADER_INTERFACE.LIEN_HOLDER_NAME%TYPE
530      ,LIEN_HOLDER_ID                     OKL_HEADER_INTERFACE.LIEN_HOLDER_ID%TYPE
531      ,JURISDICTION                       OKL_HEADER_INTERFACE.JURISDICTION%TYPE
532      ,SUB_JURISDICTION                   OKL_HEADER_INTERFACE.SUB_JURISDICTION%TYPE
533      ,LIEN_EXPIRATION_DATE               OKL_HEADER_INTERFACE.LIEN_EXPIRATION_DATE%TYPE
534      ,LIEN_CONTINUATION_NUMBER           OKL_HEADER_INTERFACE.LIEN_CONTINUATION_NUMBER%TYPE
535      ,LIEN_CONTINUATION_DATE             OKL_HEADER_INTERFACE.LIEN_CONTINUATION_DATE%TYPE
536      ,TITLE_TYPE                         OKL_HEADER_INTERFACE.TITLE_TYPE%TYPE
537      ,TITLE_ISSUER_NAME                  OKL_HEADER_INTERFACE.TITLE_ISSUER_NAME%TYPE
538      ,TITLE_ISSUER_ID                    OKL_HEADER_INTERFACE.TITLE_ISSUER_ID%TYPE
539      ,TITLE_DATE                         OKL_HEADER_INTERFACE.TITLE_DATE%TYPE
540      ,TITLE_NUMBER                       OKL_HEADER_INTERFACE.TITLE_NUMBER%TYPE
541      ,REGISTRATION_NUMBER                OKL_HEADER_INTERFACE.REGISTRATION_NUMBER%TYPE
542      ,LOCATION                           OKL_HEADER_INTERFACE.LOCATION%TYPE
543      ,TITLE_CUSTODIAN_NAME               OKL_HEADER_INTERFACE.TITLE_CUSTODIAN_NAME%TYPE
544      ,TITLE_CUSTODIAN_ID                 OKL_HEADER_INTERFACE.TITLE_CUSTODIAN_ID%TYPE
545      ,PAYEE_SITE                         OKL_HEADER_INTERFACE.PAYEE_SITE%TYPE
546      ,REGISTRATION_LOCATION              OKL_HEADER_INTERFACE.REGISTRATION_LOCATION%TYPE
547      ,REG_EXPIRATION_DATE                OKL_HEADER_INTERFACE.REG_EXPIRATION_DATE%TYPE
548      ,CREDIT_LINE_ID                     OKL_HEADER_INTERFACE.CREDIT_LINE_ID%TYPE
549      ,CREDIT_LINE_NUMBER                 OKL_HEADER_INTERFACE.CREDIT_LINE_NUMBER%TYPE
550      ,PRTFL_APPROVAL_REQ                 OKL_HEADER_INTERFACE.PRTFL_APPROVAL_REQ%TYPE
551      ,PRTFL_ASSGN_GROUP                  OKL_HEADER_INTERFACE.PRTFL_ASSGN_GROUP%TYPE
552      ,PRTFL_BUDGET_AMT_OPT               OKL_HEADER_INTERFACE.PRTFL_ASSGN_GROUP%TYPE
553      ,PRTFL_BUDGET_FIXED_AMT             OKL_HEADER_INTERFACE.PRTFL_BUDGET_FIXED_AMT%TYPE
554      ,PRTFL_BUDGET_AMT_FORMULA           OKL_HEADER_INTERFACE.PRTFL_BUDGET_AMT_FORMULA%TYPE
555      ,PRTFL_DAYS_FROM_CON_EXPR           OKL_HEADER_INTERFACE.PRTFL_DAYS_FROM_CON_EXPR%TYPE
556      ,PRTFL_STRATEGY                     OKL_HEADER_INTERFACE.PRTFL_STRATEGY%TYPE
557      ,PROP_TAX_APPLICABLE                OKL_HEADER_INTERFACE.PROP_TAX_APPLICABLE%TYPE
558      ,PROP_TAX_LEASE_REP                 OKL_HEADER_INTERFACE.PROP_TAX_LEASE_REP%TYPE
559      ,MEX_TAX_SUB_BASIC_WTHLD            OKL_HEADER_INTERFACE.MEX_TAX_SUB_BASIC_WTHLD%TYPE
560      ,MEX_TAX_CALC_FORMULA               OKL_HEADER_INTERFACE.MEX_TAX_CALC_FORMULA%TYPE
561      ,AUS_TAX_STAMP_DUTY                 OKL_HEADER_INTERFACE.AUS_TAX_STAMP_DUTY%TYPE
562      ,CURRENCY_CONVERSION_TYPE           OKL_HEADER_INTERFACE.CURRENCY_CONVERSION_TYPE%TYPE
563      ,CURRENCY_CONVERSION_RATE           OKL_HEADER_INTERFACE.CURRENCY_CONVERSION_RATE%TYPE
564      ,CURRENCY_CONVERSION_DATE           OKL_HEADER_INTERFACE.CURRENCY_CONVERSION_DATE%TYPE
565      ,ASSIGNABLE_YN                      OKL_HEADER_INTERFACE.ASSIGNABLE_YN%TYPE
566      ,LESSEE_VENDOR_ID                   OKL_HEADER_INTERFACE.LESSEE_VENDOR_ID%TYPE
567      ,LESSEE_VENDOR_NAME                 OKL_HEADER_INTERFACE.LESSEE_VENDOR_NAME%TYPE
568      ,LESSEE_VENDOR_SITE_ID              OKL_HEADER_INTERFACE.LESSEE_VENDOR_SITE_ID%TYPE
569      ,LESSEE_VENDOR_SITE_CODE            OKL_HEADER_INTERFACE.LESSEE_VENDOR_SITE_CODE%TYPE
570 -- cklee start 02/23/2004
571      ,INSURANCE_COMPANY_NUMBER           OKL_HEADER_INTERFACE.INSURANCE_COMPANY_NUMBER%TYPE
572      ,INSURANCE_COMPANY_SITE_NUMBER      OKL_HEADER_INTERFACE.INSURANCE_COMPANY_SITE_NUMBER%TYPE
573      ,AGENT_NUMBER                       OKL_HEADER_INTERFACE.AGENT_NUMBER%TYPE
574      ,AGENT_ADDRESS_SITE_NUMBER          OKL_HEADER_INTERFACE.AGENT_ADDRESS_SITE_NUMBER%TYPE
575      --,RELEASED_ASSET_YN                  OKL_HEADER_INTERFACE.RELEASED_ASSET_YN%TYPE
576 -- cklee start 02/23/2004
577      ,CASH_APPL_RULE_NAME                OKL_HEADER_INTERFACE.CASH_APPL_RULE_NAME%TYPE
578 -- Added by rravikir (Fix for Bug 3947959) 10/07/2004
579      ,PROP_TAX_BILL_METHOD               OKL_HEADER_INTERFACE.PROP_TAX_BILL_METHOD%TYPE
580 -- End
581   -- AKP new rules 4067094
582      ,GAIN_LOSS_TOLRNC_ALLWD_AMT         OKL_HEADER_INTERFACE.GAIN_LOSS_TOLRNC_ALLWD_AMT%TYPE
583      ,GAIN_LOSS_TOLRNC_ALLWD_FRML        OKL_HEADER_INTERFACE.GAIN_LOSS_TOLRNC_ALLWD_FRML%TYPE
584      ,GAIN_LOSS_TOLRNC_BASIS             OKL_HEADER_INTERFACE.GAIN_LOSS_TOLRNC_BASIS%TYPE
585      ,GAIN_LOSS_APPRV_PROC_FRML          OKL_HEADER_INTERFACE.GAIN_LOSS_APPRV_PROC_FRML%TYPE
586      ,ERT_ABSORBED_FEE_FRML              OKL_HEADER_INTERFACE.ERT_ABSORBED_FEE_FRML%TYPE
587      ,ERT_EXPENSE_FEE_FRML               OKL_HEADER_INTERFACE.ERT_EXPENSE_FEE_FRML%TYPE
588      ,ERT_FINANCED_FEE_FRML              OKL_HEADER_INTERFACE.ERT_FINANCED_FEE_FRML%TYPE
589      ,ERT_GENERAL_FEE_FRML               OKL_HEADER_INTERFACE.ERT_GENERAL_FEE_FRML%TYPE
590      ,ERT_INCOME_FEE_FRML                OKL_HEADER_INTERFACE.ERT_INCOME_FEE_FRML%TYPE
591      ,ERT_MISC_FEE_FRML                  OKL_HEADER_INTERFACE.ERT_MISC_FEE_FRML%TYPE
592      ,ERT_PASSTHRU_FEE_FRML              OKL_HEADER_INTERFACE.ERT_PASSTHRU_FEE_FRML%TYPE
593      ,ERT_ROLLOVER_FEE_FRML              OKL_HEADER_INTERFACE.ERT_ROLLOVER_FEE_FRML%TYPE
594      ,EOT_ABSORBED_FEE_FRML              OKL_HEADER_INTERFACE.EOT_ABSORBED_FEE_FRML%TYPE
595      ,EOT_EXPENSE_FEE_FRML               OKL_HEADER_INTERFACE.EOT_EXPENSE_FEE_FRML%TYPE
596      ,EOT_FINANCED_FEE_FRML              OKL_HEADER_INTERFACE.EOT_FINANCED_FEE_FRML%TYPE
597      ,EOT_GENERAL_FEE_FRML               OKL_HEADER_INTERFACE.EOT_GENERAL_FEE_FRML%TYPE
598      ,EOT_INCOME_FEE_FRML                OKL_HEADER_INTERFACE.EOT_INCOME_FEE_FRML%TYPE
599      ,EOT_MISC_FEE_FRML                  OKL_HEADER_INTERFACE.EOT_MISC_FEE_FRML%TYPE
600      ,EOT_PASSTHRU_FEE_FRML              OKL_HEADER_INTERFACE.EOT_PASSTHRU_FEE_FRML%TYPE
601      ,EOT_ROLLOVER_FEE_FRML              OKL_HEADER_INTERFACE.EOT_ROLLOVER_FEE_FRML%TYPE
602   -- AKP new rules 4067094
603      ,DELETE_BEFORE_IMPORT_YN            OKL_HEADER_INTERFACE.DELETE_BEFORE_IMPORT_YN%TYPE /* akp_delete */
604      ,ST_UPDATE_LINES_FROM_CONTRACT      OKL_HEADER_INTERFACE.ST_UPDATE_LINES_FROM_CONTRACT%TYPE
605      ,ST_INTEREST_DISCLOSED              OKL_HEADER_INTERFACE.ST_INTEREST_DISCLOSED%TYPE
606      ,ST_TRANSFER_OF_TITLE               OKL_HEADER_INTERFACE.ST_TRANSFER_OF_TITLE%TYPE
607      ,ST_SALE_AND_LEASE_BACK             OKL_HEADER_INTERFACE.ST_SALE_AND_LEASE_BACK%TYPE
608      ,ST_PURCHASE_OF_LEASE               OKL_HEADER_INTERFACE.ST_PURCHASE_OF_LEASE%TYPE
609      ,ST_EQUIPMENT_USAGE                 OKL_HEADER_INTERFACE.ST_EQUIPMENT_USAGE%TYPE
610      ,ST_EQUIPMENT_AGE                   OKL_HEADER_INTERFACE.ST_EQUIPMENT_AGE%TYPE
611      ,ST_ASSET_UPFRONT_TAX               OKL_HEADER_INTERFACE.ST_ASSET_UPFRONT_TAX%TYPE
612      ,ST_BILL_STREAM_TYPE_CODE           OKL_HEADER_INTERFACE.ST_BILL_STREAM_TYPE_CODE%TYPE
613      ,ST_BILL_STREAM_PURPOSE_CODE        OKL_HEADER_INTERFACE.ST_BILL_STREAM_PURPOSE_CODE%TYPE
614      ,ST_FIN_STREAM_TYPE_CODE            OKL_HEADER_INTERFACE.ST_FIN_STREAM_TYPE_CODE%TYPE
615      ,ST_FIN_STREAM_PURPOSE_CODE         OKL_HEADER_INTERFACE.ST_FIN_STREAM_PURPOSE_CODE%TYPE
616      ,ST_CAP_STREAM_TYPE_CODE            OKL_HEADER_INTERFACE.ST_CAP_STREAM_TYPE_CODE%TYPE
617      ,ST_CAP_STREAM_PURPOSE_CODE         OKL_HEADER_INTERFACE.ST_CAP_STREAM_PURPOSE_CODE%TYPE
618      -- AKP: Vartiable Rate
619      ,INT_RATE_EFFECTIVE_FROM_DATE         OKL_HEADER_INTERFACE.INT_RATE_EFFECTIVE_FROM_DATE%TYPE
620      ,INT_RATE_EFFECTIVE_TO_DATE           OKL_HEADER_INTERFACE.INT_RATE_EFFECTIVE_TO_DATE%TYPE
621      ,INT_RATE_PRINC_BASIS_CODE        OKL_HEADER_INTERFACE.INT_RATE_PRINC_BASIS_CODE%TYPE
622      ,INT_RATE_BASIS_CODE         OKL_HEADER_INTERFACE.INT_RATE_BASIS_CODE%TYPE
623      ,INT_RATE_DELAY_CODE             OKL_HEADER_INTERFACE.INT_RATE_DELAY_CODE%TYPE
624      ,INT_RATE_DELAY_FREQ        OKL_HEADER_INTERFACE.INT_RATE_DELAY_FREQ%TYPE
625      ,INT_RATE_CMPND_FREQ_CODE  OKL_HEADER_INTERFACE.INT_RATE_CMPND_FREQ_CODE%TYPE
626      ,INT_RATE_CATCHUP_BASIS_CODE          OKL_HEADER_INTERFACE.INT_RATE_CATCHUP_BASIS_CODE%TYPE
627      ,INT_RATE_CATCHUP_START_DATE          OKL_HEADER_INTERFACE.INT_RATE_CATCHUP_START_DATE%TYPE
628      ,INT_RATE_CAT_STLMNT_CODE     OKL_HEADER_INTERFACE.INT_RATE_CAT_STLMNT_CODE%TYPE
629      ,INT_RATE_CHANGE_START_DATE      OKL_HEADER_INTERFACE.INT_RATE_CHANGE_START_DATE%TYPE
630      ,INT_RATE_CHANGE_FREQ_CODE  OKL_HEADER_INTERFACE.INT_RATE_CHANGE_FREQ_CODE%TYPE
631      ,INT_RATE_CHANGE_VALUE           OKL_HEADER_INTERFACE.INT_RATE_CHANGE_VALUE%TYPE
632      ,INT_RATE_CON_OPTION_CODE      OKL_HEADER_INTERFACE.INT_RATE_CON_OPTION_CODE%TYPE
633      ,INT_RATE_NEXT_CON_DATE        OKL_HEADER_INTERFACE.INT_RATE_NEXT_CON_DATE%TYPE
634      --,INT_RATE_EFFECTIVE_FROM_DATE_CON     OKL_HEADER_INTERFACE.INT_RATE_EFFECTIVE_FROM_DATE_CON%TYPE
635      --,INT_RATE_EFFECTIVE_TO_DATE_CON       OKL_HEADER_INTERFACE.INT_RATE_EFFECTIVE_TO_DATE_CON%TYPE
636      ,INT_RATE_CON_INDEX_NAME       OKL_HEADER_INTERFACE.INT_RATE_CON_INDEX_NAME%TYPE
637      ,INT_RATE_CON_BASE_RATE               OKL_HEADER_INTERFACE.INT_RATE_CON_BASE_RATE%TYPE
638      ,INT_RATE_CON_START_DATE     OKL_HEADER_INTERFACE.INT_RATE_CON_START_DATE%TYPE
639      ,INT_RATE_CON_ADDER_RATE              OKL_HEADER_INTERFACE.INT_RATE_CON_ADDER_RATE%TYPE
640      ,INT_RATE_CON_MAXIMUM_RATE            OKL_HEADER_INTERFACE.INT_RATE_CON_MAXIMUM_RATE%TYPE
641      ,INT_RATE_CON_MINIMUM_RATE            OKL_HEADER_INTERFACE.INT_RATE_CON_MINIMUM_RATE%TYPE
642      ,INT_RATE_CON_PRC_BAS_CODE    OKL_HEADER_INTERFACE.INT_RATE_CON_PRC_BAS_CODE%TYPE
643      ,INT_RATE_CON_DAY_MTH_CODE    OKL_HEADER_INTERFACE.INT_RATE_CON_DAY_MTH_CODE%TYPE
644      ,INT_RATE_CON_DAY_YER_CODE    OKL_HEADER_INTERFACE.INT_RATE_CON_DAY_YER_CODE%TYPE
645      ,INT_RATE_CON_INT_BAS_CODE     OKL_HEADER_INTERFACE.INT_RATE_CON_INT_BAS_CODE%TYPE
646      ,INT_RATE_CON_RATE_DELAY_CODE         OKL_HEADER_INTERFACE.INT_RATE_CON_RATE_DELAY_CODE%TYPE
647      ,INT_RATE_CON_RATE_DELAY_FREQ    OKL_HEADER_INTERFACE.INT_RATE_CON_RATE_DELAY_FREQ%TYPE
648      ,INT_RATE_CON_CMPND_FREQ_CODE  OKL_HEADER_INTERFACE.INT_RATE_CON_CMPND_FREQ_CODE%TYPE
649      ,INT_RATE_CON_FORMULA_NAME  OKL_HEADER_INTERFACE.INT_RATE_CON_FORMULA_NAME%TYPE
650      ,INT_RATE_CON_CAT_BAS_CODE      OKL_HEADER_INTERFACE.INT_RATE_CON_CAT_BAS_CODE%TYPE
651      ,INT_RATE_CON_CAT_START_DATE    OKL_HEADER_INTERFACE.INT_RATE_CON_CAT_START_DATE%TYPE
652      ,INT_RATE_CON_CAT_STLMNT_CODE    OKL_HEADER_INTERFACE.INT_RATE_CON_CAT_STLMNT_CODE%TYPE
653      ,INT_RATE_CON_CHG_START_DATE    OKL_HEADER_INTERFACE.INT_RATE_CON_CHG_START_DATE%TYPE
654      ,INT_RATE_CON_CHG_FREQ_CODE    OKL_HEADER_INTERFACE.INT_RATE_CON_CHG_FREQ_CODE%TYPE
655      ,INT_RATE_CON_CHG_VALUE    OKL_HEADER_INTERFACE.INT_RATE_CON_CHG_VALUE%TYPE
656      ,INT_RATE_CAT_FREQ_CODE    OKL_HEADER_INTERFACE.INT_RATE_CAT_FREQ_CODE%TYPE
657      ,INT_RATE_CON_CAT_FREQ_CODE    OKL_HEADER_INTERFACE.INT_RATE_CON_CAT_FREQ_CODE%TYPE
658       -- Bug 4655611
659      ,RVI_STREAM_CODE  OKL_HEADER_INTERFACE.RVI_STREAM_CODE%TYPE
660      ,RVI_STREAM_PURPOSE_CODE  OKL_HEADER_INTERFACE.RVI_STREAM_PURPOSE_CODE%TYPE
661       -- Bug 4655611
662       -- Contract Additional field, Bug 4558486
663      ,ATTRIBUTE_CATEGORY OKL_HEADER_INTERFACE.ATTRIBUTE_CATEGORY%TYPE
664      ,ATTRIBUTE1         OKL_HEADER_INTERFACE.ATTRIBUTE1%TYPE
665      ,ATTRIBUTE2         OKL_HEADER_INTERFACE.ATTRIBUTE2%TYPE
666      ,ATTRIBUTE3         OKL_HEADER_INTERFACE.ATTRIBUTE3%TYPE
667      ,ATTRIBUTE4         OKL_HEADER_INTERFACE.ATTRIBUTE4%TYPE
668      ,ATTRIBUTE5         OKL_HEADER_INTERFACE.ATTRIBUTE5%TYPE
669      ,ATTRIBUTE6         OKL_HEADER_INTERFACE.ATTRIBUTE6%TYPE
670      ,ATTRIBUTE7         OKL_HEADER_INTERFACE.ATTRIBUTE7%TYPE
671      ,ATTRIBUTE8         OKL_HEADER_INTERFACE.ATTRIBUTE8%TYPE
672      ,ATTRIBUTE9         OKL_HEADER_INTERFACE.ATTRIBUTE9%TYPE
673      ,ATTRIBUTE10        OKL_HEADER_INTERFACE.ATTRIBUTE10%TYPE
674      ,ATTRIBUTE11        OKL_HEADER_INTERFACE.ATTRIBUTE11%TYPE
675      ,ATTRIBUTE12        OKL_HEADER_INTERFACE.ATTRIBUTE12%TYPE
676      ,ATTRIBUTE13        OKL_HEADER_INTERFACE.ATTRIBUTE13%TYPE
677      ,ATTRIBUTE14        OKL_HEADER_INTERFACE.ATTRIBUTE14%TYPE
678      ,ATTRIBUTE15        OKL_HEADER_INTERFACE.ATTRIBUTE15%TYPE
679       -- Contract Additional field, Bug 4558486
680      -- $1 Buyout
681      ,EOT_AUTO_PROC_PURCHASE_OPT OKL_HEADER_INTERFACE.EOT_AUTO_PROC_PURCHASE_OPT%TYPE
682      -- $1 Buyout
683      ,PTH_EVG_PAYOUT_BASIS        OKL_HEADER_INTERFACE.PTH_EVG_PAYOUT_BASIS%TYPE
684      ,PTH_PAYOUT_BASIS_FORMULA    OKL_HEADER_INTERFACE.PTH_PAYOUT_BASIS_FORMULA%TYPE
685      ,PTH_EVG_STREAM_CODE         OKL_HEADER_INTERFACE.PTH_EVG_STREAM_CODE%TYPE
686      ,PTH_EVG_STREAM_PURPOSE_CODE OKL_HEADER_INTERFACE.PTH_EVG_STREAM_PURPOSE_CODE%TYPE
687      ,SEND_BILL_SALE               OKL_HEADER_INTERFACE.SEND_BILL_SALE%TYPE
688      ,MANUAL_QUOTES_ONLY           OKL_HEADER_INTERFACE.MANUAL_QUOTES_ONLY%TYPE
689      ,FIRST_TERMINATION_DATE       OKL_HEADER_INTERFACE.FIRST_TERMINATION_DATE%TYPE
690      ,QUOTE_RCPT_ADDL_RCPT_ROLE    OKL_HEADER_INTERFACE.QUOTE_RCPT_ADDL_RCPT_ROLE%TYPE
691      ,QUOTE_RCPT_ALLOC_PTG         OKL_HEADER_INTERFACE.QUOTE_RCPT_ALLOC_PTG%TYPE
692      ,QUOTE_APPRVR_ADV_NOTICE_ROLE OKL_HEADER_INTERFACE.QUOTE_APPRVR_ADV_NOTICE_ROLE%TYPE
693      ,QUOTE_APPROVER_DELAY_DAYS    OKL_HEADER_INTERFACE.QUOTE_APPROVER_DELAY_DAYS%TYPE
694      ,ERT_SERV_MANT_FRML           OKL_HEADER_INTERFACE.ERT_SERV_MANT_FRML%TYPE
695      ,EOT_SERV_MANT_FRML           OKL_HEADER_INTERFACE.EOT_SERV_MANT_FRML%TYPE
696      --Added by dpsingh for LE Uptake
697      ,LEGAL_ENTITY_ID              NUMBER := Okl_Api.G_MISS_NUM
698      -- Added by Punith for R12 ebtax
699      ,ST_TAX_SCHEDULE_APPLIES_FLAG OKL_HEADER_INTERFACE.ST_TAX_SCHEDULE_APPLIES_FLAG%TYPE
700    );
701 
702    SUBTYPE fee_types_rec_type IS OKL_MAINTAIN_FEE_PVT.fee_types_rec_type;
703    SUBTYPE tlpv_rec_type IS okl_txl_assets_pub.tlpv_rec_type;
704 
705  TYPE intf_party_rec_type IS RECORD (
706      CONTRACT_NUMBER         OKL_HEADER_INTERFACE.CONTRACT_NUMBER_OLD%TYPE
707      ,LINE_NUMBER             OKL_LINES_INTERFACE.LINE_NUMBER%TYPE
708 --
709      ,PARTY_ID                HZ_PARTIES.PARTY_ID%TYPE
710      ,PARTY_NUMBER            HZ_PARTIES.PARTY_NUMBER%TYPE
711      ,PARTY_NAME              HZ_PARTIES.PARTY_NAME%TYPE
712      ,PARTY_CATEGORY_CODE     HZ_PARTIES.CATEGORY_CODE%TYPE
713 --
714      ,PARTY_SITE_ID           HZ_PARTY_SITES.PARTY_SITE_ID%TYPE
715      ,PARTY_SITE_NUMBER       HZ_PARTY_SITES.PARTY_SITE_NUMBER%TYPE
716      ,PARTY_SITE_NAME         HZ_PARTY_SITES.PARTY_SITE_NAME%TYPE
717 --
718      ,INTF_PARTY_ID           VARCHAR2(150)
719      ,INTF_PARTY_NUMBER       VARCHAR2(150)
720      ,INTF_PARTY_NAME         VARCHAR2(150)
721      ,INTF_PARTY_SITE_ID      VARCHAR2(150)
722      ,INTF_PARTY_SITE_NUMBER  VARCHAR2(150)
723      ,INTF_PARTY_SITE_NAME    VARCHAR2(150)
724    );
725 
726 
727    G_BASE_PMNT_HDR       pphv_rec_type;
728    G_EVG_PMNT_HDR        pphv_rec_type;
729    G_LLA_CHR_ID          CONSTANT VARCHAR2(30) := 'OKL_LLA_CHR_ID';
730 
731    G_EVG_CONT_PMNT_HDR   pphv_rec_type; -- Evergreen param at contract header
732 
733 
734 ------------------------------------------------------------------------------
735 -- PROCEDURE debug_message
736 --
737 --  This procedure prints debug message depending on DEBUG flag
738 --
739 -- Calls:
740 -- Called By:
741 ------------------------------------------------------------------------------
742    PROCEDURE debug_message(
743                            p_message IN VARCHAR2
744                           ) IS
745    L_DEBUG NUMBER := 1;
746    BEGIN
747       IF ( L_DEBUG = 1 ) THEN
748         fnd_file.put_line (fnd_file.log, p_message);
749         --dbms_output.put_line (p_message);
750          okl_debug_pub.logmessage(p_message);
751       END IF;
752 
753       RETURN;
754    END debug_message;
755 
756 ------------------------------------------------------------------------------
757 -- PROCEDURE Report_Error
758 -- It is a generalized routine to display error on Concurrent Manager Log file
759 -- Calls:
760 --   okl_api package
761 --   fnd_msg_pub package
762 -- Called by:
763 --   process_record
764 --   check_input_record
765 --   process_input_record
766 ------------------------------------------------------------------------------
767 
768   PROCEDURE Report_Error(
769                          x_msg_count OUT NOCOPY NUMBER,
770                          x_msg_data  OUT NOCOPY VARCHAR2
771                         ) IS
772 
773   x_msg_index_out NUMBER;
774   x_msg_out       VARCHAR2(2000);
775 
776   BEGIN
777 
778     okl_api.end_activity(
779                          X_msg_count => x_msg_count,
780                          X_msg_data  => x_msg_data
781                         );
782 
783     FOR i in 1..x_msg_count
784     LOOP
785       FND_MSG_PUB.GET(
786                       p_msg_index     => i,
787                       p_encoded       => FND_API.G_FALSE,
788                       p_data          => x_msg_data,
789                       p_msg_index_out => x_msg_index_out
790                      );
791 
792       fnd_file.put_line(fnd_file.output, 'Error '||to_char(i)||': '||x_msg_data);
793       --dbms_output.put_line('Error '||to_char(i)||': '||x_msg_data);
794       debug_message('Error '||to_char(i)||': '||x_msg_data);
795 
796     END LOOP;
797     return;
798   EXCEPTION
799     WHEN OTHERS THEN
800       NULL;
801   END Report_Error;
802 
803   PROCEDURE write_to_log(
804                          p_message IN VARCHAR2
805                         ) IS
806   BEGIN
807     --dbms_output.put_line(p_message);
808     debug_message(p_message);
809     fnd_file.put_line(fnd_file.output, p_message);
810   END write_to_log;
811 
812 ------------------------------------------------------------------------------
813 -- PROCEDURE get_can_bto
814 -- It returns CAN and BTO from OKC_K_HEADERS - after migration
815 -- Calls:
816 -- Called by:
817 ------------------------------------------------------------------------------
818 
819    PROCEDURE get_can_bto(
820                          x_return_status  OUT NOCOPY VARCHAR2,
821                          p_chr_id         IN  OKC_K_HEADERS_B.ID%TYPE,
822                          x_bto_id         OUT NOCOPY OKC_K_HEADERS_B.BILL_TO_SITE_USE_ID%TYPE,
823                          x_can_id         OUT NOCOPY OKC_K_HEADERS_B.CUST_ACCT_ID%TYPE
824                         ) IS
825 
826    l_proc_name VARCHAR2(35) := 'GET_CAN_BTO';
827 
828    CURSOR can_bto_csr (p_chr_id OKC_K_HEADERS_B.ID%TYPE) IS
829    SELECT bill_to_site_use_id,
830           cust_acct_id
831    FROM   okc_k_headers_v
832    WHERE  id = p_chr_id;
833 
834    BEGIN
835       x_return_status := OKL_API.G_RET_STS_SUCCESS;
836       OPEN can_bto_csr (p_chr_id);
837       FETCH can_bto_csr INTO x_bto_id,
838                              x_can_id;
839       IF can_bto_csr%NOTFOUND THEN
840          x_return_status := OKL_API.G_RET_STS_ERROR;
841       END IF;
842       CLOSE can_bto_csr;
843 
844    END get_can_bto;
845 
846 ------------------------------------------------------------------------------
847 -- PROCEDURE get_canonical_date
848 -- It changes date input to canonical_date format as specified in FND_DATE
849 -- routine. Only required for date columns which are defined as rule segments
850 -- Calls:
851 -- Called by:
852 ------------------------------------------------------------------------------
853    FUNCTION get_canonical_date(
854                                p_from_date IN DATE
855                               ) RETURN VARCHAR2 IS
856    l_canonical_date VARCHAR2(25);
857 
858    BEGIN
859 
860      l_canonical_date := NULL;
861 
862      SELECT TO_CHAR(p_from_date ,fnd_date.canonical_mask)
863      INTO l_canonical_date
864      FROM dual;
865 
866      RETURN l_canonical_date;
867 
868    EXCEPTION
869      WHEN OTHERS THEN
870         RETURN NULL;
871    END get_canonical_date;
872 
873 ------------------------------------------------------------------------------
874 -- PROCEDURE Process_Record
875 -- It Validates Input record and Load record after SUCCESSFUL validation
876 -- Calls:
877 --   Check_Inout_Record
878 --   Load_Input_Record
879 --   Report Error
880 -- Called by:
881 --   Starting point
882 ------------------------------------------------------------------------------
883   PROCEDURE Process_Record (
884                             errbuf             OUT NOCOPY VARCHAR2,
885                             retcode            OUT NOCOPY VARCHAR2,
886                             p_batch_number     IN VARCHAR2,
887                             p_start_date_from  IN VARCHAR2,
888                             p_start_date_to    IN VARCHAR2,
889                             p_contract_number  IN VARCHAR2,
890                             p_customer_number  IN VARCHAR2,
891                             p_instance_number  IN VARCHAR2 DEFAULT 'NONE'
892                            ) IS
893 
894 
895   X_Progress         VARCHAR2(3) := NULL;
896   l_proc_name         CONSTANT VARCHAR2(30)  := 'PROCESS_RECORD';
897   X_msg_count        NUMBER;
898   X_msg_data         VARCHAR2(2000);
899   X_return_status    VARCHAR2(200);
900   X_total_checked    NUMBER := 0;
901   x_total_loaded     NUMBER := 0;
902   param_error        EXCEPTION;
903   BEGIN
904 
905     X_Progress := '010';
906     X_return_status := OKL_API.G_RET_STS_SUCCESS;
907     g_instance_number := nvl(p_instance_number, 'NONE');
908 
909     --fnd_file.put_line(fnd_file.output, 'OKL Contract Open Interface Report');
910     --fnd_file.put_line(fnd_file.output, '==================================');
911     write_to_log('OKL Contract Open Interface Report');
912     write_to_log('==================================');
913 
914     write_to_log('***** Parameter values *****');
915     write_to_log('Batch Number            : '||NVL(p_batch_number,'NULL'));
916     write_to_log('Contract Start Date From: '||NVL(p_start_date_from,'NULL'));
917     write_to_log('Contract Start Date To  : '||NVL(p_start_date_to,'NULL'));
918     write_to_log('Contract Number         : '||NVL(p_contract_number,'NULL'));
919     write_to_log('Customer Number         : '||NVL(p_customer_number,'NULL'));
920     write_to_log('Instance Number         : '||NVL(p_instance_number,'NULL'));
921     write_to_log('==================================');
922 
923     IF (p_batch_number    IS NULL AND
924        p_start_date_from IS NULL AND
925        p_start_date_to   IS NULL AND
926        p_contract_number IS NULL AND
927        p_customer_number IS NULL ) THEN  -- All Null
928 
929        okl_api.set_message(
930                            G_APP_NAME,
931                            G_NULL_PARAMETER
932                           );
933        RAISE param_error;
934     ELSIF
935        (p_batch_number     IS NOT NULL AND
936         (p_start_date_from IS NOT NULL OR
937          p_start_date_to   IS NOT NULL OR
938          p_contract_number IS NOT NULL OR
939          p_customer_number IS NOT NULL)) THEN  -- Provide Batch Number only
940 
941        okl_api.set_message(
942                            G_APP_NAME,
943                            G_INVALID_PARAMETER,
944                            'PARAM_NAME',
945                            'BATCH_NUMBER'
946                           );
947        RAISE param_error;
948     ELSIF
949        (p_customer_number IS NOT NULL
950         AND
951         p_start_date_from IS NULL
952         AND
953         p_start_date_to IS NULL
954        ) THEN
955        okl_api.set_message(
956                            G_APP_NAME,
957                            G_INVALID_PARAMETER,
958                            'PARAM_NAME',
959                            'Customer Number And Start Date From To'
960                           );
961        RAISE param_error;
962     END IF;
963 
964 /* Bug 4350579 - no need to run check_input_record
965  * Validations are moved to load procedure
966  *
967  *
968  *  check_input_record(
969  *                  p_init_msg_list   => OKL_API.G_TRUE,
970  *                  x_return_status   => X_return_status,
971  *                  x_msg_count       => X_msg_count,
972  *                  x_msg_data        => X_msg_data,
973  *                  p_batch_number    => p_batch_number,
974  *                  p_start_date_from => FND_DATE.CANONICAL_TO_DATE(p_start_date_from),
975  *                  p_start_date_to   => FND_DATE.CANONICAL_TO_DATE(p_start_date_to),
976  *                  p_contract_number => p_contract_number,
977  *                  p_customer_number => p_customer_number,
978  *                  x_total_checked   => x_total_checked
979  *                 );
980  *
981  *       okl_open_interface_pvt.report_error (
982  *                                        x_msg_count => x_msg_count,
983  *                                        x_msg_data  => x_msg_data
984  *                                       );
985  *
986     -- Check if Validation is SUCCESSFUL or not
987     --fnd_file.put_line(fnd_file.output, '==================================');
988     --fnd_file.put_line(fnd_file.output, 'Total Contract Checked for loading: '||TO_CHAR(nvl(x_total_checked,0)));
989     --fnd_file.put_line(fnd_file.output, '==================================');
990 
991  *  write_to_log('==================================');
992  *  write_to_log('Total Contract Checked for loading: '||TO_CHAR(nvl(x_total_checked,0)));
993  *  write_to_log('==================================');
994  *  Bug 4350579
995  */
996     Load_Input_Record(
997                     p_init_msg_list   => OKL_API.G_TRUE,
998                     x_return_status   => X_return_status,
999                     x_msg_count       => X_msg_count,
1000                     x_msg_data        => X_msg_data,
1001                     p_batch_number    => p_batch_number,
1002                     p_start_date_from => FND_DATE.CANONICAL_TO_DATE(p_start_date_from),
1003                     p_start_date_to   => FND_DATE.CANONICAL_TO_DATE(p_start_date_to),
1004                     p_contract_number => p_contract_number,
1005                     p_customer_number => p_customer_number,
1006                     x_total_loaded    => x_total_loaded
1007                    );
1008 
1009     write_to_log('==================================');
1010     write_to_log('Total Contract loaded: '||TO_CHAR(nvl(x_total_loaded,0)));
1011     write_to_log('==================================');
1012 
1013     RETURN;
1014 
1015     EXCEPTION
1016       WHEN param_error THEN
1017       okl_api.end_activity(
1018                            X_msg_count => X_msg_count,
1019                            X_msg_data  => X_msg_data
1020                           );
1021 
1022       report_error(
1023                    x_msg_count => X_msg_count,
1024                    x_msg_data  => X_msg_data
1025                   );
1026 
1027    END Process_Record;
1028 
1029 ------------------------------------------------------------------------------
1030 -- PROCEDURE Update_Interface_Status
1031 -- It Changes Status to Interface Table
1032 -- Calls:
1033 --  None
1034 -- Called By:
1035 --  check_input_record
1036 --  load_input_record
1037 ------------------------------------------------------------------------------
1038    PROCEDURE Update_Interface_Status (p_contract_number IN  okl_header_interface.contract_number_old%TYPE,
1039                                       p_new_contract_number IN okl_header_interface.contract_number%TYPE,
1040                                       p_status          IN  VARCHAR2,
1041                                       x_return_status   OUT NOCOPY VARCHAR2 ) IS
1042 
1043    x_proc_name    VARCHAR2(35) := 'UPDATE_INTERFACE_STATUS';
1044    update_failed  EXCEPTION;
1045    BEGIN
1046 
1047      x_return_status := OKL_API.G_RET_STS_SUCCESS;
1048 
1049      UPDATE okl_header_interface
1050      SET    status              = p_status,
1051             contract_number     = p_new_contract_number,
1052             scheduled_worker_id = decode(p_status, 'ERROR', null, scheduled_worker_id),
1053             date_created_in_okl = decode(p_status,'INTERFACED',SYSDATE,
1054                                                   'FINAL', SYSDATE, NULL) -- update date in case of Successful loading
1055      WHERE  contract_number_old = p_contract_number;
1056 
1057      IF SQL%NOTFOUND THEN
1058         RAISE update_failed;
1059      END IF;
1060 
1061    EXCEPTION
1062      WHEN update_failed THEN
1063       okl_api.set_message(
1064                           G_APP_NAME,
1065                           G_UNEXPECTED_ERROR,
1066                           'OKL_SQLCODE',
1067                           SQLCODE,
1068                           'OKL_SQLERRM',
1069                           SQLERRM || ': '||G_PKG_NAME||'.'||x_proc_name
1070                          );
1071        x_return_status := OKL_API.G_RET_STS_ERROR;
1072 
1073    END Update_Interface_Status;
1074 
1075 ------------------------------------------------------------------------------
1076 -- PROCEDURE get_template
1077 -- It returns Template Contract information identified by p_template_number
1078 -- Calls:
1079 --  None
1080 -- Called By:
1081 ------------------------------------------------------------------------------
1082    FUNCTION get_template (
1083                            x_return_status   OUT NOCOPY VARCHAR2,
1084                            x_msg_count       OUT NOCOPY NUMBER,
1085                            x_msg_data        OUT NOCOPY VARCHAR2,
1086                            p_template_number IN  VARCHAR2
1087                           )
1088    RETURN template_h_rec_TYPE IS
1089 
1090    CURSOR t_header_csr (p_template VARCHAR2) IS
1091    SELECT
1092       ID
1093       ,OBJECT_VERSION_NUMBER
1094       ,SFWT_FLAG
1095       ,CHR_ID_RESPONSE
1096       ,CHR_ID_AWARD
1097       ,CHR_ID_RENEWED
1098       ,INV_ORGANIZATION_ID
1099       ,STS_CODE
1100       ,QCL_ID
1101       ,SCS_CODE
1102       ,CONTRACT_NUMBER
1103       ,CURRENCY_CODE
1104       ,CONTRACT_NUMBER_MODIFIER
1105       ,ARCHIVED_YN
1106       ,DELETED_YN
1107       ,CUST_PO_NUMBER_REQ_YN
1108       ,PRE_PAY_REQ_YN
1109       ,CUST_PO_NUMBER
1110       ,SHORT_DESCRIPTION
1111       ,COMMENTS
1112       ,DESCRIPTION
1113       ,DPAS_RATING
1114       ,COGNOMEN
1115       ,TEMPLATE_YN
1116       ,TEMPLATE_USED
1117       ,DATE_APPROVED
1118       ,DATETIME_CANCELLED
1119       ,AUTO_RENEW_DAYS
1120       ,DATE_ISSUED
1121       ,DATETIME_RESPONDED
1122       ,NON_RESPONSE_REASON
1123       ,NON_RESPONSE_EXPLAIN
1124       ,RFP_TYPE
1125       ,CHR_TYPE
1126       ,KEEP_ON_MAIL_LIST
1127       ,SET_ASIDE_REASON
1128       ,SET_ASIDE_PERCENT
1129       ,RESPONSE_COPIES_REQ
1130       ,DATE_CLOSE_PROJECTED
1131       ,DATETIME_PROPOSED
1132       ,DATE_SIGNED
1133       ,DATE_TERMINATED
1134       ,DATE_RENEWED
1135       ,TRN_CODE
1136       ,START_DATE
1137       ,END_DATE
1138       ,AUTHORING_ORG_ID
1139       ,BUY_OR_SELL
1140       ,ISSUE_OR_RECEIVE
1141       ,ESTIMATED_AMOUNT
1142       ,CHR_ID_RENEWED_TO
1143       ,ESTIMATED_AMOUNT_RENEWED
1144       ,CURRENCY_CODE_RENEWED
1145       ,USER_ACCESS_LEVEL
1146       ,UPG_ORIG_SYSTEM_REF
1147       ,UPG_ORIG_SYSTEM_REF_ID
1148       ,APPLICATION_ID
1149       ,RESOLVED_UNTIL
1150       ,ATTRIBUTE_CATEGORY
1151       ,ATTRIBUTE1
1152       ,ATTRIBUTE2
1153       ,ATTRIBUTE3
1154       ,ATTRIBUTE4
1155       ,ATTRIBUTE5
1156       ,ATTRIBUTE6
1157       ,ATTRIBUTE7
1158       ,ATTRIBUTE8
1159       ,ATTRIBUTE9
1160       ,ATTRIBUTE10
1161       ,ATTRIBUTE11
1162       ,ATTRIBUTE12
1163       ,ATTRIBUTE13
1164       ,ATTRIBUTE14
1165       ,ATTRIBUTE15
1166       ,CREATED_BY
1167       ,CREATION_DATE
1168       ,LAST_UPDATED_BY
1169       ,LAST_UPDATE_DATE
1170       ,LAST_UPDATE_LOGIN
1171       ,ORIG_SYSTEM_SOURCE_CODE
1172       ,ORIG_SYSTEM_ID1
1173       ,ORIG_SYSTEM_REFERENCE1
1174       ,KHR_ROW_ID
1175       ,KHR_OBJECT_VERSION_NUMBER
1176       ,ISG_ID
1177       ,KHR_ID
1178       ,PDT_ID
1179       ,AMD_CODE
1180       ,DATE_FIRST_ACTIVITY
1181       ,GENERATE_ACCRUAL_YN
1182       ,GENERATE_ACCRUAL_OVERRIDE_YN
1183       ,DATE_REFINANCED
1184       ,CREDIT_ACT_YN
1185       ,TERM_DURATION
1186       ,CONVERTED_ACCOUNT_YN
1187       ,DATE_CONVERSION_EFFECTIVE
1188       ,SYNDICATABLE_YN
1189       ,SALESTYPE_YN
1190       ,DATE_DEAL_TRANSFERRED
1191       ,DATETIME_PROPOSAL_EFFECTIVE
1192       ,DATETIME_PROPOSAL_INEFFECTIVE
1193       ,DATE_PROPOSAL_ACCEPTED
1194       ,KHR_ATTRIBUTE_CATEGORY
1195       ,KHR_ATTRIBUTE1
1196       ,KHR_ATTRIBUTE2
1197       ,KHR_ATTRIBUTE3
1198       ,KHR_ATTRIBUTE4
1199       ,KHR_ATTRIBUTE5
1200       ,KHR_ATTRIBUTE6
1201       ,KHR_ATTRIBUTE7
1202       ,KHR_ATTRIBUTE8
1203       ,KHR_ATTRIBUTE9
1204       ,KHR_ATTRIBUTE10
1205       ,KHR_ATTRIBUTE11
1206       ,KHR_ATTRIBUTE12
1207       ,KHR_ATTRIBUTE13
1208       ,KHR_ATTRIBUTE14
1209       ,KHR_ATTRIBUTE15
1210       ,KHR_CREATED_BY
1211       ,KHR_CREATON_DATE
1212       ,KHR_LAST_UPDATED_BY
1213       ,KHR_LAST_UPDATE_DATE
1214       ,KHR_LAST_UPDATE_LOGIN
1215       ,PRE_TAX_YIELD
1216       ,AFTER_TAX_YIELD
1217       ,IMPLICIT_INTEREST_RATE
1218       ,IMPLICIT_NON_IDC_INTEREST_RATE
1219       ,TARGET_PRE_TAX_YIELD
1220       ,TARGET_AFTER_TAX_YIELD
1221       ,TARGET_IMPLICIT_INTEREST_RATE
1222       ,TARGET_IMPLICIT_NONIDC_INTRATE
1223       ,DATE_LAST_INTERIM_INTEREST_CAL
1224       ,DEAL_TYPE
1225       ,PRE_TAX_IRR
1226       ,AFTER_TAX_IRR
1227       ,EXPECTED_DELIVERY_DATE
1228       ,ACCEPTED_DATE
1229       ,PREFUNDING_ELIGIBLE_YN
1230       ,REVOLVING_CREDIT_YN
1231       ,CURRENCY_CONVERSION_TYPE
1232       ,CURRENCY_CONVERSION_RATE
1233       ,CURRENCY_CONVERSION_DATE
1234       ,ASSIGNABLE_YN
1235       ,CUST_ACCT_ID
1236       ,BILL_TO_SITE_USE_ID
1237    FROM okl_k_headers_full_v
1238    WHERE contract_number = p_template
1239    AND   template_yn = 'Y';
1240 
1241    l_t_header_rec  template_h_rec_type;
1242    template_failed EXCEPTION;
1243 
1244    l_proc_name VARCHAR2(30) := 'GET_TEMPLATE';
1245    BEGIN
1246 
1247      x_return_status := OKL_API.G_RET_STS_SUCCESS;
1248 
1249      OPEN t_header_csr (p_template_number);
1250      FETCH t_header_csr into l_t_header_rec;
1251      IF t_header_csr%NOTFOUND THEN
1252         okl_api.set_message(
1253                             G_APP_NAME,
1254                             G_INVALID_TEMPLATE,
1255                             'TEMPLATE_NUMBER',
1256                             p_template_number
1257                            );
1258         RAISE template_failed;
1259      END IF;
1260      CLOSE t_header_csr;
1261 
1262      RETURN l_t_header_rec;
1263 
1264    EXCEPTION
1265      WHEN template_failed THEN
1266         IF t_header_csr%ISOPEN THEN
1267            CLOSE t_header_csr;
1268         END IF;
1269         x_return_status := OKL_API.G_RET_STS_ERROR;
1270    END get_template;
1271 
1272 
1273 --*********************** check Interface **************************************
1274 
1275 ------------------------------------------------------------------------------
1276 -- PROCEDURE get_contract_rules
1277 -- It retrives rules associated with contract and returns error, if any
1278 -- Calls:
1279 --  None
1280 -- Called By:
1281 ------------------------------------------------------------------------------
1282   PROCEDURE get_contract_rules(
1283                                x_return_status   OUT NOCOPY VARCHAR2,
1284                                x_msg_count       OUT NOCOPY NUMBER,
1285                                x_msg_data        OUT NOCOPY VARCHAR2,
1286                                p_chr_id          IN  OKC_K_HEADERS_V.ID%TYPE,
1287                                p_cle_id          IN  OKC_K_LINES_V.ID%TYPE,
1288                                p_rgd_code        IN  OKC_RULE_GROUPS_V.RGD_CODE%TYPE,
1289                                p_rule_code       IN  OKC_RULES_V.RULE_INFORMATION_CATEGORY%TYPE,
1290                                x_rulv_tbl        OUT NOCOPY rulv_tbl_type,
1291                                x_rule_count      OUT NOCOPY NUMBER
1292                               ) IS
1293   l_proc_name VARCHAR2(35) := 'GET_CONTRACT_RULES';
1294 
1295   CURSOR rulv_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE,
1296                    p_cle_id OKC_K_LINES_V.ID%TYPE,
1297                    p_rgd_code OKC_RULE_GROUPS_V.RGD_CODE%TYPE,
1298                    p_rule_code OKC_RULES_V.RULE_INFORMATION_CATEGORY%TYPE) IS
1299   SELECT
1300             rule.ID,
1301             rule.OBJECT_VERSION_NUMBER,
1302             rule.SFWT_FLAG,
1303             rule.OBJECT1_ID1,
1304             rule.OBJECT2_ID1,
1305             rule.OBJECT3_ID1,
1306             rule.OBJECT1_ID2,
1307             rule.OBJECT2_ID2,
1308             rule.OBJECT3_ID2,
1309             rule.JTOT_OBJECT1_CODE,
1310             rule.JTOT_OBJECT2_CODE,
1311             rule.JTOT_OBJECT3_CODE,
1312             rule.DNZ_CHR_ID,
1313             rule.RGP_ID,
1314             rule.PRIORITY,
1315             rule.STD_TEMPLATE_YN,
1316             rule.COMMENTS,
1317             rule.WARN_YN,
1318             rule.ATTRIBUTE_CATEGORY,
1319             rule.ATTRIBUTE1,
1320             rule.ATTRIBUTE2,
1321             rule.ATTRIBUTE3,
1322             rule.ATTRIBUTE4,
1323             rule.ATTRIBUTE5,
1324             rule.ATTRIBUTE6,
1325             rule.ATTRIBUTE7,
1326             rule.ATTRIBUTE8,
1327             rule.ATTRIBUTE9,
1328             rule.ATTRIBUTE10,
1329             rule.ATTRIBUTE11,
1330             rule.ATTRIBUTE12,
1331             rule.ATTRIBUTE13,
1332             rule.ATTRIBUTE14,
1333             rule.ATTRIBUTE15,
1334             rule.CREATED_BY,
1335             rule.CREATION_DATE,
1336             rule.LAST_UPDATED_BY,
1337             rule.LAST_UPDATE_DATE,
1338             rule.LAST_UPDATE_LOGIN,
1339             --rule.TEXT,
1340             rule.RULE_INFORMATION_CATEGORY,
1341             rule.RULE_INFORMATION1,
1342             rule.RULE_INFORMATION2,
1343             rule.RULE_INFORMATION3,
1344             rule.RULE_INFORMATION4,
1345             rule.RULE_INFORMATION5,
1346             rule.RULE_INFORMATION6,
1347             rule.RULE_INFORMATION7,
1348             rule.RULE_INFORMATION8,
1349             rule.RULE_INFORMATION9,
1350             rule.RULE_INFORMATION10,
1351             rule.RULE_INFORMATION11,
1352             rule.RULE_INFORMATION12,
1353             rule.RULE_INFORMATION13,
1354             rule.RULE_INFORMATION14,
1355             rule.RULE_INFORMATION15,
1356             rule.TEMPLATE_YN,
1357             rule.ans_set_jtot_object_code,
1358             rule.ans_set_jtot_object_id1,
1359             rule.ans_set_jtot_object_id2,
1360             rule.DISPLAY_SEQUENCE
1361   FROM   okc_rule_groups_v rg,
1362          okc_rules_v       rule
1363   WHERE  rg.id                          = rule.rgp_id
1364   AND    rg.dnz_chr_id                  = p_chr_id
1365   AND    ( ( p_cle_id IS NULL
1366              AND
1367              rg.cle_id IS NULL
1368            )
1369            OR
1370            rg.cle_id = p_cle_id
1371          )
1372   AND    rg.rgd_code                    = p_rgd_code
1373   AND    rule.rule_information_category = p_rule_code;
1374 
1375   i NUMBER := 0;
1376   BEGIN
1377 
1378     FOR rulv_rec IN rulv_csr (p_chr_id,
1379                               p_cle_id,
1380                               p_rgd_code,
1381                               p_rule_code)
1382     LOOP
1383        i := rulv_csr%ROWCOUNT;
1384        --x_rulv_tbl(i) := rulv_rec;
1385     x_rulv_tbl(i).id                            := rulv_rec.id;
1386     x_rulv_tbl(i).rgp_id                        := rulv_rec.rgp_id;
1387     x_rulv_tbl(i).object1_id1                   := rulv_rec.object1_id1;
1388     x_rulv_tbl(i).object2_id1                   := rulv_rec.object2_id1;
1389     x_rulv_tbl(i).object3_id1                   := rulv_rec.object3_id1;
1390     x_rulv_tbl(i).object1_id2                   := rulv_rec.object1_id2;
1391     x_rulv_tbl(i).object2_id2                   := rulv_rec.object2_id2;
1392     x_rulv_tbl(i).object3_id2                   := rulv_rec.object3_id2;
1393     x_rulv_tbl(i).jtot_object1_code             := rulv_rec.jtot_object1_code;
1394     x_rulv_tbl(i).jtot_object2_code             := rulv_rec.jtot_object2_code;
1395     x_rulv_tbl(i).jtot_object3_code             := rulv_rec.jtot_object3_code;
1396     x_rulv_tbl(i).dnz_chr_id                    := rulv_rec.dnz_chr_id;
1397     x_rulv_tbl(i).std_template_yn               := rulv_rec.std_template_yn;
1398     x_rulv_tbl(i).warn_yn                       := rulv_rec.warn_yn;
1399     x_rulv_tbl(i).priority                      := rulv_rec.priority;
1400     x_rulv_tbl(i).object_version_number         := rulv_rec.object_version_number;
1401     x_rulv_tbl(i).created_by                    := rulv_rec.created_by;
1402     x_rulv_tbl(i).creation_date                 := rulv_rec.creation_date;
1403     x_rulv_tbl(i).last_updated_by               := rulv_rec.last_updated_by;
1404     x_rulv_tbl(i).last_update_date              := rulv_rec.last_update_date;
1405     x_rulv_tbl(i).last_update_login             := rulv_rec.last_update_login;
1406     x_rulv_tbl(i).attribute_category            := rulv_rec.attribute_category;
1407     x_rulv_tbl(i).attribute1                    := rulv_rec.attribute1;
1408     x_rulv_tbl(i).attribute2                    := rulv_rec.attribute2;
1409     x_rulv_tbl(i).attribute3                    := rulv_rec.attribute3;
1410     x_rulv_tbl(i).attribute4                    := rulv_rec.attribute4;
1411     x_rulv_tbl(i).attribute5                    := rulv_rec.attribute5;
1412     x_rulv_tbl(i).attribute6                    := rulv_rec.attribute6;
1413     x_rulv_tbl(i).attribute7                    := rulv_rec.attribute7;
1414     x_rulv_tbl(i).attribute8                    := rulv_rec.attribute8;
1415     x_rulv_tbl(i).attribute9                    := rulv_rec.attribute9;
1416     x_rulv_tbl(i).attribute10                   := rulv_rec.attribute10;
1417     x_rulv_tbl(i).attribute11                   := rulv_rec.attribute11;
1418     x_rulv_tbl(i).attribute12                   := rulv_rec.attribute12;
1419     x_rulv_tbl(i).attribute13                   := rulv_rec.attribute13;
1420     x_rulv_tbl(i).attribute14                   := rulv_rec.attribute14;
1421     x_rulv_tbl(i).attribute15                   := rulv_rec.attribute15;
1422     x_rulv_tbl(i).rule_information_category     := rulv_rec.rule_information_category;
1423     x_rulv_tbl(i).rule_information1             := rulv_rec.rule_information1;
1424     x_rulv_tbl(i).rule_information2             := rulv_rec.rule_information2;
1425     x_rulv_tbl(i).rule_information3             := rulv_rec.rule_information3;
1426     x_rulv_tbl(i).rule_information4             := rulv_rec.rule_information4;
1427     x_rulv_tbl(i).rule_information5             := rulv_rec.rule_information5;
1428     x_rulv_tbl(i).rule_information6             := rulv_rec.rule_information6;
1429     x_rulv_tbl(i).rule_information7             := rulv_rec.rule_information7;
1430     x_rulv_tbl(i).rule_information8             := rulv_rec.rule_information8;
1431     x_rulv_tbl(i).rule_information9             := rulv_rec.rule_information9;
1432     x_rulv_tbl(i).rule_information10            := rulv_rec.rule_information10;
1433     x_rulv_tbl(i).rule_information11            := rulv_rec.rule_information11;
1434     x_rulv_tbl(i).rule_information12            := rulv_rec.rule_information12;
1435     x_rulv_tbl(i).rule_information13            := rulv_rec.rule_information13;
1436     x_rulv_tbl(i).rule_information14            := rulv_rec.rule_information14;
1437     x_rulv_tbl(i).rule_information15            := rulv_rec.rule_information15;
1438     x_rulv_tbl(i).template_yn                   := rulv_rec.template_yn;
1439     x_rulv_tbl(i).ans_set_jtot_object_code      := rulv_rec.ans_set_jtot_object_code;
1440     x_rulv_tbl(i).ans_set_jtot_object_id1       := rulv_rec.ans_set_jtot_object_id1;
1441     x_rulv_tbl(i).ans_set_jtot_object_id2       := rulv_rec.ans_set_jtot_object_id2;
1442     x_rulv_tbl(i).display_sequence              := rulv_rec.display_sequence;
1443     END LOOP;
1444 
1445     x_rule_count := i;
1446 
1447     RETURN;
1448 
1449   END get_contract_rules;
1450 
1451 ------------------------------------------------------------------------------
1452 -- PROCEDURE check_stream_type_code
1453 -- It validates payment method code and returns ID1 and
1454 -- stacks error, if any, for further processing
1455 -- Calls:
1456 --  None
1457 -- Called By:
1458 --  check_line_literal
1459 --  check_payment_record
1460 --  check_payment_rule_group
1461 ------------------------------------------------------------------------------
1462 
1463    PROCEDURE check_stream_type_code(
1464                                      x_return_status       OUT NOCOPY VARCHAR2,
1465                                      x_msg_count           OUT NOCOPY NUMBER,
1466                                      x_msg_data            OUT NOCOPY VARCHAR2,
1467                                      p_stream_type_code    IN  VARCHAR2,
1468                                      p_stream_purpose      IN  VARCHAR2,
1469                                      x_id1                 OUT NOCOPY NUMBER,
1470                                      x_name                OUT NOCOPY VARCHAR2
1471                                     ) IS
1472 
1473    CURSOR strm_csr (p_strm_code    VARCHAR2,
1474                     p_strm_purpose VARCHAR2) IS
1475    SELECT ID1, NAME
1476    FROM   okl_strmtyp_source_v
1477    WHERE  status              = 'A'
1478    AND    name                = p_strm_code
1479    AND    stream_type_purpose = p_strm_purpose;
1480 
1481    l_id1      NUMBER;
1482    l_name     OKL_STRMTYP_SOURCE_V.NAME%TYPE;
1483    strm_failed EXCEPTION;
1484 
1485    BEGIN
1486      x_return_status := OKL_API.G_RET_STS_SUCCESS;
1487 
1488      debug_message('p_stream_type_code=' || p_stream_type_code);
1489      debug_message('p_stream_purpose=' || p_stream_purpose);
1490      OPEN strm_csr(p_stream_type_code,
1491                    p_stream_purpose);
1492      FETCH strm_csr INTO l_id1,l_name;
1493 
1494      IF strm_csr%NOTFOUND THEN
1495         RAISE strm_failed;
1496      END IF;
1497 
1498      x_id1  := l_id1;
1499      x_name := l_name;
1500      RETURN;
1501 
1502    EXCEPTION
1503      WHEN strm_failed THEN
1504         x_return_status := OKL_API.G_RET_STS_ERROR;
1505 
1506    END check_stream_type_code;
1507 
1508 ------------------------------------------------------------------------------
1509 -- FUNCTION validate_currency_code
1510 -- It validates currency Code against database, FND_CURRENCIES
1511 -- Returns OKL_API.G_RET_STS_ERROR for unknown currency code
1512 --         OKL_API.G_RET_STS_SUCCESS for valid currency code
1513 -- Calls:
1514 --  None
1515 -- Called By:
1516 --  check_input_record
1517 ------------------------------------------------------------------------------
1518 
1519   FUNCTION validate_currency_code (p_contract_number IN OKL_HEADER_INTERFACE.CONTRACT_NUMBER_OLD%TYPE,
1520                                    p_currency_code   IN VARCHAR2)
1521   RETURN VARCHAR2 IS
1522 
1523     CURSOR currency_csr(p_curr_code FND_CURRENCIES.CURRENCY_CODE%TYPE) IS
1524     SELECT currency_code
1525     FROM   FND_CURRENCIES
1526     WHERE  currency_code = p_curr_code
1527     AND    NVL(end_date_active,SYSDATE) >= SYSDATE;
1528 
1529     x_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1530     l_currency_code FND_CURRENCIES.CURRENCY_CODE%TYPE;
1531 
1532   BEGIN
1533 
1534     IF (p_currency_code IS NULL) THEN
1535        okl_api.set_message(
1536                            G_APP_NAME,
1537                            G_MISSING_VALUE,
1538                            'CONTRACT_NUM',
1539                            p_contract_number,
1540                            'COL_NAME',
1541                            'CURRENCY_CODE'
1542                           );
1543          x_return_status := OKL_API.G_RET_STS_ERROR;
1544 
1545          return x_return_status;
1546     END IF;
1547 
1548     OPEN currency_csr(p_currency_code);
1549     FETCH currency_csr INTO l_currency_code;
1550     IF currency_csr%NOTFOUND THEN
1551       okl_api.set_message(
1552                           G_APP_NAME,
1553                           G_INVALID_VALUE,
1554                           'CONTRACT_NUM',
1555                           p_contract_number,
1556                           'COL_NAME',
1557                           'CURRENCY_CODE',
1558                           'COL_VALUE',
1559                           p_currency_code
1560                           );
1561        x_return_status := OKL_API.G_RET_STS_ERROR;
1562     END IF;
1563     CLOSE currency_csr;
1564 
1565     return x_return_status;
1566 
1567   END validate_currency_code;
1568 
1569 ------------------------------------------------------------------------------
1570 -- FUNCTION check_header_literal
1571 -- It checks for literals in
1572 --   application_code, contract_category, converted_account,
1573 --   security_deposit_hold_flag, seurity_deposite_net_flag,
1574 --   review_invoice_flag, date_signed, date_approved, term,
1575 --   accepted_date, deal_type_code, bill_to_address, authoring_org_id,
1576 --   customer_account
1577 -- columns and reports error, if any
1578 -- Returns OKL_API.G_RET_STS_ERROR for any Error
1579 --         OKL_API.G_RET_STS_SUCCESS
1580 -- Calls:
1581 --  None
1582 -- Called By:
1583 --  check_input_record
1584 ------------------------------------------------------------------------------
1585 
1586   FUNCTION check_header_literal (
1587                      p_contract_number             IN okl_header_interface.contract_number_old%type,
1588                      p_template_id                 IN okc_k_headers_v.id%type,
1589                      p_application_code            IN okl_header_interface.application_code%type,
1590                      p_contract_category           IN okl_header_interface.contract_category%type,
1591                      p_import_request_stage        IN okl_header_interface.import_request_stage%type,
1592                      p_converted_account           IN okl_header_interface.converted_account%type,
1593                      p_security_deposit_hold_flag  IN okl_header_interface.security_deposit_hold_flag%type,
1594                      p_security_deposit_net_flag   IN okl_header_interface.security_deposit_net_flag%type,
1595                      p_review_invoice_flag         IN okl_header_interface.review_invoice_flag%type,
1596                      p_date_signed                 IN okl_header_interface.date_signed%TYPE,
1597                      p_start_date                  IN okl_header_interface.start_date%TYPE,
1598                      p_date_approved               IN okl_header_interface.date_approved%TYPE,
1599                      p_term                        IN okl_header_interface.term%TYPE,
1600                      p_accepted_date               IN okl_header_interface.accepted_date%TYPE,
1601                      p_deal_type_code              IN okl_header_interface.deal_type_code%TYPE,
1602                      p_bill_to_address             IN okl_header_interface.bill_to_address%TYPE,
1603                      p_bill_to_address_id          IN okl_header_interface.bill_to_address_id%TYPE,
1604                      p_authoring_org_id            IN okl_header_interface.authoring_org_id%TYPE,
1605                      p_inv_organization_id         IN okl_header_interface.inventory_organization_id%TYPE,
1606                      p_customer_account_number     IN okl_header_interface.customer_account_number%TYPE,
1607                      p_customer_account_id         IN okl_header_interface.customer_account_id%TYPE,
1608                      p_eot_purchase_opt_type       IN okl_header_interface.eot_purchase_opt_type%TYPE,
1609 		     p_expected_delivery_date      IN okl_header_interface.expected_delivery_date%TYPE,
1610                      p_currency_code               IN okl_header_interface.currency_code%TYPE
1611                     )
1612   RETURN VARCHAR2 IS
1613 
1614   x_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1615   l_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1616 
1617   l_rulv_tbl   rulv_tbl_type;
1618   l_rule_count NUMBER;
1619   x_msg_count  NUMBER;
1620   x_msg_data   VARCHAR2(2000);
1621 
1622   l_cust_acct_present VARCHAR2(1) := 'N';
1623   l_bto_present       VARCHAR2(1) := 'N';
1624 
1625   l_bill_to_site_use_id OKC_K_HEADERS_B.BILL_TO_SITE_USE_ID%TYPE;
1626   l_cust_acct_id        OKC_K_HEADERS_B.CUST_ACCT_ID%TYPE;
1627   l_proc_name           VARCHAR2(35) := 'check_header_literal';
1628 
1629   BEGIN
1630 
1631     debug_message(l_proc_name);
1632 
1633     IF (UPPER(p_import_request_stage) NOT IN ( 'NEW','PASSED','COMPLETE','APPROVED','BOOKED' )) THEN
1634        okl_api.set_message(
1635                            G_APP_NAME,
1636                            G_LITERAL_MISMATCH,
1637                            'COL_NAME',
1638                            'IMPORT_REQUEST_STAGE',
1639                            'COL_VALUE',
1640                            p_import_request_stage
1641                            );
1642        x_return_status := OKL_API.G_RET_STS_ERROR;
1643     END IF;
1644 
1645     IF (p_import_request_stage <> 'NEW'
1646         AND
1647         p_date_signed IS NULL ) THEN
1648         okl_api.set_message(
1649                             G_APP_NAME,
1650                             G_MISSING_VALUE_FOR_STAGE,
1651                             'CONTRACT_NUM',
1652                             p_contract_number,
1653                             'COL_NAME',
1654                             'DATE_SIGNED',
1655                             'STAGE',
1656                             p_import_request_stage
1657                            );
1658        x_return_status := OKL_API.G_RET_STS_ERROR;
1659     END IF;
1660 
1661     IF (p_import_request_stage <> 'NEW'
1662         AND
1663         p_date_signed >= NVL(p_start_date,SYSDATE) ) THEN
1664        okl_api.set_message(
1665                            G_APP_NAME,
1666                            G_DATESIGNED_LT_START
1667                           );
1668        x_return_status := OKL_API.G_RET_STS_ERROR;
1669     END IF;
1670 
1671     IF (p_import_request_stage = 'BOOKED'
1672         AND
1673         p_date_approved IS NULL) THEN
1674         okl_api.set_message(
1675                             G_APP_NAME,
1676                             G_MISSING_VALUE_FOR_STAGE,
1677                             'CONTRACT_NUM',
1678                             p_contract_number,
1679                             'COL_NAME',
1680                             'DATE_APPROVED',
1681                             'STAGE',
1682                             p_import_request_stage
1683                            );
1684        x_return_status := OKL_API.G_RET_STS_ERROR;
1685     END IF;
1686 
1687     IF (p_import_request_stage <> 'NEW'
1688         AND
1689         p_term IS NULL ) THEN
1690         okl_api.set_message(
1691                             G_APP_NAME,
1692                             G_MISSING_VALUE_FOR_STAGE,
1693                             'CONTRACT_NUM',
1694                             p_contract_number,
1695                             'COL_NAME',
1696                             'TERM',
1697                             'STAGE',
1698                             p_import_request_stage
1699                            );
1700        x_return_status := OKL_API.G_RET_STS_ERROR;
1701     END IF;
1702 
1703     IF (p_authoring_org_id IS NULL) THEN
1704         okl_api.set_message(
1705                             G_APP_NAME,
1706                             G_MISSING_VALUE,
1707                             'CONTRACT_NUM',
1708                             p_contract_number,
1709                             'COL_NAME',
1710                             'AUTHORING_ORG_ID'
1711                            );
1712        x_return_status := OKL_API.G_RET_STS_ERROR;
1713 
1714     END IF;
1715 
1716     IF (p_inv_organization_id IS NULL) THEN
1717         okl_api.set_message(
1718                             G_APP_NAME,
1719                             G_MISSING_VALUE,
1720                             'CONTRACT_NUM',
1721                             p_contract_number,
1722                             'COL_NAME',
1723                             'INV_ORGANIZATION_ID'
1724                            );
1725        x_return_status := OKL_API.G_RET_STS_ERROR;
1726 
1727     END IF;
1728 
1729    IF (UPPER(p_import_request_stage) <> 'NEW'
1730        AND
1731        p_expected_delivery_date IS NULL) THEN
1732        okl_api.set_message(
1733                            G_APP_NAME,
1734                            G_MISSING_VALUE_FOR_STAGE,
1735                            'CONTRACT_NUM',
1736                            p_contract_number,
1737                            'COL_NAME',
1738                            'EXPECTED_DELIVERY_DATE',
1739                            'STAGE',
1740                            p_import_request_stage
1741                           );
1742         x_return_status := OKL_API.G_RET_STS_ERROR;
1743    END IF;
1744 
1745 
1746    l_return_status := validate_currency_code(p_contract_number => p_contract_number,
1747                                              p_currency_code   => p_currency_code);
1748 
1749    IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1750       x_return_status := l_return_status;
1751    END IF;
1752 
1753    return x_return_status;
1754 
1755  END check_header_literal;
1756 
1757 
1758 ------------------------------------------------------------------------------
1759 -- PROCEDURE check_for_release_asset
1760 -- This procedure checks to see whether the asset is released or not.
1761 -- Calls:
1762 -- Called By:
1763 --  load_input_record
1764 ------------------------------------------------------------------------------
1765    PROCEDURE check_for_release_asset(
1766                                      x_return_status OUT NOCOPY VARCHAR2,
1767                                      x_msg_count     OUT NOCOPY NUMBER,
1768                                      x_msg_data      OUT NOCOPY VARCHAR2,
1769                                      p_asset_number  IN  VARCHAR2,
1770                                      p_line_number   IN  NUMBER,
1771                                      p_org_id        IN  NUMBER,
1772                                      x_release_asset OUT NOCOPY VARCHAR2,
1773                                      x_asset_id      OUT NOCOPY OKL_LA_RELEASE_ASSETS_UV.ASSET_ID%TYPE
1774                                     ) IS
1775 
1776    CURSOR release_csr (p_asset_number VARCHAR2,
1777                        p_org_id       NUMBER) IS
1778    SELECT asset_id
1779    FROM   OKL_LA_RELEASE_ASSETS_UV
1780    WHERE  asset_number    = p_asset_number
1781    AND    organization_id = p_org_id;
1782 
1783    l_proc_name VARCHAR2(35) := 'CHECK_FOR_RELEASE_ASSET';
1784    l_release_yn VARCHAR2(1) := 'N';
1785    BEGIN
1786 
1787      x_return_status := OKL_API.G_RET_STS_SUCCESS;
1788      debug_message(l_proc_name);
1789 
1790      x_asset_id   := NULL;
1791      l_release_yn := 'N';
1792      OPEN release_csr (p_asset_number,
1793                        p_org_id);
1794      FETCH release_csr INTO x_asset_id;
1795      IF release_csr%NOTFOUND THEN
1796         l_release_yn := 'N';
1797      ELSE
1798         l_release_yn := 'Y';
1799      END IF;
1800      CLOSE release_csr;
1801 
1802      debug_message('=====> Asset '||p_asset_number||'/'||p_line_number||' : Released? : '||l_release_yn);
1803      debug_message('=====> Asset ID: '||x_asset_id);
1804 
1805      x_release_asset := l_release_yn;
1806 
1807    EXCEPTION
1808     WHEN OTHERS THEN
1809       okl_api.set_message(
1810                           G_APP_NAME,
1811                           G_UNEXPECTED_ERROR,
1812                           'OKL_SQLCODE',
1813                           SQLCODE,
1814                           'OKL_SQLERRM',
1815                           SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
1816                          );
1817       x_return_status := OKL_API.G_RET_STS_ERROR;
1818 
1819    END check_for_release_asset;
1820 ------------------------------------------------------------------------------
1821 -- PROCEDURE get_release_asset_flag
1822 -- This procedure checks to see whether the contract header includes release assets.
1823 -- If Asset lines include a Release Asset, the function returns a value of 'Y'
1824 -- If Asset lines does not include Releases Assets, the function returns a value of 'N'
1825 -- If Asset lines includes mixed Assets, the function reports error
1826 -- Calls:
1827 -- Called By:
1828 --  load_input_record
1829 ------------------------------------------------------------------------------
1830    FUNCTION get_release_asset_flag(
1831                                      x_return_status    OUT NOCOPY VARCHAR2,
1832                                      x_msg_count        OUT NOCOPY NUMBER,
1833                                      x_msg_data         OUT NOCOPY VARCHAR2,
1834                                      p_contract_number  IN  Varchar2,
1835                                      p_asset_number     IN  VARCHAR2, -- Bug #15992711:Add new parameter
1836                                      p_org_id           IN  NUMBER
1837                                     ) RETURN VARCHAR2 IS
1838 
1839    CURSOR release_csr (p_contract_number VARCHAR2,
1840                        p_asset_number    VARCHAR2,
1841                        p_org_id       NUMBER) IS
1842    SELECT 'Y'
1843    FROM   OKL_LINES_INTERFACE OLI
1844    WHERE  oli.contract_number_old = p_contract_number
1845    AND    EXISTS (    SELECT fa.asset_id
1846                       FROM   FA_ADDITIONS_B FA,
1847                              OKL_ASSET_RETURNS_B OAR,
1848                              OKC_K_ITEMS   CIM_FA,
1849                              OKC_K_LINES_B CLEB_FA,
1850                              OKC_K_LINES_B CLEB_TL,
1851                              OKC_K_HEADERS_B CHRB
1852                       WHERE  cleb_tl.chr_id = chrb.id
1853                       AND    chrb.inv_organization_id = p_org_id
1854                       AND    cleb_tl.lse_id = G_FIN_LINE_LTY_ID
1855                       AND    oar.kle_id = cleb_tl.id
1856                       AND    oar.ars_code = 'RE_LEASE'
1857                       AND    cleb_fa.cle_id = cleb_tl.id
1858                       AND    cleb_fa.lse_id = G_FA_LINE_LTY_ID
1859                       AND    cleb_fa.id = cim_fa.cle_id
1860                       AND    cleb_fa.dnz_chr_id =cim_fa.dnz_chr_id
1861                       AND    cim_fa.object1_id1 = fa.asset_id
1862                       AND    cim_fa.object1_id2 ='#'
1863                       AND    fa.asset_number = oli.asset_number
1864                       AND    oli.asset_number = p_asset_number -- Bug #15992711: Add extra condition to fetch the record pertaining to asset number
1865                       AND    not exists (SELECT '1'
1866                                          FROM  okc_k_headers_b chrb_2,
1867                                                okc_statuses_b chr_sts,
1868                                                okc_k_lines_b cleb_2,
1869                                                okc_statuses_b cle_sts,
1870                                                okc_k_items cim_2
1871                                          WHERE chrb_2.id = cleb_2.dnz_chr_id
1872                                          AND   chrb_2.scs_code in ('LEASE','LOAN')
1873                                          AND   chrb_2.sts_code = chr_sts.code
1874                                          AND   chr_sts.ste_code not in ('HOLD', 'EXPIRED', 'TERMINATED', 'CANCELLED')
1875                                          AND   cleb_2.id = cim_2.cle_id
1876                                          AND   cleb_2.dnz_chr_id = cim_2.dnz_chr_id
1877                                          AND   cleb_2.sts_code = cle_sts.code
1878                                          AND   cle_sts.ste_code not in ('HOLD', 'EXPIRED', 'TERMINATED', 'CANCELLED')
1879                                          AND   cim_2.object1_id1 = to_char(fa.asset_id)
1880                                          AND   cim_2.object1_id2 = '#' and cim_2.jtot_object1_code = 'OKX_ASSET'
1881                                         )
1882 
1883                  ) ;
1884 
1885 
1886    CURSOR unrelease_csr (p_asset_number VARCHAR2,
1887                        p_org_id       NUMBER) IS
1888 
1889    SELECT 'Y'
1890    FROM   OKL_LINES_INTERFACE OLI
1891    WHERE  oli.contract_number_old = p_contract_number
1892    AND    NOT EXISTS (SELECT fa.asset_id
1893                       FROM   FA_ADDITIONS_B FA,
1894                              OKL_ASSET_RETURNS_B OAR,
1895                              OKC_K_ITEMS   CIM_FA,
1896                              OKC_K_LINES_B CLEB_FA,
1897                              OKC_K_LINES_B CLEB_TL,
1898                              OKC_K_HEADERS_B CHRB
1899                       WHERE  cleb_tl.chr_id = chrb.id
1900                       AND    chrb.inv_organization_id = p_org_id
1901                       AND    cleb_tl.lse_id = G_FIN_LINE_LTY_ID
1902                       AND    oar.kle_id = cleb_tl.id
1903                       AND    oar.ars_code = 'RE_LEASE'
1904                       AND    cleb_fa.cle_id = cleb_tl.id
1905                       AND    cleb_fa.lse_id = G_FA_LINE_LTY_ID
1906                       AND    cleb_fa.id = cim_fa.cle_id
1907                       AND    cleb_fa.dnz_chr_id =cim_fa.dnz_chr_id
1908                       AND    cim_fa.object1_id1 = fa.asset_id
1909                       AND    cim_fa.object1_id2 ='#'
1910                       AND    fa.asset_number = oli.asset_number
1911                      ) ;
1912 
1913    l_proc_name VARCHAR2(35) := 'GET_RELEASE_ASSET_FLAG';
1914    l_released_assets_exist_yn VARCHAR2(1) := 'N';
1915    l_released_assets_not_exist_yn VARCHAR2(1) := 'N';
1916    l_release_yn VARCHAR2(1) ;
1917    BEGIN
1918 
1919      x_return_status := OKL_API.G_RET_STS_SUCCESS;
1920      debug_message(l_proc_name);
1921 
1922      OPEN release_csr (p_contract_number, -- Bug #15992711: Added a new parameter
1923                        p_asset_number,
1924                        p_org_id);
1925 
1926      FETCH release_csr INTO l_released_assets_exist_yn;
1927      IF release_csr%NOTFOUND THEN
1928         l_released_assets_exist_yn := 'N';
1929      ELSE
1930         l_released_assets_exist_yn := 'Y';
1931      END IF;
1932      CLOSE release_csr;
1933      debug_message ('l_released_assets_exist_yn :'|| l_released_assets_exist_yn);
1934 
1935      --Bug #15992711 : Start of modification
1936      -- Condition no longer required
1937      /*OPEN unrelease_csr (p_contract_number,
1938                          p_org_id);
1939 
1940      FETCH unrelease_csr INTO l_released_assets_not_exist_yn;
1941      IF unrelease_csr%NOTFOUND THEN
1942         l_released_assets_not_exist_yn := 'N';
1943      ELSE
1944         l_released_assets_not_exist_yn := 'Y';
1945      END IF;
1946      CLOSE unrelease_csr;
1947      debug_message ('l_released_assets_not_exist_yn :'|| l_released_assets_not_exist_yn);
1948      */
1949 
1950      --Bug #15992711
1951      --IF ((l_released_assets_exist_yn = 'Y') AND (l_released_assets_not_exist_yn = 'N')) THEN
1952      IF (l_released_assets_exist_yn = 'Y') THEN
1953             l_release_yn := 'Y';
1954      --ELSIF ((l_released_assets_exist_yn = 'N') AND (l_released_assets_not_exist_yn = 'Y')) THEN
1955      ELSE
1956             l_release_yn := 'N';
1957      -- 4539003
1958      --Bug #15992711 : Dont show an error when the contract has mix of assets.
1959      /*ELSIF ((l_released_assets_exist_yn = 'N') AND (l_released_assets_not_exist_yn = 'N')) THEN
1960             l_release_yn := 'N';
1961      ELSE
1962         okl_api.set_message(
1963                             G_APP_NAME,
1964                             G_MIXED_ASSET,
1965                             'CONTRACT_NUM',
1966                             p_contract_number
1967                            );
1968         x_return_status := OKL_API.G_RET_STS_ERROR;*/
1969      -- Bug #15992711 : End of modification
1970      END IF;
1971      debug_message ('l_release_yn : '|| l_release_yn);
1972 	 RETURN l_release_yn;
1973 
1974    EXCEPTION
1975     WHEN OTHERS THEN
1976       IF ( release_csr%ISOPEN ) THEN
1977          CLOSE release_csr;
1978       END IF;
1979       IF ( unrelease_csr%ISOPEN ) THEN
1980          CLOSE unrelease_csr;
1981       END IF;
1982       okl_api.set_message(
1983                           G_APP_NAME,
1984                           G_UNEXPECTED_ERROR,
1985                           'OKL_SQLCODE',
1986                           SQLCODE,
1987                           'OKL_SQLERRM',
1988                           SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
1989                          );
1990       x_return_status := OKL_API.G_RET_STS_ERROR;
1991 
1992    END get_release_asset_flag;
1993 ------------------------------------------------------------------------------
1994 ------------------------------------------------------------------------------
1995 -- PROCEDURE check_balance_legacy
1996 -- This procedure checks to see that If DT_EFFECTIVE_BALANCE_LEGACY has been
1997 -- specified for any one asset, then the same date value should be specified
1998 -- for all assets on the contract
1999 --
2000 -- Calls:
2001 -- Called By:
2002 --  load_input_record
2003 ------------------------------------------------------------------------------
2004    PROCEDURE check_balance_legacy(
2005                                      x_return_status    OUT NOCOPY VARCHAR2,
2006                                      x_msg_count        OUT NOCOPY NUMBER,
2007                                      x_msg_data         OUT NOCOPY VARCHAR2,
2008                                      p_contract_number  IN  Varchar2
2009                                     ) IS
2010 
2011    CURSOR legacy_balance_csr (p_contract_number VARCHAR2) IS
2012    SELECT 'Y'
2013    FROM   OKL_LINES_INTERFACE OLI
2014    WHERE  oli.contract_number_old = p_contract_number
2015    AND    oli.line_type = 'ASSET'
2016    AND    oli.dt_effective_balance_legacy IS NOT NULL
2017    AND    EXISTS (    SELECT 'Y'
2018                       FROM   OKL_LINES_INTERFACE OLI1
2019                       WHERE  oli1.contract_number_old = p_contract_number
2020                       AND    oli1.line_type = 'ASSET'
2021                       AND    (oli1.dt_effective_balance_legacy IS NULL OR
2022                               oli1.dt_effective_balance_legacy <> oli.dt_effective_balance_legacy)
2023                  ) ;
2024 
2025 
2026    l_proc_name VARCHAR2(35) := 'CHECK_BALANCE_LEGACY';
2027    l_multiple_bal_dates_yn VARCHAR2(1) := 'N';
2028    BEGIN
2029 
2030      x_return_status := OKL_API.G_RET_STS_SUCCESS;
2031      debug_message(l_proc_name);
2032 
2033      OPEN legacy_balance_csr (p_contract_number);
2034 
2035      FETCH legacy_balance_csr INTO l_multiple_bal_dates_yn;
2036      IF legacy_balance_csr%NOTFOUND THEN
2037         l_multiple_bal_dates_yn := 'N';
2038      END IF;
2039      CLOSE legacy_balance_csr;
2040      debug_message ('l_multiple_bal_dates_yn :'|| l_multiple_bal_dates_yn);
2041 
2042      IF l_multiple_bal_dates_yn = 'Y' THEN
2043         okl_api.set_message(
2044                             G_APP_NAME,
2045                             G_MULTIPLE_LEGACY_BAL_DATE,
2046                             'CONTRACT_NUM',
2047                             p_contract_number
2048                            );
2049         x_return_status := OKL_API.G_RET_STS_ERROR;
2050      END IF;
2051 
2052    EXCEPTION
2053     WHEN OTHERS THEN
2054       IF ( legacy_balance_csr%ISOPEN ) THEN
2055          CLOSE legacy_balance_csr;
2056       END IF;
2057 
2058       okl_api.set_message(
2059                           G_APP_NAME,
2060                           G_UNEXPECTED_ERROR,
2061                           'OKL_SQLCODE',
2062                           SQLCODE,
2063                           'OKL_SQLERRM',
2064                           SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
2065                          );
2066       x_return_status := OKL_API.G_RET_STS_ERROR;
2067 
2068    END check_balance_legacy;
2069 --Bug# 16344245
2070 ------------------------------------------------------------------------------
2071 -- PROCEDURE check_line_literal
2072 -- It checks for literals in
2073 --   line_number, line_type, amount, inventory_item, install_site,
2074 --   asset_corporate_book, asset_category_segments, asset_location_segments,
2075 --   depreciation_method, life_in_months, fee_code, price_list_name,
2076 --   counter_group_name, usage_bill_frequency_code, base_reading_uom_code
2077 -- columns and reports error, if any
2078 -- Returns OKL_API.G_RET_STS_ERROR for any Error
2079 --         OKL_API.G_RET_STS_SUCCESS
2080 -- Calls:
2081 --  check_stream_type_code
2082 -- Called By:
2083 --  check_input_record
2084 ------------------------------------------------------------------------------
2085 
2086   PROCEDURE check_line_literal (
2087                                x_return_status             OUT NOCOPY VARCHAR2,
2088                                x_msg_count                 OUT NOCOPY NUMBER,
2089                                x_msg_data                  OUT NOCOPY VARCHAR2,
2090                                p_contract_number           IN okl_header_interface.contract_number_old%TYPE,
2091                                p_import_request_stage      IN okl_header_interface.import_request_stage%TYPE,
2092                                p_product_id                IN okl_header_interface.product_id%TYPE,
2093                                p_product_name              IN okl_header_interface.product_name%TYPE,
2094                                p_line_number               IN okl_lines_interface.line_number%TYPE,
2095                                p_line_type                 IN okl_lines_interface.line_type%TYPE,
2096                                p_amount                    IN okl_lines_interface.amount%TYPE,
2097                                p_currency_code             IN okl_lines_interface.currency_code%TYPE,
2098                                p_asset_number              IN okl_lines_interface.asset_number%TYPE,
2099                                p_inventory_item_name       IN okl_lines_interface.inventory_item_name%TYPE,
2100                                p_inventory_item_id         IN okl_lines_interface.inventory_item_id%TYPE,
2101                                p_install_site_number       IN okl_lines_interface.install_site_number%TYPE,
2102                                p_install_site_id           IN okl_lines_interface.install_site_id%TYPE,
2103                                p_asset_corporate_book      IN okl_lines_interface.asset_corporate_book%TYPE,
2104                                p_asset_category_id         IN okl_lines_interface.asset_category_id%TYPE,
2105                                p_asset_category_segment1   IN okl_lines_interface.asset_category_segment1%TYPE,
2106                                p_asset_category_segment2   IN okl_lines_interface.asset_category_segment2%TYPE,
2107                                p_asset_category_segment3   IN okl_lines_interface.asset_category_segment3%TYPE,
2108                                p_asset_category_segment4   IN okl_lines_interface.asset_category_segment4%TYPE,
2109                                p_asset_category_segment5   IN okl_lines_interface.asset_category_segment5%TYPE,
2110                                p_asset_category_segment6   IN okl_lines_interface.asset_category_segment6%TYPE,
2111                                p_asset_category_segment7   IN okl_lines_interface.asset_category_segment7%TYPE,
2112                                p_asset_location_id         IN okl_lines_interface.asset_location_id%TYPE,
2113                                p_asset_location_segment1   IN okl_lines_interface.asset_location_segment1%TYPE,
2114                                p_asset_location_segment2   IN okl_lines_interface.asset_location_segment2%TYPE,
2115                                p_asset_location_segment3   IN okl_lines_interface.asset_location_segment3%TYPE,
2116                                p_asset_location_segment4   IN okl_lines_interface.asset_location_segment4%TYPE,
2117                                p_asset_location_segment5   IN okl_lines_interface.asset_location_segment5%TYPE,
2118                                p_asset_location_segment6   IN okl_lines_interface.asset_location_segment6%TYPE,
2119                                p_asset_location_segment7   IN okl_lines_interface.asset_location_segment7%TYPE,
2120                                p_depreciation_method_id    IN okl_lines_interface.depreciation_method_id%TYPE,
2121                                p_depreciation_method_code  IN okl_lines_interface.depreciation_method_code%TYPE,
2122                                p_life_in_months            IN okl_lines_interface.life_in_months%TYPE,
2123                                p_fee_code                  IN okl_lines_interface.fee_code%TYPE,
2124                                p_stream_purpose            IN okl_lines_interface.stream_purpose_code%TYPE,
2125                                p_fee_type                  IN okl_lines_interface.fee_type%TYPE,
2126                                p_price_list_name           IN okl_lines_interface.price_list_name%TYPE,
2127                                p_price_list_id             IN okl_lines_interface.price_list_id%TYPE,
2128                                p_counter_group_name        IN okl_lines_interface.counter_group_name%TYPE,
2129                                p_counter_group_id          IN okl_lines_interface.counter_group_id%TYPE,
2130                                p_usage_bill_frequency_code IN okl_lines_interface.usage_bill_frequency_code%TYPE,
2131                                p_base_reading_uom_code     IN okl_lines_interface.base_reading_uom_code%TYPE,
2132                                p_usage_type_code           IN okl_lines_interface.usage_type_code%TYPE,
2133                                p_usage_period              IN okl_lines_interface.usage_period%TYPE,
2134                                p_usage_no_of_period        IN okl_lines_interface.usage_no_of_period%TYPE,
2135                                p_tax_cost                  IN okl_lines_interface.tax_cost%TYPE,
2136                                p_tax_book                  IN okl_lines_interface.tax_book%TYPE,
2137                                p_life_in_months_tax        IN okl_lines_interface.life_in_months_tax%TYPE,
2138                                p_deprn_method_tax          IN okl_lines_interface.deprn_method_tax%TYPE,
2139                                p_deprn_rate_tax            IN okl_lines_interface.deprn_rate_tax%TYPE,
2140                                p_in_service_date           IN okl_lines_interface.in_service_date%TYPE,
2141 			       p_link_asset_amount         IN okl_lines_interface.link_asset_amount%TYPE,
2142                                p_inv_org_id                IN okl_header_interface.inventory_organization_id%TYPE,
2143                                p_term_quote_id             IN okl_lines_interface.termination_quote_id%TYPE,
2144                                p_term_quote_number         IN okl_lines_interface.termination_quote_number%TYPE,
2145                                p_fee_purpose_code          IN okl_lines_interface.fee_purpose_code%TYPE,
2146                                --Bug# 16344245
2147                                p_amount_balance_legacy       IN okl_lines_interface.amount_balance_legacy%TYPE,
2148                                p_dt_effective_balance_legacy IN okl_lines_interface.dt_effective_balance_legacy%TYPE
2149                               ) IS
2150 -- 4475344
2151 /*
2152   CURSOR srv_supp_csr(p_contract_number OKL_PARTY_ROLES_INTERFACE.CONTRACT_NUMBER_OLD%TYPE,
2153                       p_line_number     OKL_PARTY_ROLES_INTERFACE.LINE_NUMBER%TYPE) IS
2154   SELECT service_vendor_id,
2155          service_vendor_name
2156   FROM   okl_party_roles_interface
2157   WHERE  contract_number_old = p_contract_number
2158   AND    line_number         = p_line_number;
2159 */
2160   CURSOR fnd_lookup_csr(p_lookup_code FND_LOOKUPS.LOOKUP_CODE%TYPE,
2161                         p_lookup_type FND_LOOKUPS.LOOKUP_TYPE%TYPE) IS
2162   SELECT 'X'
2163   FROM   FND_LOOKUPS
2164   WHERE  lookup_code = p_lookup_code
2165   AND    lookup_type = p_lookup_type;
2166 
2167   l_supp_name     OKL_PARTY_ROLES_INTERFACE.SERVICE_VENDOR_NAME%TYPE;
2168   l_supp_id       OKL_PARTY_ROLES_INTERFACE.SERVICE_VENDOR_ID%TYPE;
2169 
2170   x_id1 okl_strmtyp_source_v.id1%TYPE;
2171   x_asset_id      OKL_LA_RELEASE_ASSETS_UV.ASSET_ID%TYPE;
2172   x_release_asset VARCHAR2(1) := 'N';
2173 
2174   halt_validation EXCEPTION;
2175   l_return_status VARCHAR2(1);
2176 
2177   l_proc_name     VARCHAR2(35) := 'check_line_literal';
2178   l_fee_name      OKL_STRMTYP_SOURCE_V.NAME%TYPE;
2179 
2180   l_exists_yn     VARCHAR2(1);
2181 
2182   BEGIN
2183     debug_message(l_proc_name);
2184 
2185     x_return_status := OKL_API.G_RET_STS_SUCCESS;
2186     debug_message('Line type: '||p_line_type);
2187 
2188     IF (p_line_type NOT IN ('ASSET','SERVICE', 'FEE', 'USAGE', 'ASSET_SUBSIDY', 'ASSET_ADDON' )) THEN
2189        okl_api.set_message(
2190                            G_APP_NAME,
2191                            G_INVALID_VALUE,
2192                            'CONTRACT_NUM',
2193                            p_contract_number||'/'||TO_CHAR(p_line_number),
2194                            'COL_NAME',
2195                            'LINE_TYPE',
2196                            'COL_VALUE',
2197                            p_line_type
2198                            );
2199 
2200        x_return_status := OKL_API.G_RET_STS_ERROR;
2201        RAISE halt_validation; -- major error, don't proceed with other validation
2202     END IF;
2203 
2204     IF (p_line_type = 'ASSET'
2205         AND
2206         p_asset_number IS NULL) THEN
2207         okl_api.set_message(
2208                             G_APP_NAME,
2209                             G_MISSING_VALUE_FOR_LINE,
2210                             'CONTRACT_NUM',
2211                             p_contract_number||'/'||TO_CHAR(p_line_number),
2212                             'COL_NAME',
2213                             'ASSET NUMBER',
2214                             'LINE',
2215                             p_line_type
2216                             );
2217 
2218         x_return_status := OKL_API.G_RET_STS_ERROR;
2219     END IF;
2220 
2221     --Bug# 16344245
2222 
2223     -- AMOUNT_BALANCE_LEGACY is supported only for Line Type - ASSET for contracts with Interest Calculation Basis - Reamort
2224     IF (p_line_type <> 'ASSET' AND p_amount_balance_legacy IS NOT NULL)
2225        OR (p_line_type = 'ASSET' AND p_amount_balance_legacy IS NOT NULL AND G_INTEREST_CALCULATION_BASIS <> 'REAMORT') THEN
2226         OKL_API.SET_MESSAGE(
2227                             G_APP_NAME,
2228                             G_LINE_VALUE_NOT_ALLOWED,
2229                             'CONTRACT_NUM',
2230                              p_contract_number,
2231                             'LINE_NUM',
2232                              p_line_number,
2233                             'COL_NAME',
2234                             'AMOUNT_BALANCE_LEGACY'
2235                            );
2236 
2237        x_return_status := OKL_API.G_RET_STS_ERROR;
2238     END IF;
2239 
2240     -- DT_EFFECTIVE_BALANCE_LEGACY is supported only for Line Type - ASSET for contracts with Interest Calculation Basis - Reamort
2241     IF (p_line_type <> 'ASSET' AND p_dt_effective_balance_legacy IS NOT NULL)
2242        OR (p_line_type = 'ASSET' AND p_dt_effective_balance_legacy IS NOT NULL AND G_INTEREST_CALCULATION_BASIS <> 'REAMORT') THEN
2243         OKL_API.SET_MESSAGE(
2244                             G_APP_NAME,
2245                             G_LINE_VALUE_NOT_ALLOWED,
2246                             'CONTRACT_NUM',
2247                              p_contract_number,
2248                             'LINE_NUM',
2249                              p_line_number,
2250                             'COL_NAME',
2251                             'DT_EFFECTIVE_BALANCE_LEGACY'
2252                            );
2253 
2254        x_return_status := OKL_API.G_RET_STS_ERROR;
2255     END IF;
2256 
2257     -- AMOUNT_BALANCE_LEGACY is required if DF_EFFECTIVE_BALANCE_LEGACY has been poulated
2258     IF (p_line_type = 'ASSET' AND G_INTEREST_CALCULATION_BASIS = 'REAMORT' AND p_dt_effective_balance_legacy IS NOT NULL AND p_amount_balance_legacy IS NULL) THEN
2259         OKL_API.SET_MESSAGE(
2260                             G_APP_NAME,
2261                             G_MISSING_VALUE_FOR_LINE,
2262                             'CONTRACT_NUM',
2263                             p_contract_number||'/'||TO_CHAR(p_line_number),
2264                             'COL_NAME',
2265                             'AMOUNT_BALANCE_LEGACY',
2266                             'LINE',
2267                             p_line_type
2268                            );
2269 
2270        x_return_status := OKL_API.G_RET_STS_ERROR;
2271     END IF;
2272 
2273     -- DF_EFFECTIVE_BALANCE_LEGACY is required if AMOUNT_BALANCE_LEGACY has been poulated
2274     IF (p_line_type = 'ASSET' AND G_INTEREST_CALCULATION_BASIS = 'REAMORT' AND p_amount_balance_legacy IS NOT NULL AND p_dt_effective_balance_legacy IS NULL) THEN
2275         OKL_API.SET_MESSAGE(
2276                             G_APP_NAME,
2277                             G_MISSING_VALUE_FOR_LINE,
2278                             'CONTRACT_NUM',
2279                             p_contract_number||'/'||TO_CHAR(p_line_number),
2280                             'COL_NAME',
2281                             'DT_EFFECTIVE_BALANCE_LEGACY',
2282                             'LINE',
2283                             p_line_type
2284                            );
2285 
2286        x_return_status := OKL_API.G_RET_STS_ERROR;
2287     END IF;
2288 
2289     --Bug# 16344245
2290 
2291 /* 4414408
2292     check_for_release_asset(
2293                             x_return_status => l_return_status,
2294                             x_msg_count     => x_msg_count,
2295                             x_msg_data      => x_msg_data,
2296                             p_asset_number  => p_asset_number,
2297                             p_line_number   => p_line_number,
2298                             p_org_id        => p_inv_org_id,
2299                             x_release_asset => x_release_asset,
2300                             x_asset_id      => x_asset_id
2301                            );
2302 
2303     IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2304         x_return_status := OKL_API.G_RET_STS_ERROR;
2305     END IF;
2306 
2307     debug_message('------> Asset '||p_asset_number||': Released? :'||x_release_asset);
2308 
2309     IF (p_line_type = 'ASSET'
2310         AND
2311         x_release_asset = 'N'
2312         AND
2313         p_tax_book IS NOT NULL
2314         AND
2315         p_asset_corporate_book IS NULL) THEN
2316            okl_api.set_message(
2317                                 G_APP_NAME,
2318                                 G_MISSING_VALUE_FOR_LINE,
2319                                 'CONTRACT_NUM',
2320                                 p_contract_number||'/'||TO_CHAR(p_line_number),
2321                                 'COL_NAME',
2322                                 'CORPORATE BOOK',
2323                                 'LINE',
2324                                 p_line_type
2325                                 );
2326            x_return_status := OKL_API.G_RET_STS_ERROR;
2327 
2328     END IF;
2329 */
2330     IF (p_line_type = 'USAGE'
2331         AND
2332         p_asset_number IS NULL
2333         AND
2334         p_import_request_stage <> 'NEW') THEN
2335         okl_api.set_message(
2336                             G_APP_NAME,
2337                             G_MISSING_VALUE_STAGE_LINE,
2338                             'CONTRACT_NUM',
2339                             p_contract_number||'/'||TO_CHAR(p_line_number),
2340                             'COL_NAME',
2341                             'ASSET NUMBER',
2342                             'STAGE',
2343                             p_import_request_stage,
2344                             'LINE',
2345                             p_line_type
2346                             );
2347 
2348         x_return_status := OKL_API.G_RET_STS_ERROR;
2349     END IF;
2350 
2351     IF (p_line_type IN ('SERVICE', 'FEE')
2352         AND
2353         p_amount IS NULL) THEN
2354         okl_api.set_message(
2355                             G_APP_NAME,
2356                             G_MISSING_VALUE_FOR_LINE,
2357                             'CONTRACT_NUM',
2358                             p_contract_number||'/'||TO_CHAR(p_line_number),
2359                             'COL_NAME',
2360                             'AMOUNT',
2361                             'LINE',
2362                             p_line_type
2363                             );
2364 
2365         x_return_status := OKL_API.G_RET_STS_ERROR;
2366     END IF;
2367 
2368 /* 4414408
2369     IF (p_line_type = 'ASSET'
2370         AND
2371         x_release_asset = 'N'
2372         AND
2373         p_inventory_item_name IS NULL
2374         AND
2375         p_inventory_item_id IS NULL) THEN
2376         okl_api.set_message(
2377                             G_APP_NAME,
2378                             G_MISSING_VALUE_FOR_LINE,
2379                             'CONTRACT_NUM',
2380                             p_contract_number||'/'||TO_CHAR(p_line_number),
2381                             'COL_NAME',
2382                             'INVENTORY_ITEM_NAME OR INVENTORY_ITEM_ID',
2383                             'LINE',
2384                             p_line_type
2385                             );
2386 
2387         x_return_status := OKL_API.G_RET_STS_ERROR;
2388     END IF;
2389 */
2390     IF (p_line_type IN ('SERVICE','USAGE')
2391         AND
2392         p_inventory_item_name IS NULL
2393         AND
2394         p_inventory_item_id IS NULL) THEN
2395         okl_api.set_message(
2396                             G_APP_NAME,
2397                             G_MISSING_VALUE_FOR_LINE,
2398                             'CONTRACT_NUM',
2399                             p_contract_number||'/'||TO_CHAR(p_line_number),
2400                             'COL_NAME',
2401                             'INVENTORY_ITEM_NAME OR INVENTORY_ITEM_ID',
2402                             'LINE',
2403                             p_line_type
2404                             );
2405 
2406         x_return_status := OKL_API.G_RET_STS_ERROR;
2407     END IF;
2408 
2409 /* 4414408
2410     IF (p_line_type = 'ASSET'
2411         AND
2412         x_release_asset = 'N'
2413         AND
2414         p_install_site_number IS NULL
2415         AND
2416         p_install_site_id IS NULL) THEN
2417         okl_api.set_message(
2418                             G_APP_NAME,
2419                             G_MISSING_VALUE_FOR_LINE,
2420                             'CONTRACT_NUM',
2421                             p_contract_number||'/'||TO_CHAR(p_line_number),
2422                             'COL_NAME',
2423                             'INSTALL_SITE_NUMBER OR INSTALL_SITE_ID',
2424                             'LINE',
2425                             p_line_type
2426                             );
2427 
2428         x_return_status := OKL_API.G_RET_STS_ERROR;
2429     END IF;
2430 */
2431     IF (p_line_type = 'FEE') THEN
2432 
2433       IF (p_fee_code IS NULL) THEN
2434          okl_api.set_message(
2435                              G_APP_NAME,
2436                              G_MISSING_VALUE_FOR_LINE,
2437                              'CONTRACT_NUM',
2438                              p_contract_number||'/'||TO_CHAR(p_line_number),
2439                              'COL_NAME',
2440                              'FEE_CODE',
2441                              'LINE',
2442                              p_line_type
2443                              );
2444 
2445          x_return_status := OKL_API.G_RET_STS_ERROR;
2446 
2447       ELSE
2448 
2449          check_stream_type_code(
2450                                 x_return_status    => l_return_status,
2451                                 x_msg_count        => x_msg_count,
2452                                 x_msg_data         => x_msg_data,
2453                                 p_stream_type_code => p_fee_code,
2454                                 p_stream_purpose   => p_stream_purpose,
2455                                 x_id1              => x_id1,
2456                                 x_name             => l_fee_name
2457                                );
2458          IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2459             okl_api.set_message(
2460                                 G_APP_NAME,
2461                                 G_INVALID_VALUE,
2462                                 'CONTRACT_NUM',
2463                                 p_contract_number||'/'||TO_CHAR(p_line_number),
2464                                 'COL_NAME',
2465                                 'FEE_CODE, STREAM_PURPOSE_CODE',
2466                                 'COL_VALUE',
2467                                 p_fee_code||', '||p_stream_purpose
2468                               );
2469              x_return_status := OKL_API.G_RET_STS_ERROR;
2470          END IF;
2471       END IF; --fee_code not null
2472 
2473       IF (p_fee_type IS NULL) THEN
2474          okl_api.set_message(
2475                              G_APP_NAME,
2476                              G_MISSING_VALUE_FOR_LINE,
2477                              'CONTRACT_NUM',
2478                              p_contract_number||'/'||TO_CHAR(p_line_number),
2479                              'COL_NAME',
2480                              'FEE_TYPE',
2481                              'LINE',
2482                              p_line_type
2483                              );
2484 
2485          x_return_status := OKL_API.G_RET_STS_ERROR;
2486 
2487       END IF; --Fee Type
2488 
2489       IF (p_fee_type = 'ROLLOVER'
2490           AND
2491           ( p_term_quote_id IS NULL
2492             AND
2493             p_term_quote_number IS NULL)
2494          ) THEN
2495 
2496             okl_api.set_message(
2497                                 G_APP_NAME,
2498                                 G_MISSING_VALUE_FOR_LINE,
2499                                 'CONTRACT_NUM',
2500                                 p_contract_number||'/'||p_line_number,
2501                                 'COL_NAME',
2502                                 'TERMINATION_QUOTE_ID OR TERMINATION_QUOTE_NUMBER',
2503                                 'LINE',
2504                                 p_line_type
2505                                 );
2506             x_return_status := OKL_API.G_RET_STS_ERROR;
2507       END IF;
2508 
2509       IF (p_fee_purpose_code is NOT NULL) THEN
2510          OPEN fnd_lookup_csr (p_fee_purpose_code, 'OKL_FEE_PURPOSE');
2511          FETCH fnd_lookup_csr INTO l_exists_yn;
2512          IF (fnd_lookup_csr%NOTFOUND) THEN
2513             okl_api.set_message(
2514                                 G_APP_NAME,
2515                                 G_INVALID_VALUE,
2516                                 'CONTRACT_NUM',
2517                                 p_contract_number||'/'||TO_CHAR(p_line_number),
2518                                 'COL_NAME',
2519                                 'FEE_PURPOSE_CODE',
2520                                 'COL_VALUE',
2521                                 p_fee_purpose_code
2522                               );
2523              x_return_status := OKL_API.G_RET_STS_ERROR;
2524          END IF;
2525          CLOSE fnd_lookup_csr;
2526       END IF;
2527 
2528     END IF; -- fee line type
2529 
2530     IF (p_line_type = 'USAGE'
2531         AND
2532         p_price_list_name IS NULL
2533         AND
2534         p_price_list_id IS NULL) THEN
2535         okl_api.set_message(
2536                             G_APP_NAME,
2537                             G_MISSING_VALUE_FOR_LINE,
2538                             'CONTRACT_NUM',
2539                             p_contract_number||'/'||TO_CHAR(p_line_number),
2540                             'COL_NAME',
2541                             'PRICE_LIST_NAME OR PRICE_LIST_ID',
2542                             'LINE',
2543                             p_line_type
2544                             );
2545 
2546         x_return_status := OKL_API.G_RET_STS_ERROR;
2547     END IF;
2548 
2549     IF (p_line_type = 'USAGE'
2550         AND
2551         p_base_reading_uom_code IS NULL) THEN
2552         okl_api.set_message(
2553                             G_APP_NAME,
2554                             G_MISSING_VALUE_FOR_LINE,
2555                             'CONTRACT_NUM',
2556                             p_contract_number||'/'||TO_CHAR(p_line_number),
2557                             'COL_NAME',
2558                             'BASE_READING_UOM_CODE',
2559                             'LINE',
2560                             p_line_type
2561                             );
2562 
2563         x_return_status := OKL_API.G_RET_STS_ERROR;
2564     END IF;
2565 
2566     IF (p_line_type = 'USAGE'
2567         AND
2568         p_usage_type_code IS NULL) THEN
2569         okl_api.set_message(
2570                             G_APP_NAME,
2571                             G_MISSING_VALUE_FOR_LINE,
2572                             'CONTRACT_NUM',
2573                             p_contract_number||'/'||TO_CHAR(p_line_number),
2574                             'COL_NAME',
2575                             'USAGE_TYPE',
2576                             'LINE',
2577                             p_line_type
2578                             );
2579 
2580         x_return_status := OKL_API.G_RET_STS_ERROR;
2581     END IF;
2582 
2583     IF (p_line_type = 'USAGE'
2584         AND
2585         p_usage_period IS NULL) THEN
2586         okl_api.set_message(
2587                             G_APP_NAME,
2588                             G_MISSING_VALUE_FOR_LINE,
2589                             'CONTRACT_NUM',
2590                             p_contract_number||'/'||TO_CHAR(p_line_number),
2591                             'COL_NAME',
2592                             'USAGE_PERIOD',
2593                             'LINE',
2594                             p_line_type
2595                             );
2596 
2597         x_return_status := OKL_API.G_RET_STS_ERROR;
2598     END IF;
2599 
2600     IF (p_line_type = 'USAGE'
2601         AND
2602         p_usage_no_of_period IS NULL) THEN
2603         okl_api.set_message(
2604                             G_APP_NAME,
2605                             G_MISSING_VALUE_FOR_LINE,
2606                             'CONTRACT_NUM',
2607                             p_contract_number||'/'||TO_CHAR(p_line_number),
2608                             'COL_NAME',
2609                             'USAGE_NO_OF_PERIOD',
2610                             'LINE',
2611                             p_line_type
2612                             );
2613 
2614         x_return_status := OKL_API.G_RET_STS_ERROR;
2615     END IF;
2616 
2617     IF (p_line_type = 'SERVICE') THEN
2618        --
2619        -- Check for the presence of SERVICE VENDOR
2620        -- and link asset line amount
2621        --
2622        IF (p_link_asset_amount IS NULL
2623            AND
2624            p_asset_number IS NOT NULL) THEN
2625             okl_api.set_message(
2626                              G_APP_NAME,
2627                              G_MISSING_VALUE_FOR_LINE,
2628                              'CONTRACT_NUM',
2629                              p_contract_number||'/'||TO_CHAR(p_line_number),
2630                              'COL_NAME',
2631                              'LINK ASSET AMOUNT',
2632                              'LINE',
2633                              p_line_type
2634                             );
2635             x_return_status := OKL_API.G_RET_STS_ERROR;
2636         END IF;
2637 
2638 /* 4475344
2639         l_supp_name := NULL;
2640         l_supp_id   := NULL;
2641         OPEN srv_supp_csr (p_contract_number,
2642                            p_line_number);
2643         FETCH srv_supp_csr INTO l_supp_id,
2644                                 l_supp_name;
2645         CLOSE srv_supp_csr;
2646 
2647         IF (l_supp_name IS NULL
2648             AND
2649             l_supp_id IS NULL) THEN
2650            okl_api.set_message(
2651                                 G_APP_NAME,
2652                                 G_MISSING_VALUE_FOR_LINE,
2653                                 'CONTRACT_NUM',
2654                                 p_contract_number||'/'||TO_CHAR(p_line_number),
2655                                 'COL_NAME',
2656                                 'SERVICE VENDOR',
2657                                 'LINE',
2658                                 p_line_type
2659                                 );
2660 
2661            x_return_status := OKL_API.G_RET_STS_ERROR;
2662         END IF;
2663 */
2664     END IF; -- SERVICE line
2665 
2666     debug_message('return status :'||x_return_status);
2667 
2668     return;
2669 
2670   EXCEPTION
2671     WHEN halt_validation THEN
2672        x_return_status := OKL_API.G_RET_STS_ERROR;
2673 
2674   END check_line_literal;
2675 
2676 ------------------------------------------------------------------------------
2677 -- FUNCTION validate_customer
2678 -- It validates customer against database, OKX_PARTIES_V
2679 -- Returns OKL_API.G_RET_STS_ERROR for unknown customer
2680 --         OKL_API.G_RET_STS_SUCCESS for existing customer
2681 -- Also outputs ID1 for corresponding Customer
2682 -- Calls:
2683 --  None
2684 -- Called By:
2685 --  check_input_record
2686 ------------------------------------------------------------------------------
2687 
2688   FUNCTION validate_customer (p_contract_number IN  OKL_HEADER_INTERFACE.CONTRACT_NUMBER_OLD%TYPE,
2689                               p_customer_id     IN  OKX_PARTIES_V.ID1%TYPE,
2690                               p_customer_number IN  OKX_PARTIES_V.PARTY_NUMBER%TYPE,
2691                               x_id1             OUT NOCOPY OKX_PARTIES_V.ID1%TYPE)
2692   RETURN VARCHAR2 IS
2693 
2694     CURSOR customer_csr (p_customer_id     OKX_PARTIES_V.ID1%TYPE,
2695                          p_customer_number OKX_PARTIES_V.PARTY_NUMBER%TYPE) IS
2696     SELECT   id1
2697     FROM     okx_parties_v
2698     WHERE    NVL(TRUNC(end_date_active), TRUNC(SYSDATE)) >= TRUNC(SYSDATE)
2699     AND      ((id1          = p_customer_id
2700               AND p_customer_id IS NOT NULL)
2701               OR
2702              (party_number = p_customer_number
2703               AND
2704               p_customer_number IS NOT NULL));
2705 
2706   BEGIN
2707 
2708     OPEN  customer_csr(p_customer_id,
2709                        p_customer_number);
2710     FETCH customer_csr into x_id1;
2711     CLOSE customer_csr;
2712 
2713     IF (x_id1 IS NULL) THEN
2714        okl_api.set_message(
2715                            G_APP_NAME,
2716                            G_INVALID_VALUE,
2717                            'CONTRACT_NUM',
2718                            p_contract_number,
2719                            'COL_NAME',
2720                            'CUSTOMER_ID, NUMBER',
2721                            'COL_VALUE',
2722                            p_customer_id||', '||p_customer_number
2723                            );
2724        return OKL_API.G_RET_STS_ERROR;  -- Customer Not found
2725     ELSE
2726        return OKL_API.G_RET_STS_SUCCESS;
2727     END IF;
2728 
2729   END validate_customer;
2730 
2731 ------------------------------------------------------------------------------
2732 -- FUNCTION check_contract_number
2733 -- It checks for duplicate contract number in OKL.
2734 -- Returns OKL_API.G_RET_STS_ERROR for duplicate and
2735 --         OKL_API.G_RET_STS_SUCCESS for New
2736 -- Calls:
2737 --  None
2738 -- Called By:
2739 --  check_input_record
2740 ------------------------------------------------------------------------------
2741 
2742   FUNCTION check_contract_number (p_contract_number IN VARCHAR2)
2743   RETURN VARCHAR2 IS
2744 
2745     CURSOR khdr_csr (p_ontract_number OKC_K_HEADERS_V.CONTRACT_NUMBER%TYPE) IS
2746     SELECT contract_number
2747     FROM   okc_k_headers_v
2748     WHERE  contract_number = p_contract_number;
2749 
2750     x_return_status   VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
2751     l_contract_number OKC_K_HEADERS_V.CONTRACT_NUMBER%TYPE;
2752 
2753   BEGIN
2754 
2755     OPEN khdr_csr(p_contract_number);
2756     FETCH khdr_csr INTO l_contract_number;
2757     IF khdr_csr%NOTFOUND THEN
2758        x_return_status := OKL_API.G_RET_STS_SUCCESS;
2759     ELSE
2760        x_return_status := OKL_API.G_RET_STS_ERROR;
2761     END IF;
2762     CLOSE khdr_csr;
2763 
2764     IF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2765        okl_api.set_message(
2766                            G_APP_NAME,
2767                            G_DUP_VALUE,
2768                            'COL_NAME',
2769                            'CONTRACT_NUMBER_OLD',
2770                            'COL_VALUE',
2771                            p_contract_number
2772                           );
2773     END IF;
2774 
2775     return x_return_status;
2776 
2777   END check_contract_number;
2778 
2779 
2780 ------------------------------------------------------------------------------
2781 -- PROCEDURE check_payment_frequency_code
2782 -- It validates Payment Frequency Code and returns ID1 and
2783 -- stacks error, if any for further processing
2784 -- Calls:
2785 --  None
2786 -- Called By:
2787 --  check_payment_record
2788 --  create_payment_other_rules
2789 --  load_input_record
2790 ------------------------------------------------------------------------------
2791    PROCEDURE check_payment_frequency_code(
2792                                           x_return_status     OUT NOCOPY VARCHAR2,
2793                                           x_msg_count         OUT NOCOPY NUMBER,
2794                                           x_msg_data          OUT NOCOPY VARCHAR2,
2795                                           p_payment_freq_code IN  okl_payments_interface.payment_frequency_code%TYPE,
2796                                           x_id1               OUT NOCOPY okx_tuom_v.id1%TYPE,
2797                                           x_uom_code          OUT NOCOPY okx_tuom_v.uom_code%TYPE
2798                                         ) IS
2799 /*
2800    CURSOR freq_csr (p_payment_freq_code okl_payments_interface.payment_frequency_code%TYPE) IS
2801    SELECT id1,
2802           uom_code
2803    FROM   okx_tuom_v
2804    WHERE  uom_class     = 'OKL-TIME'
2805    AND    base_uom_flag = 'N'
2806    AND    name          = p_payment_freq_code;
2807 */
2808    CURSOR freq_csr (p_payment_freq_code okl_payments_interface.payment_frequency_code%TYPE) IS
2809    SELECT id1,
2810           id1
2811    FROM   okl_time_units_v
2812    WHERE  name = p_payment_freq_code;
2813 
2814    l_id1      okx_tuom_v.id1%TYPE;
2815    l_uom_code okx_tuom_v.uom_code%TYPE;
2816 
2817    BEGIN
2818 
2819       x_return_status := OKL_API.G_RET_STS_SUCCESS;
2820       OPEN freq_csr(p_payment_freq_code);
2821       FETCH freq_csr INTO l_id1,
2822                           l_uom_code;
2823       IF freq_csr%NOTFOUND THEN
2824          x_return_status := OKL_API.G_RET_STS_ERROR;
2825       END IF;
2826 
2827       x_id1      := l_id1;
2828       x_uom_code := l_uom_code;
2829       RETURN;
2830 
2831    END check_payment_frequency_code;
2832 
2833 ------------------------------------------------------------------------------
2834 -- PROCEDURE check_contract_line
2835 -- It validates Party role line number/ Terms Line number/ Payments line number against contract
2836 -- line number in OKL_LINES_INTERFACE table
2837 -- Calls:
2838 --  None
2839 -- Called By:
2840 --  check_payment_record
2841 --  check_input_record
2842 ------------------------------------------------------------------------------
2843    PROCEDURE  check_contract_line(
2844                                   x_return_status   OUT NOCOPY VARCHAR2,
2845                                   p_contract_number IN  okl_party_roles_interface.contract_number_old%TYPE,
2846                                   p_line_number     IN  okl_party_roles_interface.line_number%TYPE
2847                                  ) IS
2848 
2849    CURSOR line_csr (p_contract_number VARCHAR2,
2850                     p_line_number     NUMBER) IS
2851    SELECT 'X'
2852    FROM   okl_lines_interface
2853    WHERE  contract_number_old = p_contract_number
2854    AND    line_number         = p_line_number;
2855 
2856    l_dummy VARCHAR2(1);
2857    BEGIN
2858 
2859      x_return_status := OKL_API.G_RET_STS_SUCCESS;
2860 
2861      OPEN line_csr (p_contract_number,
2862                     p_line_number);
2863      FETCH line_csr INTO l_dummy;
2864      IF line_csr%NOTFOUND THEN
2865         x_return_status := OKL_API.G_RET_STS_ERROR;
2866      END IF;
2867      CLOSE line_csr;
2868 
2869      return;
2870    END check_contract_line;
2871 
2872 ------------------------------------------------------------------------------
2873 -- PROCEDURE check_payment_record
2874 -- It validates Payment interface Record and stacks error, if any
2875 -- for further processing
2876 -- Calls:
2877 --  None
2878 -- Called By:
2879 --  check_payment_record
2880 ------------------------------------------------------------------------------
2881    PROCEDURE check_payment_record(
2882                                  x_return_status              OUT NOCOPY VARCHAR2,
2883                                  x_msg_count                  OUT NOCOPY NUMBER,
2884                                  x_msg_data                   OUT NOCOPY VARCHAR2,
2885                                  p_contract_number_old        IN  okl_payments_interface.contract_number_old%TYPE,
2886                                  p_line_number                IN  okl_payments_interface.line_number%TYPE,
2887                                  p_asset_number               IN  okl_payments_interface.asset_number%TYPE,
2888                                  p_payment_type_code          IN  VARCHAR2,
2889                                  p_stream_purpose             IN  okl_payments_interface.stream_purpose_code%TYPE,
2890                                  p_payment_schedule_number    IN  okl_payments_interface.payment_schedule_number%TYPE,
2891                                  p_payment_frequency_code     IN  okl_payments_interface.payment_frequency_code%TYPE,
2892                                  p_arrears_flag               IN  okl_payments_interface.arrears_flag%TYPE,
2893                                  p_advance_payments           IN  okl_payments_interface.advance_payments%TYPE,
2894                                  p_payment_amount             IN  okl_payments_interface.payment_amount%TYPE,
2895                                  p_start_date                 IN  okl_payments_interface.start_date%TYPE,
2896                                  p_number_of_periods          IN  okl_payments_interface.number_of_periods%TYPE,
2897                                  p_rate                       IN  okl_payments_interface.rate%TYPE,
2898                                  p_comments                   IN  okl_payments_interface.comments%TYPE,
2899                                  p_stub_days                  IN  okl_payments_interface.stub_days%TYPE,
2900                                  p_stub_amount                IN  okl_payments_interface.stub_amount%TYPE
2901                                 ) IS
2902 
2903    x_id1          okx_tuom_v.id1%TYPE;
2904    x_id2          okl_strmtyp_source_v.id1%TYPE;
2905    x_uom_code     okx_tuom_v.uom_code%TYPE;
2906    payment_failed EXCEPTION;
2907 
2908    l_return_status VARCHAR2(1);
2909    l_proc_name     VARCHAR2(35) := 'check_payment_record';
2910    l_payment_name  OKL_STRMTYP_SOURCE_V.NAME%TYPE;
2911 
2912    BEGIN
2913 
2914      debug_message(l_proc_name);
2915 
2916 /*
2917       IF (p_asset_number IS NULL
2918           AND
2919           p_line_number IS NOT NULL) THEN
2920          okl_api.set_message(
2921                              G_APP_NAME,
2922                              G_MISSING_VALUE,
2923                              'CONTRACT_NUM',
2924                              p_contract_number_old||'/'||p_line_number,
2925                              'COL_NAME',
2926                              'ASSET_NUMBER'
2927                             );
2928          x_return_status := OKL_API.G_RET_STS_ERROR;
2929       END IF;
2930 */
2931 
2932       IF (p_payment_type_code IS NULL) THEN
2933 
2934          okl_api.set_message(
2935                              G_APP_NAME,
2936                              G_MISSING_VALUE,
2937                              'CONTRACT_NUM',
2938                              p_contract_number_old||'/'||p_line_number,
2939                              'COL_NAME',
2940                              'PAYMENT_TYPE_CODE'
2941                             );
2942          x_return_status := OKL_API.G_RET_STS_ERROR;
2943       ELSE
2944 
2945          check_stream_type_code(
2946                                  x_return_status    => l_return_status,
2947                                  x_msg_count        => x_msg_count,
2948                                  x_msg_data         => x_msg_data,
2949                                  p_stream_type_code => p_payment_type_code,
2950                                  p_stream_purpose   => p_stream_purpose,
2951                                  x_id1              => x_id2,
2952                                  x_name             => l_payment_name
2953                                 );
2954 
2955          IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2956             okl_api.set_message(
2957                                 G_APP_NAME,
2958                                 G_INVALID_VALUE,
2959                                 'CONTRACT_NUM',
2960                                 p_contract_number_old||'/'||p_line_number,
2961                                 'COL_NAME',
2962                                 'PAYMENT_TYPE_CODE, STREAM_PURPOSE_CODE',
2963                                 'COL_VALUE',
2964                                  p_payment_type_code||', '||p_stream_purpose
2965                                 );
2966              x_return_status := OKL_API.G_RET_STS_ERROR;
2967          END IF;
2968       END IF;
2969 
2970 /*
2971       IF (p_payment_amount IS NULL
2972           AND
2973           p_rate IS NULL) THEN
2974           okl_api.set_message(
2975                               G_APP_NAME,
2976                               G_MISSING_VALUE,
2977                               'CONTRACT_NUM',
2978                               p_contract_number_old||'/'||p_line_number,
2979                               'COL_NAME',
2980                               'PAYMENT_AMOUNT or RATE'
2981                              );
2982           x_return_status := OKL_API.G_RET_STS_ERROR;
2983       END IF;
2984 */
2985 
2986       IF (p_payment_frequency_code IS NULL) THEN
2987 
2988          okl_api.set_message(
2989                              G_APP_NAME,
2990                              G_MISSING_VALUE,
2991                              'CONTRACT_NUM',
2992                              p_contract_number_old||'/'||p_line_number,
2993                              'COL_NAME',
2994                              'PAYMENT_FREQUENCY_CODE'
2995                             );
2996          x_return_status := OKL_API.G_RET_STS_ERROR;
2997       ELSE
2998          check_payment_frequency_code(
2999                                       x_return_status     => l_return_status,
3000                                       x_msg_count         => x_msg_count,
3001                                       x_msg_data          => x_msg_data,
3002                                       p_payment_freq_code => p_payment_frequency_code,
3003                                       x_id1               => x_id1,
3004                                       x_uom_code          => x_uom_code
3005                                      );
3006          IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3007             okl_api.set_message(
3008                                 G_APP_NAME,
3009                                 G_INVALID_VALUE,
3010                                 'CONTRACT_NUM',
3011                                 p_contract_number_old||'/'||p_line_number,
3012                                 'COL_NAME',
3013                                 'PAYMENT_FREQUENCY_CODE',
3014                                 'COL_VALUE',
3015                                  p_payment_frequency_code
3016                                 );
3017              x_return_status := OKL_API.G_RET_STS_ERROR;
3018          END IF;
3019       END IF;
3020 
3021       IF (p_advance_payments IS NULL) THEN
3022          okl_api.set_message(
3023                              G_APP_NAME,
3024                              G_MISSING_VALUE,
3025                              'CONTRACT_NUM',
3026                              p_contract_number_old||'/'||p_line_number,
3027                              'COL_NAME',
3028                              'ADVANCE_PAYMENTS'
3029                             );
3030          x_return_status := OKL_API.G_RET_STS_ERROR;
3031       END IF;
3032 
3033       IF (p_arrears_flag <> 'Y'
3034           AND
3035           p_arrears_flag <> 'N') THEN
3036 
3037          okl_api.set_message(
3038                              G_APP_NAME,
3039                              G_INVALID_VALUE,
3040                              'CONTRACT_NUM',
3041                              p_contract_number_old||'/'||p_line_number,
3042                              'COL_NAME',
3043                              'ARREARS_FLAG',
3044                              'COL_VALUE',
3045                               p_arrears_flag
3046                              );
3047           x_return_status := OKL_API.G_RET_STS_ERROR;
3048       END IF;
3049 
3050 /*
3051       IF (p_start_date IS NULL) THEN
3052          okl_api.set_message(
3053                              G_APP_NAME,
3054                              G_MISSING_VALUE,
3055                              'CONTRACT_NUM',
3056                              p_contract_number_old||'/'||p_line_number,
3057                              'COL_NAME',
3058                              'START_DATE'
3059                             );
3060          x_return_status := OKL_API.G_RET_STS_ERROR;
3061       END IF;
3062 */
3063 
3064       IF (p_stub_days IS NOT NULL
3065           AND
3066           p_stub_amount IS NOT NULL
3067           AND
3068           p_number_of_periods IS NOT NULL
3069           AND
3070           p_payment_amount IS NOT NULL
3071          ) THEN
3072          okl_api.set_message(
3073                              G_APP_NAME,
3074                              G_STUB_PMNT_BOTH,
3075                              'CONTRACT_NUM',
3076                              p_contract_number_old||'/'||p_line_number
3077                             );
3078          x_return_status := OKL_API.G_RET_STS_ERROR;
3079       ELSIF (p_stub_days IS NULL AND p_stub_amount IS NOT NULL) THEN
3080          okl_api.set_message(
3081                              G_APP_NAME,
3082                              G_MISSING_VALUE,
3083                              'CONTRACT_NUM',
3084                              p_contract_number_old||'/'||p_line_number,
3085                              'COL_NAME',
3086                              'STUB_DAYS'
3087                             );
3088          x_return_status := OKL_API.G_RET_STS_ERROR;
3089       ELSIF (p_stub_days IS NOT NULL AND p_stub_amount IS NULL) THEN
3090          okl_api.set_message(
3091                              G_APP_NAME,
3092                              G_MISSING_VALUE,
3093                              'CONTRACT_NUM',
3094                              p_contract_number_old||'/'||p_line_number,
3095                              'COL_NAME',
3096                              'STUB_AMOUNT'
3097                             );
3098          x_return_status := OKL_API.G_RET_STS_ERROR;
3099       ELSIF (p_number_of_periods IS NOT NULL AND p_payment_amount IS NULL) THEN
3100          okl_api.set_message(
3101                              G_APP_NAME,
3102                              G_MISSING_VALUE,
3103                              'CONTRACT_NUM',
3104                              p_contract_number_old||'/'||p_line_number,
3105                              'COL_NAME',
3106                              'PAYMENT_AMOUNT'
3107                             );
3108          x_return_status := OKL_API.G_RET_STS_ERROR;
3109       ELSIF (p_number_of_periods IS NULL AND p_payment_amount IS NOT NULL) THEN
3110          okl_api.set_message(
3111                              G_APP_NAME,
3112                              G_MISSING_VALUE,
3113                              'CONTRACT_NUM',
3114                              p_contract_number_old||'/'||p_line_number,
3115                              'COL_NAME',
3116                              'NUMBER_OF_PERIODS'
3117                             );
3118          x_return_status := OKL_API.G_RET_STS_ERROR;
3119       END IF;
3120 
3121       RETURN;
3122 
3123    EXCEPTION
3124 
3125       WHEN payment_failed THEN
3126          x_return_status := OKL_API.G_RET_STS_ERROR;
3127 
3128    END check_payment_record;
3129 
3130  ------------------------------------------------------------------------------
3131  -- PROCEDURE validate_usage_freq
3132  -- It validates Usage line payment frequency code
3133  -- Calls:
3134  --  None
3135  -- Called By:
3136  ------------------------------------------------------------------------------
3137     PROCEDURE validate_usage_freq(
3138                                   x_return_status   OUT NOCOPY VARCHAR2,
3139                                   x_msg_count       OUT NOCOPY VARCHAR2,
3140                                   x_msg_data        OUT NOCOPY VARCHAR2,
3141                                   p_freq            IN  VARCHAR2,
3142                                   p_contract_number IN  VARCHAR2,
3143                                   p_line_number     IN  NUMBER
3144                                  ) IS
3145 
3146     CURSOR freq_csr (p_freq_code VARCHAR2) IS
3147     SELECT 'Y'
3148     FROM   okx_units_of_measure_v okx,
3149            okc_time_code_units_v okc
3150     WHERE  okx.uom_code     = okc.uom_code
3151     AND    okc.active_flag  = 'Y'
3152     AND    okc.tce_code NOT IN ('HOUR','MINUTE','SECOND')
3153     AND    okx.uom_code     = p_freq_code;
3154 
3155     l_found     VARCHAR2(1) := 'N';
3156     freq_failed EXCEPTION;
3157     BEGIN
3158 
3159       x_return_status := OKL_API.G_RET_STS_SUCCESS;
3160 
3161       l_found := 'N';
3162       OPEN freq_csr (p_freq);
3163       FETCH freq_csr INTO l_found;
3164       CLOSE freq_csr;
3165 
3166       IF (l_found <> 'Y') THEN
3167          okl_api.set_message(
3168                             G_APP_NAME,
3169                             G_INVALID_VALUE,
3170                             'CONTRACT_NUM',
3171                             p_contract_number||','||p_line_number,
3172                             'COL_NAME',
3173                             'USAGE_PERIOD',
3174                             'COL_VALUE',
3175                             p_freq
3176                             );
3177          RAISE freq_failed;
3178       END IF;
3179 
3180       RETURN;
3181 
3182     EXCEPTION
3183       WHEN freq_failed THEN
3184          x_return_status := OKL_API.G_RET_STS_ERROR;
3185     END validate_usage_freq;
3186 
3187 ------------------------------------------------------------------------------
3188 -- PROCEDURE Check_Input_Record
3189 --    DO NOT USE THIS PROCEDURE, BUG 4350579
3190 -- It Reads data from Interface Tables and Validates. During process of validation it
3191 -- stacks Error, if any, and returns ERROR status to calling process.
3192 -- Calls:
3193 --   check_header_literal
3194 --   validate_customer
3195 --   validate_currency_code
3196 --   check_line_literal
3197 --   check_contract_line
3198 --   check_payment_record
3199 --   update_interface_status
3200 --   report_error
3201 -- Called By:
3202 --   process_record
3203 ------------------------------------------------------------------------------
3204   PROCEDURE Check_Input_Record(
3205                             p_init_msg_list    IN VARCHAR2,
3206                             x_return_status    OUT NOCOPY VARCHAR2,
3207                             x_msg_count        OUT NOCOPY NUMBER,
3208                             x_msg_data         OUT NOCOPY VARCHAR2,
3209                             p_batch_number     IN  VARCHAR2,
3210                             p_start_date_from  IN  DATE,
3211                             p_start_date_to    IN  DATE,
3212                             p_contract_number  IN  VARCHAR2,
3213                             p_customer_number  IN  VARCHAR2,
3214                             x_total_checked    OUT NOCOPY NUMBER
3215                            ) IS
3216 
3217   l_proc_name           VARCHAR2(35)  := NULL;
3218   l_progress            VARCHAR2(3)   := NULL;
3219   l_contract_number_old okl_header_interface.contract_number_old%TYPE;
3220   l_customer_id         okx_parties_v.id1%TYPE;
3221   l_record_status       VARCHAR2(3);
3222   l_batch_status        VARCHAR2(3);
3223   x_id1                 NUMBER;
3224 
3225   l_header_template     template_h_rec_type;
3226 
3227   header_validation_failed EXCEPTION;
3228   line_validation_failed EXCEPTION;
3229 
3230   --
3231   -- Cursor to fetch Header Interface Records
3232   --
3233 
3234   CURSOR okl_header_csr (p_batch_number    VARCHAR2,
3235                          p_start_date_from DATE,
3236                          p_start_date_to   DATE,
3237                          p_contract_number VARCHAR2,
3238                          p_customer_number VARCHAR2 ) IS
3239 
3240   SELECT *
3241   FROM   okl_header_interface
3242   WHERE  (
3243           batch_number        = p_batch_number
3244           OR
3245           contract_number_old = p_contract_number
3246           OR
3247           (
3248            customer_number    = p_customer_number
3249            AND
3250            start_date         between p_start_date_from AND p_start_date_to
3251           )
3252          )
3253   AND    nvl(scheduled_worker_id,'NONE') = g_instance_number
3254   AND    status in ('NEW','ERROR'); --Process only NEW and previuosly FAILED records
3255 
3256   --
3257   -- Cursor to fetch Line Interface Records for each contract header
3258   --
3259 
3260   CURSOR okl_line_csr (p_contract_number_old okc_k_headers_v.contract_number%TYPE) IS
3261   SELECT *
3262   FROM   okl_lines_interface
3263   WHERE  contract_number_old = p_contract_number_old
3264   ORDER BY line_number;
3265 
3266   --
3267   -- Cursor to fetch Party Role Records
3268   --
3269 
3270   CURSOR okl_party_role_csr (p_contract_number okc_k_headers_v.contract_number%TYPE) IS
3271   SELECT *
3272   FROM   okl_party_roles_interface
3273   WHERE  contract_number_old = p_contract_number;
3274 
3275   --
3276   -- Cursor to fetch Terms Records
3277   --
3278 
3279   CURSOR okl_term_csr (p_contract_number okc_k_headers_v.contract_number%TYPE) IS
3280   SELECT *
3281   FROM   okl_terms_interface
3282   WHERE  contract_number_old = p_contract_number;
3283 
3284   --
3285   -- Cursor to fetch Payments Records
3286   --
3287 
3288   CURSOR okl_payment_csr (p_contract_number okc_k_headers_v.contract_number%TYPE) IS
3289   SELECT *
3290   FROM   okl_payments_interface
3291   WHERE  contract_number_old = p_contract_number;
3292 
3293 
3294   BEGIN -- Actual Procedure Starts Here
3295 
3296    -- Bug 4350579
3297    -- THIS PROCEDURE IS NOT BEING USED ANY MORE
3298    -- DO NOT CALL THIS PROCEDURE FOR IMPORT
3299    --
3300 
3301   l_proc_name     := 'CHECK_INPUT_RECORD';
3302   x_return_status := OKL_API.G_RET_STS_SUCCESS; -- individual validaiton status
3303   l_record_status := OKL_API.G_RET_STS_SUCCESS; -- record level status
3304   l_batch_status  := OKL_API.G_RET_STS_SUCCESS; -- batch level status
3305 
3306   okl_api.init_msg_list(p_init_msg_list => OKL_API.G_TRUE);
3307   l_progress      := '000';
3308 
3309   FOR okl_header_rec IN okl_header_csr (p_batch_number,
3310                                         p_start_date_from,
3311                                         p_start_date_to,
3312                                         p_contract_number,
3313                                         p_customer_number )
3314   LOOP
3315 
3316     BEGIN
3317       -- Validation Starts For each Contract
3318       --fnd_file.put_line(fnd_file.output, 'Checking... '||okl_header_rec.contract_number_old);
3319 
3320       write_to_log('Checking... '||okl_header_rec.contract_number_old);
3321 
3322       x_total_checked := nvl(x_total_checked,0) + 1;
3323 
3324       l_progress := '010';
3325       l_record_status := OKL_API.G_RET_STS_SUCCESS;
3326 
3327 
3328       l_contract_number_old := okl_header_rec.contract_number_old;
3329 
3330       -- Validate CONTRACT_NUMBER_OLD
3331       IF ( okl_header_rec.contract_number_old IS NULL) THEN
3332          okl_api.set_message(
3333                             G_APP_NAME,
3334                             G_NULL_CONTRACT
3335                             );
3336 
3337 
3338          raise header_validation_failed; -- Unable to continue further
3339 
3340 /* not required, bug 3798008
3341  *    ELSIF ( check_contract_number (l_contract_number_old) = OKL_API.G_RET_STS_ERROR ) THEN
3342  *
3343  *         raise header_validation_failed; -- Unable to continue further
3344  *
3345 */
3346       END IF;
3347 
3348 
3349       l_progress := '020';
3350       --
3351       -- Get Template Information if requested
3352       --
3353       l_header_template := NULL;
3354       IF (okl_header_rec.template_number IS NOT NULL) THEN
3355          l_header_template := get_template(
3356                                            x_return_status   => x_return_status,
3357                                            x_msg_count       => x_msg_count,
3358                                            x_msg_data        => x_msg_data,
3359                                            p_template_number => okl_header_rec.template_number
3360                                           );
3361 
3362          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3363             RAISE header_validation_failed;
3364          END IF;
3365 
3366       END IF;
3367       --
3368       -- Checks Constant literal, not needed check against table
3369       -- validate and stacks error
3370       --
3371       x_return_status := check_header_literal (
3372                            p_contract_number             => okl_header_rec.contract_number_old,
3373                            p_template_id                 => l_header_template.id,
3374                            p_application_code            => okl_header_rec.application_code,
3375                            p_contract_category           => NVL(okl_header_rec.contract_category,l_header_template.scs_code),
3376                            p_import_request_stage        => okl_header_rec.import_request_stage,
3377                            p_converted_account           => NVL(okl_header_rec.converted_account,
3378                                                                 l_header_template.converted_account_yn),
3379                            p_security_deposit_hold_flag  => okl_header_rec.security_deposit_hold_flag,
3380                            p_security_deposit_net_flag   => okl_header_rec.security_deposit_net_flag,
3381                            p_review_invoice_flag         => okl_header_rec.review_invoice_flag,
3382                            p_date_signed                 => NVL(okl_header_rec.date_signed,l_header_template.date_signed),
3383                            p_start_date                  => NVL(okl_header_rec.start_date,l_header_template.start_date),
3384                            p_date_approved               => NVL(okl_header_rec.date_approved,l_header_template.date_approved),
3385                            p_term                        => NVL(okl_header_rec.term,l_header_template.term_duration),
3386                            p_accepted_date               => NVL(okl_header_rec.accepted_date,l_header_template.accepted_date),
3387                            p_deal_type_code              => NVL(okl_header_rec.deal_type_code,l_header_template.deal_type),
3388                            p_bill_to_address             => okl_header_rec.bill_to_address,
3389                            p_bill_to_address_id          => okl_header_rec.bill_to_address_id,
3390                            p_authoring_org_id            => NVL(okl_header_rec.authoring_org_id,
3391                                                                 l_header_template.authoring_org_id),
3392 			   p_inv_organization_id         => NVL(okl_header_rec.inventory_organization_id,
3393 			                                        l_header_template.inv_organization_id),
3394                            p_customer_account_number     => okl_header_rec.customer_account_number,
3395                            p_customer_account_id         => okl_header_rec.customer_account_id,
3396                            p_eot_purchase_opt_type       => okl_header_rec.eot_purchase_opt_type,
3397                            p_expected_delivery_date      => okl_header_rec.expected_delivery_date,
3398                            p_currency_code               => NVL(okl_header_rec.currency_code,
3399                                                                   l_header_template.currency_code)
3400                           );
3401 
3402       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3403           l_record_status := OKL_API.G_RET_STS_ERROR;
3404       END IF;
3405 
3406       l_progress := '030';
3407 
3408       -- Validate CUSTOMER
3409       x_return_status := validate_customer(p_contract_number => okl_header_rec.contract_number_old,
3410                                            p_customer_id     => okl_header_rec.customer_id,
3411                                            p_customer_number => okl_header_rec.customer_number,
3412                                            x_id1             => l_customer_id);
3413 
3414       IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
3415          okl_header_rec.customer_id := l_customer_id;
3416       END IF;
3417 
3418       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3419           l_record_status := OKL_API.G_RET_STS_ERROR;
3420       END IF;
3421 
3422       l_progress := '040';
3423 
3424       -- Validate CURRENCY CODE
3425       x_return_status := validate_currency_code(p_contract_number => okl_header_rec.contract_number_old,
3426                                                 p_currency_code   => NVL(okl_header_rec.currency_code,
3427                                                                          l_header_template.currency_code));
3428 
3429       l_progress := '050';
3430       -- Call Line Cursor to get Line detail
3431 
3432       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3433           l_record_status := OKL_API.G_RET_STS_ERROR;
3434       END IF;
3435 
3436 
3437       FOR okl_line_rec IN okl_line_csr (okl_header_rec.contract_number_old)
3438       LOOP
3439         BEGIN
3440 
3441         -- Validation Starts For each Line of current header
3442 
3443         l_progress := '080';
3444 
3445         -- Validate Line Number
3446         IF (okl_line_rec.line_number IS NULL) THEN
3447            okl_api.set_message(
3448                                G_APP_NAME,
3449                                G_MISSING_VALUE,
3450                                'CONTRACT_NUM',
3451                                okl_header_rec.contract_number_old,
3452                                'COL_NAME',
3453                                'CONTRACT_LINE_NUMBER'
3454                               );
3455 
3456            x_return_status := OKL_API.G_RET_STS_ERROR;
3457 
3458            raise line_validation_failed; -- unable to continue with line validation, proceed with next line
3459 
3460         END IF;
3461 
3462         l_progress := '090';
3463         check_line_literal (
3464                             x_return_status             => x_return_status,
3465                             x_msg_count                 => x_msg_count,
3466                             x_msg_data                  => x_msg_data,
3467                             p_contract_number           => okl_header_rec.contract_number_old,
3468                             p_import_request_stage      => okl_header_rec.import_request_stage,
3469                             p_product_id                => okl_header_rec.product_id,
3470                             p_product_name              => okl_header_rec.product_name,
3471                             p_line_number               => okl_line_rec.line_number,
3472                             p_line_type                 => okl_line_rec.line_type,
3473                             p_amount                    => okl_line_rec.amount,
3474                             p_currency_code             => okl_header_rec.currency_code,
3475                             p_asset_number              => okl_line_rec.asset_number,
3476                             p_inventory_item_name       => okl_line_rec.inventory_item_name,
3477                             p_inventory_item_id         => okl_line_rec.inventory_item_id,
3478                             p_install_site_number       => okl_line_rec.install_site_number,
3479                             p_install_site_id           => okl_line_rec.install_site_id,
3480                             p_asset_corporate_book      => okl_line_rec.asset_corporate_book,
3481                             p_asset_category_id         => okl_line_rec.asset_category_id,
3482                             p_asset_category_segment1   => okl_line_rec.asset_category_segment1,
3483                             p_asset_category_segment2   => okl_line_rec.asset_category_segment2,
3484                             p_asset_category_segment3   => okl_line_rec.asset_category_segment3,
3485                             p_asset_category_segment4   => okl_line_rec.asset_category_segment4,
3486                             p_asset_category_segment5   => okl_line_rec.asset_category_segment5,
3487                             p_asset_category_segment6   => okl_line_rec.asset_category_segment6,
3488                             p_asset_category_segment7   => okl_line_rec.asset_category_segment7,
3489                             p_asset_location_id         => okl_line_rec.asset_location_id,
3490                             p_asset_location_segment1   => okl_line_rec.asset_location_segment1,
3491                             p_asset_location_segment2   => okl_line_rec.asset_location_segment2,
3492                             p_asset_location_segment3   => okl_line_rec.asset_location_segment3,
3493                             p_asset_location_segment4   => okl_line_rec.asset_location_segment4,
3494                             p_asset_location_segment5   => okl_line_rec.asset_location_segment5,
3495                             p_asset_location_segment6   => okl_line_rec.asset_location_segment6,
3496                             p_asset_location_segment7   => okl_line_rec.asset_location_segment7,
3497                             p_depreciation_method_id    => okl_line_rec.depreciation_method_id,
3498                             p_depreciation_method_code  => okl_line_rec.depreciation_method_code,
3499                             p_life_in_months            => okl_line_rec.life_in_months,
3500                             p_fee_code                  => okl_line_rec.fee_code,
3501                             p_stream_purpose            => okl_line_rec.stream_purpose_code,
3502                             p_fee_type                  => okl_line_rec.fee_type,
3503                             p_price_list_name           => okl_line_rec.price_list_name,
3504                             p_price_list_id             => okl_line_rec.price_list_id,
3505                             p_counter_group_name        => okl_line_rec.counter_group_name,
3506                             p_counter_group_id          => okl_line_rec.counter_group_id,
3507                             p_usage_bill_frequency_code => okl_line_rec.usage_bill_frequency_code,
3508                             p_base_reading_uom_code     => okl_line_rec.base_reading_uom_code,
3509                             p_usage_type_code           => okl_line_rec.usage_type_code,
3510                             p_usage_period              => okl_line_rec.usage_period,
3511                             p_usage_no_of_period        => okl_line_rec.usage_no_of_period,
3512                             p_tax_cost                  => okl_line_rec.tax_cost,
3513                             p_tax_book                  => okl_line_rec.tax_book,
3514                             p_life_in_months_tax        => okl_line_rec.life_in_months_tax,
3515                             p_deprn_method_tax          => okl_line_rec.deprn_method_tax,
3516                             p_deprn_rate_tax            => okl_line_rec.deprn_rate_tax,
3517                             p_in_service_date           => okl_line_rec.in_service_date,
3518 			    p_link_asset_amount         => okl_line_rec.link_asset_amount,
3519                             p_inv_org_id                => okl_header_rec.inventory_organization_id,
3520                             p_term_quote_id             => okl_line_rec.termination_quote_id,
3521                             p_term_quote_number         => okl_line_rec.termination_quote_number,
3522                             p_fee_purpose_code          => okl_line_rec.fee_purpose_code,
3523                             --Bug# 16344245
3524                             p_amount_balance_legacy       => okl_line_rec.amount_balance_legacy,
3525                             p_dt_effective_balance_legacy => okl_line_rec.dt_effective_balance_legacy
3526                            );
3527 
3528 
3529         IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3530             l_record_status := OKL_API.G_RET_STS_ERROR;
3531         END IF;
3532 
3533         EXCEPTION
3534 
3535             WHEN line_validation_failed THEN
3536                  x_return_status := OKL_API.G_RET_STS_ERROR;
3537 
3538         END; -- of line begin
3539 
3540       END LOOP; -- okl_line_csr
3541 
3542       l_progress := '100';
3543       -- Final Reporting of error, if any, for this contract
3544 
3545       FOR okl_party_role_rec IN okl_party_role_csr (okl_header_rec.contract_number_old)
3546       LOOP
3547          BEGIN
3548             IF (okl_party_role_rec.line_number IS NOT NULL) THEN
3549                check_contract_line(
3550                                    x_return_status   => x_return_status,
3551                                    p_contract_number => okl_party_role_rec.contract_number_old,
3552                                    p_line_number     => okl_party_role_rec.line_number
3553                                   );
3554 
3555                IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3556                   okl_api.set_message(
3557                                       G_APP_NAME,
3558                                       G_PARTY_ROLE_LINE_ERROR,
3559                                       'CONTRACT_NUM',
3560                                       okl_party_role_rec.contract_number_old||'/'||okl_party_role_rec.line_number
3561                                      );
3562                   x_return_status := OKL_API.G_RET_STS_ERROR;
3563                END IF;
3564 
3565                IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3566                   l_record_status := OKL_API.G_RET_STS_ERROR;
3567                END IF;
3568             END IF;
3569          END;
3570 
3571       END LOOP; -- party_role
3572 
3573       l_progress := '110';
3574 
3575       --x_return_status := l_record_status;
3576 
3577       FOR okl_term_rec IN okl_term_csr (okl_header_rec.contract_number_old)
3578       LOOP
3579          BEGIN
3580             x_return_status := OKL_API.G_RET_STS_SUCCESS;
3581 
3582             IF (okl_term_rec.line_number IS NULL) THEN
3583                okl_api.set_message(
3584                                    G_APP_NAME,
3585                                    G_TERM_NO_LINE_NUMBER,
3586                                    'CONTRACT_NUM',
3587                                    okl_term_rec.contract_number_old||'/'||okl_term_rec.line_number
3588                                   );
3589                check_contract_line(
3590                                    x_return_status   => x_return_status,
3591                                    p_contract_number => okl_term_rec.contract_number_old,
3592                                    p_line_number     => okl_term_rec.line_number
3593                                   );
3594 
3595                IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3596                   okl_api.set_message(
3597                                       G_APP_NAME,
3598                                       G_TERM_LINE_ERROR,
3599                                       'LINE_NUM',
3600                                       okl_term_rec.line_number,
3601                                       'CONTRACT_NUM',
3602                                       okl_term_rec.contract_number_old||'/'||okl_term_rec.line_number
3603                                      );
3604                   x_return_status := OKL_API.G_RET_STS_ERROR;
3605                END IF;
3606 
3607             END IF;
3608 
3609             IF (x_return_status <>  OKL_API.G_RET_STS_SUCCESS) THEN
3610                l_record_status := x_return_status;
3611             END IF;
3612 
3613             IF (okl_header_rec.import_request_stage <> 'NEW'
3614                 AND
3615                 okl_term_rec.bill_to_address_id IS NULL
3616                 AND
3617                 okl_term_rec.bill_to_address IS NULL) THEN
3618 
3619                 okl_api.set_message(
3620                                     G_APP_NAME,
3621                                     G_MISSING_VALUE,
3622                                     'CONTRACT_NUM',
3623                                     okl_term_rec.contract_number_old||'/'||okl_term_rec.line_number,
3624                                    'COL_NAME',
3625                                    'BILL_TO_ADDRESS'
3626                                    );
3627 
3628                 x_return_status := OKL_API.G_RET_STS_ERROR;
3629             END IF;
3630 
3631             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3632                l_record_status := x_return_status;
3633             END IF;
3634          END;
3635 
3636       END LOOP; -- term
3637 
3638       l_progress := '120';
3639 
3640       FOR okl_payment_rec IN okl_payment_csr (okl_header_rec.contract_number_old)
3641       LOOP
3642          x_return_status := OKL_API.G_RET_STS_SUCCESS;
3643          BEGIN
3644 
3645             check_payment_record(
3646                                  x_return_status              => x_return_status,
3647                                  x_msg_count                  => x_msg_count,
3648                                  x_msg_data                   => x_msg_data,
3649                                  p_contract_number_old        => okl_payment_rec.contract_number_old,
3650                                  p_line_number                => okl_payment_rec.line_number,
3651                                  p_asset_number               => okl_payment_rec.asset_number,
3652                                  p_payment_type_code          => okl_payment_rec.payment_type_code,
3653                                  p_stream_purpose             => okl_payment_rec.stream_purpose_code,
3654                                  p_payment_schedule_number    => okl_payment_rec.payment_schedule_number,
3655                                  p_payment_frequency_code     => okl_payment_rec.payment_frequency_code,
3656                                  p_arrears_flag               => okl_payment_rec.arrears_flag,
3657                                  p_advance_payments           => okl_payment_rec.advance_payments,
3658                                  p_payment_amount             => okl_payment_rec.payment_amount,
3659                                  p_start_date                 => okl_payment_rec.start_date,
3660                                  p_number_of_periods          => okl_payment_rec.number_of_periods,
3661                                  p_rate                       => okl_payment_rec.rate,
3662                                  p_comments                   => okl_payment_rec.comments,
3663                                  p_stub_days                  => okl_payment_rec.stub_days,
3664                                  p_stub_amount                => okl_payment_rec.stub_amount
3665                                 );
3666 
3667             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3668                 l_record_status := x_return_status;
3669             END IF;
3670 
3671          END;
3672 
3673       END LOOP; -- payment
3674 
3675       l_progress := '130';
3676 
3677     EXCEPTION
3678       WHEN header_validation_failed THEN
3679 
3680 --         okl_open_interface_pvt.report_error (
3681 --                                          x_msg_count => x_msg_count,
3682 --                                          x_msg_data  => x_msg_data
3683 --                                         );
3684          x_return_status := OKL_API.G_RET_STS_ERROR;
3685          l_record_status := OKL_API.G_RET_STS_ERROR;
3686 
3687     END; -- of Header Begin
3688 
3689     IF (l_record_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3690        l_batch_status  := OKL_API.G_RET_STS_ERROR;
3691        x_return_status := OKL_API.G_RET_STS_ERROR;
3692     END IF;
3693 
3694     IF (l_record_status = OKL_API.G_RET_STS_SUCCESS) THEN
3695        Update_Interface_Status(p_contract_number     => okl_header_rec.contract_number_old,
3696                                p_new_contract_number => okl_header_rec.contract_number,
3697                                p_status              => 'ELIGIBLE',
3698                                x_return_status       => x_return_status
3699                               );
3700        COMMIT;
3701 
3702     ELSE
3703        Update_Interface_Status(p_contract_number     => okl_header_rec.contract_number_old,
3704                                p_new_contract_number => okl_header_rec.contract_number,
3705                                p_status              => 'ERROR',
3706                                x_return_status       => x_return_status
3707                               );
3708        COMMIT;
3709          x_return_status := OKL_API.G_RET_STS_ERROR;
3710     END IF;
3711 
3712 --    report_error (
3713 --                  x_msg_count => x_msg_count,
3714 --                  x_msg_data  => x_msg_data
3715 --                 );
3716 --    debug_message('========================done ');
3717 
3718   END LOOP; -- okl_header_csr
3719 
3720   IF (l_batch_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3721      x_return_status := l_batch_status; -- set final status to out variable for further processing
3722   END IF;
3723 
3724   EXCEPTION
3725     WHEN OTHERS THEN
3726       okl_api.set_message(
3727                           G_APP_NAME,
3728                           G_UNEXPECTED_ERROR,
3729                           'OKL_SQLCODE',
3730                           SQLCODE,
3731                           'OKL_SQLERRM',
3732                           SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
3733                          );
3734       x_return_status := OKL_API.G_RET_STS_ERROR;
3735 
3736       report_error (
3737                     x_msg_count => x_msg_count,
3738                     x_msg_data  => x_msg_data
3739                    );
3740 
3741   END Check_Input_Record;
3742 --*********************** check Interface **************************************
3743 
3744 --+++++++++++++++++++++++ Load Interface +++++++++++++++++++++++++++++++++++++++
3745 ------------------------------------------------------------------------------
3746 -- FUNCTION get_product_id
3747 -- It gets Product ID if any. It checks againts okl_products_v for
3748 -- esistance of product as supplied in parameters
3749 -- Calls:
3750 --  None
3751 -- Called By:
3752 --  load_input_record
3753 ------------------------------------------------------------------------------
3754 
3755   FUNCTION get_product_id (p_product_id     IN   okl_products_v.id%TYPE,
3756                            p_product_name   IN   okl_products_v.name%TYPE,
3757                            x_product_id     OUT NOCOPY  okl_products_v.id%TYPE )
3758   RETURN VARCHAR2 IS
3759 
3760   x_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
3761   l_product_id    OKL_PRODUCTS_V.ID%TYPE;
3762   l_revenue_recognition_method okl_product_parameters_v.REVENUE_RECOGNITION_METHOD%TYPE;
3763   l_interest_calculation_basis okl_product_parameters_v.INTEREST_CALCULATION_BASIS%TYPE;
3764   l_deal_type okl_product_parameters_v.DEAL_TYPE%TYPE;
3765   product_exception EXCEPTION;
3766 
3767   CURSOR product_csr(p_product_name okl_products_v.name%TYPE,
3768                      p_product_id   okl_products_v.id%TYPE) IS
3769   SELECT a.id,
3770          b.revenue_recognition_method,
3771          b.interest_calculation_basis,
3772          b.deal_type
3773   FROM   okl_products_v a,
3774          okl_product_parameters_v b
3775   WHERE  ((a.name = p_product_name
3776            AND
3777            p_product_name IS NOT NULL
3778           )
3779           OR
3780           (a.id   = p_product_id
3781            AND
3782            p_product_id IS NOT NULL
3783           )
3784          )
3785   AND    TRUNC(SYSDATE) BETWEEN NVL(a.from_date,TRUNC(SYSDATE)) AND NVL(a.to_date,TRUNC(SYSDATE))
3786   AND    A.id = B.id;
3787 
3788   BEGIN
3789 
3790      x_return_status := OKL_API.G_RET_STS_SUCCESS;
3791 
3792      OPEN product_csr(p_product_name,
3793                       p_product_id);
3794      FETCH product_csr INTO l_product_id,
3795                             l_revenue_recognition_method,
3796                             l_interest_calculation_basis,
3797                             l_deal_type;
3798 
3799      IF product_csr%NOTFOUND THEN
3800        RAISE product_exception;
3801      END IF;
3802      CLOSE product_csr;
3803      x_product_id := l_product_id;
3804      G_PRODUCT_ID := l_product_id;
3805      G_REVENUE_RECOGNITION_METHOD := l_revenue_recognition_method;
3806      G_INTEREST_CALCULATION_BASIS := l_interest_calculation_basis;
3807      G_DEAL_TYPE := l_deal_type;
3808 
3809     return x_return_status;
3810 
3811   EXCEPTION
3812 
3813     WHEN product_exception THEN
3814 
3815        IF product_csr%ISOPEN THEN
3816           CLOSE product_csr;
3817        END IF;
3818 
3819        x_return_status := OKL_API.G_RET_STS_ERROR;
3820        return x_return_status;
3821 
3822     WHEN OTHERS THEN
3823        NULL;
3824 
3825   END get_product_id;
3826 
3827 ------------------------------------------------------------------------------
3828 -- FUNCTION check_product_type
3829 -- It checks product type and returns 'Y' to out parameter
3830 -- if it is a LOAN product
3831 -- Calls:
3832 --  None
3833 -- Called By:
3834 --  load_input_record
3835 ------------------------------------------------------------------------------
3836 
3837   PROCEDURE check_product_type (
3838                                 x_return_status  OUT NOCOPY VARCHAR2,
3839                                 x_msg_count      OUT NOCOPY NUMBER,
3840                                 x_msg_data       OUT NOCOPY VARCHAR2,
3841                                 p_prod_name      IN  okl_header_interface.product_name%TYPE,
3842                                 p_prod_id        IN  okl_header_interface.product_id%TYPE,
3843                                 x_loan_yn        OUT NOCOPY VARCHAR2
3844                                ) IS
3845 
3846   l_type          VARCHAR2(1) := 'N';
3847   l_proc_name     VARCHAR2(35) := 'CHECK_PRODUCT_TYPE';
3848 
3849   --dkagrawa changed query to use view okl_prod_qlty_val_uv than product_parameters_v for performance
3850   CURSOR prod_type_csr(p_product_name okl_products_v.name%TYPE,
3851                        p_product_id   okl_products_v.id%TYPE) IS
3852   SELECT 'Y'
3853   FROM   okl_products prod,
3854          okl_prod_qlty_val_uv pqv
3855   WHERE  ((prod.name = p_product_name
3856            AND
3857            p_product_name IS NOT NULL
3858           )
3859           OR
3860           (prod.id   = p_product_id
3861            AND
3862            p_product_id IS NOT NULL
3863           )
3864          )
3865   AND    TRUNC(SYSDATE) BETWEEN NVL(prod.from_date,TRUNC(SYSDATE)) AND NVL(prod.to_date,TRUNC(SYSDATE))
3866   AND    prod.id = pqv.pdt_id
3867   AND    prod.reporting_pdt_id IS NULL
3868   AND    pqv.quality_name IN ('LEASE','INVESTOR')
3869   AND    pqv.quality_val = 'LOAN';
3870 
3871   BEGIN
3872 
3873      x_return_status := OKL_API.G_RET_STS_SUCCESS;
3874      debug_message(l_proc_name);
3875 
3876      l_type := 'N';
3877      OPEN prod_type_csr(p_prod_name,
3878                         p_prod_id);
3879      FETCH prod_type_csr INTO l_type;
3880      CLOSE prod_type_csr;
3881 
3882      x_loan_yn := l_type;
3883 
3884   EXCEPTION
3885 
3886     WHEN OTHERS THEN
3887        IF prod_type_csr%ISOPEN THEN
3888           CLOSE prod_type_csr;
3889        END IF;
3890 
3891        okl_api.set_message(
3892                            G_APP_NAME,
3893                            G_UNEXPECTED_ERROR,
3894                            'OKL_SQLCODE',
3895                            SQLCODE,
3896                            'OKL_SQLERRM',
3897                            SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
3898                            );
3899 
3900        x_return_status := OKL_API.G_RET_STS_ERROR;
3901 
3902   END check_product_type;
3903 
3904 ------------------------------------------------------------------------------
3905 -- FUNCTION get_prog_agreement_id
3906 -- It gets Program agreement ID if any.
3907 -- Calls:
3908 --  None
3909 -- Called By:
3910 --  load_input_record
3911 ------------------------------------------------------------------------------
3912 
3913   FUNCTION get_prog_agreement_id (
3914                              p_scs_code         IN  okc_k_headers_v.scs_code%TYPE,
3915                              p_agreement_number IN  okc_k_headers_v.contract_number%TYPE,
3916                              p_agreement_id     IN  okc_k_headers_v.id%TYPE,
3917                              p_auth_org_id      IN  okc_k_headers_v.authoring_org_id%TYPE,
3918                              x_agreement_id     OUT NOCOPY okc_k_headers_v.contract_number%TYPE
3919                             ) RETURN VARCHAR2 IS
3920 
3921   x_return_status        VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
3922   l_contract_id          OKC_K_HEADERS_V.ID%TYPE;
3923   agreement_exception EXCEPTION;
3924 
3925   --Fixed Bug # 5484903
3926   CURSOR contract_csr (
3927                        p_scs_code        okc_k_headers_v.scs_code%TYPE,
3928                        p_agreement_id    okc_k_headers_v.id%TYPE,
3929                        p_agreement_number okc_k_headers_v.contract_number%TYPE,
3930                        p_auth_org_id      okc_k_headers_v.authoring_org_id%TYPE
3931                       ) IS
3932   SELECT id
3933    FROM   okc_k_headers_all_b
3934   WHERE  ((contract_number = p_agreement_number
3935            AND
3936            p_agreement_number IS NOT NULL
3937           )
3938           OR
3939           (id  = p_agreement_id
3940            AND
3941            p_agreement_id IS NOT NULL
3942           )
3943          )
3944   AND    scs_code = p_scs_code
3945   AND    sts_code = 'ACTIVE'
3946   AND    authoring_org_id = p_auth_org_id;
3947 
3948   BEGIN
3949 
3950      x_return_status := OKL_API.G_RET_STS_SUCCESS;
3951 
3952      OPEN contract_csr(p_scs_code,
3953                        p_agreement_id,
3954                        p_agreement_number,
3955                        p_auth_org_id);
3956      FETCH contract_csr INTO l_contract_id;
3957      IF contract_csr%NOTFOUND THEN
3958         RAISE agreement_exception;
3959      END IF;
3960      CLOSE contract_csr;
3961 
3962      x_agreement_id := l_contract_id;
3963 
3964     return x_return_status;
3965 
3966   EXCEPTION
3967 
3968     WHEN agreement_exception THEN
3969 
3970        IF contract_csr%ISOPEN THEN
3971           CLOSE contract_csr;
3972        END IF;
3973 
3974        x_return_status := OKL_API.G_RET_STS_ERROR;
3975        return x_return_status;
3976 
3977     WHEN OTHERS THEN
3978        NULL;
3979 
3980   END get_prog_agreement_id;
3981 
3982 ------------------------------------------------------------------------------
3983 -- FUNCTION get_agreement_id
3984 -- It gets Master Lease ID if any. It checks againts okc_k_headers_v for
3985 -- esistance of master contract as supplied in parameters
3986 -- Calls:
3987 --  None
3988 -- Called By:
3989 --  load_input_record
3990 ------------------------------------------------------------------------------
3991 
3992   FUNCTION get_agreement_id (
3993                              p_scs_code         IN  okc_k_headers_v.scs_code%TYPE,
3994                              p_auth_org_id      IN  okc_k_headers_v.authoring_org_id%TYPE,
3995                              p_agreement_number IN  okc_k_headers_v.contract_number%TYPE,
3996                              p_agreement_id     IN  okc_k_headers_v.id%TYPE,
3997                              x_agreement_id     OUT NOCOPY okc_k_headers_v.contract_number%TYPE
3998                             ) RETURN VARCHAR2 IS
3999 
4000   x_return_status        VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
4001   l_contract_id          OKC_K_HEADERS_V.ID%TYPE;
4002   agreement_exception EXCEPTION;
4003   --Fixed Bug #5484903
4004   CURSOR contract_csr (
4005                        p_scs_code        okc_k_headers_v.scs_code%TYPE,
4006                        p_org_id          okc_k_headers_v.authoring_org_id%TYPE,
4007                        p_agreement_id    okc_k_headers_v.id%TYPE,
4008                        p_agreement_number okc_k_headers_v.contract_number%TYPE
4009                       ) IS
4010   SELECT id
4011   FROM   okc_k_headers_all_b
4012   WHERE  ((contract_number = p_agreement_number
4013            AND
4014            p_agreement_number IS NOT NULL
4015           )
4016           OR
4017           (id  = p_agreement_id
4018            AND
4019            p_agreement_id IS NOT NULL
4020           )
4021          )
4022   AND    authoring_org_id = p_org_id
4023   AND    scs_code = p_scs_code
4024   AND    sts_code <> 'TERMINATED';
4025 
4026   BEGIN
4027 
4028      x_return_status := OKL_API.G_RET_STS_SUCCESS;
4029 
4030      debug_message('Org: '||p_auth_org_id);
4031      debug_message('SCS: '||p_scs_code);
4032      debug_message('Agreement :'||p_agreement_id||', '||p_agreement_number||'***');
4033 
4034      OPEN contract_csr(p_scs_code,
4035                        p_auth_org_id,
4036                        p_agreement_id,
4037                        p_agreement_number);
4038      FETCH contract_csr INTO l_contract_id;
4039      IF contract_csr%NOTFOUND THEN
4040         RAISE agreement_exception;
4041      END IF;
4042      CLOSE contract_csr;
4043 
4044      x_agreement_id := l_contract_id;
4045 
4046     return x_return_status;
4047 
4048   EXCEPTION
4049 
4050     WHEN agreement_exception THEN
4051 
4052        IF contract_csr%ISOPEN THEN
4053           CLOSE contract_csr;
4054        END IF;
4055 
4056        x_return_status := OKL_API.G_RET_STS_ERROR;
4057        return x_return_status;
4058 
4059     WHEN OTHERS THEN
4060        NULL;
4061 
4062   END get_agreement_id;
4063 
4064 ------------------------------------------------------------------------------
4065 -- PROCEDURE get_vendor_id
4066 -- It gets vendor id for given vendor name
4067 -- and stacks error if any
4068 -- Calls:
4069 --  None
4070 -- Called By:
4071 --  process_party_role
4072 ------------------------------------------------------------------------------
4073   PROCEDURE get_vendor_id(
4074                           x_return_status     OUT NOCOPY VARCHAR2,
4075                           x_msg_count         OUT NOCOPY NUMBER,
4076                           x_msg_data          OUT NOCOPY VARCHAR2,
4077                           p_contract_number   IN  okl_header_interface.contract_number_old%TYPE,
4078                           p_line_number       IN  okl_lines_interface.line_number%TYPE,
4079                           x_vendor_id         OUT NOCOPY NUMBER,
4080                           p_vendor_name       IN OKX_VENDORS_V.NAME%TYPE
4081                          ) IS
4082 
4083     CURSOR vendor_csr (p_vendor_name VARCHAR2) IS
4084     SELECT id1
4085     FROM   okx_vendors_v
4086     WHERE  name = p_vendor_name;
4087 
4088     l_id         NUMBER;
4089     l_proc_name  VARCHAR2(35) := 'GET_VENDOR_ID';
4090     vendor_failed EXCEPTION;
4091 
4092     BEGIN
4093 
4094       x_return_status := OKL_API.G_RET_STS_SUCCESS;
4095 
4096       OPEN  vendor_csr(p_vendor_name);
4097       FETCH vendor_csr INTO l_id;
4098       IF vendor_csr%NOTFOUND THEN
4099          RAISE vendor_failed;
4100       END IF;
4101       CLOSE vendor_csr;
4102 
4103       x_vendor_id := l_id;
4104 
4105     EXCEPTION
4106      WHEN vendor_failed THEN
4107        CLOSE vendor_csr;
4108        okl_api.set_message(
4109                            G_APP_NAME,
4110                            G_INVALID_VALUE,
4111                            'CONTRACT_NUM',
4112                            p_contract_number||'/'||TO_CHAR(p_line_number),
4113                            'COL_NAME',
4114                            'VENDOR_NAME',
4115                            'COL_VALUE',
4116                            p_vendor_name
4117                           );
4118        x_return_status := OKL_API.G_RET_STS_ERROR;
4119 
4120 
4121      WHEN OTHERS THEN
4122        IF vendor_csr%ISOPEN THEN
4123        CLOSE vendor_csr;
4124        END IF;
4125 
4126        okl_api.set_message(
4127                            G_APP_NAME,
4128                            G_UNEXPECTED_ERROR,
4129                            'OKL_SQLCODE',
4130                            SQLCODE,
4131                            'OKL_SQLERRM',
4132                            SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
4133                            );
4134 
4135        x_return_status := OKL_API.G_RET_STS_ERROR;
4136 
4137     END get_vendor_id;
4138 
4139 ------------------------------------------------------------------------------
4140 -- PROCEDURE get_party_id
4141 -- It gets party id for given party number
4142 -- and stacks error if any
4143 -- Calls:
4144 --  None
4145 -- Called By:
4146 --  create_line_rules
4147 --  process_party_role
4148 ------------------------------------------------------------------------------
4149   PROCEDURE get_party_id(
4150                               x_return_status     OUT NOCOPY VARCHAR2,
4151                               x_msg_count         OUT NOCOPY NUMBER,
4152                               x_msg_data          OUT NOCOPY VARCHAR2,
4153                               p_contract_number   IN  okl_header_interface.contract_number_old%TYPE,
4154                               p_line_number       IN  okl_lines_interface.line_number%TYPE,
4155                               p_party_id          IN  OKX_PARTIES_V.ID1%TYPE,
4156                               p_party_number      IN  OKX_PARTIES_V.PARTY_NUMBER%TYPE,
4157                               x_party_id          OUT NOCOPY NUMBER
4158                              ) IS
4159 
4160     CURSOR party_csr (p_party_number VARCHAR2,
4161                       p_party_id     NUMBER) IS
4162     SELECT id1
4163     FROM   okx_parties_v
4164     WHERE  ((party_number = p_party_number
4165              AND
4166              p_party_number IS NOT NULL)
4167              OR
4168              (id1          = p_party_id
4169               AND
4170               p_party_id IS NOT NULL
4171              )
4172             );
4173 
4174     l_id         NUMBER;
4175     l_proc_name  VARCHAR2(35) := 'GET_PARTY_ID';
4176     party_failed EXCEPTION;
4177 
4178     BEGIN
4179 
4180       x_return_status := OKL_API.G_RET_STS_SUCCESS;
4181 
4182       OPEN  party_csr(p_party_number,
4183                       p_party_id);
4184       FETCH party_csr INTO l_id;
4185       IF party_csr%NOTFOUND THEN
4186          RAISE party_failed;
4187       END IF;
4188       CLOSE party_csr;
4189 
4190       x_party_id := l_id;
4191 
4192     EXCEPTION
4193      WHEN party_failed THEN
4194        CLOSE party_csr;
4195        okl_api.set_message(
4196                            G_APP_NAME,
4197                            G_INVALID_VALUE,
4198                            'CONTRACT_NUM',
4199                            p_contract_number||'/'||TO_CHAR(p_line_number),
4200                            'COL_NAME',
4201                            'PARTY_ID, NUMBER: ',
4202                            'COL_VALUE',
4203                            p_party_id||', '||p_party_number
4204                           );
4205        x_return_status := OKL_API.G_RET_STS_ERROR;
4206 
4207 
4208      WHEN OTHERS THEN
4209        IF party_csr%ISOPEN THEN
4210        CLOSE party_csr;
4211        END IF;
4212 
4213        okl_api.set_message(
4214                            G_APP_NAME,
4215                            G_UNEXPECTED_ERROR,
4216                            'OKL_SQLCODE',
4217                            SQLCODE,
4218                            'OKL_SQLERRM',
4219                            SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
4220                            );
4221 
4222        x_return_status := OKL_API.G_RET_STS_ERROR;
4223 
4224     END get_party_id;
4225 
4226 -- cklee start 02/23/2004
4227 ------------------------------------------------------------------------------
4228 -- PROCEDURE get_party
4229 -- It gets party id/party site id for any given combination of name, number
4230 -- and stacks error if any
4231 -- Calls:
4232 --  None
4233 -- Called By:
4234 ------------------------------------------------------------------------------
4235   PROCEDURE get_party( x_return_status           OUT NOCOPY VARCHAR2,
4236                        x_msg_count               OUT NOCOPY NUMBER,
4237                        x_msg_data                OUT NOCOPY VARCHAR2,
4238                        p_intf_party_rec          IN  intf_party_rec_type,
4239                        x_party_id                OUT NOCOPY NUMBER,
4240                        x_party_site_id           OUT NOCOPY NUMBER
4241                       ) IS
4242 
4243     CURSOR party_csr (p_party_name         VARCHAR2,
4244                       p_party_id           NUMBER,
4245                       p_party_number       VARCHAR2,
4246                       p_party_site_name    VARCHAR2,
4247                       p_party_site_id      NUMBER,
4248                       p_party_site_number  VARCHAR2,
4249                       p_category_code      VARCHAR2) IS
4250   SELECT prt.PARTY_ID,
4251          prt.PARTY_NAME,
4252          prt.PARTY_NUMBER,
4253          hps.PARTY_SITE_ID,
4254          hps.PARTY_SITE_NAME,
4255          hps.PARTY_SITE_NUMBER
4256   FROM
4257       HZ_PARTIES PRT,
4258       HZ_PARTY_SITES HPS
4259   WHERE
4260       prt.PARTY_ID          = hps.PARTY_ID
4261 --start modified by abhaxen for 6689015 on 24-Jan-2008
4262       -- Added new filters to remove full table scans
4263        AND ( prt.CATEGORY_CODE = p_category_code AND p_category_code IS NOT NULL )
4264        AND ( ( prt.PARTY_ID = p_party_id AND p_party_id IS NOT NULL )
4265        OR ( prt.PARTY_NAME = p_party_name AND p_party_name IS NOT NULL)
4266        OR ( prt.PARTY_NUMBER = p_party_number AND p_party_number IS NOT NULL ))
4267        AND ( ( hps.PARTY_SITE_ID = p_party_site_id AND p_party_site_id IS NOT NULL )
4268        OR( hps.PARTY_SITE_NUMBER = p_party_site_number AND p_party_site_number IS NOT NULL )
4269        OR( hps.PARTY_SITE_NAME = p_party_site_name AND p_party_site_name IS NOT NULL ))
4270        ;
4271 
4272 
4273 /*  AND NVL(prt.CATEGORY_CODE, G_DEFAULT_CHAR)     = NVL(p_category_code, NVL(prt.CATEGORY_CODE,G_DEFAULT_CHAR))
4274   AND NVL(prt.PARTY_ID, G_DEFAULT_NUM)           = NVL(p_party_id, NVL(prt.PARTY_ID,G_DEFAULT_NUM))
4275   AND NVL(prt.PARTY_NUMBER, G_DEFAULT_CHAR)      = NVL(p_party_number, NVL(prt.PARTY_NUMBER, G_DEFAULT_CHAR))
4276   AND NVL(prt.PARTY_NAME, G_DEFAULT_CHAR)        = NVL(p_party_name, NVL(prt.PARTY_NAME, G_DEFAULT_CHAR))
4277   AND NVL(hps.PARTY_SITE_ID, G_DEFAULT_NUM)      = NVL(p_party_site_id, NVL(hps.PARTY_SITE_ID, G_DEFAULT_NUM))
4278   AND NVL(hps.PARTY_SITE_NUMBER, G_DEFAULT_CHAR) = NVL(p_party_site_number, NVL(hps.PARTY_SITE_NUMBER, G_DEFAULT_CHAR))
4279   AND NVL(hps.PARTY_SITE_NAME, G_DEFAULT_CHAR)   = NVL(p_party_site_name, NVL(hps.PARTY_SITE_NAME, G_DEFAULT_CHAR))  ;
4280 */
4281 --end modified by abhsaxen for 6689015 on 24-Jan-2008
4282     l_proc_name  VARCHAR2(35) := 'GET_PARTY';
4283     party_failed EXCEPTION;
4284     r_party party_csr%ROWTYPE;
4285     l_count NUMBER := 0;
4286 
4287 
4288     BEGIN
4289 
4290       x_return_status := OKL_API.G_RET_STS_SUCCESS;
4291 
4292       OPEN party_csr(p_intf_party_rec.party_name,
4293                      p_intf_party_rec.party_id,
4294                      p_intf_party_rec.party_number,
4295                      p_intf_party_rec.party_site_name,
4296                      p_intf_party_rec.party_site_id,
4297                      p_intf_party_rec.party_site_number,
4298                      p_intf_party_rec.party_category_code);
4299 
4300       LOOP
4301 
4302         FETCH party_csr INTO r_party;
4303         EXIT WHEN party_csr%NOTFOUND;
4304 
4305         x_party_id := r_party.party_id;
4306         x_party_site_id := r_party.party_site_id;
4307         l_count := party_csr%ROWCOUNT;
4308 
4309       END LOOP;
4310       CLOSE party_csr;
4311 
4312       -- no row return or multiple rows return
4313       IF (l_count = 0 OR l_count > 1) THEN
4314         raise party_failed;
4315       END IF;
4316 
4317     EXCEPTION
4318      WHEN party_failed THEN
4319 
4320        IF party_csr%ISOPEN THEN
4321          CLOSE party_csr;
4322        END IF;
4323 
4324        okl_api.set_message(
4325                            G_APP_NAME,
4326                            G_INVALID_VALUE,
4327                            'CONTRACT_NUM',
4328                            p_intf_party_rec.contract_number||'/'||TO_CHAR(p_intf_party_rec.line_number),
4329                            'COL_NAME',
4330 --                           'PARTY_ID, NUMBER: ',
4331 p_intf_party_rec.intf_party_id || ', ' || p_intf_party_rec.intf_party_name || ', '
4332  || p_intf_party_rec.intf_party_number || '/' ||
4333 p_intf_party_rec.intf_party_site_id || ', ' || p_intf_party_rec.intf_party_site_name || ', '
4334  || p_intf_party_rec.intf_party_site_number || ': ',
4335                            'COL_VALUE',
4336 p_intf_party_rec.party_id || ', ' || p_intf_party_rec.party_name || ', '
4337  || p_intf_party_rec.party_number || '/' ||
4338 p_intf_party_rec.party_site_id || ', ' || p_intf_party_rec.party_site_name || ', '
4339  || p_intf_party_rec.party_site_number || ': '
4340                           );
4341        x_return_status := OKL_API.G_RET_STS_ERROR;
4342 
4343 
4344      WHEN OTHERS THEN
4345 
4346        IF party_csr%ISOPEN THEN
4347          CLOSE party_csr;
4348        END IF;
4349 
4350        okl_api.set_message(
4351                            G_APP_NAME,
4352                            G_UNEXPECTED_ERROR,
4353                            'OKL_SQLCODE',
4354                            SQLCODE,
4355                            'OKL_SQLERRM',
4356                            SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
4357                            );
4358 
4359        x_return_status := OKL_API.G_RET_STS_ERROR;
4360 
4361     END get_party;
4362 -- cklee end 02/23/2004
4363 
4364 
4365 ------------------------------------------------------------------------------
4366 -- PROCEDURE create_party_role
4367 -- It creates Party Role from Header Interface Record and retruns status to
4368 -- calling module for further processing.
4369 -- Calls:
4370 --  None
4371 -- Called By:
4372 --  load_input_record
4373 ------------------------------------------------------------------------------
4374    PROCEDURE create_party_role(
4375                               x_return_status       OUT NOCOPY VARCHAR2,
4376                               x_msg_count           OUT NOCOPY NUMBER,
4377                               x_msg_data            OUT NOCOPY VARCHAR2,
4378                               p_contract_header_id  IN  okl_k_headers_v.id%TYPE,
4379                               p_contract_number_old IN  okc_k_headers_v.orig_system_reference1%TYPE,
4380                               p_customer_id         IN  okl_header_interface.customer_id%TYPE,
4381                               p_customer_number     IN  okl_header_interface.customer_number%TYPE,
4382                               p_authoring_org_id    IN  okl_header_interface.authoring_org_id%TYPE,
4383                               x_cplv_rec            OUT NOCOPY cplv_rec_type ) IS
4384 
4385     CURSOR customer_csr (p_customer_number OKX_PARTIES_V.PARTY_NUMBER%TYPE,
4386                          p_customer_id     OKX_PARTIES_V.ID1%TYPE) IS
4387     SELECT id1
4388     FROM   okx_parties_v
4389     WHERE  ((party_number = p_customer_number
4390              AND
4391              p_customer_number IS NOT NULL
4392             )
4393             OR
4394             (id1          = p_customer_id
4395              AND
4396              p_customer_id IS NOT NULL
4397             )
4398            );
4399 
4400     l_id1              okx_parties_v.id1%TYPE;
4401     l_proc_name        VARCHAR2(35) := 'CREATE_PARTY_ROLE';
4402     party_role_failed  EXCEPTION;
4403     p_cplv_rec         cplv_rec_type;
4404     l_kplv_rec         kplv_rec_type;
4405     x_kplv_rec         kplv_rec_type;
4406 
4407    BEGIN
4408 
4409      x_return_status := OKL_API.G_RET_STS_SUCCESS;
4410 
4411 /*
4412      OPEN customer_csr(p_customer_number,
4413                        p_customer_id);
4414      FETCH customer_csr INTO l_id1;
4415      IF customer_csr%NOTFOUND THEN
4416         raise party_role_failed;
4417      END IF;
4418      CLOSE customer_csr;
4419 
4420      g_customer_id := l_id1;
4421 */
4422 
4423      -- Create LESSEE
4424      p_cplv_rec.chr_id            := p_contract_header_id;
4425      p_cplv_rec.dnz_chr_id        := p_contract_header_id;
4426      p_cplv_rec.object1_id1       := TO_CHAR(g_customer_id);
4427      --p_cplv_rec.object1_id1       := TO_CHAR(l_id1);
4428      p_cplv_rec.object1_id2       := '#';
4429      p_cplv_rec.jtot_object1_code := 'OKX_PARTY';
4430      p_cplv_rec.rle_code          := 'LESSEE';
4431 
4432      --OKL_OKC_MIGRATION_PVT.create_k_party_role( -- Contract addl field, Bug 4558486
4433      OKL_K_PARTY_ROLES_PVT.create_k_party_role(
4434                                                 p_api_version => 1.0,
4435                                                 p_init_msg_list => OKL_API.G_FALSE,
4436                                                 x_return_status => x_return_status,
4437                                                 x_msg_count     => x_msg_count,
4438                                                 x_msg_data      => x_msg_data,
4439                                                 p_cplv_rec      => p_cplv_rec,
4440                                                 p_kplv_rec      => l_kplv_rec,
4441                                                 x_cplv_rec      => x_cplv_rec,
4442                                                 x_kplv_rec      => x_kplv_rec
4443                                                );
4444 
4445      IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
4446         -- Create LESSOR
4447         p_cplv_rec.chr_id            := p_contract_header_id;
4448         p_cplv_rec.dnz_chr_id        := p_contract_header_id;
4449         p_cplv_rec.object1_id1       := TO_CHAR(p_authoring_org_id);
4450         p_cplv_rec.object1_id2       := '#';
4451         p_cplv_rec.jtot_object1_code := 'OKX_OPERUNIT';
4452         p_cplv_rec.rle_code          := 'LESSOR';
4453 
4454        -- OKL_OKC_MIGRATION_PVT.create_k_party_role( -- Contract addl field, Bug 4558486
4455         OKL_K_PARTY_ROLES_PVT.create_k_party_role(
4456                                                 p_api_version => 1.0,
4457                                                 p_init_msg_list => OKL_API.G_FALSE,
4458                                                 x_return_status => x_return_status,
4459                                                 x_msg_count     => x_msg_count,
4460                                                 x_msg_data      => x_msg_data,
4461                                                 p_cplv_rec      => p_cplv_rec,
4462                                                 p_kplv_rec      => l_kplv_rec,
4463                                                 x_cplv_rec      => x_cplv_rec,
4464                                                 x_kplv_rec      => x_kplv_rec
4465                                                );
4466      END IF;
4467 
4468      IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
4469         RAISE party_role_failed;
4470      END IF;
4471 
4472      return;
4473 
4474    EXCEPTION
4475      WHEN party_role_failed THEN
4476 
4477        IF customer_csr%ISOPEN THEN
4478           CLOSE customer_csr;
4479        END IF;
4480 
4481        okl_api.set_message(
4482                            G_APP_NAME,
4483                            G_INVALID_VALUE,
4484                            'CONTRACT_NUM',
4485                            p_contract_number_old,
4486                            'COL_NAME',
4487                            'CUSTOMER_ID, NUMBER: ',
4488                            'COL_VALUE',
4489                            p_customer_id||', '||p_customer_number
4490                           );
4491 
4492        x_return_status := OKL_API.G_RET_STS_ERROR;
4493 
4494      WHEN OTHERS THEN
4495 
4496        IF customer_csr%ISOPEN THEN
4497        CLOSE customer_csr;
4498        END IF;
4499 
4500        okl_api.set_message(
4501                            G_APP_NAME,
4502                            G_UNEXPECTED_ERROR,
4503                            'OKL_SQLCODE',
4504                            SQLCODE,
4505                            'OKL_SQLERRM',
4506                            SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
4507                            );
4508 
4509        x_return_status := OKL_API.G_RET_STS_ERROR;
4510 
4511 
4512    END create_party_role;
4513 
4514 ------------------------------------------------------------------------------
4515 -- PROCEDURE get_bill_to_address_id
4516 -- It returns Bill To Address ID from bill to address number and
4517 -- stacks Error, if any, and returns ERROR status to calling process.
4518 -- Calls:
4519 --  None
4520 -- Called By:
4521 --  create_header_rules
4522 --  process_term
4523 ------------------------------------------------------------------------------
4524 
4525    PROCEDURE get_bill_to_address_id(
4526                                     x_return_status           OUT NOCOPY VARCHAR2,
4527                                     x_msg_count               OUT NOCOPY NUMBER,
4528                                     x_msg_data                OUT NOCOPY VARCHAR2,
4529                                     p_contract_number         IN  okl_header_interface.contract_number_old%TYPE,
4530                                     p_auth_org_id             IN  okl_header_interface.authoring_org_id%TYPE,
4531                                     p_bill_to_address_id      IN  okl_header_interface.bill_to_address_id%TYPE,
4532                                     p_bill_to_address         IN  okl_header_interface.bill_to_address%TYPE,
4533                                     p_customer_account_id     IN  NUMBER,
4534                                     x_bill_to_address_id      OUT NOCOPY NUMBER
4535                                    ) IS
4536 
4537    CURSOR bill_csr (p_org_id              NUMBER,
4538                     p_bill_to_address     VARCHAR2,
4539                     p_bill_to_address_id  NUMBER,
4540                     p_customer_account_id NUMBER) IS
4541    SELECT site_use.id1
4542    FROM   okx_cust_site_uses_v site_use,
4543           hz_cust_acct_sites_all site
4544    WHERE  site.cust_acct_site_id = site_use.cust_acct_site_id
4545    AND    ((site_use.name            = p_bill_to_address
4546             AND
4547             p_bill_to_address IS NOT NULL)
4548             OR
4549             (site_use.id1            = p_bill_to_address_id
4550              AND
4551              p_bill_to_address_id IS NOT NULL
4552             )
4553            )
4554    AND    site_use.org_id                = p_org_id
4555    AND    site.org_id                    = p_org_id
4556    AND    site_use.site_use_code         = 'BILL_TO'
4557    AND    site_use.cust_account_id       = p_customer_account_id
4558    AND    site_use.b_status              = 'A'
4559    AND    site.status                    = 'A';
4560    --AND    cust_acct_site_status = 'A';
4561 
4562    l_proc_name      VARCHAR2(35) := 'GET_BILL_TO_ADDRESS_ID';
4563    l_id             okl_header_interface.bill_to_address_id%TYPE;
4564    bill_failed      EXCEPTION;
4565 
4566    BEGIN
4567 
4568       x_return_status := OKL_API.G_RET_STS_SUCCESS;
4569 
4570 
4571       OPEN  bill_csr(p_auth_org_id,
4572                      p_bill_to_address,
4573                      p_bill_to_address_id,
4574                      p_customer_account_id);
4575       FETCH bill_csr INTO l_id;
4576       IF  bill_csr%NOTFOUND THEN
4577           raise bill_failed;
4578       END IF;
4579       CLOSE bill_csr;
4580 
4581       x_bill_to_address_id := l_id;
4582 
4583       return;
4584 
4585     EXCEPTION
4586       WHEN bill_failed THEN
4587 
4588         IF (bill_csr%ISOPEN) THEN
4589           CLOSE bill_csr;
4590         END IF;
4591 
4592         okl_api.set_message(
4593                             G_APP_NAME,
4594                             G_INVALID_VALUE,
4595                             'CONTRACT_NUM',
4596                             p_contract_number,
4597                             'COL_NAME',
4598                             'BILL_TO_ADDRESS_ID, NAME',
4599                             'COL_VALUE',
4600                             p_bill_to_address_id||', '||p_bill_to_address
4601                            );
4602        x_return_status := OKL_API.G_RET_STS_ERROR;
4603 
4604       WHEN OTHERS THEN
4605         okl_api.set_message(
4606                             G_APP_NAME,
4607                             G_UNEXPECTED_ERROR,
4608                             'OKL_SQLCODE',
4609                             SQLCODE,
4610                             'OKL_SQLERRM',
4611                             SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
4612                            );
4613 
4614         x_return_status := OKL_API.G_RET_STS_ERROR;
4615 
4616 
4617    END get_bill_to_address_id;
4618 
4619 ------------------------------------------------------------------------------
4620 -- PROCEDURE get_bank_account_id
4621 -- It returns Bank account id from account Number and
4622 -- stacks Error, if any, and returns ERROR status to calling process.
4623 -- Calls:
4624 --  None
4625 -- Called By:
4626 --  create_header_rules
4627 --  process_term
4628 ------------------------------------------------------------------------------
4629 
4630    PROCEDURE get_bank_account_id(
4631                                  x_return_status           OUT NOCOPY VARCHAR2,
4632                                  x_msg_count               OUT NOCOPY NUMBER,
4633                                  x_msg_data                OUT NOCOPY VARCHAR2,
4634                                  p_contract_number         IN  okl_header_interface.contract_number_old%TYPE,
4635                                  p_auth_org_id             IN  okl_header_interface.authoring_org_id%TYPE,
4636                                  p_bank_account_id         IN  okl_header_interface.bank_account_id%TYPE,
4637                                  p_bank_account_number     IN  okl_header_interface.bank_account_number%TYPE,
4638                                  p_customer_account_id     IN  NUMBER,
4639                                  p_cust_site_id            IN  NUMBER,
4640                                  x_bank_account_id         OUT NOCOPY NUMBER
4641                                 ) IS
4642 
4643     CURSOR bank_acct_csr(p_bank_acc_number VARCHAR2,
4644                          p_bank_acc_id     NUMBER,
4645                          p_customer_acc_id NUMBER,
4646                          p_cust_site_id    NUMBER,
4647                          p_org_id          NUMBER) IS
4648     SELECT id1
4649     FROM   okx_rcpt_method_accounts_v
4650     WHERE  (
4651              (bank_account_num = p_bank_acc_number)
4652              OR
4653              (id1             = p_bank_acc_id)
4654             )
4655     AND    customer_id          = p_customer_acc_id
4656     -- udhenuko Bug#5925603 : Start
4657     --AND    customer_site_use_id =p_cust_site_id
4658     AND    ((customer_site_use_id = p_cust_site_id)
4659                or  ( customer_site_use_id IS NULL) )
4660      --Bug#5925603: End
4661     -- rbanerje Bug#5925603(Release bug 7355967) : Start
4662     -- AND    org_id               = p_org_id
4663     -- rbanerje Bug#5925603(Release bug 7355967) : End
4664     AND    TRUNC(SYSDATE) between NVL(START_DATE_ACTIVE, TRUNC(SYSDATE)) AND NVL(END_DATE_ACTIVE,TRUNC(SYSDATE))
4665     -- udhenuko Bug#5925603 : added order clause so that one used at site level will take precedence
4666     ORDER BY CUSTOMER_SITE_USE_ID;
4667     --Bug#5925603 : End
4668 
4669     l_id             OKX_RCPT_METHOD_ACCOUNTS_V.ID1%TYPE;
4670     bank_acct_failed EXCEPTION;
4671     l_proc_name      VARCHAR2(35) := 'GET_BANK_ACCOUNT_ID';
4672 
4673     BEGIN
4674 
4675       x_return_status := OKL_API.G_RET_STS_SUCCESS;
4676 
4677       OPEN  bank_acct_csr(p_bank_account_number,
4678                           p_bank_account_id,
4679                           p_customer_account_id,
4680                           p_cust_site_id,
4681                           p_auth_org_id);
4682       FETCH bank_acct_csr INTO l_id;
4683       IF  bank_acct_csr%NOTFOUND THEN
4684           raise bank_acct_failed;
4685       END IF;
4686       CLOSE bank_acct_csr;
4687 
4688       x_bank_account_id := l_id;
4689 
4690       return;
4691 
4692     EXCEPTION
4693       WHEN bank_acct_failed THEN
4694 
4695         IF (bank_acct_csr%ISOPEN) THEN
4696           CLOSE bank_acct_csr;
4697         END IF;
4698 
4699         okl_api.set_message(
4700                             G_APP_NAME,
4701                             G_INVALID_VALUE,
4702                             'CONTRACT_NUM',
4703                             p_contract_number,
4704                             'COL_NAME',
4705                             'BANK_ACCOUNT_ID, NUMBER: ',
4706                             'COL_VALUE',
4707                             p_bank_account_id||', '||p_bank_account_number
4708                            );
4709        x_return_status := OKL_API.G_RET_STS_ERROR;
4710 
4711       WHEN OTHERS THEN
4712 
4713         okl_api.set_message(
4714                             G_APP_NAME,
4715                             G_UNEXPECTED_ERROR,
4716                             'OKL_SQLCODE',
4717                             SQLCODE,
4718                             'OKL_SQLERRM',
4719                             SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
4720                            );
4721 
4722         x_return_status := OKL_API.G_RET_STS_ERROR;
4723 
4724     END get_bank_account_id;
4725 
4726 ------------------------------------------------------------------------------
4727 -- PROCEDURE get_index_id
4728 -- It returns Index Id for a given Index Name and
4729 -- stacks Error, if any, and returns ERROR status to calling process.
4730 -- Calls:
4731 --  None
4732 -- Called By:
4733 --  create_header_rules
4734 ------------------------------------------------------------------------------
4735    PROCEDURE get_index_id(
4736                           x_return_status OUT NOCOPY VARCHAR2,
4737                           p_index_name    IN  okl_header_interface.index_name%TYPE,
4738                           x_index_id      OUT NOCOPY okl_indices.id%TYPE
4739                          ) IS
4740 
4741    CURSOR index_csr (p_index_name okl_header_interface.index_name%TYPE) IS
4742    SELECT id
4743    FROM   okl_indices
4744    WHERE  name = p_index_name;
4745 
4746    l_proc_name  VARCHAR2(35) := 'GET_INDEX_ID';
4747    l_id         okl_indices.id%TYPE;
4748    index_failed EXCEPTION;
4749 
4750    BEGIN
4751       x_return_status := OKL_API.G_RET_STS_SUCCESS;
4752       OPEN index_csr (p_index_name);
4753       FETCH index_csr INTO l_id;
4754       IF index_csr%NOTFOUND THEN
4755          raise index_failed;
4756       END IF;
4757       CLOSE index_csr;
4758 
4759       x_index_id := l_id;
4760 
4761       RETURN;
4762 
4763    EXCEPTION
4764       WHEN index_failed THEN
4765          --x_return_status := OKL_API.G_RET_STS_SUCCESS;
4766          x_return_status := OKL_API.G_RET_STS_ERROR; -- Bug 5024651
4767       WHEN OTHERS THEN
4768          x_return_status := OKL_API.G_RET_STS_ERROR;
4769    END get_index_id;
4770 
4771 ------------------------------------------------------------------------------
4772 -- PROCEDURE get_payment_term
4773 -- It returns payment term id after validation and
4774 -- stacks Error, if any, and returns ERROR status to calling process.
4775 -- Calls:
4776 --  None
4777 -- Called By:
4778 ------------------------------------------------------------------------------
4779    FUNCTION get_payment_term(
4780                              x_return_status   OUT NOCOPY VARCHAR2,
4781                              p_contract_number IN  OKL_HEADER_INTERFACE.CONTRACT_NUMBER_OLD%TYPE,
4782                              p_line_number     IN  OKL_LINES_INTERFACE.LINE_NUMBER%TYPE,
4783                              p_payment_term    IN  OKL_LINES_INTERFACE.PAYMENT_TERM%TYPE,
4784                              p_payment_term_id IN  OKL_LINES_INTERFACE.PAYMENT_TERM_ID%TYPE
4785                             )
4786    RETURN NUMBER IS
4787 
4788    CURSOR term_csr (p_payment_term    VARCHAR2,
4789                     p_payment_term_id NUMBER) IS
4790    SELECT id1
4791    FROM   okx_payables_terms_v
4792    WHERE  (name = p_payment_term
4793            AND
4794            p_payment_term IS NOT NULL)
4795    OR     (id1 = p_payment_term_id
4796            AND
4797            p_payment_term_id IS NOT NULL)
4798    AND    TRUNC(SYSDATE) BETWEEN NVL(TRUNC(start_date_active),TRUNC(SYSDATE))
4799                          AND     NVL(TRUNC(end_date_active), TRUNC(SYSDATE));
4800 
4801    l_id1 OKX_PAYABLES_TERMS_V.ID1%TYPE;
4802    BEGIN
4803 
4804      x_return_status := OKL_API.G_RET_STS_SUCCESS;
4805 
4806      OPEN term_csr (p_payment_term,
4807                     p_payment_term_id);
4808      FETCH term_csr INTO l_id1;
4809      IF term_csr%NOTFOUND THEN
4810         okl_api.set_message(
4811                             G_APP_NAME,
4812                             G_INVALID_VALUE,
4813                             'CONTRACT_NUM/LINE_NUMBER',
4814                             p_contract_number||'/'||p_line_number,
4815                             'COL_NAME',
4816                             'PAYMENT_TERM OR PAYMENT_TERM_ID',
4817                             'COL_VALUE',
4818                             p_payment_term||', '||p_payment_term_id
4819                            );
4820        x_return_status := OKL_API.G_RET_STS_ERROR;
4821        RETURN NULL;
4822      END IF;
4823      CLOSE term_csr;
4824 
4825      RETURN l_id1;
4826 
4827    END get_payment_term;
4828 
4829 ------------------------------------------------------------------------------
4830 -- PROCEDURE get_vendor_paysite
4831 -- It returns vendor Pay-site info and
4832 -- stacks Error, if any, and returns ERROR status to calling process.
4833 -- Calls:
4834 --  None
4835 -- Called By:
4836 ------------------------------------------------------------------------------
4837    FUNCTION get_vendor_paysite(
4838                                x_return_status       OUT NOCOPY VARCHAR2,
4839                                p_contract_number     IN  OKL_HEADER_INTERFACE.CONTRACT_NUMBER_OLD%TYPE,
4840                                p_line_number         IN  OKL_LINES_INTERFACE.LINE_NUMBER%TYPE,
4841                                p_vendor_paysite_name IN  OKL_LINES_INTERFACE.VENDOR_PAYSITE_NAME%TYPE,
4842                                p_vendor_paysite_id   IN  OKL_LINES_INTERFACE.VENDOR_PAYSITE_ID%TYPE
4843                               )
4844    RETURN NUMBER IS
4845    CURSOR site_csr (p_name VARCHAR2,
4846                     p_id   NUMBER) IS
4847    SELECT id1
4848    FROM   okx_vendor_sites_v
4849    WHERE  (name = p_name
4850            AND
4851            p_name IS NOT NULL)
4852    OR
4853           (id1 = p_id
4854            AND
4855            p_id IS NOT NULL)
4856    AND    TRUNC(SYSDATE) BETWEEN NVL(TRUNC(start_date_active), TRUNC(SYSDATE))
4857                          AND     NVL(TRUNC(end_date_active), TRUNC(SYSDATE));
4858 
4859    l_id1 okx_vendor_sites_v.id1%TYPE;
4860    BEGIN
4861 
4862      x_return_status := OKL_API.G_RET_STS_SUCCESS;
4863 
4864      OPEN site_csr (p_vendor_paysite_name,
4865                     p_vendor_paysite_id);
4866      FETCH site_csr INTO l_id1;
4867      IF site_csr%NOTFOUND THEN
4868         okl_api.set_message(
4869                             G_APP_NAME,
4870                             G_INVALID_VALUE,
4871                             'CONTRACT_NUM/LINE_NUMBER',
4872                             p_contract_number||'/'||p_line_number,
4873                             'COL_NAME',
4874                             'VENDOR PAY SITE NAME OR VENDOR PAYSITE ID',
4875                             'COL_VALUE',
4876                             p_vendor_paysite_name||', '||p_vendor_paysite_id
4877                            );
4878        x_return_status := OKL_API.G_RET_STS_ERROR;
4879        RETURN NULL;
4880      END IF;
4881      CLOSE site_csr;
4882 
4883      RETURN l_id1;
4884 
4885    END get_vendor_paysite;
4886 
4887 ------------------------------------------------------------------------------
4888 -- PROCEDURE get_invoice_format
4889 -- It returns Invoice Format id from Format Code and
4890 -- stacks Error, if any, and returns ERROR status to calling process.
4891 -- Calls:
4892 --  None
4893 -- Called By:
4894 --  create_header_rules
4895 --  process_term
4896 ------------------------------------------------------------------------------
4897 
4898    PROCEDURE get_invoice_format_id(
4899                                    x_return_status           OUT NOCOPY VARCHAR2,
4900                                    x_msg_count               OUT NOCOPY NUMBER,
4901                                    x_msg_data                OUT NOCOPY VARCHAR2,
4902                                    p_contract_number         IN  okl_header_interface.contract_number_old%TYPE,
4903                                    p_invoice_format_id       IN  okl_header_interface.invoice_format_id%TYPE,
4904                                    p_invoice_format_code     IN  okl_header_interface.invoice_format_code%TYPE,
4905                                    x_invoice_format_id       OUT NOCOPY NUMBER,
4906                                    x_invoice_format_name     OUT NOCOPY VARCHAR2
4907                                   ) IS
4908 
4909     CURSOR inv_format_csr(p_invoice_format_code VARCHAR2,
4910                           p_invoice_format_id   NUMBER) IS
4911     SELECT id,
4912            name
4913     FROM   okl_invoice_formats_v
4914     WHERE  ((name = p_invoice_format_code
4915              AND
4916              p_invoice_format_code IS NOT NULL)
4917              OR
4918              (id   = p_invoice_format_id
4919               AND
4920               p_invoice_format_id IS NOT NULL
4921              )
4922             )
4923     AND    TRUNC(SYSDATE) between NVL(START_DATE, TRUNC(SYSDATE)) AND NVL(END_DATE,TRUNC(SYSDATE));
4924 
4925     l_id              OKL_INVOICE_FORMATS_V.ID%TYPE;
4926     l_name            OKL_INVOICE_FORMATS_V.NAME%TYPE;
4927     inv_format_failed EXCEPTION;
4928     l_proc_name       VARCHAR2(35) := 'GET_INVOICE_FORMAT_ID';
4929 
4930     BEGIN
4931 
4932       x_return_status := OKL_API.G_RET_STS_SUCCESS;
4933 
4934       OPEN  inv_format_csr(p_invoice_format_code,
4935                            p_invoice_format_id);
4936       FETCH inv_format_csr INTO l_id,
4937                                 l_name;
4938       IF  inv_format_csr%NOTFOUND THEN
4939           raise inv_format_failed;
4940       END IF;
4941       CLOSE inv_format_csr;
4942 
4943       x_invoice_format_id   := l_id;
4944       x_invoice_format_name := l_name;
4945       return;
4946 
4947     EXCEPTION
4948       WHEN inv_format_failed THEN
4949 
4950         IF (inv_format_csr%ISOPEN) THEN
4951           CLOSE inv_format_csr;
4952         END IF;
4953 
4954         okl_api.set_message(
4955                             G_APP_NAME,
4956                             G_INVALID_VALUE,
4957                             'CONTRACT_NUM',
4958                             p_contract_number,
4959                             'COL_NAME',
4960                             'INVOICE_FORMAT_ID, CODE',
4961                             'COL_VALUE',
4962                             p_invoice_format_id||', '||p_invoice_format_code
4963                            );
4964        x_return_status := OKL_API.G_RET_STS_ERROR;
4965 
4966       WHEN OTHERS THEN
4967 
4968         okl_api.set_message(
4969                             G_APP_NAME,
4970                             G_UNEXPECTED_ERROR,
4971                             'OKL_SQLCODE',
4972                             SQLCODE,
4973                             'OKL_SQLERRM',
4974                             SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
4975                            );
4976 
4977         x_return_status := OKL_API.G_RET_STS_ERROR;
4978 
4979     END get_invoice_format_id;
4980 
4981 ------------------------------------------------------------------------------
4982 -- PROCEDURE get_payment_method_id
4983 -- It returns Payment Method id from Payment Method
4984 -- stacks Error, if any, and returns ERROR status to calling process.
4985 -- Calls:
4986 --  None
4987 -- Called By:
4988 --  create_header_rules
4989 --  process_term
4990 ------------------------------------------------------------------------------
4991 
4992    PROCEDURE get_payment_method_id(
4993                                    x_return_status           OUT NOCOPY VARCHAR2,
4994                                    x_msg_count               OUT NOCOPY NUMBER,
4995                                    x_msg_data                OUT NOCOPY VARCHAR2,
4996                                    p_contract_number         IN  okl_header_interface.contract_number_old%TYPE,
4997                                    p_customer_account_id     IN  okl_header_interface.customer_account_id%TYPE,
4998                                    p_bill_to_address_id      IN  okl_header_interface.bill_to_address_id%TYPE,
4999                                    p_payment_method_id       IN  okl_header_interface.payment_method_id%TYPE,
5000                                    p_payment_method          IN  okl_header_interface.payment_method%TYPE,
5001                                    x_payment_method_id       OUT NOCOPY NUMBER
5002                                   ) IS
5003 
5004     CURSOR payment_csr(p_payment_method     VARCHAR2,
5005                        p_payment_method_id  NUMBER,
5006                        p_customer_acc_id    NUMBER,
5007                        p_bill_to_address_id NUMBER) IS
5008     SELECT id1
5009     FROM   okx_receipt_methods_v
5010     WHERE  ((name = p_payment_method
5011              AND
5012              p_payment_method IS NOT NULL)
5013              OR
5014              (id1  = p_payment_method_id
5015               AND
5016               p_payment_method_id IS NOT NULL))
5017     AND    customer_id  = p_customer_acc_id
5018     AND    (site_use_id = p_bill_to_address_id
5019             OR
5020             site_use_id IS NULL)
5021     AND    TRUNC(SYSDATE) between NVL(START_DATE_ACTIVE, TRUNC(SYSDATE)) AND NVL(END_DATE_ACTIVE,TRUNC(SYSDATE));
5022 
5023     l_id             OKX_RECEIPT_METHODS_V.ID1%TYPE;
5024     payment_failed   EXCEPTION;
5025     l_proc_name      VARCHAR2(35) := 'GET_PAYMENT_METHOD_ID';
5026 
5027     BEGIN
5028 
5029       x_return_status := OKL_API.G_RET_STS_SUCCESS;
5030 
5031       debug_message(p_payment_method||','||p_customer_account_id||', '||p_bill_to_address_id);
5032       OPEN  payment_csr(p_payment_method,
5033                         p_payment_method_id,
5034                         p_customer_account_id,
5035                         p_bill_to_address_id);
5036       FETCH payment_csr INTO l_id;
5037       IF  payment_csr%NOTFOUND THEN
5038           raise payment_failed;
5039       END IF;
5040       CLOSE payment_csr;
5041 
5042       x_payment_method_id := l_id;
5043       debug_message('PMNT ID: '||x_payment_method_id);
5044       return;
5045 
5046     EXCEPTION
5047       WHEN payment_failed THEN
5048 
5049         IF (payment_csr%ISOPEN) THEN
5050           CLOSE payment_csr;
5051         END IF;
5052 
5053         okl_api.set_message(
5054                             G_APP_NAME,
5055                             G_INVALID_VALUE,
5056                             'CONTRACT_NUM',
5057                             p_contract_number,
5058                             'COL_NAME',
5059                             'PAYMENT_METHOD, ID',
5060                             'COL_VALUE',
5061                             p_payment_method||', '||p_payment_method_id
5062                            );
5063        x_return_status := OKL_API.G_RET_STS_ERROR;
5064 
5065       WHEN OTHERS THEN
5066 
5067         okl_api.set_message(
5068                             G_APP_NAME,
5069                             G_UNEXPECTED_ERROR,
5070                             'OKL_SQLCODE',
5071                             SQLCODE,
5072                             'OKL_SQLERRM',
5073                             SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
5074                            );
5075 
5076         x_return_status := OKL_API.G_RET_STS_ERROR;
5077 
5078     END get_payment_method_id;
5079 
5080 ------------------------------------------------------------------------------
5081 -- PROCEDURE get_customer_account_id
5082 -- It returns customer account id from account Number and
5083 -- stacks Error, if any, and returns ERROR status to calling process.
5084 -- validate against customer
5085 -- Calls:
5086 --  None
5087 -- Called By:
5088 --  create_header_rules
5089 ------------------------------------------------------------------------------
5090 
5091    PROCEDURE get_customer_account_id(
5092                                      x_return_status           OUT NOCOPY VARCHAR2,
5093                                      x_msg_count               OUT NOCOPY NUMBER,
5094                                      x_msg_data                OUT NOCOPY VARCHAR2,
5095                                      p_contract_number         IN  okl_header_interface.contract_number_old%TYPE,
5096                                      p_customer_id             IN  okl_header_interface.customer_id%TYPE,
5097                                      p_customer_account_id     IN  okl_header_interface.customer_account_id%TYPE,
5098                                      p_customer_account_number IN  okl_header_interface.customer_account_number%TYPE,
5099                                      x_customer_account_id     OUT NOCOPY NUMBER
5100                                     ) IS
5101 
5102     CURSOR cust_acct_csr(p_cust_id             NUMBER,
5103                          p_cust_acc_number     VARCHAR2,
5104                          p_customer_account_id NUMBER) IS
5105     SELECT id1
5106     FROM   okx_customer_accounts_v
5107     WHERE  ((description = p_cust_acc_number
5108              AND
5109              p_cust_acc_number IS NOT NULL)
5110              OR
5111              (id1         = p_customer_account_id
5112               AND
5113               p_customer_account_id IS NOT NULL
5114              )
5115             )
5116     AND    party_id = p_cust_id
5117     AND    status = 'A';
5118 
5119     l_id             OKX_CUSTOMER_ACCOUNTS_V.ID1%TYPE;
5120     cust_acct_failed EXCEPTION;
5121     l_proc_name      VARCHAR2(35) := 'GET_CUSTOMER_ACCOUNT_ID';
5122 
5123     BEGIN
5124 
5125       x_return_status := OKL_API.G_RET_STS_SUCCESS;
5126 
5127       debug_message('Customer Account ID: '||p_customer_account_id);
5128 
5129       OPEN  cust_acct_csr(p_customer_id,
5130                           p_customer_account_number,
5131                           p_customer_account_id);
5132       FETCH cust_acct_csr INTO l_id;
5133       IF  cust_acct_csr%NOTFOUND THEN
5134           raise cust_acct_failed;
5135       END IF;
5136       CLOSE cust_acct_csr;
5137 
5138       x_customer_account_id := l_id;
5139 
5140       return;
5141 
5142     EXCEPTION
5143       WHEN cust_acct_failed THEN
5144 
5145         IF (cust_acct_csr%ISOPEN) THEN
5146           CLOSE cust_acct_csr;
5147         END IF;
5148 
5149         okl_api.set_message(
5150                             G_APP_NAME,
5151                             G_INVALID_VALUE,
5152                             'CONTRACT_NUM',
5153                             p_contract_number,
5154                             'COL_NAME',
5155                             'CUSTOMER_ACCOUNT, ID',
5156                             'COL_VALUE',
5157                             p_customer_account_number||', '||p_customer_account_id
5158                            );
5159        x_return_status := OKL_API.G_RET_STS_ERROR;
5160 
5161       WHEN OTHERS THEN
5162 
5163         okl_api.set_message(
5164                             G_APP_NAME,
5165                             G_UNEXPECTED_ERROR,
5166                             'OKL_SQLCODE',
5167                             SQLCODE,
5168                             'OKL_SQLERRM',
5169                             SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
5170                            );
5171 
5172         x_return_status := OKL_API.G_RET_STS_ERROR;
5173 
5174     END get_customer_account_id;
5175 
5176 ------------------------------------------------------------------------------
5177 -- PROCEDURE get_customer_account_id
5178 -- It returns customer account id from account Number and
5179 -- stacks Error, if any, and returns ERROR status to calling process.
5180 -- Calls:
5181 --  None
5182 -- Called By:
5183 --  create_header_rules
5184 ------------------------------------------------------------------------------
5185 
5186    PROCEDURE get_customer_account_id(
5187                                      x_return_status           OUT NOCOPY VARCHAR2,
5188                                      x_msg_count               OUT NOCOPY NUMBER,
5189                                      x_msg_data                OUT NOCOPY VARCHAR2,
5190                                      p_contract_number         IN  okl_header_interface.contract_number_old%TYPE,
5191                                      p_customer_account_id     IN  okl_header_interface.customer_account_id%TYPE,
5192                                      p_customer_account_number IN  okl_header_interface.customer_account_number%TYPE,
5193                                      x_customer_account_id     OUT NOCOPY NUMBER
5194                                     ) IS
5195 
5196     CURSOR cust_acct_csr(p_cust_acc_number     VARCHAR2,
5197                          p_customer_account_id NUMBER) IS
5198     SELECT id1
5199     FROM   okx_customer_accounts_v
5200     WHERE  ((description = p_cust_acc_number
5201              AND
5202              p_cust_acc_number IS NOT NULL)
5203              OR
5204              (id1         = p_customer_account_id
5205               AND
5206               p_customer_account_id IS NOT NULL
5207              )
5208             )
5209     AND    status = 'A';
5210 
5211     l_id             OKX_CUSTOMER_ACCOUNTS_V.ID1%TYPE;
5212     cust_acct_failed EXCEPTION;
5213     l_proc_name      VARCHAR2(35) := 'GET_CUSTOMER_ACCOUNT_ID';
5214 
5215     BEGIN
5216 
5217       x_return_status := OKL_API.G_RET_STS_SUCCESS;
5218 
5219       OPEN  cust_acct_csr(p_customer_account_number,
5220                           p_customer_account_id);
5221       FETCH cust_acct_csr INTO l_id;
5222       IF  cust_acct_csr%NOTFOUND THEN
5223           raise cust_acct_failed;
5224       END IF;
5225       CLOSE cust_acct_csr;
5226 
5227       x_customer_account_id := l_id;
5228 
5229       return;
5230 
5231     EXCEPTION
5232       WHEN cust_acct_failed THEN
5233 
5234         IF (cust_acct_csr%ISOPEN) THEN
5235           CLOSE cust_acct_csr;
5236         END IF;
5237 
5238         okl_api.set_message(
5239                             G_APP_NAME,
5240                             G_INVALID_VALUE,
5241                             'CONTRACT_NUM',
5242                             p_contract_number,
5243                             'COL_NAME',
5244                             'CUSTOMER_ACCOUNT, ID',
5245                             'COL_VALUE',
5246                             p_customer_account_number||', '||p_customer_account_id
5247                            );
5248        x_return_status := OKL_API.G_RET_STS_ERROR;
5249 
5250       WHEN OTHERS THEN
5251 
5252         okl_api.set_message(
5253                             G_APP_NAME,
5254                             G_UNEXPECTED_ERROR,
5255                             'OKL_SQLCODE',
5256                             SQLCODE,
5257                             'OKL_SQLERRM',
5258                             SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
5259                            );
5260 
5261         x_return_status := OKL_API.G_RET_STS_ERROR;
5262 
5263     END get_customer_account_id;
5264 
5265 ------------------------------------------------------------------------------
5266 -- PROCEDURE get_base_uom_id
5267 -- It returns Base Reading UOM ID from Code and
5268 -- stacks Error, if any, and returns ERROR status to calling process.
5269 -- p_rgp_id = Rule Group ID, create rule group if it is null, otherwise use it
5270 -- Calls:
5271 -- Called By:
5272 ------------------------------------------------------------------------------
5273    PROCEDURE get_base_uom_id(
5274                              x_return_status OUT NOCOPY VARCHAR2,
5275                              p_base_uom_code IN  okx_tuom_v.id1%TYPE,
5276                              x_base_uom_id   OUT NOCOPY okx_tuom_v.id1%TYPE
5277                             ) IS
5278    l_proc_name VARCHAR2(35) := 'GET_BASE_UOM_ID';
5279    CURSOR uom_csr (p_base_uom_code VARCHAR2) IS
5280    SELECT id1
5281    FROM   okx_tuom_v
5282    WHERE  uom_code = p_base_uom_code;
5283 
5284    uom_failed EXCEPTION;
5285    l_id       okx_tuom_v.id1%TYPE;
5286 
5287    BEGIN
5288       x_return_status := OKL_API.G_RET_STS_SUCCESS;
5289       OPEN uom_csr(p_base_uom_code);
5290       FETCH uom_csr INTO l_id;
5291       IF uom_csr%NOTFOUND THEN
5292          RAISE uom_failed;
5293       END IF;
5294 
5295       CLOSE uom_csr;
5296       x_base_uom_id := l_id;
5297 
5298       RETURN;
5299 
5300    EXCEPTION
5301       WHEN uom_failed THEN
5302          IF uom_csr%ISOPEN THEN
5303             CLOSE uom_csr;
5304          END IF;
5305          x_return_status := OKL_API.G_RET_STS_ERROR;
5306 
5307    END get_base_uom_id;
5308 
5309 ------------------------------------------------------------------------------
5310 -- PROCEDURE get_price_list_id
5311 -- It returns Price List ID from Name and
5312 -- stacks Error, if any, and returns ERROR status to calling process.
5313 -- p_rgp_id = Rule Group ID, create rule group if it is null, otherwise use it
5314 -- Calls:
5315 -- Called By:
5316 ------------------------------------------------------------------------------
5317    PROCEDURE get_price_list_id(
5318                                x_return_status   OUT NOCOPY VARCHAR2,
5319                                p_price_list_name IN  okx_list_headers_v.name%TYPE,
5320                                p_price_list_id   IN  okx_list_headers_v.id1%TYPE,
5321                                x_price_list_id   OUT NOCOPY okx_list_headers_v.id1%TYPE
5322                               ) IS
5323 
5324    l_proc_name VARCHAR2(35) := 'GET_PRICE_LIST_ID';
5325    CURSOR price_csr (p_price_list_name VARCHAR2,
5326                      p_price_list_id   NUMBER) IS
5327    SELECT id1
5328    FROM   okx_list_headers_v
5329    WHERE  list_type_code = 'PRL'
5330    AND    ((name = p_price_list_name
5331             AND
5332             p_price_list_name IS NOT NULL
5333            )
5334            OR
5335            (id1 = p_price_list_id
5336             AND
5337             p_price_list_id IS NOT NULL
5338            )
5339           )
5340    AND    SYSDATE BETWEEN NVL(start_date_active,SYSDATE) AND NVL(end_date_active, SYSDATE);
5341 
5342    l_id         okx_list_headers_v.id1%TYPE;
5343    price_failed EXCEPTION;
5344 
5345    BEGIN
5346       x_return_status := OKL_API.G_RET_STS_SUCCESS;
5347       OPEN price_csr(p_price_list_name,
5348                      p_price_list_id);
5349       FETCH price_csr INTO l_id;
5350       IF price_csr%NOTFOUND THEN
5351          RAISE price_failed;
5352       END IF;
5353 
5354       CLOSE price_csr;
5355       x_price_list_id := l_id;
5356 
5357       RETURN;
5358 
5359    EXCEPTION
5360       WHEN price_failed THEN
5361          IF price_csr%ISOPEN THEN
5362             CLOSE price_csr;
5363          END IF;
5364          x_return_status := OKL_API.G_RET_STS_ERROR;
5365    END get_price_list_id;
5366 
5367 ------------------------------------------------------------------------------
5368 -- PROCEDURE get_usage_item_id
5369 -- It returns USAGE ITEM ID from Number and
5370 -- stacks Error, if any, and returns ERROR status to calling process.
5371 -- p_rgp_id = Rule Group ID, create rule group if it is null, otherwise use it
5372 -- Calls:
5373 -- Called By:
5374 ------------------------------------------------------------------------------
5375    PROCEDURE get_usage_item_id(
5376                                x_return_status   OUT NOCOPY VARCHAR2,
5377                                p_usage_item_name IN  okx_system_items_v.name%TYPE,
5378                                p_usage_item_id   IN  okx_system_items_v.id1%TYPE,
5379                                p_org_id          IN  NUMBER,
5380                                x_usage_item_id   OUT NOCOPY okx_system_items_v.id1%TYPE,
5381                                x_usage_id2       OUT NOCOPY okx_system_items_v.id2%TYPE
5382                               ) IS
5383 
5384    l_proc_name VARCHAR2(35) := 'GET_USAGE_ITEM_ID';
5385    CURSOR uitem_csr (p_item_name VARCHAR2,
5386                      p_item_id   NUMBER,
5387                      p_org_id    NUMBER) IS
5388    SELECT id1,
5389           id2
5390    FROM   okx_system_items_v
5391    WHERE  usage_item_flag = 'Y'
5392    AND    organization_id = p_org_id
5393    AND    ((name = p_item_name
5394             AND
5395             p_item_name IS NOT NULL
5396            )
5397            OR
5398            (id1 = p_item_id
5399             AND
5400             p_item_id IS NOT NULL
5401            )
5402           );
5403 
5404    uitem_failed EXCEPTION;
5405    l_id1        okx_system_items_v.id1%TYPE;
5406    l_id2        okx_system_items_v.id2%TYPE;
5407 
5408    BEGIN
5409       x_return_status := OKL_API.G_RET_STS_SUCCESS;
5410       OPEN uitem_csr(p_usage_item_name,
5411                      p_usage_item_id,
5412                      p_org_id);
5413       FETCH uitem_csr INTO l_id1,
5414                            l_id2;
5415       IF uitem_csr%NOTFOUND THEN
5416          RAISE uitem_failed;
5417       END IF;
5418 
5419       CLOSE uitem_csr;
5420       x_usage_item_id := l_id1;
5421       x_usage_id2     := l_id2;
5422 
5423       RETURN;
5424 
5425    EXCEPTION
5426       WHEN uitem_failed THEN
5427          IF uitem_csr%ISOPEN THEN
5428             CLOSE uitem_csr;
5429          END IF;
5430          x_return_status := OKL_API.G_RET_STS_ERROR;
5431    END get_usage_item_id;
5432 
5433 ------------------------------------------------------------------------------
5434 -- PROCEDURE create_rule_group_and_rule
5435 -- It creates rule group ad rules and
5436 -- stacks Error, if any, and returns ERROR status to calling process.
5437 -- p_rgp_id = Rule Group ID, create rule group if it is null, otherwise use it
5438 -- Calls:
5439 -- Called By:
5440 ------------------------------------------------------------------------------
5441    PROCEDURE create_rule_group_and_rule(
5442                                        x_return_status OUT NOCOPY VARCHAR2,
5443                                        x_msg_count     OUT NOCOPY NUMBER,
5444                                        x_msg_data      OUT NOCOPY VARCHAR2,
5445                                        p_rgp_id        IN  NUMBER,
5446                                        p_rgpv_rec      IN  rgpv_rec_type,
5447                                        p_rulv_rec      IN  rulv_rec_type,
5448                                        x_rgpv_rec      OUT NOCOPY rgpv_rec_type,
5449                                        x_rulv_rec      OUT NOCOPY rulv_rec_type
5450                                       ) IS
5451 
5452    l_proc_name VARCHAR2(35) := 'CREATE_RULE_GROUP_AND_RULE';
5453    l_id        NUMBER;
5454    rg_failed   EXCEPTION;
5455    l_rulv_rec_in rulv_rec_type;
5456 
5457    BEGIN
5458 
5459       x_return_status := OKL_API.G_RET_STS_SUCCESS;
5460 
5461       -- Check for presence of RULE info, if not RETURN with SUCCESS
5462       IF (p_rulv_rec.rule_information_category IS NULL) THEN
5463          RETURN;
5464       END IF;
5465 
5466       --IF (p_rgp_id IS NULL) THEN -- create rule group
5467       --Bug# 4284166 : Added check for p_rgp_id = OKC_API.G_MISS_NUM in if statement
5468       IF (p_rgp_id IS NULL or p_rgp_id = OKC_API.G_MISS_NUM) THEN -- create rule group
5469 
5470          OKL_RULE_PUB.create_rule_group(
5471                                       p_api_version     => 1.0,
5472                                       p_init_msg_list   => OKL_API.G_FALSE,
5473                                       x_return_status   => x_return_status,
5474                                       x_msg_count       => x_msg_count,
5475                                       x_msg_data        => x_msg_data,
5476                                       p_rgpv_rec        => p_rgpv_rec,
5477                                       x_rgpv_rec        => x_rgpv_rec
5478                                      );
5479          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
5480              x_return_status := OKL_API.G_RET_STS_ERROR;
5481              raise rg_failed;
5482          END IF;
5483 
5484          l_id := x_rgpv_rec.id;
5485 
5486       ELSE
5487          l_id := p_rgp_id;
5488 
5489       END IF; --rule_group
5490 
5491       -- create rule now
5492       l_rulv_rec_in        := p_rulv_rec;
5493       l_rulv_rec_in.rgp_id := l_id;
5494 
5495       OKL_RULE_PUB.create_rule(
5496                                p_api_version     => 1.0,
5497                                p_init_msg_list   => OKL_API.G_FALSE,
5498                                x_return_status   => x_return_status,
5499                                x_msg_count       => x_msg_count,
5500                                x_msg_data        => x_msg_data,
5501                                p_rulv_rec        => l_rulv_rec_in,
5502                                x_rulv_rec        => x_rulv_rec
5503                               );
5504 
5505       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
5506           x_return_status := OKL_API.G_RET_STS_ERROR;
5507           raise rg_failed;
5508       END IF;
5509 
5510       RETURN;
5511 
5512    EXCEPTION
5513       WHEN rg_failed THEN
5514          x_return_status := OKL_API.G_RET_STS_ERROR;
5515    END create_rule_group_and_rule;
5516 
5517 ------------------------------------------------------------------------------
5518 -- PROCEDURE create_update_asset_rules
5519 -- It creates or updates rules and
5520 -- stacks Error, if any, and returns ERROR status to calling process.
5521 -- p_rgp_id = Rule Group ID, create rule group if it is null, otherwise use it
5522 -- Calls:
5523 -- Called By:
5524 ------------------------------------------------------------------------------
5525    PROCEDURE create_update_asset_rules(
5526     x_return_status                  OUT NOCOPY VARCHAR2,
5527     x_msg_count                      OUT NOCOPY NUMBER,
5528     x_msg_data                       OUT NOCOPY VARCHAR2,
5529     p_chr_id                         IN  okc_k_headers_v.id%TYPE,
5530     p_contract_number                IN  okl_header_interface.contract_number_old%TYPE,
5531     p_cle_id                         IN  okl_k_lines_v.id%TYPE,
5532     p_line_number                    IN  okc_k_lines_v.line_number%TYPE,
5533     p_line_type                      IN  okl_lines_interface.line_type%TYPE,
5534     p_inv_org_id                     IN  okl_lines_interface.inventory_organization_id%TYPE,
5535     p_sales_tax_exempt_flag          IN  okl_lines_interface.sales_tax_exempt_flag%TYPE,
5536     p_sales_tax_exempt_cert_number   IN  okl_lines_interface.sales_tax_exempt_cert_number%TYPE,
5537     p_sales_tax_override_flag        IN  okl_lines_interface.sales_tax_override_flag%TYPE,
5538     p_sales_tax_override_rate        IN  okl_lines_interface.sales_tax_override_rate%TYPE,
5539     p_st_upd_lines_from_contract     IN  okl_lines_interface.st_update_lines_from_contract%TYPE,
5540     p_st_transfer_of_title           IN  okl_lines_interface.st_transfer_of_title%TYPE,
5541     p_st_sale_and_lease_back         IN  okl_lines_interface.st_sale_and_lease_back%TYPE,
5542     p_st_purchase_of_lease           IN  okl_lines_interface.st_purchase_of_lease%TYPE,
5543     p_st_equipment_usage             IN  okl_lines_interface.st_equipment_usage%TYPE,
5544     p_st_equipment_age               IN  okl_lines_interface.st_equipment_age%TYPE,
5545     p_st_asset_upfront_tax           IN  okl_lines_interface.st_asset_upfront_tax%TYPE,
5546     p_vat_tax_exempt                 IN  okl_lines_interface.vat_tax_exempt%TYPE,
5547     p_vat_tax_exempt_cert_number     IN  okl_lines_interface.vat_tax_exempt_cert_number%TYPE,
5548     p_vat_tax_override_flag          IN  okl_lines_interface.vat_tax_override_flag%TYPE,
5549     p_vat_tax_override_rate          IN  okl_lines_interface.vat_tax_override_rate%TYPE,
5550     p_prop_tax_applicable            IN  okl_lines_interface.prop_tax_applicable%TYPE,
5551     p_prop_tax_lease_rep             IN  okl_lines_interface.prop_tax_lease_rep%TYPE,
5552     p_french_tax_code                IN  okl_lines_interface.french_tax_code%TYPE,
5553     p_french_tax_name                IN  okl_lines_interface.french_tax_name%TYPE,
5554     p_prop_tax_bill_method           IN  okl_lines_interface.prop_tax_bill_method%TYPE,
5555     p_prop_tax_as_contract_yn        IN  okl_lines_interface.prop_tax_as_contract_yn%TYPE ) IS
5556 
5557    line_rule_failed   EXCEPTION;
5558    rule_group_failed  EXCEPTION;
5559    rule_failed        EXCEPTION;
5560    l_proc_name        VARCHAR2(35) := 'CREATE_UPDATE_ASSET_RULES';
5561 
5562    x_lienholder_id    NUMBER := NULL;
5563    x_title_issuer_id  NUMBER := NULL;
5564    l_rgp_id           NUMBER;
5565    x_base_uom_id      okx_tuom_v.id1%TYPE;
5566    x_price_list_id    okx_list_headers_v.id1%TYPE;
5567    x_stream_id        okl_strmtyp_source_v.id1%TYPE;
5568    l_payment_term_id  okx_payables_terms_v.id1%TYPE;
5569    l_vendor_paysite_id okx_vendor_sites_v.id1%TYPE;
5570    l_freq_id          okl_time_units_v.id1%TYPE;
5571 
5572    -- Rule Rec
5573    x_rgpv_rec         rgpv_rec_type;
5574    l_rgpv_rec         rgpv_rec_type;
5575 
5576    l_rulv_rec         rulv_rec_type;
5577    x_rulv_rec         rulv_rec_type;
5578 
5579    lp_rulv_rec         rulv_rec_type;
5580    xp_rulv_rec         rulv_rec_type;
5581 
5582    l_progress         VARCHAR2(10) := '1.0';
5583    l_french_tax_code  OKL_FRENCH_TAX_V.CODE%TYPE;
5584 
5585    CURSOR french_tax_csr (p_tax_code okl_french_tax_v.code%TYPE,
5586                           p_tax_name okl_french_tax_v.name%TYPE) IS
5587    SELECT code
5588    FROM   okl_french_tax_v
5589    WHERE  ( code = p_tax_code
5590             AND
5591             p_tax_code IS NOT NULL)
5592    OR     ( name = p_tax_name
5593             AND
5594             p_tax_name IS NOT NULL)
5595    AND    TRUNC(SYSDATE) BETWEEN NVL(TRUNC(start_date), TRUNC(SYSDATE))
5596                              AND NVL(TRUNC(end_date), TRUNC(SYSDATE));
5597 
5598    CURSOR get_rule_group_info(p_chr_id  okc_k_headers_b.id%TYPE,
5599                               p_cle_id  okc_k_lines_v.id%TYPE) IS
5600    SELECT rgp.id
5601    FROM okc_rule_groups_v rgp
5602    WHERE rgp.dnz_chr_id = p_chr_id
5603    AND rgp.cle_id = p_cle_id
5604    AND rgp.rgd_code = 'LAASTX'
5605    AND rgp.rgp_type = 'KRG';
5606 
5607    -- 5179119
5608    CURSOR get_sales_tax_rule_info(p_chr_id  okc_k_headers_b.id%TYPE,
5609                                   p_rgp_id  okc_k_lines_v.id%TYPE) IS
5610    SELECT rule.id
5611    FROM okc_rules_v rule
5612    WHERE rule.dnz_chr_id = p_chr_id
5613    AND rule.rgp_id = p_rgp_id
5614    AND rule.rule_information_category = 'LAASTX';
5615 
5616    CURSOR get_prop_tax_rule_info(p_chr_id  okc_k_headers_b.id%TYPE,
5617                                  p_rgp_id  okc_k_lines_v.id%TYPE) IS
5618    SELECT rule.id
5619    FROM okc_rules_v rule
5620    WHERE rule.dnz_chr_id = p_chr_id
5621    AND rule.rgp_id = p_rgp_id
5622    AND rule.rule_information_category = 'LAPRTX';
5623 
5624    ln_rgp_id    OKC_RULE_GROUPS_V.ID%TYPE;
5625    ln_rule_id   OKC_RULES_V.ID%TYPE;
5626    -- 5179119
5627    l_sales_tax_rule_id   OKC_RULES_V.ID%TYPE;
5628    l_sales_tax_rule_found   BOOLEAN;
5629 
5630    lv_rec_populate_check  VARCHAR2(1) := 'N';
5631 
5632    BEGIN
5633 
5634      x_return_status := OKL_API.G_RET_STS_SUCCESS;
5635      debug_message(l_proc_name);
5636 
5637      OPEN get_rule_group_info(p_chr_id, p_cle_id);
5638      FETCH get_rule_group_info into ln_rgp_id;
5639      IF get_rule_group_info%NOTFOUND THEN
5640        RAISE rule_group_failed;
5641      END IF;
5642      CLOSE get_rule_group_info;
5643 
5644      -- Sales Tax 5179119
5645      OPEN get_sales_tax_rule_info(p_chr_id	=> p_chr_id,
5646    		  		  p_rgp_id	=> ln_rgp_id);
5647      FETCH get_sales_tax_rule_info into l_sales_tax_rule_id;
5648      IF get_sales_tax_rule_info%NOTFOUND THEN
5649        l_sales_tax_rule_found := FALSE;
5650      ELSE
5651        l_sales_tax_rule_found := TRUE;
5652      END IF;
5653      CLOSE get_sales_tax_rule_info;
5654 
5655     l_rulv_rec := NULL;
5656 
5657      -- Rule Group LAASTX
5658      IF (p_sales_tax_exempt_flag IS NOT NULL) THEN
5659        l_rulv_rec.rule_information1         := p_sales_tax_exempt_flag;
5660        l_rulv_rec.rgp_id                    := ln_rgp_id;
5661        l_rulv_rec.dnz_chr_id                := p_chr_id;
5662        l_rulv_rec.rule_information_category := 'LAASTX';
5663        l_rulv_rec.std_template_yn           := 'N';
5664        l_rulv_rec.warn_yn                   := 'N';
5665        lv_rec_populate_check := 'Y';
5666      END IF;
5667 
5668      IF (p_sales_tax_exempt_cert_number IS NOT NULL) THEN
5669        l_rulv_rec.rule_information2         := p_sales_tax_exempt_cert_number;
5670        l_rulv_rec.rgp_id                    := ln_rgp_id;
5671        l_rulv_rec.dnz_chr_id                := p_chr_id;
5672        l_rulv_rec.rule_information_category := 'LAASTX';
5673        l_rulv_rec.std_template_yn           := 'N';
5674        l_rulv_rec.warn_yn                   := 'N';
5675        lv_rec_populate_check := 'Y';
5676      END IF;
5677 
5678      IF (p_sales_tax_override_flag IS NOT NULL) THEN
5679        l_rulv_rec.rule_information3         := p_sales_tax_override_flag;
5680        l_rulv_rec.rgp_id                    := ln_rgp_id;
5681        l_rulv_rec.dnz_chr_id                := p_chr_id;
5682        l_rulv_rec.rule_information_category := 'LAASTX';
5683        l_rulv_rec.std_template_yn           := 'N';
5684        l_rulv_rec.warn_yn                   := 'N';
5685        lv_rec_populate_check := 'Y';
5686      END IF;
5687 
5688      IF (p_sales_tax_override_rate IS NOT NULL) THEN
5689        l_rulv_rec.rule_information4         := p_sales_tax_override_rate;
5690        l_rulv_rec.rgp_id                    := ln_rgp_id;
5691        l_rulv_rec.dnz_chr_id                := p_chr_id;
5692        l_rulv_rec.rule_information_category := 'LAASTX';
5693        l_rulv_rec.std_template_yn           := 'N';
5694        l_rulv_rec.warn_yn                   := 'N';
5695        lv_rec_populate_check := 'Y';
5696      END IF;
5697 
5698      IF (p_st_upd_lines_from_contract IS NOT NULL) THEN
5699        l_rulv_rec.rule_information5         := p_st_upd_lines_from_contract;
5700        l_rulv_rec.rgp_id                    := ln_rgp_id;
5701        l_rulv_rec.dnz_chr_id                := p_chr_id;
5702        l_rulv_rec.rule_information_category := 'LAASTX';
5703        l_rulv_rec.std_template_yn           := 'N';
5704        l_rulv_rec.warn_yn                   := 'N';
5705        lv_rec_populate_check := 'Y';
5706      END IF;
5707 
5708      IF (p_st_transfer_of_title IS NOT NULL) THEN
5709        l_rulv_rec.rule_information6         := p_st_transfer_of_title;
5710        l_rulv_rec.rgp_id                    := ln_rgp_id;
5711        l_rulv_rec.dnz_chr_id                := p_chr_id;
5712        l_rulv_rec.rule_information_category := 'LAASTX';
5713        l_rulv_rec.std_template_yn           := 'N';
5714        l_rulv_rec.warn_yn                   := 'N';
5715        lv_rec_populate_check := 'Y';
5716      END IF;
5717 
5718      IF (p_st_sale_and_lease_back IS NOT NULL) THEN
5719        l_rulv_rec.rule_information7         := p_st_sale_and_lease_back;
5720        l_rulv_rec.rgp_id                    := ln_rgp_id;
5721        l_rulv_rec.dnz_chr_id                := p_chr_id;
5722        l_rulv_rec.rule_information_category := 'LAASTX';
5723        l_rulv_rec.std_template_yn           := 'N';
5724        l_rulv_rec.warn_yn                   := 'N';
5725        lv_rec_populate_check := 'Y';
5726      END IF;
5727 
5728      IF (p_st_purchase_of_lease IS NOT NULL) THEN
5729        l_rulv_rec.rule_information8         := p_st_purchase_of_lease;
5730        l_rulv_rec.rgp_id                    := ln_rgp_id;
5731        l_rulv_rec.dnz_chr_id                := p_chr_id;
5732        l_rulv_rec.rule_information_category := 'LAASTX';
5733        l_rulv_rec.std_template_yn           := 'N';
5734        l_rulv_rec.warn_yn                   := 'N';
5735        lv_rec_populate_check := 'Y';
5736      END IF;
5737 
5738      IF (p_st_equipment_usage IS NOT NULL) THEN
5739        l_rulv_rec.rule_information9         := p_st_equipment_usage;
5740        l_rulv_rec.rgp_id                    := ln_rgp_id;
5741        l_rulv_rec.dnz_chr_id                := p_chr_id;
5742        l_rulv_rec.rule_information_category := 'LAASTX';
5743        l_rulv_rec.std_template_yn           := 'N';
5744        l_rulv_rec.warn_yn                   := 'N';
5745        lv_rec_populate_check := 'Y';
5746      END IF;
5747 
5748      IF (p_st_equipment_age IS NOT NULL) THEN
5749        l_rulv_rec.rule_information10        := p_st_equipment_age;
5750        l_rulv_rec.rgp_id                    := ln_rgp_id;
5751        l_rulv_rec.dnz_chr_id                := p_chr_id;
5752        l_rulv_rec.rule_information_category := 'LAASTX';
5753        l_rulv_rec.std_template_yn           := 'N';
5754        l_rulv_rec.warn_yn                   := 'N';
5755        lv_rec_populate_check := 'Y';
5756      END IF;
5757 
5758      IF (p_st_asset_upfront_tax IS NOT NULL) THEN
5759        l_rulv_rec.rule_information11        := p_st_asset_upfront_tax;
5760        l_rulv_rec.rgp_id                    := ln_rgp_id;
5761        l_rulv_rec.dnz_chr_id                := p_chr_id;
5762        l_rulv_rec.rule_information_category := 'LAASTX';
5763        l_rulv_rec.std_template_yn           := 'N';
5764        l_rulv_rec.warn_yn                   := 'N';
5765        lv_rec_populate_check := 'Y';
5766      END IF;
5767 
5768      IF (lv_rec_populate_check = 'Y') THEN
5769        IF NOT(l_sales_tax_rule_found) THEN -- 5179119
5770          OKL_RULE_PUB.create_rule(
5771                                p_api_version     => 1.0,
5772                                p_init_msg_list   => OKL_API.G_FALSE,
5773                                x_return_status   => x_return_status,
5774                                x_msg_count       => x_msg_count,
5775                                x_msg_data        => x_msg_data,
5776                                p_rulv_rec        => l_rulv_rec,
5777                                x_rulv_rec        => x_rulv_rec
5778                               );
5779        ELSE
5780          l_rulv_rec.id := l_sales_tax_rule_id;
5781          l_rulv_rec.created_by := OKC_API.G_MISS_NUM;
5782          l_rulv_rec.creation_date := OKC_API.G_MISS_DATE;
5783          OKL_RULE_PUB.update_rule(
5784                                p_api_version     => 1.0,
5785                                p_init_msg_list   => OKL_API.G_FALSE,
5786                                x_return_status   => x_return_status,
5787                                x_msg_count       => x_msg_count,
5788                                x_msg_data        => x_msg_data,
5789                                p_rulv_rec        => l_rulv_rec,
5790                                x_rulv_rec        => x_rulv_rec
5791                               );
5792        END IF;
5793        l_progress := '1.1';
5794        IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
5795          x_return_status := OKL_API.G_RET_STS_ERROR;
5796          raise line_rule_failed;
5797        END IF;
5798      END IF;
5799 
5800      l_rulv_rec := NULL;
5801      lv_rec_populate_check := 'N';
5802      IF (p_vat_tax_exempt IS NOT NULL) THEN
5803 
5804        l_rulv_rec.rule_information1         := p_vat_tax_exempt;
5805        l_rulv_rec.rgp_id                    := ln_rgp_id;
5806        l_rulv_rec.dnz_chr_id                := p_chr_id;
5807        l_rulv_rec.rule_information_category := 'LAAVTX';
5808        l_rulv_rec.std_template_yn           := 'N';
5809        l_rulv_rec.warn_yn                   := 'N';
5810        lv_rec_populate_check := 'Y';
5811      END IF;
5812 
5813      IF (p_vat_tax_exempt_cert_number IS NOT NULL) THEN
5814 
5815        l_rulv_rec.rule_information2         := p_vat_tax_exempt_cert_number;
5816        l_rulv_rec.rgp_id                    := ln_rgp_id;
5817        l_rulv_rec.dnz_chr_id                := p_chr_id;
5818        l_rulv_rec.rule_information_category := 'LAAVTX';
5819        l_rulv_rec.std_template_yn           := 'N';
5820        l_rulv_rec.warn_yn                   := 'N';
5821        lv_rec_populate_check := 'Y';
5822      END IF;
5823 
5824      IF (p_vat_tax_override_flag IS NOT NULL) THEN
5825 
5826        l_rulv_rec.rule_information3         := p_vat_tax_override_flag;
5827        l_rulv_rec.rgp_id                    := ln_rgp_id;
5828        l_rulv_rec.dnz_chr_id                := p_chr_id;
5829        l_rulv_rec.rule_information_category := 'LAAVTX';
5830        l_rulv_rec.std_template_yn           := 'N';
5831        l_rulv_rec.warn_yn                   := 'N';
5832        lv_rec_populate_check := 'Y';
5833      END IF;
5834 
5835      IF (p_vat_tax_override_rate IS NOT NULL) THEN
5836 
5837        l_rulv_rec.rule_information4         := p_vat_tax_override_rate;
5838        l_rulv_rec.rgp_id                    := ln_rgp_id;
5839        l_rulv_rec.dnz_chr_id                := p_chr_id;
5840        l_rulv_rec.rule_information_category := 'LAAVTX';
5841        l_rulv_rec.std_template_yn           := 'N';
5842        l_rulv_rec.warn_yn                   := 'N';
5843        lv_rec_populate_check := 'Y';
5844      END IF;
5845 
5846      IF (lv_rec_populate_check = 'Y') THEN
5847        OKL_RULE_PUB.create_rule(
5848                                p_api_version     => 1.0,
5849                                p_init_msg_list   => OKL_API.G_FALSE,
5850                                x_return_status   => x_return_status,
5851                                x_msg_count       => x_msg_count,
5852                                x_msg_data        => x_msg_data,
5853                                p_rulv_rec        => l_rulv_rec,
5854                                x_rulv_rec        => x_rulv_rec
5855                               );
5856        l_progress := '1.2';
5857        IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
5858          x_return_status := OKL_API.G_RET_STS_ERROR;
5859          raise line_rule_failed;
5860        END IF;
5861      END IF;
5862 
5863      -- Property Tax
5864      OPEN get_prop_tax_rule_info(p_chr_id	=> p_chr_id,
5865    		  			             p_rgp_id	=> ln_rgp_id);
5866      FETCH get_prop_tax_rule_info into ln_rule_id;
5867      IF get_prop_tax_rule_info%NOTFOUND THEN
5868        RAISE rule_failed;
5869      END IF;
5870      CLOSE get_prop_tax_rule_info;
5871 
5872      IF (p_prop_tax_applicable IS NOT NULL) THEN
5873        lp_rulv_rec.id                        := ln_rule_id;
5874        lp_rulv_rec.rule_information1         := p_prop_tax_applicable;
5875        lp_rulv_rec.rule_information_category := 'LAPRTX';
5876      END IF;
5877 
5878      IF (p_prop_tax_lease_rep IS NOT NULL) THEN
5879        lp_rulv_rec.id                        := ln_rule_id;
5880        lp_rulv_rec.rule_information2         := p_prop_tax_lease_rep;
5881        lp_rulv_rec.rule_information_category := 'LAPRTX';
5882      END IF;
5883 
5884      IF (p_prop_tax_bill_method IS NOT NULL) THEN
5885        lp_rulv_rec.id                        := ln_rule_id;
5886        lp_rulv_rec.rule_information3         := p_prop_tax_bill_method;
5887        lp_rulv_rec.rule_information_category := 'LAPRTX';
5888      END IF;
5889 
5890      IF (p_prop_tax_applicable IS NOT NULL
5891          OR
5892          p_prop_tax_lease_rep IS NOT NULL
5893          OR
5894          p_prop_tax_bill_method IS NOT NULL) THEN  -- Bug# 3984890
5895          OKL_RULE_PUB.update_rule(
5896                                p_api_version     => 1.0,
5897                                p_init_msg_list   => OKL_API.G_FALSE,
5898                                x_return_status   => x_return_status,
5899                                x_msg_count       => x_msg_count,
5900                                x_msg_data        => x_msg_data,
5901                                p_rulv_rec        => lp_rulv_rec,
5902                                x_rulv_rec        => xp_rulv_rec
5903                               );
5904          l_progress := '1.3';
5905          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
5906            x_return_status := OKL_API.G_RET_STS_ERROR;
5907            raise line_rule_failed;
5908          END IF;
5909 
5910      END IF;
5911 
5912      l_rulv_rec := NULL;
5913      lv_rec_populate_check := 'N';
5914 
5915      -- 'LAASTK' Rule
5916      IF (p_prop_tax_as_contract_yn IS NOT NULL) THEN
5917        l_rulv_rec.rgp_id                    := ln_rgp_id;
5918        l_rulv_rec.dnz_chr_id                := p_chr_id;
5919        l_rulv_rec.rule_information1         := p_prop_tax_as_contract_yn;
5920        l_rulv_rec.rule_information_category := 'LAASTK';
5921        l_rulv_rec.std_template_yn           := 'N';
5922        l_rulv_rec.warn_yn                   := 'N';
5923        lv_rec_populate_check := 'Y';
5924      END IF;
5925 
5926      IF (lv_rec_populate_check = 'Y') THEN
5927        OKL_RULE_PUB.create_rule(
5928                                p_api_version     => 1.0,
5929                                p_init_msg_list   => OKL_API.G_FALSE,
5930                                x_return_status   => x_return_status,
5931                                x_msg_count       => x_msg_count,
5932                                x_msg_data        => x_msg_data,
5933                                p_rulv_rec        => l_rulv_rec,
5934                                x_rulv_rec        => x_rulv_rec
5935                               );
5936        l_progress := '1.4';
5937        IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
5938          x_return_status := OKL_API.G_RET_STS_ERROR;
5939          raise line_rule_failed;
5940        END IF;
5941      END IF;
5942 
5943      l_rulv_rec := NULL;
5944      lv_rec_populate_check := 'N';
5945 
5946      IF (p_french_tax_code IS NOT NULL
5947              OR
5948          p_french_tax_name IS NOT NULL) THEN
5949 
5950        OPEN french_tax_csr (p_french_tax_code,
5951                             p_french_tax_name);
5952        FETCH french_tax_csr INTO l_french_tax_code;
5953        IF french_tax_csr%NOTFOUND THEN
5954          okl_api.set_message(
5955                                 G_APP_NAME,
5956                                 G_INVALID_VALUE,
5957                                 'CONTRACT_NUM',
5958                                 p_contract_number||'/'||p_line_number,
5959                                 'COL_NAME',
5960                                 'FRENCH_TAX_CODE, NAME',
5961                                 'COL_VALUE',
5962                                 p_french_tax_code||', '||p_french_tax_name
5963                               );
5964 
5965          raise line_rule_failed;
5966        END IF;
5967        CLOSE french_tax_csr;
5968      END IF;
5969 
5970      IF (l_french_tax_code IS NOT NULL) THEN
5971        l_rulv_rec.rgp_id                    := ln_rgp_id;
5972        l_rulv_rec.dnz_chr_id                := p_chr_id;
5973        l_rulv_rec.rule_information1         := l_french_tax_code;
5974        l_rulv_rec.rule_information_category := 'LATAXP';
5975        l_rulv_rec.std_template_yn           := 'N';
5976        l_rulv_rec.warn_yn                   := 'N';
5977        lv_rec_populate_check := 'Y';
5978      END IF;
5979 
5980      IF (lv_rec_populate_check = 'Y') THEN
5981        OKL_RULE_PUB.create_rule(
5982                                p_api_version     => 1.0,
5983                                p_init_msg_list   => OKL_API.G_FALSE,
5984                                x_return_status   => x_return_status,
5985                                x_msg_count       => x_msg_count,
5986                                x_msg_data        => x_msg_data,
5987                                p_rulv_rec        => l_rulv_rec,
5988                                x_rulv_rec        => x_rulv_rec
5989                               );
5990        l_progress := '1.5';
5991        IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
5992          x_return_status := OKL_API.G_RET_STS_ERROR;
5993          raise line_rule_failed;
5994        END IF;
5995      END IF;
5996 
5997      RETURN;
5998 
5999    EXCEPTION
6000      WHEN line_rule_failed THEN
6001        x_return_status := OKL_API.G_RET_STS_ERROR;
6002        debug_message('Line rule failed : '||l_progress);
6003 
6004      WHEN rule_group_failed THEN
6005        IF get_rule_group_info%ISOPEN THEN
6006          CLOSE get_rule_group_info;
6007        END IF;
6008        x_return_status := OKL_API.G_RET_STS_ERROR;
6009 
6010      WHEN rule_failed THEN
6011        IF get_prop_tax_rule_info%ISOPEN THEN
6012          CLOSE get_prop_tax_rule_info;
6013        END IF;
6014        x_return_status := OKL_API.G_RET_STS_ERROR;
6015 
6016      WHEN OTHERS THEN
6017        okl_api.set_message(
6018                             G_APP_NAME,
6019                             G_UNEXPECTED_ERROR,
6020                             'OKL_SQLCODE',
6021                             SQLCODE,
6022                             'OKL_SQLERRM',
6023                             SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
6024                            );
6025 
6026        x_return_status := OKL_API.G_RET_STS_ERROR;
6027        debug_message('line other : '||l_progress);
6028    END create_update_asset_rules;
6029 
6030 ------------------------------------------------------------------------------
6031 -- PROCEDURE create_line_rules
6032 -- It creates rules for line records and
6033 -- stacks Error, if any, and returns ERROR status to calling process.
6034 -- Calls:
6035 --  get_party_id
6036 -- Called By:
6037 --  load_input_record
6038 ------------------------------------------------------------------------------
6039 
6040    PROCEDURE create_line_rules(
6041                             x_return_status                  OUT NOCOPY VARCHAR2,
6042                             x_msg_count                      OUT NOCOPY NUMBER,
6043                             x_msg_data                       OUT NOCOPY VARCHAR2,
6044                             p_chr_id                         IN  okc_k_headers_v.id%TYPE,
6045                             p_contract_number                IN  okl_header_interface.contract_number_old%TYPE,
6046                             p_cle_id                         IN  okl_k_lines_v.id%TYPE,
6047                             p_line_number                    IN  okc_k_lines_v.line_number%TYPE,
6048                             p_line_type                      IN  okl_lines_interface.line_type%TYPE,
6049                             p_inv_org_id                     IN  okl_lines_interface.inventory_organization_id%TYPE,
6050                             p_sales_tax_exempt_flag          IN  okl_lines_interface.sales_tax_exempt_flag%TYPE,
6051                             p_sales_tax_exempt_cert_number   IN  okl_lines_interface.sales_tax_exempt_cert_number%TYPE,
6052                             p_sales_tax_override_flag        IN  okl_lines_interface.sales_tax_override_flag%TYPE,
6053                             p_sales_tax_override_rate        IN  okl_lines_interface.sales_tax_override_rate%TYPE,
6054                             p_st_upd_lines_from_contract     IN  okl_lines_interface.st_update_lines_from_contract%TYPE,
6055                             p_st_transfer_of_title           IN  okl_lines_interface.st_transfer_of_title%TYPE,
6056                             p_st_sale_and_lease_back         IN  okl_lines_interface.st_sale_and_lease_back%TYPE,
6057                             p_st_purchase_of_lease           IN  okl_lines_interface.st_purchase_of_lease%TYPE,
6058                             p_st_equipment_usage             IN  okl_lines_interface.st_equipment_usage%TYPE,
6059                             p_st_equipment_age               IN  okl_lines_interface.st_equipment_age%TYPE,
6060                             p_st_asset_upfront_tax           IN  okl_lines_interface.st_asset_upfront_tax%TYPE,
6061                             p_vat_tax_exempt                 IN  okl_lines_interface.vat_tax_exempt%TYPE,
6062                             p_vat_tax_exempt_cert_number     IN  okl_lines_interface.vat_tax_exempt_cert_number%TYPE,
6063                             p_vat_tax_override_flag          IN  okl_lines_interface.vat_tax_override_flag%TYPE,
6064                             p_vat_tax_override_rate          IN  okl_lines_interface.vat_tax_override_rate%TYPE,
6065                             p_lien_type                      IN  okl_lines_interface.lien_type%TYPE,
6066                             p_lien_filing_number             IN  okl_lines_interface.lien_filing_number%TYPE,
6067                             p_lien_filing_date               IN  okl_lines_interface.lien_filing_date%TYPE,
6068                             p_lien_filing_status             IN  okl_lines_interface.lien_filing_status%TYPE,
6069                             p_lienholder_id                  IN  okl_lines_interface.lienholder_id%TYPE,
6070                             p_lienholder_number              IN  okl_lines_interface.lienholder_number%TYPE,
6071                             p_filing_jurisdiction            IN  okl_lines_interface.filing_jurisdiction%TYPE,
6072                             p_filing_sub_jurisdiction        IN  okl_lines_interface.filing_sub_jurisdiction%TYPE,
6073                             p_lien_expiration_date           IN  okl_lines_interface.lien_expiration_date%TYPE,
6074                             p_lien_continuation_number       IN  okl_lines_interface.lien_continuation_number%TYPE,
6075                             p_lien_continuation_date         IN  okl_lines_interface.lien_continuation_date%TYPE,
6076                             p_title_type                     IN  okl_lines_interface.title_type%TYPE,
6077                             p_title_issuer_number            IN  okl_lines_interface.title_issuer_number%TYPE,
6078                             p_title_issuer_id                IN  okl_lines_interface.title_issuer_id%TYPE,
6079                             p_title_date                     IN  okl_lines_interface.title_date%TYPE,
6080                             p_title_number                   IN  okl_lines_interface.title_number%TYPE,
6081                             p_registration_number            IN  okl_lines_interface.registration_number%TYPE,
6082                             p_asset_registration_loc_name    IN  okl_lines_interface.asset_registration_loc_name%TYPE,
6083                             p_title_custodian_name           IN  okl_lines_interface.title_custodian_name%TYPE,
6084                             p_payee_site_name                IN  okl_lines_interface.payee_site_name%TYPE,
6085                             p_passthrough_percent            IN  okl_lines_interface.passthrough_percent%TYPE,
6086                             p_passthrough_basis_code         IN  okl_lines_interface.passthrough_basis_code%TYPE,
6087                             p_fee_code                       IN  okl_lines_interface.fee_code%TYPE,
6088                             p_stream_purpose                 IN  okl_lines_interface.stream_purpose_code%TYPE,
6089                             p_usage_item_name                IN  okl_lines_interface.usage_item_name%TYPE,
6090                             p_usage_item_id                  IN  okl_lines_interface.usage_item_id%TYPE,
6091                             p_price_list_name                IN  okl_lines_interface.price_list_name%TYPE,
6092                             p_price_list_id                  IN  okl_lines_interface.price_list_id%TYPE,
6093                             p_minimum_qty_usage              IN  okl_lines_interface.minimum_qty_usage%TYPE,
6094                             p_default_qty_usage              IN  okl_lines_interface.default_qty_usage%TYPE,
6095                             p_amcv_flag                      IN  okl_lines_interface.amcv_flag%TYPE,
6096                             p_level_flag                     IN  okl_lines_interface.level_flag%TYPE,
6097                             p_base_reading                   IN  okl_lines_interface.base_reading%TYPE,
6098                             p_base_reading_uom_code          IN  okl_lines_interface.base_reading_uom_code%TYPE,
6099                             p_usage_type_code                IN  okl_lines_interface.usage_type_code%TYPE,
6100                             p_fixed_usage_quantity           IN  okl_lines_interface.fixed_usage_quantity%TYPE,
6101                             p_usage_period                   IN  okl_lines_interface.usage_period%TYPE,
6102                             p_usage_no_of_period             IN  okl_lines_interface.usage_no_of_period%TYPE,
6103                             p_fee_no_of_period               IN  okl_lines_interface.fee_exp_no_of_periods%TYPE,
6104                             p_fee_frequency                  IN  okl_lines_interface.fee_exp_frequency%TYPE,
6105                             p_fee_amount_per_period          IN  okl_lines_interface.fee_exp_amount_per_period%TYPE,
6106                             p_prop_tax_applicable            IN  okl_lines_interface.prop_tax_applicable%TYPE,
6107                             p_prop_tax_lease_rep             IN  okl_lines_interface.prop_tax_lease_rep%TYPE,
6108                             p_french_tax_code                IN  okl_lines_interface.french_tax_code%TYPE,
6109                             p_french_tax_name                IN  okl_lines_interface.french_tax_name%TYPE,
6110 -- Added by rravikir (Fix for Bug 3947959)
6111                             p_prop_tax_bill_method           IN  okl_lines_interface.prop_tax_bill_method%TYPE,
6112                             p_prop_tax_as_contract_yn        IN  okl_lines_interface.prop_tax_as_contract_yn%TYPE
6113 -- End
6114                            ) IS
6115 
6116    line_rule_failed   EXCEPTION;
6117    l_proc_name        VARCHAR2(35) := 'CREATE_LINE_RULES';
6118 
6119    x_lienholder_id    NUMBER := NULL;
6120    x_title_issuer_id  NUMBER := NULL;
6121    l_rgp_id           NUMBER;
6122    x_usage_item_id    okx_system_items_v.id1%TYPE;
6123    x_usage_id2        okx_system_items_v.id2%TYPE;
6124    x_base_uom_id      okx_tuom_v.id1%TYPE;
6125    x_price_list_id    okx_list_headers_v.id1%TYPE;
6126    x_stream_id        okl_strmtyp_source_v.id1%TYPE;
6127    l_payment_term_id  okx_payables_terms_v.id1%TYPE;
6128    l_vendor_paysite_id okx_vendor_sites_v.id1%TYPE;
6129    l_freq_id          okl_time_units_v.id1%TYPE;
6130 
6131    CURSOR freq_csr (p_frequency VARCHAR2) IS
6132    SELECT id1
6133    FROM   okl_time_units_v
6134    WHERE  name = p_frequency
6135    AND    status = 'A'
6136    AND    TRUNC(SYSDATE) BETWEEN NVL(TRUNC(start_date_active), TRUNC(SYSDATE)) AND
6137                                  NVL(TRUNC(end_date_active), TRUNC(SYSDATE));
6138    -- Rule Rec
6139    x_rgpv_rec         rgpv_rec_type;
6140    l_rgpv_rec         rgpv_rec_type;
6141 
6142    l_rulv_rec         rulv_rec_type;
6143    x_rulv_rec         rulv_rec_type;
6144 
6145    l_progress         VARCHAR2(10) := '1.0';
6146    l_french_tax_code  OKL_FRENCH_TAX_V.CODE%TYPE;
6147 
6148    CURSOR french_tax_csr (p_tax_code okl_french_tax_v.code%TYPE,
6149                           p_tax_name okl_french_tax_v.name%TYPE) IS
6150    SELECT code
6151    FROM   okl_french_tax_v
6152    WHERE  ( code = p_tax_code
6153             AND
6154             p_tax_code IS NOT NULL)
6155    OR     ( name = p_tax_name
6156             AND
6157             p_tax_name IS NOT NULL)
6158    AND    TRUNC(SYSDATE) BETWEEN NVL(TRUNC(start_date), TRUNC(SYSDATE))
6159                              AND NVL(TRUNC(end_date), TRUNC(SYSDATE));
6160 
6161    l_ok   VARCHAR2(1) := '?';
6162    CURSOR usage_type_csr (p_usage_type VARCHAR2) IS
6163    SELECT 'Y'
6164    FROM   fnd_lookups
6165    WHERE  lookup_type = 'OKS_USAGE_TYPE'
6166    AND    TRUNC(SYSDATE) BETWEEN NVL(TRUNC(start_date_active), TRUNC(SYSDATE)) AND
6167                               NVL(TRUNC(end_date_active), TRUNC(SYSDATE));
6168 
6169    -- Added by rravikir (Fix for Bug 3947959)
6170    lv_asset_default        okl_property_tax_setups.enable_asset_default%TYPE;
6171    CURSOR get_est_prop_tax_info(p_chr_id  okc_k_headers_b.id%TYPE) IS
6172    SELECT enable_asset_default
6173    FROM okl_property_tax_setups
6174    WHERE org_id = (SELECT authoring_org_id
6175                    FROM okc_k_headers_b
6176                    WHERE id = p_chr_id);
6177    -- End
6178 
6179    l_present_yn VARCHAR2(1);
6180    l_service_name OKL_STRMTYP_SOURCE_V.NAME%TYPE;
6181 
6182    -- 5179119
6183    CURSOR get_sales_tax_rgp_info(p_chr_id  okc_k_headers_b.id%TYPE,
6184                                         p_cle_id  okc_k_lines_v.id%TYPE) IS
6185    SELECT rgp.id
6186    FROM okc_rule_groups_v rgp
6187    WHERE rgp.dnz_chr_id = p_chr_id
6188    AND rgp.cle_id = p_cle_id
6189    AND rgp.rgd_code = 'LAASTX'
6190    AND rgp.rgp_type = 'KRG';
6191 
6192    CURSOR get_sales_tax_rule_info(p_chr_id  okc_k_headers_b.id%TYPE,
6193                                   p_rgp_id  okc_k_lines_v.id%TYPE) IS
6194    SELECT rule.id
6195    FROM okc_rules_v rule
6196    WHERE rule.dnz_chr_id = p_chr_id
6197    AND rule.rgp_id = p_rgp_id
6198    AND rule.rule_information_category = 'LAASTX';
6199 
6200    l_sales_tax_rgp_id    OKC_RULE_GROUPS_V.ID%TYPE;
6201    l_sales_tax_rule_id   OKC_RULES_V.ID%TYPE;
6202    l_sales_tax_rgp_found   BOOLEAN;
6203    l_sales_tax_rule_found   BOOLEAN;
6204    l_create_rule_group      BOOLEAN;
6205    -- 5179119
6206    l_rgp_count NUMBER; --AKP
6207    l_rul_count NUMBER;
6208 
6209    BEGIN
6210       x_return_status := OKL_API.G_RET_STS_SUCCESS;
6211       --debug_message('AKP:In create_line_rules.. p_cle_id=' || p_cle_id);
6212 
6213       l_rulv_rec := NULL; -- DDEY
6214 
6215       -- Added by rravikir (Fix for Bug 3947959)
6216       OPEN get_est_prop_tax_info(p_chr_id   => p_chr_id);
6217       FETCH get_est_prop_tax_info into lv_asset_default;
6218       CLOSE get_est_prop_tax_info;
6219       -- End
6220 
6221       IF (p_line_type = 'ASSET') THEN
6222         -- Added by rravikir (Fix for Bug 3947959)
6223         IF (lv_asset_default IS NOT NULL AND lv_asset_default = 'YES') THEN
6224           create_update_asset_rules(
6225                             x_return_status                  => x_return_status,
6226                             x_msg_count                      => x_msg_count,
6227                             x_msg_data                       => x_msg_data,
6228                             p_chr_id                         => p_chr_id,
6229                             p_cle_id                         => p_cle_id,
6230                             p_contract_number                => p_contract_number,
6231                             p_line_number                    => p_line_number,
6232                             p_line_type                      => p_line_type,
6233                             p_inv_org_id                     => p_inv_org_id,
6234                             p_sales_tax_exempt_flag          => p_sales_tax_exempt_flag,
6235                             p_sales_tax_exempt_cert_number   => p_sales_tax_exempt_cert_number,
6236                             p_sales_tax_override_flag        => p_sales_tax_override_flag,
6237                             p_sales_tax_override_rate        => p_sales_tax_override_rate,
6238                             p_st_upd_lines_from_contract     => p_st_upd_lines_from_contract,
6239                             p_st_transfer_of_title           => p_st_transfer_of_title,
6240                             p_st_sale_and_lease_back         => p_st_sale_and_lease_back,
6241                             p_st_purchase_of_lease           => p_st_purchase_of_lease,
6242                             p_st_equipment_usage             => p_st_equipment_usage,
6243                             p_st_equipment_age               => p_st_equipment_age,
6244                             p_st_asset_upfront_tax           => p_st_asset_upfront_tax,
6245                             p_vat_tax_exempt                 => p_vat_tax_exempt,
6246                             p_vat_tax_exempt_cert_number     => p_vat_tax_exempt_cert_number,
6247                             p_vat_tax_override_flag          => p_vat_tax_override_flag,
6248                             p_vat_tax_override_rate          => p_vat_tax_override_rate,
6249                             p_prop_tax_applicable            => p_prop_tax_applicable,
6250                             p_prop_tax_lease_rep             => p_prop_tax_lease_rep,
6251                             p_french_tax_code                => p_french_tax_code,
6252                             p_french_tax_name                => p_french_tax_name,
6253                             p_prop_tax_bill_method           => p_prop_tax_bill_method,
6254                             p_prop_tax_as_contract_yn        => p_prop_tax_as_contract_yn);
6255           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
6256             raise line_rule_failed;
6257           END IF;
6258         ELSE
6259         -- End
6260 
6261          debug_message('***** > Else of estimated prop tax');
6262 
6263          -- 5179119
6264          OPEN get_sales_tax_rgp_info(p_chr_id, p_cle_id);
6265          FETCH get_sales_tax_rgp_info into l_sales_tax_rgp_id;
6266          IF get_sales_tax_rgp_info%NOTFOUND THEN
6267            l_sales_tax_rgp_found := FALSE;
6268          ELSE
6269            l_sales_tax_rgp_found := TRUE;
6270          END IF;
6271          CLOSE get_sales_tax_rgp_info;
6272 
6273          OPEN get_sales_tax_rule_info(p_chr_id	=> p_chr_id,
6274    		  		      p_rgp_id	=> l_sales_tax_rgp_id);
6275          FETCH get_sales_tax_rule_info into l_sales_tax_rule_id;
6276          IF get_sales_tax_rule_info%NOTFOUND THEN
6277            l_sales_tax_rule_found := FALSE;
6278          ELSE
6279            l_sales_tax_rule_found := TRUE;
6280          END IF;
6281          CLOSE get_sales_tax_rule_info;
6282 
6283          -- Rule Group LAASTX
6284          l_rgpv_rec            := NULL;
6285          l_rgp_id              := NULL;
6286          l_rgpv_rec.rgd_code   := 'LAASTX';
6287          l_rgpv_rec.chr_id     := NULL;
6288          l_rgpv_rec.dnz_chr_id := p_chr_id;
6289          l_rgpv_rec.cle_id     := p_cle_id;
6290          l_rgpv_rec.rgp_type   := 'KRG';
6291 
6292          l_create_rule_group                  := FALSE;
6293          IF (p_sales_tax_exempt_flag IS NOT NULL) THEN
6294 
6295             l_rulv_rec.rule_information1         := p_sales_tax_exempt_flag;
6296             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6297             l_rulv_rec.dnz_chr_id                := p_chr_id;
6298             l_rulv_rec.rule_information_category := 'LAASTX';
6299             l_rulv_rec.std_template_yn           := 'N';
6300             l_rulv_rec.warn_yn                   := 'N';
6301             l_create_rule_group                  := TRUE;
6302          END IF;
6303 
6304          IF (p_sales_tax_exempt_cert_number IS NOT NULL) THEN
6305 
6306              l_rulv_rec.rule_information2         := p_sales_tax_exempt_cert_number;
6307              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6308              l_rulv_rec.dnz_chr_id                := p_chr_id;
6309              l_rulv_rec.rule_information_category := 'LAASTX';
6310              l_rulv_rec.std_template_yn           := 'N';
6311              l_rulv_rec.warn_yn                   := 'N';
6312             l_create_rule_group                  := TRUE;
6313 
6314          END IF;
6315 
6316          IF (p_sales_tax_override_flag IS NOT NULL) THEN
6317 
6318              l_rulv_rec.rule_information3         := p_sales_tax_override_flag;
6319              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6320              l_rulv_rec.dnz_chr_id                := p_chr_id;
6321              l_rulv_rec.rule_information_category := 'LAASTX';
6322              l_rulv_rec.std_template_yn           := 'N';
6323              l_rulv_rec.warn_yn                   := 'N';
6324             l_create_rule_group                  := TRUE;
6325 
6326          END IF;
6327 
6328          IF (p_sales_tax_override_rate IS NOT NULL) THEN
6329 
6330              l_rulv_rec.rule_information4         := p_sales_tax_override_rate;
6331              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6332              l_rulv_rec.dnz_chr_id                := p_chr_id;
6333              l_rulv_rec.rule_information_category := 'LAASTX';
6334              l_rulv_rec.std_template_yn           := 'N';
6335              l_rulv_rec.warn_yn                   := 'N';
6336             l_create_rule_group                  := TRUE;
6337 
6338          END IF;
6339 
6340          IF (p_st_upd_lines_from_contract IS NOT NULL) THEN
6341 
6342              l_rulv_rec.rule_information5         := p_st_upd_lines_from_contract;
6343              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6344              l_rulv_rec.dnz_chr_id                := p_chr_id;
6345              l_rulv_rec.rule_information_category := 'LAASTX';
6346              l_rulv_rec.std_template_yn           := 'N';
6347              l_rulv_rec.warn_yn                   := 'N';
6348              l_create_rule_group                  := TRUE;
6349 
6350          END IF;
6351 
6352          IF (p_st_transfer_of_title IS NOT NULL) THEN
6353 
6354              l_rulv_rec.rule_information6         := p_st_transfer_of_title;
6355              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6356              l_rulv_rec.dnz_chr_id                := p_chr_id;
6357              l_rulv_rec.rule_information_category := 'LAASTX';
6358              l_rulv_rec.std_template_yn           := 'N';
6359              l_rulv_rec.warn_yn                   := 'N';
6360              l_create_rule_group                  := TRUE;
6361 
6362          END IF;
6363 
6364          IF (p_st_sale_and_lease_back IS NOT NULL) THEN
6365 
6366              l_rulv_rec.rule_information7         := p_st_sale_and_lease_back;
6367              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6368              l_rulv_rec.dnz_chr_id                := p_chr_id;
6369              l_rulv_rec.rule_information_category := 'LAASTX';
6370              l_rulv_rec.std_template_yn           := 'N';
6371              l_rulv_rec.warn_yn                   := 'N';
6372              l_create_rule_group                  := TRUE;
6373 
6374          END IF;
6375 
6376          IF (p_st_purchase_of_lease IS NOT NULL) THEN
6377 
6378              l_rulv_rec.rule_information8         := p_st_purchase_of_lease;
6379              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6380              l_rulv_rec.dnz_chr_id                := p_chr_id;
6381              l_rulv_rec.rule_information_category := 'LAASTX';
6382              l_rulv_rec.std_template_yn           := 'N';
6383              l_rulv_rec.warn_yn                   := 'N';
6384              l_create_rule_group                  := TRUE;
6385 
6386          END IF;
6387 
6388          IF (p_st_equipment_usage IS NOT NULL) THEN
6389 
6390              l_rulv_rec.rule_information9         := p_st_equipment_usage ;
6391              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6392              l_rulv_rec.dnz_chr_id                := p_chr_id;
6393              l_rulv_rec.rule_information_category := 'LAASTX';
6394              l_rulv_rec.std_template_yn           := 'N';
6395              l_rulv_rec.warn_yn                   := 'N';
6396              l_create_rule_group                  := TRUE;
6397 
6398          END IF;
6399 
6400          IF (p_st_equipment_age IS NOT NULL) THEN
6401 
6402              l_rulv_rec.rule_information10        := p_st_equipment_age;
6403              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6404              l_rulv_rec.dnz_chr_id                := p_chr_id;
6405              l_rulv_rec.rule_information_category := 'LAASTX';
6406              l_rulv_rec.std_template_yn           := 'N';
6407              l_rulv_rec.warn_yn                   := 'N';
6408              l_create_rule_group                  := TRUE;
6409 
6410          END IF;
6411 
6412          IF (p_st_asset_upfront_tax IS NOT NULL) THEN
6413 
6414              l_rulv_rec.rule_information11        := p_st_asset_upfront_tax;
6415              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6416              l_rulv_rec.dnz_chr_id                := p_chr_id;
6417              l_rulv_rec.rule_information_category := 'LAASTX';
6418              l_rulv_rec.std_template_yn           := 'N';
6419              l_rulv_rec.warn_yn                   := 'N';
6420              l_create_rule_group                  := TRUE;
6421 
6422          END IF;
6423 
6424          IF (l_create_rule_group) THEN
6425          IF NOT(l_sales_tax_rgp_found) THEN -- 5179119
6426            create_rule_group_and_rule(
6427                                  x_return_status => x_return_status,
6428                                  x_msg_count     => x_msg_count,
6429                                  x_msg_data      => x_msg_data,
6430                                  p_rgp_id        => l_rgp_id,
6431                                  p_rgpv_rec      => l_rgpv_rec,
6432                                  p_rulv_rec      => l_rulv_rec,
6433                                  x_rgpv_rec      => x_rgpv_rec,
6434                                  x_rulv_rec      => x_rulv_rec
6435                                 );
6436          ELSE
6437            l_rgp_id := l_sales_tax_rgp_id;
6438            l_rulv_rec.rgp_id := l_sales_tax_rgp_id;
6439            IF NOT(l_sales_tax_rule_found) THEN
6440              OKL_RULE_PUB.create_rule(
6441                                p_api_version     => 1.0,
6442                                p_init_msg_list   => OKL_API.G_FALSE,
6443                                x_return_status   => x_return_status,
6444                                x_msg_count       => x_msg_count,
6445                                x_msg_data        => x_msg_data,
6446                                p_rulv_rec        => l_rulv_rec,
6447                                x_rulv_rec        => x_rulv_rec
6448                               );
6449            ELSE
6450              l_rulv_rec.id := l_sales_tax_rule_id;
6451              l_rulv_rec.created_by := OKC_API.G_MISS_NUM;
6452              l_rulv_rec.creation_date := OKC_API.G_MISS_DATE;
6453              OKL_RULE_PUB.update_rule(
6454                                p_api_version     => 1.0,
6455                                p_init_msg_list   => OKL_API.G_FALSE,
6456                                x_return_status   => x_return_status,
6457                                x_msg_count       => x_msg_count,
6458                                x_msg_data        => x_msg_data,
6459                                p_rulv_rec        => l_rulv_rec,
6460                                x_rulv_rec        => x_rulv_rec
6461                               );
6462            END IF;
6463          END IF;
6464          END IF;
6465 
6466          l_progress := '1.1';
6467          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
6468              raise line_rule_failed;
6469          END IF;
6470 
6471          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
6472             l_rgp_id := x_rgpv_rec.id;
6473          END IF;
6474 
6475          l_rulv_rec := NULL;
6476          IF (p_vat_tax_exempt IS NOT NULL) THEN
6477 
6478              l_rulv_rec.rule_information1         := p_vat_tax_exempt;
6479              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6480              l_rulv_rec.dnz_chr_id                := p_chr_id;
6481              l_rulv_rec.rule_information_category := 'LAAVTX';
6482              l_rulv_rec.std_template_yn           := 'N';
6483              l_rulv_rec.warn_yn                   := 'N';
6484 
6485          END IF;
6486 
6487          IF (p_vat_tax_exempt_cert_number IS NOT NULL) THEN
6488 
6489              l_rulv_rec.rule_information2         := p_vat_tax_exempt_cert_number;
6490              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6491              l_rulv_rec.dnz_chr_id                := p_chr_id;
6492              l_rulv_rec.rule_information_category := 'LAAVTX';
6493              l_rulv_rec.std_template_yn           := 'N';
6494              l_rulv_rec.warn_yn                   := 'N';
6495 
6496          END IF;
6497 
6498          IF (p_vat_tax_override_flag IS NOT NULL) THEN
6499 
6500              l_rulv_rec.rule_information3         := p_vat_tax_override_flag;
6501              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6502              l_rulv_rec.dnz_chr_id                := p_chr_id;
6503              l_rulv_rec.rule_information_category := 'LAAVTX';
6504              l_rulv_rec.std_template_yn           := 'N';
6505              l_rulv_rec.warn_yn                   := 'N';
6506 
6507          END IF;
6508 
6509          IF (p_vat_tax_override_rate IS NOT NULL) THEN
6510 
6511              l_rulv_rec.rule_information4         := p_vat_tax_override_rate;
6512              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6513              l_rulv_rec.dnz_chr_id                := p_chr_id;
6514              l_rulv_rec.rule_information_category := 'LAAVTX';
6515              l_rulv_rec.std_template_yn           := 'N';
6516              l_rulv_rec.warn_yn                   := 'N';
6517 
6518          END IF;
6519 
6520          create_rule_group_and_rule(
6521                                  x_return_status => x_return_status,
6522                                  x_msg_count     => x_msg_count,
6523                                  x_msg_data      => x_msg_data,
6524                                  p_rgp_id        => l_rgp_id,
6525                                  p_rgpv_rec      => l_rgpv_rec,
6526                                  p_rulv_rec      => l_rulv_rec,
6527                                  x_rgpv_rec      => x_rgpv_rec,
6528                                  x_rulv_rec      => x_rulv_rec
6529                                 );
6530 
6531          l_progress := '1.2';
6532          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
6533              raise line_rule_failed;
6534          END IF;
6535 
6536          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
6537             l_rgp_id := x_rgpv_rec.id;
6538          END IF;
6539 
6540          l_rulv_rec := NULL;
6541 
6542          -- Property Tax
6543          IF (p_prop_tax_applicable IS NOT NULL) THEN
6544             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6545             l_rulv_rec.dnz_chr_id                := p_chr_id;
6546             l_rulv_rec.rule_information1         := p_prop_tax_applicable;
6547             l_rulv_rec.rule_information_category := 'LAPRTX';
6548             l_rulv_rec.std_template_yn           := 'N';
6549             l_rulv_rec.warn_yn                   := 'N';
6550          END IF;
6551 
6552          IF (p_prop_tax_lease_rep IS NOT NULL) THEN
6553             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6554             l_rulv_rec.dnz_chr_id                := p_chr_id;
6555             l_rulv_rec.rule_information2         := p_prop_tax_lease_rep;
6556             l_rulv_rec.rule_information_category := 'LAPRTX';
6557             l_rulv_rec.std_template_yn           := 'N';
6558             l_rulv_rec.warn_yn                   := 'N';
6559          END IF;
6560 
6561 -- Added by rravikir (Fix for Bug 3947959)
6562          IF (p_prop_tax_bill_method IS NOT NULL) THEN
6563             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6564             l_rulv_rec.dnz_chr_id                := p_chr_id;
6565             l_rulv_rec.rule_information3         := p_prop_tax_bill_method;
6566             l_rulv_rec.rule_information_category := 'LAPRTX';
6567             l_rulv_rec.std_template_yn           := 'N';
6568             l_rulv_rec.warn_yn                   := 'N';
6569          END IF;
6570 -- End
6571 
6572          create_rule_group_and_rule(
6573                                  x_return_status => x_return_status,
6574                                  x_msg_count     => x_msg_count,
6575                                  x_msg_data      => x_msg_data,
6576                                  p_rgp_id        => l_rgp_id,
6577                                  p_rgpv_rec      => l_rgpv_rec,
6578                                  p_rulv_rec      => l_rulv_rec,
6579                                  x_rgpv_rec      => x_rgpv_rec,
6580                                  x_rulv_rec      => x_rulv_rec
6581                                 );
6582 
6583          l_progress := '1.2';
6584          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
6585              raise line_rule_failed;
6586          END IF;
6587 
6588          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
6589             l_rgp_id := x_rgpv_rec.id;
6590          END IF;
6591 
6592          l_rulv_rec := NULL;
6593 
6594          -- Added by rravikir (Fix for Bug 3947959) (Creation of 'LAASTK' rule)
6595          IF (p_prop_tax_as_contract_yn IS NOT NULL) THEN
6596             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6597             l_rulv_rec.dnz_chr_id                := p_chr_id;
6598             l_rulv_rec.rule_information1         := p_prop_tax_as_contract_yn;
6599             l_rulv_rec.rule_information_category := 'LAASTK';
6600             l_rulv_rec.std_template_yn           := 'N';
6601             l_rulv_rec.warn_yn                   := 'N';
6602          END IF;
6603 
6604          create_rule_group_and_rule(
6605                                  x_return_status => x_return_status,
6606                                  x_msg_count     => x_msg_count,
6607                                  x_msg_data      => x_msg_data,
6608                                  p_rgp_id        => l_rgp_id,
6609                                  p_rgpv_rec      => l_rgpv_rec,
6610                                  p_rulv_rec      => l_rulv_rec,
6611                                  x_rgpv_rec      => x_rgpv_rec,
6612                                  x_rulv_rec      => x_rulv_rec
6613                                 );
6614 
6615          l_progress := '1.2';
6616          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
6617              raise line_rule_failed;
6618          END IF;
6619 
6620          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
6621             l_rgp_id := x_rgpv_rec.id;
6622          END IF;
6623 
6624          l_rulv_rec := NULL;
6625          -- End
6626 
6627          IF (p_french_tax_code IS NOT NULL
6628              OR
6629              p_french_tax_name IS NOT NULL) THEN
6630 
6631              OPEN french_tax_csr (p_french_tax_code,
6632                                   p_french_tax_name);
6633              FETCH french_tax_csr INTO l_french_tax_code;
6634              IF french_tax_csr%NOTFOUND THEN
6635                okl_api.set_message(
6636                                 G_APP_NAME,
6637                                 G_INVALID_VALUE,
6638                                 'CONTRACT_NUM',
6639                                 p_contract_number||'/'||p_line_number,
6640                                 'COL_NAME',
6641                                 'FRENCH_TAX_CODE, NAME',
6642                                 'COL_VALUE',
6643                                 p_french_tax_code||', '||p_french_tax_name
6644                               );
6645 
6646                 raise line_rule_failed;
6647              END IF;
6648 
6649              CLOSE french_tax_csr;
6650 
6651          END IF;
6652 
6653          IF (l_french_tax_code IS NOT NULL) THEN
6654              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6655              l_rulv_rec.dnz_chr_id                := p_chr_id;
6656              l_rulv_rec.rule_information1         := l_french_tax_code;
6657              l_rulv_rec.rule_information_category := 'LATAXP';
6658              l_rulv_rec.std_template_yn           := 'N';
6659              l_rulv_rec.warn_yn                   := 'N';
6660          END IF;
6661 
6662          create_rule_group_and_rule(
6663                                  x_return_status => x_return_status,
6664                                  x_msg_count     => x_msg_count,
6665                                  x_msg_data      => x_msg_data,
6666                                  p_rgp_id        => l_rgp_id,
6667                                  p_rgpv_rec      => l_rgpv_rec,
6668                                  p_rulv_rec      => l_rulv_rec,
6669                                  x_rgpv_rec      => x_rgpv_rec,
6670                                  x_rulv_rec      => x_rulv_rec
6671                                 );
6672 
6673          l_progress := '1.2';
6674          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
6675              raise line_rule_failed;
6676          END IF;
6677 
6678          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
6679             l_rgp_id := x_rgpv_rec.id;
6680          END IF;
6681         -- Added by rravikir (Fix for Bug 3947959)
6682         END IF;
6683         -- End
6684 
6685          debug_message('***** > After estimated prop tax');
6686 
6687          -- Rule Group LAAFLG
6688          l_rgpv_rec            := NULL;
6689          l_rgp_id              := NULL;
6690          l_rgpv_rec.rgd_code   := 'LAAFLG';
6691          l_rgpv_rec.chr_id     := NULL;
6692          l_rgpv_rec.dnz_chr_id := p_chr_id;
6693          l_rgpv_rec.cle_id     := p_cle_id;
6694          l_rgpv_rec.rgp_type   := 'KRG';
6695 
6696          l_rulv_rec            := NULL;
6697          IF (p_lien_type IS NOT NULL) THEN
6698             l_rulv_rec.rule_information1         := p_lien_type;
6699             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6700             l_rulv_rec.dnz_chr_id                := p_chr_id;
6701             l_rulv_rec.rule_information_category := 'LAFLLN';
6702             l_rulv_rec.std_template_yn           := 'N';
6703             l_rulv_rec.warn_yn                   := 'N';
6704          END IF;
6705 
6706          IF (p_lien_filing_number IS NOT NULL) THEN
6707             l_rulv_rec.rule_information2         := p_lien_filing_number;
6708             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6709             l_rulv_rec.dnz_chr_id                := p_chr_id;
6710             l_rulv_rec.rule_information_category := 'LAFLLN';
6711             l_rulv_rec.std_template_yn           := 'N';
6712             l_rulv_rec.warn_yn                   := 'N';
6713          END IF;
6714 
6715          IF (p_lien_filing_date IS NOT NULL) THEN
6716             l_rulv_rec.rule_information3         := TO_CHAR(p_lien_filing_date);
6717             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6718             l_rulv_rec.dnz_chr_id                := p_chr_id;
6719             l_rulv_rec.rule_information_category := 'LAFLLN';
6720             l_rulv_rec.std_template_yn           := 'N';
6721             l_rulv_rec.warn_yn                   := 'N';
6722          END IF;
6723 
6724          IF (p_lien_filing_status IS NOT NULL) THEN
6725             l_rulv_rec.rule_information4         := p_lien_filing_status;
6726             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6727             l_rulv_rec.dnz_chr_id                := p_chr_id;
6728             l_rulv_rec.rule_information_category := 'LAFLLN';
6729             l_rulv_rec.std_template_yn           := 'N';
6730             l_rulv_rec.warn_yn                   := 'N';
6731          END IF;
6732 
6733          x_lienholder_id := NULL;
6734          IF (p_lienholder_id IS NOT NULL
6735              OR
6736              p_lienholder_number IS NOT NULL) THEN
6737 
6738              get_party_id(
6739                           x_return_status     => x_return_status,
6740                           x_msg_count         => x_msg_count,
6741                           x_msg_data          => x_msg_data,
6742                           p_contract_number   => p_contract_number,
6743                           p_line_number       => p_line_number,
6744                           p_party_id          => p_lienholder_id,
6745                           p_party_number      => p_lienholder_number,
6746                           x_party_id          => x_lienholder_id
6747                          );
6748              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
6749                 raise line_rule_failed;
6750              END IF;
6751          END IF;
6752 
6753          IF (x_lienholder_id IS NOT NULL) THEN
6754             l_rulv_rec.jtot_object1_code         := 'OKX_PARTY';
6755             l_rulv_rec.object1_id1               := TO_CHAR(x_lienholder_id);
6756             l_rulv_rec.object1_id2               := '#';
6757             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6758             l_rulv_rec.dnz_chr_id                := p_chr_id;
6759             l_rulv_rec.rule_information_category := 'LAFLLN';
6760             l_rulv_rec.std_template_yn           := 'N';
6761             l_rulv_rec.warn_yn                   := 'N';
6762          END IF;
6763 
6764          IF (p_filing_jurisdiction IS NOT NULL) THEN
6765             l_rulv_rec.rule_information5         := p_filing_jurisdiction;
6766             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6767             l_rulv_rec.dnz_chr_id                := p_chr_id;
6768             l_rulv_rec.rule_information_category := 'LAFLLN';
6769             l_rulv_rec.std_template_yn           := 'N';
6770             l_rulv_rec.warn_yn                   := 'N';
6771          END IF;
6772 
6773          IF (p_filing_sub_jurisdiction IS NOT NULL) THEN
6774             l_rulv_rec.rule_information6         := p_filing_sub_jurisdiction;
6775             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6776             l_rulv_rec.dnz_chr_id                := p_chr_id;
6777             l_rulv_rec.rule_information_category := 'LAFLLN';
6778             l_rulv_rec.std_template_yn           := 'N';
6779             l_rulv_rec.warn_yn                   := 'N';
6780          END IF;
6781 
6782          IF (p_lien_expiration_date IS NOT NULL) THEN
6783             l_rulv_rec.rule_information7         := TO_CHAR(p_lien_expiration_date);
6784             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6785             l_rulv_rec.dnz_chr_id                := p_chr_id;
6786             l_rulv_rec.rule_information_category := 'LAFLLN';
6787             l_rulv_rec.std_template_yn           := 'N';
6788             l_rulv_rec.warn_yn                   := 'N';
6789 
6790          END IF;
6791 
6792          IF (p_lien_continuation_number IS NOT NULL) THEN
6793             l_rulv_rec.rule_information8         := p_lien_continuation_number;
6794             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6795             l_rulv_rec.dnz_chr_id                := p_chr_id;
6796             l_rulv_rec.rule_information_category := 'LAFLLN';
6797             l_rulv_rec.std_template_yn           := 'N';
6798             l_rulv_rec.warn_yn                   := 'N';
6799          END IF;
6800 
6801          IF (p_lien_continuation_date IS NOT NULL) THEN
6802             l_rulv_rec.rule_information9         := TO_CHAR(p_lien_continuation_date);
6803             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6804             l_rulv_rec.dnz_chr_id                := p_chr_id;
6805             l_rulv_rec.rule_information_category := 'LAFLLN';
6806             l_rulv_rec.std_template_yn           := 'N';
6807             l_rulv_rec.warn_yn                   := 'N';
6808          END IF;
6809 
6810          create_rule_group_and_rule(
6811                                  x_return_status => x_return_status,
6812                                  x_msg_count     => x_msg_count,
6813                                  x_msg_data      => x_msg_data,
6814                                  p_rgp_id        => l_rgp_id,
6815                                  p_rgpv_rec      => l_rgpv_rec,
6816                                  p_rulv_rec      => l_rulv_rec,
6817                                  x_rgpv_rec      => x_rgpv_rec,
6818                                  x_rulv_rec      => x_rulv_rec
6819                                 );
6820 
6821          l_progress := '1.3';
6822          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
6823              raise line_rule_failed;
6824          END IF;
6825 
6826          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
6827             l_rgp_id := x_rgpv_rec.id;
6828          END IF;
6829 
6830          l_rulv_rec := NULL;
6831          IF (p_title_type IS NOT NULL) THEN
6832 
6833             l_rulv_rec.rule_information1         := p_title_type;
6834             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6835             l_rulv_rec.dnz_chr_id                := p_chr_id;
6836             l_rulv_rec.rule_information_category := 'LAFLTL';
6837             l_rulv_rec.std_template_yn           := 'N';
6838             l_rulv_rec.warn_yn                   := 'N';
6839          END IF;
6840 
6841          IF (p_title_issuer_id IS NOT NULL
6842              OR
6843              p_title_issuer_number IS NOT NULL) THEN
6844             get_party_id(
6845                          x_return_status     => x_return_status,
6846                          x_msg_count         => x_msg_count,
6847                          x_msg_data          => x_msg_data,
6848                          p_contract_number   => p_contract_number,
6849                          p_line_number       => p_line_number,
6850                          p_party_id          => p_title_issuer_id,
6851                          p_party_number      => p_title_issuer_number,
6852                          x_party_id          => x_title_issuer_id
6853                         );
6854             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
6855                RAISE line_rule_failed;
6856             END IF;
6857          END IF;
6858 
6859          IF (x_title_issuer_id IS NOT NULL) THEN
6860             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6861             l_rulv_rec.dnz_chr_id                := p_chr_id;
6862             l_rulv_rec.jtot_object1_code         := 'OKX_PARTY';
6863             l_rulv_rec.object1_id1               := TO_CHAR(x_title_issuer_id);
6864             l_rulv_rec.object1_id2               := '#';
6865             l_rulv_rec.rule_information_category := 'LAFLTL';
6866             l_rulv_rec.std_template_yn           := 'N';
6867             l_rulv_rec.warn_yn                   := 'N';
6868          END IF;
6869 
6870          IF (p_title_date IS NOT NULL) THEN
6871             l_rulv_rec.rule_information2         := TO_CHAR(p_title_date);
6872             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6873             l_rulv_rec.dnz_chr_id                := p_chr_id;
6874             l_rulv_rec.rule_information_category := 'LAFLTL';
6875             l_rulv_rec.std_template_yn           := 'N';
6876             l_rulv_rec.warn_yn                   := 'N';
6877          END IF;
6878 
6879          IF (p_title_number IS NOT NULL) THEN
6880             l_rulv_rec.rule_information3         := p_title_number;
6881             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6882             l_rulv_rec.dnz_chr_id                := p_chr_id;
6883             l_rulv_rec.rule_information_category := 'LAFLTL';
6884             l_rulv_rec.std_template_yn           := 'N';
6885             l_rulv_rec.warn_yn                   := 'N';
6886          END IF;
6887 
6888          IF (p_registration_number IS NOT NULL) THEN
6889             l_rulv_rec.rule_information4         := p_registration_number;
6890             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6891             l_rulv_rec.dnz_chr_id                := p_chr_id;
6892             l_rulv_rec.rule_information_category := 'LAFLTL';
6893             l_rulv_rec.std_template_yn           := 'N';
6894             l_rulv_rec.warn_yn                   := 'N';
6895          END IF;
6896 
6897          IF (p_asset_registration_loc_name IS NOT NULL) THEN
6898             l_rulv_rec.rule_information5         := p_asset_registration_loc_name;
6899             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6900             l_rulv_rec.dnz_chr_id                := p_chr_id;
6901             l_rulv_rec.rule_information_category := 'LAFLTL';
6902             l_rulv_rec.std_template_yn           := 'N';
6903             l_rulv_rec.warn_yn                   := 'N';
6904          END IF;
6905 
6906          -- Title_Custodian ???
6907 
6908          IF (p_payee_site_name IS NOT NULL) THEN
6909             l_rulv_rec.rule_information6         := p_payee_site_name;
6910             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6911             l_rulv_rec.dnz_chr_id                := p_chr_id;
6912             l_rulv_rec.rule_information_category := 'LAFLTL';
6913             l_rulv_rec.std_template_yn           := 'N';
6914             l_rulv_rec.warn_yn                   := 'N';
6915          END IF;
6916 
6917          create_rule_group_and_rule(
6918                                  x_return_status => x_return_status,
6919                                  x_msg_count     => x_msg_count,
6920                                  x_msg_data      => x_msg_data,
6921                                  p_rgp_id        => l_rgp_id,
6922                                  p_rgpv_rec      => l_rgpv_rec,
6923                                  p_rulv_rec      => l_rulv_rec,
6924                                  x_rgpv_rec      => x_rgpv_rec,
6925                                  x_rulv_rec      => x_rulv_rec
6926                                 );
6927 
6928          l_progress := '1.4';
6929          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
6930              raise line_rule_failed;
6931          END IF;
6932 
6933          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
6934             l_rgp_id := x_rgpv_rec.id;
6935          END IF;
6936 
6937       END IF; -- line type
6938 
6939 /* taken care in process_party_role, 07/15/2002
6940       IF (p_line_type = 'SERVICE'
6941           OR
6942           p_line_type = 'FEE') THEN
6943 
6944          l_rgpv_rec            := NULL;
6945          l_rgp_id              := NULL;
6946          l_rgpv_rec.rgd_code   := 'LAPSTH';
6947          l_rgpv_rec.chr_id     := NULL;
6948          l_rgpv_rec.dnz_chr_id := p_chr_id;
6949          l_rgpv_rec.cle_id     := p_cle_id;
6950          l_rgpv_rec.rgp_type   := 'KRG';
6951 
6952          l_rulv_rec            := NULL;
6953 
6954          IF (p_passthrough_percent IS NOT NULL) THEN
6955             l_rulv_rec.rule_information1         := p_passthrough_percent;
6956             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6957             l_rulv_rec.dnz_chr_id                := p_chr_id;
6958             l_rulv_rec.rule_information_category := 'LAPTPR';
6959             l_rulv_rec.std_template_yn           := 'N';
6960             l_rulv_rec.warn_yn                   := 'N';
6961          END IF;
6962 
6963          create_rule_group_and_rule(
6964                                  x_return_status => x_return_status,
6965                                  x_msg_count     => x_msg_count,
6966                                  x_msg_data      => x_msg_data,
6967                                  p_rgp_id        => l_rgp_id,
6968                                  p_rgpv_rec      => l_rgpv_rec,
6969                                  p_rulv_rec      => l_rulv_rec,
6970                                  x_rgpv_rec      => x_rgpv_rec,
6971                                  x_rulv_rec      => x_rulv_rec
6972                                 );
6973 
6974          l_progress := '1.5';
6975          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
6976              raise line_rule_failed;
6977          END IF;
6978 
6979          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
6980             l_rgp_id := x_rgpv_rec.id;
6981          END IF;
6982 
6983          l_rulv_rec            := NULL;
6984          IF (p_passthrough_basis_code IS NOT NULL) THEN
6985             l_rulv_rec.rule_information1         := p_passthrough_basis_code;
6986             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6987             l_rulv_rec.dnz_chr_id                := p_chr_id;
6988             l_rulv_rec.rule_information_category := 'LAPTBC';
6989             l_rulv_rec.std_template_yn           := 'N';
6990             l_rulv_rec.warn_yn                   := 'N';
6991          END IF;
6992 
6993          create_rule_group_and_rule(
6994                                  x_return_status => x_return_status,
6995                                  x_msg_count     => x_msg_count,
6996                                  x_msg_data      => x_msg_data,
6997                                  p_rgp_id        => l_rgp_id,
6998                                  p_rgpv_rec      => l_rgpv_rec,
6999                                  p_rulv_rec      => l_rulv_rec,
7000                                  x_rgpv_rec      => x_rgpv_rec,
7001                                  x_rulv_rec      => x_rulv_rec
7002                                 );
7003 
7004          l_progress := '1.6';
7005          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
7006              raise line_rule_failed;
7007          END IF;
7008 
7009          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
7010             l_rgp_id := x_rgpv_rec.id;
7011          END IF;
7012 
7013 */
7014 
7015 /* Do not use it
7016          IF (p_payment_term IS NOT NULL
7017              OR
7018              p_payment_term_id IS NOT NULL) THEN
7019 
7020              l_payment_term_id := get_payment_term(
7021                                                    x_return_status   => x_return_status,
7022                                                    p_contract_number => p_contract_number,
7023                                                    p_line_number     => p_line_number,
7024                                                    p_payment_term    => p_payment_term,
7025                                                    p_payment_term_id => p_payment_term_id
7026                                                   );
7027 
7028              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
7029                 raise line_rule_failed;
7030              END IF;
7031 
7032              l_rulv_rec                           := NULL;
7033              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7034              l_rulv_rec.dnz_chr_id                := p_chr_id;
7035              l_rulv_rec.jtot_object1_code         := 'OKX_PPAYTERM';
7036              l_rulv_rec.object1_id1               := TO_CHAR(l_payment_term_id);
7037              l_rulv_rec.object1_id2               := '#';
7038              l_rulv_rec.rule_information_category := 'PTR';
7039              l_rulv_rec.std_template_yn           := 'N';
7040              l_rulv_rec.warn_yn                   := 'N';
7041 
7042              create_rule_group_and_rule(
7043                                          x_return_status => x_return_status,
7044                                          x_msg_count     => x_msg_count,
7045                                          x_msg_data      => x_msg_data,
7046                                          p_rgp_id        => l_rgp_id,
7047                                          p_rgpv_rec      => l_rgpv_rec,
7048                                          p_rulv_rec      => l_rulv_rec,
7049                                          x_rgpv_rec      => x_rgpv_rec,
7050                                          x_rulv_rec      => x_rulv_rec
7051                                         );
7052 
7053              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
7054                  raise line_rule_failed;
7055              END IF;
7056 
7057              IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
7058                 l_rgp_id := x_rgpv_rec.id;
7059              END IF;
7060          END IF;
7061 
7062          IF (p_vendor_paysite_id IS NOT NULL
7063              OR
7064              p_vendor_paysite_name IS NOT NULL) THEN
7065 
7066              l_vendor_paysite_id := get_vendor_paysite(
7067                                                    x_return_status       => x_return_status,
7068                                                    p_contract_number     => p_contract_number,
7069                                                    p_line_number         => p_line_number,
7070                                                    p_vendor_paysite_name => p_vendor_paysite_name,
7071                                                    p_vendor_paysite_id   => p_vendor_paysite_id
7072                                                   );
7073 
7074              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
7075                 raise line_rule_failed;
7076              END IF;
7077 
7078              l_rulv_rec                           := NULL;
7079              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7080              l_rulv_rec.dnz_chr_id                := p_chr_id;
7081              l_rulv_rec.jtot_object1_code         := 'OKX_PAYTO';
7082              l_rulv_rec.object1_id1               := TO_CHAR(l_vendor_paysite_id);
7083              l_rulv_rec.object1_id2               := '#';
7084              l_rulv_rec.rule_information_category := 'PTO';
7085              l_rulv_rec.std_template_yn           := 'N';
7086              l_rulv_rec.warn_yn                   := 'N';
7087 
7088              create_rule_group_and_rule(
7089                                          x_return_status => x_return_status,
7090                                          x_msg_count     => x_msg_count,
7091                                          x_msg_data      => x_msg_data,
7092                                          p_rgp_id        => l_rgp_id,
7093                                          p_rgpv_rec      => l_rgpv_rec,
7094                                          p_rulv_rec      => l_rulv_rec,
7095                                          x_rgpv_rec      => x_rgpv_rec,
7096                                          x_rulv_rec      => x_rulv_rec
7097                                         );
7098 
7099              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
7100                  raise line_rule_failed;
7101              END IF;
7102 
7103              IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
7104                 l_rgp_id := x_rgpv_rec.id;
7105              END IF;
7106          END IF;
7107      END IF; -- line type
7108 */
7109 
7110      IF (p_line_type = 'SERVICE'
7111          AND
7112          p_fee_code IS NOT NULL) THEN
7113 
7114          check_stream_type_code(
7115 	                        x_return_status    => x_return_status,
7116 	                        x_msg_count        => x_msg_count,
7117 	                        x_msg_data         => x_msg_data,
7118 	                        p_stream_type_code => p_fee_code,
7119                                 p_stream_purpose   => p_stream_purpose,
7120 	                        x_id1              => x_stream_id,
7121                                 x_name             => l_service_name
7122 	                       );
7123          l_progress := '1.61';
7124          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
7125             okl_api.set_message(
7126                                 G_APP_NAME,
7127                                 G_INVALID_VALUE,
7128                                 'CONTRACT_NUM',
7129                                 p_contract_number||'/'||p_line_number,
7130                                 'COL_NAME',
7131                                 'FEE_CODE, STREAM_PURPOSE_CODE',
7132                                 'COL_VALUE',
7133                                 p_fee_code||', '||p_stream_purpose
7134                               );
7135 
7136              raise line_rule_failed;
7137          END IF;
7138 
7139          --
7140          -- UDS 10/27
7141          -- Check whether the stream is present in template for this contract
7142          --
7143          l_present_yn := '?';
7144          l_present_yn := OKL_STREAMS_UTIL.strm_tmpt_contains_strm_type
7145                                    (p_khr_id  => p_chr_id,
7146                                     p_sty_id  => x_stream_id
7147                                    );
7148 
7149          IF (l_present_yn <> 'Y') THEN
7150             okl_api.set_message(
7151                                 G_APP_NAME,
7152                                 G_NO_STRM_TMPL,
7153                                 'CONTRACT_NUM',
7154                                 p_contract_number||'/'||p_line_number,
7155                                 'COL_NAME',
7156                                 'FEE_CODE, STREAM_PURPOSE_CODE',
7157                                 'COL_VALUE',
7158                                 p_fee_code||', '||p_stream_purpose
7159                               );
7160 
7161              raise line_rule_failed;
7162 
7163          END IF;
7164 
7165          l_rulv_rec                           := NULL;
7166          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7167          l_rulv_rec.dnz_chr_id                := p_chr_id;
7168          l_rulv_rec.jtot_object1_code         := 'OKL_STRMTYP';
7169          l_rulv_rec.object1_id1               := TO_CHAR(x_stream_id);
7170          l_rulv_rec.object1_id2               := '#';
7171          l_rulv_rec.rule_information_category := 'LASTRM';
7172          l_rulv_rec.std_template_yn           := 'N';
7173          l_rulv_rec.warn_yn                   := 'N';
7174 
7175          create_rule_group_and_rule(
7176                                  x_return_status => x_return_status,
7177                                  x_msg_count     => x_msg_count,
7178                                  x_msg_data      => x_msg_data,
7179                                  p_rgp_id        => l_rgp_id,
7180                                  p_rgpv_rec      => l_rgpv_rec,
7181                                  p_rulv_rec      => l_rulv_rec,
7182                                  x_rgpv_rec      => x_rgpv_rec,
7183                                  x_rulv_rec      => x_rulv_rec
7184                                 );
7185 
7186          l_progress := '1.7';
7187          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
7188              raise line_rule_failed;
7189          END IF;
7190 
7191          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
7192             l_rgp_id := x_rgpv_rec.id;
7193          END IF;
7194 
7195      END IF;
7196 
7197      IF (p_line_type = 'USAGE') THEN
7198 
7199          -- NPR is not supported on 11.5.9
7200          IF (p_usage_type_code = 'NPR') THEN
7201             okl_api.set_message(
7202                                 G_APP_NAME,
7203                                 G_UNSUPPORTED_VALUE,
7204                                 'CONTRACT_NUM',
7205                                 p_contract_number||'/'||p_line_number,
7206                                 'USAGE_TYPE',
7207                                 p_usage_type_code
7208                                );
7209             RAISE line_rule_failed;
7210          END IF;
7211 
7212          l_ok := '?';
7213          OPEN usage_type_csr (p_usage_type_code);
7214          FETCH usage_type_csr INTO l_ok;
7215          CLOSE usage_type_csr;
7216 
7217          IF (l_ok <> 'Y') THEN
7218             okl_api.set_message(
7219                                 G_APP_NAME,
7220                                 G_INVALID_VALUE,
7221                                 'CONTRACT_NUM',
7222                                 p_contract_number,
7223                                 'COL_NAME',
7224                                 'USAGE_TYPE',
7225                                 'COL_VALUE',
7226                                 p_usage_type_code
7227                                );
7228             RAISE line_rule_failed;
7229          END IF;
7230 
7231          IF (p_usage_type_code IN ('VRT', 'QTY')
7232              AND
7233              (p_default_qty_usage IS NULL
7234               OR
7235               p_base_reading IS NULL)) THEN
7236             okl_api.set_message(
7237                                 G_APP_NAME,
7238                                 G_QA_USAGE_CHECK,
7239                                 'LINE_NUM',
7240                                 p_line_number,
7241                                 'USAGE_TYPE',
7242                                 p_usage_type_code
7243                                );
7244             RAISE line_rule_failed;
7245          END IF;
7246 
7247          IF (p_usage_type_code = 'FRT'
7248              AND
7249              p_fixed_usage_quantity IS NULL) THEN
7250             okl_api.set_message(
7251                                 G_APP_NAME,
7252                                 G_QA_FIXED_USAGE,
7253                                 'LINE_NUM',
7254                                 p_line_number,
7255                                 'USAGE_TYPE',
7256                                 p_usage_type_code
7257                                );
7258             RAISE line_rule_failed;
7259          END IF;
7260 
7261          l_rgpv_rec            := NULL;
7262          l_rgp_id              := NULL;
7263          l_rgpv_rec.rgd_code   := 'LAUSBB';
7264          l_rgpv_rec.chr_id     := NULL;
7265          l_rgpv_rec.dnz_chr_id := p_chr_id;
7266          l_rgpv_rec.cle_id     := p_cle_id;
7267          l_rgpv_rec.rgp_type   := 'KRG';
7268 
7269          l_rulv_rec            := NULL;
7270 
7271          IF (p_usage_item_name IS NOT NULL
7272              OR
7273              p_usage_item_id IS NOT NULL) THEN
7274 
7275             get_usage_item_id(
7276                               x_return_status   => x_return_status,
7277                               p_usage_item_name => p_usage_item_name,
7278                               p_usage_item_id   => p_usage_item_id,
7279                               p_org_id          => p_inv_org_id,
7280                               x_usage_item_id   => x_usage_item_id,
7281                               x_usage_id2       => x_usage_id2
7282                              );
7283             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
7284                okl_api.set_message(
7285                                    G_APP_NAME,
7286                                    G_INVALID_VALUE,
7287                                    'CONTRACT_NUM',
7288                                    p_contract_number,
7289                                    'COL_NAME',
7290                                    'USAGE_ITEM_NAME, ID',
7291                                    'COL_VALUE',
7292                                    p_usage_item_name||', '||p_usage_item_id
7293                                   );
7294                RAISE line_rule_failed;
7295             END IF;
7296 
7297             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7298             l_rulv_rec.dnz_chr_id                := p_chr_id;
7299             l_rulv_rec.jtot_object1_code         := 'OKX_USAGE';
7300             l_rulv_rec.object1_id1               := TO_CHAR(x_usage_item_id);
7301             l_rulv_rec.object1_id2               := TO_CHAR(x_usage_id2);
7302             l_rulv_rec.rule_information_category := 'LAUSBB';
7303             l_rulv_rec.std_template_yn           := 'N';
7304             l_rulv_rec.warn_yn                   := 'N';
7305          END IF; -- usage_item
7306 
7307          IF (p_price_list_name IS NOT NULL
7308              OR
7309              p_price_list_id IS NOT NULL) THEN
7310 
7311             get_price_list_id(
7312                               x_return_status   => x_return_status,
7313                               p_price_list_name => p_price_list_name,
7314                               p_price_list_id   => p_price_list_id,
7315                               x_price_list_id   => x_price_list_id
7316                              );
7317 
7318             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
7319                okl_api.set_message(
7320                                    G_APP_NAME,
7321                                    G_INVALID_VALUE,
7322                                    'CONTRACT_NUM',
7323                                    p_contract_number,
7324                                    'COL_NAME',
7325                                    'PRICE_LIST_NAME, ID',
7326                                    'COL_VALUE',
7327                                    p_price_list_name||', '||p_price_list_id
7328                                   );
7329                RAISE line_rule_failed;
7330             END IF;
7331             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7332             l_rulv_rec.dnz_chr_id                := p_chr_id;
7333             l_rulv_rec.jtot_object2_code         := 'OKX_PRICE';
7334             l_rulv_rec.object2_id1               := TO_CHAR(x_price_list_id);
7335             l_rulv_rec.object2_id2               := '#';
7336             l_rulv_rec.rule_information_category := 'LAUSBB';
7337             l_rulv_rec.std_template_yn           := 'N';
7338             l_rulv_rec.warn_yn                   := 'N';
7339          END IF;
7340 
7341          IF (p_minimum_qty_usage IS NOT NULL) THEN
7342 
7343             l_rulv_rec.rule_information1         := TO_CHAR(p_minimum_qty_usage);
7344             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7345             l_rulv_rec.dnz_chr_id                := p_chr_id;
7346             l_rulv_rec.rule_information_category := 'LAUSBB';
7347             l_rulv_rec.std_template_yn           := 'N';
7348             l_rulv_rec.warn_yn                   := 'N';
7349          END IF;
7350 
7351          IF (p_default_qty_usage IS NOT NULL) THEN
7352 
7353             l_rulv_rec.rule_information2         := TO_CHAR(p_default_qty_usage);
7354             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7355             l_rulv_rec.dnz_chr_id                := p_chr_id;
7356             l_rulv_rec.rule_information_category := 'LAUSBB';
7357             l_rulv_rec.std_template_yn           := 'N';
7358             l_rulv_rec.warn_yn                   := 'N';
7359          END IF;
7360 
7361          IF (p_amcv_flag IS NOT NULL) THEN
7362 
7363             l_rulv_rec.rule_information3         := p_amcv_flag;
7364             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7365             l_rulv_rec.dnz_chr_id                := p_chr_id;
7366             l_rulv_rec.rule_information_category := 'LAUSBB';
7367             l_rulv_rec.std_template_yn           := 'N';
7368             l_rulv_rec.warn_yn                   := 'N';
7369          END IF;
7370 
7371          IF (p_level_flag IS NOT NULL) THEN
7372 
7373             l_rulv_rec.rule_information4         := p_level_flag;
7374             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7375             l_rulv_rec.dnz_chr_id                := p_chr_id;
7376             l_rulv_rec.rule_information_category := 'LAUSBB';
7377             l_rulv_rec.std_template_yn           := 'N';
7378             l_rulv_rec.warn_yn                   := 'N';
7379          END IF;
7380 
7381          IF (p_base_reading IS NOT NULL) THEN
7382 
7383             l_rulv_rec.rule_information5         := TO_CHAR(p_base_reading);
7384             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7385             l_rulv_rec.dnz_chr_id                := p_chr_id;
7386             l_rulv_rec.rule_information_category := 'LAUSBB';
7387             l_rulv_rec.std_template_yn           := 'N';
7388             l_rulv_rec.warn_yn                   := 'N';
7389          END IF;
7390 
7391          IF (p_base_reading_uom_code IS NOT NULL) THEN
7392 
7393             get_base_uom_id(
7394                             x_return_status => x_return_status,
7395                             p_base_uom_code => p_base_reading_uom_code,
7396                             x_base_uom_id   => x_base_uom_id
7397                            );
7398 
7399             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
7400                okl_api.set_message(
7401                                    G_APP_NAME,
7402                                    G_INVALID_VALUE,
7403                                    'CONTRACT_NUM',
7404                                    p_contract_number,
7405                                    'COL_NAME',
7406                                    'BASE_READING_UOM_CODE',
7407                                    'COL_VALUE',
7408                                    p_base_reading_uom_code
7409                                   );
7410                RAISE line_rule_failed;
7411             END IF;
7412 
7413             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7414             l_rulv_rec.dnz_chr_id                := p_chr_id;
7415             l_rulv_rec.jtot_object3_code         := 'OKX_TUOM';
7416             l_rulv_rec.object3_id1               := x_base_uom_id;
7417             l_rulv_rec.object3_id2               := '#';
7418             l_rulv_rec.rule_information_category := 'LAUSBB';
7419             l_rulv_rec.std_template_yn           := 'N';
7420             l_rulv_rec.warn_yn                   := 'N';
7421          END IF;
7422 
7423          IF (p_usage_type_code IS NOT NULL) THEN
7424 
7425             l_rulv_rec.rule_information6         := p_usage_type_code;
7426             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7427             l_rulv_rec.dnz_chr_id                := p_chr_id;
7428             l_rulv_rec.rule_information_category := 'LAUSBB';
7429             l_rulv_rec.std_template_yn           := 'N';
7430             l_rulv_rec.warn_yn                   := 'N';
7431          END IF;
7432 
7433          IF (p_fixed_usage_quantity IS NOT NULL) THEN
7434 
7435             l_rulv_rec.rule_information7         := p_fixed_usage_quantity;
7436             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7437             l_rulv_rec.dnz_chr_id                := p_chr_id;
7438             l_rulv_rec.rule_information_category := 'LAUSBB';
7439             l_rulv_rec.std_template_yn           := 'N';
7440             l_rulv_rec.warn_yn                   := 'N';
7441          END IF;
7442 
7443          IF (p_usage_period IS NOT NULL) THEN
7444 
7445             validate_usage_freq(
7446                                 x_return_status   => x_return_status,
7447                                 x_msg_count       => x_msg_count,
7448                                 x_msg_data        => x_msg_data,
7449                                 p_freq            => p_usage_period,
7450                                 p_contract_number => p_contract_number,
7451                                 p_line_number     => p_line_number
7452                                );
7453 
7454             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
7455                 raise line_rule_failed;
7456             END IF;
7457 
7458             l_rulv_rec.rule_information8         := p_usage_period;
7459             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7460             l_rulv_rec.dnz_chr_id                := p_chr_id;
7461             l_rulv_rec.rule_information_category := 'LAUSBB';
7462             l_rulv_rec.std_template_yn           := 'N';
7463             l_rulv_rec.warn_yn                   := 'N';
7464          END IF;
7465 
7466          IF (p_usage_no_of_period IS NOT NULL) THEN
7467 
7468             l_rulv_rec.rule_information9         := p_usage_no_of_period;
7469             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7470             l_rulv_rec.dnz_chr_id                := p_chr_id;
7471             l_rulv_rec.rule_information_category := 'LAUSBB';
7472             l_rulv_rec.std_template_yn           := 'N';
7473             l_rulv_rec.warn_yn                   := 'N';
7474          END IF;
7475 
7476          create_rule_group_and_rule(
7477                                  x_return_status => x_return_status,
7478                                  x_msg_count     => x_msg_count,
7479                                  x_msg_data      => x_msg_data,
7480                                  p_rgp_id        => l_rgp_id,
7481                                  p_rgpv_rec      => l_rgpv_rec,
7482                                  p_rulv_rec      => l_rulv_rec,
7483                                  x_rgpv_rec      => x_rgpv_rec,
7484                                  x_rulv_rec      => x_rulv_rec
7485                                 );
7486 
7487          l_progress := '1.8';
7488          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
7489              raise line_rule_failed;
7490          END IF;
7491 
7492          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
7493             l_rgp_id := x_rgpv_rec.id;
7494          END IF;
7495 
7496      END IF; -- line type USAGE
7497 
7498      IF (p_line_type IN ('SERVICE', 'FEE')) THEN
7499         -- Add new rules, RECURRING EXP
7500 
7501         IF (p_fee_no_of_period IS NOT NULL
7502             AND
7503             p_fee_frequency IS NOT NULL
7504             AND
7505             p_fee_amount_per_period IS NOT NULL) THEN
7506 
7507            okl_contract_top_line_pub.validate_fee_expense_rule(
7508                                                             p_api_version         => 1.0,
7509                                                             p_init_msg_list       => OKL_API.G_FALSE,
7510                                                             x_return_status       => x_return_status,
7511                                                             x_msg_count           => x_msg_count,
7512                                                             x_msg_data            => x_msg_data,
7513                                                             p_chr_id              => p_chr_id,
7514                                                             p_line_id             => p_cle_id,
7515                                                             p_no_of_period        => p_fee_no_of_period,
7516                                                             p_frequency           => p_fee_frequency,
7517                                                             p_amount_per_period   => p_fee_amount_per_period
7518                                                            );
7519 
7520             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
7521                RAISE line_rule_failed;
7522             END IF;
7523 
7524          END IF;
7525 
7526          l_rulv_rec := NULL;
7527 
7528          -- Rule Group LAFEXP
7529          l_rgpv_rec            := NULL;
7530          l_rgp_id              := NULL;
7531          l_rgpv_rec.rgd_code   := 'LAFEXP';
7532          l_rgpv_rec.chr_id     := NULL;
7533          l_rgpv_rec.dnz_chr_id := p_chr_id;
7534          l_rgpv_rec.cle_id     := p_cle_id;
7535          l_rgpv_rec.rgp_type   := 'KRG';
7536 
7537          IF (p_fee_no_of_period IS NOT NULL) THEN
7538 
7539             l_rulv_rec.rule_information1         := p_fee_no_of_period;
7540             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7541             l_rulv_rec.dnz_chr_id                := p_chr_id;
7542             l_rulv_rec.rule_information_category := 'LAFEXP';
7543             l_rulv_rec.std_template_yn           := 'N';
7544             l_rulv_rec.warn_yn                   := 'N';
7545          END IF;
7546 /*
7547          IF (p_fee_frequency IS NOT NULL) THEN
7548 
7549             OPEN freq_csr (p_fee_frequency);
7550             FETCH freq_csr INTO l_freq_id;
7551             CLOSE freq_csr;
7552 
7553             l_rulv_rec.jtot_object1_code         := 'OKL_TUOM';
7554             l_rulv_rec.object1_id1               := l_freq_id;
7555             l_rulv_rec.object1_id2               := '#';
7556             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7557             l_rulv_rec.dnz_chr_id                := p_chr_id;
7558             l_rulv_rec.rule_information_category := 'LAFEXP';
7559             l_rulv_rec.std_template_yn           := 'N';
7560             l_rulv_rec.warn_yn                   := 'N';
7561          END IF;
7562 */
7563 
7564          IF (p_fee_amount_per_period IS NOT NULL) THEN
7565 
7566             l_rulv_rec.rule_information2         := p_fee_amount_per_period;
7567             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7568             l_rulv_rec.dnz_chr_id                := p_chr_id;
7569             l_rulv_rec.rule_information_category := 'LAFEXP';
7570             l_rulv_rec.std_template_yn           := 'N';
7571             l_rulv_rec.warn_yn                   := 'N';
7572          END IF;
7573 
7574          create_rule_group_and_rule(
7575                                     x_return_status => x_return_status,
7576                                     x_msg_count     => x_msg_count,
7577                                     x_msg_data      => x_msg_data,
7578                                     p_rgp_id        => l_rgp_id,
7579                                     p_rgpv_rec      => l_rgpv_rec,
7580                                     p_rulv_rec      => l_rulv_rec,
7581                                     x_rgpv_rec      => x_rgpv_rec,
7582                                     x_rulv_rec      => x_rulv_rec
7583                                    );
7584          l_progress := '1.2';
7585          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
7586              raise line_rule_failed;
7587          END IF;
7588 
7589          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
7590             l_rgp_id := x_rgpv_rec.id;
7591          END IF;
7592 
7593          IF (p_fee_frequency IS NOT NULL) THEN
7594 
7595             OPEN freq_csr (p_fee_frequency);
7596             FETCH freq_csr INTO l_freq_id;
7597             CLOSE freq_csr;
7598 
7599             l_rulv_rec := NULL;
7600 
7601             l_rulv_rec.jtot_object1_code         := 'OKL_TUOM';
7602             l_rulv_rec.object1_id1               := l_freq_id;
7603             l_rulv_rec.object1_id2               := '#';
7604             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7605             l_rulv_rec.dnz_chr_id                := p_chr_id;
7606             l_rulv_rec.rule_information_category := 'LAFREQ';
7607             l_rulv_rec.std_template_yn           := 'N';
7608             l_rulv_rec.warn_yn                   := 'N';
7609 
7610             create_rule_group_and_rule(
7611                                     x_return_status => x_return_status,
7612                                     x_msg_count     => x_msg_count,
7613                                     x_msg_data      => x_msg_data,
7614                                     p_rgp_id        => l_rgp_id,
7615                                     p_rgpv_rec      => l_rgpv_rec,
7616                                     p_rulv_rec      => l_rulv_rec,
7617                                     x_rgpv_rec      => x_rgpv_rec,
7618                                     x_rulv_rec      => x_rulv_rec
7619                                    );
7620             l_progress := '1.2';
7621             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
7622                 raise line_rule_failed;
7623             END IF;
7624 
7625             IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
7626                l_rgp_id := x_rgpv_rec.id;
7627             END IF;
7628          END IF;
7629 
7630      END IF;
7631 
7632 /*
7633      IF (p_line_type = 'ASSET') THEN
7634          -- Rule Group LAHDTX
7635 
7636          l_rgpv_rec            := NULL;
7637          l_rgp_id              := NULL;
7638          l_rgpv_rec.rgd_code   := 'LAHDTX';
7639          l_rgpv_rec.chr_id     := NULL;
7640          l_rgpv_rec.dnz_chr_id := p_chr_id;
7641          l_rgpv_rec.cle_id     := p_cle_id;
7642          l_rgpv_rec.rgp_type   := 'KRG';
7643 
7644          l_rulv_rec := NULL;
7645 
7646          IF (p_prop_tax_applicable IS NOT NULL) THEN
7647             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7648             l_rulv_rec.dnz_chr_id                := p_chr_id;
7649             l_rulv_rec.rule_information1         := p_prop_tax_applicable;
7650             l_rulv_rec.rule_information_category := 'LAPRTX';
7651             l_rulv_rec.std_template_yn           := 'N';
7652             l_rulv_rec.warn_yn                   := 'N';
7653          END IF;
7654 
7655          IF (p_prop_tax_lease_rep IS NOT NULL) THEN
7656             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7657             l_rulv_rec.dnz_chr_id                := p_chr_id;
7658             l_rulv_rec.rule_information2         := p_prop_tax_lease_rep;
7659             l_rulv_rec.rule_information_category := 'LAPRTX';
7660             l_rulv_rec.std_template_yn           := 'N';
7661             l_rulv_rec.warn_yn                   := 'N';
7662          END IF;
7663 
7664          create_rule_group_and_rule(
7665                                     x_return_status => x_return_status,
7666                                     x_msg_count     => x_msg_count,
7667                                     x_msg_data      => x_msg_data,
7668                                     p_rgp_id        => l_rgp_id,
7669                                     p_rgpv_rec      => l_rgpv_rec,
7670                                     p_rulv_rec      => l_rulv_rec,
7671                                     x_rgpv_rec      => x_rgpv_rec,
7672                                     x_rulv_rec      => x_rulv_rec
7673                                    );
7674 
7675          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
7676              raise line_rule_failed;
7677          END IF;
7678 
7679          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
7680             l_rgp_id := x_rgpv_rec.id;
7681          END IF;
7682 
7683          l_rulv_rec := NULL;
7684 
7685      END IF;
7686 */
7687 
7688      RETURN;
7689 
7690    EXCEPTION
7691 
7692      WHEN line_rule_failed THEN
7693          x_return_status := OKL_API.G_RET_STS_ERROR;
7694          debug_message('Line rule failed : '||l_progress);
7695 
7696       WHEN OTHERS THEN
7697         okl_api.set_message(
7698                             G_APP_NAME,
7699                             G_UNEXPECTED_ERROR,
7700                             'OKL_SQLCODE',
7701                             SQLCODE,
7702                             'OKL_SQLERRM',
7703                             SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
7704                            );
7705 
7706         x_return_status := OKL_API.G_RET_STS_ERROR;
7707         debug_message('line other : '||l_progress);
7708 
7709    END create_line_rules;
7710 
7711 ------------------------------------------------------------------------------
7712 -- FUNCTION get_lien_holder
7713 -- It returns lien_holder_id from name and
7714 -- stacks Error, if any, and returns ERROR status to calling process.
7715 -- Calls:
7716 -- Called By:
7717 ------------------------------------------------------------------------------
7718    FUNCTION get_lien_holder(
7719                 x_return_status    OUT NOCOPY VARCHAR2,
7720                 p_lien_holder_name IN  okl_header_interface.lien_holder_name%TYPE,
7721                 p_lien_holder_id   IN  okl_header_interface.lien_holder_id%TYPE
7722                )
7723    RETURN VARCHAR2 IS
7724    CURSOR lien_csr (p_id   NUMBER,
7725                     p_name VARCHAR2) IS
7726    SELECT id1
7727    FROM   okx_parties_v
7728    WHERE  ((name = p_name
7729             AND
7730             p_name IS NOT NULL)
7731             OR
7732             (id1  = p_id
7733              AND
7734              p_id IS NOT NULL
7735             )
7736            );
7737 
7738    l_id   NUMBER;
7739    BEGIN
7740      x_return_status := OKL_API.G_RET_STS_SUCCESS;
7741 
7742      OPEN lien_csr (p_lien_holder_id,
7743                     p_lien_holder_name);
7744      FETCH lien_csr INTO l_id;
7745      IF lien_csr%NOTFOUND THEN
7746         x_return_status := OKL_API.G_RET_STS_ERROR;
7747         RETURN NULL;
7748      END IF;
7749 
7750      CLOSE lien_csr;
7751      RETURN TO_CHAR(l_id);
7752 
7753    END get_lien_holder;
7754 
7755 ------------------------------------------------------------------------------
7756 -- FUNCTION get_late_policy_id
7757 -- It returns late_policy_id for corresponding policy_code
7758 -- stacks Error, if any, and returns ERROR status to calling process.
7759 -- Calls:
7760 -- Called By:
7761 ------------------------------------------------------------------------------
7762    FUNCTION get_late_policy_id(
7763                    x_return_status    OUT NOCOPY VARCHAR2,
7764                    p_late_policy_code IN  okl_header_interface.late_charge_product_code%TYPE,
7765                    p_org_id           IN  NUMBER,
7766                    p_late_policy_type IN  VARCHAR2
7767                   )
7768    RETURN VARCHAR2 IS
7769    CURSOR policy_csr (p_policy_code VARCHAR2,
7770                       p_org_id      NUMBER,
7771                       p_policy_type VARCHAR2) IS
7772    SELECT id
7773    FROM   okl_late_policies_v
7774    WHERE  name = p_policy_code
7775    AND    org_id = p_org_id
7776    AND    ( late_policy_type_code = 'LCT'
7777             OR
7778             late_policy_type_code = p_policy_type );
7779 
7780    l_id   NUMBER;
7781    BEGIN
7782      x_return_status := OKL_API.G_RET_STS_SUCCESS;
7783 
7784      OPEN policy_csr (p_late_policy_code,
7785                       p_org_id,
7786                       p_late_policy_type
7787                      );
7788      FETCH policy_csr INTO l_id;
7789      IF policy_csr%NOTFOUND THEN
7790         x_return_status := OKL_API.G_RET_STS_ERROR;
7791         RETURN NULL;
7792      END IF;
7793 
7794      CLOSE policy_csr;
7795      RETURN TO_CHAR(l_id);
7796 
7797    END get_late_policy_id;
7798 
7799 ------------------------------------------------------------------------------
7800 -- PROCEDURE get_cash_appl_rule_id
7801 -- It validates and get cash application rule ID from rule name
7802 -- Calls:
7803 -- Called By:
7804 --   create_header_rule
7805 ------------------------------------------------------------------------------
7806    PROCEDURE get_cash_appl_rule_id (
7807                                     x_return_status           OUT NOCOPY VARCHAR2,
7808                                     x_msg_count               OUT NOCOPY NUMBER,
7809                                     x_msg_data                OUT NOCOPY VARCHAR2,
7810                                     p_contract_number         IN  OKL_HEADER_INTERFACE.CONTRACT_NUMBER_OLD%TYPE,
7811                                     p_org_id                  IN  OKC_K_HEADERS_V.AUTHORING_ORG_ID%TYPE,
7812                                     p_cash_appl_rule_name     IN  OKL_HEADER_INTERFACE.CASH_APPL_RULE_NAME%TYPE,
7813                                     x_cash_appl_rule_id       OUT NOCOPY OKL_BPD_ACTIVE_CSH_RLS_V.ID1%TYPE
7814                                    ) IS
7815 
7816    cursor cash_csr (p_rule_name VARCHAR2,
7817                     p_org_id    NUMBER) IS
7818    SELECT id1
7819    FROM   okl_bpd_active_csh_rls_v
7820    WHERE  name           = p_rule_name
7821    AND    org_id         = p_org_id
7822    AND    TRUNC(SYSDATE) BETWEEN NVL(TRUNC(START_DATE),TRUNC(SYSDATE)) AND
7823                                  NVL(TRUNC(END_DATE),TRUNC(SYSDATE));
7824    cash_failed EXCEPTION;
7825    l_proc_name VARCHAR2(35) := 'GET_CASH_APPL_RULE_ID';
7826 
7827    BEGIN
7828 
7829      x_return_status := OKL_API.G_RET_STS_SUCCESS;
7830      debug_message(l_proc_name);
7831 
7832      OPEN cash_csr (p_cash_appl_rule_name,
7833                     p_org_id);
7834      FETCH cash_csr INTO x_cash_appl_rule_id;
7835      IF cash_csr%NOTFOUND THEN
7836         RAISE cash_failed;
7837      END IF;
7838      CLOSE cash_csr;
7839 
7840    EXCEPTION
7841       WHEN cash_failed THEN
7842 
7843         IF (cash_csr%ISOPEN) THEN
7844           CLOSE cash_csr;
7845         END IF;
7846 
7847         okl_api.set_message(
7848                             G_APP_NAME,
7849                             G_INVALID_VALUE,
7850                             'CONTRACT_NUM',
7851                             p_contract_number,
7852                             'COL_NAME',
7853                             'CASH_APPL_RULE_NAME',
7854                             'COL_VALUE',
7855                             p_cash_appl_rule_name
7856                            );
7857        x_return_status := OKL_API.G_RET_STS_ERROR;
7858 
7859       WHEN OTHERS THEN
7860 
7861         okl_api.set_message(
7862                             G_APP_NAME,
7863                             G_UNEXPECTED_ERROR,
7864                             'OKL_SQLCODE',
7865                             SQLCODE,
7866                             'OKL_SQLERRM',
7867                             SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
7868                            );
7869 
7870         x_return_status := OKL_API.G_RET_STS_ERROR;
7871    END get_cash_appl_rule_id;
7872 
7873 function get_formula_id(p_name IN VARCHAR2,
7874                         x_return_status OUT NOCOPY VARCHAR2) RETURN NUMBER IS
7875 l_formula_id number := 0;
7876 begin
7877   x_return_status := OKC_API.G_RET_STS_SUCCESS;
7878   select id
7879   INTO   l_formula_id
7880   FROM   OKL_FORMULAE_B
7881   WHERE  NAME = p_name;
7882 
7883   return(l_formula_id);
7884   EXCEPTION WHEN OTHERS THEN
7885     x_return_status := OKC_API.G_RET_STS_ERROR;
7886     return(l_formula_id); -- 5024651
7887 end;
7888 
7889 ------------------------------------------------------------------------------
7890 -- PROCEDURE create_header_rules
7891 -- It creates rules for header record and
7892 -- stacks Error, if any, and returns ERROR status to calling process.
7893 -- Calls:
7894 --   get_customer_account_id
7895 --   get_bill_to_address_id
7896 --   get_bank_account_id
7897 --   get_invoice_format_id
7898 --   get_payment_method_id
7899 -- Called By:
7900 --   load_input_record
7901 ------------------------------------------------------------------------------
7902    PROCEDURE create_header_rules(
7903                                 x_return_status              OUT NOCOPY VARCHAR2,
7904                                 x_msg_count                  OUT NOCOPY NUMBER,
7905                                 x_msg_data                   OUT NOCOPY VARCHAR2,
7906                                 p_chr_id                     IN  OKC_K_HEADERS_V.ID%TYPE,
7907                                 p_template_id                IN  OKC_K_HEADERS_V.ID%TYPE,
7908                                 p_header_rec                 IN  intf_h_rec_type
7909                                ) IS
7910 
7911    header_rule_failed    EXCEPTION;
7912    l_proc_name           VARCHAR2(35) := 'CREATE_HEADER_RULES';
7913 
7914    x_customer_account_id OKX_CUSTOMER_ACCOUNTS_V.ID1%TYPE;
7915    x_bill_to_address_id  OKX_CUST_SITE_USES_V.ID1%TYPE;
7916    x_bank_account_id     OKX_RCPT_METHOD_ACCOUNTS_V.ID1%TYPE;
7917    x_invoice_format_id   OKL_INVOICE_FORMATS_V.ID%TYPE;
7918    x_payment_method_id   OKX_RECEIPT_METHODS_V.ID1%TYPE;
7919    x_invoice_format_name okl_invoice_formats_v.name%TYPE;
7920    x_index_id            okl_indices.id%TYPE;
7921 
7922    l_rgd_code            OKC_RULE_GROUPS_V.RGD_CODE%TYPE;
7923    l_rgp_type            OKC_RULE_GROUPS_V.RGP_TYPE%TYPE;
7924 
7925    l_chr_id              OKC_RULE_GROUPS_V.CHR_ID%TYPE;
7926    l_dnz_chr_id          OKC_RULE_GROUPS_V.DNZ_CHR_ID%TYPE;
7927    l_cle_id              OKC_RULE_GROUPS_V.CLE_ID%TYPE;
7928    l_rgp_id              OKC_RULE_GROUPS_V.ID%TYPE;
7929    l_jtot_object1_code   OKC_RULES_V.JTOT_OBJECT1_CODE%TYPE;
7930    l_object1_id1         OKC_RULES_V.OBJECT1_ID1%TYPE;
7931    l_rule_info1          OKC_RULES_V.RULE_INFORMATION1%TYPE;
7932    l_rule_info2          OKC_RULES_V.RULE_INFORMATION2%TYPE;
7933    l_rule_info_catg      OKC_RULES_V.RULE_INFORMATION_CATEGORY%TYPE;
7934    --l_rgp_id              NUMBER;
7935 
7936    -- Rule Rec
7937    x_rgpv_rec         rgpv_rec_type;
7938    l_rgpv_rec         rgpv_rec_type;
7939 
7940    l_rulv_rec         rulv_rec_type;
7941    x_rulv_rec         rulv_rec_type;
7942 
7943    l_rule_count       NUMBER := 0;
7944    l_rulv_tbl         rulv_tbl_type;
7945 
7946    CURSOR temp_role_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
7947  --Fixed # Bug 5484903
7948   SELECT object1_id1
7949    FROM   okc_k_party_roles_b
7950    WHERE  dnz_chr_id            = p_chr_id
7951    AND    chr_id                = dnz_chr_id
7952    AND    jtot_object1_code = 'OKX_PARTY'
7953    AND    rle_code          = 'LESSEE';
7954 
7955    l_customer_id NUMBER;
7956 
7957    l_rebook_limit_date VARCHAR2(100);
7958    l_security_deposit_hold_flag  VARCHAR2(450); -- same as rule segment datatype
7959    l_security_deposit_net_flag   VARCHAR2(450);
7960    l_security_deposit_date       VARCHAR2(450);
7961    l_renewal_notice_days         VARCHAR2(450);
7962    l_renewal_option              VARCHAR2(450);
7963    l_renewal_amount              VARCHAR2(450);
7964    l_late_interest_held_date     VARCHAR2(450);
7965    l_late_interest_exempt_flag   VARCHAR2(450);
7966    l_late_int_product_code       VARCHAR2(450);
7967    l_late_int_product_id         VARCHAR2(450);
7968    l_late_charge_held_until_date VARCHAR2(450);
7969    l_late_charge_product_code    VARCHAR2(450);
7970    l_late_charge_product_id      VARCHAR2(450);
7971    l_late_charge_exempt_flag     VARCHAR2(450);
7972    l_variable_rate               VARCHAR2(450);
7973    l_convert_type                VARCHAR2(450);
7974    l_conversion_method           VARCHAR2(450);
7975    l_date_of_conversion          VARCHAR2(450);
7976    l_convert_by_date             VARCHAR2(450);
7977    l_variable_method             VARCHAR2(450);
7978    l_index_name                  VARCHAR2(450);
7979    l_index_id                    VARCHAR2(450);
7980    l_base_rate                   VARCHAR2(450);
7981    l_adder                       VARCHAR2(450);
7982    l_minimum_rate                VARCHAR2(450);
7983    l_maximum_rate                VARCHAR2(450);
7984    l_tolerance                   VARCHAR2(450);
7985    l_adjustment_frequency        VARCHAR2(450);
7986    l_days_in_year                VARCHAR2(450);
7987    l_days_in_month               VARCHAR2(450);
7988    l_interest_method             VARCHAR2(450);
7989    l_interest_start_date         VARCHAR2(450);
7990    l_method_of_calculation       VARCHAR2(450);
7991    l_formula_name                VARCHAR2(450);
7992    l_factoring_date              VARCHAR2(450);
7993    l_factoring_percentage        VARCHAR2(450);
7994    l_factoring_discount_rate     VARCHAR2(450);
7995    l_evergreen_eligible_flag     VARCHAR2(450);
7996    l_bill_to_address_id          VARCHAR2(450);
7997    l_bill_to_address             VARCHAR2(450);
7998    l_reason_for_invoice_review   VARCHAR2(450);
7999    l_invoice_review_until_date   VARCHAR2(450);
8000    l_review_invoice_flag         VARCHAR2(450);
8001    l_print_lead_days             VARCHAR2(450);--hariven bug 5359935
8002    l_capitalize_flag             VARCHAR2(450);
8003    l_non_notification_flag       VARCHAR2(450);
8004    l_rvi_rate                    VARCHAR2(450);
8005    l_rvi_auto_calculate_flag     VARCHAR2(450);
8006    l_tax_withholding_flag        VARCHAR2(450);
8007    l_tax_calc_formula_name       VARCHAR2(450);
8008    l_tax_owner                   VARCHAR2(450);
8009    l_private_activity_bond_flag  VARCHAR2(450);
8010    l_floor_price_formula         VARCHAR2(450);
8011    l_remkt_sale_price_formula    VARCHAR2(450);
8012    l_repurchase_quote_option     VARCHAR2(450);
8013    l_repurchase_quote_formula    VARCHAR2(450);
8014    l_sale_price_option           VARCHAR2(450);
8015    l_sale_price_amount           VARCHAR2(450);
8016    l_sale_price_formula          VARCHAR2(450);
8017    l_sale_price_prorate          VARCHAR2(450);
8018    l_discount_rate_option        VARCHAR2(450);
8019    l_discount_rate_amount        VARCHAR2(450);
8020    l_discount_rate_formula       VARCHAR2(450);
8021    l_discount_rate_prorate       VARCHAR2(450);
8022    l_quote_fee_option            VARCHAR2(450);
8023    l_quote_fee_amount            VARCHAR2(450);
8024    l_quote_fee_formula           VARCHAR2(450);
8025    l_quote_fee_prorate           VARCHAR2(450);
8026    l_ert_purchase_opt            VARCHAR2(450);
8027    l_ert_purchase_opt_type       VARCHAR2(450);
8028    l_ert_purchase_opt_amount     VARCHAR2(450);
8029    l_ert_purchase_opt_formula    VARCHAR2(450);
8030    l_ert_purchase_opt_prorate    VARCHAR2(450);
8031    l_ert_purchase_opt_max_opt    VARCHAR2(450);
8032    l_ert_purchase_opt_max_amt    VARCHAR2(450);
8033    l_ert_purchase_opt_max_formula VARCHAR2(450);
8034    l_ert_purchase_opt_min_opt    VARCHAR2(450);
8035    l_ert_purchase_opt_min_amt    VARCHAR2(450);
8036    l_ert_purchase_opt_min_formula VARCHAR2(450);
8037    l_eot_purchase_opt            VARCHAR2(450);
8038    l_eot_purchase_opt_type       VARCHAR2(450);
8039    l_eot_purchase_opt_amount     VARCHAR2(450);
8040    l_eot_purchase_opt_formula    VARCHAR2(450);
8041    l_eot_purchase_opt_prorate    VARCHAR2(450);
8042    l_eot_purchase_opt_max_opt    VARCHAR2(450);
8043    l_eot_purchase_opt_max_amt    VARCHAR2(450);
8044    l_eot_purchase_opt_max_formula VARCHAR2(450);
8045    l_eot_purchase_opt_min_opt    VARCHAR2(450);
8046    l_eot_purchase_opt_min_amt    VARCHAR2(450);
8047    l_eot_purchase_opt_min_formula VARCHAR2(450);
8048    l_tqp_erl_term_alwd_flag       VARCHAR2(450);
8049    l_tqp_prt_term_alwd_flag       VARCHAR2(450);
8050    l_quote_effective_days          VARCHAR2(450);
8051    l_quote_eff_max_days            VARCHAR2(450);
8052    l_eot_tolerance_days            VARCHAR2(450);
8053    l_prt_termination_approval_req  VARCHAR2(450);
8054    l_prt_termination_allowed_flag  VARCHAR2(450);
8055    l_gain_loss_approval_req        VARCHAR2(450);
8056    l_gain_loss_net_quote_opt       VARCHAR2(450);
8057    l_gain_loss_net_quote_amt       VARCHAR2(450);
8058    l_gain_loss_net_quote_formula   VARCHAR2(450);
8059    l_gain_loss_tolrn_allwd         VARCHAR2(450);
8060    l_quote_approver_contract_role  VARCHAR2(450);
8061    l_quote_rcpt_contract_role      VARCHAR2(450);
8062    l_quote_crtsy_cp_cntrc_role     VARCHAR2(450);
8063    l_ert_quote_calc_term_option    VARCHAR2(450);
8064    l_ert_quote_calc_term_formula   VARCHAR2(450);
8065    l_ert_contract_oblig_opt        VARCHAR2(450);
8066    l_ert_contract_oblig_amount     VARCHAR2(450);
8067    l_ert_contract_oblig_formula    VARCHAR2(450);
8068    l_ert_contract_oblig_prorate    VARCHAR2(450);
8069    l_ert_disc_rate_opt             VARCHAR2(450);
8070    l_ert_disc_rate_amount          VARCHAR2(450);
8071    l_ert_disc_rate_formula         VARCHAR2(450);
8072    l_ert_disc_rate_prorate         VARCHAR2(450);
8073    l_ert_quote_fee_opt             VARCHAR2(450);
8074    l_ert_quote_fee_amount          VARCHAR2(450);
8075    l_ert_quote_fee_formula         VARCHAR2(450);
8076    l_ert_quote_fee_prorate         VARCHAR2(450);
8077    l_ert_return_fee_option         VARCHAR2(450);
8078    l_ert_return_fee_amount         VARCHAR2(450);
8079    l_ert_return_fee_formula        VARCHAR2(450);
8080    l_ert_return_fee_prorate        VARCHAR2(450);
8081    l_ert_roll_inctv_option         VARCHAR2(450);
8082    l_ert_roll_inctv_amount         VARCHAR2(450);
8083    l_ert_roll_inctv_formula        VARCHAR2(450);
8084    l_ert_roll_inctv_prorate        VARCHAR2(450);
8085    l_ert_secu_dep_dispo_option     VARCHAR2(450);
8086    l_ert_secu_dep_dispo_amount     VARCHAR2(450);
8087    l_ert_secu_dep_dispo_formula    VARCHAR2(450);
8088    l_ert_secu_dep_dispo_prorate    VARCHAR2(450);
8089    l_ert_term_penalty_option       VARCHAR2(450);
8090    l_ert_term_penalty_amount       VARCHAR2(450);
8091    l_ert_term_penalty_formula      VARCHAR2(450);
8092    l_ert_term_penalty_prorate      VARCHAR2(450);
8093    l_ert_term_penalty_cap_option   VARCHAR2(450);
8094    l_ert_term_penalty_cap_amount   VARCHAR2(450);
8095    l_ert_term_penalty_cap_formula  VARCHAR2(450);
8096    l_ert_est_prop_tax_option       VARCHAR2(450);
8097    l_ert_est_prop_tax_amount       VARCHAR2(450);
8098    l_ert_est_prop_tax_formula      VARCHAR2(450);
8099    l_ert_est_prop_tax_prorate      VARCHAR2(450);
8100    l_ert_contr_fees_option         VARCHAR2(450);
8101    l_ert_outstnd_bal_option        VARCHAR2(450);
8102    l_ert_serv_mant_option          VARCHAR2(450);
8103    l_eot_quote_calc_term_option    VARCHAR2(450);
8104    l_eot_quote_calc_term_formula   VARCHAR2(450);
8105    l_eot_contract_oblig_opt        VARCHAR2(450);
8106    l_eot_contract_oblig_amount     VARCHAR2(450);
8107    l_eot_contract_oblig_formula    VARCHAR2(450);
8108    l_eot_contract_oblig_prorate    VARCHAR2(450);
8109    l_eot_disc_rate_opt             VARCHAR2(450);
8110    l_eot_disc_rate_amount          VARCHAR2(450);
8111    l_eot_disc_rate_formula         VARCHAR2(450);
8112    l_eot_disc_rate_prorate         VARCHAR2(450);
8113    l_eot_quote_fee_opt             VARCHAR2(450);
8114    l_eot_quote_fee_amount          VARCHAR2(450);
8115    l_eot_quote_fee_formula         VARCHAR2(450);
8116    l_eot_quote_fee_prorate         VARCHAR2(450);
8117    l_eot_return_fee_option         VARCHAR2(450);
8118    l_eot_return_fee_amount         VARCHAR2(450);
8119    l_eot_return_fee_formula        VARCHAR2(450);
8120    l_eot_return_fee_prorate        VARCHAR2(450);
8121    l_eot_roll_inctv_option         VARCHAR2(450);
8122    l_eot_roll_inctv_amount         VARCHAR2(450);
8123    l_eot_roll_inctv_formula        VARCHAR2(450);
8124    l_eot_roll_inctv_prorate        VARCHAR2(450);
8125    l_eot_secu_dep_dispo_option     VARCHAR2(450);
8126    l_eot_secu_dep_dispo_amount     VARCHAR2(450);
8127    l_eot_secu_dep_dispo_formula    VARCHAR2(450);
8128    l_eot_secu_dep_dispo_prorate    VARCHAR2(450);
8129    l_eot_term_penalty_option       VARCHAR2(450);
8130    l_eot_term_penalty_amount       VARCHAR2(450);
8131    l_eot_term_penalty_formula      VARCHAR2(450);
8132    l_eot_term_penalty_prorate      VARCHAR2(450);
8133    l_eot_term_penalty_cap_option   VARCHAR2(450);
8134    l_eot_term_penalty_cap_amount   VARCHAR2(450);
8135    l_eot_term_penalty_cap_formula  VARCHAR2(450);
8136    l_eot_est_prop_tax_option       VARCHAR2(450);
8137    l_eot_est_prop_tax_amount       VARCHAR2(450);
8138    l_eot_est_prop_tax_formula      VARCHAR2(450);
8139    l_eot_est_prop_tax_prorate      VARCHAR2(450);
8140    l_eot_contr_fees_option         VARCHAR2(450);
8141    l_eot_outstnd_bal_option        VARCHAR2(450);
8142    l_eot_serv_mant_option          VARCHAR2(450);
8143    l_evergreen_passthru_fees       VARCHAR2(450);
8144    l_evergreen_passthru_percent    VARCHAR2(450);
8145    l_lien_type                     VARCHAR2(450);
8146    l_filing_number                 VARCHAR2(450);
8147    l_filing_date                   VARCHAR2(450);
8148    l_filing_status                 VARCHAR2(450);
8149    l_lien_holder_name              VARCHAR2(450);
8150    l_lien_holder_id                VARCHAR2(450);
8151    l_jurisdiction                  VARCHAR2(450);
8152    l_sub_jurisdiction              VARCHAR2(450);
8153    l_lien_expiration_date          VARCHAR2(450);
8154    l_lien_continuation_number      VARCHAR2(450);
8155    l_lien_continuation_date        VARCHAR2(450);
8156    l_title_type                    VARCHAR2(450);
8157    l_title_issuer_name             VARCHAR2(450);
8158    l_title_issuer_id               VARCHAR2(450);
8159    x_title_issuer_id               NUMBER;
8160    l_title_date                    VARCHAR2(450);
8161    l_title_number                  VARCHAR2(450);
8162    l_registration_number           VARCHAR2(450);
8163    l_location                      VARCHAR2(450);
8164    l_title_custodian_name          VARCHAR2(450);
8165    l_title_custodian_id            VARCHAR2(450);
8166    x_title_custodian_id            NUMBER;
8167    l_payee_site                    VARCHAR2(450);
8168    l_registration_location         VARCHAR2(450);
8169    l_reg_expiration_date           VARCHAR2(450);
8170    l_prtfl_approval_req            VARCHAR2(450);
8171    l_prtfl_assgn_group             VARCHAR2(450);
8172    l_prtfl_budget_amt_opt          VARCHAR2(450);
8173    l_prtfl_budget_fixed_amt        VARCHAR2(450);
8174    l_prtfl_budget_amt_formula      VARCHAR2(450);
8175    l_prtfl_days_from_con_expr      VARCHAR2(450);
8176    l_prtfl_strategy                VARCHAR2(450);
8177    l_prop_tax_applicable           VARCHAR2(450);
8178    l_prop_tax_lease_rep            VARCHAR2(450);
8179    l_mex_tax_sub_basic_wthld       VARCHAR2(450);
8180    l_mex_tax_calc_formula          VARCHAR2(450);
8181    l_aus_tax_stamp_duty            VARCHAR2(450);
8182 
8183 -- Added by rravikir (Fix for Bug 3947959)
8184    l_prop_tax_bill_method          VARCHAR2(35);
8185 -- End
8186 
8187    -- AKP new rules added 4067094
8188 
8189    l_gain_loss_tolrnc_allwd_amt     NUMBER;
8190    l_gain_loss_tolrnc_allwd_frml    VARCHAR2(150);
8191    l_gain_loss_tolrnc_basis         VARCHAR2(30);
8192    l_gain_loss_apprv_proc_frml      VARCHAR2(150);
8193    l_ert_absorbed_fee_frml          VARCHAR2(150);
8194    l_ert_expense_fee_frml           VARCHAR2(150);
8195    l_ert_financed_fee_frml          VARCHAR2(150);
8196    l_ert_general_fee_frml           VARCHAR2(150);
8197    l_ert_income_fee_frml            VARCHAR2(150);
8198    l_ert_misc_fee_frml              VARCHAR2(150);
8199    l_ert_passthru_fee_frml          VARCHAR2(150);
8200    l_ert_rollover_fee_frml          VARCHAR2(150);
8201    l_eot_absorbed_fee_frml          VARCHAR2(150);
8202    l_eot_expense_fee_frml           VARCHAR2(150);
8203    l_eot_financed_fee_frml          VARCHAR2(150);
8204    l_eot_general_fee_frml           VARCHAR2(150);
8205    l_eot_income_fee_frml            VARCHAR2(150);
8206    l_eot_misc_fee_frml              VARCHAR2(150);
8207    l_eot_passthru_fee_frml          VARCHAR2(150);
8208    l_eot_rollover_fee_frml          VARCHAR2(150);
8209 
8210    -- AKP new rules added 4067094
8211 
8212    l_st_upd_lines_from_contract     VARCHAR2(450);
8213    l_st_interest_disclosed          VARCHAR2(450);
8214    l_st_transfer_of_title           VARCHAR2(450);
8215    l_st_sale_and_lease_back         VARCHAR2(450);
8216    l_st_purchase_of_lease           VARCHAR2(450);
8217    l_st_equipment_usage             VARCHAR2(450);
8218    l_st_equipment_age               VARCHAR2(450);
8219    l_st_asset_upfront_tax           VARCHAR2(450);
8220    l_st_bill_stream_type_code       VARCHAR2(450);
8221    l_st_bill_stream_purpose_code    VARCHAR2(450);
8222    l_st_fin_stream_type_code        VARCHAR2(450);
8223    l_st_fin_stream_purpose_code     VARCHAR2(450);
8224    l_st_cap_stream_type_code        VARCHAR2(450);
8225    l_st_cap_stream_purpose_code     VARCHAR2(450);
8226    l_st_bill_stream_id              NUMBER;
8227    l_st_fin_stream_id               NUMBER;
8228    l_st_cap_stream_id               NUMBER;
8229 
8230    l_st_tax_schedule_applies_flag   VARCHAR2(450); -- R12 ebTax change
8231 
8232    l_id1                            OKL_STRMTYP_SOURCE_V.id1%TYPE;
8233    l_st_stream_name                 OKL_STRMTYP_SOURCE_V.name%TYPE;
8234    l_send_bill_sale                 VARCHAR2(150);
8235    l_manual_quotes_only             VARCHAR2(150);
8236    l_first_termination_date         VARCHAR2(150);
8237    l_quote_rcpt_addl_rcpt_role      VARCHAR2(30);
8238    l_quote_rcpt_alloc_ptg           NUMBER;
8239    l_quote_apprvr_adv_notice_role   VARCHAR2(30);
8240    l_quote_approver_delay_days      NUMBER;
8241    l_ert_serv_mant_frml             VARCHAR2(150);
8242    l_eot_serv_mant_frml             VARCHAR2(150);
8243 
8244 
8245 
8246    x_cash_appl_rule_id             OKL_BPD_ACTIVE_CSH_RLS_V.ID1%TYPE;
8247 
8248    l_rate_counter NUMBER := 1;
8249    l_tmpl_rate_rec krpv_rec_type;
8250    l_k_rate_tbl    krpv_tbl_type;
8251    l_no_data       BOOLEAN := TRUE;
8252    x_krpv_rec      krpv_rec_type;
8253    l_formula_id    NUMBER;
8254 
8255    l_progress         VARCHAR2(5) := '1.0';
8256 
8257    -- Bug 4655611
8258    SUBTYPE fee_types_rec_type IS OKL_MAINTAIN_FEE_PVT.fee_types_rec_type;
8259    l_fee_types_rec fee_types_rec_type;
8260    x_fee_types_rec fee_types_rec_type;
8261 
8262    l_contract_number            okc_k_headers_b.contract_number%TYPE;
8263    l_contract_start_date        okc_k_headers_b.start_date%TYPE;
8264    l_rvi_stream_type_id         okl_strmtyp_source_v.id1%TYPE;
8265 
8266    CURSOR contract_csr (p_contract_id NUMBER) is
8267    SELECT contract_number, start_date
8268    FROM   okl_k_headers_full_v
8269    WHERE  id = p_contract_id;
8270 
8271    CURSOR rvi_stream_csr (p_sty_id number, p_contract_start_date date) IS
8272    SELECT 'Y'
8273    FROM   okl_stream_types_uv STL
8274    WHERE  STL.id = p_sty_id
8275    AND    STL.start_date <= p_contract_start_date
8276    AND   (STL.end_date >= p_contract_start_date OR STL.end_date IS NULL);
8277 
8278    l_yn                         VARCHAR2(1) := 'N';
8279    l_rvi_stream_code OKL_HEADER_INTERFACE.RVI_STREAM_CODE%TYPE;
8280    l_rvi_stream_purpose_code OKL_HEADER_INTERFACE.RVI_STREAM_PURPOSE_CODE%TYPE;
8281    l_rvi_stream_name OKL_STRMTYP_SOURCE_V.NAME%TYPE;
8282 
8283    -- Bug 4655611
8284 
8285    l_eot_auto_proc_purchase_opt VARCHAR2(1);
8286 
8287    --R12B eBTax
8288    CURSOR c_tax_schedule_yn IS
8289    SELECT tax_schedule_yn
8290    FROM   okl_system_params;
8291 
8292    l_tax_schedule_yn VARCHAR2(1);
8293 
8294    BEGIN
8295 
8296       x_return_status := OKL_API.G_RET_STS_SUCCESS;
8297 
8298       --
8299       -- Always Create Re-leased asset rule
8300       -- with value = 'N'
8301       --
8302 /* Created at line creation
8303       l_rgpv_rec            := NULL;
8304       l_rgp_id              := NULL;
8305 
8306       l_rgpv_rec.rgd_code   := 'LARLES';
8307       l_rgpv_rec.chr_id     := p_chr_id;
8308       l_rgpv_rec.dnz_chr_id := p_chr_id;
8309       l_rgpv_rec.cle_id     := NULL;
8310       l_rgpv_rec.rgp_type   := 'KRG';
8311 
8312       l_rulv_rec                           := NULL;
8313 
8314       l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
8315       l_rulv_rec.dnz_chr_id                := p_chr_id;
8316       l_rulv_rec.rule_information_category := 'LARLES';
8317       l_rulv_rec.rule_information1         := 'N';
8318       l_rulv_rec.std_template_yn           := 'N';
8319       l_rulv_rec.warn_yn                   := 'N';
8320 
8321       create_rule_group_and_rule(
8322                               x_return_status => x_return_status,
8323                               x_msg_count     => x_msg_count,
8324                               x_msg_data      => x_msg_data,
8325                               p_rgp_id        => l_rgp_id,
8326                               p_rgpv_rec      => l_rgpv_rec,
8327                               p_rulv_rec      => l_rulv_rec,
8328                               x_rgpv_rec      => x_rgpv_rec,
8329                               x_rulv_rec      => x_rulv_rec
8330                              );
8331 
8332       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8333           raise header_rule_failed;
8334       END IF;
8335 
8336       debug_message('------>Rule: LARLES/LARLES processed');
8337 */
8338 
8339 /* Rule Migration
8340       IF (p_header_rec.customer_account_id IS NOT NULL
8341           OR
8342           p_header_rec.customer_account_number IS NOT NULL ) THEN
8343 
8344           get_customer_account_id(
8345                                   x_return_status           => x_return_status,
8346                                   x_msg_count               => x_msg_count,
8347                                   x_msg_data                => x_msg_data,
8348                                   p_contract_number         => p_header_rec.contract_number,
8349                                   p_customer_id             => g_customer_id,
8350                                   p_customer_account_id     => p_header_rec.customer_account_id,
8351                                   p_customer_account_number => p_header_rec.customer_account_number,
8352                                   x_customer_account_id     => x_customer_account_id
8353                                  );
8354          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8355             x_return_status := OKL_API.G_RET_STS_ERROR;
8356             raise header_rule_failed;
8357          END IF;
8358 
8359          g_customer_account_id := x_customer_account_id; -- Used to get Bill to address at Terms Interface
8360          l_progress := '1.1';
8361       ELSE
8362          IF (p_header_rec.template_number IS NOT NULL) THEN
8363 
8364             l_rule_count := 0;
8365             get_contract_rules(
8366                                x_return_status  => x_return_status,
8367                                x_msg_count      => x_msg_count,
8368                                x_msg_data       => x_msg_data,
8369                                p_chr_id         => p_template_id,
8370                                p_cle_id         => NULL,
8371                                p_rgd_code       => 'LACAN',
8372                                p_rule_code      => 'CAN',
8373                                x_rulv_tbl       => l_rulv_tbl,
8374                                x_rule_count     => l_rule_count
8375                               );
8376 
8377             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8378                RAISE header_rule_failed;
8379             END IF;
8380 
8381             IF (l_rule_count > 0) THEN
8382                x_customer_account_id := TO_NUMBER(l_rulv_tbl(1).object1_id1);
8383                g_customer_account_id := x_customer_account_id; -- Used to get Bill to address at Terms Interface
8384 
8385                get_customer_account_id(
8386                                   x_return_status           => x_return_status,
8387                                   x_msg_count               => x_msg_count,
8388                                   x_msg_data                => x_msg_data,
8389                                   p_contract_number         => p_header_rec.contract_number,
8390                                   p_customer_id             => g_customer_id,
8391                                   p_customer_account_id     => x_customer_account_id,
8392                                   p_customer_account_number => NULL,
8393                                   x_customer_account_id     => x_customer_account_id
8394                                  );
8395                 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8396                    x_return_status := OKL_API.G_RET_STS_ERROR;
8397                    raise header_rule_failed;
8398                 END IF;
8399 
8400             END IF;
8401 
8402          END IF;
8403 
8404       END IF;
8405 
8406       IF (x_customer_account_id IS NOT NULL) THEN
8407 
8408          l_rgpv_rec            := NULL;
8409          l_rgp_id              := NULL;
8410 
8411          l_rgpv_rec.rgd_code   := 'LACAN';
8412          l_rgpv_rec.chr_id     := p_chr_id;
8413          l_rgpv_rec.dnz_chr_id := p_chr_id;
8414          l_rgpv_rec.cle_id     := NULL;
8415          l_rgpv_rec.rgp_type   := 'KRG';
8416 
8417          l_rulv_rec                           := NULL;
8418 
8419          l_rulv_rec.object1_id1               := TO_CHAR(x_customer_account_id);
8420          l_rulv_rec.object1_id2               := '#';
8421          l_rulv_rec.jtot_object1_code         := 'OKX_CUSTACCT';
8422          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
8423          l_rulv_rec.dnz_chr_id                := p_chr_id;
8424          l_rulv_rec.rule_information_category := 'CAN';
8425          l_rulv_rec.std_template_yn           := 'N';
8426          l_rulv_rec.warn_yn                   := 'N';
8427 
8428          create_rule_group_and_rule(
8429                                  x_return_status => x_return_status,
8430                                  x_msg_count     => x_msg_count,
8431                                  x_msg_data      => x_msg_data,
8432                                  p_rgp_id        => l_rgp_id,
8433                                  p_rgpv_rec      => l_rgpv_rec,
8434                                  p_rulv_rec      => l_rulv_rec,
8435                                  x_rgpv_rec      => x_rgpv_rec,
8436                                  x_rulv_rec      => x_rulv_rec
8437                                 );
8438 
8439          l_progress := '1.3';
8440 
8441          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8442              raise header_rule_failed;
8443          END IF;
8444 
8445          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
8446             l_rgp_id := x_rgpv_rec.id;
8447          END IF;
8448 
8449       END IF; -- x_customer_account_id
8450 
8451       debug_message('------>Rule: LACAN/CAN processed');
8452 */
8453 
8454       IF (p_header_rec.rebook_limit_date IS NULL) THEN
8455          IF (p_header_rec.template_number IS NOT NULL) THEN
8456 
8457             get_contract_rules(
8458                                x_return_status  => x_return_status,
8459                                x_msg_count      => x_msg_count,
8460                                x_msg_data       => x_msg_data,
8461                                p_chr_id         => p_template_id,
8462                                p_cle_id         => NULL,
8463                                p_rgd_code       => 'LAREBL',
8464                                p_rule_code      => 'LAREBL',
8465                                x_rulv_tbl       => l_rulv_tbl,
8466                                x_rule_count     => l_rule_count
8467                               );
8468 
8469             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8470                RAISE header_rule_failed;
8471             END IF;
8472 
8473             IF (l_rule_count > 0) THEN
8474                l_rebook_limit_date := l_rulv_tbl(1).rule_information1;
8475             END IF;
8476          END IF;
8477       ELSE
8478          l_rebook_limit_date := get_canonical_date(p_header_rec.rebook_limit_date);
8479       END IF;
8480 
8481       IF (l_rebook_limit_date IS NOT NULL) THEN
8482 
8483          l_rgpv_rec            := NULL;
8484          l_rgp_id              := NULL;
8485          l_rgpv_rec.rgd_code   := 'LAREBL';
8486          l_rgpv_rec.chr_id     := p_chr_id;
8487          l_rgpv_rec.dnz_chr_id := p_chr_id;
8488          l_rgpv_rec.cle_id     := NULL;
8489          l_rgpv_rec.rgp_type   := 'KRG';
8490 
8491          l_rulv_rec                           := NULL;
8492 
8493          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
8494          l_rulv_rec.dnz_chr_id                := p_chr_id;
8495          l_rulv_rec.rule_information1         := l_rebook_limit_date;
8496          l_rulv_rec.rule_information_category := 'LAREBL';
8497          l_rulv_rec.std_template_yn           := 'N';
8498          l_rulv_rec.warn_yn                   := 'N';
8499 
8500 
8501          create_rule_group_and_rule(
8502                                  x_return_status => x_return_status,
8503                                  x_msg_count     => x_msg_count,
8504                                  x_msg_data      => x_msg_data,
8505                                  p_rgp_id        => l_rgp_id,
8506                                  p_rgpv_rec      => l_rgpv_rec,
8507                                  p_rulv_rec      => l_rulv_rec,
8508                                  x_rgpv_rec      => x_rgpv_rec,
8509                                  x_rulv_rec      => x_rulv_rec
8510                                 );
8511 
8512          l_progress := '1.5';
8513 
8514          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8515              raise header_rule_failed;
8516          END IF;
8517 
8518          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
8519             l_rgp_id := x_rgpv_rec.id;
8520          END IF;
8521 
8522       END IF; -- rebook limit
8523 
8524       debug_message('------>Rule: LAREBL/LAREBL processed');
8525 
8526 /* Not used currently - 05/20/2002
8527 
8528       --Rule Group LATROP
8529 
8530       l_rgpv_rec            := NULL;
8531       l_rgp_id              := NULL;
8532       l_rgpv_rec.rgd_code   := 'LATROP';
8533       l_rgpv_rec.chr_id     := p_chr_id;
8534       l_rgpv_rec.dnz_chr_id := p_chr_id;
8535       l_rgpv_rec.cle_id     := NULL;
8536       l_rgpv_rec.rgp_type   := 'KRG';
8537 
8538       l_rulv_rec            := NULL;
8539       IF (p_header_rec.end_of_term_option IS NOT NULL) THEN
8540 
8541          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
8542          l_rulv_rec.dnz_chr_id                := p_chr_id;
8543          l_rulv_rec.rule_information1         := p_header_rec.end_of_term_option;
8544          l_rulv_rec.rule_information_category := 'LAEOTR';
8545          l_rulv_rec.std_template_yn           := 'N';
8546          l_rulv_rec.warn_yn                   := 'N';
8547 
8548       END IF;
8549 
8550       IF (p_header_rec.end_of_term_amount IS NOT NULL) THEN
8551          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
8552          l_rulv_rec.dnz_chr_id                := p_chr_id;
8553          l_rulv_rec.rule_information2         := TO_CHAR(p_header_rec.end_of_term_amount);
8554          l_rulv_rec.rule_information_category := 'LAEOTR';
8555          l_rulv_rec.std_template_yn           := 'N';
8556          l_rulv_rec.warn_yn                   := 'N';
8557 
8558       END IF;
8559 
8560       create_rule_group_and_rule(
8561                                  x_return_status => x_return_status,
8562                                  x_msg_count     => x_msg_count,
8563                                  x_msg_data      => x_msg_data,
8564                                  p_rgp_id        => l_rgp_id,
8565                                  p_rgpv_rec      => l_rgpv_rec,
8566                                  p_rulv_rec      => l_rulv_rec,
8567                                  x_rgpv_rec      => x_rgpv_rec,
8568                                  x_rulv_rec      => x_rulv_rec
8569                                 );
8570 
8571       l_progress := '1.7';
8572 
8573       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8574           raise header_rule_failed;
8575       END IF;
8576 
8577       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
8578          l_rgp_id := x_rgpv_rec.id;
8579       END IF;
8580 
8581       l_rulv_rec := NULL;
8582 
8583       IF (p_header_rec.mid_term_option IS NOT NULL) THEN
8584          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
8585          l_rulv_rec.dnz_chr_id                := p_chr_id;
8586          l_rulv_rec.rule_information1         := p_header_rec.mid_term_option;
8587          l_rulv_rec.rule_information_category := 'LAMITR';
8588          l_rulv_rec.std_template_yn           := 'N';
8589          l_rulv_rec.warn_yn                   := 'N';
8590       END IF;
8591 
8592       IF (p_header_rec.mid_term_amount IS NOT NULL) THEN
8593          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
8594          l_rulv_rec.dnz_chr_id                := p_chr_id;
8595          l_rulv_rec.rule_information2         := TO_CHAR(p_header_rec.mid_term_amount);
8596          l_rulv_rec.rule_information_category := 'LAMITR';
8597          l_rulv_rec.std_template_yn           := 'N';
8598          l_rulv_rec.warn_yn                   := 'N';
8599       END IF;
8600 
8601       create_rule_group_and_rule(
8602                                  x_return_status => x_return_status,
8603                                  x_msg_count     => x_msg_count,
8604                                  x_msg_data      => x_msg_data,
8605                                  p_rgp_id        => l_rgp_id,
8606                                  p_rgpv_rec      => l_rgpv_rec,
8607                                  p_rulv_rec      => l_rulv_rec,
8608                                  x_rgpv_rec      => x_rgpv_rec,
8609                                  x_rulv_rec      => x_rulv_rec
8610                                 );
8611 
8612       l_progress := '1.8';
8613 
8614       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8615           raise header_rule_failed;
8616       END IF;
8617 
8618       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
8619          l_rgp_id := x_rgpv_rec.id;
8620       END IF;
8621 
8622 --Not used currently - 05/20/2002
8623 */
8624 
8625       -- RUle Group LASDEP
8626       l_rgpv_rec            := NULL;
8627       l_rgp_id              := NULL;
8628       l_rgpv_rec.rgd_code   := 'LASDEP';
8629       l_rgpv_rec.chr_id     := p_chr_id;
8630       l_rgpv_rec.dnz_chr_id := p_chr_id;
8631       l_rgpv_rec.cle_id     := NULL;
8632       l_rgpv_rec.rgp_type   := 'KRG';
8633 
8634       l_rulv_rec            := NULL;
8635       --l_rulv_tbl            := NULL;
8636 
8637       l_security_deposit_hold_flag := p_header_rec.security_deposit_hold_flag;
8638       l_security_deposit_net_flag  := p_header_rec.security_deposit_net_flag;
8639       l_security_deposit_date      := get_canonical_date(p_header_rec.security_deposit_date);
8640 
8641       IF (l_security_deposit_hold_flag IS NULL
8642           OR
8643           l_security_deposit_net_flag IS NULL
8644           OR
8645           l_security_deposit_date IS NULL
8646           AND
8647           p_header_rec.template_number IS NOT NULL) THEN
8648 
8649          get_contract_rules(
8650                             x_return_status  => x_return_status,
8651                             x_msg_count      => x_msg_count,
8652                             x_msg_data       => x_msg_data,
8653                             p_chr_id         => p_template_id,
8654                             p_cle_id         => NULL,
8655                             p_rgd_code       => 'LASDEP',
8656                             p_rule_code      => 'LASDEP',
8657                             x_rulv_tbl       => l_rulv_tbl,
8658                             x_rule_count     => l_rule_count
8659                            );
8660 
8661          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8662             RAISE header_rule_failed;
8663          END IF;
8664 
8665          IF (l_rule_count > 0) THEN
8666             l_security_deposit_hold_flag := NVL(l_security_deposit_hold_flag,l_rulv_tbl(1).rule_information2);
8667             l_security_deposit_net_flag  := NVL(l_security_deposit_net_flag,l_rulv_tbl(1).rule_information4);
8668             l_security_deposit_date      := NVL(l_security_deposit_date,l_rulv_tbl(1).rule_information5);
8669          END IF;
8670       END IF;
8671 
8672       IF (l_security_deposit_hold_flag IS NOT NULL ) THEN
8673          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
8674          l_rulv_rec.dnz_chr_id                := p_chr_id;
8675          l_rulv_rec.rule_information2         := l_security_deposit_hold_flag;
8676          l_rulv_rec.rule_information_category := 'LASDEP';
8677          l_rulv_rec.std_template_yn           := 'N';
8678          l_rulv_rec.warn_yn                   := 'N';
8679       END IF;
8680 
8681       IF (l_security_deposit_net_flag IS NOT NULL) THEN
8682          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
8683          l_rulv_rec.dnz_chr_id                := p_chr_id;
8684          l_rulv_rec.rule_information4         := l_security_deposit_net_flag;
8685          l_rulv_rec.rule_information_category := 'LASDEP';
8686          l_rulv_rec.std_template_yn           := 'N';
8687          l_rulv_rec.warn_yn                   := 'N';
8688       END IF;
8689 
8690       IF (l_security_deposit_date IS NOT NULL) THEN
8691          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
8692          l_rulv_rec.dnz_chr_id                := p_chr_id;
8693          l_rulv_rec.rule_information5         := l_security_deposit_date;
8694          l_rulv_rec.rule_information_category := 'LASDEP';
8695          l_rulv_rec.std_template_yn           := 'N';
8696          l_rulv_rec.warn_yn                   := 'N';
8697       END IF;
8698 
8699       create_rule_group_and_rule(
8700                                  x_return_status => x_return_status,
8701                                  x_msg_count     => x_msg_count,
8702                                  x_msg_data      => x_msg_data,
8703                                  p_rgp_id        => l_rgp_id,
8704                                  p_rgpv_rec      => l_rgpv_rec,
8705                                  p_rulv_rec      => l_rulv_rec,
8706                                  x_rgpv_rec      => x_rgpv_rec,
8707                                  x_rulv_rec      => x_rulv_rec
8708                                 );
8709 
8710       l_progress := '1.9';
8711 
8712       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8713           raise header_rule_failed;
8714       END IF;
8715 
8716       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
8717          l_rgp_id := x_rgpv_rec.id;
8718       END IF;
8719 
8720       debug_message('------>Rule: LASDEP/LASDEP processed');
8721 
8722       -- Rule Group LARNOP
8723       l_rgpv_rec            := NULL;
8724       l_rgp_id              := NULL;
8725       l_rgpv_rec.rgd_code   := 'LARNOP';
8726       l_rgpv_rec.chr_id     := p_chr_id;
8727       l_rgpv_rec.dnz_chr_id := p_chr_id;
8728       l_rgpv_rec.cle_id     := NULL;
8729       l_rgpv_rec.rgp_type   := 'KRG';
8730 
8731       l_rulv_rec            := NULL;
8732 
8733       l_renewal_notice_days := p_header_rec.renewal_notice_days;
8734       IF (l_renewal_notice_days IS NULL
8735           AND
8736           p_header_rec.template_number IS NOT NULL) THEN
8737 
8738          get_contract_rules(
8739                             x_return_status  => x_return_status,
8740                             x_msg_count      => x_msg_count,
8741                             x_msg_data       => x_msg_data,
8742                             p_chr_id         => p_template_id,
8743                             p_cle_id         => NULL,
8744                             p_rgd_code       => 'LARNOP',
8745                             p_rule_code      => 'LAREND',
8746                             x_rulv_tbl       => l_rulv_tbl,
8747                             x_rule_count     => l_rule_count
8748                            );
8749 
8750          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8751             RAISE header_rule_failed;
8752          END IF;
8753 
8754          IF (l_rule_count > 0) THEN
8755             l_renewal_notice_days := l_rulv_tbl(1).rule_information1;
8756          END IF;
8757      END IF;
8758 
8759      IF (l_renewal_notice_days IS NOT NULL) THEN
8760          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
8761          l_rulv_rec.dnz_chr_id                := p_chr_id;
8762          l_rulv_rec.rule_information1         := l_renewal_notice_days;
8763          l_rulv_rec.rule_information_category := 'LAREND';
8764          l_rulv_rec.std_template_yn           := 'N';
8765          l_rulv_rec.warn_yn                   := 'N';
8766       END IF;
8767 
8768       create_rule_group_and_rule(
8769                                  x_return_status => x_return_status,
8770                                  x_msg_count     => x_msg_count,
8771                                  x_msg_data      => x_msg_data,
8772                                  p_rgp_id        => l_rgp_id,
8773                                  p_rgpv_rec      => l_rgpv_rec,
8774                                  p_rulv_rec      => l_rulv_rec,
8775                                  x_rgpv_rec      => x_rgpv_rec,
8776                                  x_rulv_rec      => x_rulv_rec
8777                                 );
8778 
8779       l_progress := '1.10';
8780 
8781       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8782           raise header_rule_failed;
8783       END IF;
8784 
8785       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
8786          l_rgp_id := x_rgpv_rec.id;
8787       END IF;
8788 
8789       debug_message('------>Rule: LARNOP/LAREND processed');
8790       l_rulv_rec := NULL;
8791 
8792       l_renewal_option := p_header_rec.renewal_option;
8793       l_renewal_amount := TO_CHAR(p_header_rec.renewal_amount);
8794 
8795       IF (l_renewal_option IS NULL
8796           OR
8797           l_renewal_amount IS NULL
8798           AND
8799           p_header_rec.template_number IS NOT NULL) THEN
8800 
8801          get_contract_rules(
8802                             x_return_status  => x_return_status,
8803                             x_msg_count      => x_msg_count,
8804                             x_msg_data       => x_msg_data,
8805                             p_chr_id         => p_template_id,
8806                             p_cle_id         => NULL,
8807                             p_rgd_code       => 'LARNOP',
8808                             p_rule_code      => 'LARNEW',
8809                             x_rulv_tbl       => l_rulv_tbl,
8810                             x_rule_count     => l_rule_count
8811                            );
8812 
8813          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8814             RAISE header_rule_failed;
8815          END IF;
8816 
8817          IF (l_rule_count > 0) THEN
8818             l_renewal_option := NVL(l_renewal_option,l_rulv_tbl(1).rule_information1);
8819             l_renewal_amount := NVL(l_renewal_amount,l_rulv_tbl(1).rule_information2);
8820          END IF;
8821       END IF;
8822 
8823       IF (l_renewal_option IS NOT NULL) THEN
8824          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
8825          l_rulv_rec.dnz_chr_id                := p_chr_id;
8826          l_rulv_rec.rule_information1         := l_renewal_option;
8827          l_rulv_rec.rule_information_category := 'LARNEW';
8828          l_rulv_rec.std_template_yn           := 'N';
8829          l_rulv_rec.warn_yn                   := 'N';
8830       END IF;
8831 
8832       IF (l_renewal_amount IS NOT NULL) THEN
8833          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
8834          l_rulv_rec.dnz_chr_id                := p_chr_id;
8835          l_rulv_rec.rule_information2         := l_renewal_amount;
8836          l_rulv_rec.rule_information_category := 'LARNEW';
8837          l_rulv_rec.std_template_yn           := 'N';
8838          l_rulv_rec.warn_yn                   := 'N';
8839       END IF;
8840 
8841       create_rule_group_and_rule(
8842                                  x_return_status => x_return_status,
8843                                  x_msg_count     => x_msg_count,
8844                                  x_msg_data      => x_msg_data,
8845                                  p_rgp_id        => l_rgp_id,
8846                                  p_rgpv_rec      => l_rgpv_rec,
8847                                  p_rulv_rec      => l_rulv_rec,
8848                                  x_rgpv_rec      => x_rgpv_rec,
8849                                  x_rulv_rec      => x_rulv_rec
8850                                 );
8851 
8852       l_progress := '1.11';
8853 
8854       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8855           raise header_rule_failed;
8856       END IF;
8857 
8858       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
8859          l_rgp_id := x_rgpv_rec.id;
8860       END IF;
8861 
8862       debug_message('------>Rule: LARNOP/LARNEW processed');
8863       -- Rule Group LALIGR
8864 
8865       l_rgpv_rec            := NULL;
8866       l_rgp_id              := NULL;
8867       l_rgpv_rec.rgd_code   := 'LALIGR';
8868       l_rgpv_rec.chr_id     := p_chr_id;
8869       l_rgpv_rec.dnz_chr_id := p_chr_id;
8870       l_rgpv_rec.cle_id     := NULL;
8871       l_rgpv_rec.rgp_type   := 'KRG';
8872 
8873       l_rulv_rec := NULL;
8874 
8875       l_late_interest_held_date := get_canonical_date(p_header_rec.late_interest_held_until_date);
8876 
8877       IF (l_late_interest_held_date IS NULL
8878           AND
8879           p_header_rec.template_number IS NOT NULL) THEN
8880          get_contract_rules(
8881                             x_return_status  => x_return_status,
8882                             x_msg_count      => x_msg_count,
8883                             x_msg_data       => x_msg_data,
8884                             p_chr_id         => p_template_id,
8885                             p_cle_id         => NULL,
8886                             p_rgd_code       => 'LALIGR',
8887                             p_rule_code      => 'LAHUDT',
8888                             x_rulv_tbl       => l_rulv_tbl,
8889                             x_rule_count     => l_rule_count
8890                            );
8891 
8892          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8893             RAISE header_rule_failed;
8894          END IF;
8895 
8896          IF (l_rule_count > 0) THEN
8897             l_late_interest_held_date := l_rulv_tbl(1).rule_information1;
8898          END IF;
8899       END IF;
8900 
8901       IF (l_late_interest_held_date IS NOT NULL) THEN
8902          l_rulv_rec                           := NULL;
8903          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
8904          l_rulv_rec.dnz_chr_id                := p_chr_id;
8905          l_rulv_rec.rule_information1         := l_late_interest_held_date;
8906          l_rulv_rec.rule_information_category := 'LAHUDT';
8907          l_rulv_rec.std_template_yn           := 'N';
8908          l_rulv_rec.warn_yn                   := 'N';
8909       END IF;
8910 
8911       create_rule_group_and_rule(
8912                                  x_return_status => x_return_status,
8913                                  x_msg_count     => x_msg_count,
8914                                  x_msg_data      => x_msg_data,
8915                                  p_rgp_id        => l_rgp_id,
8916                                  p_rgpv_rec      => l_rgpv_rec,
8917                                  p_rulv_rec      => l_rulv_rec,
8918                                  x_rgpv_rec      => x_rgpv_rec,
8919                                  x_rulv_rec      => x_rulv_rec
8920                                 );
8921 
8922       l_progress := '1.11';
8923 
8924       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8925           raise header_rule_failed;
8926       END IF;
8927 
8928      -- IF (l_rgp_id IS NULL) THEN
8929      IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- rviriyal bug #6310553
8930          l_rgp_id := x_rgpv_rec.id;
8931       END IF;
8932 
8933       debug_message('------>Rule: LALIGR/LAHUDT processed');
8934       l_rulv_rec := NULL;  -- dedey    added for bug 4637513
8935 
8936       l_late_interest_exempt_flag := p_header_rec.late_interest_exempt_flag;
8937 
8938       IF (l_late_interest_exempt_flag IS NULL
8939           AND
8940           p_header_rec.template_number IS NOT NULL) THEN
8941          get_contract_rules(
8942                             x_return_status  => x_return_status,
8943                             x_msg_count      => x_msg_count,
8944                             x_msg_data       => x_msg_data,
8945                             p_chr_id         => p_template_id,
8946                             p_cle_id         => NULL,
8947                             p_rgd_code       => 'LALIGR',
8948                             p_rule_code      => 'LALIEX',
8949                             x_rulv_tbl       => l_rulv_tbl,
8950                             x_rule_count     => l_rule_count
8951                            );
8952 
8953          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8954             RAISE header_rule_failed;
8955          END IF;
8956 
8957          IF (l_rule_count > 0) THEN
8958             l_late_interest_exempt_flag := l_rulv_tbl(1).rule_information1;
8959          END IF;
8960       END IF;
8961 
8962       IF (l_late_interest_exempt_flag IS NOT NULL) THEN
8963          l_rulv_rec                           := NULL;
8964          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
8965          l_rulv_rec.dnz_chr_id                := p_chr_id;
8966          l_rulv_rec.rule_information1         := l_late_interest_exempt_flag;
8967          l_rulv_rec.rule_information_category := 'LALIEX';
8968          l_rulv_rec.std_template_yn           := 'N';
8969          l_rulv_rec.warn_yn                   := 'N';
8970       END IF;
8971 
8972       create_rule_group_and_rule(
8973                                  x_return_status => x_return_status,
8974                                  x_msg_count     => x_msg_count,
8975                                  x_msg_data      => x_msg_data,
8976                                  p_rgp_id        => l_rgp_id,
8977                                  p_rgpv_rec      => l_rgpv_rec,
8978                                  p_rulv_rec      => l_rulv_rec,
8979                                  x_rgpv_rec      => x_rgpv_rec,
8980                                  x_rulv_rec      => x_rulv_rec
8981                                 );
8982 
8983       l_progress := '1.11';
8984 
8985       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8986           raise header_rule_failed;
8987       END IF;
8988 
8989       --IF (l_rgp_id IS NULL) THEN
8990      IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- rviriyal bug #6310553
8991          l_rgp_id := x_rgpv_rec.id;
8992       END IF;
8993 
8994       debug_message('------>Rule: LALIGR/LALIEX processed');
8995       l_rulv_rec := NULL;   -- dedey    added for bug 4637513
8996 
8997       l_late_int_product_code := p_header_rec.late_interest_product_code;
8998       l_late_int_product_id   := NULL;
8999 
9000       IF (l_late_int_product_code IS NULL
9001           AND
9002           p_header_rec.template_number IS NOT NULL) THEN
9003          get_contract_rules(
9004                             x_return_status  => x_return_status,
9005                             x_msg_count      => x_msg_count,
9006                             x_msg_data       => x_msg_data,
9007                             p_chr_id         => p_template_id,
9008                             p_cle_id         => NULL,
9009                             p_rgd_code       => 'LALIGR',
9010                             p_rule_code      => 'LALCIN',
9011                             x_rulv_tbl       => l_rulv_tbl,
9012                             x_rule_count     => l_rule_count
9013                            );
9014 
9015          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9016             RAISE header_rule_failed;
9017          END IF;
9018 
9019          IF (l_rule_count > 0) THEN
9020             l_late_int_product_id  := l_rulv_tbl(1).rule_information1;
9021          END IF;
9022       END IF;
9023 
9024       IF (l_late_int_product_code IS NOT NULL) THEN
9025          l_late_int_product_id := get_late_policy_id(
9026                                                         x_return_status    => x_return_status,
9027                                                         p_late_policy_code => l_late_int_product_code,
9028                                                         p_org_id           => p_header_rec.authoring_org_id,
9029                                                         p_late_policy_type => 'INT'
9030                                                        );
9031 
9032          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9033              okl_api.set_message(
9034                     G_APP_NAME,
9035                     G_INVALID_VALUE,
9036                     'CONTRACT_NUM',
9037                     p_header_rec.contract_number_old,
9038                     'COL_NAME',
9039                     'LATE_INTEREST_PRODUCT_CODE',
9040                     'COL_VALUE',
9041                     l_late_int_product_code
9042                    );
9043              raise header_rule_failed;
9044          END IF;
9045 
9046       END IF;
9047 
9048       IF (l_late_int_product_id IS NOT NULL) THEN
9049          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9050          l_rulv_rec.dnz_chr_id                := p_chr_id;
9051          l_rulv_rec.rule_information1         := l_late_int_product_id;
9052          l_rulv_rec.rule_information_category := 'LALCIN';
9053          l_rulv_rec.std_template_yn           := 'N';
9054          l_rulv_rec.warn_yn                   := 'N';
9055       END IF;
9056 
9057       create_rule_group_and_rule(
9058                                  x_return_status => x_return_status,
9059                                  x_msg_count     => x_msg_count,
9060                                  x_msg_data      => x_msg_data,
9061                                  p_rgp_id        => l_rgp_id,
9062                                  p_rgpv_rec      => l_rgpv_rec,
9063                                  p_rulv_rec      => l_rulv_rec,
9064                                  x_rgpv_rec      => x_rgpv_rec,
9065                                  x_rulv_rec      => x_rulv_rec
9066                                 );
9067       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9068           raise header_rule_failed;
9069       END IF;
9070 
9071       --IF (l_rgp_id IS NULL) THEN
9072       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- rviriyal bug #6310553
9073          l_rgp_id := x_rgpv_rec.id;
9074       END IF;
9075 
9076       debug_message('------>Rule: LALIGR/LALCIN processed');
9077 
9078       -- Rule Group LALCGR
9079       l_rgpv_rec            := NULL;
9080       l_rgp_id              := NULL;
9081       l_rgpv_rec.rgd_code   := 'LALCGR';
9082       l_rgpv_rec.chr_id     := p_chr_id;
9083       l_rgpv_rec.dnz_chr_id := p_chr_id;
9084       l_rgpv_rec.cle_id     := NULL;
9085       l_rgpv_rec.rgp_type   := 'KRG';
9086 
9087       l_rulv_rec            := NULL;
9088 
9089       l_late_charge_held_until_date := get_canonical_date(p_header_rec.late_charge_held_until_date);
9090 
9091       IF (l_late_charge_held_until_date IS NULL
9092           AND
9093           p_header_rec.template_number IS NOT NULL) THEN
9094          get_contract_rules(
9095                             x_return_status  => x_return_status,
9096                             x_msg_count      => x_msg_count,
9097                             x_msg_data       => x_msg_data,
9098                             p_chr_id         => p_template_id,
9099                             p_cle_id         => NULL,
9100                             p_rgd_code       => 'LALCGR',
9101                             p_rule_code      => 'LAHUDT',
9102                             x_rulv_tbl       => l_rulv_tbl,
9103                             x_rule_count     => l_rule_count
9104                            );
9105 
9106          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9107             RAISE header_rule_failed;
9108          END IF;
9109 
9110          IF (l_rule_count > 0) THEN
9111             l_late_charge_held_until_date := l_rulv_tbl(1).rule_information1;
9112          END IF;
9113       END IF;
9114 
9115       IF (l_late_charge_held_until_date IS NOT NULL) THEN
9116          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9117          l_rulv_rec.dnz_chr_id                := p_chr_id;
9118          l_rulv_rec.rule_information1         := l_late_charge_held_until_date;
9119          l_rulv_rec.rule_information_category := 'LAHUDT';
9120          l_rulv_rec.std_template_yn           := 'N';
9121          l_rulv_rec.warn_yn                   := 'N';
9122       END IF;
9123 
9124       create_rule_group_and_rule(
9125                                  x_return_status => x_return_status,
9126                                  x_msg_count     => x_msg_count,
9127                                  x_msg_data      => x_msg_data,
9128                                  p_rgp_id        => l_rgp_id,
9129                                  p_rgpv_rec      => l_rgpv_rec,
9130                                  p_rulv_rec      => l_rulv_rec,
9131                                  x_rgpv_rec      => x_rgpv_rec,
9132                                  x_rulv_rec      => x_rulv_rec
9133                                 );
9134 
9135       l_progress := '1.12';
9136 
9137       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9138           raise header_rule_failed;
9139       END IF;
9140 
9141       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- Bug 5085099
9142          l_rgp_id := x_rgpv_rec.id;
9143       END IF;
9144 
9145       debug_message('------>Rule: LALCGR/LAHUDT processed');
9146       l_rulv_rec := NULL;
9147       l_late_charge_product_code := p_header_rec.late_charge_product_code;
9148       l_late_charge_product_id   := NULL;
9149 
9150       IF (l_late_charge_product_code IS NULL
9151           AND
9152           p_header_rec.template_number IS NOT NULL) THEN
9153          get_contract_rules(
9154                             x_return_status  => x_return_status,
9155                             x_msg_count      => x_msg_count,
9156                             x_msg_data       => x_msg_data,
9157                             p_chr_id         => p_template_id,
9158                             p_cle_id         => NULL,
9159                             p_rgd_code       => 'LALCGR',
9160                             p_rule_code      => 'LALCPR',
9161                             x_rulv_tbl       => l_rulv_tbl,
9162                             x_rule_count     => l_rule_count
9163                            );
9164 
9165          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9166             RAISE header_rule_failed;
9167          END IF;
9168 
9169          IF (l_rule_count > 0) THEN
9170             l_late_charge_product_id  := l_rulv_tbl(1).rule_information1;
9171          END IF;
9172       END IF;
9173 
9174       IF (l_late_charge_product_code IS NOT NULL) THEN
9175          l_late_charge_product_id := get_late_policy_id(
9176                                                         x_return_status    => x_return_status,
9177                                                         p_late_policy_code => l_late_charge_product_code,
9178                                                         p_org_id           => p_header_rec.authoring_org_id,
9179                                                         p_late_policy_type => 'CHG'
9180                                                        );
9181          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9182              okl_api.set_message(
9183                     G_APP_NAME,
9184                     G_INVALID_VALUE,
9185                     'CONTRACT_NUM',
9186                     p_header_rec.contract_number_old,
9187                     'COL_NAME',
9188                     'LATE_CHARGE_PRODUCT_CODE',
9189                     'COL_VALUE',
9190                     l_late_charge_product_code
9191                    );
9192              raise header_rule_failed;
9193          END IF;
9194 
9195       END IF;
9196 
9197       IF (l_late_charge_product_id IS NOT NULL) THEN
9198          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9199          l_rulv_rec.dnz_chr_id                := p_chr_id;
9200          l_rulv_rec.rule_information1         := l_late_charge_product_id;
9201          l_rulv_rec.rule_information_category := 'LALCPR';
9202          l_rulv_rec.std_template_yn           := 'N';
9203          l_rulv_rec.warn_yn                   := 'N';
9204       END IF;
9205 
9206       create_rule_group_and_rule(
9207                                  x_return_status => x_return_status,
9208                                  x_msg_count     => x_msg_count,
9209                                  x_msg_data      => x_msg_data,
9210                                  p_rgp_id        => l_rgp_id,
9211                                  p_rgpv_rec      => l_rgpv_rec,
9212                                  p_rulv_rec      => l_rulv_rec,
9213                                  x_rgpv_rec      => x_rgpv_rec,
9214                                  x_rulv_rec      => x_rulv_rec
9215                                 );
9216 
9217       l_progress := '1.13';
9218 
9219       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9220           raise header_rule_failed;
9221       END IF;
9222 
9223       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- Bug 5085099
9224          l_rgp_id := x_rgpv_rec.id;
9225       END IF;
9226 
9227       debug_message('------>Rule: LALCGR/LALCPR processed');
9228 
9229       l_rulv_rec := NULL;
9230 
9231       l_late_charge_exempt_flag := p_header_rec.late_charge_exempt_flag;
9232 
9233       IF (l_late_charge_exempt_flag IS NULL
9234           AND
9235           p_header_rec.template_number IS NOT NULL) THEN
9236          get_contract_rules(
9237                             x_return_status  => x_return_status,
9238                             x_msg_count      => x_msg_count,
9239                             x_msg_data       => x_msg_data,
9240                             p_chr_id         => p_template_id,
9241                             p_cle_id         => NULL,
9242                             p_rgd_code       => 'LALCGR',
9243                             p_rule_code      => 'LALCEX',
9244                             x_rulv_tbl       => l_rulv_tbl,
9245                             x_rule_count     => l_rule_count
9246                            );
9247 
9248          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9249             RAISE header_rule_failed;
9250          END IF;
9251 
9252          IF (l_rule_count > 0) THEN
9253             l_late_charge_exempt_flag  := l_rulv_tbl(1).rule_information1;
9254          END IF;
9255       END IF;
9256 
9257       IF (l_late_charge_exempt_flag IS NOT NULL) THEN
9258          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9259          l_rulv_rec.dnz_chr_id                := p_chr_id;
9260          l_rulv_rec.rule_information1         := l_late_charge_exempt_flag;
9261          l_rulv_rec.rule_information_category := 'LALCEX';
9262          l_rulv_rec.std_template_yn           := 'N';
9263          l_rulv_rec.warn_yn                   := 'N';
9264       END IF;
9265 
9266       create_rule_group_and_rule(
9267                                  x_return_status => x_return_status,
9268                                  x_msg_count     => x_msg_count,
9269                                  x_msg_data      => x_msg_data,
9270                                  p_rgp_id        => l_rgp_id,
9271                                  p_rgpv_rec      => l_rgpv_rec,
9272                                  p_rulv_rec      => l_rulv_rec,
9273                                  x_rgpv_rec      => x_rgpv_rec,
9274                                  x_rulv_rec      => x_rulv_rec
9275                                 );
9276 
9277       l_progress := '1.14';
9278 
9279       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9280           raise header_rule_failed;
9281       END IF;
9282 
9283       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
9284          l_rgp_id := x_rgpv_rec.id;
9285       END IF;
9286 
9287       debug_message('------>Rule: LALCGR/LALCEX processed');
9288 
9289       /* -- AKP: Commented as new variable rate processing occurs OKL.H onwards
9290       --Rule Group LAIIND
9291       l_rgpv_rec            := NULL;
9292       l_rgp_id              := NULL;
9293       l_rgpv_rec.rgd_code   := 'LAIIND';
9294       l_rgpv_rec.chr_id     := p_chr_id;
9295       l_rgpv_rec.dnz_chr_id := p_chr_id;
9296       l_rgpv_rec.cle_id     := NULL;
9297       l_rgpv_rec.rgp_type   := 'KRG';
9298 
9299       l_variable_rate := p_header_rec.variable_rate;
9300 
9301       IF (l_variable_rate IS NULL
9302           AND
9303           p_header_rec.template_number IS NOT NULL) THEN
9304          get_contract_rules(
9305                             x_return_status  => x_return_status,
9306                             x_msg_count      => x_msg_count,
9307                             x_msg_data       => x_msg_data,
9308                             p_chr_id         => p_template_id,
9309                             p_cle_id         => NULL,
9310                             p_rgd_code       => 'LAIIND',
9311                             p_rule_code      => 'LAINTP',
9312                             x_rulv_tbl       => l_rulv_tbl,
9313                             x_rule_count     => l_rule_count
9314                            );
9315 
9316          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9317             RAISE header_rule_failed;
9318          END IF;
9319 
9320          IF (l_rule_count > 0) THEN
9321             l_variable_rate  := l_rulv_tbl(1).rule_information1;
9322          END IF;
9323       END IF;
9324 
9325       IF (l_variable_rate IS NOT NULL) THEN
9326 
9327          l_rulv_rec                           := NULL;
9328          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9329          l_rulv_rec.dnz_chr_id                := p_chr_id;
9330          l_rulv_rec.rule_information1         := l_variable_rate;
9331          l_rulv_rec.rule_information_category := 'LAINTP';
9332          l_rulv_rec.std_template_yn           := 'N';
9333          l_rulv_rec.warn_yn                   := 'N';
9334 
9335          create_rule_group_and_rule(
9336                                     x_return_status => x_return_status,
9337                                     x_msg_count     => x_msg_count,
9338                                     x_msg_data      => x_msg_data,
9339                                     p_rgp_id        => l_rgp_id,
9340                                     p_rgpv_rec      => l_rgpv_rec,
9341                                     p_rulv_rec      => l_rulv_rec,
9342                                     x_rgpv_rec      => x_rgpv_rec,
9343                                     x_rulv_rec      => x_rulv_rec
9344                                    );
9345 
9346          l_progress := '1.141';
9347          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9348             raise header_rule_failed;
9349          END IF;
9350 
9351          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
9352             l_rgp_id := x_rgpv_rec.id; --store rgp_id
9353          END IF;
9354 
9355       END IF; -- variable_rate
9356 
9357       debug_message('------>Rule: LAIIND/LAINTP processed');
9358       l_rulv_rec := NULL;
9359 
9360       l_convert_type       := p_header_rec.convert_type;
9361       l_conversion_method  := p_header_rec.conversion_method;
9362       l_date_of_conversion := get_canonicaL_date(p_header_rec.date_of_conversion);
9363       l_convert_by_date    := get_canonicaL_date(p_header_rec.convert_by_date);
9364 
9365       IF (l_convert_type IS NULL
9366           OR
9367           l_conversion_method IS NULL
9368           OR
9369           l_date_of_conversion IS NULL
9370           OR
9371           l_convert_by_date IS NULL
9372           AND
9373           p_header_rec.template_number IS NOT NULL) THEN
9374          get_contract_rules(
9375                             x_return_status  => x_return_status,
9376                             x_msg_count      => x_msg_count,
9377                             x_msg_data       => x_msg_data,
9378                             p_chr_id         => p_template_id,
9379                             p_cle_id         => NULL,
9380                             p_rgd_code       => 'LAIIND',
9381                             p_rule_code      => 'LAICON',
9382                             x_rulv_tbl       => l_rulv_tbl,
9383                             x_rule_count     => l_rule_count
9384                            );
9385 
9386          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9387             RAISE header_rule_failed;
9388          END IF;
9389 
9390          IF (l_rule_count > 0) THEN
9391             l_convert_type       := NVL(l_convert_type,l_rulv_tbl(1).rule_information1);
9392             l_conversion_method  := NVL(l_conversion_method,l_rulv_tbl(1).rule_information2);
9393             l_date_of_conversion := NVL(l_date_of_conversion,l_rulv_tbl(1).rule_information3);
9394             l_convert_by_date    := NVL(l_convert_by_date,l_rulv_tbl(1).rule_information4);
9395          END IF;
9396       END IF;
9397 
9398       IF (l_convert_type IS NOT NULL) THEN
9399           l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9400           l_rulv_rec.dnz_chr_id                := p_chr_id;
9401           l_rulv_rec.rule_information1         := l_convert_type;
9402           l_rulv_rec.rule_information_category := 'LAICON';
9403           l_rulv_rec.std_template_yn           := 'N';
9404           l_rulv_rec.warn_yn                   := 'N';
9405       END IF;
9406 
9407       IF (l_conversion_method IS NOT NULL) THEN
9408           l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9409           l_rulv_rec.dnz_chr_id                := p_chr_id;
9410           l_rulv_rec.rule_information2         := l_conversion_method;
9411           l_rulv_rec.rule_information_category := 'LAICON';
9412           l_rulv_rec.std_template_yn           := 'N';
9413           l_rulv_rec.warn_yn                   := 'N';
9414       END IF;
9415 
9416       IF (l_date_of_conversion IS NOT NULL) THEN
9417           l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9418           l_rulv_rec.dnz_chr_id                := p_chr_id;
9419           l_rulv_rec.rule_information3         := l_date_of_conversion;
9420           l_rulv_rec.rule_information_category := 'LAICON';
9421           l_rulv_rec.std_template_yn           := 'N';
9422           l_rulv_rec.warn_yn                   := 'N';
9423       END IF;
9424 
9425       IF (l_convert_by_date IS NOT NULL) THEN
9426           l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9427           l_rulv_rec.dnz_chr_id                := p_chr_id;
9428           l_rulv_rec.rule_information4         := l_convert_by_date;
9429           l_rulv_rec.rule_information_category := 'LAICON';
9430           l_rulv_rec.std_template_yn           := 'N';
9431           l_rulv_rec.warn_yn                   := 'N';
9432       END IF;
9433 
9434       create_rule_group_and_rule(
9435                                  x_return_status => x_return_status,
9436                                  x_msg_count     => x_msg_count,
9437                                  x_msg_data      => x_msg_data,
9438                                  p_rgp_id        => l_rgp_id,
9439                                  p_rgpv_rec      => l_rgpv_rec,
9440                                  p_rulv_rec      => l_rulv_rec,
9441                                  x_rgpv_rec      => x_rgpv_rec,
9442                                  x_rulv_rec      => x_rulv_rec
9443                                 );
9444 
9445       l_progress := '1.15';
9446 
9447       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9448           raise header_rule_failed;
9449       END IF;
9450 
9451       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
9452          l_rgp_id := x_rgpv_rec.id;
9453       END IF;
9454 
9455       debug_message('------>Rule: LAIIND/LAICON processed');
9456       l_rulv_rec := NULL;
9457 
9458       l_variable_method      := p_header_rec.variable_method;
9459       l_index_name           := p_header_rec.index_name;
9460       l_index_id             := NULL;
9461       l_base_rate            := p_header_rec.base_rate;
9462       l_adder                := p_header_rec.adder;
9463       l_minimum_rate         := p_header_rec.minimum_rate;
9464       l_maximum_rate         := p_header_rec.maximum_rate;
9465       l_tolerance            := p_header_rec.tolerance;
9466       l_adjustment_frequency := p_header_rec.adjustment_frequency;
9467 
9468       IF (l_variable_method IS NULL
9469           OR
9470           l_index_name IS NULL
9471           OR
9472           l_base_rate IS NULL
9473           OR
9474           l_adder IS NULL
9475           OR
9476           l_minimum_rate IS NULL
9477           OR
9478           l_maximum_rate IS NULL
9479           OR
9480           l_tolerance IS NULL
9481           OR
9482           l_adjustment_frequency IS NULL
9483           AND
9484           p_header_rec.template_number IS NOT NULL) THEN
9485          get_contract_rules(
9486                             x_return_status  => x_return_status,
9487                             x_msg_count      => x_msg_count,
9488                             x_msg_data       => x_msg_data,
9489                             p_chr_id         => p_template_id,
9490                             p_cle_id         => NULL,
9491                             p_rgd_code       => 'LAIIND',
9492                             p_rule_code      => 'LAIVAR',
9493                             x_rulv_tbl       => l_rulv_tbl,
9494                             x_rule_count     => l_rule_count
9495                            );
9496 
9497          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9498             RAISE header_rule_failed;
9499          END IF;
9500 
9501          IF (l_rule_count > 0) THEN
9502             l_variable_method      := NVL(l_variable_method,l_rulv_tbl(1).rule_information1);
9503             l_index_id             := NVL(l_index_id,l_rulv_tbl(1).rule_information2);
9504             l_base_rate            := NVL(l_base_rate,l_rulv_tbl(1).rule_information3);
9505             l_adder                := NVL(l_adder,l_rulv_tbl(1).rule_information4);
9506             l_minimum_rate         := NVL(l_minimum_rate,l_rulv_tbl(1).rule_information5);
9507             l_maximum_rate         := NVL(l_maximum_rate,l_rulv_tbl(1).rule_information6);
9508             l_tolerance            := NVL(l_tolerance,l_rulv_tbl(1).rule_information7);
9509             l_adjustment_frequency := NVL(l_adjustment_frequency,l_rulv_tbl(1).rule_information8);
9510          END IF;
9511       END IF;
9512 
9513       IF (l_variable_method IS NOT NULL) THEN
9514          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9515          l_rulv_rec.dnz_chr_id                := p_chr_id;
9516          l_rulv_rec.rule_information1         := l_variable_method;
9517          l_rulv_rec.rule_information_category := 'LAIVAR';
9518          l_rulv_rec.std_template_yn           := 'N';
9519          l_rulv_rec.warn_yn                   := 'N';
9520       END IF;
9521 
9522       IF (l_index_name IS NOT NULL) THEN
9523 
9524           get_index_id(
9525                        x_return_status => x_return_status,
9526                        p_index_name    => l_index_name,
9527                        x_index_id      => x_index_id
9528                       );
9529           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9530              okl_api.set_message(
9531                                  G_APP_NAME,
9532                                  G_INVALID_VALUE,
9533                                  'CONTRACT_NUM',
9534                                  p_header_rec.contract_number_old,
9535                                  'COL_NAME',
9536                                  'INDEX_NAME',
9537                                  'COL_VALUE',
9538                                  p_header_rec.index_name
9539                                 );
9540              raise header_rule_failed;
9541           END IF;
9542           l_index_id := x_index_id;
9543       END IF;
9544 
9545       IF (l_index_id IS NOT NULL) THEN
9546           l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9547           l_rulv_rec.dnz_chr_id                := p_chr_id;
9548           l_rulv_rec.rule_information2         := TO_CHAR(x_index_id);
9549           l_rulv_rec.rule_information_category := 'LAIVAR';
9550           l_rulv_rec.std_template_yn           := 'N';
9551           l_rulv_rec.warn_yn                   := 'N';
9552       END IF;
9553 
9554       IF (l_base_rate IS NOT NULL) THEN
9555           l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9556           l_rulv_rec.dnz_chr_id                := p_chr_id;
9557           l_rulv_rec.rule_information3         := l_base_rate;
9558           l_rulv_rec.rule_information_category := 'LAIVAR';
9559           l_rulv_rec.std_template_yn           := 'N';
9560           l_rulv_rec.warn_yn                   := 'N';
9561       END IF;
9562 
9563       IF (l_adder IS NOT NULL) THEN
9564           l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9565           l_rulv_rec.dnz_chr_id                := p_chr_id;
9566           l_rulv_rec.rule_information4         := l_adder;
9567           l_rulv_rec.rule_information_category := 'LAIVAR';
9568           l_rulv_rec.std_template_yn           := 'N';
9569           l_rulv_rec.warn_yn                   := 'N';
9570       END IF;
9571 
9572       IF (l_minimum_rate IS NOT NULL) THEN
9573           l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9574           l_rulv_rec.dnz_chr_id                := p_chr_id;
9575           l_rulv_rec.rule_information5         := l_minimum_rate;
9576           l_rulv_rec.rule_information_category := 'LAIVAR';
9577           l_rulv_rec.std_template_yn           := 'N';
9578           l_rulv_rec.warn_yn                   := 'N';
9579       END IF;
9580 
9581       IF (l_maximum_rate IS NOT NULL) THEN
9582           l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9583           l_rulv_rec.dnz_chr_id                := p_chr_id;
9584           l_rulv_rec.rule_information6         := l_maximum_rate;
9585           l_rulv_rec.rule_information_category := 'LAIVAR';
9586           l_rulv_rec.std_template_yn           := 'N';
9587           l_rulv_rec.warn_yn                   := 'N';
9588       END IF;
9589 
9590       IF (l_tolerance IS NOT NULL) THEN
9591           l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9592           l_rulv_rec.dnz_chr_id                := p_chr_id;
9593           l_rulv_rec.rule_information7         := l_tolerance;
9594           l_rulv_rec.rule_information_category := 'LAIVAR';
9595           l_rulv_rec.std_template_yn           := 'N';
9596           l_rulv_rec.warn_yn                   := 'N';
9597       END IF;
9598 
9599       IF (l_adjustment_frequency IS NOT NULL) THEN
9600           l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9601           l_rulv_rec.dnz_chr_id                := p_chr_id;
9602           l_rulv_rec.rule_information8         := l_adjustment_frequency;
9603           l_rulv_rec.rule_information_category := 'LAIVAR';
9604           l_rulv_rec.std_template_yn           := 'N';
9605           l_rulv_rec.warn_yn                   := 'N';
9606       END IF;
9607       create_rule_group_and_rule(
9608                                  x_return_status => x_return_status,
9609                                  x_msg_count     => x_msg_count,
9610                                  x_msg_data      => x_msg_data,
9611                                  p_rgp_id        => l_rgp_id,
9612                                  p_rgpv_rec      => l_rgpv_rec,
9613                                  p_rulv_rec      => l_rulv_rec,
9614                                  x_rgpv_rec      => x_rgpv_rec,
9615                                  x_rulv_rec      => x_rulv_rec
9616                                 );
9617 
9618       l_progress := '1.16';
9619       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9620            x_return_status := OKL_API.G_RET_STS_ERROR;
9621            raise header_rule_failed;
9622       END IF;
9623 
9624       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
9625          l_rgp_id := x_rgpv_rec.id;
9626       END IF;
9627 
9628       debug_message('------>Rule: LAIIND/LAIVAR processed');
9629 
9630       l_days_in_year          := p_header_rec.days_in_year;
9631       l_days_in_month         := p_header_rec.days_in_month;
9632       l_interest_method       := p_header_rec.interest_method;
9633       l_interest_start_date   := get_canonicaL_date(p_header_rec.interest_start_date);
9634       l_method_of_calculation := p_header_rec.method_of_calculation;
9635 
9636       l_rulv_rec := NULL;
9637 
9638       IF (l_days_in_year IS NULL
9639           OR
9640           l_days_in_month IS NULL
9641           OR
9642           l_interest_method IS NULL
9643           OR
9644           l_interest_start_date IS NULL
9645           OR
9646           l_method_of_calculation IS NULL
9647           AND
9648           p_header_rec.template_number IS NOT NULL) THEN
9649          get_contract_rules(
9650                             x_return_status  => x_return_status,
9651                             x_msg_count      => x_msg_count,
9652                             x_msg_data       => x_msg_data,
9653                             p_chr_id         => p_template_id,
9654                             p_cle_id         => NULL,
9655                             p_rgd_code       => 'LAIIND',
9656                             p_rule_code      => 'LAICLC',
9657                             x_rulv_tbl       => l_rulv_tbl,
9658                             x_rule_count     => l_rule_count
9659                            );
9660 
9661          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9662             RAISE header_rule_failed;
9663          END IF;
9664 
9665          IF (l_rule_count > 0) THEN
9666             l_days_in_year          := NVL(l_days_in_year,l_rulv_tbl(1).rule_information1);
9667             l_days_in_month         := NVL(l_days_in_month,l_rulv_tbl(1).rule_information2);
9668             l_interest_method       := NVL(l_interest_method,l_rulv_tbl(1).rule_information3);
9669             l_interest_start_date   := NVL(l_interest_start_date,l_rulv_tbl(1).rule_information4);
9670             l_method_of_calculation := NVL(l_method_of_calculation,l_rulv_tbl(1).rule_information5);
9671          END IF;
9672       END IF;
9673       IF (l_days_in_year IS NOT NULL) THEN
9674          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9675          l_rulv_rec.dnz_chr_id                := p_chr_id;
9676          l_rulv_rec.rule_information1         := l_days_in_year;
9677          l_rulv_rec.rule_information_category := 'LAICLC';
9678          l_rulv_rec.std_template_yn           := 'N';
9679          l_rulv_rec.warn_yn                   := 'N';
9680       END IF;
9681 
9682       IF (l_days_in_month IS NOT NULL) THEN
9683          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9684          l_rulv_rec.dnz_chr_id                := p_chr_id;
9685          l_rulv_rec.rule_information2         := l_days_in_month;
9686          l_rulv_rec.rule_information_category := 'LAICLC';
9687          l_rulv_rec.std_template_yn           := 'N';
9688          l_rulv_rec.warn_yn                   := 'N';
9689       END IF;
9690 
9691       IF (l_interest_method IS NOT NULL) THEN
9692          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9693          l_rulv_rec.dnz_chr_id                := p_chr_id;
9694          l_rulv_rec.rule_information3         := l_interest_method;
9695          l_rulv_rec.rule_information_category := 'LAICLC';
9696          l_rulv_rec.std_template_yn           := 'N';
9697          l_rulv_rec.warn_yn                   := 'N';
9698       END IF;
9699 
9700       IF (l_interest_start_date IS NOT NULL) THEN
9701          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9702          l_rulv_rec.dnz_chr_id                := p_chr_id;
9703          l_rulv_rec.rule_information4         := l_interest_start_date;
9704          l_rulv_rec.rule_information_category := 'LAICLC';
9705          l_rulv_rec.std_template_yn           := 'N';
9706          l_rulv_rec.warn_yn                   := 'N';
9707       END IF;
9708 
9709       IF (l_method_of_calculation IS NOT NULL) THEN
9710          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9711          l_rulv_rec.dnz_chr_id                := p_chr_id;
9712          l_rulv_rec.rule_information5         := l_method_of_calculation;
9713          l_rulv_rec.rule_information_category := 'LAICLC';
9714          l_rulv_rec.std_template_yn           := 'N';
9715          l_rulv_rec.warn_yn                   := 'N';
9716       END IF;
9717 
9718       create_rule_group_and_rule(
9719                                  x_return_status => x_return_status,
9720                                  x_msg_count     => x_msg_count,
9721                                  x_msg_data      => x_msg_data,
9722                                  p_rgp_id        => l_rgp_id,
9723                                  p_rgpv_rec      => l_rgpv_rec,
9724                                  p_rulv_rec      => l_rulv_rec,
9725                                  x_rgpv_rec      => x_rgpv_rec,
9726                                  x_rulv_rec      => x_rulv_rec
9727                                 );
9728 
9729       l_progress := '1.17';
9730       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9731            x_return_status := OKL_API.G_RET_STS_ERROR;
9732            raise header_rule_failed;
9733       END IF;
9734 
9735       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
9736          l_rgp_id := x_rgpv_rec.id;
9737       END IF;
9738 
9739       debug_message('------>Rule: LAIIND/LAICLC processed');
9740       l_rulv_rec := NULL;
9741 
9742       l_formula_name := p_header_rec.formula_name;
9743 
9744       IF (l_formula_name IS NULL
9745           AND
9746           p_header_rec.template_number IS NOT NULL) THEN
9747          get_contract_rules(
9748                             x_return_status  => x_return_status,
9749                             x_msg_count      => x_msg_count,
9750                             x_msg_data       => x_msg_data,
9751                             p_chr_id         => p_template_id,
9752                             p_cle_id         => NULL,
9753                             p_rgd_code       => 'LAIIND',
9754                             p_rule_code      => 'LAFORM',
9755                             x_rulv_tbl       => l_rulv_tbl,
9756                             x_rule_count     => l_rule_count
9757                            );
9758 
9759          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9760             RAISE header_rule_failed;
9761          END IF;
9762 
9763          IF (l_rule_count > 0) THEN
9764             l_formula_name  := l_rulv_tbl(1).rule_information1;
9765          END IF;
9766       END IF;
9767 
9768       IF (l_formula_name IS NOT NULL) THEN
9769          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9770          l_rulv_rec.dnz_chr_id                := p_chr_id;
9771          l_rulv_rec.rule_information1         := l_formula_name;
9772          l_rulv_rec.rule_information_category := 'LAFORM';
9773          l_rulv_rec.std_template_yn           := 'N';
9774          l_rulv_rec.warn_yn                   := 'N';
9775       END IF;
9776 
9777       create_rule_group_and_rule(
9778                                  x_return_status => x_return_status,
9779                                  x_msg_count     => x_msg_count,
9780                                  x_msg_data      => x_msg_data,
9781                                  p_rgp_id        => l_rgp_id,
9782                                  p_rgpv_rec      => l_rgpv_rec,
9783                                  p_rulv_rec      => l_rulv_rec,
9784                                  x_rgpv_rec      => x_rgpv_rec,
9785                                  x_rulv_rec      => x_rulv_rec
9786                                 );
9787 
9788       l_progress := '1.18';
9789       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9790            x_return_status := OKL_API.G_RET_STS_ERROR;
9791            raise header_rule_failed;
9792       END IF;
9793 
9794       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
9795          l_rgp_id := x_rgpv_rec.id;
9796       END IF;
9797 
9798       debug_message('------>Rule: LAIIND/LAFORM processed');
9799       */ -- AKP: Commented because new vairable rate processing in OKL.H onwards
9800 
9801       l_rate_counter := 1;
9802       IF (p_header_rec.INT_RATE_EFFECTIVE_FROM_DATE IS NOT NULL) THEN
9803         l_k_rate_tbl(l_rate_counter).KHR_ID := p_chr_id;
9804         l_k_rate_tbl(l_rate_counter).PARAMETER_TYPE_CODE := 'ACTUAL';
9805         l_k_rate_tbl(l_rate_counter).EFFECTIVE_FROM_DATE := p_header_rec.INT_RATE_EFFECTIVE_FROM_DATE;
9806 
9807         l_no_data := TRUE;
9808         IF (p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9809           --get_template_rate(p_chr_id, 'ACTUAL', l_tmpl_rate_rec, l_no_data);
9810           okl_k_rate_params_pvt.get_rate_rec(
9811             p_chr_id => p_chr_id,
9812             p_parameter_type_code => 'ACTUAL',
9813             p_effective_from_date => NULL,
9814             x_krpv_rec => l_tmpl_rate_rec,
9815             x_no_data_found => l_no_data);
9816         END IF;
9817 
9818         l_k_rate_tbl(l_rate_counter).EFFECTIVE_TO_DATE := p_header_rec.INT_RATE_EFFECTIVE_TO_DATE;
9819         IF (p_header_rec.INT_RATE_EFFECTIVE_TO_DATE IS NULL AND NOT(l_no_data) AND
9820             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9821           l_k_rate_tbl(l_rate_counter).EFFECTIVE_TO_DATE :=
9822                        l_tmpl_rate_rec.EFFECTIVE_TO_DATE;
9823         END IF;
9824 
9825         debug_message('Var Rate 1.1');
9826         IF (p_header_rec.INDEX_NAME IS NOT NULL) THEN
9827           get_index_id(
9828                        x_return_status => x_return_status,
9829                        p_index_name    => p_header_rec.INDEX_NAME,
9830                        x_index_id      => l_index_id
9831                       );
9832           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9833              okl_api.set_message(
9834                                  G_APP_NAME,
9835                                  G_INVALID_VALUE,
9836                                  'CONTRACT_NUM',
9837                                  p_header_rec.contract_number_old,
9838                                  'COL_NAME',
9839                                  'INDEX_NAME',
9840                                  'COL_VALUE',
9841                                  p_header_rec.index_name
9842                                 );
9843              raise header_rule_failed;
9844           END IF;
9845           l_k_rate_tbl(l_rate_counter).INTEREST_INDEX_ID := l_index_id;
9846         ELSE
9847           l_k_rate_tbl(l_rate_counter).INTEREST_INDEX_ID := NULL;
9848           IF (p_header_rec.INDEX_NAME IS NULL AND NOT(l_no_data) AND
9849               p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9850             l_k_rate_tbl(l_rate_counter).INTEREST_INDEX_ID :=
9851                          l_tmpl_rate_rec.INTEREST_INDEX_ID;
9852           END IF;
9853         END IF;
9854 
9855         l_k_rate_tbl(l_rate_counter).BASE_RATE := p_header_rec.BASE_RATE;
9856         IF (p_header_rec.BASE_RATE IS NULL AND NOT(l_no_data) AND
9857             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9858           l_k_rate_tbl(l_rate_counter).BASE_RATE :=
9859                        l_tmpl_rate_rec.BASE_RATE;
9860         END IF;
9861 
9862         l_k_rate_tbl(l_rate_counter).INTEREST_START_DATE := p_header_rec.INTEREST_START_DATE;
9863         IF (p_header_rec.INTEREST_START_DATE IS NULL AND NOT(l_no_data) AND
9864             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9865           l_k_rate_tbl(l_rate_counter).INTEREST_START_DATE :=
9866                        l_tmpl_rate_rec.INTEREST_START_DATE;
9867         END IF;
9868 
9869         l_k_rate_tbl(l_rate_counter).ADDER_RATE := p_header_rec.ADDER;
9870         IF (p_header_rec.ADDER IS NULL AND NOT(l_no_data) AND
9871             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9872           l_k_rate_tbl(l_rate_counter).ADDER_RATE :=
9873                        l_tmpl_rate_rec.ADDER_RATE;
9874         END IF;
9875 
9876         l_k_rate_tbl(l_rate_counter).MINIMUM_RATE := p_header_rec.MINIMUM_RATE;
9877         IF (p_header_rec.MINIMUM_RATE IS NULL AND NOT(l_no_data) AND
9878             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9879           l_k_rate_tbl(l_rate_counter).MINIMUM_RATE :=
9880                        l_tmpl_rate_rec.MINIMUM_RATE;
9881         END IF;
9882 
9883         l_k_rate_tbl(l_rate_counter).MAXIMUM_RATE := p_header_rec.MAXIMUM_RATE;
9884         IF (p_header_rec.MAXIMUM_RATE IS NULL AND NOT(l_no_data) AND
9885             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9886           l_k_rate_tbl(l_rate_counter).MAXIMUM_RATE :=
9887                        l_tmpl_rate_rec.MAXIMUM_RATE;
9888         END IF;
9889 
9890         l_k_rate_tbl(l_rate_counter).PRINCIPAL_BASIS_CODE := p_header_rec.INT_RATE_PRINC_BASIS_CODE;
9891         IF (p_header_rec.INT_RATE_PRINC_BASIS_CODE IS NULL) THEN
9892         IF (p_header_rec.INT_RATE_PRINC_BASIS_CODE IS NULL AND NOT(l_no_data) AND
9893             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9894           l_k_rate_tbl(l_rate_counter).PRINCIPAL_BASIS_CODE :=
9895                        l_tmpl_rate_rec.PRINCIPAL_BASIS_CODE;
9896         ELSE
9897           okl_k_rate_params_pvt.default_k_rate_params(
9898              p_api_version      => 1,
9899              p_init_msg_list    => OKC_API.G_FALSE,
9900              x_return_status    => x_return_status,
9901              x_msg_count        => x_msg_count,
9902              x_msg_data         => x_msg_data,
9903              p_deal_type        => G_DEAL_TYPE,
9904              p_rev_rec_method   => G_REVENUE_RECOGNITION_METHOD,
9905              p_int_calc_basis   => G_INTEREST_CALCULATION_BASIS,
9906              p_column_name      => 'PRINCIPAL_BASIS_CODE',
9907              p_krpv_rec         => l_k_rate_tbl(l_rate_counter));
9908         END IF;
9909         END IF;
9910 
9911         l_k_rate_tbl(l_rate_counter).DAYS_IN_A_MONTH_CODE := p_header_rec.DAYS_IN_MONTH;
9912         IF (p_header_rec.DAYS_IN_MONTH IS NULL) THEN
9913         IF (p_header_rec.DAYS_IN_MONTH IS NULL AND NOT(l_no_data) AND
9914             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9915           l_k_rate_tbl(l_rate_counter).DAYS_IN_A_MONTH_CODE :=
9916                        l_tmpl_rate_rec.DAYS_IN_A_MONTH_CODE;
9917         ELSE
9918           okl_k_rate_params_pvt.default_k_rate_params(
9919              p_api_version      => 1,
9920              p_init_msg_list    => OKC_API.G_FALSE,
9921              x_return_status    => x_return_status,
9922              x_msg_count        => x_msg_count,
9923              x_msg_data         => x_msg_data,
9924              p_deal_type        => G_DEAL_TYPE,
9925              p_rev_rec_method   => G_REVENUE_RECOGNITION_METHOD,
9926              p_int_calc_basis   => G_INTEREST_CALCULATION_BASIS,
9927              p_column_name      => 'DAYS_IN_A_MONTH_CODE',
9928              p_krpv_rec         => l_k_rate_tbl(l_rate_counter));
9929         END IF;
9930         END IF;
9931 
9932         l_k_rate_tbl(l_rate_counter).DAYS_IN_A_YEAR_CODE := p_header_rec.DAYS_IN_YEAR;
9933         IF (p_header_rec.DAYS_IN_YEAR IS NULL) THEN
9934         IF (p_header_rec.DAYS_IN_YEAR IS NULL AND NOT(l_no_data) AND
9935             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9936           l_k_rate_tbl(l_rate_counter).DAYS_IN_A_YEAR_CODE :=
9937                        l_tmpl_rate_rec.DAYS_IN_A_YEAR_CODE;
9938         ELSE
9939           okl_k_rate_params_pvt.default_k_rate_params(
9940              p_api_version      => 1,
9941              p_init_msg_list    => OKC_API.G_FALSE,
9942              x_return_status    => x_return_status,
9943              x_msg_count        => x_msg_count,
9944              x_msg_data         => x_msg_data,
9945              p_deal_type        => G_DEAL_TYPE,
9946              p_rev_rec_method   => G_REVENUE_RECOGNITION_METHOD,
9947              p_int_calc_basis   => G_INTEREST_CALCULATION_BASIS,
9948              p_column_name      => 'DAYS_IN_A_YEAR_CODE',
9949              p_krpv_rec         => l_k_rate_tbl(l_rate_counter));
9950         END IF;
9951         END IF;
9952 
9953         l_k_rate_tbl(l_rate_counter).INTEREST_BASIS_CODE := p_header_rec.INT_RATE_BASIS_CODE;
9954         IF (p_header_rec.INT_RATE_BASIS_CODE IS NULL) THEN
9955         IF (p_header_rec.INT_RATE_BASIS_CODE IS NULL AND NOT(l_no_data) AND
9956             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9957           l_k_rate_tbl(l_rate_counter).INTEREST_BASIS_CODE :=
9958                        l_tmpl_rate_rec.INTEREST_BASIS_CODE;
9959         ELSE
9960           okl_k_rate_params_pvt.default_k_rate_params(
9961              p_api_version      => 1,
9962              p_init_msg_list    => OKC_API.G_FALSE,
9963              x_return_status    => x_return_status,
9964              x_msg_count        => x_msg_count,
9965              x_msg_data         => x_msg_data,
9966              p_deal_type        => G_DEAL_TYPE,
9967              p_rev_rec_method   => G_REVENUE_RECOGNITION_METHOD,
9968              p_int_calc_basis   => G_INTEREST_CALCULATION_BASIS,
9969              p_column_name      => 'INTEREST_BASIS_CODE',
9970              p_krpv_rec         => l_k_rate_tbl(l_rate_counter));
9971         END IF;
9972         END IF;
9973 
9974         l_k_rate_tbl(l_rate_counter).RATE_DELAY_CODE := p_header_rec.INT_RATE_DELAY_CODE;
9975         IF (p_header_rec.INT_RATE_DELAY_CODE IS NULL AND NOT(l_no_data) AND
9976             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9977           l_k_rate_tbl(l_rate_counter).RATE_DELAY_CODE :=
9978                        l_tmpl_rate_rec.RATE_DELAY_CODE;
9979         END IF;
9980 
9981         l_k_rate_tbl(l_rate_counter).RATE_DELAY_FREQUENCY := p_header_rec.INT_RATE_DELAY_FREQ;
9982         IF (p_header_rec.INT_RATE_DELAY_FREQ IS NULL AND NOT(l_no_data) AND
9983             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9984           l_k_rate_tbl(l_rate_counter).RATE_DELAY_FREQUENCY :=
9985                        l_tmpl_rate_rec.RATE_DELAY_FREQUENCY;
9986         END IF;
9987 
9988         l_k_rate_tbl(l_rate_counter).COMPOUNDING_FREQUENCY_CODE := p_header_rec.INT_RATE_CMPND_FREQ_CODE;
9989         IF (p_header_rec.INT_RATE_CMPND_FREQ_CODE IS NULL AND NOT(l_no_data) AND
9990             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9991           l_k_rate_tbl(l_rate_counter).COMPOUNDING_FREQUENCY_CODE :=
9992                        l_tmpl_rate_rec.COMPOUNDING_FREQUENCY_CODE;
9993         END IF;
9994 
9995         debug_message('Var Rate 1.2');
9996         IF (p_header_rec.FORMULA_NAME IS NOT NULL) THEN
9997           l_formula_id := get_formula_id(p_header_rec.FORMULA_NAME,
9998                                          x_return_status);
9999           IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
10000              --AKP: Todo: set message: Invalid formula name 5024651
10001              okl_api.set_message(
10002                            G_APP_NAME,
10003                            G_INVALID_VALUE,
10004                            'CONTRACT_NUM',
10005                            p_header_rec.contract_number_old,
10006                            'COL_NAME',
10007                            'FORMULA_NAME',
10008                            'COL_VALUE',
10009                            p_header_rec.FORMULA_NAME
10010                           );
10011 
10012              RAISE header_rule_failed;
10013           END IF;
10014           l_k_rate_tbl(l_rate_counter).CALCULATION_FORMULA_ID := l_formula_id;
10015         ELSE
10016           l_k_rate_tbl(l_rate_counter).CALCULATION_FORMULA_ID := NULL;
10017           IF (p_header_rec.FORMULA_NAME IS NULL AND NOT(l_no_data) AND
10018               p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10019             l_k_rate_tbl(l_rate_counter).CALCULATION_FORMULA_ID :=
10020                          l_tmpl_rate_rec.CALCULATION_FORMULA_ID;
10021           END IF;
10022         END IF;
10023 
10024         debug_message('Var Rate 1.3');
10025         l_k_rate_tbl(l_rate_counter).CATCHUP_BASIS_CODE := p_header_rec.INT_RATE_CATCHUP_BASIS_CODE;
10026         IF (p_header_rec.INT_RATE_CATCHUP_BASIS_CODE IS NULL) THEN
10027         IF (p_header_rec.INT_RATE_CATCHUP_BASIS_CODE IS NULL AND NOT(l_no_data) AND
10028             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10029           l_k_rate_tbl(l_rate_counter).CATCHUP_BASIS_CODE :=
10030                        l_tmpl_rate_rec.CATCHUP_BASIS_CODE;
10031         ELSE
10032           okl_k_rate_params_pvt.default_k_rate_params(
10033              p_api_version      => 1,
10034              p_init_msg_list    => OKC_API.G_FALSE,
10035              x_return_status    => x_return_status,
10036              x_msg_count        => x_msg_count,
10037              x_msg_data         => x_msg_data,
10038              p_deal_type        => G_DEAL_TYPE,
10039              p_rev_rec_method   => G_REVENUE_RECOGNITION_METHOD,
10040              p_int_calc_basis   => G_INTEREST_CALCULATION_BASIS,
10041              p_column_name      => 'CATCHUP_BASIS_CODE',
10042              p_krpv_rec         => l_k_rate_tbl(l_rate_counter));
10043         END IF;
10044         END IF;
10045 
10046         l_k_rate_tbl(l_rate_counter).CATCHUP_START_DATE := p_header_rec.INT_RATE_CATCHUP_START_DATE;
10047         IF (p_header_rec.INT_RATE_CATCHUP_START_DATE IS NULL AND NOT(l_no_data) AND
10048             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10049           l_k_rate_tbl(l_rate_counter).CATCHUP_START_DATE :=
10050                        l_tmpl_rate_rec.CATCHUP_START_DATE;
10051         END IF;
10052 
10053         l_k_rate_tbl(l_rate_counter).CATCHUP_SETTLEMENT_CODE := p_header_rec.INT_RATE_CAT_STLMNT_CODE;
10054         IF (p_header_rec.INT_RATE_CAT_STLMNT_CODE IS NULL AND NOT(l_no_data) AND
10055             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10056           l_k_rate_tbl(l_rate_counter).CATCHUP_SETTLEMENT_CODE :=
10057                        l_tmpl_rate_rec.CATCHUP_SETTLEMENT_CODE;
10058         END IF;
10059 
10060         l_k_rate_tbl(l_rate_counter).RATE_CHANGE_START_DATE := p_header_rec.INT_RATE_CHANGE_START_DATE;
10061         IF (p_header_rec.INT_RATE_CHANGE_START_DATE IS NULL AND NOT(l_no_data) AND
10062             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10063           l_k_rate_tbl(l_rate_counter).RATE_CHANGE_START_DATE :=
10064                        l_tmpl_rate_rec.RATE_CHANGE_START_DATE;
10065         END IF;
10066 
10067         l_k_rate_tbl(l_rate_counter).RATE_CHANGE_FREQUENCY_CODE := p_header_rec.INT_RATE_CHANGE_FREQ_CODE;
10068         IF (p_header_rec.INT_RATE_CHANGE_FREQ_CODE IS NULL) THEN
10069         IF (p_header_rec.INT_RATE_CHANGE_FREQ_CODE IS NULL AND NOT(l_no_data) AND
10070             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10071           l_k_rate_tbl(l_rate_counter).RATE_CHANGE_FREQUENCY_CODE :=
10072                        l_tmpl_rate_rec.RATE_CHANGE_FREQUENCY_CODE;
10073       /* Removed for Forwar port Bug 8614628
10074         ELSE
10075           okl_k_rate_params_pvt.default_k_rate_params(
10076              p_api_version      => 1,
10077              p_init_msg_list    => OKC_API.G_FALSE,
10078              x_return_status    => x_return_status,
10079              x_msg_count        => x_msg_count,
10080              x_msg_data         => x_msg_data,
10081              p_deal_type        => G_DEAL_TYPE,
10082              p_rev_rec_method   => G_REVENUE_RECOGNITION_METHOD,
10083              p_int_calc_basis   => G_INTEREST_CALCULATION_BASIS,
10084              p_column_name      => 'RATE_CHANGE_FREQUENCY_CODE',
10085              p_krpv_rec         => l_k_rate_tbl(l_rate_counter));
10086  */
10087         END IF;
10088         END IF;
10089 
10090         l_k_rate_tbl(l_rate_counter).RATE_CHANGE_VALUE := p_header_rec.INT_RATE_CHANGE_VALUE;
10091         IF (p_header_rec.INT_RATE_CHANGE_VALUE IS NULL AND NOT(l_no_data) AND
10092             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10093           l_k_rate_tbl(l_rate_counter).RATE_CHANGE_VALUE :=
10094                        l_tmpl_rate_rec.RATE_CHANGE_VALUE;
10095         END IF;
10096 
10097         l_k_rate_tbl(l_rate_counter).CATCHUP_FREQUENCY_CODE := p_header_rec.INT_RATE_CAT_FREQ_CODE;
10098         IF (p_header_rec.INT_RATE_CAT_FREQ_CODE IS NULL AND NOT(l_no_data) AND
10099             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10100           l_k_rate_tbl(l_rate_counter).CATCHUP_FREQUENCY_CODE :=
10101                        l_tmpl_rate_rec.CATCHUP_FREQUENCY_CODE;
10102         END IF;
10103 
10104         l_k_rate_tbl(l_rate_counter).CONVERSION_OPTION_CODE := p_header_rec.INT_RATE_CON_OPTION_CODE;
10105         IF (p_header_rec.INT_RATE_CON_OPTION_CODE IS NULL AND NOT(l_no_data) AND
10106             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10107           l_k_rate_tbl(l_rate_counter).CONVERSION_OPTION_CODE :=
10108                        l_tmpl_rate_rec.CONVERSION_OPTION_CODE;
10109         END IF;
10110 
10111         l_k_rate_tbl(l_rate_counter).NEXT_CONVERSION_DATE := p_header_rec.INT_RATE_NEXT_CON_DATE;
10112         IF (p_header_rec.INT_RATE_NEXT_CON_DATE IS NULL AND NOT(l_no_data) AND
10113             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10114           l_k_rate_tbl(l_rate_counter).NEXT_CONVERSION_DATE :=
10115                        l_tmpl_rate_rec.NEXT_CONVERSION_DATE;
10116         END IF;
10117 
10118         l_k_rate_tbl(l_rate_counter).CONVERSION_TYPE_CODE := p_header_rec.CONVERT_TYPE;
10119         IF (p_header_rec.CONVERT_TYPE IS NULL AND NOT(l_no_data) AND
10120             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10121           l_k_rate_tbl(l_rate_counter).CONVERSION_TYPE_CODE :=
10122                        l_tmpl_rate_rec.CONVERSION_TYPE_CODE;
10123         END IF;
10124         l_rate_counter := l_rate_counter + 1;
10125 
10126       ELSE
10127         IF (p_header_rec.INT_RATE_EFFECTIVE_FROM_DATE IS NOT NULL OR
10128             p_header_rec.INT_RATE_EFFECTIVE_TO_DATE IS NOT NULL OR
10129             p_header_rec.INDEX_NAME IS NOT NULL OR
10130             p_header_rec.BASE_RATE IS NOT NULL OR
10131             p_header_rec.INTEREST_START_DATE IS NOT NULL OR
10132             p_header_rec.ADDER IS NOT NULL OR
10133             p_header_rec.MINIMUM_RATE IS NOT NULL OR
10134             p_header_rec.MAXIMUM_RATE IS NOT NULL OR
10135             p_header_rec.INT_RATE_PRINC_BASIS_CODE IS NOT NULL OR
10136             p_header_rec.DAYS_IN_YEAR IS NOT NULL OR
10137             p_header_rec.DAYS_IN_MONTH IS NOT NULL OR
10138             p_header_rec.INT_RATE_BASIS_CODE IS NOT NULL OR
10139             p_header_rec.INT_RATE_DELAY_CODE IS NOT NULL OR
10140             p_header_rec.INT_RATE_DELAY_FREQ IS NOT NULL OR
10141             p_header_rec.INT_RATE_CMPND_FREQ_CODE IS NOT NULL OR
10142             p_header_rec.FORMULA_NAME IS NOT NULL OR
10143             p_header_rec.INT_RATE_CATCHUP_BASIS_CODE IS NOT NULL OR
10144             p_header_rec.INT_RATE_CATCHUP_START_DATE IS NOT NULL OR
10145             p_header_rec.INT_RATE_CAT_STLMNT_CODE IS NOT NULL OR
10146             p_header_rec.INT_RATE_CHANGE_START_DATE IS NOT NULL OR
10147             p_header_rec.INT_RATE_CHANGE_FREQ_CODE IS NOT NULL OR
10148             p_header_rec.INT_RATE_CHANGE_VALUE IS NOT NULL OR
10149             p_header_rec.INT_RATE_CAT_FREQ_CODE IS NOT NULL OR
10150             p_header_rec.INT_RATE_CON_OPTION_CODE IS NOT NULL OR
10151             p_header_rec.INT_RATE_NEXT_CON_DATE IS NOT NULL OR
10152             p_header_rec.CONVERT_TYPE IS NOT NULL
10153         )
10154         THEN
10155            -- Set error. Effective from date is missing
10156           OKC_API.set_message(p_app_name => G_APP_NAME,
10157                               p_msg_name => G_REQUIRED_VALUE,
10158                               p_token1 => G_COL_NAME_TOKEN,
10159                               p_token1_value => 'Effective_From_Date');
10160           x_return_status := OKC_API.G_RET_STS_ERROR;
10161           RAISE header_rule_failed;
10162         END IF;
10163 
10164       END IF;
10165 
10166       IF (p_header_rec.INT_RATE_EFFECTIVE_FROM_DATE IS NOT NULL) AND
10167            (p_header_rec.INT_RATE_EFFECTIVE_TO_DATE IS NOT NULL OR
10168             p_header_rec.INT_RATE_CON_INDEX_NAME IS NOT NULL OR
10169             p_header_rec.INT_RATE_CON_BASE_RATE IS NOT NULL OR
10170             p_header_rec.INT_RATE_CON_START_DATE IS NOT NULL OR
10171             p_header_rec.INT_RATE_CON_ADDER_RATE IS NOT NULL OR
10172             p_header_rec.INT_RATE_CON_MINIMUM_RATE IS NOT NULL OR
10173             p_header_rec.INT_RATE_CON_MAXIMUM_RATE IS NOT NULL OR
10174             p_header_rec.INT_RATE_CON_PRC_BAS_CODE IS NOT NULL OR
10175             p_header_rec.INT_RATE_CON_DAY_YER_CODE IS NOT NULL OR
10176             p_header_rec.INT_RATE_CON_DAY_MTH_CODE IS NOT NULL OR
10177             p_header_rec.INT_RATE_CON_INT_BAS_CODE IS NOT NULL OR
10178             p_header_rec.INT_RATE_CON_RATE_DELAY_CODE IS NOT NULL OR
10179             p_header_rec.INT_RATE_CON_RATE_DELAY_FREQ IS NOT NULL OR
10180             p_header_rec.INT_RATE_CON_CMPND_FREQ_CODE IS NOT NULL OR
10181             p_header_rec.INT_RATE_CON_FORMULA_NAME IS NOT NULL OR
10182             p_header_rec.INT_RATE_CON_CAT_BAS_CODE IS NOT NULL OR
10183             p_header_rec.INT_RATE_CON_CAT_START_DATE IS NOT NULL OR
10184             p_header_rec.INT_RATE_CON_CAT_STLMNT_CODE IS NOT NULL OR
10185             p_header_rec.INT_RATE_CON_CHG_START_DATE IS NOT NULL OR
10186             p_header_rec.INT_RATE_CON_CHG_FREQ_CODE IS NOT NULL OR
10187             p_header_rec.INT_RATE_CON_CHG_VALUE IS NOT NULL OR
10188             p_header_rec.INT_RATE_CON_CAT_FREQ_CODE IS NOT NULL ) THEN
10189         l_k_rate_tbl(l_rate_counter).KHR_ID := p_chr_id;
10190         l_k_rate_tbl(l_rate_counter).PARAMETER_TYPE_CODE := 'CONVERSION';
10191         l_k_rate_tbl(l_rate_counter).EFFECTIVE_FROM_DATE := p_header_rec.INT_RATE_EFFECTIVE_FROM_DATE;
10192 
10193         l_no_data := TRUE;
10194         IF (p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10195           --get_template_rate(p_chr_id, 'CONVERSION', l_tmpl_rate_rec, l_no_data);
10196           okl_k_rate_params_pvt.get_rate_rec(
10197             p_chr_id => p_chr_id,
10198             p_parameter_type_code => 'CONVERSION',
10199             p_effective_from_date => NULL,
10200             x_krpv_rec => l_tmpl_rate_rec,
10201             x_no_data_found => l_no_data);
10202         END IF;
10203 
10204         l_k_rate_tbl(l_rate_counter).EFFECTIVE_TO_DATE := p_header_rec.INT_RATE_EFFECTIVE_TO_DATE;
10205         IF (p_header_rec.INT_RATE_EFFECTIVE_TO_DATE IS NULL AND NOT(l_no_data) AND
10206             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10207           l_k_rate_tbl(l_rate_counter).EFFECTIVE_TO_DATE :=
10208                        l_tmpl_rate_rec.EFFECTIVE_TO_DATE;
10209         END IF;
10210 
10211         IF (p_header_rec.INT_RATE_CON_INDEX_NAME IS NOT NULL) THEN
10212           get_index_id(
10213                        x_return_status => x_return_status,
10214                        p_index_name    => p_header_rec.INT_RATE_CON_INDEX_NAME,
10215                        x_index_id      => x_index_id
10216                       );
10217           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10218              okl_api.set_message(
10219                                  G_APP_NAME,
10220                                  G_INVALID_VALUE,
10221                                  'CONTRACT_NUM',
10222                                  p_header_rec.contract_number_old,
10223                                  'COL_NAME',
10224                                  'INDEX_NAME_CON',
10225                                  'COL_VALUE',
10226                                  p_header_rec.int_rate_con_index_name
10227                                 );
10228              raise header_rule_failed;
10229           END IF;
10230           l_k_rate_tbl(l_rate_counter).INTEREST_INDEX_ID := l_index_id;
10231         ELSE
10232           l_k_rate_tbl(l_rate_counter).INTEREST_INDEX_ID := NULL;
10233           IF (p_header_rec.INT_RATE_CON_INDEX_NAME IS NULL AND NOT(l_no_data) AND
10234               p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10235             l_k_rate_tbl(l_rate_counter).INTEREST_INDEX_ID :=
10236                          l_tmpl_rate_rec.INTEREST_INDEX_ID;
10237           END IF;
10238         END IF;
10239 
10240         l_k_rate_tbl(l_rate_counter).BASE_RATE := p_header_rec.INT_RATE_CON_BASE_RATE;
10241         IF (p_header_rec.INT_RATE_CON_BASE_RATE IS NULL AND NOT(l_no_data) AND
10242             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10243           l_k_rate_tbl(l_rate_counter).BASE_RATE :=
10244                        l_tmpl_rate_rec.BASE_RATE;
10245         END IF;
10246 
10247         l_k_rate_tbl(l_rate_counter).INTEREST_START_DATE := p_header_rec.INT_RATE_CON_START_DATE;
10248         IF (p_header_rec.INT_RATE_CON_START_DATE IS NULL AND NOT(l_no_data) AND
10249             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10250           l_k_rate_tbl(l_rate_counter).INTEREST_START_DATE :=
10251                        l_tmpl_rate_rec.INTEREST_START_DATE;
10252         END IF;
10253 
10254         l_k_rate_tbl(l_rate_counter).ADDER_RATE := p_header_rec.INT_RATE_CON_ADDER_RATE;
10255         IF (p_header_rec.INT_RATE_CON_ADDER_RATE IS NULL AND NOT(l_no_data) AND
10256             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10257           l_k_rate_tbl(l_rate_counter).ADDER_RATE :=
10258                        l_tmpl_rate_rec.ADDER_RATE;
10259         END IF;
10260 
10261         l_k_rate_tbl(l_rate_counter).MAXIMUM_RATE := p_header_rec.INT_RATE_CON_MAXIMUM_RATE;
10262         IF (p_header_rec.INT_RATE_CON_MAXIMUM_RATE IS NULL AND NOT(l_no_data) AND
10263             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10264           l_k_rate_tbl(l_rate_counter).MAXIMUM_RATE :=
10265                        l_tmpl_rate_rec.MAXIMUM_RATE;
10266         END IF;
10267 
10268         l_k_rate_tbl(l_rate_counter).MINIMUM_RATE := p_header_rec.INT_RATE_CON_MINIMUM_RATE;
10269         IF (p_header_rec.INT_RATE_CON_MINIMUM_RATE IS NULL AND NOT(l_no_data) AND
10270             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10271           l_k_rate_tbl(l_rate_counter).MINIMUM_RATE :=
10272                        l_tmpl_rate_rec.MINIMUM_RATE;
10273         END IF;
10274 
10275         l_k_rate_tbl(l_rate_counter).PRINCIPAL_BASIS_CODE := p_header_rec.INT_RATE_CON_PRC_BAS_CODE;
10276         IF (p_header_rec.INT_RATE_CON_PRC_BAS_CODE IS NULL) THEN
10277         IF (p_header_rec.INT_RATE_CON_PRC_BAS_CODE IS NULL AND NOT(l_no_data) AND
10278             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10279           l_k_rate_tbl(l_rate_counter).PRINCIPAL_BASIS_CODE :=
10280                        l_tmpl_rate_rec.PRINCIPAL_BASIS_CODE;
10281         ELSE
10282           okl_k_rate_params_pvt.default_k_rate_params(
10283              p_api_version      => 1,
10284              p_init_msg_list    => OKC_API.G_FALSE,
10285              x_return_status    => x_return_status,
10286              x_msg_count        => x_msg_count,
10287              x_msg_data         => x_msg_data,
10288              p_deal_type        => G_DEAL_TYPE,
10289              p_rev_rec_method   => G_REVENUE_RECOGNITION_METHOD,
10290              p_int_calc_basis   => G_INTEREST_CALCULATION_BASIS,
10291              p_column_name      => 'PRINCIPAL_BASIS_CODE',
10292              p_krpv_rec         => l_k_rate_tbl(l_rate_counter));
10293         END IF;
10294         END IF;
10295 
10296         l_k_rate_tbl(l_rate_counter).DAYS_IN_A_MONTH_CODE := p_header_rec.INT_RATE_CON_DAY_MTH_CODE;
10297         IF (p_header_rec.INT_RATE_CON_DAY_MTH_CODE IS NULL) THEN
10298         IF (p_header_rec.INT_RATE_CON_DAY_MTH_CODE IS NULL AND NOT(l_no_data) AND
10299             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10300           l_k_rate_tbl(l_rate_counter).DAYS_IN_A_MONTH_CODE :=
10301                        l_tmpl_rate_rec.DAYS_IN_A_MONTH_CODE;
10302         ELSE
10303           okl_k_rate_params_pvt.default_k_rate_params(
10304              p_api_version      => 1,
10305              p_init_msg_list    => OKC_API.G_FALSE,
10306              x_return_status    => x_return_status,
10307              x_msg_count        => x_msg_count,
10308              x_msg_data         => x_msg_data,
10309              p_deal_type        => G_DEAL_TYPE,
10310              p_rev_rec_method   => G_REVENUE_RECOGNITION_METHOD,
10311              p_int_calc_basis   => G_INTEREST_CALCULATION_BASIS,
10312              p_column_name      => 'DAYS_IN_A_MONTH_CODE',
10313              p_krpv_rec         => l_k_rate_tbl(l_rate_counter));
10314         END IF;
10315         END IF;
10316 
10317         l_k_rate_tbl(l_rate_counter).DAYS_IN_A_YEAR_CODE := p_header_rec.INT_RATE_CON_DAY_YER_CODE;
10318         IF (p_header_rec.INT_RATE_CON_DAY_YER_CODE IS NULL) THEN
10319         IF (p_header_rec.INT_RATE_CON_DAY_YER_CODE IS NULL AND NOT(l_no_data) AND
10320             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10321           l_k_rate_tbl(l_rate_counter).DAYS_IN_A_YEAR_CODE :=
10322                        l_tmpl_rate_rec.DAYS_IN_A_YEAR_CODE;
10323         ELSE
10324           okl_k_rate_params_pvt.default_k_rate_params(
10325              p_api_version      => 1,
10326              p_init_msg_list    => OKC_API.G_FALSE,
10327              x_return_status    => x_return_status,
10328              x_msg_count        => x_msg_count,
10329              x_msg_data         => x_msg_data,
10330              p_deal_type        => G_DEAL_TYPE,
10331              p_rev_rec_method   => G_REVENUE_RECOGNITION_METHOD,
10332              p_int_calc_basis   => G_INTEREST_CALCULATION_BASIS,
10333              p_column_name      => 'DAYS_IN_A_YEAR_CODE',
10334              p_krpv_rec         => l_k_rate_tbl(l_rate_counter));
10335         END IF;
10336         END IF;
10337 
10338         l_k_rate_tbl(l_rate_counter).INTEREST_BASIS_CODE := p_header_rec.INT_RATE_CON_INT_BAS_CODE;
10339         IF (p_header_rec.INT_RATE_CON_INT_BAS_CODE IS NULL) THEN
10340         IF (p_header_rec.INT_RATE_CON_INT_BAS_CODE IS NULL AND NOT(l_no_data) AND
10341             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10342           l_k_rate_tbl(l_rate_counter).INTEREST_BASIS_CODE :=
10343                        l_tmpl_rate_rec.INTEREST_BASIS_CODE;
10344         ELSE
10345           okl_k_rate_params_pvt.default_k_rate_params(
10346              p_api_version      => 1,
10347              p_init_msg_list    => OKC_API.G_FALSE,
10348              x_return_status    => x_return_status,
10349              x_msg_count        => x_msg_count,
10350              x_msg_data         => x_msg_data,
10351              p_deal_type        => G_DEAL_TYPE,
10352              p_rev_rec_method   => G_REVENUE_RECOGNITION_METHOD,
10353              p_int_calc_basis   => G_INTEREST_CALCULATION_BASIS,
10354              p_column_name      => 'INTEREST_BASIS_CODE',
10355              p_krpv_rec         => l_k_rate_tbl(l_rate_counter));
10356         END IF;
10357         END IF;
10358 
10359         l_k_rate_tbl(l_rate_counter).RATE_DELAY_CODE := p_header_rec.INT_RATE_CON_RATE_DELAY_CODE;
10360         IF (p_header_rec.INT_RATE_CON_RATE_DELAY_CODE IS NULL AND NOT(l_no_data) AND
10361             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10362           l_k_rate_tbl(l_rate_counter).RATE_DELAY_CODE :=
10363                        l_tmpl_rate_rec.RATE_DELAY_CODE;
10364         END IF;
10365 
10366         l_k_rate_tbl(l_rate_counter).RATE_DELAY_FREQUENCY := p_header_rec.INT_RATE_CON_RATE_DELAY_FREQ;
10367         IF (p_header_rec.INT_RATE_CON_RATE_DELAY_FREQ IS NULL AND NOT(l_no_data) AND
10368             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10369           l_k_rate_tbl(l_rate_counter).RATE_DELAY_FREQUENCY :=
10370                        l_tmpl_rate_rec.RATE_DELAY_FREQUENCY;
10371         END IF;
10372 
10373         l_k_rate_tbl(l_rate_counter).COMPOUNDING_FREQUENCY_CODE := p_header_rec.INT_RATE_CON_CMPND_FREQ_CODE;
10374         IF (p_header_rec.INT_RATE_CON_CMPND_FREQ_CODE IS NULL AND NOT(l_no_data) AND
10375             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10376           l_k_rate_tbl(l_rate_counter).COMPOUNDING_FREQUENCY_CODE :=
10377                        l_tmpl_rate_rec.COMPOUNDING_FREQUENCY_CODE;
10378         END IF;
10379 
10380         IF (p_header_rec.INT_RATE_CON_FORMULA_NAME IS NOT NULL) THEN
10381           l_formula_id := get_formula_id(p_header_rec.INT_RATE_CON_FORMULA_NAME,
10382                                          x_return_status);
10383           IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
10384              --AKP: Todo: set message: Invalid formula name 5024651
10385              okl_api.set_message(
10386                            G_APP_NAME,
10387                            G_INVALID_VALUE,
10388                            'CONTRACT_NUM',
10389                            p_header_rec.contract_number_old,
10390                            'COL_NAME',
10391                            'FORMULA_NAME',
10392                            'COL_VALUE',
10393                            p_header_rec.INT_RATE_CON_FORMULA_NAME
10394                           );
10395 
10396              RAISE header_rule_failed;
10397           END IF;
10398           l_k_rate_tbl(l_rate_counter).CALCULATION_FORMULA_ID := l_formula_id;
10399         ELSE
10400           l_k_rate_tbl(l_rate_counter).CALCULATION_FORMULA_ID := NULL;
10401           IF (p_header_rec.INT_RATE_CON_FORMULA_NAME IS NULL AND NOT(l_no_data) AND
10402               p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10403             l_k_rate_tbl(l_rate_counter).CALCULATION_FORMULA_ID :=
10404                          l_tmpl_rate_rec.CALCULATION_FORMULA_ID;
10405           END IF;
10406         END IF;
10407 
10408 
10409         l_k_rate_tbl(l_rate_counter).CATCHUP_BASIS_CODE := p_header_rec.INT_RATE_CON_CAT_BAS_CODE;
10410         IF (p_header_rec.INT_RATE_CON_CAT_BAS_CODE IS NULL) THEN
10411         IF (p_header_rec.INT_RATE_CON_CAT_BAS_CODE IS NULL AND NOT(l_no_data) AND
10412             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10413           l_k_rate_tbl(l_rate_counter).CATCHUP_BASIS_CODE :=
10414                        l_tmpl_rate_rec.CATCHUP_BASIS_CODE;
10415         ELSE
10416           okl_k_rate_params_pvt.default_k_rate_params(
10417              p_api_version      => 1,
10418              p_init_msg_list    => OKC_API.G_FALSE,
10419              x_return_status    => x_return_status,
10420              x_msg_count        => x_msg_count,
10421              x_msg_data         => x_msg_data,
10422              p_deal_type        => G_DEAL_TYPE,
10423              p_rev_rec_method   => G_REVENUE_RECOGNITION_METHOD,
10424              p_int_calc_basis   => G_INTEREST_CALCULATION_BASIS,
10425              p_column_name      => 'CATCHUP_BASIS_CODE',
10426              p_krpv_rec         => l_k_rate_tbl(l_rate_counter));
10427         END IF;
10428         END IF;
10429 
10430         l_k_rate_tbl(l_rate_counter).CATCHUP_START_DATE := p_header_rec.INT_RATE_CON_CAT_START_DATE;
10431         IF (p_header_rec.INT_RATE_CON_CAT_START_DATE IS NULL AND NOT(l_no_data) AND
10432             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10433           l_k_rate_tbl(l_rate_counter).CATCHUP_START_DATE :=
10434                        l_tmpl_rate_rec.CATCHUP_START_DATE;
10435         END IF;
10436 
10437         l_k_rate_tbl(l_rate_counter).CATCHUP_SETTLEMENT_CODE := p_header_rec.INT_RATE_CON_CAT_STLMNT_CODE;
10438         IF (p_header_rec.INT_RATE_CON_CAT_STLMNT_CODE IS NULL AND NOT(l_no_data) AND
10439             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10440           l_k_rate_tbl(l_rate_counter).CATCHUP_SETTLEMENT_CODE :=
10441                        l_tmpl_rate_rec.CATCHUP_SETTLEMENT_CODE;
10442         END IF;
10443 
10444         l_k_rate_tbl(l_rate_counter).RATE_CHANGE_START_DATE := p_header_rec.INT_RATE_CON_CHG_START_DATE;
10445         IF (p_header_rec.INT_RATE_CON_CHG_START_DATE IS NULL AND NOT(l_no_data) AND
10446             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10447           l_k_rate_tbl(l_rate_counter).RATE_CHANGE_START_DATE :=
10448                        l_tmpl_rate_rec.RATE_CHANGE_START_DATE;
10449         END IF;
10450 
10451         l_k_rate_tbl(l_rate_counter).RATE_CHANGE_FREQUENCY_CODE := p_header_rec.INT_RATE_CON_CHG_FREQ_CODE;
10452         IF (p_header_rec.INT_RATE_CON_CHG_FREQ_CODE IS NULL) THEN
10453         IF (p_header_rec.INT_RATE_CON_CHG_FREQ_CODE IS NULL AND NOT(l_no_data) AND
10454             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10455           l_k_rate_tbl(l_rate_counter).RATE_CHANGE_FREQUENCY_CODE :=
10456                        l_tmpl_rate_rec.RATE_CHANGE_FREQUENCY_CODE;
10457         ELSE
10458           okl_k_rate_params_pvt.default_k_rate_params(
10459              p_api_version      => 1,
10460              p_init_msg_list    => OKC_API.G_FALSE,
10461              x_return_status    => x_return_status,
10462              x_msg_count        => x_msg_count,
10463              x_msg_data         => x_msg_data,
10464              p_deal_type        => G_DEAL_TYPE,
10465              p_rev_rec_method   => G_REVENUE_RECOGNITION_METHOD,
10466              p_int_calc_basis   => G_INTEREST_CALCULATION_BASIS,
10467              p_column_name      => 'DAYS_IN_A_YEAR_CODE',
10468              p_krpv_rec         => l_k_rate_tbl(l_rate_counter));
10469         END IF;
10470         END IF;
10471 
10472         l_k_rate_tbl(l_rate_counter).RATE_CHANGE_VALUE := p_header_rec.INT_RATE_CON_CHG_VALUE;
10473         IF (p_header_rec.INT_RATE_CON_CHG_VALUE IS NULL AND NOT(l_no_data) AND
10474             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10475           l_k_rate_tbl(l_rate_counter).RATE_CHANGE_VALUE :=
10476                        l_tmpl_rate_rec.RATE_CHANGE_VALUE;
10477         END IF;
10478 
10479         l_k_rate_tbl(l_rate_counter).CATCHUP_FREQUENCY_CODE := p_header_rec.INT_RATE_CON_CAT_FREQ_CODE;
10480         IF (p_header_rec.INT_RATE_CON_CAT_FREQ_CODE IS NULL AND NOT(l_no_data) AND
10481             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10482           l_k_rate_tbl(l_rate_counter).CATCHUP_FREQUENCY_CODE :=
10483                        l_tmpl_rate_rec.CATCHUP_FREQUENCY_CODE;
10484         END IF;
10485         l_rate_counter := l_rate_counter + 1;
10486 
10487       ELSE
10488       IF (p_header_rec.INT_RATE_EFFECTIVE_TO_DATE IS NOT NULL OR
10489             p_header_rec.INT_RATE_CON_INDEX_NAME IS NOT NULL OR
10490             p_header_rec.INT_RATE_CON_BASE_RATE IS NOT NULL OR
10491             p_header_rec.INT_RATE_CON_START_DATE IS NOT NULL OR
10492             p_header_rec.INT_RATE_CON_ADDER_RATE IS NOT NULL OR
10493             p_header_rec.INT_RATE_CON_MINIMUM_RATE IS NOT NULL OR
10494             p_header_rec.INT_RATE_CON_MAXIMUM_RATE IS NOT NULL OR
10495             p_header_rec.INT_RATE_CON_PRC_BAS_CODE IS NOT NULL OR
10496             p_header_rec.INT_RATE_CON_DAY_YER_CODE IS NOT NULL OR
10497             p_header_rec.INT_RATE_CON_DAY_MTH_CODE IS NOT NULL OR
10498             p_header_rec.INT_RATE_CON_INT_BAS_CODE IS NOT NULL OR
10499             p_header_rec.INT_RATE_CON_RATE_DELAY_CODE IS NOT NULL OR
10500             p_header_rec.INT_RATE_CON_RATE_DELAY_FREQ IS NOT NULL OR
10501             p_header_rec.INT_RATE_CON_CMPND_FREQ_CODE IS NOT NULL OR
10502             p_header_rec.INT_RATE_CON_FORMULA_NAME IS NOT NULL OR
10503             p_header_rec.INT_RATE_CON_CAT_BAS_CODE IS NOT NULL OR
10504             p_header_rec.INT_RATE_CON_CAT_START_DATE IS NOT NULL OR
10505             p_header_rec.INT_RATE_CON_CAT_STLMNT_CODE IS NOT NULL OR
10506             p_header_rec.INT_RATE_CON_CHG_START_DATE IS NOT NULL OR
10507             p_header_rec.INT_RATE_CON_CHG_FREQ_CODE IS NOT NULL OR
10508             p_header_rec.INT_RATE_CON_CHG_VALUE IS NOT NULL OR
10509             p_header_rec.INT_RATE_CON_CAT_FREQ_CODE IS NOT NULL )
10510         THEN
10511            -- Set error. Effective from date is missing
10512           OKC_API.set_message(p_app_name => G_APP_NAME,
10513                               p_msg_name => G_REQUIRED_VALUE,
10514                               p_token1 => G_COL_NAME_TOKEN,
10515                               p_token1_value => 'Effective_From_Date_Con');
10516           x_return_status := OKC_API.G_RET_STS_ERROR;
10517           RAISE header_rule_failed;
10518 
10519         END IF;
10520 
10521       END IF;
10522 
10523       debug_message('l_rate_counter=' || l_rate_counter);
10524       IF (l_rate_counter > 1) THEN
10525         OKL_K_RATE_PARAMS_PVT.validate_k_rate_params(
10526                                p_api_version             => 1 ,
10527                                p_init_msg_list           => OKC_API.G_FALSE,
10528                                x_return_status           => x_return_status,
10529                                x_msg_count               => x_msg_count,
10530                                x_msg_data                => x_msg_data,
10531                                p_product_id              => G_PRODUCT_ID,
10532                                p_k_rate_tbl              => l_k_rate_tbl);
10533         IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10534            RAISE header_rule_failed;
10535         ELSE
10536           FOR krpv_rec_cnt IN l_k_rate_tbl.FIRST..l_k_rate_tbl.LAST
10537           LOOP
10538             OKL_K_RATE_PARAMS_PVT.create_k_rate_params(
10539                           p_api_version           => 1 ,
10540                           p_init_msg_list         => OKC_API.G_FALSE,
10541                           x_return_status         => x_return_status,
10542                           x_msg_count             => x_msg_count,
10543                           x_msg_data              => x_msg_data,
10544                           p_krpv_rec              => l_k_rate_tbl(krpv_rec_cnt),
10545                           x_krpv_rec              => x_krpv_rec,
10546                           p_validate_flag         => 'N');
10547             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10548                RAISE header_rule_failed;
10549             END IF;
10550           END LOOP;
10551         END IF;
10552       END IF;
10553 
10554       debug_message('Rate creation done...');
10555       -- Rule Group LAFCTG
10556       l_rgpv_rec            := NULL;
10557       l_rgp_id              := NULL;
10558       l_rgpv_rec.rgd_code   := 'LAFCTG';
10559       l_rgpv_rec.chr_id     := p_chr_id;
10560       l_rgpv_rec.dnz_chr_id := p_chr_id;
10561       l_rgpv_rec.cle_id     := NULL;
10562       l_rgpv_rec.rgp_type   := 'KRG';
10563 
10564       l_rulv_rec            := NULL;
10565 
10566       l_factoring_date          := get_canonicaL_date(p_header_rec.factoring_date);
10567       l_factoring_percentage    := p_header_rec.factoring_percentage;
10568       l_factoring_discount_rate := p_header_rec.factoring_discount_rate;
10569 
10570       IF (l_factoring_date IS NULL
10571           OR
10572           l_factoring_percentage IS NULL
10573           OR
10574           l_factoring_discount_rate IS NULL
10575           AND
10576           p_header_rec.template_number IS NOT NULL) THEN
10577          get_contract_rules(
10578                             x_return_status  => x_return_status,
10579                             x_msg_count      => x_msg_count,
10580                             x_msg_data       => x_msg_data,
10581                             p_chr_id         => p_template_id,
10582                             p_cle_id         => NULL,
10583                             p_rgd_code       => 'LAFCTG',
10584                             p_rule_code      => 'LAFCTG',
10585                             x_rulv_tbl       => l_rulv_tbl,
10586                             x_rule_count     => l_rule_count
10587                            );
10588 
10589          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10590             RAISE header_rule_failed;
10591          END IF;
10592 
10593          IF (l_rule_count > 0) THEN
10594             l_factoring_date          := NVL(l_factoring_date,l_rulv_tbl(1).rule_information1);
10595             l_factoring_percentage    := NVL(l_factoring_percentage,l_rulv_tbl(1).rule_information2);
10596             l_factoring_discount_rate := NVL(l_factoring_discount_rate,l_rulv_tbl(1).rule_information3);
10597          END IF;
10598       END IF;
10599 
10600       IF (l_factoring_date IS NOT NULL) THEN
10601          l_rulv_rec                           := NULL;
10602          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
10603          l_rulv_rec.dnz_chr_id                := p_chr_id;
10604          l_rulv_rec.rule_information1         := l_factoring_date;
10605          l_rulv_rec.rule_information_category := 'LAFCTG';
10606          l_rulv_rec.std_template_yn           := 'N';
10607          l_rulv_rec.warn_yn                   := 'N';
10608       END IF;
10609 
10610       IF (l_factoring_percentage IS NOT NULL) THEN
10611          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
10612          l_rulv_rec.dnz_chr_id                := p_chr_id;
10613          l_rulv_rec.rule_information2         := l_factoring_percentage;
10614          l_rulv_rec.rule_information_category := 'LAFCTG';
10615          l_rulv_rec.std_template_yn           := 'N';
10616          l_rulv_rec.warn_yn                   := 'N';
10617       END IF;
10618 
10619       IF (l_factoring_discount_rate IS NOT NULL) THEN
10620          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
10621          l_rulv_rec.dnz_chr_id                := p_chr_id;
10622          l_rulv_rec.rule_information3         := l_factoring_discount_rate;
10623          l_rulv_rec.rule_information_category := 'LAFCTG';
10624          l_rulv_rec.std_template_yn           := 'N';
10625          l_rulv_rec.warn_yn                   := 'N';
10626       END IF;
10627 
10628       create_rule_group_and_rule(
10629                                  x_return_status => x_return_status,
10630                                  x_msg_count     => x_msg_count,
10631                                  x_msg_data      => x_msg_data,
10632                                  p_rgp_id        => l_rgp_id,
10633                                  p_rgpv_rec      => l_rgpv_rec,
10634                                  p_rulv_rec      => l_rulv_rec,
10635                                  x_rgpv_rec      => x_rgpv_rec,
10636                                  x_rulv_rec      => x_rulv_rec
10637                                 );
10638 
10639       l_progress := '1.19';
10640       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10641            x_return_status := OKL_API.G_RET_STS_ERROR;
10642            raise header_rule_failed;
10643       END IF;
10644 
10645       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
10646          l_rgp_id := x_rgpv_rec.id;
10647       END IF;
10648 
10649       debug_message('------>Rule: LAFCTG/LAFCTG processed');
10650       -- Rule Group LAEVEL
10651       l_rgpv_rec            := NULL;
10652       l_rgp_id              := NULL;
10653       l_rgpv_rec.rgd_code   := 'LAEVEL';
10654       l_rgpv_rec.chr_id     := p_chr_id;
10655       l_rgpv_rec.dnz_chr_id := p_chr_id;
10656       l_rgpv_rec.cle_id     := NULL;
10657       l_rgpv_rec.rgp_type   := 'KRG';
10658 
10659       l_rulv_rec := NULL;
10660 
10661       l_evergreen_eligible_flag := p_header_rec.evergreen_eligible_flag;
10662 
10663       IF (l_evergreen_eligible_flag IS NULL
10664           AND p_header_rec.template_number IS NOT NULL) THEN
10665          get_contract_rules(
10666                             x_return_status  => x_return_status,
10667                             x_msg_count      => x_msg_count,
10668                             x_msg_data       => x_msg_data,
10669                             p_chr_id         => p_template_id,
10670                             p_cle_id         => NULL,
10671                             p_rgd_code       => 'LAEVEL',
10672                             p_rule_code      => 'LAEVEL',
10673                             x_rulv_tbl       => l_rulv_tbl,
10674                             x_rule_count     => l_rule_count
10675                            );
10676 
10677          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10678             RAISE header_rule_failed;
10679          END IF;
10680 
10681          IF (l_rule_count > 0) THEN
10682             l_evergreen_eligible_flag  := l_rulv_tbl(1).rule_information1;
10683          END IF;
10684       END IF;
10685 
10686       IF (l_evergreen_eligible_flag IS NOT NULL) THEN
10687          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
10688          l_rulv_rec.dnz_chr_id                := p_chr_id;
10689          l_rulv_rec.rule_information1         := l_evergreen_eligible_flag;
10690          l_rulv_rec.rule_information_category := 'LAEVEL';
10691          l_rulv_rec.std_template_yn           := 'N';
10692          l_rulv_rec.warn_yn                   := 'N';
10693       END IF;
10694 
10695       create_rule_group_and_rule(
10696                                  x_return_status => x_return_status,
10697                                  x_msg_count     => x_msg_count,
10698                                  x_msg_data      => x_msg_data,
10699                                  p_rgp_id        => l_rgp_id,
10700                                  p_rgpv_rec      => l_rgpv_rec,
10701                                  p_rulv_rec      => l_rulv_rec,
10702                                  x_rgpv_rec      => x_rgpv_rec,
10703                                  x_rulv_rec      => x_rulv_rec
10704                                 );
10705 
10706       l_progress := '1.20';
10707       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10708            x_return_status := OKL_API.G_RET_STS_ERROR;
10709            raise header_rule_failed;
10710       END IF;
10711 
10712       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
10713          l_rgp_id := x_rgpv_rec.id;
10714       END IF;
10715 
10716       debug_message('------>Rule: LAEVEL/LAEVEL processed');
10717       l_rulv_rec := NULL;
10718 
10719       l_evergreen_passthru_fees    := TO_CHAR(p_header_rec.evergreen_passthru_fees);
10720       l_evergreen_passthru_percent := TO_CHAR(p_header_rec.evergreen_passthru_percent);
10721 
10722       IF (l_evergreen_passthru_fees IS NULL
10723           OR
10724           l_evergreen_passthru_percent IS NULL
10725           AND
10726           p_header_rec.template_number IS NOT NULL) THEN
10727          get_contract_rules(
10728                             x_return_status  => x_return_status,
10729                             x_msg_count      => x_msg_count,
10730                             x_msg_data       => x_msg_data,
10731                             p_chr_id         => p_template_id,
10732                             p_cle_id         => NULL,
10733                             p_rgd_code       => 'LAEVEL',
10734                             p_rule_code      => 'LAEVPT',
10735                             x_rulv_tbl       => l_rulv_tbl,
10736                             x_rule_count     => l_rule_count
10737                            );
10738 
10739          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10740             RAISE header_rule_failed;
10741          END IF;
10742 
10743          IF (l_rule_count > 0) THEN
10744             l_evergreen_passthru_fees    := NVL(l_evergreen_passthru_fees, l_rulv_tbl(1).rule_information1);
10745             l_evergreen_passthru_percent := NVL(l_evergreen_passthru_percent, l_rulv_tbl(1).rule_information2);
10746          END IF;
10747       END IF;
10748 
10749       IF (l_evergreen_passthru_fees IS NOT NULL) THEN
10750          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
10751          l_rulv_rec.dnz_chr_id                := p_chr_id;
10752          l_rulv_rec.rule_information1         := l_evergreen_passthru_fees;
10753          l_rulv_rec.rule_information_category := 'LAEVPT';
10754          l_rulv_rec.std_template_yn           := 'N';
10755          l_rulv_rec.warn_yn                   := 'N';
10756       END IF;
10757 
10758       IF (l_evergreen_passthru_percent IS NOT NULL) THEN
10759          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
10760          l_rulv_rec.dnz_chr_id                := p_chr_id;
10761          l_rulv_rec.rule_information2         := l_evergreen_passthru_percent;
10762          l_rulv_rec.rule_information_category := 'LAEVPT';
10763          l_rulv_rec.std_template_yn           := 'N';
10764          l_rulv_rec.warn_yn                   := 'N';
10765       END IF;
10766 
10767       create_rule_group_and_rule(
10768                                  x_return_status => x_return_status,
10769                                  x_msg_count     => x_msg_count,
10770                                  x_msg_data      => x_msg_data,
10771                                  p_rgp_id        => l_rgp_id,
10772                                  p_rgpv_rec      => l_rgpv_rec,
10773                                  p_rulv_rec      => l_rulv_rec,
10774                                  x_rgpv_rec      => x_rgpv_rec,
10775                                  x_rulv_rec      => x_rulv_rec
10776                                 );
10777 
10778       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10779            x_return_status := OKL_API.G_RET_STS_ERROR;
10780            raise header_rule_failed;
10781       END IF;
10782 
10783       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
10784          l_rgp_id := x_rgpv_rec.id;
10785       END IF;
10786       debug_message('------>Rule: LAEVEL/LAEVPT processed');
10787       l_rulv_rec := NULL;
10788 
10789       l_rgpv_rec            := NULL;
10790       l_rgp_id              := NULL;
10791       l_rgpv_rec.rgd_code   := 'LABILL';
10792       l_rgpv_rec.chr_id     := p_chr_id;
10793       l_rgpv_rec.dnz_chr_id := p_chr_id;
10794       l_rgpv_rec.cle_id     := NULL;
10795       l_rgpv_rec.rgp_type   := 'KRG';
10796 
10797 /* Rule Migration
10798 
10799       x_bill_to_address_id := NULL;
10800 
10801       IF (p_header_rec.bill_to_address_id IS NOT NULL
10802           OR
10803           p_header_rec.bill_to_address IS NOT NULL) THEN
10804 
10805           get_bill_to_address_id(
10806                              x_return_status           => x_return_status,
10807                              x_msg_count               => x_msg_count,
10808                              x_msg_data                => x_msg_data,
10809                              p_contract_number         => p_header_rec.contract_number,
10810                              p_auth_org_id             => p_header_rec.authoring_org_id,
10811                              p_bill_to_address_id      => p_header_rec.bill_to_address_id,
10812                              p_bill_to_address         => p_header_rec.bill_to_address,
10813                              p_customer_account_id     => x_customer_account_id,
10814                              x_bill_to_address_id      => x_bill_to_address_id
10815                             );
10816 
10817           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10818              x_return_status := OKL_API.G_RET_STS_ERROR;
10819              raise header_rule_failed;
10820           END IF;
10821 
10822       ELSE
10823          IF (p_header_rec.template_number IS NOT NULL) THEN
10824             get_contract_rules(
10825                                x_return_status  => x_return_status,
10826                                x_msg_count      => x_msg_count,
10827                                x_msg_data       => x_msg_data,
10828                                p_chr_id         => p_template_id,
10829                                p_cle_id         => NULL,
10830                                p_rgd_code       => 'LABILL',
10831                                p_rule_code      => 'BTO',
10832                                x_rulv_tbl       => l_rulv_tbl,
10833                                x_rule_count     => l_rule_count
10834                               );
10835 
10836             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10837                RAISE header_rule_failed;
10838             END IF;
10839 
10840             IF (l_rule_count > 0) THEN
10841                x_bill_to_address_id  := TO_NUMBER(l_rulv_tbl(1).object1_id1);
10842             END IF;
10843         END IF;
10844       END IF;
10845 
10846       IF (x_bill_to_address_id IS NOT NULL) THEN
10847          l_rgpv_rec            := NULL;
10848          l_rgp_id              := NULL;
10849          l_rgpv_rec.rgd_code   := 'LABILL';
10850          l_rgpv_rec.chr_id     := p_chr_id;
10851          l_rgpv_rec.dnz_chr_id := p_chr_id;
10852          l_rgpv_rec.cle_id     := NULL;
10853          l_rgpv_rec.rgp_type   := 'KRG';
10854 
10855          l_rulv_rec                           := NULL;
10856          l_rulv_rec.jtot_object1_code         := 'OKX_BILLTO';
10857          l_rulv_rec.object1_id1               := TO_CHAR(x_bill_to_address_id);
10858          l_rulv_rec.object1_id2               := '#';
10859          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
10860          l_rulv_rec.dnz_chr_id                := p_chr_id;
10861          l_rulv_rec.rule_information_category := 'BTO';
10862          l_rulv_rec.std_template_yn           := 'N';
10863          l_rulv_rec.warn_yn                   := 'N';
10864       END IF;
10865 
10866       create_rule_group_and_rule(
10867                                  x_return_status => x_return_status,
10868                                  x_msg_count     => x_msg_count,
10869                                  x_msg_data      => x_msg_data,
10870                                  p_rgp_id        => l_rgp_id,
10871                                  p_rgpv_rec      => l_rgpv_rec,
10872                                  p_rulv_rec      => l_rulv_rec,
10873                                  x_rgpv_rec      => x_rgpv_rec,
10874                                  x_rulv_rec      => x_rulv_rec
10875                                 );
10876 
10877       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10878            x_return_status := OKL_API.G_RET_STS_ERROR;
10879            raise header_rule_failed;
10880       END IF;
10881 
10882       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
10883          l_rgp_id := x_rgpv_rec.id;
10884       END IF;
10885 
10886       debug_message('------>Rule: LABILL/BTO processed');
10887 */
10888       IF (p_header_rec.customer_id IS NOT NULL
10889           OR
10890           p_header_rec.customer_number IS NOT NULL) THEN
10891           x_return_status := validate_customer(
10892                                                p_contract_number => p_header_rec.contract_number_old,
10893                                                p_customer_id     => p_header_rec.customer_id,
10894                                                p_customer_number => p_header_rec.customer_number,
10895                                                x_id1             => l_customer_id
10896                                               );
10897          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10898               x_return_status := OKL_API.G_RET_STS_ERROR;
10899               raise header_rule_failed;
10900          END IF;
10901       ELSE
10902          -- Get customer info from template_contract
10903          OPEN temp_role_csr(p_template_id);
10904          FETCH temp_role_csr INTO l_customer_id;
10905          CLOSE temp_role_csr;
10906       END IF;
10907 
10908       x_bank_account_id := NULL;
10909       IF (p_header_rec.bank_account_id     IS NOT NULL
10910           OR
10911           p_header_rec.bank_account_number IS NOT NULL ) THEN
10912 
10913          get_bank_account_id(
10914                               x_return_status           => x_return_status,
10915                               x_msg_count               => x_msg_count,
10916                               x_msg_data                => x_msg_data,
10917                               p_contract_number         => p_header_rec.contract_number_old,
10918                               p_auth_org_id             => p_header_rec.authoring_org_id,
10919                               p_bank_account_id         => p_header_rec.bank_account_id,
10920                               p_bank_account_number     => p_header_rec.bank_account_number,
10921                               p_customer_account_id     => g_customer_account_id,
10922                               p_cust_site_id            => g_bill_to_address_id,
10923                               x_bank_account_id         => x_bank_account_id
10924                              );
10925 
10926          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10927               x_return_status := OKL_API.G_RET_STS_ERROR;
10928               raise header_rule_failed;
10929          END IF;
10930 
10931       ELSE
10932         IF (p_header_rec.template_number IS NOT NULL) THEN
10933             get_contract_rules(
10934                                x_return_status  => x_return_status,
10935                                x_msg_count      => x_msg_count,
10936                                x_msg_data       => x_msg_data,
10937                                p_chr_id         => p_template_id,
10938                                p_cle_id         => NULL,
10939                                p_rgd_code       => 'LABILL',
10940                                p_rule_code      => 'LABACC',
10941                                x_rulv_tbl       => l_rulv_tbl,
10942                                x_rule_count     => l_rule_count
10943                               );
10944 
10945             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10946                RAISE header_rule_failed;
10947             END IF;
10948 
10949             IF (l_rule_count > 0) THEN
10950                x_bank_account_id  := TO_NUMBER(l_rulv_tbl(1).object1_id1);
10951             END IF;
10952         END IF;
10953       END IF;
10954 
10955       IF (x_bank_account_id IS NOT NULL) THEN
10956          l_rulv_rec                           := NULL;
10957          l_rulv_rec.jtot_object1_code         := 'OKX_CUSTBKAC';
10958          l_rulv_rec.object1_id1               := TO_CHAR(x_bank_account_id);
10959          l_rulv_rec.object1_id2               := '#';
10960          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
10961          l_rulv_rec.dnz_chr_id                := p_chr_id;
10962          l_rulv_rec.rule_information_category := 'LABACC';
10963          l_rulv_rec.std_template_yn           := 'N';
10964          l_rulv_rec.warn_yn                   := 'N';
10965 
10966          create_rule_group_and_rule(
10967                                     x_return_status => x_return_status,
10968                                     x_msg_count     => x_msg_count,
10969                                     x_msg_data      => x_msg_data,
10970                                     p_rgp_id        => l_rgp_id,
10971                                     p_rgpv_rec      => l_rgpv_rec,
10972                                     p_rulv_rec      => l_rulv_rec,
10973                                     x_rgpv_rec      => x_rgpv_rec,
10974                                     x_rulv_rec      => x_rulv_rec
10975                                    );
10976 
10977          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10978               x_return_status := OKL_API.G_RET_STS_ERROR;
10979               raise header_rule_failed;
10980          END IF;
10981 
10982          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
10983             l_rgp_id := x_rgpv_rec.id;
10984          END IF;
10985 
10986       END IF; --bank_account_id
10987 
10988       debug_message('------>Rule: LABILL/LABACC processed');
10989       l_rulv_rec                           := NULL;
10990 
10991       l_reason_for_invoice_review := p_header_rec.reason_for_invoice_review;
10992       l_invoice_review_until_date := get_canonicaL_date(p_header_rec.invoice_review_until_date);
10993 
10994       IF (l_reason_for_invoice_review IS NULL
10995           OR
10996           l_invoice_review_until_date IS NULL
10997           AND
10998           p_header_rec.template_number IS NOT NULL) THEN
10999          get_contract_rules(
11000                             x_return_status  => x_return_status,
11001                             x_msg_count      => x_msg_count,
11002                             x_msg_data       => x_msg_data,
11003                             p_chr_id         => p_template_id,
11004                             p_cle_id         => NULL,
11005                             p_rgd_code       => 'LABILL',
11006                             p_rule_code      => 'LAINPR',
11007                             x_rulv_tbl       => l_rulv_tbl,
11008                             x_rule_count     => l_rule_count
11009                            );
11010 
11011          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11012             RAISE header_rule_failed;
11013          END IF;
11014 
11015          IF (l_rule_count > 0) THEN
11016             l_reason_for_invoice_review := NVL(l_reason_for_invoice_review,l_rulv_tbl(1).rule_information1);
11017             l_invoice_review_until_date := NVL(l_invoice_review_until_date,l_rulv_tbl(1).rule_information2);
11018          END IF;
11019       END IF;
11020 
11021       IF (l_reason_for_invoice_review IS NOT NULL) THEN
11022           l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11023           l_rulv_rec.dnz_chr_id                := p_chr_id;
11024           l_rulv_rec.rule_information1         := l_reason_for_invoice_review;
11025           l_rulv_rec.rule_information_category := 'LAINPR';
11026           l_rulv_rec.std_template_yn           := 'N';
11027           l_rulv_rec.warn_yn                   := 'N';
11028       END IF;
11029 
11030       IF (l_invoice_review_until_date IS NOT NULL) THEN
11031           l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11032           l_rulv_rec.dnz_chr_id                := p_chr_id;
11033           l_rulv_rec.rule_information2         := l_invoice_review_until_date;
11034           l_rulv_rec.rule_information_category := 'LAINPR';
11035           l_rulv_rec.std_template_yn           := 'N';
11036           l_rulv_rec.warn_yn                   := 'N';
11037       END IF;
11038 
11039       create_rule_group_and_rule(
11040                                  x_return_status => x_return_status,
11041                                  x_msg_count     => x_msg_count,
11042                                  x_msg_data      => x_msg_data,
11043                                  p_rgp_id        => l_rgp_id,
11044                                  p_rgpv_rec      => l_rgpv_rec,
11045                                  p_rulv_rec      => l_rulv_rec,
11046                                  x_rgpv_rec      => x_rgpv_rec,
11047                                  x_rulv_rec      => x_rulv_rec
11048                                 );
11049 
11050       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11051            x_return_status := OKL_API.G_RET_STS_ERROR;
11052            raise header_rule_failed;
11053       END IF;
11054 
11055       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
11056          l_rgp_id := x_rgpv_rec.id;
11057       END IF;
11058 
11059       debug_message('------>Rule: LABILL/LAINPR processed');
11060       x_invoice_format_id := NULL;
11061       IF (p_header_rec.invoice_format_id   IS NOT NULL
11062           OR
11063           p_header_rec.invoice_format_code IS NOT NULL ) THEN
11064          get_invoice_format_id(
11065                                x_return_status           => x_return_status,
11066                                x_msg_count               => x_msg_count,
11067                                x_msg_data                => x_msg_data,
11068                                p_contract_number         => p_header_rec.contract_number_old,
11069                                p_invoice_format_id       => p_header_rec.invoice_format_id,
11070                                p_invoice_format_code     => p_header_rec.invoice_format_code,
11071                                x_invoice_format_id       => x_invoice_format_id,
11072                                x_invoice_format_name     => x_invoice_format_name
11073                               );
11074 
11075          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11076              x_return_status := OKL_API.G_RET_STS_ERROR;
11077              raise header_rule_failed;
11078          END IF;
11079       END IF;
11080 
11081       x_cash_appl_rule_id := NULL;
11082       IF (p_header_rec.cash_appl_rule_name IS NOT NULL) THEN
11083          get_cash_appl_rule_id (
11084                                 x_return_status           => x_return_status,
11085                                 x_msg_count               => x_msg_count,
11086                                 x_msg_data                => x_msg_data,
11087                                 p_contract_number         => p_header_rec.contract_number_old,
11088                                 p_org_id                  => p_header_rec.authoring_org_id,
11089                                 p_cash_appl_rule_name     => p_header_rec.cash_appl_rule_name,
11090                                 x_cash_appl_rule_id       => x_cash_appl_rule_id
11091                                );
11092 
11093          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11094              x_return_status := OKL_API.G_RET_STS_ERROR;
11095              raise header_rule_failed;
11096          END IF;
11097 
11098       END IF;
11099 
11100       IF (p_header_rec.invoice_format_id IS NULL
11101           OR
11102           p_header_rec.invoice_format_code IS NULL
11103           OR
11104           p_header_rec.cash_appl_rule_name IS NULL
11105           OR
11106           p_header_rec.review_invoice_flag IS NULL
11107 	  OR --hariven bug 5359935
11108 		  p_header_rec.print_lead_days IS NULL --hariven bug 5359935
11109           AND
11110           p_header_rec.template_number IS NOT NULL) THEN
11111 
11112             get_contract_rules(
11113                                x_return_status  => x_return_status,
11114                                x_msg_count      => x_msg_count,
11115                                x_msg_data       => x_msg_data,
11116                                p_chr_id         => p_template_id,
11117                                p_cle_id         => NULL,
11118                                p_rgd_code       => 'LABILL',
11119                                p_rule_code      => 'LAINVD',
11120                                x_rulv_tbl       => l_rulv_tbl,
11121                                x_rule_count     => l_rule_count
11122                               );
11123 
11124             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11125                RAISE header_rule_failed;
11126             END IF;
11127 
11128             IF (l_rule_count > 0) THEN
11129 
11130                --sechawla 13-may-09 6826580 : assign ID instead of name
11131               -- x_invoice_format_name  := l_rulv_tbl(1).rule_information1;
11132                x_invoice_format_id  := l_rulv_tbl(1).rule_information1;
11133 
11134                l_review_invoice_flag  := NVL(p_header_rec.review_invoice_flag,
11135                                              l_rulv_tbl(1).rule_information4);
11136 
11137 					     l_print_lead_days      := NVL(p_header_rec.print_lead_days, --hariven bug 5359935
11138                                              l_rulv_tbl(1).rule_information3); --hariven bug 5359935
11139 
11140                x_cash_appl_rule_id    := NVL(x_cash_appl_rule_id, l_rulv_tbl(1).object1_id1);
11141             END IF;
11142       END IF;
11143 
11144       l_rulv_rec := NULL;
11145 
11146       --sechawla 13-may-09 6826580 : assign ID instead of name
11147       --IF (x_invoice_format_name IS NOT NULL) THEN
11148       IF (x_invoice_format_id IS NOT NULL) THEN
11149          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11150          l_rulv_rec.dnz_chr_id                := p_chr_id;
11151 
11152 		 --sechawla 13-may-09 6826580 : assign ID instead of name
11153          --l_rulv_rec.rule_information1         := x_invoice_format_name;
11154          l_rulv_rec.rule_information1         := x_invoice_format_id;
11155 
11156          l_rulv_rec.rule_information_category := 'LAINVD';
11157          l_rulv_rec.std_template_yn           := 'N';
11158          l_rulv_rec.warn_yn                   := 'N';
11159       END IF;
11160 
11161       IF (NVL(l_review_invoice_flag, p_header_rec.review_invoice_flag) IS NOT NULL) THEN
11162          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11163          l_rulv_rec.dnz_chr_id                := p_chr_id;
11164          l_rulv_rec.rule_information4         := NVL(l_review_invoice_flag, p_header_rec.review_invoice_flag);
11165          l_rulv_rec.rule_information_category := 'LAINVD';
11166          l_rulv_rec.std_template_yn           := 'N';
11167          l_rulv_rec.warn_yn                   := 'N';
11168       END IF;
11169 
11170       --hariven bug 5359935 start
11171       IF (NVL(l_print_lead_days, p_header_rec.print_lead_days) IS NOT NULL) THEN
11172          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11173          l_rulv_rec.dnz_chr_id                := p_chr_id;
11174          l_rulv_rec.rule_information3         := NVL(l_print_lead_days, p_header_rec.print_lead_days);
11175          l_rulv_rec.rule_information_category := 'LAINVD';
11176          l_rulv_rec.std_template_yn           := 'N';
11177          l_rulv_rec.warn_yn                   := 'N';
11178       END IF;
11179      --hariven bug 5359935 End
11180 
11181       IF (x_cash_appl_rule_id IS NOT NULL) THEN
11182          l_rulv_rec.jtot_object1_code         := 'OKL_CASHAPPL';
11183          l_rulv_rec.object1_id1               := TO_CHAR(x_cash_appl_rule_id);
11184          l_rulv_rec.object1_id2               := '#';
11185          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11186          l_rulv_rec.dnz_chr_id                := p_chr_id;
11187          l_rulv_rec.rule_information_category := 'LAINVD';
11188          l_rulv_rec.std_template_yn           := 'N';
11189          l_rulv_rec.warn_yn                   := 'N';
11190       END IF;
11191 
11192       create_rule_group_and_rule(
11193                                  x_return_status => x_return_status,
11194                                  x_msg_count     => x_msg_count,
11195                                  x_msg_data      => x_msg_data,
11196                                  p_rgp_id        => l_rgp_id,
11197                                  p_rgpv_rec      => l_rgpv_rec,
11198                                  p_rulv_rec      => l_rulv_rec,
11199                                  x_rgpv_rec      => x_rgpv_rec,
11200                                  x_rulv_rec      => x_rulv_rec
11201                                 );
11202 
11203       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11204            x_return_status := OKL_API.G_RET_STS_ERROR;
11205            raise header_rule_failed;
11206       END IF;
11207 
11208       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- Bug 5085099
11209          l_rgp_id := x_rgpv_rec.id;
11210       END IF;
11211 
11212       debug_message('------>Rule: LABILL/LAINVD processed');
11213       x_payment_method_id := NULL;
11214       IF (p_header_rec.payment_method_id IS NOT NULL
11215           OR
11216           p_header_rec.payment_method IS NOT NULL) THEN
11217          get_payment_method_id(
11218                                x_return_status           => x_return_status,
11219                                x_msg_count               => x_msg_count,
11220                                x_msg_data                => x_msg_data,
11221                                p_contract_number         => p_header_rec.contract_number_old,
11222                                p_customer_account_id     => g_customer_account_id,
11223                                p_bill_to_address_id      => g_bill_to_address_id,  -- got from get_bill_to_address_id() above
11224                                p_payment_method_id       => p_header_rec.payment_method_id,
11225                                p_payment_method          => p_header_rec.payment_method,
11226                                x_payment_method_id       => x_payment_method_id
11227                               );
11228 
11229          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11230               x_return_status := OKL_API.G_RET_STS_ERROR;
11231               raise header_rule_failed;
11232          END IF;
11233 
11234       ELSE
11235          IF (p_header_rec.template_number IS NOT NULL) THEN
11236             get_contract_rules(
11237                                x_return_status  => x_return_status,
11238                                x_msg_count      => x_msg_count,
11239                                x_msg_data       => x_msg_data,
11240                                p_chr_id         => p_template_id,
11241                                p_cle_id         => NULL,
11242                                p_rgd_code       => 'LABILL',
11243                                p_rule_code      => 'LAPMTH',
11244                                x_rulv_tbl       => l_rulv_tbl,
11245                                x_rule_count     => l_rule_count
11246                               );
11247 
11248             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11249                RAISE header_rule_failed;
11250             END IF;
11251 
11252             IF (l_rule_count > 0) THEN
11253                x_payment_method_id := l_rulv_tbl(1).object1_id1;
11254             END IF;
11255          END IF;
11256       END IF;
11257       --debug_message('2PMNT ID: '||x_payment_method_id);
11258 
11259       l_rulv_rec := NULL;
11260       IF (x_payment_method_id IS NOT NULL) THEN
11261          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11262          l_rulv_rec.dnz_chr_id                := p_chr_id;
11263          l_rulv_rec.jtot_object1_code         := 'OKX_RCPTMTH';
11264          l_rulv_rec.object1_id1               := TO_CHAR(x_payment_method_id);
11265          l_rulv_rec.object1_id2               := '#';
11266          l_rulv_rec.rule_information_category := 'LAPMTH';
11267          l_rulv_rec.std_template_yn           := 'N';
11268          l_rulv_rec.warn_yn                   := 'N';
11269       END IF;
11270 
11271       create_rule_group_and_rule(
11272                                  x_return_status => x_return_status,
11273                                  x_msg_count     => x_msg_count,
11274                                  x_msg_data      => x_msg_data,
11275                                  p_rgp_id        => l_rgp_id,
11276                                  p_rgpv_rec      => l_rgpv_rec,
11277                                  p_rulv_rec      => l_rulv_rec,
11278                                  x_rgpv_rec      => x_rgpv_rec,
11279                                  x_rulv_rec      => x_rulv_rec
11280                                 );
11281 
11282       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11283            x_return_status := OKL_API.G_RET_STS_ERROR;
11284            raise header_rule_failed;
11285       END IF;
11286 
11287       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
11288          l_rgp_id := x_rgpv_rec.id;
11289       END IF;
11290 
11291       debug_message('------>Rule: LABILL/LAPMTH processed');
11292       -- Rule Group LACPLN
11293       l_rgpv_rec            := NULL;
11294       l_rgp_id              := NULL;
11295       l_rgpv_rec.rgd_code   := 'LACPLN';
11296       l_rgpv_rec.chr_id     := p_chr_id;
11297       l_rgpv_rec.dnz_chr_id := p_chr_id;
11298       l_rgpv_rec.cle_id     := NULL;
11299       l_rgpv_rec.rgp_type   := 'KRG';
11300 
11301       l_capitalize_flag := p_header_rec.capitalize_flag;
11302 
11303       IF (l_capitalize_flag IS NULL
11304           AND
11305           p_header_rec.template_number IS NOT NULL) THEN
11306          get_contract_rules(
11307                             x_return_status  => x_return_status,
11308                             x_msg_count      => x_msg_count,
11309                             x_msg_data       => x_msg_data,
11310                             p_chr_id         => p_template_id,
11311                             p_cle_id         => NULL,
11312                             p_rgd_code       => 'LACPLN',
11313                             p_rule_code      => 'LACPLN',
11314                             x_rulv_tbl       => l_rulv_tbl,
11315                             x_rule_count     => l_rule_count
11316                            );
11317 
11318          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11319             RAISE header_rule_failed;
11320          END IF;
11321 
11322          IF (l_rule_count > 0) THEN
11323             l_capitalize_flag  := l_rulv_tbl(1).rule_information1;
11324          END IF;
11325       END IF;
11326 
11327       IF (p_header_rec.capitalize_flag IS NOT NULL) THEN
11328 
11329          l_rulv_rec                           := NULL;
11330          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11331          l_rulv_rec.dnz_chr_id                := p_chr_id;
11332          l_rulv_rec.rule_information1         := p_header_rec.capitalize_flag;
11333          l_rulv_rec.rule_information_category := 'LACPLN';
11334          l_rulv_rec.std_template_yn           := 'N';
11335          l_rulv_rec.warn_yn                   := 'N';
11336 
11337          create_rule_group_and_rule(
11338                                     x_return_status => x_return_status,
11339                                     x_msg_count     => x_msg_count,
11340                                     x_msg_data      => x_msg_data,
11341                                     p_rgp_id        => l_rgp_id,
11342                                     p_rgpv_rec      => l_rgpv_rec,
11343                                     p_rulv_rec      => l_rulv_rec,
11344                                     x_rgpv_rec      => x_rgpv_rec,
11345                                     x_rulv_rec      => x_rulv_rec
11346                                    );
11347 
11348          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11349             raise header_rule_failed;
11350          END IF;
11351 
11352          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
11353             l_rgp_id := x_rgpv_rec.id;
11354          END IF;
11355 
11356       END IF; -- capitalize
11357 
11358       debug_message('------>Rule: LACPLN/LACPLN processed');
11359       -- Rule Group LANNTF
11360       l_rgpv_rec            := NULL;
11361       l_rgp_id              := NULL;
11362       l_rgpv_rec.rgd_code   := 'LANNTF';
11363       l_rgpv_rec.chr_id     := p_chr_id;
11364       l_rgpv_rec.dnz_chr_id := p_chr_id;
11365       l_rgpv_rec.cle_id     := NULL;
11366       l_rgpv_rec.rgp_type   := 'KRG';
11367 
11368       l_non_notification_flag := p_header_rec.non_notification_flag;
11369 
11370       IF (l_non_notification_flag IS NULL
11371           AND
11372           p_header_rec.template_number IS NOT NULL) THEN
11373           get_contract_rules(
11374                              x_return_status  => x_return_status,
11375                              x_msg_count      => x_msg_count,
11376                              x_msg_data       => x_msg_data,
11377                              p_chr_id         => p_template_id,
11378                              p_cle_id         => NULL,
11379                              p_rgd_code       => 'LANNTF',
11380                              p_rule_code      => 'LANNTF',
11381                              x_rulv_tbl       => l_rulv_tbl,
11382                              x_rule_count     => l_rule_count
11383                             );
11384 
11385           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11386              RAISE header_rule_failed;
11387           END IF;
11388 
11389           IF (l_rule_count > 0) THEN
11390              l_non_notification_flag  := l_rulv_tbl(1).rule_information1;
11391           END IF;
11392       END IF;
11393 
11394       IF (l_non_notification_flag IS NOT NULL) THEN
11395 
11396          l_rulv_rec                           := NULL;
11397          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11398          l_rulv_rec.dnz_chr_id                := p_chr_id;
11399          l_rulv_rec.rule_information1         := l_non_notification_flag;
11400          l_rulv_rec.rule_information_category := 'LANNTF';
11401          l_rulv_rec.std_template_yn           := 'N';
11402          l_rulv_rec.warn_yn                   := 'N';
11403 
11404          create_rule_group_and_rule(
11405                                     x_return_status => x_return_status,
11406                                     x_msg_count     => x_msg_count,
11407                                     x_msg_data      => x_msg_data,
11408                                     p_rgp_id        => l_rgp_id,
11409                                     p_rgpv_rec      => l_rgpv_rec,
11410                                     p_rulv_rec      => l_rulv_rec,
11411                                     x_rgpv_rec      => x_rgpv_rec,
11412                                     x_rulv_rec      => x_rulv_rec
11413                                    );
11414 
11415          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11416             raise header_rule_failed;
11417          END IF;
11418 
11419          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
11420             l_rgp_id := x_rgpv_rec.id;
11421          END IF;
11422 
11423       END IF; -- non_notification
11424       debug_message('------>Rule: LANNTF/LANNTF processed');
11425 
11426       -- Rule Group LARVIN -- DDD
11427       l_rgpv_rec            := NULL;
11428       l_rgp_id              := NULL;
11429       l_rgpv_rec.rgd_code   := 'LARVIN';
11430       l_rgpv_rec.chr_id     := p_chr_id;
11431       l_rgpv_rec.dnz_chr_id := p_chr_id;
11432       l_rgpv_rec.cle_id     := NULL;
11433       l_rgpv_rec.rgp_type   := 'KRG';
11434 
11435       l_rulv_rec            := NULL;
11436       l_rvi_auto_calculate_flag := p_header_rec.rvi_auto_calculate_flag;
11437 
11438       IF (l_rvi_auto_calculate_flag IS NULL
11439           AND
11440           p_header_rec.template_number IS NOT NULL) THEN
11441          get_contract_rules(
11442                             x_return_status  => x_return_status,
11443                             x_msg_count      => x_msg_count,
11444                             x_msg_data       => x_msg_data,
11445                             p_chr_id         => p_template_id,
11446                             p_cle_id         => NULL,
11447                             p_rgd_code       => 'LARVIN',
11448                             p_rule_code      => 'LARVAU',
11449                             x_rulv_tbl       => l_rulv_tbl,
11450                             x_rule_count     => l_rule_count
11451                            );
11452 
11453          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11454             RAISE header_rule_failed;
11455          END IF;
11456 
11457          IF (l_rule_count > 0) THEN
11458             l_rvi_auto_calculate_flag  := l_rulv_tbl(1).rule_information1;
11459          END IF;
11460       END IF;
11461 
11462       IF (l_rvi_auto_calculate_flag IS NOT NULL) THEN
11463 
11464          -- Bug 4655611
11465          IF (NVL(l_rvi_auto_calculate_flag,'N') = 'Y') THEN
11466            -- Validate rvi stream
11467            OPEN contract_csr(p_chr_id);
11468            FETCH contract_csr INTO l_contract_number,l_contract_start_date;
11469 
11470            IF contract_csr%NOTFOUND THEN
11471              x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
11472              CLOSE contract_csr;
11473              OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
11474                                  p_msg_name     => 'OKL_LLA_CHR_ID');
11475              RAISE header_rule_failed;
11476            END IF;
11477 
11478            CLOSE contract_csr;
11479            debug_message('After close_contract_csr...');
11480 
11481            l_rvi_stream_code := p_header_rec.RVI_STREAM_CODE;
11482            l_rvi_stream_purpose_code := p_header_rec.RVI_STREAM_PURPOSE_CODE;
11483            debug_message('l_rvi_stream_code=' || l_rvi_stream_code);
11484            debug_message('l_rvi_stream_purpose_code=' || l_rvi_stream_purpose_code);
11485            IF ((l_rvi_stream_code IS NOT NULL AND
11486                 l_rvi_stream_purpose_code IS NULL) OR
11487                (l_rvi_stream_code IS NULL AND
11488                 l_rvi_stream_purpose_code IS NOT NULL)) THEN
11489 
11490                   okl_api.set_message(
11491                                       G_APP_NAME,
11492                                       G_INVALID_VALUE,
11493                                       'CONTRACT_NUM',
11494                                       l_contract_number, --||'/'||TO_CHAR(p_line_number),
11495                                      'COL_NAME',
11496                                      'RVI_STREAM_CODE, RVI_STREAM_PURPOSE_CODE',
11497                                      'COL_VALUE',
11498                                      l_rvi_stream_code||', '||l_rvi_stream_purpose_code
11499                                     );
11500                   x_return_status := OKL_API.G_RET_STS_ERROR;
11501                   RAISE header_rule_failed;
11502 
11503            ELSIF (l_rvi_stream_code IS NOT NULL AND
11504                l_rvi_stream_purpose_code IS NOT NULL) THEN
11505               check_stream_type_code(
11506                                      x_return_status    => x_return_status,
11507                                      x_msg_count        => x_msg_count,
11508                                      x_msg_data         => x_msg_data,
11509                                      p_stream_type_code => l_rvi_stream_code,
11510                                      p_stream_purpose   => l_rvi_stream_purpose_code,
11511                                      x_id1              => l_rvi_stream_type_id,
11512                                      x_name             => l_rvi_stream_name
11513                                     );
11514               IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11515                   okl_api.set_message(
11516                                       G_APP_NAME,
11517                                       G_INVALID_VALUE,
11518                                       'CONTRACT_NUM',
11519                                       l_contract_number, --||'/'||TO_CHAR(p_line_number),
11520                                      'COL_NAME',
11521                                      'RVI_STREAM_CODE, RVI_STREAM_PURPOSE_CODE',
11522                                      'COL_VALUE',
11523                                      l_rvi_stream_code||', '||l_rvi_stream_purpose_code
11524                                     );
11525                   x_return_status := OKL_API.G_RET_STS_ERROR;
11526                   RAISE header_rule_failed;
11527               END IF;
11528 
11529               debug_message('l_rvi_stream_type_id=' || l_rvi_stream_type_id);
11530               -- Check if the stream type is ID is effective
11531               OPEN rvi_stream_csr (l_rvi_stream_type_id, l_contract_start_date);
11532               FETCH rvi_stream_csr INTO l_yn;
11533 
11534               IF rvi_stream_csr%NOTFOUND THEN
11535                  CLOSE rvi_stream_csr;
11536                  okl_api.set_message(
11537                                      G_APP_NAME,
11538                                      G_NO_STRM_TMPL,
11539                                      'CONTRACT_NUM',
11540                                      l_contract_number, --||'/'||p_line_number,
11541                                      'COL_NAME',
11542                                      'RVI_STREAM_CODE, RVI_STREAM_PURPOSE_CODE',
11543                                      'COL_VALUE',
11544                                      l_rvi_stream_code||', '||l_rvi_stream_purpose_code
11545                                    );
11546                  RAISE header_rule_failed;
11547               ELSE
11548                  CLOSE rvi_stream_csr;
11549               END IF;
11550            END IF;
11551 
11552            l_fee_types_rec.dnz_chr_id := p_chr_id;
11553            l_fee_types_rec.item_id1 := l_rvi_stream_type_id;
11554            OKL_MAINTAIN_FEE_PVT.PROCESS_RVI_STREAM(
11555                                     p_api_version   => 1.0,
11556                                     p_init_msg_list => OKL_API.G_FALSE,
11557                                     x_return_status => x_return_status,
11558                                     x_msg_count     => x_msg_count,
11559                                     x_msg_data      => x_msg_data,
11560                                     p_check_box_value => 'Y',
11561                                     p_fee_types_rec => l_fee_types_rec,
11562                                     x_fee_types_rec => x_fee_types_rec);
11563 
11564            IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11565               raise header_rule_failed;
11566            END IF;
11567 
11568 
11569            l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11570            l_rulv_rec.dnz_chr_id                := p_chr_id;
11571            l_rulv_rec.rule_information1         := l_rvi_auto_calculate_flag;
11572            l_rulv_rec.rule_information_category := 'LARVAU';
11573            l_rulv_rec.std_template_yn           := 'N';
11574            l_rulv_rec.warn_yn                   := 'N';
11575 
11576            create_rule_group_and_rule(
11577                                       x_return_status => x_return_status,
11578                                       x_msg_count     => x_msg_count,
11579                                       x_msg_data      => x_msg_data,
11580                                       p_rgp_id        => l_rgp_id,
11581                                       p_rgpv_rec      => l_rgpv_rec,
11582                                       p_rulv_rec      => l_rulv_rec,
11583                                       x_rgpv_rec      => x_rgpv_rec,
11584                                       x_rulv_rec      => x_rulv_rec
11585                                      );
11586 
11587            IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11588               raise header_rule_failed;
11589            END IF;
11590 
11591            IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
11592               l_rgp_id := x_rgpv_rec.id;
11593            END IF;
11594          END IF; -- if rvi_auto_calculate_flag = 'Y'
11595          -- Bug 4655611
11596 
11597       END IF; -- rvi_auto_calculate_flag
11598 
11599       debug_message('------>Rule: LARVIN/LARVAU processed');
11600       l_rulv_rec            := NULL;
11601 /* Removed form Rule Definition 05/22/2002
11602       IF (p_header_rec.rvi_guaranteed_amount IS NOT NULL) THEN
11603 
11604          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11605          l_rulv_rec.dnz_chr_id                := p_chr_id;
11606          l_rulv_rec.rule_information1         := TO_CHAR(p_header_rec.rvi_guaranteed_amount);
11607          l_rulv_rec.rule_information_category := 'LARVAM';
11608          l_rulv_rec.std_template_yn           := 'N';
11609          l_rulv_rec.warn_yn                   := 'N';
11610 
11611       END IF; -- rvi_guaranteed_amount
11612 
11613       IF (p_header_rec.rvi_present_guaranteed_amount IS NOT NULL) THEN
11614 
11615          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11616          l_rulv_rec.dnz_chr_id                := p_chr_id;
11617          l_rulv_rec.rule_information2         := TO_CHAR(p_header_rec.rvi_present_guaranteed_amount);
11618          l_rulv_rec.rule_information_category := 'LARVAM';
11619          l_rulv_rec.std_template_yn           := 'N';
11620          l_rulv_rec.warn_yn                   := 'N';
11621 
11622       END IF; -- rvi_guaranteed_amount
11623 
11624       IF (p_header_rec.rvi_premium_amount IS NOT NULL) THEN
11625 
11626          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11627          l_rulv_rec.dnz_chr_id                := p_chr_id;
11628          l_rulv_rec.rule_information3         := TO_CHAR(p_header_rec.rvi_premium_amount);
11629          l_rulv_rec.rule_information_category := 'LARVAM';
11630          l_rulv_rec.std_template_yn           := 'N';
11631          l_rulv_rec.warn_yn                   := 'N';
11632 
11633       END IF; -- rvi_guaranteed_amount
11634 
11635 --  Removed form Rule Definition 05/22/2002
11636 */
11637 
11638       l_rvi_rate := TO_CHAR(p_header_rec.rvi_rate);
11639 
11640       IF (l_rvi_rate IS NULL
11641           AND
11642           p_header_rec.template_number IS NOT NULL) THEN
11643          get_contract_rules(
11644                             x_return_status  => x_return_status,
11645                             x_msg_count      => x_msg_count,
11646                             x_msg_data       => x_msg_data,
11647                             p_chr_id         => p_template_id,
11648                             p_cle_id         => NULL,
11649                             p_rgd_code       => 'LARVIN',
11650                             p_rule_code      => 'LARVAM',
11651                             x_rulv_tbl       => l_rulv_tbl,
11652                             x_rule_count     => l_rule_count
11653                            );
11654 
11655          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11656             RAISE header_rule_failed;
11657          END IF;
11658 
11659          IF (l_rule_count > 0) THEN
11660             l_rvi_rate  := l_rulv_tbl(1).rule_information4;
11661          END IF;
11662       END IF;
11663 
11664       IF (l_rvi_rate IS NOT NULL) THEN
11665 
11666          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11667          l_rulv_rec.dnz_chr_id                := p_chr_id;
11668          l_rulv_rec.rule_information4         := l_rvi_rate;
11669          l_rulv_rec.rule_information_category := 'LARVAM';
11670          l_rulv_rec.std_template_yn           := 'N';
11671          l_rulv_rec.warn_yn                   := 'N';
11672 
11673       END IF; -- rvi_guaranteed_amount
11674 
11675       create_rule_group_and_rule(
11676                                  x_return_status => x_return_status,
11677                                  x_msg_count     => x_msg_count,
11678                                  x_msg_data      => x_msg_data,
11679                                  p_rgp_id        => l_rgp_id,
11680                                  p_rgpv_rec      => l_rgpv_rec,
11681                                  p_rulv_rec      => l_rulv_rec,
11682                                  x_rgpv_rec      => x_rgpv_rec,
11683                                  x_rulv_rec      => x_rulv_rec
11684                                 );
11685 
11686       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11687          raise header_rule_failed;
11688       END IF;
11689 
11690       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
11691          l_rgp_id := x_rgpv_rec.id;
11692       END IF;
11693 
11694       debug_message('------>Rule: LARVIN/LARVAM processed');
11695       -- Rule Group LAMXTX
11696       l_rgpv_rec            := NULL;
11697       l_rgp_id              := NULL;
11698       l_rgpv_rec.rgd_code   := 'LAMXTX';
11699       l_rgpv_rec.chr_id     := p_chr_id;
11700       l_rgpv_rec.dnz_chr_id := p_chr_id;
11701       l_rgpv_rec.cle_id     := NULL;
11702       l_rgpv_rec.rgp_type   := 'KRG';
11703 
11704       l_rulv_rec            := NULL;
11705       l_tax_withholding_flag := p_header_rec.tax_withholding_flag;
11706 
11707       IF (l_tax_withholding_flag IS NULL
11708           AND
11709           p_header_rec.template_number IS NOT NULL) THEN
11710          get_contract_rules(
11711                             x_return_status  => x_return_status,
11712                             x_msg_count      => x_msg_count,
11713                             x_msg_data       => x_msg_data,
11714                             p_chr_id         => p_template_id,
11715                             p_cle_id         => NULL,
11716                             p_rgd_code       => 'LAMXTX',
11717                             p_rule_code      => 'LAUKTX',
11718                             x_rulv_tbl       => l_rulv_tbl,
11719                             x_rule_count     => l_rule_count
11720                            );
11721 
11722          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11723             RAISE header_rule_failed;
11724          END IF;
11725 
11726          IF (l_rule_count > 0) THEN
11727             l_tax_withholding_flag  := l_rulv_tbl(1).rule_information1;
11728          END IF;
11729       END IF;
11730 
11731       IF (l_tax_withholding_flag IS NOT NULL) THEN
11732 
11733          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11734          l_rulv_rec.dnz_chr_id                := p_chr_id;
11735          l_rulv_rec.rule_information1         := l_tax_withholding_flag;
11736          l_rulv_rec.rule_information_category := 'LAUKTX';
11737          l_rulv_rec.std_template_yn           := 'N';
11738          l_rulv_rec.warn_yn                   := 'N';
11739 
11740          create_rule_group_and_rule(
11741                                     x_return_status => x_return_status,
11742                                     x_msg_count     => x_msg_count,
11743                                     x_msg_data      => x_msg_data,
11744                                     p_rgp_id        => l_rgp_id,
11745                                     p_rgpv_rec      => l_rgpv_rec,
11746                                     p_rulv_rec      => l_rulv_rec,
11747                                     x_rgpv_rec      => x_rgpv_rec,
11748                                     x_rulv_rec      => x_rulv_rec
11749                                    );
11750 
11751          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11752             raise header_rule_failed;
11753          END IF;
11754 
11755          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
11756             l_rgp_id := x_rgpv_rec.id;
11757          END IF;
11758 
11759       END IF; -- tax_withholding_flag
11760 
11761       debug_message('------>Rule: LAMXTX/LAUKTX processed');
11762       l_rulv_rec            := NULL;
11763 
11764       l_tax_calc_formula_name := p_header_rec.tax_calc_formula_name;
11765 
11766       IF (l_tax_calc_formula_name IS NULL
11767           AND
11768           p_header_rec.template_number IS NOT NULL) THEN
11769          get_contract_rules(
11770                             x_return_status  => x_return_status,
11771                             x_msg_count      => x_msg_count,
11772                             x_msg_data       => x_msg_data,
11773                             p_chr_id         => p_template_id,
11774                             p_cle_id         => NULL,
11775                             p_rgd_code       => 'LAMXTX',
11776                             p_rule_code      => 'LAFORM',
11777                             x_rulv_tbl       => l_rulv_tbl,
11778                             x_rule_count     => l_rule_count
11779                            );
11780 
11781          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11782             RAISE header_rule_failed;
11783          END IF;
11784 
11785          IF (l_rule_count > 0) THEN
11786             l_tax_calc_formula_name := l_rulv_tbl(1).rule_information1;
11787          END IF;
11788       END IF;
11789 
11790       IF (l_tax_calc_formula_name IS NOT NULL) THEN
11791 
11792          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11793          l_rulv_rec.dnz_chr_id                := p_chr_id;
11794          l_rulv_rec.rule_information1         := l_tax_calc_formula_name;
11795          l_rulv_rec.rule_information_category := 'LAFORM';
11796          l_rulv_rec.std_template_yn           := 'N';
11797          l_rulv_rec.warn_yn                   := 'N';
11798 
11799          create_rule_group_and_rule(
11800                                     x_return_status => x_return_status,
11801                                     x_msg_count     => x_msg_count,
11802                                     x_msg_data      => x_msg_data,
11803                                     p_rgp_id        => l_rgp_id,
11804                                     p_rgpv_rec      => l_rgpv_rec,
11805                                     p_rulv_rec      => l_rulv_rec,
11806                                     x_rgpv_rec      => x_rgpv_rec,
11807                                     x_rulv_rec      => x_rulv_rec
11808                                    );
11809 
11810          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11811             raise header_rule_failed;
11812          END IF;
11813 
11814          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
11815             l_rgp_id := x_rgpv_rec.id;
11816          END IF;
11817 
11818       END IF; -- tax_calc_formula_name
11819 
11820       debug_message('------>Rule: LAMXTX/LAFORM processed');
11821 
11822 /* Not being used since 11.5.9
11823    Tax Owner rule is getting created from Product
11824 
11825       -- Rule Group LATOWN
11826       l_rgpv_rec            := NULL;
11827       l_rgp_id              := NULL;
11828       l_rgpv_rec.rgd_code   := 'LATOWN';
11829       l_rgpv_rec.chr_id     := p_chr_id;
11830       l_rgpv_rec.dnz_chr_id := p_chr_id;
11831       l_rgpv_rec.cle_id     := NULL;
11832       l_rgpv_rec.rgp_type   := 'KRG';
11833 
11834       l_rulv_rec            := NULL;
11835 
11836       l_tax_owner := p_header_rec.tax_owner;
11837 
11838       IF (l_tax_owner IS NULL
11839           AND
11840           p_header_rec.template_number IS NOT NULL) THEN
11841          get_contract_rules(
11842                             x_return_status  => x_return_status,
11843                             x_msg_count      => x_msg_count,
11844                             x_msg_data       => x_msg_data,
11845                             p_chr_id         => p_template_id,
11846                             p_cle_id         => NULL,
11847                             p_rgd_code       => 'LATOWN',
11848                             p_rule_code      => 'LATOWN',
11849                             x_rulv_tbl       => l_rulv_tbl,
11850                             x_rule_count     => l_rule_count
11851                            );
11852 
11853          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11854             RAISE header_rule_failed;
11855          END IF;
11856 
11857          IF (l_rule_count > 0) THEN
11858             l_tax_owner  := l_rulv_tbl(1).rule_information1;
11859          END IF;
11860       END IF;
11861 
11862       IF (l_tax_owner IS NOT NULL) THEN
11863 
11864          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11865          l_rulv_rec.dnz_chr_id                := p_chr_id;
11866          l_rulv_rec.rule_information1         := l_tax_owner;
11867          l_rulv_rec.rule_information_category := 'LATOWN';
11868          l_rulv_rec.std_template_yn           := 'N';
11869          l_rulv_rec.warn_yn                   := 'N';
11870 
11871          create_rule_group_and_rule(
11872                                     x_return_status => x_return_status,
11873                                     x_msg_count     => x_msg_count,
11874                                     x_msg_data      => x_msg_data,
11875                                     p_rgp_id        => l_rgp_id,
11876                                     p_rgpv_rec      => l_rgpv_rec,
11877                                     p_rulv_rec      => l_rulv_rec,
11878                                     x_rgpv_rec      => x_rgpv_rec,
11879                                     x_rulv_rec      => x_rulv_rec
11880                                    );
11881 
11882          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11883             raise header_rule_failed;
11884          END IF;
11885 
11886          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
11887             l_rgp_id := x_rgpv_rec.id;
11888          END IF;
11889 
11890       END IF; -- tax_owner
11891 */
11892 
11893       -- Rule Group LAPACT
11894 
11895       l_rgpv_rec            := NULL;
11896       l_rgp_id              := NULL;
11897       l_rgpv_rec.rgd_code   := 'LAPACT';
11898       l_rgpv_rec.chr_id     := p_chr_id;
11899       l_rgpv_rec.dnz_chr_id := p_chr_id;
11900       l_rgpv_rec.cle_id     := NULL;
11901       l_rgpv_rec.rgp_type   := 'KRG';
11902 
11903       l_rulv_rec := NULL;
11904 
11905       l_private_activity_bond_flag := p_header_rec.private_activity_bond_flag;
11906 
11907       IF (l_private_activity_bond_flag IS NULL
11908           AND
11909           p_header_rec.template_number IS NOT NULL) THEN
11910          get_contract_rules(
11911                             x_return_status  => x_return_status,
11912                             x_msg_count      => x_msg_count,
11913                             x_msg_data       => x_msg_data,
11914                             p_chr_id         => p_template_id,
11915                             p_cle_id         => NULL,
11916                             p_rgd_code       => 'LAPACT',
11917                             p_rule_code      => 'LAPACT',
11918                             x_rulv_tbl       => l_rulv_tbl,
11919                             x_rule_count     => l_rule_count
11920                            );
11921 
11922          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11923             RAISE header_rule_failed;
11924          END IF;
11925 
11926          IF (l_rule_count > 0) THEN
11927             l_private_activity_bond_flag  := l_rulv_tbl(1).rule_information1;
11928          END IF;
11929       END IF;
11930 
11931       IF (l_private_activity_bond_flag IS NOT NULL) THEN
11932          l_rulv_rec                           := NULL;
11933          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11934          l_rulv_rec.dnz_chr_id                := p_chr_id;
11935          l_rulv_rec.rule_information1         := l_private_activity_bond_flag;
11936          l_rulv_rec.rule_information_category := 'LAPACT';
11937          l_rulv_rec.std_template_yn           := 'N';
11938          l_rulv_rec.warn_yn                   := 'N';
11939       END IF;
11940 
11941       create_rule_group_and_rule(
11942                                  x_return_status => x_return_status,
11943                                  x_msg_count     => x_msg_count,
11944                                  x_msg_data      => x_msg_data,
11945                                  p_rgp_id        => l_rgp_id,
11946                                  p_rgpv_rec      => l_rgpv_rec,
11947                                  p_rulv_rec      => l_rulv_rec,
11948                                  x_rgpv_rec      => x_rgpv_rec,
11949                                  x_rulv_rec      => x_rulv_rec
11950                                 );
11951 
11952       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11953           raise header_rule_failed;
11954       END IF;
11955 
11956 
11957       debug_message('------>Rule: LAPACT/LAPACT processed');
11958 --**************************
11959 
11960       -- Rule Group AMLARL
11961 
11962       l_rgpv_rec            := NULL;
11963       l_rgp_id              := NULL;
11964       l_rgpv_rec.rgd_code   := 'AMLARL';
11965       l_rgpv_rec.chr_id     := p_chr_id;
11966       l_rgpv_rec.dnz_chr_id := p_chr_id;
11967       l_rgpv_rec.cle_id     := NULL;
11968       l_rgpv_rec.rgp_type   := 'KRG';
11969 
11970       l_rulv_rec            := NULL;
11971 
11972       l_floor_price_formula      := p_header_rec.floor_price_formula;
11973       l_remkt_sale_price_formula := p_header_rec.remkt_sale_price_formula;
11974 
11975       --debug_message('Floor Price Formula: '|| l_floor_price_formula);
11976       IF (l_floor_price_formula IS NULL
11977           OR
11978           l_remkt_sale_price_formula IS NULL
11979           AND
11980           p_header_rec.template_number IS NOT NULL) THEN
11981          get_contract_rules(
11982                             x_return_status  => x_return_status,
11983                             x_msg_count      => x_msg_count,
11984                             x_msg_data       => x_msg_data,
11985                             p_chr_id         => p_template_id,
11986                             p_cle_id         => NULL,
11987                             p_rgd_code       => 'AMLARL',
11988                             p_rule_code      => 'AMCFPR',
11989                             x_rulv_tbl       => l_rulv_tbl,
11990                             x_rule_count     => l_rule_count
11991                            );
11992 
11993          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11994             RAISE header_rule_failed;
11995          END IF;
11996 
11997          IF (l_rule_count > 0) THEN
11998             l_floor_price_formula      := NVL(l_floor_price_formula,l_rulv_tbl(1).rule_information1);
11999             l_remkt_sale_price_formula := NVL(l_remkt_sale_price_formula,l_rulv_tbl(1).rule_information2);
12000          END IF;
12001       END IF;
12002 
12003       IF (l_floor_price_formula IS NOT NULL) THEN
12004          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12005          l_rulv_rec.dnz_chr_id                := p_chr_id;
12006          l_rulv_rec.rule_information1         := l_floor_price_formula;
12007          l_rulv_rec.rule_information_category := 'AMCFPR';
12008          l_rulv_rec.std_template_yn           := 'N';
12009          l_rulv_rec.warn_yn                   := 'N';
12010       END IF;
12011 
12012       IF (l_remkt_sale_price_formula IS NOT NULL) THEN
12013          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12014          l_rulv_rec.dnz_chr_id                := p_chr_id;
12015          l_rulv_rec.rule_information2         := l_remkt_sale_price_formula;
12016          l_rulv_rec.rule_information_category := 'AMCFPR';
12017          l_rulv_rec.std_template_yn           := 'N';
12018          l_rulv_rec.warn_yn                   := 'N';
12019       END IF;
12020 
12021       create_rule_group_and_rule(
12022                                  x_return_status => x_return_status,
12023                                  x_msg_count     => x_msg_count,
12024                                  x_msg_data      => x_msg_data,
12025                                  p_rgp_id        => l_rgp_id,
12026                                  p_rgpv_rec      => l_rgpv_rec,
12027                                  p_rulv_rec      => l_rulv_rec,
12028                                  x_rgpv_rec      => x_rgpv_rec,
12029                                  x_rulv_rec      => x_rulv_rec
12030                                 );
12031 
12032       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12033           raise header_rule_failed;
12034       END IF;
12035 
12036       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
12037          l_rgp_id := x_rgpv_rec.id;
12038       END IF;
12039 
12040       debug_message('------>Rule: AMLARL/AMCFPR processed');
12041 
12042       -- Rule Group AMREPQ
12043 
12044       l_rgpv_rec            := NULL;
12045       l_rgp_id              := NULL;
12046       l_rgpv_rec.rgd_code   := 'AMREPQ';
12047       l_rgpv_rec.chr_id     := p_chr_id;
12048       l_rgpv_rec.dnz_chr_id := p_chr_id;
12049       l_rgpv_rec.cle_id     := NULL;
12050       l_rgpv_rec.rgp_type   := 'KRG';
12051 
12052       l_rulv_rec            := NULL;
12053 
12054       l_repurchase_quote_option  := p_header_rec.repurchase_quote_option;
12055       l_repurchase_quote_formula := p_header_rec.repurchase_quote_formula;
12056 
12057       IF (l_repurchase_quote_option IS NULL
12058           OR
12059           l_repurchase_quote_formula IS NULL
12060           AND
12061           p_header_rec.template_number IS NOT NULL) THEN
12062          get_contract_rules(
12063                             x_return_status  => x_return_status,
12064                             x_msg_count      => x_msg_count,
12065                             x_msg_data       => x_msg_data,
12066                             p_chr_id         => p_template_id,
12067                             p_cle_id         => NULL,
12068                             p_rgd_code       => 'AMREPQ',
12069                             p_rule_code      => 'AMARQC',
12070                             x_rulv_tbl       => l_rulv_tbl,
12071                             x_rule_count     => l_rule_count
12072                            );
12073 
12074          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12075             RAISE header_rule_failed;
12076          END IF;
12077 
12078          IF (l_rule_count > 0) THEN
12079             l_repurchase_quote_option  := NVL(l_repurchase_quote_option,l_rulv_tbl(1).rule_information1);
12080             l_repurchase_quote_formula := NVL(l_repurchase_quote_formula,l_rulv_tbl(1).rule_information2);
12081          END IF;
12082       END IF;
12083 
12084       IF (l_repurchase_quote_option IS NOT NULL) THEN
12085          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12086          l_rulv_rec.dnz_chr_id                := p_chr_id;
12087          l_rulv_rec.rule_information1         := l_repurchase_quote_option;
12088          l_rulv_rec.rule_information_category := 'AMARQC';
12089          l_rulv_rec.std_template_yn           := 'N';
12090          l_rulv_rec.warn_yn                   := 'N';
12091       END IF;
12092 
12093       IF (l_repurchase_quote_formula IS NOT NULL) THEN
12094          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12095          l_rulv_rec.dnz_chr_id                := p_chr_id;
12096          l_rulv_rec.rule_information2         := l_repurchase_quote_formula;
12097          l_rulv_rec.rule_information_category := 'AMARQC';
12098          l_rulv_rec.std_template_yn           := 'N';
12099          l_rulv_rec.warn_yn                   := 'N';
12100       END IF;
12101 
12102       create_rule_group_and_rule(
12103                                  x_return_status => x_return_status,
12104                                  x_msg_count     => x_msg_count,
12105                                  x_msg_data      => x_msg_data,
12106                                  p_rgp_id        => l_rgp_id,
12107                                  p_rgpv_rec      => l_rgpv_rec,
12108                                  p_rulv_rec      => l_rulv_rec,
12109                                  x_rgpv_rec      => x_rgpv_rec,
12110                                  x_rulv_rec      => x_rulv_rec
12111                                 );
12112 
12113       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12114           raise header_rule_failed;
12115       END IF;
12116 
12117       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
12118          l_rgp_id := x_rgpv_rec.id;
12119       END IF;
12120       debug_message('------>Rule: AMREPQ/AMARQC processed');
12121       l_rulv_rec := NULL;
12122 
12123       l_sale_price_option  := p_header_rec.sale_price_option;
12124       l_sale_price_amount  := TO_CHAR(p_header_rec.sale_price_amount);
12125       l_sale_price_formula := p_header_rec.sale_price_formula;
12126       l_sale_price_prorate := p_header_rec.sale_price_prorate;
12127 
12128       IF (l_sale_price_option IS NULL
12129           OR
12130           l_sale_price_amount IS NULL
12131           OR
12132           l_sale_price_formula IS NULL
12133           OR
12134           l_sale_price_prorate IS NULL
12135           AND
12136           p_header_rec.template_number IS NOT NULL) THEN
12137          get_contract_rules(
12138                             x_return_status  => x_return_status,
12139                             x_msg_count      => x_msg_count,
12140                             x_msg_data       => x_msg_data,
12141                             p_chr_id         => p_template_id,
12142                             p_cle_id         => NULL,
12143                             p_rgd_code       => 'AMREPQ',
12144                             p_rule_code      => 'AMBSPR',
12145                             x_rulv_tbl       => l_rulv_tbl,
12146                             x_rule_count     => l_rule_count
12147                            );
12148 
12149          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12150             RAISE header_rule_failed;
12151          END IF;
12152 
12153          IF (l_rule_count > 0) THEN
12154             l_sale_price_option  := NVL(l_sale_price_option,l_rulv_tbl(1).rule_information1);
12155             l_sale_price_amount  := NVL(l_sale_price_amount,l_rulv_tbl(1).rule_information2);
12156             l_sale_price_formula := NVL(l_sale_price_formula,l_rulv_tbl(1).rule_information3);
12157             l_sale_price_prorate := NVL(l_sale_price_prorate,l_rulv_tbl(1).rule_information4);
12158          END IF;
12159       END IF;
12160 
12161       IF (l_sale_price_option IS NOT NULL) THEN
12162          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12163          l_rulv_rec.dnz_chr_id                := p_chr_id;
12164          l_rulv_rec.rule_information1         := l_sale_price_option;
12165          l_rulv_rec.rule_information_category := 'AMBSPR';
12166          l_rulv_rec.std_template_yn           := 'N';
12167          l_rulv_rec.warn_yn                   := 'N';
12168       END IF;
12169 
12170       IF (l_sale_price_amount IS NOT NULL) THEN
12171          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12172          l_rulv_rec.dnz_chr_id                := p_chr_id;
12173          l_rulv_rec.rule_information2         := l_sale_price_amount;
12174          l_rulv_rec.rule_information_category := 'AMBSPR';
12175          l_rulv_rec.std_template_yn           := 'N';
12176          l_rulv_rec.warn_yn                   := 'N';
12177       END IF;
12178 
12179       IF (l_sale_price_formula IS NOT NULL) THEN
12180          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12181          l_rulv_rec.dnz_chr_id                := p_chr_id;
12182          l_rulv_rec.rule_information3         := l_sale_price_formula;
12183          l_rulv_rec.rule_information_category := 'AMBSPR';
12184          l_rulv_rec.std_template_yn           := 'N';
12185          l_rulv_rec.warn_yn                   := 'N';
12186       END IF;
12187 
12188       IF (l_sale_price_prorate IS NOT NULL) THEN
12189          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12190          l_rulv_rec.dnz_chr_id                := p_chr_id;
12191          l_rulv_rec.rule_information4         := l_sale_price_prorate;
12192          l_rulv_rec.rule_information_category := 'AMBSPR';
12193          l_rulv_rec.std_template_yn           := 'N';
12194          l_rulv_rec.warn_yn                   := 'N';
12195       END IF;
12196 
12197       create_rule_group_and_rule(
12198                                  x_return_status => x_return_status,
12199                                  x_msg_count     => x_msg_count,
12200                                  x_msg_data      => x_msg_data,
12201                                  p_rgp_id        => l_rgp_id,
12202                                  p_rgpv_rec      => l_rgpv_rec,
12203                                  p_rulv_rec      => l_rulv_rec,
12204                                  x_rgpv_rec      => x_rgpv_rec,
12205                                  x_rulv_rec      => x_rulv_rec
12206                                 );
12207 
12208       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12209           raise header_rule_failed;
12210       END IF;
12211 
12212       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
12213          l_rgp_id := x_rgpv_rec.id;
12214       END IF;
12215 
12216       debug_message('------>Rule: AMREPQ/AMBSPR processed');
12217       l_rulv_rec := NULL;
12218 
12219       l_discount_rate_option  := p_header_rec.discount_rate_option;
12220       l_discount_rate_amount  := p_header_rec.discount_rate_amount;
12221       l_discount_rate_formula := p_header_rec.discount_rate_formula;
12222       l_discount_rate_prorate := p_header_rec.discount_rate_prorate;
12223 
12224       IF (l_discount_rate_option IS NULL
12225           OR
12226           l_discount_rate_amount IS NULL
12227           OR
12228           l_discount_rate_formula IS NULL
12229           OR
12230           l_discount_rate_prorate IS NULL
12231           AND
12232           p_header_rec.template_number IS NOT NULL) THEN
12233          get_contract_rules(
12234                             x_return_status  => x_return_status,
12235                             x_msg_count      => x_msg_count,
12236                             x_msg_data       => x_msg_data,
12237                             p_chr_id         => p_template_id,
12238                             p_cle_id         => NULL,
12239                             p_rgd_code       => 'AMREPQ',
12240                             p_rule_code      => 'AMCQDR',
12241                             x_rulv_tbl       => l_rulv_tbl,
12242                             x_rule_count     => l_rule_count
12243                            );
12244 
12245          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12246             RAISE header_rule_failed;
12247          END IF;
12248 
12249          IF (l_rule_count > 0) THEN
12250             l_discount_rate_option  := NVL(l_discount_rate_option,l_rulv_tbl(1).rule_information1);
12251             l_discount_rate_amount  := NVL(l_discount_rate_amount,l_rulv_tbl(1).rule_information2);
12252             l_discount_rate_formula := NVL(l_discount_rate_formula,l_rulv_tbl(1).rule_information3);
12253             l_discount_rate_prorate := NVL(l_discount_rate_prorate,l_rulv_tbl(1).rule_information4);
12254          END IF;
12255       END IF;
12256 
12257       IF (l_discount_rate_option IS NOT NULL) THEN
12258          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12259          l_rulv_rec.dnz_chr_id                := p_chr_id;
12260          l_rulv_rec.rule_information1         := l_discount_rate_option;
12261          l_rulv_rec.rule_information_category := 'AMCQDR';
12262          l_rulv_rec.std_template_yn           := 'N';
12263          l_rulv_rec.warn_yn                   := 'N';
12264       END IF;
12265 
12266       IF (l_discount_rate_amount IS NOT NULL) THEN
12267          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12268          l_rulv_rec.dnz_chr_id                := p_chr_id;
12269          l_rulv_rec.rule_information2         := l_discount_rate_amount;
12270          l_rulv_rec.rule_information_category := 'AMCQDR';
12271          l_rulv_rec.std_template_yn           := 'N';
12272          l_rulv_rec.warn_yn                   := 'N';
12273       END IF;
12274 
12275       IF (l_discount_rate_formula IS NOT NULL) THEN
12276          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12277          l_rulv_rec.dnz_chr_id                := p_chr_id;
12278          l_rulv_rec.rule_information3         := l_discount_rate_formula;
12279          l_rulv_rec.rule_information_category := 'AMCQDR';
12280          l_rulv_rec.std_template_yn           := 'N';
12281          l_rulv_rec.warn_yn                   := 'N';
12282       END IF;
12283 
12284       IF (l_discount_rate_prorate IS NOT NULL) THEN
12285          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12286          l_rulv_rec.dnz_chr_id                := p_chr_id;
12287          l_rulv_rec.rule_information4         := l_discount_rate_prorate;
12288          l_rulv_rec.rule_information_category := 'AMCQDR';
12289          l_rulv_rec.std_template_yn           := 'N';
12290          l_rulv_rec.warn_yn                   := 'N';
12291       END IF;
12292 
12293       create_rule_group_and_rule(
12294                                  x_return_status => x_return_status,
12295                                  x_msg_count     => x_msg_count,
12296                                  x_msg_data      => x_msg_data,
12297                                  p_rgp_id        => l_rgp_id,
12298                                  p_rgpv_rec      => l_rgpv_rec,
12299                                  p_rulv_rec      => l_rulv_rec,
12300                                  x_rgpv_rec      => x_rgpv_rec,
12301                                  x_rulv_rec      => x_rulv_rec
12302                                 );
12303 
12304       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12305           raise header_rule_failed;
12306       END IF;
12307 
12308       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
12309          l_rgp_id := x_rgpv_rec.id;
12310       END IF;
12311       debug_message('------>Rule: AMREPQ/AMCQDR processed');
12312       l_rulv_rec := NULL;
12313 
12314       l_quote_fee_option   := p_header_rec.quote_fee_option;
12315       l_quote_fee_amount   := TO_CHAR(p_header_rec.quote_fee_amount);
12316       l_quote_fee_formula  := p_header_rec.quote_fee_formula;
12317       l_quote_fee_prorate  := p_header_rec.quote_fee_prorate;
12318 
12319       IF (l_quote_fee_option IS NULL
12320           OR
12321           l_quote_fee_amount IS NULL
12322           OR
12323           l_quote_fee_formula IS NULL
12324           OR
12325           l_quote_fee_prorate IS NULL
12326           AND
12327           p_header_rec.template_number IS NOT NULL) THEN
12328          get_contract_rules(
12329                             x_return_status  => x_return_status,
12330                             x_msg_count      => x_msg_count,
12331                             x_msg_data       => x_msg_data,
12332                             p_chr_id         => p_template_id,
12333                             p_cle_id         => NULL,
12334                             p_rgd_code       => 'AMREPQ',
12335                             p_rule_code      => 'AMCQFE',
12336                             x_rulv_tbl       => l_rulv_tbl,
12337                             x_rule_count     => l_rule_count
12338                            );
12339 
12340          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12341             RAISE header_rule_failed;
12342          END IF;
12343 
12344          IF (l_rule_count > 0) THEN
12345             l_quote_fee_option  := NVL(l_quote_fee_option,l_rulv_tbl(1).rule_information1);
12346             l_quote_fee_amount  := NVL(l_quote_fee_amount,l_rulv_tbl(1).rule_information2);
12347             l_quote_fee_formula := NVL(l_quote_fee_formula,l_rulv_tbl(1).rule_information3);
12348             l_quote_fee_prorate := NVL(l_quote_fee_prorate,l_rulv_tbl(1).rule_information4);
12349          END IF;
12350       END IF;
12351 
12352       IF (l_quote_fee_option IS NOT NULL) THEN
12353          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12354          l_rulv_rec.dnz_chr_id                := p_chr_id;
12355          l_rulv_rec.rule_information1         := l_quote_fee_option;
12356          l_rulv_rec.rule_information_category := 'AMCQFE';
12357          l_rulv_rec.std_template_yn           := 'N';
12358          l_rulv_rec.warn_yn                   := 'N';
12359       END IF;
12360 
12361       IF (l_quote_fee_amount IS NOT NULL) THEN
12362          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12363          l_rulv_rec.dnz_chr_id                := p_chr_id;
12364          l_rulv_rec.rule_information2         := l_quote_fee_amount;
12365          l_rulv_rec.rule_information_category := 'AMCQFE';
12366          l_rulv_rec.std_template_yn           := 'N';
12367          l_rulv_rec.warn_yn                   := 'N';
12368       END IF;
12369 
12370       IF (l_quote_fee_formula IS NOT NULL) THEN
12371          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12372          l_rulv_rec.dnz_chr_id                := p_chr_id;
12373          l_rulv_rec.rule_information3         := l_quote_fee_formula;
12374          l_rulv_rec.rule_information_category := 'AMCQFE';
12375          l_rulv_rec.std_template_yn           := 'N';
12376          l_rulv_rec.warn_yn                   := 'N';
12377       END IF;
12378 
12379       IF (l_quote_fee_prorate IS NOT NULL) THEN
12380          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12381          l_rulv_rec.dnz_chr_id                := p_chr_id;
12382          l_rulv_rec.rule_information4         := l_quote_fee_prorate;
12383          l_rulv_rec.rule_information_category := 'AMCQFE';
12384          l_rulv_rec.std_template_yn           := 'N';
12385          l_rulv_rec.warn_yn                   := 'N';
12386       END IF;
12387 
12388       create_rule_group_and_rule(
12389                                  x_return_status => x_return_status,
12390                                  x_msg_count     => x_msg_count,
12391                                  x_msg_data      => x_msg_data,
12392                                  p_rgp_id        => l_rgp_id,
12393                                  p_rgpv_rec      => l_rgpv_rec,
12394                                  p_rulv_rec      => l_rulv_rec,
12395                                  x_rgpv_rec      => x_rgpv_rec,
12396                                  x_rulv_rec      => x_rulv_rec
12397                                 );
12398 
12399       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12400           raise header_rule_failed;
12401       END IF;
12402 
12403       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
12404          l_rgp_id := x_rgpv_rec.id;
12405       END IF;
12406 
12407       debug_message('------>Rule: AMREPQ/AMCQFE processed');
12408       -- Rule Group AMTEOC
12409 
12410       l_rgpv_rec            := NULL;
12411       l_rgp_id              := NULL;
12412       l_rgpv_rec.rgd_code   := 'AMTEOC';
12413       l_rgpv_rec.chr_id     := p_chr_id;
12414       l_rgpv_rec.dnz_chr_id := p_chr_id;
12415       l_rgpv_rec.cle_id     := NULL;
12416       l_rgpv_rec.rgp_type   := 'KRG';
12417 
12418       l_rulv_rec            := NULL;
12419 
12420       l_ert_purchase_opt              := p_header_rec.ert_purchase_opt;
12421       l_ert_purchase_opt_type         := p_header_rec.ert_purchase_opt_type;
12422       l_ert_purchase_opt_amount       := TO_CHAR(p_header_rec.ert_purchase_opt_amount);
12423       l_ert_purchase_opt_formula      := p_header_rec.ert_purchase_opt_formula;
12424       l_ert_purchase_opt_prorate      := p_header_rec.ert_purchase_opt_prorate;
12425       l_ert_purchase_opt_max_opt      := p_header_rec.ert_purchase_opt_max_opt;
12426       l_ert_purchase_opt_max_amt      := TO_CHAR(p_header_rec.ert_purchase_opt_max_amt);
12427       l_ert_purchase_opt_max_formula  := p_header_rec.ert_purchase_opt_max_formula;
12428       l_ert_purchase_opt_min_opt      := p_header_rec.ert_purchase_opt_min_opt;
12429       l_ert_purchase_opt_min_amt      := TO_CHAR(p_header_rec.ert_purchase_opt_min_amt);
12430       l_ert_purchase_opt_min_formula  := p_header_rec.ert_purchase_opt_min_formula;
12431 
12432       IF (l_ert_purchase_opt IS NULL
12433           OR
12434           l_ert_purchase_opt_type IS NULL
12435           OR
12436           l_ert_purchase_opt_amount IS NULL
12437           OR
12438           l_ert_purchase_opt_formula IS NULL
12439           OR
12440           l_ert_purchase_opt_prorate IS NULL
12441           OR
12442           l_ert_purchase_opt_max_opt IS NULL
12443           OR
12444           l_ert_purchase_opt_max_amt IS NULL
12445           OR
12446           l_ert_purchase_opt_max_formula IS NULL
12447           OR
12448           l_ert_purchase_opt_min_opt IS NULL
12449           OR
12450           l_ert_purchase_opt_min_amt IS NULL
12451           OR
12452           l_ert_purchase_opt_min_formula IS NULL
12453           AND
12454           p_header_rec.template_number IS NOT NULL) THEN
12455          get_contract_rules(
12456                             x_return_status  => x_return_status,
12457                             x_msg_count      => x_msg_count,
12458                             x_msg_data       => x_msg_data,
12459                             p_chr_id         => p_template_id,
12460                             p_cle_id         => NULL,
12461                             p_rgd_code       => 'AMTEOC',
12462                             p_rule_code      => 'AMBPOC',
12463                             x_rulv_tbl       => l_rulv_tbl,
12464                             x_rule_count     => l_rule_count
12465                            );
12466 
12467          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12468             RAISE header_rule_failed;
12469          END IF;
12470 
12471          IF (l_rule_count > 0) THEN
12472             l_ert_purchase_opt              := NVL(l_ert_purchase_opt,l_rulv_tbl(1).rule_information1);
12473             l_ert_purchase_opt_type         := NVL(l_ert_purchase_opt_type,l_rulv_tbl(1).rule_information11);
12474             l_ert_purchase_opt_amount       := NVL(l_ert_purchase_opt_amount,l_rulv_tbl(1).rule_information2);
12475             l_ert_purchase_opt_formula      := NVL(l_ert_purchase_opt_formula,l_rulv_tbl(1).rule_information3);
12476             l_ert_purchase_opt_prorate      := NVL(l_ert_purchase_opt_prorate,l_rulv_tbl(1).rule_information4);
12477             l_ert_purchase_opt_max_opt      := NVL(l_ert_purchase_opt_max_opt,l_rulv_tbl(1).rule_information5);
12478             l_ert_purchase_opt_max_amt      := NVL(l_ert_purchase_opt_max_amt,l_rulv_tbl(1).rule_information6);
12479             l_ert_purchase_opt_max_formula  := NVL(l_ert_purchase_opt_max_formula,l_rulv_tbl(1).rule_information7);
12480             l_ert_purchase_opt_min_opt      := NVL(l_ert_purchase_opt_min_opt,l_rulv_tbl(1).rule_information8);
12481             l_ert_purchase_opt_min_amt      := NVL(l_ert_purchase_opt_min_amt,l_rulv_tbl(1).rule_information9);
12482             l_ert_purchase_opt_min_formula  := NVL(l_ert_purchase_opt_min_formula,l_rulv_tbl(1).rule_information10);
12483          END IF;
12484       END IF;
12485 
12486       IF (l_ert_purchase_opt IS NOT NULL) THEN
12487          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12488          l_rulv_rec.dnz_chr_id                := p_chr_id;
12489          l_rulv_rec.rule_information1         := l_ert_purchase_opt;
12490          l_rulv_rec.rule_information_category := 'AMBPOC';
12491          l_rulv_rec.std_template_yn           := 'N';
12492          l_rulv_rec.warn_yn                   := 'N';
12493       END IF;
12494 
12495       IF (l_ert_purchase_opt_type IS NOT NULL) THEN
12496          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12497          l_rulv_rec.dnz_chr_id                := p_chr_id;
12498          l_rulv_rec.rule_information11        := l_ert_purchase_opt_type;
12499          l_rulv_rec.rule_information_category := 'AMBPOC';
12500          l_rulv_rec.std_template_yn           := 'N';
12501          l_rulv_rec.warn_yn                   := 'N';
12502       END IF;
12503 
12504       IF (l_ert_purchase_opt_amount IS NOT NULL) THEN
12505          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12506          l_rulv_rec.dnz_chr_id                := p_chr_id;
12507          l_rulv_rec.rule_information2         := l_ert_purchase_opt_amount;
12508          l_rulv_rec.rule_information_category := 'AMBPOC';
12509          l_rulv_rec.std_template_yn           := 'N';
12510          l_rulv_rec.warn_yn                   := 'N';
12511       END IF;
12512 
12513       IF (l_ert_purchase_opt_formula IS NOT NULL) THEN
12514          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12515          l_rulv_rec.dnz_chr_id                := p_chr_id;
12516          l_rulv_rec.rule_information3         := l_ert_purchase_opt_formula;
12517          l_rulv_rec.rule_information_category := 'AMBPOC';
12518          l_rulv_rec.std_template_yn           := 'N';
12519          l_rulv_rec.warn_yn                   := 'N';
12520       END IF;
12521 
12522       IF (l_ert_purchase_opt_prorate IS NOT NULL) THEN
12523          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12524          l_rulv_rec.dnz_chr_id                := p_chr_id;
12525          l_rulv_rec.rule_information4         := l_ert_purchase_opt_prorate;
12526          l_rulv_rec.rule_information_category := 'AMBPOC';
12527          l_rulv_rec.std_template_yn           := 'N';
12528          l_rulv_rec.warn_yn                   := 'N';
12529       END IF;
12530 
12531       IF (l_ert_purchase_opt_max_opt IS NOT NULL) THEN
12532          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12533          l_rulv_rec.dnz_chr_id                := p_chr_id;
12534          l_rulv_rec.rule_information5         := l_ert_purchase_opt_max_opt;
12535          l_rulv_rec.rule_information_category := 'AMBPOC';
12536          l_rulv_rec.std_template_yn           := 'N';
12537          l_rulv_rec.warn_yn                   := 'N';
12538       END IF;
12539 
12540       IF (l_ert_purchase_opt_max_amt IS NOT NULL) THEN
12541          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12542          l_rulv_rec.dnz_chr_id                := p_chr_id;
12543          l_rulv_rec.rule_information6         := l_ert_purchase_opt_max_amt;
12544          l_rulv_rec.rule_information_category := 'AMBPOC';
12545          l_rulv_rec.std_template_yn           := 'N';
12546          l_rulv_rec.warn_yn                   := 'N';
12547       END IF;
12548 
12549       IF (l_ert_purchase_opt_max_formula IS NOT NULL) THEN
12550          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12551          l_rulv_rec.dnz_chr_id                := p_chr_id;
12552          l_rulv_rec.rule_information7         := l_ert_purchase_opt_max_formula;
12553          l_rulv_rec.rule_information_category := 'AMBPOC';
12554          l_rulv_rec.std_template_yn           := 'N';
12555          l_rulv_rec.warn_yn                   := 'N';
12556       END IF;
12557 
12558       IF (l_ert_purchase_opt_min_opt IS NOT NULL) THEN
12559          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12560          l_rulv_rec.dnz_chr_id                := p_chr_id;
12561          l_rulv_rec.rule_information8         := l_ert_purchase_opt_min_opt;
12562          l_rulv_rec.rule_information_category := 'AMBPOC';
12563          l_rulv_rec.std_template_yn           := 'N';
12564          l_rulv_rec.warn_yn                   := 'N';
12565       END IF;
12566 
12567       IF (l_ert_purchase_opt_min_amt IS NOT NULL) THEN
12568          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12569          l_rulv_rec.dnz_chr_id                := p_chr_id;
12570          l_rulv_rec.rule_information9         := l_ert_purchase_opt_min_amt;
12571          l_rulv_rec.rule_information_category := 'AMBPOC';
12572          l_rulv_rec.std_template_yn           := 'N';
12573          l_rulv_rec.warn_yn                   := 'N';
12574       END IF;
12575 
12576       IF (l_ert_purchase_opt_min_formula IS NOT NULL) THEN
12577          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12578          l_rulv_rec.dnz_chr_id                := p_chr_id;
12579          l_rulv_rec.rule_information10        := l_ert_purchase_opt_min_formula;
12580          l_rulv_rec.rule_information_category := 'AMBPOC';
12581          l_rulv_rec.std_template_yn           := 'N';
12582          l_rulv_rec.warn_yn                   := 'N';
12583       END IF;
12584 
12585       create_rule_group_and_rule(
12586                                  x_return_status => x_return_status,
12587                                  x_msg_count     => x_msg_count,
12588                                  x_msg_data      => x_msg_data,
12589                                  p_rgp_id        => l_rgp_id,
12590                                  p_rgpv_rec      => l_rgpv_rec,
12591                                  p_rulv_rec      => l_rulv_rec,
12592                                  x_rgpv_rec      => x_rgpv_rec,
12593                                  x_rulv_rec      => x_rulv_rec
12594                                 );
12595 
12596       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12597           raise header_rule_failed;
12598       END IF;
12599 
12600       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
12601          l_rgp_id := x_rgpv_rec.id;
12602       END IF;
12603 
12604       debug_message('------>Rule: AMTEOC/AMBPOC processed');
12605       -- Rule Group AMTFOC
12606 
12607       l_rgpv_rec            := NULL;
12608       l_rgp_id              := NULL;
12609       l_rgpv_rec.rgd_code   := 'AMTFOC';
12610       l_rgpv_rec.chr_id     := p_chr_id;
12611       l_rgpv_rec.dnz_chr_id := p_chr_id;
12612       l_rgpv_rec.cle_id     := NULL;
12613       l_rgpv_rec.rgp_type   := 'KRG';
12614 
12615       l_rulv_rec            := NULL;
12616 
12617       l_eot_purchase_opt              := p_header_rec.eot_purchase_opt;
12618       l_eot_purchase_opt_type         := p_header_rec.eot_purchase_opt_type;
12619       l_eot_purchase_opt_amount       := TO_CHAR(p_header_rec.eot_purchase_opt_amount);
12620       l_eot_purchase_opt_formula      := p_header_rec.eot_purchase_opt_formula;
12621       l_eot_purchase_opt_prorate      := p_header_rec.eot_purchase_opt_prorate;
12622       l_eot_purchase_opt_max_opt      := p_header_rec.eot_purchase_opt_max_opt;
12623       l_eot_purchase_opt_max_amt      := TO_CHAR(p_header_rec.eot_purchase_opt_max_amt);
12624       l_eot_purchase_opt_max_formula  := p_header_rec.eot_purchase_opt_max_formula;
12625       l_eot_purchase_opt_min_opt      := p_header_rec.eot_purchase_opt_min_opt;
12626       l_eot_purchase_opt_min_amt      := TO_CHAR(p_header_rec.eot_purchase_opt_min_amt);
12627       l_eot_purchase_opt_min_formula  := p_header_rec.eot_purchase_opt_min_formula;
12628 
12629       IF (l_eot_purchase_opt IS NULL
12630           OR
12631           l_eot_purchase_opt_type IS NULL
12632           OR
12633           l_eot_purchase_opt_amount IS NULL
12634           OR
12635           l_eot_purchase_opt_formula IS NULL
12636           OR
12637           l_eot_purchase_opt_prorate IS NULL
12638           OR
12639           l_eot_purchase_opt_max_opt IS NULL
12640           OR
12641           l_eot_purchase_opt_max_amt IS NULL
12642           OR
12643           l_eot_purchase_opt_max_formula IS NULL
12644           OR
12645           l_eot_purchase_opt_min_opt IS NULL
12646           OR
12647           l_eot_purchase_opt_min_amt IS NULL
12648           OR
12649           l_eot_purchase_opt_min_formula IS NULL
12650           AND
12651           p_header_rec.template_number IS NOT NULL) THEN
12652          get_contract_rules(
12653                             x_return_status  => x_return_status,
12654                             x_msg_count      => x_msg_count,
12655                             x_msg_data       => x_msg_data,
12656                             p_chr_id         => p_template_id,
12657                             p_cle_id         => NULL,
12658                             p_rgd_code       => 'AMTFOC',
12659                             p_rule_code      => 'AMBPOC',
12660                             x_rulv_tbl       => l_rulv_tbl,
12661                             x_rule_count     => l_rule_count
12662                            );
12663 
12664          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12665             RAISE header_rule_failed;
12666          END IF;
12667 
12668          IF (l_rule_count > 0) THEN
12669             l_eot_purchase_opt              := NVL(l_eot_purchase_opt,l_rulv_tbl(1).rule_information1);
12670             l_eot_purchase_opt_type         := NVL(l_eot_purchase_opt_type,l_rulv_tbl(1).rule_information11);
12671             l_eot_purchase_opt_amount       := NVL(l_eot_purchase_opt_amount,l_rulv_tbl(1).rule_information2);
12672             l_eot_purchase_opt_formula      := NVL(l_eot_purchase_opt_formula,l_rulv_tbl(1).rule_information3);
12673             l_eot_purchase_opt_prorate      := NVL(l_eot_purchase_opt_prorate,l_rulv_tbl(1).rule_information4);
12674             l_eot_purchase_opt_max_opt      := NVL(l_eot_purchase_opt_max_opt,l_rulv_tbl(1).rule_information5);
12675             l_eot_purchase_opt_max_amt      := NVL(l_eot_purchase_opt_max_amt,l_rulv_tbl(1).rule_information6);
12676             l_eot_purchase_opt_max_formula  := NVL(l_eot_purchase_opt_max_formula,l_rulv_tbl(1).rule_information7);
12677             l_eot_purchase_opt_min_opt      := NVL(l_eot_purchase_opt_min_opt,l_rulv_tbl(1).rule_information8);
12678             l_eot_purchase_opt_min_amt      := NVL(l_eot_purchase_opt_min_amt,l_rulv_tbl(1).rule_information9);
12679             l_eot_purchase_opt_min_formula  := NVL(l_eot_purchase_opt_min_formula,l_rulv_tbl(1).rule_information10);
12680          END IF;
12681       END IF;
12682 
12683       IF (l_eot_purchase_opt IS NOT NULL) THEN
12684          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12685          l_rulv_rec.dnz_chr_id                := p_chr_id;
12686          l_rulv_rec.rule_information1         := l_eot_purchase_opt;
12687          l_rulv_rec.rule_information_category := 'AMBPOC';
12688          l_rulv_rec.std_template_yn           := 'N';
12689          l_rulv_rec.warn_yn                   := 'N';
12690       END IF;
12691 
12692       IF (l_eot_purchase_opt_type IS NOT NULL) THEN
12693          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12694          l_rulv_rec.dnz_chr_id                := p_chr_id;
12695          l_rulv_rec.rule_information11        := l_eot_purchase_opt_type;
12696          l_rulv_rec.rule_information_category := 'AMBPOC';
12697          l_rulv_rec.std_template_yn           := 'N';
12698          l_rulv_rec.warn_yn                   := 'N';
12699       END IF;
12700 
12701       IF (l_eot_purchase_opt_amount IS NOT NULL) THEN
12702          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12703          l_rulv_rec.dnz_chr_id                := p_chr_id;
12704          l_rulv_rec.rule_information2         := l_eot_purchase_opt_amount;
12705          l_rulv_rec.rule_information_category := 'AMBPOC';
12706          l_rulv_rec.std_template_yn           := 'N';
12707          l_rulv_rec.warn_yn                   := 'N';
12708       END IF;
12709 
12710       IF (l_eot_purchase_opt_formula IS NOT NULL) THEN
12711          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12712          l_rulv_rec.dnz_chr_id                := p_chr_id;
12713          l_rulv_rec.rule_information3         := l_eot_purchase_opt_formula;
12714          l_rulv_rec.rule_information_category := 'AMBPOC';
12715          l_rulv_rec.std_template_yn           := 'N';
12716          l_rulv_rec.warn_yn                   := 'N';
12717       END IF;
12718 
12719       IF (l_eot_purchase_opt_prorate IS NOT NULL) THEN
12720          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12721          l_rulv_rec.dnz_chr_id                := p_chr_id;
12722          l_rulv_rec.rule_information4         := l_eot_purchase_opt_prorate;
12723          l_rulv_rec.rule_information_category := 'AMBPOC';
12724          l_rulv_rec.std_template_yn           := 'N';
12725          l_rulv_rec.warn_yn                   := 'N';
12726       END IF;
12727 
12728       IF (l_eot_purchase_opt_max_opt IS NOT NULL) THEN
12729          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12730          l_rulv_rec.dnz_chr_id                := p_chr_id;
12731          l_rulv_rec.rule_information5         := l_eot_purchase_opt_max_opt;
12732          l_rulv_rec.rule_information_category := 'AMBPOC';
12733          l_rulv_rec.std_template_yn           := 'N';
12734          l_rulv_rec.warn_yn                   := 'N';
12735       END IF;
12736 
12737       IF (l_eot_purchase_opt_max_amt IS NOT NULL) THEN
12738          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12739          l_rulv_rec.dnz_chr_id                := p_chr_id;
12740          l_rulv_rec.rule_information6         := l_eot_purchase_opt_max_amt;
12741          l_rulv_rec.rule_information_category := 'AMBPOC';
12742          l_rulv_rec.std_template_yn           := 'N';
12743          l_rulv_rec.warn_yn                   := 'N';
12744       END IF;
12745 
12746       IF (l_eot_purchase_opt_max_formula IS NOT NULL) THEN
12747          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12748          l_rulv_rec.dnz_chr_id                := p_chr_id;
12749          l_rulv_rec.rule_information7         := l_eot_purchase_opt_max_formula;
12750          l_rulv_rec.rule_information_category := 'AMBPOC';
12751          l_rulv_rec.std_template_yn           := 'N';
12752          l_rulv_rec.warn_yn                   := 'N';
12753       END IF;
12754 
12755       IF (l_eot_purchase_opt_min_opt IS NOT NULL) THEN
12756          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12757          l_rulv_rec.dnz_chr_id                := p_chr_id;
12758          l_rulv_rec.rule_information8         := l_eot_purchase_opt_min_opt;
12759          l_rulv_rec.rule_information_category := 'AMBPOC';
12760          l_rulv_rec.std_template_yn           := 'N';
12761          l_rulv_rec.warn_yn                   := 'N';
12762       END IF;
12763 
12764       IF (l_eot_purchase_opt_min_amt IS NOT NULL) THEN
12765          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12766          l_rulv_rec.dnz_chr_id                := p_chr_id;
12767          l_rulv_rec.rule_information9         := l_eot_purchase_opt_min_amt;
12768          l_rulv_rec.rule_information_category := 'AMBPOC';
12769          l_rulv_rec.std_template_yn           := 'N';
12770          l_rulv_rec.warn_yn                   := 'N';
12771       END IF;
12772 
12773       IF (l_eot_purchase_opt_min_formula IS NOT NULL) THEN
12774          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12775          l_rulv_rec.dnz_chr_id                := p_chr_id;
12776          l_rulv_rec.rule_information10        := l_eot_purchase_opt_min_formula;
12777          l_rulv_rec.rule_information_category := 'AMBPOC';
12778          l_rulv_rec.std_template_yn           := 'N';
12779          l_rulv_rec.warn_yn                   := 'N';
12780       END IF;
12781 
12782       create_rule_group_and_rule(
12783                                  x_return_status => x_return_status,
12784                                  x_msg_count     => x_msg_count,
12785                                  x_msg_data      => x_msg_data,
12786                                  p_rgp_id        => l_rgp_id,
12787                                  p_rgpv_rec      => l_rgpv_rec,
12788                                  p_rulv_rec      => l_rulv_rec,
12789                                  x_rgpv_rec      => x_rgpv_rec,
12790                                  x_rulv_rec      => x_rulv_rec
12791                                 );
12792 
12793       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12794           raise header_rule_failed;
12795       END IF;
12796 
12797       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
12798          l_rgp_id := x_rgpv_rec.id;
12799       END IF;
12800 
12801       debug_message('------>Rule: AMTFOC/AMBPOC processed');
12802 
12803       l_rulv_rec := NULL;
12804 
12805       l_eot_auto_proc_purchase_opt := p_header_rec.eot_auto_proc_purchase_opt;
12806 
12807       IF (l_eot_auto_proc_purchase_opt IS NULL
12808           AND
12809           p_header_rec.template_number IS NOT NULL) THEN
12810          get_contract_rules(
12811                             x_return_status  => x_return_status,
12812                             x_msg_count      => x_msg_count,
12813                             x_msg_data       => x_msg_data,
12814                             p_chr_id         => p_template_id,
12815                             p_cle_id         => NULL,
12816                             p_rgd_code       => 'AMTFOC',
12817                             p_rule_code      => 'AMTINV',
12818                             x_rulv_tbl       => l_rulv_tbl,
12819                             x_rule_count     => l_rule_count
12820                            );
12821 
12822          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12823             RAISE header_rule_failed;
12824          END IF;
12825 
12826          IF (l_rule_count > 0) THEN
12827             l_eot_auto_proc_purchase_opt := NVL(l_eot_auto_proc_purchase_opt,l_rulv_tbl(1).rule_information1);
12828          END IF;
12829       END IF;
12830 
12831       IF (l_eot_auto_proc_purchase_opt IS NOT NULL) THEN
12832          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12833          l_rulv_rec.dnz_chr_id                := p_chr_id;
12834          l_rulv_rec.rule_information1         := l_eot_auto_proc_purchase_opt;
12835          l_rulv_rec.rule_information_category := 'AMTINV';
12836          l_rulv_rec.std_template_yn           := 'N';
12837          l_rulv_rec.warn_yn                   := 'N';
12838       END IF;
12839 
12840       create_rule_group_and_rule(
12841                                  x_return_status => x_return_status,
12842                                  x_msg_count     => x_msg_count,
12843                                  x_msg_data      => x_msg_data,
12844                                  p_rgp_id        => l_rgp_id,
12845                                  p_rgpv_rec      => l_rgpv_rec,
12846                                  p_rulv_rec      => l_rulv_rec,
12847                                  x_rgpv_rec      => x_rgpv_rec,
12848                                  x_rulv_rec      => x_rulv_rec
12849                                 );
12850 
12851       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12852           raise header_rule_failed;
12853       END IF;
12854 
12855       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
12856          l_rgp_id := x_rgpv_rec.id;
12857       END IF;
12858 
12859       debug_message('------>Rule: AMTFOC/AMTINV processed');
12860 
12861       -- Rule Group AMTQPR
12862 
12863       l_rgpv_rec            := NULL;
12864       l_rgp_id              := NULL;
12865       l_rgpv_rec.rgd_code   := 'AMTQPR';
12866       l_rgpv_rec.chr_id     := p_chr_id;
12867       l_rgpv_rec.dnz_chr_id := p_chr_id;
12868       l_rgpv_rec.cle_id     := NULL;
12869       l_rgpv_rec.rgp_type   := 'KRG';
12870 
12871       l_rulv_rec            := NULL;
12872 
12873 -- cklee bug# 3440442 bug# 3440442
12874      IF (NVL(p_header_rec.tqp_erl_termination_alwd_flag,'N') NOT IN ('Y','N')) THEN
12875            okl_api.set_message(
12876                                G_APP_NAME,
12877                                G_INVALID_VALUE,
12878                                'CONTRACT_NUM',
12879                                p_header_rec.contract_number_old,
12880                                'COL_NAME',
12881                                'TQP_ERL_TERMINATION_ALWD_FLAG',
12882                                'COL_VALUE',
12883                                p_header_rec.tqp_erl_termination_alwd_flag
12884                               );
12885 
12886          x_return_status := OKL_API.G_RET_STS_ERROR;
12887 
12888         raise header_rule_failed;
12889      END IF;
12890 -- cklee bug# 3440442 bug# 3440442
12891 
12892       l_tqp_erl_term_alwd_flag := p_header_rec.tqp_erl_termination_alwd_flag;
12893 
12894       IF (l_tqp_erl_term_alwd_flag IS NULL
12895           AND
12896           p_header_rec.template_number IS NOT NULL) THEN
12897          get_contract_rules(
12898                             x_return_status  => x_return_status,
12899                             x_msg_count      => x_msg_count,
12900                             x_msg_data       => x_msg_data,
12901                             p_chr_id         => p_template_id,
12902                             p_cle_id         => NULL,
12903                             p_rgd_code       => 'AMTQPR',
12904                             p_rule_code      => 'AMCTTA',
12905                             x_rulv_tbl       => l_rulv_tbl,
12906                             x_rule_count     => l_rule_count
12907                            );
12908 
12909          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12910             RAISE header_rule_failed;
12911          END IF;
12912 
12913          IF (l_rule_count > 0) THEN
12914             l_tqp_erl_term_alwd_flag := NVL(l_tqp_erl_term_alwd_flag,l_rulv_tbl(1).rule_information1);
12915          END IF;
12916       END IF;
12917 
12918       IF (l_tqp_erl_term_alwd_flag IS NOT NULL) THEN
12919          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12920          l_rulv_rec.dnz_chr_id                := p_chr_id;
12921          l_rulv_rec.rule_information1         := l_tqp_erl_term_alwd_flag;
12922          l_rulv_rec.rule_information_category := 'AMCTTA';
12923          l_rulv_rec.std_template_yn           := 'N';
12924          l_rulv_rec.warn_yn                   := 'N';
12925       END IF;
12926 
12927       create_rule_group_and_rule(
12928                                  x_return_status => x_return_status,
12929                                  x_msg_count     => x_msg_count,
12930                                  x_msg_data      => x_msg_data,
12931                                  p_rgp_id        => l_rgp_id,
12932                                  p_rgpv_rec      => l_rgpv_rec,
12933                                  p_rulv_rec      => l_rulv_rec,
12934                                  x_rgpv_rec      => x_rgpv_rec,
12935                                  x_rulv_rec      => x_rulv_rec
12936                                 );
12937 
12938       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12939           raise header_rule_failed;
12940       END IF;
12941 
12942       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
12943          l_rgp_id := x_rgpv_rec.id;
12944       END IF;
12945       debug_message('------>Rule: AMTQPR/AMCTTA processed');
12946       l_rulv_rec := NULL;
12947 
12948       l_tqp_prt_term_alwd_flag := p_header_rec.tqp_prt_termination_alwd_flag;
12949 
12950       IF (l_tqp_prt_term_alwd_flag IS NULL
12951           AND
12952           p_header_rec.template_number IS NOT NULL) THEN
12953          get_contract_rules(
12954                             x_return_status  => x_return_status,
12955                             x_msg_count      => x_msg_count,
12956                             x_msg_data       => x_msg_data,
12957                             p_chr_id         => p_template_id,
12958                             p_cle_id         => NULL,
12959                             p_rgd_code       => 'AMTQPR',
12960                             p_rule_code      => 'AMPTQA',
12961                             x_rulv_tbl       => l_rulv_tbl,
12962                             x_rule_count     => l_rule_count
12963                            );
12964 
12965          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12966             RAISE header_rule_failed;
12967          END IF;
12968 
12969          IF (l_rule_count > 0) THEN
12970             l_tqp_prt_term_alwd_flag := NVL(l_tqp_prt_term_alwd_flag,l_rulv_tbl(1).rule_information1);
12971          END IF;
12972       END IF;
12973 
12974       IF (l_tqp_prt_term_alwd_flag IS NOT NULL) THEN
12975          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12976          l_rulv_rec.dnz_chr_id                := p_chr_id;
12977          l_rulv_rec.rule_information1         := l_tqp_prt_term_alwd_flag;
12978          l_rulv_rec.rule_information_category := 'AMPTQA';
12979          l_rulv_rec.std_template_yn           := 'N';
12980          l_rulv_rec.warn_yn                   := 'N';
12981       END IF;
12982 
12983       create_rule_group_and_rule(
12984                                  x_return_status => x_return_status,
12985                                  x_msg_count     => x_msg_count,
12986                                  x_msg_data      => x_msg_data,
12987                                  p_rgp_id        => l_rgp_id,
12988                                  p_rgpv_rec      => l_rgpv_rec,
12989                                  p_rulv_rec      => l_rulv_rec,
12990                                  x_rgpv_rec      => x_rgpv_rec,
12991                                  x_rulv_rec      => x_rulv_rec
12992                                 );
12993 
12994       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12995           raise header_rule_failed;
12996       END IF;
12997 
12998       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
12999          l_rgp_id := x_rgpv_rec.id;
13000       END IF;
13001 
13002       debug_message('------>Rule: AMTQPR/AMPTQA processed');
13003       l_rulv_rec := NULL;
13004 
13005       l_quote_effective_days   := TO_CHAR(p_header_rec.quote_effective_days);
13006       l_quote_eff_max_days     := TO_CHAR(p_header_rec.quote_eff_max_days);
13007 
13008       IF (l_quote_effective_days IS NULL
13009           OR
13010           l_quote_eff_max_days IS NULL
13011           AND
13012           p_header_rec.template_number IS NOT NULL) THEN
13013          get_contract_rules(
13014                             x_return_status  => x_return_status,
13015                             x_msg_count      => x_msg_count,
13016                             x_msg_data       => x_msg_data,
13017                             p_chr_id         => p_template_id,
13018                             p_cle_id         => NULL,
13019                             p_rgd_code       => 'AMTQPR',
13020                             p_rule_code      => 'AMQTEF',
13021                             x_rulv_tbl       => l_rulv_tbl,
13022                             x_rule_count     => l_rule_count
13023                            );
13024 
13025          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13026             RAISE header_rule_failed;
13027          END IF;
13028 
13029          IF (l_rule_count > 0) THEN
13030             l_quote_effective_days := NVL(l_quote_effective_days,l_rulv_tbl(1).rule_information1);
13031             l_quote_eff_max_days   := NVL(l_quote_eff_max_days, l_rulv_tbl(1).rule_information2);
13032          END IF;
13033       END IF;
13034 
13035       IF (l_quote_effective_days IS NOT NULL) THEN
13036          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13037          l_rulv_rec.dnz_chr_id                := p_chr_id;
13038          l_rulv_rec.rule_information1         := l_quote_effective_days;
13039          l_rulv_rec.rule_information_category := 'AMQTEF';
13040          l_rulv_rec.std_template_yn           := 'N';
13041          l_rulv_rec.warn_yn                   := 'N';
13042       END IF;
13043 
13044       IF (l_quote_eff_max_days IS NOT NULL) THEN
13045          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13046          l_rulv_rec.dnz_chr_id                := p_chr_id;
13047          l_rulv_rec.rule_information2         := l_quote_eff_max_days;
13048          l_rulv_rec.rule_information_category := 'AMQTEF';
13049          l_rulv_rec.std_template_yn           := 'N';
13050          l_rulv_rec.warn_yn                   := 'N';
13051       END IF;
13052 
13053       create_rule_group_and_rule(
13054                                  x_return_status => x_return_status,
13055                                  x_msg_count     => x_msg_count,
13056                                  x_msg_data      => x_msg_data,
13057                                  p_rgp_id        => l_rgp_id,
13058                                  p_rgpv_rec      => l_rgpv_rec,
13059                                  p_rulv_rec      => l_rulv_rec,
13060                                  x_rgpv_rec      => x_rgpv_rec,
13061                                  x_rulv_rec      => x_rulv_rec
13062                                 );
13063 
13064       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13065           raise header_rule_failed;
13066       END IF;
13067 
13068       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
13069          l_rgp_id := x_rgpv_rec.id;
13070       END IF;
13071       debug_message('------>Rule: AMTQPR/AMQTEF processed');
13072       l_rulv_rec := NULL;
13073 
13074       l_eot_tolerance_days := TO_CHAR(p_header_rec.eot_tolerance_days);
13075 
13076       IF (l_eot_tolerance_days IS NULL
13077           AND
13078           p_header_rec.template_number IS NOT NULL) THEN
13079          get_contract_rules(
13080                             x_return_status  => x_return_status,
13081                             x_msg_count      => x_msg_count,
13082                             x_msg_data       => x_msg_data,
13083                             p_chr_id         => p_template_id,
13084                             p_cle_id         => NULL,
13085                             p_rgd_code       => 'AMTQPR',
13086                             p_rule_code      => 'AMTSET',
13087                             x_rulv_tbl       => l_rulv_tbl,
13088                             x_rule_count     => l_rule_count
13089                            );
13090 
13091          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13092             RAISE header_rule_failed;
13093          END IF;
13094 
13095          IF (l_rule_count > 0) THEN
13096             l_eot_tolerance_days := NVL(l_eot_tolerance_days,l_rulv_tbl(1).rule_information1);
13097          END IF;
13098       END IF;
13099 
13100       IF (l_eot_tolerance_days IS NOT NULL) THEN
13101          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13102          l_rulv_rec.dnz_chr_id                := p_chr_id;
13103          l_rulv_rec.rule_information1         := l_eot_tolerance_days;
13104          l_rulv_rec.rule_information_category := 'AMTSET';
13105          l_rulv_rec.std_template_yn           := 'N';
13106          l_rulv_rec.warn_yn                   := 'N';
13107       END IF;
13108 
13109       create_rule_group_and_rule(
13110                                  x_return_status => x_return_status,
13111                                  x_msg_count     => x_msg_count,
13112                                  x_msg_data      => x_msg_data,
13113                                  p_rgp_id        => l_rgp_id,
13114                                  p_rgpv_rec      => l_rgpv_rec,
13115                                  p_rulv_rec      => l_rulv_rec,
13116                                  x_rgpv_rec      => x_rgpv_rec,
13117                                  x_rulv_rec      => x_rulv_rec
13118                                 );
13119 
13120       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13121           raise header_rule_failed;
13122       END IF;
13123 
13124       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
13125          l_rgp_id := x_rgpv_rec.id;
13126       END IF;
13127 
13128       debug_message('------>Rule: AMTQPR/AMTSET processed');
13129 
13130       -- Send bill of sale, manual quote, First term date
13131 
13132       l_rulv_rec := NULL;
13133 
13134       l_send_bill_sale := p_header_rec.send_bill_sale;
13135 
13136       IF (l_send_bill_sale IS NULL
13137           AND
13138           p_header_rec.template_number IS NOT NULL) THEN
13139          get_contract_rules(
13140                             x_return_status  => x_return_status,
13141                             x_msg_count      => x_msg_count,
13142                             x_msg_data       => x_msg_data,
13143                             p_chr_id         => p_template_id,
13144                             p_cle_id         => NULL,
13145                             p_rgd_code       => 'AMTQPR',
13146                             p_rule_code      => 'AMFBOS',
13147                             x_rulv_tbl       => l_rulv_tbl,
13148                             x_rule_count     => l_rule_count
13149                            );
13150 
13151          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13152             RAISE header_rule_failed;
13153          END IF;
13154 
13155          IF (l_rule_count > 0) THEN
13156             l_send_bill_sale := NVL(l_send_bill_sale,l_rulv_tbl(1).rule_information1);
13157          END IF;
13158       END IF;
13159 
13160       IF (l_send_bill_sale IS NOT NULL) THEN
13161          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13162          l_rulv_rec.dnz_chr_id                := p_chr_id;
13163          l_rulv_rec.rule_information1         := l_send_bill_sale;
13164          l_rulv_rec.rule_information_category := 'AMFBOS';
13165          l_rulv_rec.std_template_yn           := 'N';
13166          l_rulv_rec.warn_yn                   := 'N';
13167       END IF;
13168 
13169       create_rule_group_and_rule(
13170                                  x_return_status => x_return_status,
13171                                  x_msg_count     => x_msg_count,
13172                                  x_msg_data      => x_msg_data,
13173                                  p_rgp_id        => l_rgp_id,
13174                                  p_rgpv_rec      => l_rgpv_rec,
13175                                  p_rulv_rec      => l_rulv_rec,
13176                                  x_rgpv_rec      => x_rgpv_rec,
13177                                  x_rulv_rec      => x_rulv_rec
13178                                 );
13179 
13180       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13181           raise header_rule_failed;
13182       END IF;
13183 
13184       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
13185          l_rgp_id := x_rgpv_rec.id;
13186       END IF;
13187       debug_message('------>Rule: AMTQPR/AMFBOS processed');
13188 
13189       l_rulv_rec := NULL;
13190 
13191       l_manual_quotes_only := p_header_rec.manual_quotes_only;
13192 
13193       IF (l_manual_quotes_only IS NULL
13194           AND
13195           p_header_rec.template_number IS NOT NULL) THEN
13196          get_contract_rules(
13197                             x_return_status  => x_return_status,
13198                             x_msg_count      => x_msg_count,
13199                             x_msg_data       => x_msg_data,
13200                             p_chr_id         => p_template_id,
13201                             p_cle_id         => NULL,
13202                             p_rgd_code       => 'AMTQPR',
13203                             p_rule_code      => 'AMCMTQ',
13204                             x_rulv_tbl       => l_rulv_tbl,
13205                             x_rule_count     => l_rule_count
13206                            );
13207 
13208          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13209             RAISE header_rule_failed;
13210          END IF;
13211 
13212          IF (l_rule_count > 0) THEN
13213             l_manual_quotes_only := NVL(l_manual_quotes_only,l_rulv_tbl(1).rule_information1);
13214          END IF;
13215       END IF;
13216 
13217       IF (l_manual_quotes_only IS NOT NULL) THEN
13218          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13219          l_rulv_rec.dnz_chr_id                := p_chr_id;
13220          l_rulv_rec.rule_information1         := l_manual_quotes_only;
13221          l_rulv_rec.rule_information_category := 'AMCMTQ';
13222          l_rulv_rec.std_template_yn           := 'N';
13223          l_rulv_rec.warn_yn                   := 'N';
13224       END IF;
13225 
13226       create_rule_group_and_rule(
13227                                  x_return_status => x_return_status,
13228                                  x_msg_count     => x_msg_count,
13229                                  x_msg_data      => x_msg_data,
13230                                  p_rgp_id        => l_rgp_id,
13231                                  p_rgpv_rec      => l_rgpv_rec,
13232                                  p_rulv_rec      => l_rulv_rec,
13233                                  x_rgpv_rec      => x_rgpv_rec,
13234                                  x_rulv_rec      => x_rulv_rec
13235                                 );
13236 
13237       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13238           raise header_rule_failed;
13239       END IF;
13240 
13241       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
13242          l_rgp_id := x_rgpv_rec.id;
13243       END IF;
13244       debug_message('------>Rule: AMTQPR/AMCMTQ processed');
13245 
13246       l_rulv_rec := NULL;
13247 
13248       l_first_termination_date := get_canonical_date(p_header_rec.first_termination_date);
13249 
13250       IF (l_first_termination_date IS NULL
13251           AND
13252           p_header_rec.template_number IS NOT NULL) THEN
13253          get_contract_rules(
13254                             x_return_status  => x_return_status,
13255                             x_msg_count      => x_msg_count,
13256                             x_msg_data       => x_msg_data,
13257                             p_chr_id         => p_template_id,
13258                             p_cle_id         => NULL,
13259                             p_rgd_code       => 'AMTQPR',
13260                             p_rule_code      => 'AMDFTD',
13261                             x_rulv_tbl       => l_rulv_tbl,
13262                             x_rule_count     => l_rule_count
13263                            );
13264 
13265          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13266             RAISE header_rule_failed;
13267          END IF;
13268 
13269          IF (l_rule_count > 0) THEN
13270             l_first_termination_date := NVL(l_first_termination_date,l_rulv_tbl(1).rule_information1);
13271          END IF;
13272       END IF;
13273 
13274       IF (l_first_termination_date IS NOT NULL) THEN
13275          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13276          l_rulv_rec.dnz_chr_id                := p_chr_id;
13277          l_rulv_rec.rule_information1         := l_first_termination_date;
13278          l_rulv_rec.rule_information_category := 'AMDFTD';
13279          l_rulv_rec.std_template_yn           := 'N';
13280          l_rulv_rec.warn_yn                   := 'N';
13281       END IF;
13282 
13283       create_rule_group_and_rule(
13284                                  x_return_status => x_return_status,
13285                                  x_msg_count     => x_msg_count,
13286                                  x_msg_data      => x_msg_data,
13287                                  p_rgp_id        => l_rgp_id,
13288                                  p_rgpv_rec      => l_rgpv_rec,
13289                                  p_rulv_rec      => l_rulv_rec,
13290                                  x_rgpv_rec      => x_rgpv_rec,
13291                                  x_rulv_rec      => x_rulv_rec
13292                                 );
13293 
13294       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13295           raise header_rule_failed;
13296       END IF;
13297 
13298       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
13299          l_rgp_id := x_rgpv_rec.id;
13300       END IF;
13301       debug_message('------>Rule: AMTQPR/AMDFTD processed');
13302 
13303       -- Rule Group AMTPAR
13304 
13305       l_rgpv_rec            := NULL;
13306       l_rgp_id              := NULL;
13307       l_rgpv_rec.rgd_code   := 'AMTPAR';
13308       l_rgpv_rec.chr_id     := p_chr_id;
13309       l_rgpv_rec.dnz_chr_id := p_chr_id;
13310       l_rgpv_rec.cle_id     := NULL;
13311       l_rgpv_rec.rgp_type   := 'KRG';
13312 
13313       l_rulv_rec := NULL;
13314 
13315       l_prt_termination_approval_req := p_header_rec.prt_termination_approval_req;
13316 
13317       IF (l_prt_termination_approval_req IS NULL
13318           AND
13319           p_header_rec.template_number IS NOT NULL) THEN
13320          get_contract_rules(
13321                             x_return_status  => x_return_status,
13322                             x_msg_count      => x_msg_count,
13323                             x_msg_data       => x_msg_data,
13324                             p_chr_id         => p_template_id,
13325                             p_cle_id         => NULL,
13326                             p_rgd_code       => 'AMTPAR',
13327                             p_rule_code      => 'AMAPRE',
13328                             x_rulv_tbl       => l_rulv_tbl,
13329                             x_rule_count     => l_rule_count
13330                            );
13331 
13332          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13333             RAISE header_rule_failed;
13334          END IF;
13335 
13336          IF (l_rule_count > 0) THEN
13337             l_prt_termination_approval_req := l_rulv_tbl(1).rule_information1;
13338          END IF;
13339       END IF;
13340 
13341       IF (l_prt_termination_approval_req IS NOT NULL) THEN
13342          l_rulv_rec                           := NULL;
13343          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13344          l_rulv_rec.dnz_chr_id                := p_chr_id;
13345          l_rulv_rec.rule_information1         := l_prt_termination_approval_req;
13346          l_rulv_rec.rule_information_category := 'AMAPRE';
13347          l_rulv_rec.std_template_yn           := 'N';
13348          l_rulv_rec.warn_yn                   := 'N';
13349       END IF;
13350 
13351       create_rule_group_and_rule(
13352                                  x_return_status => x_return_status,
13353                                  x_msg_count     => x_msg_count,
13354                                  x_msg_data      => x_msg_data,
13355                                  p_rgp_id        => l_rgp_id,
13356                                  p_rgpv_rec      => l_rgpv_rec,
13357                                  p_rulv_rec      => l_rulv_rec,
13358                                  x_rgpv_rec      => x_rgpv_rec,
13359                                  x_rulv_rec      => x_rulv_rec
13360                                 );
13361 
13362       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13363           raise header_rule_failed;
13364       END IF;
13365 
13366       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
13367          l_rgp_id := x_rgpv_rec.id;
13368       END IF;
13369       debug_message('------>Rule: AMTPAR/AMAPRE processed');
13370       l_rulv_rec := NULL;
13371 
13372       l_prt_termination_allowed_flag := p_header_rec.prt_termination_allowed_flag;
13373 
13374       IF (l_prt_termination_allowed_flag IS NULL
13375           AND
13376           p_header_rec.template_number IS NOT NULL) THEN
13377          get_contract_rules(
13378                             x_return_status  => x_return_status,
13379                             x_msg_count      => x_msg_count,
13380                             x_msg_data       => x_msg_data,
13381                             p_chr_id         => p_template_id,
13382                             p_cle_id         => NULL,
13383                             p_rgd_code       => 'AMTPAR',
13384                             p_rule_code      => 'AMPTQA',
13385                             x_rulv_tbl       => l_rulv_tbl,
13386                             x_rule_count     => l_rule_count
13387                            );
13388 
13389          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13390             RAISE header_rule_failed;
13391          END IF;
13392 
13393          IF (l_rule_count > 0) THEN
13394             l_prt_termination_allowed_flag := l_rulv_tbl(1).rule_information1;
13395          END IF;
13396       END IF;
13397 
13398       IF (l_prt_termination_allowed_flag IS NOT NULL) THEN
13399          l_rulv_rec                           := NULL;
13400          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13401          l_rulv_rec.dnz_chr_id                := p_chr_id;
13402          l_rulv_rec.rule_information1         := l_prt_termination_allowed_flag;
13403          l_rulv_rec.rule_information_category := 'AMPTQA';
13404          l_rulv_rec.std_template_yn           := 'N';
13405          l_rulv_rec.warn_yn                   := 'N';
13406       END IF;
13407 
13408       create_rule_group_and_rule(
13409                                  x_return_status => x_return_status,
13410                                  x_msg_count     => x_msg_count,
13411                                  x_msg_data      => x_msg_data,
13412                                  p_rgp_id        => l_rgp_id,
13413                                  p_rgpv_rec      => l_rgpv_rec,
13414                                  p_rulv_rec      => l_rulv_rec,
13415                                  x_rgpv_rec      => x_rgpv_rec,
13416                                  x_rulv_rec      => x_rulv_rec
13417                                 );
13418 
13419       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13420           raise header_rule_failed;
13421       END IF;
13422 
13423       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
13424          l_rgp_id := x_rgpv_rec.id;
13425       END IF;
13426 
13427       debug_message('------>Rule: AMTPAR/AMPTQA processed');
13428       -- Rule Group AMTPAR
13429 
13430       l_rgpv_rec            := NULL;
13431       l_rgp_id              := NULL;
13432       l_rgpv_rec.rgd_code   := 'AMTGAL';
13433       l_rgpv_rec.chr_id     := p_chr_id;
13434       l_rgpv_rec.dnz_chr_id := p_chr_id;
13435       l_rgpv_rec.cle_id     := NULL;
13436       l_rgpv_rec.rgp_type   := 'KRG';
13437       l_rulv_rec := NULL;
13438 
13439 
13440       l_gain_loss_approval_req      := p_header_rec.gain_loss_approval_req;
13441 
13442       IF (l_gain_loss_approval_req IS NULL
13443           AND
13444           p_header_rec.template_number IS NOT NULL) THEN
13445 
13446          get_contract_rules(
13447                             x_return_status  => x_return_status,
13448                             x_msg_count      => x_msg_count,
13449                             x_msg_data       => x_msg_data,
13450                             p_chr_id         => p_template_id,
13451                             p_cle_id         => NULL,
13452                             p_rgd_code       => 'AMTGAL',
13453                             p_rule_code      => 'AMAPRE',
13454                             x_rulv_tbl       => l_rulv_tbl,
13455                             x_rule_count     => l_rule_count
13456                            );
13457 
13458          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13459             RAISE header_rule_failed;
13460          END IF;
13461 
13462          IF (l_rule_count > 0) THEN
13463             l_gain_loss_approval_req := l_rulv_tbl(1).rule_information1;
13464          END IF;
13465       END IF;
13466 
13467       IF (l_gain_loss_approval_req IS NOT NULL) THEN
13468          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13469          l_rulv_rec.dnz_chr_id                := p_chr_id;
13470          l_rulv_rec.rule_information1         := l_gain_loss_approval_req;
13471          l_rulv_rec.rule_information_category := 'AMAPRE';
13472          l_rulv_rec.std_template_yn           := 'N';
13473          l_rulv_rec.warn_yn                   := 'N';
13474       END IF;
13475 
13476       create_rule_group_and_rule(
13477                                  x_return_status => x_return_status,
13478                                  x_msg_count     => x_msg_count,
13479                                  x_msg_data      => x_msg_data,
13480                                  p_rgp_id        => l_rgp_id,
13481                                  p_rgpv_rec      => l_rgpv_rec,
13482                                  p_rulv_rec      => l_rulv_rec,
13483                                  x_rgpv_rec      => x_rgpv_rec,
13484                                  x_rulv_rec      => x_rulv_rec
13485                                 );
13486 
13487       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13488           raise header_rule_failed;
13489       END IF;
13490 
13491       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
13492          l_rgp_id := x_rgpv_rec.id;
13493       END IF;
13494       debug_message('------>Rule: AMTGAL/AMAPRE processed');
13495       l_rulv_rec := NULL;
13496 
13497       l_gain_loss_net_quote_opt     := p_header_rec.gain_loss_net_quote_opt;
13498       l_gain_loss_net_quote_amt     := TO_CHAR(p_header_rec.gain_loss_net_quote_amt);
13499       l_gain_loss_net_quote_formula := p_header_rec.gain_loss_net_quote_formula;
13500       l_gain_loss_tolrn_allwd       := p_header_rec.gain_loss_tolerance_allowed;
13501       l_gain_loss_tolrnc_allwd_amt  := p_header_rec.gain_loss_tolrnc_allwd_amt;
13502       l_gain_loss_tolrnc_allwd_frml := p_header_rec.gain_loss_tolrnc_allwd_frml;
13503       l_gain_loss_tolrnc_basis      := p_header_rec.gain_loss_tolrnc_basis;
13504       l_gain_loss_apprv_proc_frml   := p_header_rec.gain_loss_apprv_proc_frml;
13505 
13506       IF (l_gain_loss_net_quote_opt IS NULL
13507           OR
13508           l_gain_loss_net_quote_amt IS NULL
13509           OR
13510           l_gain_loss_net_quote_formula IS NULL
13511           OR
13512           l_gain_loss_tolrn_allwd IS NULL
13513           OR
13514           l_gain_loss_tolrnc_allwd_amt IS NULL
13515           OR
13516           l_gain_loss_tolrnc_allwd_frml IS NULL
13517           OR
13518           l_gain_loss_tolrnc_basis IS NULL
13519           OR
13520           l_gain_loss_apprv_proc_frml IS NULL
13521           AND
13522           p_header_rec.template_number IS NOT NULL) THEN
13523 
13524          get_contract_rules(
13525                             x_return_status  => x_return_status,
13526                             x_msg_count      => x_msg_count,
13527                             x_msg_data       => x_msg_data,
13528                             p_chr_id         => p_template_id,
13529                             p_cle_id         => NULL,
13530                             p_rgd_code       => 'AMTGAL',
13531                             p_rule_code      => 'AMGALO',
13532                             x_rulv_tbl       => l_rulv_tbl,
13533                             x_rule_count     => l_rule_count
13534                            );
13535 
13536          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13537             RAISE header_rule_failed;
13538          END IF;
13539 
13540          IF (l_rule_count > 0) THEN
13541             l_gain_loss_net_quote_opt     := NVL(l_gain_loss_net_quote_opt,l_rulv_tbl(1).rule_information1);
13542             l_gain_loss_net_quote_amt     := NVL(l_gain_loss_net_quote_amt,l_rulv_tbl(1).rule_information2);
13543             l_gain_loss_net_quote_formula := NVL(l_gain_loss_net_quote_formula,l_rulv_tbl(1).rule_information3);
13544             l_gain_loss_tolrn_allwd       := NVL(l_gain_loss_tolrn_allwd,l_rulv_tbl(1).rule_information7);
13545             l_gain_loss_tolrnc_allwd_amt  := NVL(l_gain_loss_tolrnc_allwd_amt,l_rulv_tbl(1).rule_information4);
13546             l_gain_loss_tolrnc_allwd_frml := NVL(l_gain_loss_tolrnc_allwd_frml,l_rulv_tbl(1).rule_information6);
13547             l_gain_loss_tolrnc_basis      := NVL(l_gain_loss_tolrnc_basis,l_rulv_tbl(1).rule_information5);
13548             l_gain_loss_apprv_proc_frml   := NVL(l_gain_loss_apprv_proc_frml,l_rulv_tbl(1).rule_information8);
13549          END IF;
13550       END IF;
13551 
13552       IF (l_gain_loss_net_quote_opt IS NOT NULL) THEN
13553          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13554          l_rulv_rec.dnz_chr_id                := p_chr_id;
13555          l_rulv_rec.rule_information1         := l_gain_loss_net_quote_opt;
13556          l_rulv_rec.rule_information_category := 'AMGALO';
13557          l_rulv_rec.std_template_yn           := 'N';
13558          l_rulv_rec.warn_yn                   := 'N';
13559       END IF;
13560 
13561       IF (l_gain_loss_net_quote_amt IS NOT NULL) THEN
13562          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13563          l_rulv_rec.dnz_chr_id                := p_chr_id;
13564          l_rulv_rec.rule_information2         := l_gain_loss_net_quote_amt;
13565          l_rulv_rec.rule_information_category := 'AMGALO';
13566          l_rulv_rec.std_template_yn           := 'N';
13567          l_rulv_rec.warn_yn                   := 'N';
13568       END IF;
13569 
13570       IF (l_gain_loss_net_quote_formula IS NOT NULL) THEN
13571          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13572          l_rulv_rec.dnz_chr_id                := p_chr_id;
13573          l_rulv_rec.rule_information3         := l_gain_loss_net_quote_formula;
13574          l_rulv_rec.rule_information_category := 'AMGALO';
13575          l_rulv_rec.std_template_yn           := 'N';
13576          l_rulv_rec.warn_yn                   := 'N';
13577       END IF;
13578 
13579       IF (l_gain_loss_tolrn_allwd IS NOT NULL) THEN
13580          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13581          l_rulv_rec.dnz_chr_id                := p_chr_id;
13582          l_rulv_rec.rule_information7         := l_gain_loss_tolrn_allwd;
13583          l_rulv_rec.rule_information_category := 'AMGALO';
13584          l_rulv_rec.std_template_yn           := 'N';
13585          l_rulv_rec.warn_yn                   := 'N';
13586       END IF;
13587 
13588       IF (l_gain_loss_tolrnc_allwd_amt IS NOT NULL) THEN
13589          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13590          l_rulv_rec.dnz_chr_id                := p_chr_id;
13591          l_rulv_rec.rule_information4         := l_gain_loss_tolrnc_allwd_amt;
13592          l_rulv_rec.rule_information_category := 'AMGALO';
13593          l_rulv_rec.std_template_yn           := 'N';
13594          l_rulv_rec.warn_yn                   := 'N';
13595       END IF;
13596 
13597       IF (l_gain_loss_tolrnc_allwd_frml IS NOT NULL) THEN
13598          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13599          l_rulv_rec.dnz_chr_id                := p_chr_id;
13600          l_rulv_rec.rule_information6         := l_gain_loss_tolrnc_allwd_frml;
13601          l_rulv_rec.rule_information_category := 'AMGALO';
13602          l_rulv_rec.std_template_yn           := 'N';
13603          l_rulv_rec.warn_yn                   := 'N';
13604       END IF;
13605 
13606       IF (l_gain_loss_tolrnc_basis IS NOT NULL) THEN
13607          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13608          l_rulv_rec.dnz_chr_id                := p_chr_id;
13609          l_rulv_rec.rule_information5         := l_gain_loss_tolrnc_basis;
13610          l_rulv_rec.rule_information_category := 'AMGALO';
13611          l_rulv_rec.std_template_yn           := 'N';
13612          l_rulv_rec.warn_yn                   := 'N';
13613       END IF;
13614 
13615       IF (l_gain_loss_apprv_proc_frml IS NOT NULL) THEN
13616          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13617          l_rulv_rec.dnz_chr_id                := p_chr_id;
13618          l_rulv_rec.rule_information8         := l_gain_loss_apprv_proc_frml;
13619          l_rulv_rec.rule_information_category := 'AMGALO';
13620          l_rulv_rec.std_template_yn           := 'N';
13621          l_rulv_rec.warn_yn                   := 'N';
13622       END IF;
13623 
13624       create_rule_group_and_rule(
13625                                  x_return_status => x_return_status,
13626                                  x_msg_count     => x_msg_count,
13627                                  x_msg_data      => x_msg_data,
13628                                  p_rgp_id        => l_rgp_id,
13629                                  p_rgpv_rec      => l_rgpv_rec,
13630                                  p_rulv_rec      => l_rulv_rec,
13631                                  x_rgpv_rec      => x_rgpv_rec,
13632                                  x_rulv_rec      => x_rulv_rec
13633                                 );
13634 
13635       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13636           raise header_rule_failed;
13637       END IF;
13638 
13639       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
13640          l_rgp_id := x_rgpv_rec.id;
13641       END IF;
13642       debug_message('------>Rule: AMTGAL/AMGALO processed');
13643 
13644       -- Rule Group AMQR1R
13645 
13646       l_rgpv_rec            := NULL;
13647       l_rgp_id              := NULL;
13648       l_rgpv_rec.rgd_code   := 'AMQR1R';
13649       l_rgpv_rec.chr_id     := p_chr_id;
13650       l_rgpv_rec.dnz_chr_id := p_chr_id;
13651       l_rgpv_rec.cle_id     := NULL;
13652       l_rgpv_rec.rgp_type   := 'KRG';
13653       l_rulv_rec := NULL;
13654 
13655       l_quote_rcpt_contract_role := p_header_rec.quote_rcpt_contract_role;
13656 
13657       IF (l_quote_rcpt_contract_role IS NULL
13658           AND
13659           p_header_rec.template_number IS NOT NULL) THEN
13660          get_contract_rules(
13661                             x_return_status  => x_return_status,
13662                             x_msg_count      => x_msg_count,
13663                             x_msg_data       => x_msg_data,
13664                             p_chr_id         => p_template_id,
13665                             p_cle_id         => NULL,
13666                             p_rgd_code       => 'AMQR1R',
13667                             p_rule_code      => 'AMLCRO',
13668                             x_rulv_tbl       => l_rulv_tbl,
13669                             x_rule_count     => l_rule_count
13670                            );
13671 
13672          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13673             RAISE header_rule_failed;
13674          END IF;
13675 
13676          IF (l_rule_count > 0) THEN
13677             l_quote_rcpt_contract_role := l_rulv_tbl(1).rule_information1;
13678          END IF;
13679       END IF;
13680 
13681       IF (l_quote_rcpt_contract_role IS NOT NULL) THEN
13682          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13683          l_rulv_rec.dnz_chr_id                := p_chr_id;
13684          l_rulv_rec.rule_information1         := l_quote_rcpt_contract_role;
13685          l_rulv_rec.rule_information_category := 'AMLCRO';
13686          l_rulv_rec.std_template_yn           := 'N';
13687          l_rulv_rec.warn_yn                   := 'N';
13688       END IF;
13689 
13690       create_rule_group_and_rule(
13691                                  x_return_status => x_return_status,
13692                                  x_msg_count     => x_msg_count,
13693                                  x_msg_data      => x_msg_data,
13694                                  p_rgp_id        => l_rgp_id,
13695                                  p_rgpv_rec      => l_rgpv_rec,
13696                                  p_rulv_rec      => l_rulv_rec,
13697                                  x_rgpv_rec      => x_rgpv_rec,
13698                                  x_rulv_rec      => x_rulv_rec
13699                                 );
13700 
13701       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13702           raise header_rule_failed;
13703       END IF;
13704 
13705       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
13706          l_rgp_id := x_rgpv_rec.id;
13707       END IF;
13708 
13709       debug_message('------>Rule: AMQR1R/AMLCRO processed');
13710 
13711       l_rulv_rec := NULL;
13712 
13713       l_quote_rcpt_addl_rcpt_role := p_header_rec.quote_rcpt_addl_rcpt_role;
13714       l_quote_rcpt_alloc_ptg      := p_header_rec.quote_rcpt_alloc_ptg;
13715 
13716       IF (( l_quote_rcpt_addl_rcpt_role IS NULL
13717             OR
13718             l_quote_rcpt_alloc_ptg IS NULL
13719           )
13720           AND
13721           p_header_rec.template_number IS NOT NULL) THEN
13722          get_contract_rules(
13723                             x_return_status  => x_return_status,
13724                             x_msg_count      => x_msg_count,
13725                             x_msg_data       => x_msg_data,
13726                             p_chr_id         => p_template_id,
13727                             p_cle_id         => NULL,
13728                             p_rgd_code       => 'AMQR1R',
13729                             p_rule_code      => 'AMLCRP',
13730                             x_rulv_tbl       => l_rulv_tbl,
13731                             x_rule_count     => l_rule_count
13732                            );
13733 
13734          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13735             RAISE header_rule_failed;
13736          END IF;
13737 
13738          IF (l_rule_count > 0) THEN
13739             l_quote_rcpt_addl_rcpt_role := NVL(l_quote_rcpt_addl_rcpt_role,l_rulv_tbl(1).rule_information1);
13740             l_quote_rcpt_alloc_ptg      := NVL(l_quote_rcpt_alloc_ptg,l_rulv_tbl(1).rule_information2);
13741          END IF;
13742       END IF;
13743 
13744       IF (l_quote_rcpt_addl_rcpt_role IS NOT NULL) THEN
13745          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13746          l_rulv_rec.dnz_chr_id                := p_chr_id;
13747          l_rulv_rec.rule_information1         := l_quote_rcpt_addl_rcpt_role;
13748          l_rulv_rec.rule_information_category := 'AMLCRP';
13749          l_rulv_rec.std_template_yn           := 'N';
13750          l_rulv_rec.warn_yn                   := 'N';
13751       END IF;
13752 
13753       IF (l_quote_rcpt_alloc_ptg IS NOT NULL) THEN
13754          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13755          l_rulv_rec.dnz_chr_id                := p_chr_id;
13756          l_rulv_rec.rule_information2         := l_quote_rcpt_alloc_ptg;
13757          l_rulv_rec.rule_information_category := 'AMLCRP';
13758          l_rulv_rec.std_template_yn           := 'N';
13759          l_rulv_rec.warn_yn                   := 'N';
13760       END IF;
13761 
13762       create_rule_group_and_rule(
13763                                  x_return_status => x_return_status,
13764                                  x_msg_count     => x_msg_count,
13765                                  x_msg_data      => x_msg_data,
13766                                  p_rgp_id        => l_rgp_id,
13767                                  p_rgpv_rec      => l_rgpv_rec,
13768                                  p_rulv_rec      => l_rulv_rec,
13769                                  x_rgpv_rec      => x_rgpv_rec,
13770                                  x_rulv_rec      => x_rulv_rec
13771                                 );
13772 
13773       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13774           raise header_rule_failed;
13775       END IF;
13776 
13777       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
13778          l_rgp_id := x_rgpv_rec.id;
13779       END IF;
13780 
13781       debug_message('------>Rule: AMQR1R/AMLCRP processed');
13782 
13783       -- Rule Group AMQR5A
13784 
13785       l_rgpv_rec            := NULL;
13786       l_rgp_id              := NULL;
13787       l_rgpv_rec.rgd_code   := 'AMQR5A';
13788       l_rgpv_rec.chr_id     := p_chr_id;
13789       l_rgpv_rec.dnz_chr_id := p_chr_id;
13790       l_rgpv_rec.cle_id     := NULL;
13791       l_rgpv_rec.rgp_type   := 'KRG';
13792       l_rulv_rec := NULL;
13793 
13794       l_quote_approver_contract_role := p_header_rec.quote_approver_contract_role;
13795 
13796       IF (l_quote_approver_contract_role IS NULL
13797           AND
13798           p_header_rec.template_number IS NOT NULL) THEN
13799          get_contract_rules(
13800                             x_return_status  => x_return_status,
13801                             x_msg_count      => x_msg_count,
13802                             x_msg_data       => x_msg_data,
13803                             p_chr_id         => p_template_id,
13804                             p_cle_id         => NULL,
13805                             p_rgd_code       => 'AMQR5A',
13806                             p_rule_code      => 'AMLCAP',
13807                             x_rulv_tbl       => l_rulv_tbl,
13808                             x_rule_count     => l_rule_count
13809                            );
13810 
13811          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13812             RAISE header_rule_failed;
13813          END IF;
13814 
13815          IF (l_rule_count > 0) THEN
13816             l_quote_approver_contract_role := l_rulv_tbl(1).rule_information1;
13817          END IF;
13818       END IF;
13819 
13820       IF (l_quote_approver_contract_role IS NOT NULL) THEN
13821          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13822          l_rulv_rec.dnz_chr_id                := p_chr_id;
13823          l_rulv_rec.rule_information1         := l_quote_approver_contract_role;
13824          l_rulv_rec.rule_information_category := 'AMLCAP';
13825          l_rulv_rec.std_template_yn           := 'N';
13826          l_rulv_rec.warn_yn                   := 'N';
13827       END IF;
13828 
13829       create_rule_group_and_rule(
13830                                  x_return_status => x_return_status,
13831                                  x_msg_count     => x_msg_count,
13832                                  x_msg_data      => x_msg_data,
13833                                  p_rgp_id        => l_rgp_id,
13834                                  p_rgpv_rec      => l_rgpv_rec,
13835                                  p_rulv_rec      => l_rulv_rec,
13836                                  x_rgpv_rec      => x_rgpv_rec,
13837                                  x_rulv_rec      => x_rulv_rec
13838                                 );
13839 
13840       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13841           raise header_rule_failed;
13842       END IF;
13843 
13844       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
13845          l_rgp_id := x_rgpv_rec.id;
13846       END IF;
13847 
13848       debug_message('------>Rule: AMQR5A/AMLCAP processed');
13849 
13850       l_quote_apprvr_adv_notice_role := p_header_rec.quote_apprvr_adv_notice_role;
13851       l_quote_approver_delay_days    := p_header_rec.quote_approver_delay_days;
13852 
13853       IF ((l_quote_apprvr_adv_notice_role IS NULL
13854            OR
13855            l_quote_approver_delay_days IS NULL
13856           )
13857           AND
13858           p_header_rec.template_number IS NOT NULL) THEN
13859          get_contract_rules(
13860                             x_return_status  => x_return_status,
13861                             x_msg_count      => x_msg_count,
13862                             x_msg_data       => x_msg_data,
13863                             p_chr_id         => p_template_id,
13864                             p_cle_id         => NULL,
13865                             p_rgd_code       => 'AMQR5A',
13866                             p_rule_code      => 'AMLCAV',
13867                             x_rulv_tbl       => l_rulv_tbl,
13868                             x_rule_count     => l_rule_count
13869                            );
13870 
13871          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13872             RAISE header_rule_failed;
13873          END IF;
13874 
13875          IF (l_rule_count > 0) THEN
13876             l_quote_apprvr_adv_notice_role := NVL(l_quote_apprvr_adv_notice_role, l_rulv_tbl(1).rule_information1);
13877             l_quote_approver_delay_days := NVL(l_quote_approver_delay_days, l_rulv_tbl(1).rule_information2);
13878          END IF;
13879       END IF;
13880 
13881       IF (l_quote_apprvr_adv_notice_role IS NOT NULL) THEN
13882          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13883          l_rulv_rec.dnz_chr_id                := p_chr_id;
13884          l_rulv_rec.rule_information1         := l_quote_apprvr_adv_notice_role;
13885          l_rulv_rec.rule_information_category := 'AMLCAV';
13886          l_rulv_rec.std_template_yn           := 'N';
13887          l_rulv_rec.warn_yn                   := 'N';
13888       END IF;
13889 
13890       IF (l_quote_approver_delay_days IS NOT NULL) THEN
13891          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13892          l_rulv_rec.dnz_chr_id                := p_chr_id;
13893          l_rulv_rec.rule_information2         := l_quote_approver_delay_days;
13894          l_rulv_rec.rule_information_category := 'AMLCAV';
13895          l_rulv_rec.std_template_yn           := 'N';
13896          l_rulv_rec.warn_yn                   := 'N';
13897       END IF;
13898 
13899       create_rule_group_and_rule(
13900                                  x_return_status => x_return_status,
13901                                  x_msg_count     => x_msg_count,
13902                                  x_msg_data      => x_msg_data,
13903                                  p_rgp_id        => l_rgp_id,
13904                                  p_rgpv_rec      => l_rgpv_rec,
13905                                  p_rulv_rec      => l_rulv_rec,
13906                                  x_rgpv_rec      => x_rgpv_rec,
13907                                  x_rulv_rec      => x_rulv_rec
13908                                 );
13909 
13910       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13911           raise header_rule_failed;
13912       END IF;
13913 
13914       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
13915          l_rgp_id := x_rgpv_rec.id;
13916       END IF;
13917 
13918       debug_message('------>Rule: AMQR5A/AMLCAV processed');
13919 
13920       -- Rule Group AMQR9F
13921 
13922       l_rgpv_rec            := NULL;
13923       l_rgp_id              := NULL;
13924       l_rgpv_rec.rgd_code   := 'AMQR9F';
13925       l_rgpv_rec.chr_id     := p_chr_id;
13926       l_rgpv_rec.dnz_chr_id := p_chr_id;
13927       l_rgpv_rec.cle_id     := NULL;
13928       l_rgpv_rec.rgp_type   := 'KRG';
13929       l_rulv_rec := NULL;
13930 
13931       l_quote_crtsy_cp_cntrc_role := p_header_rec.quote_crtsy_copy_contract_role;
13932 
13933       IF (l_quote_crtsy_cp_cntrc_role IS NULL
13934           AND
13935           p_header_rec.template_number IS NOT NULL) THEN
13936          get_contract_rules(
13937                             x_return_status  => x_return_status,
13938                             x_msg_count      => x_msg_count,
13939                             x_msg_data       => x_msg_data,
13940                             p_chr_id         => p_template_id,
13941                             p_cle_id         => NULL,
13942                             p_rgd_code       => 'AMQR9F',
13943                             p_rule_code      => 'AMLCCO',
13944                             x_rulv_tbl       => l_rulv_tbl,
13945                             x_rule_count     => l_rule_count
13946                            );
13947 
13948          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13949             RAISE header_rule_failed;
13950          END IF;
13951 
13952          IF (l_rule_count > 0) THEN
13953             l_quote_crtsy_cp_cntrc_role := l_rulv_tbl(1).rule_information1;
13954          END IF;
13955       END IF;
13956 
13957       IF (l_quote_crtsy_cp_cntrc_role IS NOT NULL) THEN
13958          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13959          l_rulv_rec.dnz_chr_id                := p_chr_id;
13960          l_rulv_rec.rule_information1         := l_quote_crtsy_cp_cntrc_role;
13961          l_rulv_rec.rule_information_category := 'AMLCCO';
13962          l_rulv_rec.std_template_yn           := 'N';
13963          l_rulv_rec.warn_yn                   := 'N';
13964       END IF;
13965 
13966       create_rule_group_and_rule(
13967                                  x_return_status => x_return_status,
13968                                  x_msg_count     => x_msg_count,
13969                                  x_msg_data      => x_msg_data,
13970                                  p_rgp_id        => l_rgp_id,
13971                                  p_rgpv_rec      => l_rgpv_rec,
13972                                  p_rulv_rec      => l_rulv_rec,
13973                                  x_rgpv_rec      => x_rgpv_rec,
13974                                  x_rulv_rec      => x_rulv_rec
13975                                 );
13976 
13977       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13978           raise header_rule_failed;
13979       END IF;
13980 
13981       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
13982          l_rgp_id := x_rgpv_rec.id;
13983       END IF;
13984 
13985       debug_message('------>Rule: AMQR9F/AMLCCO processed');
13986 
13987       -- Rule Group AMTEWC
13988 
13989       l_rgpv_rec            := NULL;
13990       l_rgp_id              := NULL;
13991       l_rgpv_rec.rgd_code   := 'AMTEWC';
13992       l_rgpv_rec.chr_id     := p_chr_id;
13993       l_rgpv_rec.dnz_chr_id := p_chr_id;
13994       l_rgpv_rec.cle_id     := NULL;
13995       l_rgpv_rec.rgp_type   := 'KRG';
13996       l_rulv_rec := NULL;
13997 
13998       l_ert_quote_calc_term_option  := p_header_rec.ert_quote_calc_term_option;
13999       l_ert_quote_calc_term_formula := p_header_rec.ert_quote_calc_term_formula;
14000 
14001       IF (l_ert_quote_calc_term_option IS NULL
14002           OR
14003           l_ert_quote_calc_term_formula IS NULL
14004           AND
14005           p_header_rec.template_number IS NOT NULL) THEN
14006          get_contract_rules(
14007                             x_return_status  => x_return_status,
14008                             x_msg_count      => x_msg_count,
14009                             x_msg_data       => x_msg_data,
14010                             p_chr_id         => p_template_id,
14011                             p_cle_id         => NULL,
14012                             p_rgd_code       => 'AMTEWC',
14013                             p_rule_code      => 'AMATQC',
14014                             x_rulv_tbl       => l_rulv_tbl,
14015                             x_rule_count     => l_rule_count
14016                            );
14017 
14018          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14019             RAISE header_rule_failed;
14020          END IF;
14021 
14022          IF (l_rule_count > 0) THEN
14023             l_ert_quote_calc_term_option  := NVL(l_ert_quote_calc_term_option,l_rulv_tbl(1).rule_information1);
14024             l_ert_quote_calc_term_formula := NVL(l_ert_quote_calc_term_formula,l_rulv_tbl(1).rule_information2);
14025          END IF;
14026       END IF;
14027 
14028       IF (l_ert_quote_calc_term_option IS NOT NULL) THEN
14029          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14030          l_rulv_rec.dnz_chr_id                := p_chr_id;
14031          l_rulv_rec.rule_information1         := l_ert_quote_calc_term_option;
14032          l_rulv_rec.rule_information_category := 'AMATQC';
14033          l_rulv_rec.std_template_yn           := 'N';
14034          l_rulv_rec.warn_yn                   := 'N';
14035       END IF;
14036 
14037       IF (l_ert_quote_calc_term_formula IS NOT NULL) THEN
14038          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14039          l_rulv_rec.dnz_chr_id                := p_chr_id;
14040          l_rulv_rec.rule_information2         := l_ert_quote_calc_term_formula;
14041          l_rulv_rec.rule_information_category := 'AMATQC';
14042          l_rulv_rec.std_template_yn           := 'N';
14043          l_rulv_rec.warn_yn                   := 'N';
14044       END IF;
14045 
14046       create_rule_group_and_rule(
14047                                  x_return_status => x_return_status,
14048                                  x_msg_count     => x_msg_count,
14049                                  x_msg_data      => x_msg_data,
14050                                  p_rgp_id        => l_rgp_id,
14051                                  p_rgpv_rec      => l_rgpv_rec,
14052                                  p_rulv_rec      => l_rulv_rec,
14053                                  x_rgpv_rec      => x_rgpv_rec,
14054                                  x_rulv_rec      => x_rulv_rec
14055                                 );
14056 
14057       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14058           raise header_rule_failed;
14059       END IF;
14060 
14061       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
14062          l_rgp_id := x_rgpv_rec.id;
14063       END IF;
14064       debug_message('------>Rule: AMTEWC/AMATQC processed');
14065       l_rulv_rec := NULL;
14066 
14067       l_ert_contract_oblig_opt      := p_header_rec.ert_contract_oblig_opt;
14068       l_ert_contract_oblig_amount   := TO_CHAR(p_header_rec.ert_contract_oblig_amount);
14069       l_ert_contract_oblig_formula  := p_header_rec.ert_contract_oblig_formula;
14070       l_ert_contract_oblig_prorate  := p_header_rec.ert_contract_oblig_prorate;
14071 
14072       IF (l_ert_contract_oblig_opt IS NULL
14073           OR
14074           l_ert_contract_oblig_amount IS NULL
14075           OR
14076           l_ert_contract_oblig_formula IS NULL
14077           OR
14078           l_ert_contract_oblig_prorate IS NULL
14079           AND
14080           p_header_rec.template_number IS NOT NULL) THEN
14081          get_contract_rules(
14082                             x_return_status  => x_return_status,
14083                             x_msg_count      => x_msg_count,
14084                             x_msg_data       => x_msg_data,
14085                             p_chr_id         => p_template_id,
14086                             p_cle_id         => NULL,
14087                             p_rgd_code       => 'AMTEWC',
14088                             p_rule_code      => 'AMBCOC',
14089                             x_rulv_tbl       => l_rulv_tbl,
14090                             x_rule_count     => l_rule_count
14091                            );
14092 
14093          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14094             RAISE header_rule_failed;
14095          END IF;
14096 
14097          IF (l_rule_count > 0) THEN
14098             l_ert_contract_oblig_opt      := NVL(l_ert_contract_oblig_opt,l_rulv_tbl(1).rule_information1);
14099             l_ert_contract_oblig_amount   := NVL(l_ert_contract_oblig_amount,l_rulv_tbl(1).rule_information2);
14100             l_ert_contract_oblig_formula  := NVL(l_ert_contract_oblig_formula,l_rulv_tbl(1).rule_information3);
14101             l_ert_contract_oblig_prorate  := NVL(l_ert_contract_oblig_prorate,l_rulv_tbl(1).rule_information4);
14102          END IF;
14103       END IF;
14104 
14105       IF (l_ert_contract_oblig_opt IS NOT NULL) THEN
14106          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14107          l_rulv_rec.dnz_chr_id                := p_chr_id;
14108          l_rulv_rec.rule_information1         := l_ert_contract_oblig_opt;
14109          l_rulv_rec.rule_information_category := 'AMBCOC';
14110          l_rulv_rec.std_template_yn           := 'N';
14111          l_rulv_rec.warn_yn                   := 'N';
14112       END IF;
14113 
14114       IF (l_ert_contract_oblig_amount IS NOT NULL) THEN
14115          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14116          l_rulv_rec.dnz_chr_id                := p_chr_id;
14117          l_rulv_rec.rule_information2         := l_ert_contract_oblig_amount;
14118          l_rulv_rec.rule_information_category := 'AMBCOC';
14119          l_rulv_rec.std_template_yn           := 'N';
14120          l_rulv_rec.warn_yn                   := 'N';
14121       END IF;
14122 
14123       IF (l_ert_contract_oblig_formula IS NOT NULL) THEN
14124          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14125          l_rulv_rec.dnz_chr_id                := p_chr_id;
14126          l_rulv_rec.rule_information3         := l_ert_contract_oblig_formula;
14127          l_rulv_rec.rule_information_category := 'AMBCOC';
14128          l_rulv_rec.std_template_yn           := 'N';
14129          l_rulv_rec.warn_yn                   := 'N';
14130       END IF;
14131 
14132       IF (l_ert_contract_oblig_prorate IS NOT NULL) THEN
14133          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14134          l_rulv_rec.dnz_chr_id                := p_chr_id;
14135          l_rulv_rec.rule_information4         := l_ert_contract_oblig_prorate;
14136          l_rulv_rec.rule_information_category := 'AMBCOC';
14137          l_rulv_rec.std_template_yn           := 'N';
14138          l_rulv_rec.warn_yn                   := 'N';
14139       END IF;
14140 
14141       create_rule_group_and_rule(
14142                                  x_return_status => x_return_status,
14143                                  x_msg_count     => x_msg_count,
14144                                  x_msg_data      => x_msg_data,
14145                                  p_rgp_id        => l_rgp_id,
14146                                  p_rgpv_rec      => l_rgpv_rec,
14147                                  p_rulv_rec      => l_rulv_rec,
14148                                  x_rgpv_rec      => x_rgpv_rec,
14149                                  x_rulv_rec      => x_rulv_rec
14150                                 );
14151 
14152       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14153           raise header_rule_failed;
14154       END IF;
14155 
14156       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
14157          l_rgp_id := x_rgpv_rec.id;
14158       END IF;
14159       debug_message('------>Rule: AMTEWC/AMBCOC processed');
14160       l_rulv_rec := NULL;
14161 
14162       l_ert_disc_rate_opt      := p_header_rec.ert_disc_rate_opt;
14163       l_ert_disc_rate_amount   := TO_CHAR(p_header_rec.ert_disc_rate_amount);
14164       l_ert_disc_rate_formula  := p_header_rec.ert_disc_rate_formula;
14165       l_ert_disc_rate_prorate  := p_header_rec.ert_disc_rate_prorate;
14166 
14167       IF (l_ert_disc_rate_opt IS NULL
14168           OR
14169           l_ert_disc_rate_amount IS NULL
14170           OR
14171           l_ert_disc_rate_formula IS NULL
14172           OR
14173           l_ert_disc_rate_prorate IS NULL
14174           AND
14175           p_header_rec.template_number IS NOT NULL) THEN
14176          get_contract_rules(
14177                             x_return_status  => x_return_status,
14178                             x_msg_count      => x_msg_count,
14179                             x_msg_data       => x_msg_data,
14180                             p_chr_id         => p_template_id,
14181                             p_cle_id         => NULL,
14182                             p_rgd_code       => 'AMTEWC',
14183                             p_rule_code      => 'AMCQDR',
14184                             x_rulv_tbl       => l_rulv_tbl,
14185                             x_rule_count     => l_rule_count
14186                            );
14187 
14188          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14189             RAISE header_rule_failed;
14190          END IF;
14191 
14192          IF (l_rule_count > 0) THEN
14193             l_ert_disc_rate_opt      := NVL(l_ert_disc_rate_opt,l_rulv_tbl(1).rule_information1);
14194             l_ert_disc_rate_amount   := NVL(l_ert_disc_rate_amount,l_rulv_tbl(1).rule_information2);
14195             l_ert_disc_rate_formula  := NVL(l_ert_disc_rate_formula,l_rulv_tbl(1).rule_information3);
14196             l_ert_disc_rate_prorate  := NVL(l_ert_disc_rate_prorate,l_rulv_tbl(1).rule_information4);
14197          END IF;
14198       END IF;
14199 
14200       IF (l_ert_disc_rate_opt IS NOT NULL) THEN
14201          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14202          l_rulv_rec.dnz_chr_id                := p_chr_id;
14203          l_rulv_rec.rule_information1         := l_ert_disc_rate_opt;
14204          l_rulv_rec.rule_information_category := 'AMCQDR';
14205          l_rulv_rec.std_template_yn           := 'N';
14206          l_rulv_rec.warn_yn                   := 'N';
14207       END IF;
14208 
14209       IF (l_ert_disc_rate_amount IS NOT NULL) THEN
14210          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14211          l_rulv_rec.dnz_chr_id                := p_chr_id;
14212          l_rulv_rec.rule_information2         := l_ert_disc_rate_amount;
14213          l_rulv_rec.rule_information_category := 'AMCQDR';
14214          l_rulv_rec.std_template_yn           := 'N';
14215          l_rulv_rec.warn_yn                   := 'N';
14216       END IF;
14217 
14218       IF (l_ert_disc_rate_formula IS NOT NULL) THEN
14219          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14220          l_rulv_rec.dnz_chr_id                := p_chr_id;
14221          l_rulv_rec.rule_information3         := l_ert_disc_rate_formula;
14222          l_rulv_rec.rule_information_category := 'AMCQDR';
14223          l_rulv_rec.std_template_yn           := 'N';
14224          l_rulv_rec.warn_yn                   := 'N';
14225       END IF;
14226 
14227       IF (l_ert_disc_rate_prorate IS NOT NULL) THEN
14228          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14229          l_rulv_rec.dnz_chr_id                := p_chr_id;
14230          l_rulv_rec.rule_information4         := l_ert_disc_rate_prorate;
14231          l_rulv_rec.rule_information_category := 'AMCQDR';
14232          l_rulv_rec.std_template_yn           := 'N';
14233          l_rulv_rec.warn_yn                   := 'N';
14234       END IF;
14235 
14236       create_rule_group_and_rule(
14237                                  x_return_status => x_return_status,
14238                                  x_msg_count     => x_msg_count,
14239                                  x_msg_data      => x_msg_data,
14240                                  p_rgp_id        => l_rgp_id,
14241                                  p_rgpv_rec      => l_rgpv_rec,
14242                                  p_rulv_rec      => l_rulv_rec,
14243                                  x_rgpv_rec      => x_rgpv_rec,
14244                                  x_rulv_rec      => x_rulv_rec
14245                                 );
14246 
14247       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14248           raise header_rule_failed;
14249       END IF;
14250 
14251       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
14252          l_rgp_id := x_rgpv_rec.id;
14253       END IF;
14254       debug_message('------>Rule: AMTEWC/AMCQDR processed');
14255       l_rulv_rec := NULL;
14256 
14257       l_ert_quote_fee_opt      := p_header_rec.ert_quote_fee_opt;
14258       l_ert_quote_fee_amount   := TO_CHAR(p_header_rec.ert_quote_fee_amount);
14259       l_ert_quote_fee_formula  := p_header_rec.ert_quote_fee_formula;
14260       l_ert_quote_fee_prorate  := p_header_rec.ert_quote_fee_prorate;
14261 
14262       IF (l_ert_quote_fee_opt IS NULL
14263           OR
14264           l_ert_quote_fee_amount IS NULL
14265           OR
14266           l_ert_quote_fee_formula IS NULL
14267           OR
14268           l_ert_quote_fee_prorate IS NULL
14269           AND
14270           p_header_rec.template_number IS NOT NULL) THEN
14271          get_contract_rules(
14272                             x_return_status  => x_return_status,
14273                             x_msg_count      => x_msg_count,
14274                             x_msg_data       => x_msg_data,
14275                             p_chr_id         => p_template_id,
14276                             p_cle_id         => NULL,
14277                             p_rgd_code       => 'AMTEWC',
14278                             p_rule_code      => 'AMCQFE',
14279                             x_rulv_tbl       => l_rulv_tbl,
14280                             x_rule_count     => l_rule_count
14281                            );
14282 
14283          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14284             RAISE header_rule_failed;
14285          END IF;
14286 
14287          IF (l_rule_count > 0) THEN
14288             l_ert_quote_fee_opt      := NVL(l_ert_quote_fee_opt,l_rulv_tbl(1).rule_information1);
14289             l_ert_quote_fee_amount   := NVL(l_ert_quote_fee_amount,l_rulv_tbl(1).rule_information2);
14290             l_ert_quote_fee_formula  := NVL(l_ert_quote_fee_formula,l_rulv_tbl(1).rule_information3);
14291             l_ert_quote_fee_prorate  := NVL(l_ert_quote_fee_prorate,l_rulv_tbl(1).rule_information4);
14292          END IF;
14293       END IF;
14294 
14295       IF (l_ert_quote_fee_opt IS NOT NULL) THEN
14296          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14297          l_rulv_rec.dnz_chr_id                := p_chr_id;
14298          l_rulv_rec.rule_information1         := l_ert_quote_fee_opt;
14299          l_rulv_rec.rule_information_category := 'AMCQFE';
14300          l_rulv_rec.std_template_yn           := 'N';
14301          l_rulv_rec.warn_yn                   := 'N';
14302       END IF;
14303 
14304       IF (l_ert_quote_fee_amount IS NOT NULL) THEN
14305          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14306          l_rulv_rec.dnz_chr_id                := p_chr_id;
14307          l_rulv_rec.rule_information2         := l_ert_quote_fee_amount;
14308          l_rulv_rec.rule_information_category := 'AMCQFE';
14309          l_rulv_rec.std_template_yn           := 'N';
14310          l_rulv_rec.warn_yn                   := 'N';
14311       END IF;
14312 
14313       IF (l_ert_quote_fee_formula IS NOT NULL) THEN
14314          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14315          l_rulv_rec.dnz_chr_id                := p_chr_id;
14316          l_rulv_rec.rule_information3         := l_ert_quote_fee_formula;
14317          l_rulv_rec.rule_information_category := 'AMCQFE';
14318          l_rulv_rec.std_template_yn           := 'N';
14319          l_rulv_rec.warn_yn                   := 'N';
14320       END IF;
14321 
14322       IF (l_ert_quote_fee_prorate IS NOT NULL) THEN
14323          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14324          l_rulv_rec.dnz_chr_id                := p_chr_id;
14325          l_rulv_rec.rule_information4         := l_ert_quote_fee_prorate;
14326          l_rulv_rec.rule_information_category := 'AMCQFE';
14327          l_rulv_rec.std_template_yn           := 'N';
14328          l_rulv_rec.warn_yn                   := 'N';
14329       END IF;
14330 
14331       create_rule_group_and_rule(
14332                                  x_return_status => x_return_status,
14333                                  x_msg_count     => x_msg_count,
14334                                  x_msg_data      => x_msg_data,
14335                                  p_rgp_id        => l_rgp_id,
14336                                  p_rgpv_rec      => l_rgpv_rec,
14337                                  p_rulv_rec      => l_rulv_rec,
14338                                  x_rgpv_rec      => x_rgpv_rec,
14339                                  x_rulv_rec      => x_rulv_rec
14340                                 );
14341 
14342       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14343           raise header_rule_failed;
14344       END IF;
14345 
14346       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
14347          l_rgp_id := x_rgpv_rec.id;
14348       END IF;
14349       debug_message('------>Rule: AMTEWC/AMCQFE processed');
14350       l_rulv_rec := NULL;
14351 
14352       l_ert_return_fee_option   := p_header_rec.ert_return_fee_option;
14353       l_ert_return_fee_amount   := TO_CHAR(p_header_rec.ert_return_fee_amount);
14354       l_ert_return_fee_formula  := p_header_rec.ert_return_fee_formula;
14355       l_ert_return_fee_prorate  := p_header_rec.ert_return_fee_prorate;
14356 
14357       IF (l_ert_return_fee_option IS NULL
14358           OR
14359           l_ert_return_fee_amount IS NULL
14360           OR
14361           l_ert_return_fee_formula IS NULL
14362           OR
14363           l_ert_return_fee_prorate IS NULL
14364           AND
14365           p_header_rec.template_number IS NOT NULL) THEN
14366          get_contract_rules(
14367                             x_return_status  => x_return_status,
14368                             x_msg_count      => x_msg_count,
14369                             x_msg_data       => x_msg_data,
14370                             p_chr_id         => p_template_id,
14371                             p_cle_id         => NULL,
14372                             p_rgd_code       => 'AMTEWC',
14373                             p_rule_code      => 'AMCRFE',
14374                             x_rulv_tbl       => l_rulv_tbl,
14375                             x_rule_count     => l_rule_count
14376                            );
14377 
14378          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14379             RAISE header_rule_failed;
14380          END IF;
14381 
14382          IF (l_rule_count > 0) THEN
14383             l_ert_return_fee_option   := NVL(l_ert_return_fee_option,l_rulv_tbl(1).rule_information1);
14384             l_ert_return_fee_amount   := NVL(l_ert_return_fee_amount,l_rulv_tbl(1).rule_information2);
14385             l_ert_return_fee_formula  := NVL(l_ert_return_fee_formula,l_rulv_tbl(1).rule_information3);
14386             l_ert_return_fee_prorate  := NVL(l_ert_return_fee_prorate,l_rulv_tbl(1).rule_information4);
14387          END IF;
14388       END IF;
14389 
14390       IF (l_ert_return_fee_option IS NOT NULL) THEN
14391          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14392          l_rulv_rec.dnz_chr_id                := p_chr_id;
14393          l_rulv_rec.rule_informaTion1         := l_ert_return_fee_option;
14394          l_rulv_rec.rule_information_category := 'AMCRFE';
14395          l_rulv_rec.std_template_yn           := 'N';
14396          l_rulv_rec.warn_yn                   := 'N';
14397       END IF;
14398 
14399       IF (l_ert_return_fee_amount IS NOT NULL) THEN
14400          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14401          l_rulv_rec.dnz_chr_id                := p_chr_id;
14402          l_rulv_rec.rule_information2         := l_ert_return_fee_amount;
14403          l_rulv_rec.rule_information_category := 'AMCRFE';
14404          l_rulv_rec.std_template_yn           := 'N';
14405          l_rulv_rec.warn_yn                   := 'N';
14406       END IF;
14407 
14408       IF (l_ert_return_fee_formula IS NOT NULL) THEN
14409          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14410          l_rulv_rec.dnz_chr_id                := p_chr_id;
14411          l_rulv_rec.rule_information3         := l_ert_return_fee_formula;
14412          l_rulv_rec.rule_information_category := 'AMCRFE';
14413          l_rulv_rec.std_template_yn           := 'N';
14414          l_rulv_rec.warn_yn                   := 'N';
14415       END IF;
14416 
14417       IF (l_ert_return_fee_prorate IS NOT NULL) THEN
14418          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14419          l_rulv_rec.dnz_chr_id                := p_chr_id;
14420          l_rulv_rec.rule_information4         := l_ert_return_fee_prorate;
14421          l_rulv_rec.rule_information_category := 'AMCRFE';
14422          l_rulv_rec.std_template_yn           := 'N';
14423          l_rulv_rec.warn_yn                   := 'N';
14424       END IF;
14425 
14426       create_rule_group_and_rule(
14427                                  x_return_status => x_return_status,
14428                                  x_msg_count     => x_msg_count,
14429                                  x_msg_data      => x_msg_data,
14430                                  p_rgp_id        => l_rgp_id,
14431                                  p_rgpv_rec      => l_rgpv_rec,
14432                                  p_rulv_rec      => l_rulv_rec,
14433                                  x_rgpv_rec      => x_rgpv_rec,
14434                                  x_rulv_rec      => x_rulv_rec
14435                                 );
14436 
14437       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14438           raise header_rule_failed;
14439       END IF;
14440 
14441       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
14442          l_rgp_id := x_rgpv_rec.id;
14443       END IF;
14444       debug_message('------>Rule: AMTEWC/AMCRFE processed');
14445       l_rulv_rec := NULL;
14446 
14447       l_ert_roll_inctv_option   := p_header_rec.ert_roll_inctv_option;
14448       l_ert_roll_inctv_amount   := TO_CHAR(p_header_rec.ert_roll_inctv_amount);
14449       l_ert_roll_inctv_formula  := p_header_rec.ert_roll_inctv_formula;
14450       l_ert_roll_inctv_prorate  := p_header_rec.ert_roll_inctv_prorate;
14451 
14452       IF (l_ert_roll_inctv_option IS NULL
14453           OR
14454           l_ert_roll_inctv_amount IS NULL
14455           OR
14456           l_ert_roll_inctv_formula IS NULL
14457           OR
14458           l_ert_roll_inctv_prorate IS NULL
14459           AND
14460           p_header_rec.template_number IS NOT NULL) THEN
14461          get_contract_rules(
14462                             x_return_status  => x_return_status,
14463                             x_msg_count      => x_msg_count,
14464                             x_msg_data       => x_msg_data,
14465                             p_chr_id         => p_template_id,
14466                             p_cle_id         => NULL,
14467                             p_rgd_code       => 'AMTEWC',
14468                             p_rule_code      => 'AMCRIN',
14469                             x_rulv_tbl       => l_rulv_tbl,
14470                             x_rule_count     => l_rule_count
14471                            );
14472 
14473          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14474             RAISE header_rule_failed;
14475          END IF;
14476 
14477          IF (l_rule_count > 0) THEN
14478             l_ert_roll_inctv_option   := NVL(l_ert_roll_inctv_option,l_rulv_tbl(1).rule_information1);
14479             l_ert_roll_inctv_amount   := NVL(l_ert_roll_inctv_amount,l_rulv_tbl(1).rule_information2);
14480             l_ert_roll_inctv_formula  := NVL(l_ert_roll_inctv_formula,l_rulv_tbl(1).rule_information3);
14481             l_ert_roll_inctv_prorate  := NVL(l_ert_roll_inctv_prorate,l_rulv_tbl(1).rule_information4);
14482          END IF;
14483       END IF;
14484 
14485       IF (l_ert_roll_inctv_option IS NOT NULL) THEN
14486          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14487          l_rulv_rec.dnz_chr_id                := p_chr_id;
14488          l_rulv_rec.rule_informaTion1         := l_ert_roll_inctv_option;
14489          l_rulv_rec.rule_information_category := 'AMCRIN';
14490          l_rulv_rec.std_template_yn           := 'N';
14491          l_rulv_rec.warn_yn                   := 'N';
14492       END IF;
14493 
14494       IF (l_ert_roll_inctv_amount IS NOT NULL) THEN
14495          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14496          l_rulv_rec.dnz_chr_id                := p_chr_id;
14497          l_rulv_rec.rule_information2         := l_ert_roll_inctv_amount;
14498          l_rulv_rec.rule_information_category := 'AMCRIN';
14499          l_rulv_rec.std_template_yn           := 'N';
14500          l_rulv_rec.warn_yn                   := 'N';
14501       END IF;
14502 
14503       IF (l_ert_roll_inctv_formula IS NOT NULL) THEN
14504          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14505          l_rulv_rec.dnz_chr_id                := p_chr_id;
14506          l_rulv_rec.rule_information3         := l_ert_roll_inctv_formula;
14507          l_rulv_rec.rule_information_category := 'AMCRIN';
14508          l_rulv_rec.std_template_yn           := 'N';
14509          l_rulv_rec.warn_yn                   := 'N';
14510       END IF;
14511 
14512       IF (l_ert_roll_inctv_prorate IS NOT NULL) THEN
14513          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14514          l_rulv_rec.dnz_chr_id                := p_chr_id;
14515          l_rulv_rec.rule_information4         := l_ert_roll_inctv_prorate;
14516          l_rulv_rec.rule_information_category := 'AMCRIN';
14517          l_rulv_rec.std_template_yn           := 'N';
14518          l_rulv_rec.warn_yn                   := 'N';
14519       END IF;
14520 
14521       create_rule_group_and_rule(
14522                                  x_return_status => x_return_status,
14523                                  x_msg_count     => x_msg_count,
14524                                  x_msg_data      => x_msg_data,
14525                                  p_rgp_id        => l_rgp_id,
14526                                  p_rgpv_rec      => l_rgpv_rec,
14527                                  p_rulv_rec      => l_rulv_rec,
14528                                  x_rgpv_rec      => x_rgpv_rec,
14529                                  x_rulv_rec      => x_rulv_rec
14530                                 );
14531 
14532       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14533           raise header_rule_failed;
14534       END IF;
14535 
14536       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
14537          l_rgp_id := x_rgpv_rec.id;
14538       END IF;
14539       debug_message('------>Rule: AMTEWC/AMCRIN processed');
14540       l_rulv_rec := NULL;
14541 
14542       l_ert_secu_dep_dispo_option   := p_header_rec.ert_secu_dep_dispo_option;
14543       l_ert_secu_dep_dispo_amount   := TO_CHAR(p_header_rec.ert_secu_dep_dispo_amount);
14544       l_ert_secu_dep_dispo_formula  := p_header_rec.ert_secu_dep_dispo_formula;
14545       l_ert_secu_dep_dispo_prorate  := p_header_rec.ert_secu_dep_dispo_prorate;
14546 
14547       IF (l_ert_secu_dep_dispo_option IS NULL
14548           OR
14549           l_ert_secu_dep_dispo_amount IS NULL
14550           OR
14551           l_ert_secu_dep_dispo_formula IS NULL
14552           OR
14553           l_ert_secu_dep_dispo_prorate IS NULL
14554           AND
14555           p_header_rec.template_number IS NOT NULL) THEN
14556          get_contract_rules(
14557                             x_return_status  => x_return_status,
14558                             x_msg_count      => x_msg_count,
14559                             x_msg_data       => x_msg_data,
14560                             p_chr_id         => p_template_id,
14561                             p_cle_id         => NULL,
14562                             p_rgd_code       => 'AMTEWC',
14563                             p_rule_code      => 'AMCSDD',
14564                             x_rulv_tbl       => l_rulv_tbl,
14565                             x_rule_count     => l_rule_count
14566                            );
14567 
14568          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14569             RAISE header_rule_failed;
14570          END IF;
14571 
14572          IF (l_rule_count > 0) THEN
14573             l_ert_secu_dep_dispo_option   := NVL(l_ert_secu_dep_dispo_option,l_rulv_tbl(1).rule_information1);
14574             l_ert_secu_dep_dispo_amount   := NVL(l_ert_secu_dep_dispo_amount,l_rulv_tbl(1).rule_information2);
14575             l_ert_secu_dep_dispo_formula  := NVL(l_ert_secu_dep_dispo_formula,l_rulv_tbl(1).rule_information3);
14576             l_ert_secu_dep_dispo_prorate  := NVL(l_ert_secu_dep_dispo_prorate,l_rulv_tbl(1).rule_information4);
14577          END IF;
14578       END IF;
14579 
14580       IF (l_ert_secu_dep_dispo_option IS NOT NULL) THEN
14581          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14582          l_rulv_rec.dnz_chr_id                := p_chr_id;
14583          l_rulv_rec.rule_informaTion1         := l_ert_secu_dep_dispo_option;
14584          l_rulv_rec.rule_information_category := 'AMCSDD';
14585          l_rulv_rec.std_template_yn           := 'N';
14586          l_rulv_rec.warn_yn                   := 'N';
14587       END IF;
14588 
14589       IF (l_ert_secu_dep_dispo_amount IS NOT NULL) THEN
14590          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14591          l_rulv_rec.dnz_chr_id                := p_chr_id;
14592          l_rulv_rec.rule_information2         := l_ert_secu_dep_dispo_amount;
14593          l_rulv_rec.rule_information_category := 'AMCSDD';
14594          l_rulv_rec.std_template_yn           := 'N';
14595          l_rulv_rec.warn_yn                   := 'N';
14596       END IF;
14597 
14598       IF (l_ert_secu_dep_dispo_formula IS NOT NULL) THEN
14599          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14600          l_rulv_rec.dnz_chr_id                := p_chr_id;
14601          l_rulv_rec.rule_information3         := l_ert_secu_dep_dispo_formula;
14602          l_rulv_rec.rule_information_category := 'AMCSDD';
14603          l_rulv_rec.std_template_yn           := 'N';
14604          l_rulv_rec.warn_yn                   := 'N';
14605       END IF;
14606 
14607       IF (l_ert_secu_dep_dispo_prorate IS NOT NULL) THEN
14608          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14609          l_rulv_rec.dnz_chr_id                := p_chr_id;
14610          l_rulv_rec.rule_information4         := l_ert_secu_dep_dispo_prorate;
14611          l_rulv_rec.rule_information_category := 'AMCSDD';
14612          l_rulv_rec.std_template_yn           := 'N';
14613          l_rulv_rec.warn_yn                   := 'N';
14614       END IF;
14615 
14616       create_rule_group_and_rule(
14617                                  x_return_status => x_return_status,
14618                                  x_msg_count     => x_msg_count,
14619                                  x_msg_data      => x_msg_data,
14620                                  p_rgp_id        => l_rgp_id,
14621                                  p_rgpv_rec      => l_rgpv_rec,
14622                                  p_rulv_rec      => l_rulv_rec,
14623                                  x_rgpv_rec      => x_rgpv_rec,
14624                                  x_rulv_rec      => x_rulv_rec
14625                                 );
14626 
14627       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14628           raise header_rule_failed;
14629       END IF;
14630 
14631       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
14632          l_rgp_id := x_rgpv_rec.id;
14633       END IF;
14634       debug_message('------>Rule: AMTEWC/AMCSDD processed');
14635       l_rulv_rec := NULL;
14636 
14637       l_ert_term_penalty_option       := p_header_rec.ert_term_penalty_option;
14638       l_ert_term_penalty_amount       := TO_CHAR(p_header_rec.ert_term_penalty_amount);
14639       l_ert_term_penalty_formula      := p_header_rec.ert_term_penalty_formula;
14640       l_ert_term_penalty_prorate      := p_header_rec.ert_term_penalty_prorate;
14641       l_ert_term_penalty_cap_option   := p_header_rec.ert_term_penalty_cap_option;
14642       l_ert_term_penalty_cap_amount   := TO_CHAR(p_header_rec.ert_term_penalty_cap_amount);
14643       l_ert_term_penalty_cap_formula  := p_header_rec.ert_term_penalty_cap_formula;
14644 
14645       IF (l_ert_term_penalty_option IS NULL
14646           OR
14647           l_ert_term_penalty_amount IS NULL
14648           OR
14649           l_ert_term_penalty_formula IS NULL
14650           OR
14651           l_ert_term_penalty_prorate IS NULL
14652           OR
14653           l_ert_term_penalty_cap_option IS NULL
14654           OR
14655           l_ert_term_penalty_cap_amount IS NULL
14656           OR
14657           l_ert_term_penalty_cap_formula IS NULL
14658           AND
14659           p_header_rec.template_number IS NOT NULL) THEN
14660          get_contract_rules(
14661                             x_return_status  => x_return_status,
14662                             x_msg_count      => x_msg_count,
14663                             x_msg_data       => x_msg_data,
14664                             p_chr_id         => p_template_id,
14665                             p_cle_id         => NULL,
14666                             p_rgd_code       => 'AMTEWC',
14667                             p_rule_code      => 'AMCTPE',
14668                             x_rulv_tbl       => l_rulv_tbl,
14669                             x_rule_count     => l_rule_count
14670                            );
14671 
14672          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14673             RAISE header_rule_failed;
14674          END IF;
14675 
14676          IF (l_rule_count > 0) THEN
14677             l_ert_term_penalty_option       := NVL(l_ert_term_penalty_option,l_rulv_tbl(1).rule_information1);
14678             l_ert_term_penalty_amount       := NVL(l_ert_term_penalty_amount,l_rulv_tbl(1).rule_information2);
14679             l_ert_term_penalty_formula      := NVL(l_ert_term_penalty_formula,l_rulv_tbl(1).rule_information3);
14680             l_ert_term_penalty_prorate      := NVL(l_ert_term_penalty_prorate,l_rulv_tbl(1).rule_information4);
14681             l_ert_term_penalty_cap_option   := NVL(l_ert_term_penalty_cap_option,l_rulv_tbl(1).rule_information5);
14682             l_ert_term_penalty_cap_amount   := NVL(l_ert_term_penalty_cap_amount,l_rulv_tbl(1).rule_information6);
14683             l_ert_term_penalty_cap_formula  := NVL(l_ert_term_penalty_cap_formula,l_rulv_tbl(1).rule_information7);
14684          END IF;
14685       END IF;
14686 
14687       IF (l_ert_term_penalty_option IS NOT NULL) THEN
14688          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14689          l_rulv_rec.dnz_chr_id                := p_chr_id;
14690          l_rulv_rec.rule_informaTion1         := l_ert_term_penalty_option;
14691          l_rulv_rec.rule_information_category := 'AMCTPE';
14692          l_rulv_rec.std_template_yn           := 'N';
14693          l_rulv_rec.warn_yn                   := 'N';
14694       END IF;
14695 
14696       IF (l_ert_term_penalty_amount IS NOT NULL) THEN
14697          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14698          l_rulv_rec.dnz_chr_id                := p_chr_id;
14699          l_rulv_rec.rule_information2         := l_ert_term_penalty_amount;
14700          l_rulv_rec.rule_information_category := 'AMCTPE';
14701          l_rulv_rec.std_template_yn           := 'N';
14702          l_rulv_rec.warn_yn                   := 'N';
14703       END IF;
14704 
14705       IF (l_ert_term_penalty_formula IS NOT NULL) THEN
14706          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14707          l_rulv_rec.dnz_chr_id                := p_chr_id;
14708          l_rulv_rec.rule_information3         := l_ert_term_penalty_formula;
14709          l_rulv_rec.rule_information_category := 'AMCTPE';
14710          l_rulv_rec.std_template_yn           := 'N';
14711          l_rulv_rec.warn_yn                   := 'N';
14712       END IF;
14713 
14714       IF (l_ert_term_penalty_prorate IS NOT NULL) THEN
14715          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14716          l_rulv_rec.dnz_chr_id                := p_chr_id;
14717          l_rulv_rec.rule_information4         := l_ert_term_penalty_prorate;
14718          l_rulv_rec.rule_information_category := 'AMCTPE';
14719          l_rulv_rec.std_template_yn           := 'N';
14720          l_rulv_rec.warn_yn                   := 'N';
14721       END IF;
14722 
14723       IF (l_ert_term_penalty_cap_option IS NOT NULL) THEN
14724          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14725          l_rulv_rec.dnz_chr_id                := p_chr_id;
14726          l_rulv_rec.rule_informaTion5         := l_ert_term_penalty_cap_option;
14727          l_rulv_rec.rule_information_category := 'AMCTPE';
14728          l_rulv_rec.std_template_yn           := 'N';
14729          l_rulv_rec.warn_yn                   := 'N';
14730       END IF;
14731 
14732       IF (l_ert_term_penalty_cap_amount IS NOT NULL) THEN
14733          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14734          l_rulv_rec.dnz_chr_id                := p_chr_id;
14735          l_rulv_rec.rule_information6         := l_ert_term_penalty_cap_amount;
14736          l_rulv_rec.rule_information_category := 'AMCTPE';
14737          l_rulv_rec.std_template_yn           := 'N';
14738          l_rulv_rec.warn_yn                   := 'N';
14739       END IF;
14740 
14741       IF (l_ert_term_penalty_cap_formula IS NOT NULL) THEN
14742          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14743          l_rulv_rec.dnz_chr_id                := p_chr_id;
14744          l_rulv_rec.rule_information7         := l_ert_term_penalty_cap_formula;
14745          l_rulv_rec.rule_information_category := 'AMCTPE';
14746          l_rulv_rec.std_template_yn           := 'N';
14747          l_rulv_rec.warn_yn                   := 'N';
14748       END IF;
14749 
14750       create_rule_group_and_rule(
14751                                  x_return_status => x_return_status,
14752                                  x_msg_count     => x_msg_count,
14753                                  x_msg_data      => x_msg_data,
14754                                  p_rgp_id        => l_rgp_id,
14755                                  p_rgpv_rec      => l_rgpv_rec,
14756                                  p_rulv_rec      => l_rulv_rec,
14757                                  x_rgpv_rec      => x_rgpv_rec,
14758                                  x_rulv_rec      => x_rulv_rec
14759                                 );
14760 
14761       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14762           raise header_rule_failed;
14763       END IF;
14764 
14765       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
14766          l_rgp_id := x_rgpv_rec.id;
14767       END IF;
14768       debug_message('------>Rule: AMTEWC/AMCTPE processed');
14769       l_rulv_rec := NULL;
14770 
14771       l_ert_est_prop_tax_option   := p_header_rec.ert_est_prop_tax_option;
14772       l_ert_est_prop_tax_amount   := TO_CHAR(p_header_rec.ert_est_prop_tax_amount);
14773       l_ert_est_prop_tax_formula  := p_header_rec.ert_est_prop_tax_formula;
14774       l_ert_est_prop_tax_prorate  := p_header_rec.ert_est_prop_tax_prorate;
14775 
14776       IF (l_ert_est_prop_tax_option IS NULL
14777           OR
14778           l_ert_est_prop_tax_amount IS NULL
14779           OR
14780           l_ert_est_prop_tax_formula IS NULL
14781           OR
14782           l_ert_est_prop_tax_prorate IS NULL
14783           AND
14784           p_header_rec.template_number IS NOT NULL) THEN
14785          get_contract_rules(
14786                             x_return_status  => x_return_status,
14787                             x_msg_count      => x_msg_count,
14788                             x_msg_data       => x_msg_data,
14789                             p_chr_id         => p_template_id,
14790                             p_cle_id         => NULL,
14791                             p_rgd_code       => 'AMTEWC',
14792                             p_rule_code      => 'AMPRTX',
14793                             x_rulv_tbl       => l_rulv_tbl,
14794                             x_rule_count     => l_rule_count
14795                            );
14796 
14797          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14798             RAISE header_rule_failed;
14799          END IF;
14800 
14801          IF (l_rule_count > 0) THEN
14802             l_ert_est_prop_tax_option   := NVL(l_ert_est_prop_tax_option,l_rulv_tbl(1).rule_information1);
14803             l_ert_est_prop_tax_amount   := NVL(l_ert_est_prop_tax_amount,l_rulv_tbl(1).rule_information2);
14804             l_ert_est_prop_tax_formula  := NVL(l_ert_est_prop_tax_formula,l_rulv_tbl(1).rule_information3);
14805             l_ert_est_prop_tax_prorate  := NVL(l_ert_est_prop_tax_prorate,l_rulv_tbl(1).rule_information4);
14806          END IF;
14807       END IF;
14808 
14809       IF (l_ert_est_prop_tax_option IS NOT NULL) THEN
14810          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14811          l_rulv_rec.dnz_chr_id                := p_chr_id;
14812          l_rulv_rec.rule_informaTion1         := l_ert_est_prop_tax_option;
14813          l_rulv_rec.rule_information_category := 'AMPRTX';
14814          l_rulv_rec.std_template_yn           := 'N';
14815          l_rulv_rec.warn_yn                   := 'N';
14816       END IF;
14817 
14818       IF (l_ert_est_prop_tax_amount IS NOT NULL) THEN
14819          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14820          l_rulv_rec.dnz_chr_id                := p_chr_id;
14821          l_rulv_rec.rule_information2         := l_ert_est_prop_tax_amount;
14822          l_rulv_rec.rule_information_category := 'AMPRTX';
14823          l_rulv_rec.std_template_yn           := 'N';
14824          l_rulv_rec.warn_yn                   := 'N';
14825       END IF;
14826 
14827       IF (l_ert_est_prop_tax_formula IS NOT NULL) THEN
14828          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14829          l_rulv_rec.dnz_chr_id                := p_chr_id;
14830          l_rulv_rec.rule_information3         := l_ert_est_prop_tax_formula;
14831          l_rulv_rec.rule_information_category := 'AMPRTX';
14832          l_rulv_rec.std_template_yn           := 'N';
14833          l_rulv_rec.warn_yn                   := 'N';
14834       END IF;
14835 
14836       IF (l_ert_est_prop_tax_prorate IS NOT NULL) THEN
14837          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14838          l_rulv_rec.dnz_chr_id                := p_chr_id;
14839          l_rulv_rec.rule_information4         := l_ert_est_prop_tax_prorate;
14840          l_rulv_rec.rule_information_category := 'AMPRTX';
14841          l_rulv_rec.std_template_yn           := 'N';
14842          l_rulv_rec.warn_yn                   := 'N';
14843       END IF;
14844 
14845       create_rule_group_and_rule(
14846                                  x_return_status => x_return_status,
14847                                  x_msg_count     => x_msg_count,
14848                                  x_msg_data      => x_msg_data,
14849                                  p_rgp_id        => l_rgp_id,
14850                                  p_rgpv_rec      => l_rgpv_rec,
14851                                  p_rulv_rec      => l_rulv_rec,
14852                                  x_rgpv_rec      => x_rgpv_rec,
14853                                  x_rulv_rec      => x_rulv_rec
14854                                 );
14855 
14856       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14857           raise header_rule_failed;
14858       END IF;
14859 
14860       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
14861          l_rgp_id := x_rgpv_rec.id;
14862       END IF;
14863       debug_message('------>Rule: AMTEWC/AMPRTX processed');
14864       l_rulv_rec := NULL;
14865 
14866       l_ert_contr_fees_option := p_header_rec.ert_contr_fees_option;
14867 
14868       IF (l_ert_contr_fees_option IS NULL
14869           AND
14870           p_header_rec.template_number IS NOT NULL) THEN
14871          get_contract_rules(
14872                             x_return_status  => x_return_status,
14873                             x_msg_count      => x_msg_count,
14874                             x_msg_data       => x_msg_data,
14875                             p_chr_id         => p_template_id,
14876                             p_cle_id         => NULL,
14877                             p_rgd_code       => 'AMTEWC',
14878                             p_rule_code      => 'AMYFEE',
14879                             x_rulv_tbl       => l_rulv_tbl,
14880                             x_rule_count     => l_rule_count
14881                            );
14882 
14883          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14884             RAISE header_rule_failed;
14885          END IF;
14886 
14887          IF (l_rule_count > 0) THEN
14888             l_ert_contr_fees_option   := NVL(l_ert_contr_fees_option,l_rulv_tbl(1).rule_information1);
14889          END IF;
14890       END IF;
14891 
14892       IF (l_ert_contr_fees_option IS NOT NULL) THEN
14893          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14894          l_rulv_rec.dnz_chr_id                := p_chr_id;
14895          l_rulv_rec.rule_information1         := l_ert_contr_fees_option;
14896          l_rulv_rec.rule_information_category := 'AMYFEE';
14897          l_rulv_rec.std_template_yn           := 'N';
14898          l_rulv_rec.warn_yn                   := 'N';
14899       END IF;
14900 
14901       create_rule_group_and_rule(
14902                                  x_return_status => x_return_status,
14903                                  x_msg_count     => x_msg_count,
14904                                  x_msg_data      => x_msg_data,
14905                                  p_rgp_id        => l_rgp_id,
14906                                  p_rgpv_rec      => l_rgpv_rec,
14907                                  p_rulv_rec      => l_rulv_rec,
14908                                  x_rgpv_rec      => x_rgpv_rec,
14909                                  x_rulv_rec      => x_rulv_rec
14910                                 );
14911 
14912       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14913           raise header_rule_failed;
14914       END IF;
14915 
14916       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
14917          l_rgp_id := x_rgpv_rec.id;
14918       END IF;
14919       debug_message('------>Rule: AMTEWC/AMYFEE processed');
14920       l_rulv_rec := NULL;
14921 
14922       l_ert_outstnd_bal_option := p_header_rec.ert_outstnd_bal_option;
14923 
14924       IF (l_ert_outstnd_bal_option IS NULL
14925           AND
14926           p_header_rec.template_number IS NOT NULL) THEN
14927          get_contract_rules(
14928                             x_return_status  => x_return_status,
14929                             x_msg_count      => x_msg_count,
14930                             x_msg_data       => x_msg_data,
14931                             p_chr_id         => p_template_id,
14932                             p_cle_id         => NULL,
14933                             p_rgd_code       => 'AMTEWC',
14934                             p_rule_code      => 'AMYOUB',
14935                             x_rulv_tbl       => l_rulv_tbl,
14936                             x_rule_count     => l_rule_count
14937                            );
14938 
14939          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14940             RAISE header_rule_failed;
14941          END IF;
14942 
14943          IF (l_rule_count > 0) THEN
14944             l_ert_outstnd_bal_option   := l_rulv_tbl(1).rule_information1;
14945          END IF;
14946       END IF;
14947 
14948       IF (l_ert_outstnd_bal_option IS NOT NULL) THEN
14949          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14950          l_rulv_rec.dnz_chr_id                := p_chr_id;
14951          l_rulv_rec.rule_information1         := l_ert_outstnd_bal_option;
14952          l_rulv_rec.rule_information_category := 'AMYOUB';
14953          l_rulv_rec.std_template_yn           := 'N';
14954          l_rulv_rec.warn_yn                   := 'N';
14955       END IF;
14956 
14957       create_rule_group_and_rule(
14958                                  x_return_status => x_return_status,
14959                                  x_msg_count     => x_msg_count,
14960                                  x_msg_data      => x_msg_data,
14961                                  p_rgp_id        => l_rgp_id,
14962                                  p_rgpv_rec      => l_rgpv_rec,
14963                                  p_rulv_rec      => l_rulv_rec,
14964                                  x_rgpv_rec      => x_rgpv_rec,
14965                                  x_rulv_rec      => x_rulv_rec
14966                                 );
14967 
14968       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14969           raise header_rule_failed;
14970       END IF;
14971 
14972       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
14973          l_rgp_id := x_rgpv_rec.id;
14974       END IF;
14975       debug_message('------>Rule: AMTEWC/AMYOUB processed');
14976       l_rulv_rec := NULL;
14977 
14978       l_ert_serv_mant_option := p_header_rec.ert_serv_mant_option;
14979       l_ert_serv_mant_frml   := p_header_rec.ert_serv_mant_frml;
14980 
14981       IF ((l_ert_serv_mant_option IS NULL
14982            OR
14983            l_ert_serv_mant_frml IS NULL
14984           )
14985           AND
14986           p_header_rec.template_number IS NOT NULL) THEN
14987          get_contract_rules(
14988                             x_return_status  => x_return_status,
14989                             x_msg_count      => x_msg_count,
14990                             x_msg_data       => x_msg_data,
14991                             p_chr_id         => p_template_id,
14992                             p_cle_id         => NULL,
14993                             p_rgd_code       => 'AMTEWC',
14994                             p_rule_code      => 'AMYSAM',
14995                             x_rulv_tbl       => l_rulv_tbl,
14996                             x_rule_count     => l_rule_count
14997                            );
14998 
14999          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15000             RAISE header_rule_failed;
15001          END IF;
15002 
15003          IF (l_rule_count > 0) THEN
15004             l_ert_serv_mant_option   := NVL(l_ert_serv_mant_option,l_rulv_tbl(1).rule_information1);
15005             l_ert_serv_mant_frml     := NVL(l_ert_serv_mant_frml,l_rulv_tbl(1).rule_information2);
15006          END IF;
15007       END IF;
15008 
15009       IF (l_ert_serv_mant_option IS NOT NULL) THEN
15010          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15011          l_rulv_rec.dnz_chr_id                := p_chr_id;
15012          l_rulv_rec.rule_information1         := l_ert_serv_mant_option;
15013          l_rulv_rec.rule_information_category := 'AMYSAM';
15014          l_rulv_rec.std_template_yn           := 'N';
15015          l_rulv_rec.warn_yn                   := 'N';
15016       END IF;
15017 
15018       IF (l_ert_serv_mant_frml IS NOT NULL) THEN
15019          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15020          l_rulv_rec.dnz_chr_id                := p_chr_id;
15021          l_rulv_rec.rule_information2         := l_ert_serv_mant_frml;
15022          l_rulv_rec.rule_information_category := 'AMYSAM';
15023          l_rulv_rec.std_template_yn           := 'N';
15024          l_rulv_rec.warn_yn                   := 'N';
15025       END IF;
15026 
15027       create_rule_group_and_rule(
15028                                  x_return_status => x_return_status,
15029                                  x_msg_count     => x_msg_count,
15030                                  x_msg_data      => x_msg_data,
15031                                  p_rgp_id        => l_rgp_id,
15032                                  p_rgpv_rec      => l_rgpv_rec,
15033                                  p_rulv_rec      => l_rulv_rec,
15034                                  x_rgpv_rec      => x_rgpv_rec,
15035                                  x_rulv_rec      => x_rulv_rec
15036                                 );
15037 
15038       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15039           raise header_rule_failed;
15040       END IF;
15041 
15042       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
15043          l_rgp_id := x_rgpv_rec.id;
15044       END IF;
15045 
15046       debug_message('------>Rule: AMTEWC/AMYSAM processed');
15047 
15048       /**** AKP Copied from here for AMTEWC 4067094 ***/
15049       l_rulv_rec := NULL;
15050 
15051       l_ert_absorbed_fee_frml := p_header_rec.ert_absorbed_fee_frml;
15052 
15053       IF (l_ert_absorbed_fee_frml IS NULL
15054           AND
15055           p_header_rec.template_number IS NOT NULL) THEN
15056          get_contract_rules(
15057                             x_return_status  => x_return_status,
15058                             x_msg_count      => x_msg_count,
15059                             x_msg_data       => x_msg_data,
15060                             p_chr_id         => p_template_id,
15061                             p_cle_id         => NULL,
15062                             p_rgd_code       => 'AMTEWC',
15063                             p_rule_code      => 'AMAFEE',
15064                             x_rulv_tbl       => l_rulv_tbl,
15065                             x_rule_count     => l_rule_count
15066                            );
15067 
15068          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15069             RAISE header_rule_failed;
15070          END IF;
15071 
15072          IF (l_rule_count > 0) THEN
15073             l_ert_absorbed_fee_frml   := l_rulv_tbl(1).rule_information3;
15074          END IF;
15075       END IF;
15076 
15077       IF (l_ert_absorbed_fee_frml IS NOT NULL) THEN
15078          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15079          l_rulv_rec.dnz_chr_id                := p_chr_id;
15080          l_rulv_rec.rule_information3         := l_ert_absorbed_fee_frml;
15081          l_rulv_rec.rule_information_category := 'AMAFEE';
15082          l_rulv_rec.std_template_yn           := 'N';
15083          l_rulv_rec.warn_yn                   := 'N';
15084       END IF;
15085 
15086       create_rule_group_and_rule(
15087                                  x_return_status => x_return_status,
15088                                  x_msg_count     => x_msg_count,
15089                                  x_msg_data      => x_msg_data,
15090                                  p_rgp_id        => l_rgp_id,
15091                                  p_rgpv_rec      => l_rgpv_rec,
15092                                  p_rulv_rec      => l_rulv_rec,
15093                                  x_rgpv_rec      => x_rgpv_rec,
15094                                  x_rulv_rec      => x_rulv_rec
15095                                 );
15096 
15097       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15098           raise header_rule_failed;
15099       END IF;
15100 
15101       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
15102          l_rgp_id := x_rgpv_rec.id;
15103       END IF;
15104 
15105       debug_message('------>Rule: AMTEWC/AMAFEE processed');
15106 
15107       l_rulv_rec := NULL;
15108 
15109       l_ert_expense_fee_frml := p_header_rec.ert_expense_fee_frml;
15110 
15111       IF (l_ert_expense_fee_frml IS NULL
15112           AND
15113           p_header_rec.template_number IS NOT NULL) THEN
15114          get_contract_rules(
15115                             x_return_status  => x_return_status,
15116                             x_msg_count      => x_msg_count,
15117                             x_msg_data       => x_msg_data,
15118                             p_chr_id         => p_template_id,
15119                             p_cle_id         => NULL,
15120                             p_rgd_code       => 'AMTEWC',
15121                             p_rule_code      => 'AMEFEE',
15122                             x_rulv_tbl       => l_rulv_tbl,
15123                             x_rule_count     => l_rule_count
15124                            );
15125 
15126          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15127             RAISE header_rule_failed;
15128          END IF;
15129 
15130          IF (l_rule_count > 0) THEN
15131             l_ert_expense_fee_frml   := l_rulv_tbl(1).rule_information3;
15132          END IF;
15133       END IF;
15134 
15135       IF (l_ert_expense_fee_frml IS NOT NULL) THEN
15136          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15137          l_rulv_rec.dnz_chr_id                := p_chr_id;
15138          l_rulv_rec.rule_information3         := l_ert_expense_fee_frml;
15139          l_rulv_rec.rule_information_category := 'AMEFEE';
15140          l_rulv_rec.std_template_yn           := 'N';
15141          l_rulv_rec.warn_yn                   := 'N';
15142       END IF;
15143 
15144       create_rule_group_and_rule(
15145                                  x_return_status => x_return_status,
15146                                  x_msg_count     => x_msg_count,
15147                                  x_msg_data      => x_msg_data,
15148                                  p_rgp_id        => l_rgp_id,
15149                                  p_rgpv_rec      => l_rgpv_rec,
15150                                  p_rulv_rec      => l_rulv_rec,
15151                                  x_rgpv_rec      => x_rgpv_rec,
15152                                  x_rulv_rec      => x_rulv_rec
15153                                 );
15154 
15155       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15156           raise header_rule_failed;
15157       END IF;
15158 
15159       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
15160          l_rgp_id := x_rgpv_rec.id;
15161       END IF;
15162 
15163       debug_message('------>Rule: AMTEWC/AMEFEE processed');
15164 
15165       l_rulv_rec := NULL;
15166 
15167       l_ert_financed_fee_frml := p_header_rec.ert_financed_fee_frml;
15168 
15169       IF (l_ert_financed_fee_frml IS NULL
15170           AND
15171           p_header_rec.template_number IS NOT NULL) THEN
15172          get_contract_rules(
15173                             x_return_status  => x_return_status,
15174                             x_msg_count      => x_msg_count,
15175                             x_msg_data       => x_msg_data,
15176                             p_chr_id         => p_template_id,
15177                             p_cle_id         => NULL,
15178                             p_rgd_code       => 'AMTEWC',
15179                             p_rule_code      => 'AMFFEE',
15180                             x_rulv_tbl       => l_rulv_tbl,
15181                             x_rule_count     => l_rule_count
15182                            );
15183 
15184          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15185             RAISE header_rule_failed;
15186          END IF;
15187 
15188          IF (l_rule_count > 0) THEN
15189             l_ert_financed_fee_frml   := l_rulv_tbl(1).rule_information3;
15190          END IF;
15191       END IF;
15192 
15193       IF (l_ert_financed_fee_frml IS NOT NULL) THEN
15194          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15195          l_rulv_rec.dnz_chr_id                := p_chr_id;
15196          l_rulv_rec.rule_information3         := l_ert_financed_fee_frml;
15197          l_rulv_rec.rule_information_category := 'AMFFEE';
15198          l_rulv_rec.std_template_yn           := 'N';
15199          l_rulv_rec.warn_yn                   := 'N';
15200       END IF;
15201 
15202       create_rule_group_and_rule(
15203                                  x_return_status => x_return_status,
15204                                  x_msg_count     => x_msg_count,
15205                                  x_msg_data      => x_msg_data,
15206                                  p_rgp_id        => l_rgp_id,
15207                                  p_rgpv_rec      => l_rgpv_rec,
15208                                  p_rulv_rec      => l_rulv_rec,
15209                                  x_rgpv_rec      => x_rgpv_rec,
15210                                  x_rulv_rec      => x_rulv_rec
15211                                 );
15212 
15213       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15214           raise header_rule_failed;
15215       END IF;
15216 
15217       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
15218          l_rgp_id := x_rgpv_rec.id;
15219       END IF;
15220 
15221       debug_message('------>Rule: AMTEWC/AMFFEE processed');
15222 
15223       l_rulv_rec := NULL;
15224 
15225       l_ert_general_fee_frml := p_header_rec.ert_general_fee_frml;
15226 
15227       IF (l_ert_general_fee_frml IS NULL
15228           AND
15229           p_header_rec.template_number IS NOT NULL) THEN
15230          get_contract_rules(
15231                             x_return_status  => x_return_status,
15232                             x_msg_count      => x_msg_count,
15233                             x_msg_data       => x_msg_data,
15234                             p_chr_id         => p_template_id,
15235                             p_cle_id         => NULL,
15236                             p_rgd_code       => 'AMTEWC',
15237                             p_rule_code      => 'AMGFEE',
15238                             x_rulv_tbl       => l_rulv_tbl,
15239                             x_rule_count     => l_rule_count
15240                            );
15241 
15242          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15243             RAISE header_rule_failed;
15244          END IF;
15245 
15246          IF (l_rule_count > 0) THEN
15247             l_ert_general_fee_frml   := l_rulv_tbl(1).rule_information3;
15248          END IF;
15249       END IF;
15250 
15251       IF (l_ert_general_fee_frml IS NOT NULL) THEN
15252          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15253          l_rulv_rec.dnz_chr_id                := p_chr_id;
15254          l_rulv_rec.rule_information3         := l_ert_general_fee_frml;
15255          l_rulv_rec.rule_information_category := 'AMGFEE';
15256          l_rulv_rec.std_template_yn           := 'N';
15257          l_rulv_rec.warn_yn                   := 'N';
15258       END IF;
15259 
15260       create_rule_group_and_rule(
15261                                  x_return_status => x_return_status,
15262                                  x_msg_count     => x_msg_count,
15263                                  x_msg_data      => x_msg_data,
15264                                  p_rgp_id        => l_rgp_id,
15265                                  p_rgpv_rec      => l_rgpv_rec,
15266                                  p_rulv_rec      => l_rulv_rec,
15267                                  x_rgpv_rec      => x_rgpv_rec,
15268                                  x_rulv_rec      => x_rulv_rec
15269                                 );
15270 
15271       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15272           raise header_rule_failed;
15273       END IF;
15274 
15275       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
15276          l_rgp_id := x_rgpv_rec.id;
15277       END IF;
15278 
15279       debug_message('------>Rule: AMTEWC/AMGFEE processed');
15280 
15281       l_rulv_rec := NULL;
15282 
15283       l_ert_income_fee_frml := p_header_rec.ert_income_fee_frml;
15284 
15285       IF (l_ert_income_fee_frml IS NULL
15286           AND
15287           p_header_rec.template_number IS NOT NULL) THEN
15288          get_contract_rules(
15289                             x_return_status  => x_return_status,
15290                             x_msg_count      => x_msg_count,
15291                             x_msg_data       => x_msg_data,
15292                             p_chr_id         => p_template_id,
15293                             p_cle_id         => NULL,
15294                             p_rgd_code       => 'AMTEWC',
15295                             p_rule_code      => 'AMIFEE',
15296                             x_rulv_tbl       => l_rulv_tbl,
15297                             x_rule_count     => l_rule_count
15298                            );
15299 
15300          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15301             RAISE header_rule_failed;
15302          END IF;
15303 
15304          IF (l_rule_count > 0) THEN
15305             l_ert_income_fee_frml   := l_rulv_tbl(1).rule_information3;
15306          END IF;
15307       END IF;
15308 
15309       IF (l_ert_income_fee_frml IS NOT NULL) THEN
15310          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15311          l_rulv_rec.dnz_chr_id                := p_chr_id;
15312          l_rulv_rec.rule_information3         := l_ert_income_fee_frml;
15313          l_rulv_rec.rule_information_category := 'AMIFEE';
15314          l_rulv_rec.std_template_yn           := 'N';
15315          l_rulv_rec.warn_yn                   := 'N';
15316       END IF;
15317 
15318       create_rule_group_and_rule(
15319                                  x_return_status => x_return_status,
15320                                  x_msg_count     => x_msg_count,
15321                                  x_msg_data      => x_msg_data,
15322                                  p_rgp_id        => l_rgp_id,
15323                                  p_rgpv_rec      => l_rgpv_rec,
15324                                  p_rulv_rec      => l_rulv_rec,
15325                                  x_rgpv_rec      => x_rgpv_rec,
15326                                  x_rulv_rec      => x_rulv_rec
15327                                 );
15328 
15329       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15330           raise header_rule_failed;
15331       END IF;
15332 
15333       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
15334          l_rgp_id := x_rgpv_rec.id;
15335       END IF;
15336 
15337       debug_message('------>Rule: AMTEWC/AMIFEE processed');
15338 
15339       l_rulv_rec := NULL;
15340 
15341       l_ert_misc_fee_frml := p_header_rec.ert_misc_fee_frml;
15342 
15343       IF (l_ert_misc_fee_frml IS NULL
15344           AND
15345           p_header_rec.template_number IS NOT NULL) THEN
15346          get_contract_rules(
15347                             x_return_status  => x_return_status,
15348                             x_msg_count      => x_msg_count,
15349                             x_msg_data       => x_msg_data,
15350                             p_chr_id         => p_template_id,
15351                             p_cle_id         => NULL,
15352                             p_rgd_code       => 'AMTEWC',
15353                             p_rule_code      => 'AMMFEE',
15354                             x_rulv_tbl       => l_rulv_tbl,
15355                             x_rule_count     => l_rule_count
15356                            );
15357 
15358          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15359             RAISE header_rule_failed;
15360          END IF;
15361 
15362          IF (l_rule_count > 0) THEN
15363             l_ert_misc_fee_frml   := l_rulv_tbl(1).rule_information3;
15364          END IF;
15365       END IF;
15366 
15367       IF (l_ert_misc_fee_frml IS NOT NULL) THEN
15368          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15369          l_rulv_rec.dnz_chr_id                := p_chr_id;
15370          l_rulv_rec.rule_information3         := l_ert_misc_fee_frml;
15371          l_rulv_rec.rule_information_category := 'AMMFEE';
15372          l_rulv_rec.std_template_yn           := 'N';
15373          l_rulv_rec.warn_yn                   := 'N';
15374       END IF;
15375 
15376       create_rule_group_and_rule(
15377                                  x_return_status => x_return_status,
15378                                  x_msg_count     => x_msg_count,
15379                                  x_msg_data      => x_msg_data,
15380                                  p_rgp_id        => l_rgp_id,
15381                                  p_rgpv_rec      => l_rgpv_rec,
15382                                  p_rulv_rec      => l_rulv_rec,
15383                                  x_rgpv_rec      => x_rgpv_rec,
15384                                  x_rulv_rec      => x_rulv_rec
15385                                 );
15386 
15387       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15388           raise header_rule_failed;
15389       END IF;
15390 
15391       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
15392          l_rgp_id := x_rgpv_rec.id;
15393       END IF;
15394 
15395       debug_message('------>Rule: AMTEWC/AMMFEE processed');
15396 
15397       l_rulv_rec := NULL;
15398 
15399       l_ert_passthru_fee_frml := p_header_rec.ert_passthru_fee_frml;
15400 
15401       IF (l_ert_passthru_fee_frml IS NULL
15402           AND
15403           p_header_rec.template_number IS NOT NULL) THEN
15404          get_contract_rules(
15405                             x_return_status  => x_return_status,
15406                             x_msg_count      => x_msg_count,
15407                             x_msg_data       => x_msg_data,
15408                             p_chr_id         => p_template_id,
15409                             p_cle_id         => NULL,
15410                             p_rgd_code       => 'AMTEWC',
15411                             p_rule_code      => 'AMPFEE',
15412                             x_rulv_tbl       => l_rulv_tbl,
15413                             x_rule_count     => l_rule_count
15414                            );
15415 
15416          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15417             RAISE header_rule_failed;
15418          END IF;
15419 
15420          IF (l_rule_count > 0) THEN
15421             l_ert_passthru_fee_frml   := l_rulv_tbl(1).rule_information3;
15422          END IF;
15423       END IF;
15424 
15425       IF (l_ert_passthru_fee_frml IS NOT NULL) THEN
15426          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15427          l_rulv_rec.dnz_chr_id                := p_chr_id;
15428          l_rulv_rec.rule_information3         := l_ert_passthru_fee_frml;
15429          l_rulv_rec.rule_information_category := 'AMPFEE';
15430          l_rulv_rec.std_template_yn           := 'N';
15431          l_rulv_rec.warn_yn                   := 'N';
15432       END IF;
15433 
15434       create_rule_group_and_rule(
15435                                  x_return_status => x_return_status,
15436                                  x_msg_count     => x_msg_count,
15437                                  x_msg_data      => x_msg_data,
15438                                  p_rgp_id        => l_rgp_id,
15439                                  p_rgpv_rec      => l_rgpv_rec,
15440                                  p_rulv_rec      => l_rulv_rec,
15441                                  x_rgpv_rec      => x_rgpv_rec,
15442                                  x_rulv_rec      => x_rulv_rec
15443                                 );
15444 
15445       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15446           raise header_rule_failed;
15447       END IF;
15448 
15449       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
15450          l_rgp_id := x_rgpv_rec.id;
15451       END IF;
15452 
15453       debug_message('------>Rule: AMTEWC/AMPFEE processed');
15454 
15455       l_rulv_rec := NULL;
15456 
15457       l_ert_rollover_fee_frml := p_header_rec.ert_rollover_fee_frml;
15458 
15459       IF (l_ert_rollover_fee_frml IS NULL
15460           AND
15461           p_header_rec.template_number IS NOT NULL) THEN
15462          get_contract_rules(
15463                             x_return_status  => x_return_status,
15464                             x_msg_count      => x_msg_count,
15465                             x_msg_data       => x_msg_data,
15466                             p_chr_id         => p_template_id,
15467                             p_cle_id         => NULL,
15468                             p_rgd_code       => 'AMTEWC',
15469                             p_rule_code      => 'AMRFEE',
15470                             x_rulv_tbl       => l_rulv_tbl,
15471                             x_rule_count     => l_rule_count
15472                            );
15473 
15474          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15475             RAISE header_rule_failed;
15476          END IF;
15477 
15478          IF (l_rule_count > 0) THEN
15479             l_ert_rollover_fee_frml   := l_rulv_tbl(1).rule_information3;
15480          END IF;
15481       END IF;
15482 
15483       IF (l_ert_rollover_fee_frml IS NOT NULL) THEN
15484          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15485          l_rulv_rec.dnz_chr_id                := p_chr_id;
15486          l_rulv_rec.rule_information3         := l_ert_rollover_fee_frml;
15487          l_rulv_rec.rule_information_category := 'AMRFEE';
15488          l_rulv_rec.std_template_yn           := 'N';
15489          l_rulv_rec.warn_yn                   := 'N';
15490       END IF;
15491 
15492       create_rule_group_and_rule(
15493                                  x_return_status => x_return_status,
15494                                  x_msg_count     => x_msg_count,
15495                                  x_msg_data      => x_msg_data,
15496                                  p_rgp_id        => l_rgp_id,
15497                                  p_rgpv_rec      => l_rgpv_rec,
15498                                  p_rulv_rec      => l_rulv_rec,
15499                                  x_rgpv_rec      => x_rgpv_rec,
15500                                  x_rulv_rec      => x_rulv_rec
15501                                 );
15502 
15503       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15504           raise header_rule_failed;
15505       END IF;
15506 
15507       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
15508          l_rgp_id := x_rgpv_rec.id;
15509       END IF;
15510 
15511       debug_message('------>Rule: AMTEWC/AMRFEE processed');
15512       /**** AKP Copied to here for AMTEWC 4067094 ***/
15513 
15514       -- Rule Group AMTFWC
15515 
15516       l_rgpv_rec            := NULL;
15517       l_rgp_id              := NULL;
15518       l_rgpv_rec.rgd_code   := 'AMTFWC';
15519       l_rgpv_rec.chr_id     := p_chr_id;
15520       l_rgpv_rec.dnz_chr_id := p_chr_id;
15521       l_rgpv_rec.cle_id     := NULL;
15522       l_rgpv_rec.rgp_type   := 'KRG';
15523 
15524       l_rulv_rec := NULL;
15525 
15526       l_eot_quote_calc_term_option  := p_header_rec.eot_quote_calc_term_option;
15527       l_eot_quote_calc_term_formula := p_header_rec.eot_quote_calc_term_formula;
15528 
15529       IF (l_eot_quote_calc_term_option IS NULL
15530           OR
15531           l_eot_quote_calc_term_formula IS NULL
15532           AND
15533           p_header_rec.template_number IS NOT NULL) THEN
15534          get_contract_rules(
15535                             x_return_status  => x_return_status,
15536                             x_msg_count      => x_msg_count,
15537                             x_msg_data       => x_msg_data,
15538                             p_chr_id         => p_template_id,
15539                             p_cle_id         => NULL,
15540                             p_rgd_code       => 'AMTFWC',
15541                             p_rule_code      => 'AMATQC',
15542                             x_rulv_tbl       => l_rulv_tbl,
15543                             x_rule_count     => l_rule_count
15544                            );
15545 
15546          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15547             RAISE header_rule_failed;
15548          END IF;
15549 
15550          IF (l_rule_count > 0) THEN
15551             l_eot_quote_calc_term_option  := NVL(l_eot_quote_calc_term_option,l_rulv_tbl(1).rule_information1);
15552             l_eot_quote_calc_term_formula := NVL(l_eot_quote_calc_term_formula,l_rulv_tbl(1).rule_information2);
15553          END IF;
15554       END IF;
15555 
15556       IF (l_eot_quote_calc_term_option IS NOT NULL) THEN
15557          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15558          l_rulv_rec.dnz_chr_id                := p_chr_id;
15559          l_rulv_rec.rule_information1         := l_eot_quote_calc_term_option;
15560          l_rulv_rec.rule_information_category := 'AMATQC';
15561          l_rulv_rec.std_template_yn           := 'N';
15562          l_rulv_rec.warn_yn                   := 'N';
15563       END IF;
15564 
15565       IF (l_eot_quote_calc_term_formula IS NOT NULL) THEN
15566          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15567          l_rulv_rec.dnz_chr_id                := p_chr_id;
15568          l_rulv_rec.rule_information2         := l_eot_quote_calc_term_formula;
15569          l_rulv_rec.rule_information_category := 'AMATQC';
15570          l_rulv_rec.std_template_yn           := 'N';
15571          l_rulv_rec.warn_yn                   := 'N';
15572       END IF;
15573 
15574       create_rule_group_and_rule(
15575                                  x_return_status => x_return_status,
15576                                  x_msg_count     => x_msg_count,
15577                                  x_msg_data      => x_msg_data,
15578                                  p_rgp_id        => l_rgp_id,
15579                                  p_rgpv_rec      => l_rgpv_rec,
15580                                  p_rulv_rec      => l_rulv_rec,
15581                                  x_rgpv_rec      => x_rgpv_rec,
15582                                  x_rulv_rec      => x_rulv_rec
15583                                 );
15584 
15585       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15586           raise header_rule_failed;
15587       END IF;
15588 
15589       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
15590          l_rgp_id := x_rgpv_rec.id;
15591       END IF;
15592       debug_message('------>Rule: AMTFWC/AMATQC processed');
15593       l_rulv_rec := NULL;
15594 
15595       l_eot_contract_oblig_opt      := p_header_rec.eot_contract_oblig_opt;
15596       l_eot_contract_oblig_amount   := TO_CHAR(p_header_rec.eot_contract_oblig_amount);
15597       l_eot_contract_oblig_formula  := p_header_rec.eot_contract_oblig_formula;
15598       l_eot_contract_oblig_prorate  := p_header_rec.eot_contract_oblig_prorate;
15599 
15600       IF (l_eot_contract_oblig_opt IS NULL
15601           OR
15602           l_eot_contract_oblig_amount IS NULL
15603           OR
15604           l_eot_contract_oblig_formula IS NULL
15605           OR
15606           l_eot_contract_oblig_prorate IS NULL
15607           AND
15608           p_header_rec.template_number IS NOT NULL) THEN
15609          get_contract_rules(
15610                             x_return_status  => x_return_status,
15611                             x_msg_count      => x_msg_count,
15612                             x_msg_data       => x_msg_data,
15613                             p_chr_id         => p_template_id,
15614                             p_cle_id         => NULL,
15615                             p_rgd_code       => 'AMTFWC',
15616                             p_rule_code      => 'AMBCOC',
15617                             x_rulv_tbl       => l_rulv_tbl,
15618                             x_rule_count     => l_rule_count
15619                            );
15620 
15621          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15622             RAISE header_rule_failed;
15623          END IF;
15624 
15625          IF (l_rule_count > 0) THEN
15626             l_eot_contract_oblig_opt      := NVL(l_eot_contract_oblig_opt,l_rulv_tbl(1).rule_information1);
15627             l_eot_contract_oblig_amount   := NVL(l_eot_contract_oblig_amount,l_rulv_tbl(1).rule_information2);
15628             l_eot_contract_oblig_formula  := NVL(l_eot_contract_oblig_formula,l_rulv_tbl(1).rule_information3);
15629             l_eot_contract_oblig_prorate  := NVL(l_eot_contract_oblig_prorate,l_rulv_tbl(1).rule_information4);
15630          END IF;
15631       END IF;
15632 
15633       IF (l_eot_contract_oblig_opt IS NOT NULL) THEN
15634          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15635          l_rulv_rec.dnz_chr_id                := p_chr_id;
15636          l_rulv_rec.rule_information1         := l_eot_contract_oblig_opt;
15637          l_rulv_rec.rule_information_category := 'AMBCOC';
15638          l_rulv_rec.std_template_yn           := 'N';
15639          l_rulv_rec.warn_yn                   := 'N';
15640       END IF;
15641 
15642       IF (l_eot_contract_oblig_amount IS NOT NULL) THEN
15643          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15644          l_rulv_rec.dnz_chr_id                := p_chr_id;
15645          l_rulv_rec.rule_information2         := l_eot_contract_oblig_amount;
15646          l_rulv_rec.rule_information_category := 'AMBCOC';
15647          l_rulv_rec.std_template_yn           := 'N';
15648          l_rulv_rec.warn_yn                   := 'N';
15649       END IF;
15650 
15651       IF (l_eot_contract_oblig_formula IS NOT NULL) THEN
15652          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15653          l_rulv_rec.dnz_chr_id                := p_chr_id;
15654          l_rulv_rec.rule_information3         := l_eot_contract_oblig_formula;
15655          l_rulv_rec.rule_information_category := 'AMBCOC';
15656          l_rulv_rec.std_template_yn           := 'N';
15657          l_rulv_rec.warn_yn                   := 'N';
15658       END IF;
15659 
15660       IF (l_eot_contract_oblig_prorate IS NOT NULL) THEN
15661          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15662          l_rulv_rec.dnz_chr_id                := p_chr_id;
15663          l_rulv_rec.rule_information4         := l_eot_contract_oblig_prorate;
15664          l_rulv_rec.rule_information_category := 'AMBCOC';
15665          l_rulv_rec.std_template_yn           := 'N';
15666          l_rulv_rec.warn_yn                   := 'N';
15667       END IF;
15668 
15669       create_rule_group_and_rule(
15670                                  x_return_status => x_return_status,
15671                                  x_msg_count     => x_msg_count,
15672                                  x_msg_data      => x_msg_data,
15673                                  p_rgp_id        => l_rgp_id,
15674                                  p_rgpv_rec      => l_rgpv_rec,
15675                                  p_rulv_rec      => l_rulv_rec,
15676                                  x_rgpv_rec      => x_rgpv_rec,
15677                                  x_rulv_rec      => x_rulv_rec
15678                                 );
15679 
15680       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15681           raise header_rule_failed;
15682       END IF;
15683 
15684       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
15685          l_rgp_id := x_rgpv_rec.id;
15686       END IF;
15687       debug_message('------>Rule: AMTFWC/AMBCOC processed');
15688       l_rulv_rec := NULL;
15689 
15690       l_eot_disc_rate_opt      := p_header_rec.eot_disc_rate_opt;
15691       l_eot_disc_rate_amount   := TO_CHAR(p_header_rec.eot_disc_rate_amount);
15692       l_eot_disc_rate_formula  := p_header_rec.eot_disc_rate_formula;
15693       l_eot_disc_rate_prorate  := p_header_rec.eot_disc_rate_prorate;
15694 
15695       IF (l_eot_disc_rate_opt IS NULL
15696           OR
15697           l_eot_disc_rate_amount IS NULL
15698           OR
15699           l_eot_disc_rate_formula IS NULL
15700           OR
15701           l_eot_disc_rate_prorate IS NULL
15702           AND
15703           p_header_rec.template_number IS NOT NULL) THEN
15704          get_contract_rules(
15705                             x_return_status  => x_return_status,
15706                             x_msg_count      => x_msg_count,
15707                             x_msg_data       => x_msg_data,
15708                             p_chr_id         => p_template_id,
15709                             p_cle_id         => NULL,
15710                             p_rgd_code       => 'AMTFWC',
15711                             p_rule_code      => 'AMCQDR',
15712                             x_rulv_tbl       => l_rulv_tbl,
15713                             x_rule_count     => l_rule_count
15714                            );
15715 
15716          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15717             RAISE header_rule_failed;
15718          END IF;
15719 
15720          IF (l_rule_count > 0) THEN
15721             l_eot_disc_rate_opt      := NVL(l_eot_disc_rate_opt,l_rulv_tbl(1).rule_information1);
15722             l_eot_disc_rate_amount   := NVL(l_eot_disc_rate_amount,l_rulv_tbl(1).rule_information2);
15723             l_eot_disc_rate_formula  := NVL(l_eot_disc_rate_formula,l_rulv_tbl(1).rule_information3);
15724             l_eot_disc_rate_prorate  := NVL(l_eot_disc_rate_prorate,l_rulv_tbl(1).rule_information4);
15725          END IF;
15726       END IF;
15727 
15728       IF (l_eot_disc_rate_opt IS NOT NULL) THEN
15729          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15730          l_rulv_rec.dnz_chr_id                := p_chr_id;
15731          l_rulv_rec.rule_information1         := l_eot_disc_rate_opt;
15732          l_rulv_rec.rule_information_category := 'AMCQDR';
15733          l_rulv_rec.std_template_yn           := 'N';
15734          l_rulv_rec.warn_yn                   := 'N';
15735       END IF;
15736 
15737       IF (l_eot_disc_rate_amount IS NOT NULL) THEN
15738          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15739          l_rulv_rec.dnz_chr_id                := p_chr_id;
15740          l_rulv_rec.rule_information2         := l_eot_disc_rate_amount;
15741          l_rulv_rec.rule_information_category := 'AMCQDR';
15742          l_rulv_rec.std_template_yn           := 'N';
15743          l_rulv_rec.warn_yn                   := 'N';
15744       END IF;
15745 
15746       IF (l_eot_disc_rate_formula IS NOT NULL) THEN
15747          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15748          l_rulv_rec.dnz_chr_id                := p_chr_id;
15749          l_rulv_rec.rule_information3         := l_eot_disc_rate_formula;
15750          l_rulv_rec.rule_information_category := 'AMCQDR';
15751          l_rulv_rec.std_template_yn           := 'N';
15752          l_rulv_rec.warn_yn                   := 'N';
15753       END IF;
15754 
15755       IF (l_eot_disc_rate_prorate IS NOT NULL) THEN
15756          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15757          l_rulv_rec.dnz_chr_id                := p_chr_id;
15758          l_rulv_rec.rule_information4         := l_eot_disc_rate_prorate;
15759          l_rulv_rec.rule_information_category := 'AMCQDR';
15760          l_rulv_rec.std_template_yn           := 'N';
15761          l_rulv_rec.warn_yn                   := 'N';
15762       END IF;
15763 
15764       create_rule_group_and_rule(
15765                                  x_return_status => x_return_status,
15766                                  x_msg_count     => x_msg_count,
15767                                  x_msg_data      => x_msg_data,
15768                                  p_rgp_id        => l_rgp_id,
15769                                  p_rgpv_rec      => l_rgpv_rec,
15770                                  p_rulv_rec      => l_rulv_rec,
15771                                  x_rgpv_rec      => x_rgpv_rec,
15772                                  x_rulv_rec      => x_rulv_rec
15773                                 );
15774 
15775       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15776           raise header_rule_failed;
15777       END IF;
15778 
15779       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
15780          l_rgp_id := x_rgpv_rec.id;
15781       END IF;
15782       debug_message('------>Rule: AMTFWC/AMCQDR processed');
15783       l_rulv_rec := NULL;
15784 
15785       l_eot_quote_fee_opt      := p_header_rec.eot_quote_fee_opt;
15786       l_eot_quote_fee_amount   := TO_CHAR(p_header_rec.eot_quote_fee_amount);
15787       l_eot_quote_fee_formula  := p_header_rec.eot_quote_fee_formula;
15788       l_eot_quote_fee_prorate  := p_header_rec.eot_quote_fee_prorate;
15789 
15790       IF (l_eot_quote_fee_opt IS NULL
15791           OR
15792           l_eot_quote_fee_amount IS NULL
15793           OR
15794           l_eot_quote_fee_formula IS NULL
15795           OR
15796           l_eot_quote_fee_prorate IS NULL
15797           AND
15798           p_header_rec.template_number IS NOT NULL) THEN
15799          get_contract_rules(
15800                             x_return_status  => x_return_status,
15801                             x_msg_count      => x_msg_count,
15802                             x_msg_data       => x_msg_data,
15803                             p_chr_id         => p_template_id,
15804                             p_cle_id         => NULL,
15805                             p_rgd_code       => 'AMTFWC',
15806                             p_rule_code      => 'AMCQFE',
15807                             x_rulv_tbl       => l_rulv_tbl,
15808                             x_rule_count     => l_rule_count
15809                            );
15810 
15811          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15812             RAISE header_rule_failed;
15813          END IF;
15814 
15815          IF (l_rule_count > 0) THEN
15816             l_eot_quote_fee_opt      := NVL(l_eot_quote_fee_opt,l_rulv_tbl(1).rule_information1);
15817             l_eot_quote_fee_amount   := NVL(l_eot_quote_fee_amount,l_rulv_tbl(1).rule_information2);
15818             l_eot_quote_fee_formula  := NVL(l_eot_quote_fee_formula,l_rulv_tbl(1).rule_information3);
15819             l_eot_quote_fee_prorate  := NVL(l_eot_quote_fee_prorate,l_rulv_tbl(1).rule_information4);
15820          END IF;
15821       END IF;
15822 
15823       IF (l_eot_quote_fee_opt IS NOT NULL) THEN
15824          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15825          l_rulv_rec.dnz_chr_id                := p_chr_id;
15826          l_rulv_rec.rule_information1         := l_eot_quote_fee_opt;
15827          l_rulv_rec.rule_information_category := 'AMCQFE';
15828          l_rulv_rec.std_template_yn           := 'N';
15829          l_rulv_rec.warn_yn                   := 'N';
15830       END IF;
15831 
15832       IF (l_eot_quote_fee_amount IS NOT NULL) THEN
15833          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15834          l_rulv_rec.dnz_chr_id                := p_chr_id;
15835          l_rulv_rec.rule_information2         := l_eot_quote_fee_amount;
15836          l_rulv_rec.rule_information_category := 'AMCQFE';
15837          l_rulv_rec.std_template_yn           := 'N';
15838          l_rulv_rec.warn_yn                   := 'N';
15839       END IF;
15840 
15841       IF (l_eot_quote_fee_formula IS NOT NULL) THEN
15842          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15843          l_rulv_rec.dnz_chr_id                := p_chr_id;
15844          l_rulv_rec.rule_information3         := l_eot_quote_fee_formula;
15845          l_rulv_rec.rule_information_category := 'AMCQFE';
15846          l_rulv_rec.std_template_yn           := 'N';
15847          l_rulv_rec.warn_yn                   := 'N';
15848       END IF;
15849 
15850       IF (l_eot_quote_fee_prorate IS NOT NULL) THEN
15851          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15852          l_rulv_rec.dnz_chr_id                := p_chr_id;
15853          l_rulv_rec.rule_information4         := l_eot_quote_fee_prorate;
15854          l_rulv_rec.rule_information_category := 'AMCQFE';
15855          l_rulv_rec.std_template_yn           := 'N';
15856          l_rulv_rec.warn_yn                   := 'N';
15857       END IF;
15858 
15859       create_rule_group_and_rule(
15860                                  x_return_status => x_return_status,
15861                                  x_msg_count     => x_msg_count,
15862                                  x_msg_data      => x_msg_data,
15863                                  p_rgp_id        => l_rgp_id,
15864                                  p_rgpv_rec      => l_rgpv_rec,
15865                                  p_rulv_rec      => l_rulv_rec,
15866                                  x_rgpv_rec      => x_rgpv_rec,
15867                                  x_rulv_rec      => x_rulv_rec
15868                                 );
15869 
15870       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15871           raise header_rule_failed;
15872       END IF;
15873 
15874       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
15875          l_rgp_id := x_rgpv_rec.id;
15876       END IF;
15877       debug_message('------>Rule: AMTFWC/AMCQFE processed');
15878       l_rulv_rec := NULL;
15879 
15880       l_eot_return_fee_option   := p_header_rec.eot_return_fee_option;
15881       l_eot_return_fee_amount   := TO_CHAR(p_header_rec.eot_return_fee_amount);
15882       l_eot_return_fee_formula  := p_header_rec.eot_return_fee_formula;
15883       l_eot_return_fee_prorate  := p_header_rec.eot_return_fee_prorate;
15884 
15885       IF (l_eot_return_fee_option IS NULL
15886           OR
15887           l_eot_return_fee_amount IS NULL
15888           OR
15889           l_eot_return_fee_formula IS NULL
15890           OR
15891           l_eot_return_fee_prorate IS NULL
15892           AND
15893           p_header_rec.template_number IS NOT NULL) THEN
15894          get_contract_rules(
15895                             x_return_status  => x_return_status,
15896                             x_msg_count      => x_msg_count,
15897                             x_msg_data       => x_msg_data,
15898                             p_chr_id         => p_template_id,
15899                             p_cle_id         => NULL,
15900                             p_rgd_code       => 'AMTFWC',
15901                             p_rule_code      => 'AMCRFE',
15902                             x_rulv_tbl       => l_rulv_tbl,
15903                             x_rule_count     => l_rule_count
15904                            );
15905 
15906          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15907             RAISE header_rule_failed;
15908          END IF;
15909 
15910          IF (l_rule_count > 0) THEN
15911             l_eot_return_fee_option   := NVL(l_eot_return_fee_option,l_rulv_tbl(1).rule_information1);
15912             l_eot_return_fee_amount   := NVL(l_eot_return_fee_amount,l_rulv_tbl(1).rule_information2);
15913             l_eot_return_fee_formula  := NVL(l_eot_return_fee_formula,l_rulv_tbl(1).rule_information3);
15914             l_eot_return_fee_prorate  := NVL(l_eot_return_fee_prorate,l_rulv_tbl(1).rule_information4);
15915          END IF;
15916       END IF;
15917 
15918       IF (l_eot_return_fee_option IS NOT NULL) THEN
15919          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15920          l_rulv_rec.dnz_chr_id                := p_chr_id;
15921          l_rulv_rec.rule_informaTion1         := l_eot_return_fee_option;
15922          l_rulv_rec.rule_information_category := 'AMCRFE';
15923          l_rulv_rec.std_template_yn           := 'N';
15924          l_rulv_rec.warn_yn                   := 'N';
15925       END IF;
15926 
15927       IF (l_eot_return_fee_amount IS NOT NULL) THEN
15928          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15929          l_rulv_rec.dnz_chr_id                := p_chr_id;
15930          l_rulv_rec.rule_information2         := l_eot_return_fee_amount;
15931          l_rulv_rec.rule_information_category := 'AMCRFE';
15932          l_rulv_rec.std_template_yn           := 'N';
15933          l_rulv_rec.warn_yn                   := 'N';
15934       END IF;
15935 
15936       IF (l_eot_return_fee_formula IS NOT NULL) THEN
15937          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15938          l_rulv_rec.dnz_chr_id                := p_chr_id;
15939          l_rulv_rec.rule_information3         := l_eot_return_fee_formula;
15940          l_rulv_rec.rule_information_category := 'AMCRFE';
15941          l_rulv_rec.std_template_yn           := 'N';
15942          l_rulv_rec.warn_yn                   := 'N';
15943       END IF;
15944 
15945       IF (l_eot_return_fee_prorate IS NOT NULL) THEN
15946          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15947          l_rulv_rec.dnz_chr_id                := p_chr_id;
15948          l_rulv_rec.rule_information4         := l_eot_return_fee_prorate;
15949          l_rulv_rec.rule_information_category := 'AMCRFE';
15950          l_rulv_rec.std_template_yn           := 'N';
15951          l_rulv_rec.warn_yn                   := 'N';
15952       END IF;
15953 
15954       create_rule_group_and_rule(
15955                                  x_return_status => x_return_status,
15956                                  x_msg_count     => x_msg_count,
15957                                  x_msg_data      => x_msg_data,
15958                                  p_rgp_id        => l_rgp_id,
15959                                  p_rgpv_rec      => l_rgpv_rec,
15960                                  p_rulv_rec      => l_rulv_rec,
15961                                  x_rgpv_rec      => x_rgpv_rec,
15962                                  x_rulv_rec      => x_rulv_rec
15963                                 );
15964 
15965       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15966           raise header_rule_failed;
15967       END IF;
15968 
15969       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
15970          l_rgp_id := x_rgpv_rec.id;
15971       END IF;
15972       debug_message('------>Rule: AMTFWC/AMCRFE processed');
15973       l_rulv_rec := NULL;
15974 
15975       l_eot_roll_inctv_option   := p_header_rec.eot_roll_inctv_option;
15976       l_eot_roll_inctv_amount   := TO_CHAR(p_header_rec.eot_roll_inctv_amount);
15977       l_eot_roll_inctv_formula  := p_header_rec.eot_roll_inctv_formula;
15978       l_eot_roll_inctv_prorate  := p_header_rec.eot_roll_inctv_prorate;
15979 
15980       IF (l_eot_roll_inctv_option IS NULL
15981           OR
15982           l_eot_roll_inctv_amount IS NULL
15983           OR
15984           l_eot_roll_inctv_formula IS NULL
15985           OR
15986           l_eot_roll_inctv_prorate IS NULL
15987           AND
15988           p_header_rec.template_number IS NOT NULL) THEN
15989          get_contract_rules(
15990                             x_return_status  => x_return_status,
15991                             x_msg_count      => x_msg_count,
15992                             x_msg_data       => x_msg_data,
15993                             p_chr_id         => p_template_id,
15994                             p_cle_id         => NULL,
15995                             p_rgd_code       => 'AMTFWC',
15996                             p_rule_code      => 'AMCRIN',
15997                             x_rulv_tbl       => l_rulv_tbl,
15998                             x_rule_count     => l_rule_count
15999                            );
16000 
16001          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16002             RAISE header_rule_failed;
16003          END IF;
16004 
16005          IF (l_rule_count > 0) THEN
16006             l_eot_roll_inctv_option   := NVL(l_eot_roll_inctv_option,l_rulv_tbl(1).rule_information1);
16007             l_eot_roll_inctv_amount   := NVL(l_eot_roll_inctv_amount,l_rulv_tbl(1).rule_information2);
16008             l_eot_roll_inctv_formula  := NVL(l_eot_roll_inctv_formula,l_rulv_tbl(1).rule_information3);
16009             l_eot_roll_inctv_prorate  := NVL(l_eot_roll_inctv_prorate,l_rulv_tbl(1).rule_information4);
16010          END IF;
16011       END IF;
16012 
16013       IF (l_eot_roll_inctv_option IS NOT NULL) THEN
16014          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16015          l_rulv_rec.dnz_chr_id                := p_chr_id;
16016          l_rulv_rec.rule_informaTion1         := l_eot_roll_inctv_option;
16017          l_rulv_rec.rule_information_category := 'AMCRIN';
16018          l_rulv_rec.std_template_yn           := 'N';
16019          l_rulv_rec.warn_yn                   := 'N';
16020       END IF;
16021 
16022       IF (l_eot_roll_inctv_amount IS NOT NULL) THEN
16023          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16024          l_rulv_rec.dnz_chr_id                := p_chr_id;
16025          l_rulv_rec.rule_information2         := l_eot_roll_inctv_amount;
16026          l_rulv_rec.rule_information_category := 'AMCRIN';
16027          l_rulv_rec.std_template_yn           := 'N';
16028          l_rulv_rec.warn_yn                   := 'N';
16029       END IF;
16030 
16031       IF (l_eot_roll_inctv_formula IS NOT NULL) THEN
16032          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16033          l_rulv_rec.dnz_chr_id                := p_chr_id;
16034          l_rulv_rec.rule_information3         := l_eot_roll_inctv_formula;
16035          l_rulv_rec.rule_information_category := 'AMCRIN';
16036          l_rulv_rec.std_template_yn           := 'N';
16037          l_rulv_rec.warn_yn                   := 'N';
16038       END IF;
16039 
16040       IF (l_eot_roll_inctv_prorate IS NOT NULL) THEN
16041          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16042          l_rulv_rec.dnz_chr_id                := p_chr_id;
16043          l_rulv_rec.rule_information4         := l_eot_roll_inctv_prorate;
16044          l_rulv_rec.rule_information_category := 'AMCRIN';
16045          l_rulv_rec.std_template_yn           := 'N';
16046          l_rulv_rec.warn_yn                   := 'N';
16047       END IF;
16048 
16049       create_rule_group_and_rule(
16050                                  x_return_status => x_return_status,
16051                                  x_msg_count     => x_msg_count,
16052                                  x_msg_data      => x_msg_data,
16053                                  p_rgp_id        => l_rgp_id,
16054                                  p_rgpv_rec      => l_rgpv_rec,
16055                                  p_rulv_rec      => l_rulv_rec,
16056                                  x_rgpv_rec      => x_rgpv_rec,
16057                                  x_rulv_rec      => x_rulv_rec
16058                                 );
16059 
16060       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16061           raise header_rule_failed;
16062       END IF;
16063 
16064       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
16065          l_rgp_id := x_rgpv_rec.id;
16066       END IF;
16067       debug_message('------>Rule: AMTFWC/AMCRIN processed');
16068       l_rulv_rec := NULL;
16069 
16070       l_eot_secu_dep_dispo_option   := p_header_rec.eot_secu_dep_dispo_option;
16071       l_eot_secu_dep_dispo_amount   := TO_CHAR(p_header_rec.eot_secu_dep_dispo_amount);
16072       l_eot_secu_dep_dispo_formula  := p_header_rec.eot_secu_dep_dispo_formula;
16073       l_eot_secu_dep_dispo_prorate  := p_header_rec.eot_secu_dep_dispo_prorate;
16074 
16075       IF (l_eot_secu_dep_dispo_option IS NULL
16076           OR
16077           l_eot_secu_dep_dispo_amount IS NULL
16078           OR
16079           l_eot_secu_dep_dispo_formula IS NULL
16080           OR
16081           l_eot_secu_dep_dispo_prorate IS NULL
16082           AND
16083           p_header_rec.template_number IS NOT NULL) THEN
16084          get_contract_rules(
16085                             x_return_status  => x_return_status,
16086                             x_msg_count      => x_msg_count,
16087                             x_msg_data       => x_msg_data,
16088                             p_chr_id         => p_template_id,
16089                             p_cle_id         => NULL,
16090                             p_rgd_code       => 'AMTFWC',
16091                             p_rule_code      => 'AMCSDD',
16092                             x_rulv_tbl       => l_rulv_tbl,
16093                             x_rule_count     => l_rule_count
16094                            );
16095 
16096          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16097             RAISE header_rule_failed;
16098          END IF;
16099 
16100          IF (l_rule_count > 0) THEN
16101             l_eot_secu_dep_dispo_option   := NVL(l_eot_secu_dep_dispo_option,l_rulv_tbl(1).rule_information1);
16102             l_eot_secu_dep_dispo_amount   := NVL(l_eot_secu_dep_dispo_amount,l_rulv_tbl(1).rule_information2);
16103             l_eot_secu_dep_dispo_formula  := NVL(l_eot_secu_dep_dispo_formula,l_rulv_tbl(1).rule_information3);
16104             l_eot_secu_dep_dispo_prorate  := NVL(l_eot_secu_dep_dispo_prorate,l_rulv_tbl(1).rule_information4);
16105          END IF;
16106       END IF;
16107 
16108       IF (l_eot_secu_dep_dispo_option IS NOT NULL) THEN
16109          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16110          l_rulv_rec.dnz_chr_id                := p_chr_id;
16111          l_rulv_rec.rule_informaTion1         := l_eot_secu_dep_dispo_option;
16112          l_rulv_rec.rule_information_category := 'AMCSDD';
16113          l_rulv_rec.std_template_yn           := 'N';
16114          l_rulv_rec.warn_yn                   := 'N';
16115       END IF;
16116 
16117       IF (l_eot_secu_dep_dispo_amount IS NOT NULL) THEN
16118          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16119          l_rulv_rec.dnz_chr_id                := p_chr_id;
16120          l_rulv_rec.rule_information2         := l_eot_secu_dep_dispo_amount;
16121          l_rulv_rec.rule_information_category := 'AMCSDD';
16122          l_rulv_rec.std_template_yn           := 'N';
16123          l_rulv_rec.warn_yn                   := 'N';
16124       END IF;
16125 
16126       IF (l_eot_secu_dep_dispo_formula IS NOT NULL) THEN
16127          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16128          l_rulv_rec.dnz_chr_id                := p_chr_id;
16129          l_rulv_rec.rule_information3         := l_eot_secu_dep_dispo_formula;
16130          l_rulv_rec.rule_information_category := 'AMCSDD';
16131          l_rulv_rec.std_template_yn           := 'N';
16132          l_rulv_rec.warn_yn                   := 'N';
16133       END IF;
16134 
16135       IF (l_eot_secu_dep_dispo_prorate IS NOT NULL) THEN
16136          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16137          l_rulv_rec.dnz_chr_id                := p_chr_id;
16138          l_rulv_rec.rule_information4         := l_eot_secu_dep_dispo_prorate;
16139          l_rulv_rec.rule_information_category := 'AMCSDD';
16140          l_rulv_rec.std_template_yn           := 'N';
16141          l_rulv_rec.warn_yn                   := 'N';
16142       END IF;
16143 
16144       create_rule_group_and_rule(
16145                                  x_return_status => x_return_status,
16146                                  x_msg_count     => x_msg_count,
16147                                  x_msg_data      => x_msg_data,
16148                                  p_rgp_id        => l_rgp_id,
16149                                  p_rgpv_rec      => l_rgpv_rec,
16150                                  p_rulv_rec      => l_rulv_rec,
16151                                  x_rgpv_rec      => x_rgpv_rec,
16152                                  x_rulv_rec      => x_rulv_rec
16153                                 );
16154 
16155       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16156           raise header_rule_failed;
16157       END IF;
16158 
16159       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
16160          l_rgp_id := x_rgpv_rec.id;
16161       END IF;
16162       debug_message('------>Rule: AMTFWC/AMCSDD processed');
16163       l_rulv_rec := NULL;
16164 
16165       l_eot_term_penalty_option       := p_header_rec.eot_term_penalty_option;
16166       l_eot_term_penalty_amount       := TO_CHAR(p_header_rec.eot_term_penalty_amount);
16167       l_eot_term_penalty_formula      := p_header_rec.eot_term_penalty_formula;
16168       l_eot_term_penalty_prorate      := p_header_rec.eot_term_penalty_prorate;
16169       l_eot_term_penalty_cap_option   := p_header_rec.eot_term_penalty_cap_option;
16170       l_eot_term_penalty_cap_amount   := TO_CHAR(p_header_rec.eot_term_penalty_cap_amount);
16171       l_eot_term_penalty_cap_formula  := p_header_rec.eot_term_penalty_cap_formula;
16172 
16173       IF (l_eot_term_penalty_option IS NULL
16174           OR
16175           l_eot_term_penalty_amount IS NULL
16176           OR
16177           l_eot_term_penalty_formula IS NULL
16178           OR
16179           l_eot_term_penalty_prorate IS NULL
16180           OR
16181           l_eot_term_penalty_cap_option IS NULL
16182           OR
16183           l_eot_term_penalty_cap_amount IS NULL
16184           OR
16185           l_eot_term_penalty_cap_formula IS NULL
16186           AND
16187           p_header_rec.template_number IS NOT NULL) THEN
16188          get_contract_rules(
16189                             x_return_status  => x_return_status,
16190                             x_msg_count      => x_msg_count,
16191                             x_msg_data       => x_msg_data,
16192                             p_chr_id         => p_template_id,
16193                             p_cle_id         => NULL,
16194                             p_rgd_code       => 'AMTFWC',
16195                             p_rule_code      => 'AMCTPE',
16196                             x_rulv_tbl       => l_rulv_tbl,
16197                             x_rule_count     => l_rule_count
16198                            );
16199 
16200          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16201             RAISE header_rule_failed;
16202          END IF;
16203 
16204          IF (l_rule_count > 0) THEN
16205             l_eot_term_penalty_option       := NVL(l_eot_term_penalty_option,l_rulv_tbl(1).rule_information1);
16206             l_eot_term_penalty_amount       := NVL(l_eot_term_penalty_amount,l_rulv_tbl(1).rule_information2);
16207             l_eot_term_penalty_formula      := NVL(l_eot_term_penalty_formula,l_rulv_tbl(1).rule_information3);
16208             l_eot_term_penalty_prorate      := NVL(l_eot_term_penalty_prorate,l_rulv_tbl(1).rule_information4);
16209             l_eot_term_penalty_cap_option   := NVL(l_eot_term_penalty_cap_option,l_rulv_tbl(1).rule_information5);
16210             l_eot_term_penalty_cap_amount   := NVL(l_eot_term_penalty_cap_amount,l_rulv_tbl(1).rule_information6);
16211             l_eot_term_penalty_cap_formula  := NVL(l_eot_term_penalty_cap_formula,l_rulv_tbl(1).rule_information7);
16212          END IF;
16213       END IF;
16214 
16215       IF (l_eot_term_penalty_option IS NOT NULL) THEN
16216          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16217          l_rulv_rec.dnz_chr_id                := p_chr_id;
16218          l_rulv_rec.rule_informaTion1         := l_eot_term_penalty_option;
16219          l_rulv_rec.rule_information_category := 'AMCTPE';
16220          l_rulv_rec.std_template_yn           := 'N';
16221          l_rulv_rec.warn_yn                   := 'N';
16222       END IF;
16223 
16224       IF (l_eot_term_penalty_amount IS NOT NULL) THEN
16225          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16226          l_rulv_rec.dnz_chr_id                := p_chr_id;
16227          l_rulv_rec.rule_information2         := l_eot_term_penalty_amount;
16228          l_rulv_rec.rule_information_category := 'AMCTPE';
16229          l_rulv_rec.std_template_yn           := 'N';
16230          l_rulv_rec.warn_yn                   := 'N';
16231       END IF;
16232 
16233       IF (l_eot_term_penalty_formula IS NOT NULL) THEN
16234          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16235          l_rulv_rec.dnz_chr_id                := p_chr_id;
16236          l_rulv_rec.rule_information3         := l_eot_term_penalty_formula;
16237          l_rulv_rec.rule_information_category := 'AMCTPE';
16238          l_rulv_rec.std_template_yn           := 'N';
16239          l_rulv_rec.warn_yn                   := 'N';
16240       END IF;
16241 
16242       IF (l_eot_term_penalty_prorate IS NOT NULL) THEN
16243          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16244          l_rulv_rec.dnz_chr_id                := p_chr_id;
16245          l_rulv_rec.rule_information4         := l_eot_term_penalty_prorate;
16246          l_rulv_rec.rule_information_category := 'AMCTPE';
16247          l_rulv_rec.std_template_yn           := 'N';
16248          l_rulv_rec.warn_yn                   := 'N';
16249       END IF;
16250 
16251       IF (l_eot_term_penalty_cap_option IS NOT NULL) THEN
16252          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16253          l_rulv_rec.dnz_chr_id                := p_chr_id;
16254          l_rulv_rec.rule_informaTion5         := l_eot_term_penalty_cap_option;
16255          l_rulv_rec.rule_information_category := 'AMCTPE';
16256          l_rulv_rec.std_template_yn           := 'N';
16257          l_rulv_rec.warn_yn                   := 'N';
16258       END IF;
16259 
16260       IF (l_eot_term_penalty_cap_amount IS NOT NULL) THEN
16261          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16262          l_rulv_rec.dnz_chr_id                := p_chr_id;
16263          l_rulv_rec.rule_information6         := l_eot_term_penalty_cap_amount;
16264          l_rulv_rec.rule_information_category := 'AMCTPE';
16265          l_rulv_rec.std_template_yn           := 'N';
16266          l_rulv_rec.warn_yn                   := 'N';
16267       END IF;
16268 
16269       IF (l_eot_term_penalty_cap_formula IS NOT NULL) THEN
16270          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16271          l_rulv_rec.dnz_chr_id                := p_chr_id;
16272          l_rulv_rec.rule_information7         := l_eot_term_penalty_cap_formula;
16273          l_rulv_rec.rule_information_category := 'AMCTPE';
16274          l_rulv_rec.std_template_yn           := 'N';
16275          l_rulv_rec.warn_yn                   := 'N';
16276       END IF;
16277 
16278       create_rule_group_and_rule(
16279                                  x_return_status => x_return_status,
16280                                  x_msg_count     => x_msg_count,
16281                                  x_msg_data      => x_msg_data,
16282                                  p_rgp_id        => l_rgp_id,
16283                                  p_rgpv_rec      => l_rgpv_rec,
16284                                  p_rulv_rec      => l_rulv_rec,
16285                                  x_rgpv_rec      => x_rgpv_rec,
16286                                  x_rulv_rec      => x_rulv_rec
16287                                 );
16288 
16289       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16290           raise header_rule_failed;
16291       END IF;
16292 
16293       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
16294          l_rgp_id := x_rgpv_rec.id;
16295       END IF;
16296       debug_message('------>Rule: AMTFWC/AMCTPE processed');
16297       l_rulv_rec := NULL;
16298 
16299       l_eot_est_prop_tax_option   := p_header_rec.eot_est_prop_tax_option;
16300       l_eot_est_prop_tax_amount   := TO_CHAR(p_header_rec.eot_est_prop_tax_amount);
16301       l_eot_est_prop_tax_formula  := p_header_rec.eot_est_prop_tax_formula;
16302       l_eot_est_prop_tax_prorate  := p_header_rec.eot_est_prop_tax_prorate;
16303 
16304       IF (l_eot_est_prop_tax_option IS NULL
16305           OR
16306           l_eot_est_prop_tax_amount IS NULL
16307           OR
16308           l_eot_est_prop_tax_formula IS NULL
16309           OR
16310           l_eot_est_prop_tax_prorate IS NULL
16311           AND
16312           p_header_rec.template_number IS NOT NULL) THEN
16313          get_contract_rules(
16314                             x_return_status  => x_return_status,
16315                             x_msg_count      => x_msg_count,
16316                             x_msg_data       => x_msg_data,
16317                             p_chr_id         => p_template_id,
16318                             p_cle_id         => NULL,
16319                             p_rgd_code       => 'AMTFWC',
16320                             p_rule_code      => 'AMPRTX',
16321                             x_rulv_tbl       => l_rulv_tbl,
16322                             x_rule_count     => l_rule_count
16323                            );
16324 
16325          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16326             RAISE header_rule_failed;
16327          END IF;
16328 
16329          IF (l_rule_count > 0) THEN
16330             l_eot_est_prop_tax_option   := NVL(l_eot_est_prop_tax_option,l_rulv_tbl(1).rule_information1);
16331             l_eot_est_prop_tax_amount   := NVL(l_eot_est_prop_tax_amount,l_rulv_tbl(1).rule_information2);
16332             l_eot_est_prop_tax_formula  := NVL(l_eot_est_prop_tax_formula,l_rulv_tbl(1).rule_information3);
16333             l_eot_est_prop_tax_prorate  := NVL(l_eot_est_prop_tax_prorate,l_rulv_tbl(1).rule_information4);
16334          END IF;
16335       END IF;
16336 
16337       IF (l_eot_est_prop_tax_option IS NOT NULL) THEN
16338          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16339          l_rulv_rec.dnz_chr_id                := p_chr_id;
16340          l_rulv_rec.rule_informaTion1         := l_eot_est_prop_tax_option;
16341          l_rulv_rec.rule_information_category := 'AMPRTX';
16342          l_rulv_rec.std_template_yn           := 'N';
16343          l_rulv_rec.warn_yn                   := 'N';
16344       END IF;
16345 
16346       IF (l_eot_est_prop_tax_amount IS NOT NULL) THEN
16347          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16348          l_rulv_rec.dnz_chr_id                := p_chr_id;
16349          l_rulv_rec.rule_information2         := l_eot_est_prop_tax_amount;
16350          l_rulv_rec.rule_information_category := 'AMPRTX';
16351          l_rulv_rec.std_template_yn           := 'N';
16352          l_rulv_rec.warn_yn                   := 'N';
16353       END IF;
16354 
16355       IF (l_eot_est_prop_tax_formula IS NOT NULL) THEN
16356          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16357          l_rulv_rec.dnz_chr_id                := p_chr_id;
16358          l_rulv_rec.rule_information3         := l_eot_est_prop_tax_formula;
16359          l_rulv_rec.rule_information_category := 'AMPRTX';
16360          l_rulv_rec.std_template_yn           := 'N';
16361          l_rulv_rec.warn_yn                   := 'N';
16362       END IF;
16363 
16364       IF (l_eot_est_prop_tax_prorate IS NOT NULL) THEN
16365          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16366          l_rulv_rec.dnz_chr_id                := p_chr_id;
16367          l_rulv_rec.rule_information4         := l_eot_est_prop_tax_prorate;
16368          l_rulv_rec.rule_information_category := 'AMPRTX';
16369          l_rulv_rec.std_template_yn           := 'N';
16370          l_rulv_rec.warn_yn                   := 'N';
16371       END IF;
16372 
16373       create_rule_group_and_rule(
16374                                  x_return_status => x_return_status,
16375                                  x_msg_count     => x_msg_count,
16376                                  x_msg_data      => x_msg_data,
16377                                  p_rgp_id        => l_rgp_id,
16378                                  p_rgpv_rec      => l_rgpv_rec,
16379                                  p_rulv_rec      => l_rulv_rec,
16380                                  x_rgpv_rec      => x_rgpv_rec,
16381                                  x_rulv_rec      => x_rulv_rec
16382                                 );
16383 
16384       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16385           raise header_rule_failed;
16386       END IF;
16387 
16388       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
16389          l_rgp_id := x_rgpv_rec.id;
16390       END IF;
16391       debug_message('------>Rule: AMTFWC/AMPRTX processed');
16392       l_rulv_rec := NULL;
16393 
16394       l_eot_contr_fees_option := p_header_rec.eot_contr_fees_option;
16395 
16396       IF (l_eot_contr_fees_option IS NULL
16397           AND
16398           p_header_rec.template_number IS NOT NULL) THEN
16399          get_contract_rules(
16400                             x_return_status  => x_return_status,
16401                             x_msg_count      => x_msg_count,
16402                             x_msg_data       => x_msg_data,
16403                             p_chr_id         => p_template_id,
16404                             p_cle_id         => NULL,
16405                             p_rgd_code       => 'AMTFWC',
16406                             p_rule_code      => 'AMYFEE',
16407                             x_rulv_tbl       => l_rulv_tbl,
16408                             x_rule_count     => l_rule_count
16409                            );
16410 
16411          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16412             RAISE header_rule_failed;
16413          END IF;
16414 
16415          IF (l_rule_count > 0) THEN
16416             l_eot_contr_fees_option   := NVL(l_eot_contr_fees_option,l_rulv_tbl(1).rule_information1);
16417          END IF;
16418       END IF;
16419 
16420       IF (l_eot_contr_fees_option IS NOT NULL) THEN
16421          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16422          l_rulv_rec.dnz_chr_id                := p_chr_id;
16423          l_rulv_rec.rule_information1         := l_eot_contr_fees_option;
16424          l_rulv_rec.rule_information_category := 'AMYFEE';
16425          l_rulv_rec.std_template_yn           := 'N';
16426          l_rulv_rec.warn_yn                   := 'N';
16427       END IF;
16428 
16429       create_rule_group_and_rule(
16430                                  x_return_status => x_return_status,
16431                                  x_msg_count     => x_msg_count,
16432                                  x_msg_data      => x_msg_data,
16433                                  p_rgp_id        => l_rgp_id,
16434                                  p_rgpv_rec      => l_rgpv_rec,
16435                                  p_rulv_rec      => l_rulv_rec,
16436                                  x_rgpv_rec      => x_rgpv_rec,
16437                                  x_rulv_rec      => x_rulv_rec
16438                                 );
16439 
16440       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16441           raise header_rule_failed;
16442       END IF;
16443 
16444       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
16445          l_rgp_id := x_rgpv_rec.id;
16446       END IF;
16447       debug_message('------>Rule: AMTFWC/AMYFEE processed');
16448       l_rulv_rec := NULL;
16449 
16450       l_eot_outstnd_bal_option := p_header_rec.eot_outstnd_bal_option;
16451 
16452       IF (l_eot_outstnd_bal_option IS NULL
16453           AND
16454           p_header_rec.template_number IS NOT NULL) THEN
16455          get_contract_rules(
16456                             x_return_status  => x_return_status,
16457                             x_msg_count      => x_msg_count,
16458                             x_msg_data       => x_msg_data,
16459                             p_chr_id         => p_template_id,
16460                             p_cle_id         => NULL,
16461                             p_rgd_code       => 'AMTFWC',
16462                             p_rule_code      => 'AMYOUB',
16463                             x_rulv_tbl       => l_rulv_tbl,
16464                             x_rule_count     => l_rule_count
16465                            );
16466 
16467          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16468             RAISE header_rule_failed;
16469          END IF;
16470 
16471          IF (l_rule_count > 0) THEN
16472             l_eot_outstnd_bal_option   := l_rulv_tbl(1).rule_information1;
16473          END IF;
16474       END IF;
16475 
16476       IF (l_eot_outstnd_bal_option IS NOT NULL) THEN
16477          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16478          l_rulv_rec.dnz_chr_id                := p_chr_id;
16479          l_rulv_rec.rule_information1         := l_eot_outstnd_bal_option;
16480          l_rulv_rec.rule_information_category := 'AMYOUB';
16481          l_rulv_rec.std_template_yn           := 'N';
16482          l_rulv_rec.warn_yn                   := 'N';
16483       END IF;
16484 
16485       create_rule_group_and_rule(
16486                                  x_return_status => x_return_status,
16487                                  x_msg_count     => x_msg_count,
16488                                  x_msg_data      => x_msg_data,
16489                                  p_rgp_id        => l_rgp_id,
16490                                  p_rgpv_rec      => l_rgpv_rec,
16491                                  p_rulv_rec      => l_rulv_rec,
16492                                  x_rgpv_rec      => x_rgpv_rec,
16493                                  x_rulv_rec      => x_rulv_rec
16494                                 );
16495 
16496       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16497           raise header_rule_failed;
16498       END IF;
16499 
16500       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
16501          l_rgp_id := x_rgpv_rec.id;
16502       END IF;
16503       debug_message('------>Rule: AMTFWC/AMYOUB processed');
16504       l_rulv_rec := NULL;
16505 
16506       l_eot_serv_mant_option := p_header_rec.eot_serv_mant_option;
16507       l_eot_serv_mant_frml   := p_header_rec.eot_serv_mant_frml;
16508 
16509       IF ((l_eot_serv_mant_option IS NULL
16510            OR
16511            l_eot_serv_mant_frml IS NULL
16512           )
16513           AND
16514           p_header_rec.template_number IS NOT NULL) THEN
16515          get_contract_rules(
16516                             x_return_status  => x_return_status,
16517                             x_msg_count      => x_msg_count,
16518                             x_msg_data       => x_msg_data,
16519                             p_chr_id         => p_template_id,
16520                             p_cle_id         => NULL,
16521                             p_rgd_code       => 'AMTFWC',
16522                             p_rule_code      => 'AMYSAM',
16523                             x_rulv_tbl       => l_rulv_tbl,
16524                             x_rule_count     => l_rule_count
16525                            );
16526 
16527          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16528             RAISE header_rule_failed;
16529          END IF;
16530 
16531          IF (l_rule_count > 0) THEN
16532             l_eot_serv_mant_option   := NVL(l_eot_serv_mant_option,l_rulv_tbl(1).rule_information1);
16533             l_eot_serv_mant_frml     := NVL(l_eot_serv_mant_frml,l_rulv_tbl(1).rule_information2);
16534          END IF;
16535       END IF;
16536 
16537       IF (l_eot_serv_mant_option IS NOT NULL) THEN
16538          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16539          l_rulv_rec.dnz_chr_id                := p_chr_id;
16540          l_rulv_rec.rule_information1         := l_eot_serv_mant_option;
16541          l_rulv_rec.rule_information_category := 'AMYSAM';
16542          l_rulv_rec.std_template_yn           := 'N';
16543          l_rulv_rec.warn_yn                   := 'N';
16544       END IF;
16545 
16546       IF (l_eot_serv_mant_frml IS NOT NULL) THEN
16547          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16548          l_rulv_rec.dnz_chr_id                := p_chr_id;
16549          l_rulv_rec.rule_information2         := l_eot_serv_mant_frml;
16550          l_rulv_rec.rule_information_category := 'AMYSAM';
16551          l_rulv_rec.std_template_yn           := 'N';
16552          l_rulv_rec.warn_yn                   := 'N';
16553       END IF;
16554 
16555       create_rule_group_and_rule(
16556                                  x_return_status => x_return_status,
16557                                  x_msg_count     => x_msg_count,
16558                                  x_msg_data      => x_msg_data,
16559                                  p_rgp_id        => l_rgp_id,
16560                                  p_rgpv_rec      => l_rgpv_rec,
16561                                  p_rulv_rec      => l_rulv_rec,
16562                                  x_rgpv_rec      => x_rgpv_rec,
16563                                  x_rulv_rec      => x_rulv_rec
16564                                 );
16565 
16566       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16567           raise header_rule_failed;
16568       END IF;
16569 
16570       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
16571          l_rgp_id := x_rgpv_rec.id;
16572       END IF;
16573 
16574       debug_message('------>Rule: AMTFWC/AMYSAM processed');
16575 
16576       /**** AKP Copied from here for AMTFWC 4067094 ***/
16577       l_rulv_rec := NULL;
16578 
16579       l_eot_absorbed_fee_frml := p_header_rec.eot_absorbed_fee_frml;
16580 
16581       IF (l_eot_absorbed_fee_frml IS NULL
16582           AND
16583           p_header_rec.template_number IS NOT NULL) THEN
16584          get_contract_rules(
16585                             x_return_status  => x_return_status,
16586                             x_msg_count      => x_msg_count,
16587                             x_msg_data       => x_msg_data,
16588                             p_chr_id         => p_template_id,
16589                             p_cle_id         => NULL,
16590                             p_rgd_code       => 'AMTFWC',
16591                             p_rule_code      => 'AMAFEE',
16592                             x_rulv_tbl       => l_rulv_tbl,
16593                             x_rule_count     => l_rule_count
16594                            );
16595 
16596          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16597             RAISE header_rule_failed;
16598          END IF;
16599 
16600          IF (l_rule_count > 0) THEN
16601             l_eot_absorbed_fee_frml   := l_rulv_tbl(1).rule_information3;
16602          END IF;
16603       END IF;
16604 
16605       IF (l_eot_absorbed_fee_frml IS NOT NULL) THEN
16606          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16607          l_rulv_rec.dnz_chr_id                := p_chr_id;
16608          l_rulv_rec.rule_information3         := l_eot_absorbed_fee_frml;
16609          l_rulv_rec.rule_information_category := 'AMAFEE';
16610          l_rulv_rec.std_template_yn           := 'N';
16611          l_rulv_rec.warn_yn                   := 'N';
16612       END IF;
16613 
16614       create_rule_group_and_rule(
16615                                  x_return_status => x_return_status,
16616                                  x_msg_count     => x_msg_count,
16617                                  x_msg_data      => x_msg_data,
16618                                  p_rgp_id        => l_rgp_id,
16619                                  p_rgpv_rec      => l_rgpv_rec,
16620                                  p_rulv_rec      => l_rulv_rec,
16621                                  x_rgpv_rec      => x_rgpv_rec,
16622                                  x_rulv_rec      => x_rulv_rec
16623                                 );
16624 
16625       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16626           raise header_rule_failed;
16627       END IF;
16628 
16629       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
16630          l_rgp_id := x_rgpv_rec.id;
16631       END IF;
16632 
16633       debug_message('------>Rule: AMTFWC/AMAFEE processed');
16634 
16635       l_rulv_rec := NULL;
16636 
16637       l_eot_expense_fee_frml := p_header_rec.eot_expense_fee_frml;
16638 
16639       IF (l_eot_expense_fee_frml IS NULL
16640           AND
16641           p_header_rec.template_number IS NOT NULL) THEN
16642          get_contract_rules(
16643                             x_return_status  => x_return_status,
16644                             x_msg_count      => x_msg_count,
16645                             x_msg_data       => x_msg_data,
16646                             p_chr_id         => p_template_id,
16647                             p_cle_id         => NULL,
16648                             p_rgd_code       => 'AMTFWC',
16649                             p_rule_code      => 'AMEFEE',
16650                             x_rulv_tbl       => l_rulv_tbl,
16651                             x_rule_count     => l_rule_count
16652                            );
16653 
16654          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16655             RAISE header_rule_failed;
16656          END IF;
16657 
16658          IF (l_rule_count > 0) THEN
16659             l_eot_expense_fee_frml   := l_rulv_tbl(1).rule_information3;
16660          END IF;
16661       END IF;
16662 
16663       IF (l_eot_expense_fee_frml IS NOT NULL) THEN
16664          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16665          l_rulv_rec.dnz_chr_id                := p_chr_id;
16666          l_rulv_rec.rule_information3         := l_eot_expense_fee_frml;
16667          l_rulv_rec.rule_information_category := 'AMEFEE';
16668          l_rulv_rec.std_template_yn           := 'N';
16669          l_rulv_rec.warn_yn                   := 'N';
16670       END IF;
16671 
16672       create_rule_group_and_rule(
16673                                  x_return_status => x_return_status,
16674                                  x_msg_count     => x_msg_count,
16675                                  x_msg_data      => x_msg_data,
16676                                  p_rgp_id        => l_rgp_id,
16677                                  p_rgpv_rec      => l_rgpv_rec,
16678                                  p_rulv_rec      => l_rulv_rec,
16679                                  x_rgpv_rec      => x_rgpv_rec,
16680                                  x_rulv_rec      => x_rulv_rec
16681                                 );
16682 
16683       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16684           raise header_rule_failed;
16685       END IF;
16686 
16687       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
16688          l_rgp_id := x_rgpv_rec.id;
16689       END IF;
16690 
16691       debug_message('------>Rule: AMTFWC/AMEFEE processed');
16692 
16693       l_rulv_rec := NULL;
16694 
16695       l_eot_financed_fee_frml := p_header_rec.eot_financed_fee_frml;
16696 
16697       IF (l_eot_financed_fee_frml IS NULL
16698           AND
16699           p_header_rec.template_number IS NOT NULL) THEN
16700          get_contract_rules(
16701                             x_return_status  => x_return_status,
16702                             x_msg_count      => x_msg_count,
16703                             x_msg_data       => x_msg_data,
16704                             p_chr_id         => p_template_id,
16705                             p_cle_id         => NULL,
16706                             p_rgd_code       => 'AMTFWC',
16707                             p_rule_code      => 'AMFFEE',
16708                             x_rulv_tbl       => l_rulv_tbl,
16709                             x_rule_count     => l_rule_count
16710                            );
16711 
16712          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16713             RAISE header_rule_failed;
16714          END IF;
16715 
16716          IF (l_rule_count > 0) THEN
16717             l_eot_financed_fee_frml   := l_rulv_tbl(1).rule_information3;
16718          END IF;
16719       END IF;
16720 
16721       IF (l_eot_financed_fee_frml IS NOT NULL) THEN
16722          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16723          l_rulv_rec.dnz_chr_id                := p_chr_id;
16724          l_rulv_rec.rule_information3         := l_eot_financed_fee_frml;
16725          l_rulv_rec.rule_information_category := 'AMFFEE';
16726          l_rulv_rec.std_template_yn           := 'N';
16727          l_rulv_rec.warn_yn                   := 'N';
16728       END IF;
16729 
16730       create_rule_group_and_rule(
16731                                  x_return_status => x_return_status,
16732                                  x_msg_count     => x_msg_count,
16733                                  x_msg_data      => x_msg_data,
16734                                  p_rgp_id        => l_rgp_id,
16735                                  p_rgpv_rec      => l_rgpv_rec,
16736                                  p_rulv_rec      => l_rulv_rec,
16737                                  x_rgpv_rec      => x_rgpv_rec,
16738                                  x_rulv_rec      => x_rulv_rec
16739                                 );
16740 
16741       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16742           raise header_rule_failed;
16743       END IF;
16744 
16745       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
16746          l_rgp_id := x_rgpv_rec.id;
16747       END IF;
16748 
16749       debug_message('------>Rule: AMTFWC/AMFFEE processed');
16750 
16751       l_rulv_rec := NULL;
16752 
16753       l_eot_general_fee_frml := p_header_rec.eot_general_fee_frml;
16754 
16755       IF (l_eot_general_fee_frml IS NULL
16756           AND
16757           p_header_rec.template_number IS NOT NULL) THEN
16758          get_contract_rules(
16759                             x_return_status  => x_return_status,
16760                             x_msg_count      => x_msg_count,
16761                             x_msg_data       => x_msg_data,
16762                             p_chr_id         => p_template_id,
16763                             p_cle_id         => NULL,
16764                             p_rgd_code       => 'AMTFWC',
16765                             p_rule_code      => 'AMGFEE',
16766                             x_rulv_tbl       => l_rulv_tbl,
16767                             x_rule_count     => l_rule_count
16768                            );
16769 
16770          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16771             RAISE header_rule_failed;
16772          END IF;
16773 
16774          IF (l_rule_count > 0) THEN
16775             l_eot_general_fee_frml   := l_rulv_tbl(1).rule_information3;
16776          END IF;
16777       END IF;
16778 
16779       IF (l_eot_general_fee_frml IS NOT NULL) THEN
16780          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16781          l_rulv_rec.dnz_chr_id                := p_chr_id;
16782          l_rulv_rec.rule_information3         := l_eot_general_fee_frml;
16783          l_rulv_rec.rule_information_category := 'AMGFEE';
16784          l_rulv_rec.std_template_yn           := 'N';
16785          l_rulv_rec.warn_yn                   := 'N';
16786       END IF;
16787 
16788       create_rule_group_and_rule(
16789                                  x_return_status => x_return_status,
16790                                  x_msg_count     => x_msg_count,
16791                                  x_msg_data      => x_msg_data,
16792                                  p_rgp_id        => l_rgp_id,
16793                                  p_rgpv_rec      => l_rgpv_rec,
16794                                  p_rulv_rec      => l_rulv_rec,
16795                                  x_rgpv_rec      => x_rgpv_rec,
16796                                  x_rulv_rec      => x_rulv_rec
16797                                 );
16798 
16799       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16800           raise header_rule_failed;
16801       END IF;
16802 
16803       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
16804          l_rgp_id := x_rgpv_rec.id;
16805       END IF;
16806 
16807       debug_message('------>Rule: AMTFWC/AMGFEE processed');
16808 
16809       l_rulv_rec := NULL;
16810 
16811       l_eot_income_fee_frml := p_header_rec.eot_income_fee_frml;
16812 
16813       IF (l_eot_income_fee_frml IS NULL
16814           AND
16815           p_header_rec.template_number IS NOT NULL) THEN
16816          get_contract_rules(
16817                             x_return_status  => x_return_status,
16818                             x_msg_count      => x_msg_count,
16819                             x_msg_data       => x_msg_data,
16820                             p_chr_id         => p_template_id,
16821                             p_cle_id         => NULL,
16822                             p_rgd_code       => 'AMTFWC',
16823                             p_rule_code      => 'AMIFEE',
16824                             x_rulv_tbl       => l_rulv_tbl,
16825                             x_rule_count     => l_rule_count
16826                            );
16827 
16828          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16829             RAISE header_rule_failed;
16830          END IF;
16831 
16832          IF (l_rule_count > 0) THEN
16833             l_eot_income_fee_frml   := l_rulv_tbl(1).rule_information3;
16834          END IF;
16835       END IF;
16836 
16837       IF (l_eot_income_fee_frml IS NOT NULL) THEN
16838          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16839          l_rulv_rec.dnz_chr_id                := p_chr_id;
16840          l_rulv_rec.rule_information3         := l_eot_income_fee_frml;
16841          l_rulv_rec.rule_information_category := 'AMIFEE';
16842          l_rulv_rec.std_template_yn           := 'N';
16843          l_rulv_rec.warn_yn                   := 'N';
16844       END IF;
16845 
16846       create_rule_group_and_rule(
16847                                  x_return_status => x_return_status,
16848                                  x_msg_count     => x_msg_count,
16849                                  x_msg_data      => x_msg_data,
16850                                  p_rgp_id        => l_rgp_id,
16851                                  p_rgpv_rec      => l_rgpv_rec,
16852                                  p_rulv_rec      => l_rulv_rec,
16853                                  x_rgpv_rec      => x_rgpv_rec,
16854                                  x_rulv_rec      => x_rulv_rec
16855                                 );
16856 
16857       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16858           raise header_rule_failed;
16859       END IF;
16860 
16861       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
16862          l_rgp_id := x_rgpv_rec.id;
16863       END IF;
16864 
16865       debug_message('------>Rule: AMTFWC/AMIFEE processed');
16866 
16867       l_rulv_rec := NULL;
16868 
16869       l_eot_misc_fee_frml := p_header_rec.eot_misc_fee_frml;
16870 
16871       IF (l_eot_misc_fee_frml IS NULL
16872           AND
16873           p_header_rec.template_number IS NOT NULL) THEN
16874          get_contract_rules(
16875                             x_return_status  => x_return_status,
16876                             x_msg_count      => x_msg_count,
16877                             x_msg_data       => x_msg_data,
16878                             p_chr_id         => p_template_id,
16879                             p_cle_id         => NULL,
16880                             p_rgd_code       => 'AMTFWC',
16881                             p_rule_code      => 'AMMFEE',
16882                             x_rulv_tbl       => l_rulv_tbl,
16883                             x_rule_count     => l_rule_count
16884                            );
16885 
16886          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16887             RAISE header_rule_failed;
16888          END IF;
16889 
16890          IF (l_rule_count > 0) THEN
16891             l_eot_misc_fee_frml   := l_rulv_tbl(1).rule_information3;
16892          END IF;
16893       END IF;
16894 
16895       IF (l_eot_misc_fee_frml IS NOT NULL) THEN
16896          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16897          l_rulv_rec.dnz_chr_id                := p_chr_id;
16898          l_rulv_rec.rule_information3         := l_eot_misc_fee_frml;
16899          l_rulv_rec.rule_information_category := 'AMMFEE';
16900          l_rulv_rec.std_template_yn           := 'N';
16901          l_rulv_rec.warn_yn                   := 'N';
16902       END IF;
16903 
16904       create_rule_group_and_rule(
16905                                  x_return_status => x_return_status,
16906                                  x_msg_count     => x_msg_count,
16907                                  x_msg_data      => x_msg_data,
16908                                  p_rgp_id        => l_rgp_id,
16909                                  p_rgpv_rec      => l_rgpv_rec,
16910                                  p_rulv_rec      => l_rulv_rec,
16911                                  x_rgpv_rec      => x_rgpv_rec,
16912                                  x_rulv_rec      => x_rulv_rec
16913                                 );
16914 
16915       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16916           raise header_rule_failed;
16917       END IF;
16918 
16919       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
16920          l_rgp_id := x_rgpv_rec.id;
16921       END IF;
16922 
16923       debug_message('------>Rule: AMTFWC/AMMFEE processed');
16924 
16925       l_rulv_rec := NULL;
16926 
16927       l_eot_passthru_fee_frml := p_header_rec.eot_passthru_fee_frml;
16928 
16929       IF (l_eot_passthru_fee_frml IS NULL
16930           AND
16931           p_header_rec.template_number IS NOT NULL) THEN
16932          get_contract_rules(
16933                             x_return_status  => x_return_status,
16934                             x_msg_count      => x_msg_count,
16935                             x_msg_data       => x_msg_data,
16936                             p_chr_id         => p_template_id,
16937                             p_cle_id         => NULL,
16938                             p_rgd_code       => 'AMTFWC',
16939                             p_rule_code      => 'AMPFEE',
16940                             x_rulv_tbl       => l_rulv_tbl,
16941                             x_rule_count     => l_rule_count
16942                            );
16943 
16944          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16945             RAISE header_rule_failed;
16946          END IF;
16947 
16948          IF (l_rule_count > 0) THEN
16949             l_eot_passthru_fee_frml   := l_rulv_tbl(1).rule_information3;
16950          END IF;
16951       END IF;
16952 
16953       IF (l_eot_passthru_fee_frml IS NOT NULL) THEN
16954          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16955          l_rulv_rec.dnz_chr_id                := p_chr_id;
16956          l_rulv_rec.rule_information3         := l_eot_passthru_fee_frml;
16957          l_rulv_rec.rule_information_category := 'AMPFEE';
16958          l_rulv_rec.std_template_yn           := 'N';
16959          l_rulv_rec.warn_yn                   := 'N';
16960       END IF;
16961 
16962       create_rule_group_and_rule(
16963                                  x_return_status => x_return_status,
16964                                  x_msg_count     => x_msg_count,
16965                                  x_msg_data      => x_msg_data,
16966                                  p_rgp_id        => l_rgp_id,
16967                                  p_rgpv_rec      => l_rgpv_rec,
16968                                  p_rulv_rec      => l_rulv_rec,
16969                                  x_rgpv_rec      => x_rgpv_rec,
16970                                  x_rulv_rec      => x_rulv_rec
16971                                 );
16972 
16973       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16974           raise header_rule_failed;
16975       END IF;
16976 
16977       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
16978          l_rgp_id := x_rgpv_rec.id;
16979       END IF;
16980 
16981       debug_message('------>Rule: AMTFWC/AMPFEE processed');
16982 
16983       l_rulv_rec := NULL;
16984 
16985       l_eot_rollover_fee_frml := p_header_rec.eot_rollover_fee_frml;
16986 
16987       IF (l_eot_rollover_fee_frml IS NULL
16988           AND
16989           p_header_rec.template_number IS NOT NULL) THEN
16990          get_contract_rules(
16991                             x_return_status  => x_return_status,
16992                             x_msg_count      => x_msg_count,
16993                             x_msg_data       => x_msg_data,
16994                             p_chr_id         => p_template_id,
16995                             p_cle_id         => NULL,
16996                             p_rgd_code       => 'AMTFWC',
16997                             p_rule_code      => 'AMRFEE',
16998                             x_rulv_tbl       => l_rulv_tbl,
16999                             x_rule_count     => l_rule_count
17000                            );
17001 
17002          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17003             RAISE header_rule_failed;
17004          END IF;
17005 
17006          IF (l_rule_count > 0) THEN
17007             l_eot_rollover_fee_frml   := l_rulv_tbl(1).rule_information3;
17008          END IF;
17009       END IF;
17010 
17011       IF (l_eot_rollover_fee_frml IS NOT NULL) THEN
17012          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17013          l_rulv_rec.dnz_chr_id                := p_chr_id;
17014          l_rulv_rec.rule_information3         := l_eot_rollover_fee_frml;
17015          l_rulv_rec.rule_information_category := 'AMRFEE';
17016          l_rulv_rec.std_template_yn           := 'N';
17017          l_rulv_rec.warn_yn                   := 'N';
17018       END IF;
17019 
17020       create_rule_group_and_rule(
17021                                  x_return_status => x_return_status,
17022                                  x_msg_count     => x_msg_count,
17023                                  x_msg_data      => x_msg_data,
17024                                  p_rgp_id        => l_rgp_id,
17025                                  p_rgpv_rec      => l_rgpv_rec,
17026                                  p_rulv_rec      => l_rulv_rec,
17027                                  x_rgpv_rec      => x_rgpv_rec,
17028                                  x_rulv_rec      => x_rulv_rec
17029                                 );
17030 
17031       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17032           raise header_rule_failed;
17033       END IF;
17034 
17035       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
17036          l_rgp_id := x_rgpv_rec.id;
17037       END IF;
17038 
17039       debug_message('------>Rule: AMTFWC/AMRFEE processed');
17040       /**** AKP Copied to here for AMTFWC 4067094 ***/
17041 
17042 /*
17043  * Adding Lien and Title Rules at contract header
17044  *
17045 */
17046       -- Rule Group LAAFLG
17047 
17048       l_rgpv_rec            := NULL;
17049       l_rgp_id              := NULL;
17050       l_rgpv_rec.rgd_code   := 'LAAFLG';
17051       l_rgpv_rec.chr_id     := p_chr_id;
17052       l_rgpv_rec.dnz_chr_id := p_chr_id;
17053       l_rgpv_rec.cle_id     := NULL;
17054       l_rgpv_rec.rgp_type   := 'KRG';
17055 
17056       l_rulv_rec := NULL;
17057 
17058       IF (p_header_rec.lien_holder_name IS NOT NULL
17059           OR
17060           p_header_rec.lien_holder_id IS NOT NULL) THEN
17061 
17062           l_lien_holder_id := get_lien_holder(
17063                                               x_return_status    => x_return_status,
17064                                               p_lien_holder_name => p_header_rec.lien_holder_name,
17065                                               p_lien_holder_id   => p_header_rec.lien_holder_id
17066                                              );
17067           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17068              okl_api.set_message(
17069                     G_APP_NAME,
17070                     G_INVALID_VALUE,
17071                     'CONTRACT_NUM',
17072                     p_header_rec.contract_number_old,
17073                     'COL_NAME',
17074                     'LIEN_HOLDER_NAME, ID',
17075                     'COL_VALUE',
17076                     p_header_rec.lien_holder_name||', '||p_header_rec.lien_holder_id
17077                    );
17078              RAISE header_rule_failed;
17079           END IF;
17080 
17081       END IF;
17082 
17083       l_lien_type                := p_header_rec.lien_type;
17084       l_filing_number            := p_header_rec.filing_number;
17085       l_filing_date              := get_canonicaL_date(p_header_rec.filing_date);
17086       l_filing_status            := p_header_rec.filing_status ;
17087       l_jurisdiction             := p_header_rec.jurisdiction ;
17088       l_sub_jurisdiction         := p_header_rec.sub_jurisdiction ;
17089       l_lien_expiration_date     := get_canonicaL_date(p_header_rec.lien_expiration_date);
17090       l_lien_continuation_number := p_header_rec.lien_continuation_number;
17091       l_lien_continuation_date   := get_canonicaL_date(p_header_rec.lien_continuation_date);
17092 
17093       IF (l_lien_type IS NULL
17094           OR
17095           l_filing_number IS NULL
17096           OR
17097           l_filing_date IS NULL
17098           OR
17099           l_filing_status IS NULL
17100           OR
17101           l_lien_holder_id IS NULL
17102           OR
17103           l_jurisdiction IS NULL
17104           OR
17105           l_sub_jurisdiction IS NULL
17106           OR
17107           l_lien_expiration_date IS NULL
17108           OR
17109           l_lien_continuation_number IS NULL
17110           OR
17111           l_lien_continuation_date IS NULL
17112           AND
17113           p_header_rec.template_number IS NOT NULL) THEN
17114 
17115          get_contract_rules(
17116                             x_return_status  => x_return_status,
17117                             x_msg_count      => x_msg_count,
17118                             x_msg_data       => x_msg_data,
17119                             p_chr_id         => p_template_id,
17120                             p_cle_id         => NULL,
17121                             p_rgd_code       => 'LAAFLG',
17122                             p_rule_code      => 'LAFLLN',
17123                             x_rulv_tbl       => l_rulv_tbl,
17124                             x_rule_count     => l_rule_count
17125                            );
17126 
17127          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17128             RAISE header_rule_failed;
17129          END IF;
17130 
17131          IF (l_rule_count > 0) THEN
17132             l_lien_type                := NVL(l_lien_type, l_Rulv_tbl(1).rule_information1);
17133             l_filing_number            := NVL(l_filing_number, l_rulv_tbl(1).rule_information2);
17134             l_filing_date              := NVL(l_filing_date, l_rulv_tbl(1).rule_information3);
17135             l_filing_status            := NVL(l_filing_status, l_rulv_tbl(1).rule_information4);
17136             l_jurisdiction             := NVL(l_jurisdiction, l_rulv_tbl(1).rule_information5);
17137             l_sub_jurisdiction         := NVL(l_sub_jurisdiction, l_rulv_tbl(1).rule_information6);
17138             l_lien_expiration_date     := NVL(l_lien_expiration_date, l_rulv_tbl(1).rule_information7);
17139             l_lien_continuation_number := NVL(l_lien_continuation_number, l_rulv_tbl(1).rule_information8);
17140             l_lien_continuation_date   := NVL(l_lien_continuation_date, l_rulv_tbl(1).rule_information9);
17141             l_lien_holder_id           := NVL(l_lien_holder_id, l_rulv_tbl(1).object1_id1);
17142          END IF;
17143       END IF;
17144 
17145       IF (l_lien_type IS NOT NULL) THEN
17146          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17147          l_rulv_rec.dnz_chr_id                := p_chr_id;
17148          l_rulv_rec.rule_information1         := l_lien_type;
17149          l_rulv_rec.rule_information_category := 'LAFLLN';
17150          l_rulv_rec.std_template_yn           := 'N';
17151          l_rulv_rec.warn_yn                   := 'N';
17152       END IF;
17153 
17154       IF (l_filing_number IS NOT NULL) THEN
17155          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17156          l_rulv_rec.dnz_chr_id                := p_chr_id;
17157          l_rulv_rec.rule_information2         := l_filing_number;
17158          l_rulv_rec.rule_information_category := 'LAFLLN';
17159          l_rulv_rec.std_template_yn           := 'N';
17160          l_rulv_rec.warn_yn                   := 'N';
17161       END IF;
17162 
17163       IF (l_filing_date IS NOT NULL) THEN
17164          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17165          l_rulv_rec.dnz_chr_id                := p_chr_id;
17166          l_rulv_rec.rule_information3         := l_filing_date;
17167          l_rulv_rec.rule_information_category := 'LAFLLN';
17168          l_rulv_rec.std_template_yn           := 'N';
17169          l_rulv_rec.warn_yn                   := 'N';
17170       END IF;
17171 
17172       IF (l_filing_status IS NOT NULL) THEN
17173          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17174          l_rulv_rec.dnz_chr_id                := p_chr_id;
17175          l_rulv_rec.rule_information4         := l_filing_status;
17176          l_rulv_rec.rule_information_category := 'LAFLLN';
17177          l_rulv_rec.std_template_yn           := 'N';
17178          l_rulv_rec.warn_yn                   := 'N';
17179       END IF;
17180 
17181       IF (l_jurisdiction IS NOT NULL) THEN
17182          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17183          l_rulv_rec.dnz_chr_id                := p_chr_id;
17184          l_rulv_rec.rule_information5         := l_jurisdiction;
17185          l_rulv_rec.rule_information_category := 'LAFLLN';
17186          l_rulv_rec.std_template_yn           := 'N';
17187          l_rulv_rec.warn_yn                   := 'N';
17188       END IF;
17189 
17190       IF (l_sub_jurisdiction IS NOT NULL) THEN
17191          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17192          l_rulv_rec.dnz_chr_id                := p_chr_id;
17193          l_rulv_rec.rule_information6         := l_sub_jurisdiction;
17194          l_rulv_rec.rule_information_category := 'LAFLLN';
17195          l_rulv_rec.std_template_yn           := 'N';
17196          l_rulv_rec.warn_yn                   := 'N';
17197       END IF;
17198 
17199       IF (l_lien_expiration_date IS NOT NULL) THEN
17200          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17201          l_rulv_rec.dnz_chr_id                := p_chr_id;
17202          l_rulv_rec.rule_information7         := l_lien_expiration_date;
17203          l_rulv_rec.rule_information_category := 'LAFLLN';
17204          l_rulv_rec.std_template_yn           := 'N';
17205          l_rulv_rec.warn_yn                   := 'N';
17206       END IF;
17207 
17208       IF (l_lien_continuation_number IS NOT NULL) THEN
17209          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17210          l_rulv_rec.dnz_chr_id                := p_chr_id;
17211          l_rulv_rec.rule_information8         := l_lien_continuation_number;
17212          l_rulv_rec.rule_information_category := 'LAFLLN';
17213          l_rulv_rec.std_template_yn           := 'N';
17214          l_rulv_rec.warn_yn                   := 'N';
17215       END IF;
17216 
17217       IF (l_lien_continuation_date IS NOT NULL) THEN
17218          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17219          l_rulv_rec.dnz_chr_id                := p_chr_id;
17220          l_rulv_rec.rule_information9         := l_lien_continuation_date;
17221          l_rulv_rec.rule_information_category := 'LAFLLN';
17222          l_rulv_rec.std_template_yn           := 'N';
17223          l_rulv_rec.warn_yn                   := 'N';
17224       END IF;
17225 
17226       IF (l_lien_holder_id  IS NOT NULL) THEN
17227          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17228          l_rulv_rec.dnz_chr_id                := p_chr_id;
17229          l_rulv_rec.jtot_object1_code         := 'OKX_PARTY';
17230          l_rulv_rec.object1_id1               := l_lien_holder_id;
17231          l_rulv_rec.object1_id2               := '#';
17232          l_rulv_rec.rule_information_category := 'LAFLLN';
17233          l_rulv_rec.std_template_yn           := 'N';
17234          l_rulv_rec.warn_yn                   := 'N';
17235       END IF;
17236 
17237       create_rule_group_and_rule(
17238                                  x_return_status => x_return_status,
17239                                  x_msg_count     => x_msg_count,
17240                                  x_msg_data      => x_msg_data,
17241                                  p_rgp_id        => l_rgp_id,
17242                                  p_rgpv_rec      => l_rgpv_rec,
17243                                  p_rulv_rec      => l_rulv_rec,
17244                                  x_rgpv_rec      => x_rgpv_rec,
17245                                  x_rulv_rec      => x_rulv_rec
17246                                 );
17247 
17248       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17249           raise header_rule_failed;
17250       END IF;
17251 
17252       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
17253          l_rgp_id := x_rgpv_rec.id;
17254       END IF;
17255       debug_message('------>Rule: LAAFLG/LAFLLN processed');
17256       l_rulv_rec := NULL;
17257 
17258       l_title_type               := p_header_rec.title_type ;
17259       l_title_issuer_name        := p_header_rec.title_issuer_name ;
17260       l_title_issuer_id          := p_header_rec.title_issuer_id ;
17261       l_title_date               := get_canonicaL_date(p_header_rec.title_date);
17262       l_title_number             := p_header_rec.title_number ;
17263       l_registration_number      := p_header_rec.registration_number ;
17264       l_location                 := p_header_rec.location ;
17265       l_title_custodian_name     := p_header_rec.title_custodian_name ;
17266       l_title_custodian_id       := p_header_rec.title_custodian_id ;
17267       l_payee_site               := p_header_rec.payee_site ;
17268       l_registration_location    := p_header_rec.registration_location ;
17269       l_reg_expiration_date      := get_canonicaL_date(p_header_rec.reg_expiration_date);
17270 
17271       x_title_issuer_id := NULL;
17272       IF (l_title_issuer_name IS NOT NULL
17273           OR
17274           l_title_issuer_id IS NOT NULL) THEN
17275 
17276               get_party_id(
17277                   x_return_status     => x_return_status,
17278                   x_msg_count         => x_msg_count,
17279                   x_msg_data          => x_msg_data,
17280                   p_contract_number   => p_header_rec.contract_number_old,
17281                   p_line_number       => NULL,
17282                   p_party_id          => l_title_issuer_id,
17283                   p_party_number      => l_title_issuer_name,
17284                   x_party_id          => x_title_issuer_id
17285                  );
17286 
17287              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17288                 RAISE header_rule_failed;
17289              END IF;
17290       END IF;
17291 
17292       x_title_custodian_id := NULL;
17293       IF (l_title_custodian_name IS NOT NULL
17294           OR
17295           l_title_custodian_id IS NOT NULL) THEN
17296 
17297               get_party_id(
17298                   x_return_status     => x_return_status,
17299                   x_msg_count         => x_msg_count,
17300                   x_msg_data          => x_msg_data,
17301                   p_contract_number   => p_header_rec.contract_number_old,
17302                   p_line_number       => NULL,
17303                   p_party_id          => l_title_custodian_id,
17304                   p_party_number      => l_title_custodian_name,
17305                   x_party_id          => x_title_custodian_id
17306                  );
17307 
17308              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17309                 RAISE header_rule_failed;
17310              END IF;
17311       END IF;
17312 
17313       IF (l_title_type IS NULL
17314           OR
17315           x_title_issuer_id IS NULL
17316           OR
17317           l_title_date IS NULL
17318           OR
17319           l_title_number IS NULL
17320           OR
17321           l_registration_number IS NULL
17322           OR
17323           l_location IS NULL
17324           OR
17325           x_title_custodian_id IS NULL
17326           OR
17327           l_payee_site IS NULL
17328           OR
17329           l_registration_location IS NULL
17330           OR
17331           l_reg_expiration_date IS NULL
17332           AND
17333           p_header_rec.template_number IS NOT NULL) THEN
17334          get_contract_rules(
17335                             x_return_status  => x_return_status,
17336                             x_msg_count      => x_msg_count,
17337                             x_msg_data       => x_msg_data,
17338                             p_chr_id         => p_template_id,
17339                             p_cle_id         => NULL,
17340                             p_rgd_code       => 'LAAFLG',
17341                             p_rule_code      => 'LAFLTL',
17342                             x_rulv_tbl       => l_rulv_tbl,
17343                             x_rule_count     => l_rule_count
17344                            );
17345 
17346          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17347             RAISE header_rule_failed;
17348          END IF;
17349 
17350          IF (l_rule_count > 0) THEN
17351             l_title_type               := NVL(l_title_type, l_rulv_tbl(1).rule_information1);
17352             l_title_issuer_id          := NVL(x_title_issuer_id, l_rulv_tbl(1).object1_id1);
17353             l_title_date               := NVL(l_title_date, l_rulv_tbl(1).rule_information2);
17354             l_title_number             := NVL(l_title_number, l_rulv_tbl(1).rule_information3);
17355             l_registration_number      := NVL(l_registration_number, l_rulv_tbl(1).rule_information4);
17356             l_location                 := NVL(l_location, l_rulv_tbl(1).rule_information5);
17357             l_title_custodian_id       := NVL(x_title_custodian_id, l_rulv_tbl(1).object2_id1);
17358             l_payee_site               := NVL(l_payee_site, l_rulv_tbl(1).rule_information6);
17359             l_registration_location    := NVL(l_registration_location, l_rulv_tbl(1).rule_information7);
17360             l_reg_expiration_date      := NVL(l_reg_expiration_date, l_rulv_tbl(1).rule_information8);
17361          END IF;
17362       END IF;
17363 
17364       IF (l_title_type IS NOT NULL) THEN
17365          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17366          l_rulv_rec.dnz_chr_id                := p_chr_id;
17367          l_rulv_rec.rule_information1         := l_title_type;
17368          l_rulv_rec.rule_information_category := 'LAFLTL';
17369          l_rulv_rec.std_template_yn           := 'N';
17370          l_rulv_rec.warn_yn                   := 'N';
17371       END IF;
17372 
17373       IF (l_title_date IS NOT NULL) THEN
17374          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17375          l_rulv_rec.dnz_chr_id                := p_chr_id;
17376          l_rulv_rec.rule_information2         := l_title_date;
17377          l_rulv_rec.rule_information_category := 'LAFLTL';
17378          l_rulv_rec.std_template_yn           := 'N';
17379          l_rulv_rec.warn_yn                   := 'N';
17380       END IF;
17381 
17382       IF (l_title_number IS NOT NULL) THEN
17383          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17384          l_rulv_rec.dnz_chr_id                := p_chr_id;
17385          l_rulv_rec.rule_information3         := l_title_number;
17386          l_rulv_rec.rule_information_category := 'LAFLTL';
17387          l_rulv_rec.std_template_yn           := 'N';
17388          l_rulv_rec.warn_yn                   := 'N';
17389       END IF;
17390 
17391       IF (l_registration_number IS NOT NULL) THEN
17392          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17393          l_rulv_rec.dnz_chr_id                := p_chr_id;
17394          l_rulv_rec.rule_information4         := l_registration_number;
17395          l_rulv_rec.rule_information_category := 'LAFLTL';
17396          l_rulv_rec.std_template_yn           := 'N';
17397          l_rulv_rec.warn_yn                   := 'N';
17398       END IF;
17399 
17400       IF (l_location IS NOT NULL) THEN
17401          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17402          l_rulv_rec.dnz_chr_id                := p_chr_id;
17403          l_rulv_rec.rule_information5         := l_location;
17404          l_rulv_rec.rule_information_category := 'LAFLTL';
17405          l_rulv_rec.std_template_yn           := 'N';
17406          l_rulv_rec.warn_yn                   := 'N';
17407       END IF;
17408 
17409       IF (l_payee_site IS NOT NULL) THEN
17410          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17411          l_rulv_rec.dnz_chr_id                := p_chr_id;
17412          l_rulv_rec.rule_information6         := l_payee_site;
17413          l_rulv_rec.rule_information_category := 'LAFLTL';
17414          l_rulv_rec.std_template_yn           := 'N';
17415          l_rulv_rec.warn_yn                   := 'N';
17416       END IF;
17417 
17418       IF (l_registration_location IS NOT NULL) THEN
17419          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17420          l_rulv_rec.dnz_chr_id                := p_chr_id;
17421          l_rulv_rec.rule_information7         := l_registration_location;
17422          l_rulv_rec.rule_information_category := 'LAFLTL';
17423          l_rulv_rec.std_template_yn           := 'N';
17424          l_rulv_rec.warn_yn                   := 'N';
17425       END IF;
17426 
17427       IF (l_reg_expiration_date IS NOT NULL) THEN
17428          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17429          l_rulv_rec.dnz_chr_id                := p_chr_id;
17430          l_rulv_rec.rule_information8         := l_reg_expiration_date;
17431          l_rulv_rec.rule_information_category := 'LAFLTL';
17432          l_rulv_rec.std_template_yn           := 'N';
17433          l_rulv_rec.warn_yn                   := 'N';
17434       END IF;
17435 
17436       IF (l_title_issuer_id  IS NOT NULL) THEN
17437          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17438          l_rulv_rec.dnz_chr_id                := p_chr_id;
17439          l_rulv_rec.jtot_object1_code         := 'OKX_PARTY';
17440          l_rulv_rec.object1_id1               := x_title_issuer_id;
17441          l_rulv_rec.object1_id2               := '#';
17442          l_rulv_rec.rule_information_category := 'LAFLTL';
17443          l_rulv_rec.std_template_yn           := 'N';
17444          l_rulv_rec.warn_yn                   := 'N';
17445       END IF;
17446 
17447       IF (l_title_custodian_id  IS NOT NULL) THEN
17448          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17449          l_rulv_rec.dnz_chr_id                := p_chr_id;
17450          l_rulv_rec.jtot_object1_code         := 'OKX_PARTY';
17451          l_rulv_rec.object2_id1               := x_title_custodian_id;
17452          l_rulv_rec.object2_id2               := '#';
17453          l_rulv_rec.rule_information_category := 'LAFLTL';
17454          l_rulv_rec.std_template_yn           := 'N';
17455          l_rulv_rec.warn_yn                   := 'N';
17456       END IF;
17457 
17458       create_rule_group_and_rule(
17459                                  x_return_status => x_return_status,
17460                                  x_msg_count     => x_msg_count,
17461                                  x_msg_data      => x_msg_data,
17462                                  p_rgp_id        => l_rgp_id,
17463                                  p_rgpv_rec      => l_rgpv_rec,
17464                                  p_rulv_rec      => l_rulv_rec,
17465                                  x_rgpv_rec      => x_rgpv_rec,
17466                                  x_rulv_rec      => x_rulv_rec
17467                                 );
17468 
17469       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17470           raise header_rule_failed;
17471       END IF;
17472 
17473       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
17474          l_rgp_id := x_rgpv_rec.id;
17475       END IF;
17476       debug_message('------>Rule: LAAFLG/LAFLTL processed');
17477 
17478 /*
17479  * Adding Contract Portfolio Rules at contract header
17480  *
17481 */
17482       -- Rule Group AMCOPO
17483 
17484       l_rgpv_rec            := NULL;
17485       l_rgp_id              := NULL;
17486       l_rgpv_rec.rgd_code   := 'AMCOPO';
17487       l_rgpv_rec.chr_id     := p_chr_id;
17488       l_rgpv_rec.dnz_chr_id := p_chr_id;
17489       l_rgpv_rec.cle_id     := NULL;
17490       l_rgpv_rec.rgp_type   := 'KRG';
17491 
17492       l_rulv_rec := NULL;
17493 
17494       l_prtfl_approval_req := p_header_rec.prtfl_approval_req;
17495 
17496       IF (l_prtfl_approval_req IS NULL
17497           AND
17498           p_header_rec.template_number IS NOT NULL) THEN
17499          get_contract_rules(
17500                             x_return_status  => x_return_status,
17501                             x_msg_count      => x_msg_count,
17502                             x_msg_data       => x_msg_data,
17503                             p_chr_id         => p_template_id,
17504                             p_cle_id         => NULL,
17505                             p_rgd_code       => 'AMCOPO',
17506                             p_rule_code      => 'AMAPRE',
17507                             x_rulv_tbl       => l_rulv_tbl,
17508                             x_rule_count     => l_rule_count
17509                            );
17510 
17511          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17512             RAISE header_rule_failed;
17513          END IF;
17514 
17515          IF (l_rule_count > 0) THEN
17516             l_prtfl_approval_req       := NVL(l_prtfl_approval_req, l_rulv_tbl(1).rule_information1);
17517          END IF;
17518       END IF;
17519 
17520       IF (l_prtfl_approval_req IS NOT NULL) THEN
17521          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17522          l_rulv_rec.dnz_chr_id                := p_chr_id;
17523          l_rulv_rec.rule_information1         := l_prtfl_approval_req;
17524          l_rulv_rec.rule_information_category := 'AMAPRE';
17525          l_rulv_rec.std_template_yn           := 'N';
17526          l_rulv_rec.warn_yn                   := 'N';
17527       END IF;
17528 
17529       create_rule_group_and_rule(
17530                                  x_return_status => x_return_status,
17531                                  x_msg_count     => x_msg_count,
17532                                  x_msg_data      => x_msg_data,
17533                                  p_rgp_id        => l_rgp_id,
17534                                  p_rgpv_rec      => l_rgpv_rec,
17535                                  p_rulv_rec      => l_rulv_rec,
17536                                  x_rgpv_rec      => x_rgpv_rec,
17537                                  x_rulv_rec      => x_rulv_rec
17538                                 );
17539 
17540       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17541           raise header_rule_failed;
17542       END IF;
17543 
17544       debug_message('------>Rule: AMCOPO/AMAPRE processed');
17545 
17546       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
17547          l_rgp_id := x_rgpv_rec.id;
17548       END IF;
17549       l_rulv_rec := NULL;
17550 
17551       l_prtfl_assgn_group := p_header_rec.prtfl_assgn_group;
17552 
17553       IF (l_prtfl_assgn_group IS NULL
17554           AND
17555           p_header_rec.template_number IS NOT NULL) THEN
17556          get_contract_rules(
17557                             x_return_status  => x_return_status,
17558                             x_msg_count      => x_msg_count,
17559                             x_msg_data       => x_msg_data,
17560                             p_chr_id         => p_template_id,
17561                             p_cle_id         => NULL,
17562                             p_rgd_code       => 'AMCOPO',
17563                             p_rule_code      => 'AMPRAG',
17564                             x_rulv_tbl       => l_rulv_tbl,
17565                             x_rule_count     => l_rule_count
17566                            );
17567 
17568          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17569             RAISE header_rule_failed;
17570          END IF;
17571 
17572          IF (l_rule_count > 0) THEN
17573             l_prtfl_assgn_group       := NVL(l_prtfl_assgn_group, l_rulv_tbl(1).rule_information1);
17574          END IF;
17575       END IF;
17576 
17577       IF (l_prtfl_assgn_group IS NOT NULL) THEN
17578          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17579          l_rulv_rec.dnz_chr_id                := p_chr_id;
17580          l_rulv_rec.rule_information1         := l_prtfl_assgn_group;
17581          l_rulv_rec.rule_information_category := 'AMPRAG';
17582          l_rulv_rec.std_template_yn           := 'N';
17583          l_rulv_rec.warn_yn                   := 'N';
17584       END IF;
17585 
17586       create_rule_group_and_rule(
17587                                  x_return_status => x_return_status,
17588                                  x_msg_count     => x_msg_count,
17589                                  x_msg_data      => x_msg_data,
17590                                  p_rgp_id        => l_rgp_id,
17591                                  p_rgpv_rec      => l_rgpv_rec,
17592                                  p_rulv_rec      => l_rulv_rec,
17593                                  x_rgpv_rec      => x_rgpv_rec,
17594                                  x_rulv_rec      => x_rulv_rec
17595                                 );
17596 
17597       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17598           raise header_rule_failed;
17599       END IF;
17600 
17601       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
17602          l_rgp_id := x_rgpv_rec.id;
17603       END IF;
17604       debug_message('------>Rule: AMCOPO/AMPRAG processed');
17605       l_rulv_rec := NULL;
17606 
17607       l_prtfl_budget_amt_opt     := p_header_rec.prtfl_budget_amt_opt;
17608       l_prtfl_budget_fixed_amt   := TO_CHAR(p_header_rec.prtfl_budget_fixed_amt);
17609       l_prtfl_budget_amt_formula := p_header_rec.prtfl_budget_amt_formula;
17610 
17611       IF (l_prtfl_budget_amt_opt IS NULL
17612           OR
17613           l_prtfl_budget_fixed_amt IS NULL
17614           OR
17615           l_prtfl_budget_amt_formula IS NULL
17616           AND
17617           p_header_rec.template_number IS NOT NULL) THEN
17618          get_contract_rules(
17619                             x_return_status  => x_return_status,
17620                             x_msg_count      => x_msg_count,
17621                             x_msg_data       => x_msg_data,
17622                             p_chr_id         => p_template_id,
17623                             p_cle_id         => NULL,
17624                             p_rgd_code       => 'AMCOPO',
17625                             p_rule_code      => 'AMPRBA',
17626                             x_rulv_tbl       => l_rulv_tbl,
17627                             x_rule_count     => l_rule_count
17628                            );
17629 
17630          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17631             RAISE header_rule_failed;
17632          END IF;
17633 
17634          IF (l_rule_count > 0) THEN
17635             l_prtfl_budget_amt_opt     := NVL(l_prtfl_budget_amt_opt, l_rulv_tbl(1).rule_information1);
17636             l_prtfl_budget_fixed_amt   := NVL(l_prtfl_budget_fixed_amt, l_rulv_tbl(1).rule_information2);
17637             l_prtfl_budget_amt_formula := NVL(l_prtfl_budget_amt_formula, l_rulv_tbl(1).rule_information3);
17638          END IF;
17639       END IF;
17640 
17641       IF (l_prtfl_budget_amt_opt = 'NOT_APPLICABLE') THEN -- 4912795
17642         l_prtfl_budget_fixed_amt   := NULL;
17643         l_prtfl_budget_amt_formula := NULL;
17644       END IF;
17645 
17646       IF (l_prtfl_budget_amt_opt IS NOT NULL) THEN
17647          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17648          l_rulv_rec.dnz_chr_id                := p_chr_id;
17649          l_rulv_rec.rule_information1         := l_prtfl_budget_amt_opt;
17650          l_rulv_rec.rule_information_category := 'AMPRBA';
17651          l_rulv_rec.std_template_yn           := 'N';
17652          l_rulv_rec.warn_yn                   := 'N';
17653       END IF;
17654 
17655       IF (l_prtfl_budget_fixed_amt IS NOT NULL) THEN
17656          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17657          l_rulv_rec.dnz_chr_id                := p_chr_id;
17658          l_rulv_rec.rule_information2         := l_prtfl_budget_fixed_amt;
17659          l_rulv_rec.rule_information_category := 'AMPRBA';
17660          l_rulv_rec.std_template_yn           := 'N';
17661          l_rulv_rec.warn_yn                   := 'N';
17662       END IF;
17663 
17664       IF (l_prtfl_budget_amt_formula IS NOT NULL) THEN
17665          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17666          l_rulv_rec.dnz_chr_id                := p_chr_id;
17667          l_rulv_rec.rule_information3         := l_prtfl_budget_amt_formula;
17668          l_rulv_rec.rule_information_category := 'AMPRBA';
17669          l_rulv_rec.std_template_yn           := 'N';
17670          l_rulv_rec.warn_yn                   := 'N';
17671       END IF;
17672 
17673       create_rule_group_and_rule(
17674                                  x_return_status => x_return_status,
17675                                  x_msg_count     => x_msg_count,
17676                                  x_msg_data      => x_msg_data,
17677                                  p_rgp_id        => l_rgp_id,
17678                                  p_rgpv_rec      => l_rgpv_rec,
17679                                  p_rulv_rec      => l_rulv_rec,
17680                                  x_rgpv_rec      => x_rgpv_rec,
17681                                  x_rulv_rec      => x_rulv_rec
17682                                 );
17683 
17684       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17685           raise header_rule_failed;
17686       END IF;
17687 
17688       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
17689          l_rgp_id := x_rgpv_rec.id;
17690       END IF;
17691       debug_message('------>Rule: AMCOPO/AMPRBA processed');
17692       l_rulv_rec := NULL;
17693 
17694       l_prtfl_days_from_con_expr := p_header_rec.prtfl_days_from_con_expr;
17695 
17696       IF (l_prtfl_days_from_con_expr IS NULL
17697           AND
17698           p_header_rec.template_number IS NOT NULL) THEN
17699          get_contract_rules(
17700                             x_return_status  => x_return_status,
17701                             x_msg_count      => x_msg_count,
17702                             x_msg_data       => x_msg_data,
17703                             p_chr_id         => p_template_id,
17704                             p_cle_id         => NULL,
17705                             p_rgd_code       => 'AMCOPO',
17706                             p_rule_code      => 'AMPRED',
17707                             x_rulv_tbl       => l_rulv_tbl,
17708                             x_rule_count     => l_rule_count
17709                            );
17710 
17711          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17712             RAISE header_rule_failed;
17713          END IF;
17714 
17715          IF (l_rule_count > 0) THEN
17716             l_prtfl_days_from_con_expr := NVL(l_prtfl_days_from_con_expr, l_rulv_tbl(1).rule_information1);
17717          END IF;
17718       END IF;
17719 
17720       IF (l_prtfl_days_from_con_expr IS NOT NULL) THEN
17721          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17722          l_rulv_rec.dnz_chr_id                := p_chr_id;
17723          l_rulv_rec.rule_information1         := l_prtfl_days_from_con_expr;
17724          l_rulv_rec.rule_information_category := 'AMPRED';
17725          l_rulv_rec.std_template_yn           := 'N';
17726          l_rulv_rec.warn_yn                   := 'N';
17727       END IF;
17728 
17729       create_rule_group_and_rule(
17730                                  x_return_status => x_return_status,
17731                                  x_msg_count     => x_msg_count,
17732                                  x_msg_data      => x_msg_data,
17733                                  p_rgp_id        => l_rgp_id,
17734                                  p_rgpv_rec      => l_rgpv_rec,
17735                                  p_rulv_rec      => l_rulv_rec,
17736                                  x_rgpv_rec      => x_rgpv_rec,
17737                                  x_rulv_rec      => x_rulv_rec
17738                                 );
17739 
17740       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17741           raise header_rule_failed;
17742       END IF;
17743 
17744       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
17745          l_rgp_id := x_rgpv_rec.id;
17746       END IF;
17747       l_rulv_rec := NULL;
17748 
17749       l_prtfl_strategy := p_header_rec.prtfl_strategy;
17750 
17751       IF (l_prtfl_strategy IS NULL
17752           AND
17753           p_header_rec.template_number IS NOT NULL) THEN
17754          get_contract_rules(
17755                             x_return_status  => x_return_status,
17756                             x_msg_count      => x_msg_count,
17757                             x_msg_data       => x_msg_data,
17758                             p_chr_id         => p_template_id,
17759                             p_cle_id         => NULL,
17760                             p_rgd_code       => 'AMCOPO',
17761                             p_rule_code      => 'AMPRST',
17762                             x_rulv_tbl       => l_rulv_tbl,
17763                             x_rule_count     => l_rule_count
17764                            );
17765 
17766          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17767             RAISE header_rule_failed;
17768          END IF;
17769 
17770          IF (l_rule_count > 0) THEN
17771             l_prtfl_strategy := NVL(l_prtfl_strategy, l_rulv_tbl(1).rule_information1);
17772          END IF;
17773       END IF;
17774 
17775       IF (l_prtfl_strategy IS NOT NULL) THEN
17776          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17777          l_rulv_rec.dnz_chr_id                := p_chr_id;
17778          l_rulv_rec.rule_information1         := l_prtfl_strategy;
17779          l_rulv_rec.rule_information_category := 'AMPRST';
17780          l_rulv_rec.std_template_yn           := 'N';
17781          l_rulv_rec.warn_yn                   := 'N';
17782       END IF;
17783 
17784       create_rule_group_and_rule(
17785                                  x_return_status => x_return_status,
17786                                  x_msg_count     => x_msg_count,
17787                                  x_msg_data      => x_msg_data,
17788                                  p_rgp_id        => l_rgp_id,
17789                                  p_rgpv_rec      => l_rgpv_rec,
17790                                  p_rulv_rec      => l_rulv_rec,
17791                                  x_rgpv_rec      => x_rgpv_rec,
17792                                  x_rulv_rec      => x_rulv_rec
17793                                 );
17794 
17795       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17796           raise header_rule_failed;
17797       END IF;
17798 
17799       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
17800          l_rgp_id := x_rgpv_rec.id;
17801       END IF;
17802       debug_message('------>Rule: AMCOPO/AMPRST processed');
17803       l_rulv_rec := NULL;
17804 
17805 /*
17806  * Adding Taxes and Duties rule at contract header
17807  *
17808 */
17809       -- Rule Group LAHDTX
17810 
17811       l_rgpv_rec            := NULL;
17812       l_rgp_id              := NULL;
17813       l_rgpv_rec.rgd_code   := 'LAHDTX';
17814       l_rgpv_rec.chr_id     := p_chr_id;
17815       l_rgpv_rec.dnz_chr_id := p_chr_id;
17816       l_rgpv_rec.cle_id     := NULL;
17817       l_rgpv_rec.rgp_type   := 'KRG';
17818 
17819       l_rulv_rec := NULL;
17820 
17821       l_prop_tax_applicable           := p_header_rec.prop_tax_applicable;
17822       l_prop_tax_lease_rep            := p_header_rec.prop_tax_lease_rep;
17823 -- Added by rravikir (Fix for Bug 3947959)
17824       l_prop_tax_bill_method          := p_header_rec.prop_tax_bill_method;
17825 -- End
17826 
17827       IF (l_prop_tax_applicable IS NULL
17828           OR
17829           l_prop_tax_lease_rep IS NULL
17830 -- Added by rravikir (Fix for Bug 3947959)
17831           OR
17832           l_prop_tax_bill_method IS NULL
17833 -- End
17834           AND
17835           p_header_rec.template_number IS NOT NULL) THEN
17836          get_contract_rules(
17837                             x_return_status  => x_return_status,
17838                             x_msg_count      => x_msg_count,
17839                             x_msg_data       => x_msg_data,
17840                             p_chr_id         => p_template_id,
17841                             p_cle_id         => NULL,
17842                             p_rgd_code       => 'LAHDTX',
17843                             p_rule_code      => 'LAPRTX',
17844                             x_rulv_tbl       => l_rulv_tbl,
17845                             x_rule_count     => l_rule_count
17846                            );
17847 
17848          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17849             RAISE header_rule_failed;
17850          END IF;
17851 
17852          IF (l_rule_count > 0) THEN
17853             l_prop_tax_applicable := NVL(l_prop_tax_applicable, l_rulv_tbl(1).rule_information1);
17854             l_prop_tax_lease_rep  := NVL(l_prop_tax_lease_rep, l_rulv_tbl(1).rule_information2);
17855 -- Added by rravikir (Fix for Bug 3947959)
17856             l_prop_tax_bill_method := NVL(l_prop_tax_bill_method, l_rulv_tbl(1).rule_information3);
17857 -- End
17858          END IF;
17859       END IF;
17860 
17861       IF (l_prop_tax_applicable IS NOT NULL) THEN
17862          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17863          l_rulv_rec.dnz_chr_id                := p_chr_id;
17864          l_rulv_rec.rule_information1         := l_prop_tax_applicable;
17865          l_rulv_rec.rule_information_category := 'LAPRTX';
17866          l_rulv_rec.std_template_yn           := 'N';
17867          l_rulv_rec.warn_yn                   := 'N';
17868       END IF;
17869 
17870       IF (l_prop_tax_lease_rep IS NOT NULL) THEN
17871          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17872          l_rulv_rec.dnz_chr_id                := p_chr_id;
17873          l_rulv_rec.rule_information2         := l_prop_tax_lease_rep;
17874          l_rulv_rec.rule_information_category := 'LAPRTX';
17875          l_rulv_rec.std_template_yn           := 'N';
17876          l_rulv_rec.warn_yn                   := 'N';
17877       END IF;
17878 
17879 -- Added by rravikir (Fix for Bug 3947959)
17880       IF (l_prop_tax_bill_method IS NOT NULL) THEN
17881          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17882          l_rulv_rec.dnz_chr_id                := p_chr_id;
17883          l_rulv_rec.rule_information3         := l_prop_tax_bill_method;
17884          l_rulv_rec.rule_information_category := 'LAPRTX';
17885          l_rulv_rec.std_template_yn           := 'N';
17886          l_rulv_rec.warn_yn                   := 'N';
17887       END IF;
17888 -- End
17889       create_rule_group_and_rule(
17890                                  x_return_status => x_return_status,
17891                                  x_msg_count     => x_msg_count,
17892                                  x_msg_data      => x_msg_data,
17893                                  p_rgp_id        => l_rgp_id,
17894                                  p_rgpv_rec      => l_rgpv_rec,
17895                                  p_rulv_rec      => l_rulv_rec,
17896                                  x_rgpv_rec      => x_rgpv_rec,
17897                                  x_rulv_rec      => x_rulv_rec
17898                                 );
17899 
17900       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17901           raise header_rule_failed;
17902       END IF;
17903 
17904       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
17905          l_rgp_id := x_rgpv_rec.id;
17906       END IF;
17907       debug_message('------>Rule: LAHDTX/LAPRTX processed');
17908       l_rulv_rec := NULL;
17909 
17910       l_mex_tax_sub_basic_wthld       := p_header_rec.mex_tax_sub_basic_wthld;
17911       l_mex_tax_calc_formula          := p_header_rec.mex_tax_calc_formula;
17912 
17913 
17914       IF (l_mex_tax_sub_basic_wthld IS NULL
17915           OR
17916           l_mex_tax_calc_formula IS NULL
17917           AND
17918           p_header_rec.template_number IS NOT NULL) THEN
17919          get_contract_rules(
17920                             x_return_status  => x_return_status,
17921                             x_msg_count      => x_msg_count,
17922                             x_msg_data       => x_msg_data,
17923                             p_chr_id         => p_template_id,
17924                             p_cle_id         => NULL,
17925                             p_rgd_code       => 'LAHDTX',
17926                             p_rule_code      => 'LAMETX',
17927                             x_rulv_tbl       => l_rulv_tbl,
17928                             x_rule_count     => l_rule_count
17929                            );
17930 
17931          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17932             RAISE header_rule_failed;
17933          END IF;
17934 
17935          IF (l_rule_count > 0) THEN
17936             l_mex_tax_sub_basic_wthld := NVL(l_mex_tax_sub_basic_wthld, l_rulv_tbl(1).rule_information1);
17937             l_mex_tax_calc_formula  := NVL(l_mex_tax_calc_formula, l_rulv_tbl(1).rule_information2);
17938          END IF;
17939       END IF;
17940 
17941       IF (l_mex_tax_sub_basic_wthld IS NOT NULL) THEN
17942          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17943          l_rulv_rec.dnz_chr_id                := p_chr_id;
17944          l_rulv_rec.rule_information1         := l_mex_tax_sub_basic_wthld;
17945          l_rulv_rec.rule_information_category := 'LAMETX';
17946          l_rulv_rec.std_template_yn           := 'N';
17947          l_rulv_rec.warn_yn                   := 'N';
17948       END IF;
17949 
17950       IF (l_mex_tax_calc_formula IS NOT NULL) THEN
17951          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17952          l_rulv_rec.dnz_chr_id                := p_chr_id;
17953          l_rulv_rec.rule_information2         := l_mex_tax_calc_formula;
17954          l_rulv_rec.rule_information_category := 'LAMETX';
17955          l_rulv_rec.std_template_yn           := 'N';
17956          l_rulv_rec.warn_yn                   := 'N';
17957       END IF;
17958 
17959       create_rule_group_and_rule(
17960                                  x_return_status => x_return_status,
17961                                  x_msg_count     => x_msg_count,
17962                                  x_msg_data      => x_msg_data,
17963                                  p_rgp_id        => l_rgp_id,
17964                                  p_rgpv_rec      => l_rgpv_rec,
17965                                  p_rulv_rec      => l_rulv_rec,
17966                                  x_rgpv_rec      => x_rgpv_rec,
17967                                  x_rulv_rec      => x_rulv_rec
17968                                 );
17969 
17970       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17971           raise header_rule_failed;
17972       END IF;
17973 
17974       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
17975          l_rgp_id := x_rgpv_rec.id;
17976       END IF;
17977       debug_message('------>Rule: LAHDTX/LAMETX processed');
17978       l_rulv_rec := NULL;
17979 
17980       l_aus_tax_stamp_duty            := p_header_rec.aus_tax_stamp_duty;
17981 
17982       IF (l_aus_tax_stamp_duty IS NULL
17983           AND
17984           p_header_rec.template_number IS NOT NULL) THEN
17985          get_contract_rules(
17986                             x_return_status  => x_return_status,
17987                             x_msg_count      => x_msg_count,
17988                             x_msg_data       => x_msg_data,
17989                             p_chr_id         => p_template_id,
17990                             p_cle_id         => NULL,
17991                             p_rgd_code       => 'LAHDTX',
17992                             p_rule_code      => 'LAAUTX',
17993                             x_rulv_tbl       => l_rulv_tbl,
17994                             x_rule_count     => l_rule_count
17995                            );
17996 
17997          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17998             RAISE header_rule_failed;
17999          END IF;
18000 
18001          IF (l_rule_count > 0) THEN
18002             l_aus_tax_stamp_duty := NVL(l_aus_tax_stamp_duty, l_rulv_tbl(1).rule_information1);
18003          END IF;
18004       END IF;
18005 
18006       IF (l_aus_tax_stamp_duty IS NOT NULL) THEN
18007          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
18008          l_rulv_rec.dnz_chr_id                := p_chr_id;
18009          l_rulv_rec.rule_information1         := l_aus_tax_stamp_duty;
18010          l_rulv_rec.rule_information_category := 'LAAUTX';
18011          l_rulv_rec.std_template_yn           := 'N';
18012          l_rulv_rec.warn_yn                   := 'N';
18013       END IF;
18014 
18015       create_rule_group_and_rule(
18016                                  x_return_status => x_return_status,
18017                                  x_msg_count     => x_msg_count,
18018                                  x_msg_data      => x_msg_data,
18019                                  p_rgp_id        => l_rgp_id,
18020                                  p_rgpv_rec      => l_rgpv_rec,
18021                                  p_rulv_rec      => l_rulv_rec,
18022                                  x_rgpv_rec      => x_rgpv_rec,
18023                                  x_rulv_rec      => x_rulv_rec
18024                                 );
18025 
18026       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
18027           raise header_rule_failed;
18028       END IF;
18029 
18030       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
18031          l_rgp_id := x_rgpv_rec.id;
18032       END IF;
18033       debug_message('------>Rule: LAHDTX/LAAUTX processed');
18034       l_rulv_rec := NULL;
18035 
18036       l_st_upd_lines_from_contract           := p_header_rec.st_update_lines_from_contract;
18037       l_st_interest_disclosed                := p_header_rec.st_interest_disclosed;
18038       l_st_transfer_of_title                 := p_header_rec.st_transfer_of_title;
18039       l_st_sale_and_lease_back               := p_header_rec.st_sale_and_lease_back;
18040       l_st_purchase_of_lease                 := p_header_rec.st_purchase_of_lease;
18041       l_st_equipment_usage                   := p_header_rec.st_equipment_usage;
18042       l_st_equipment_age                     := p_header_rec.st_equipment_age;
18043 
18044 
18045       IF (l_st_upd_lines_from_contract IS NULL
18046           OR
18047           l_st_interest_disclosed IS NULL
18048           OR
18049           l_st_transfer_of_title IS NULL
18050           OR
18051           l_st_sale_and_lease_back IS NULL
18052           OR
18053           l_st_purchase_of_lease IS NULL
18054           OR
18055           l_st_equipment_usage IS NULL
18056           OR
18057           l_st_equipment_age IS NULL
18058           AND
18059           p_header_rec.template_number IS NOT NULL) THEN
18060          get_contract_rules(
18061                             x_return_status  => x_return_status,
18062                             x_msg_count      => x_msg_count,
18063                             x_msg_data       => x_msg_data,
18064                             p_chr_id         => p_template_id,
18065                             p_cle_id         => NULL,
18066                             p_rgd_code       => 'LAHDTX',
18067                             p_rule_code      => 'LASTCL',
18068                             x_rulv_tbl       => l_rulv_tbl,
18069                             x_rule_count     => l_rule_count
18070                            );
18071 
18072          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
18073             RAISE header_rule_failed;
18074          END IF;
18075 
18076          IF (l_rule_count > 0) THEN
18077             l_st_upd_lines_from_contract    := NVL(l_st_upd_lines_from_contract, l_rulv_tbl(1).rule_information1);
18078             l_st_interest_disclosed         := NVL(l_st_interest_disclosed, l_rulv_tbl(1).rule_information2);
18079             l_st_transfer_of_title          := NVL(l_st_transfer_of_title, l_rulv_tbl(1).rule_information3);
18080             l_st_sale_and_lease_back        := NVL(l_st_sale_and_lease_back, l_rulv_tbl(1).rule_information4);
18081             l_st_purchase_of_lease          := NVL(l_st_purchase_of_lease, l_rulv_tbl(1).rule_information5);
18082             l_st_equipment_usage            := NVL(l_st_equipment_usage, l_rulv_tbl(1).rule_information6);
18083             l_st_equipment_age              := NVL(l_st_equipment_age, l_rulv_tbl(1).rule_information7);
18084          END IF;
18085       END IF;
18086 
18087       IF (l_st_upd_lines_from_contract IS NOT NULL) THEN
18088          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
18089          l_rulv_rec.dnz_chr_id                := p_chr_id;
18090          l_rulv_rec.rule_information1         := l_st_upd_lines_from_contract;
18091          l_rulv_rec.rule_information_category := 'LASTCL';
18092          l_rulv_rec.std_template_yn           := 'N';
18093          l_rulv_rec.warn_yn                   := 'N';
18094       END IF;
18095 
18096       IF (l_st_interest_disclosed IS NOT NULL) THEN
18097          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
18098          l_rulv_rec.dnz_chr_id                := p_chr_id;
18099          l_rulv_rec.rule_information2         := l_st_interest_disclosed;
18100          l_rulv_rec.rule_information_category := 'LASTCL';
18101          l_rulv_rec.std_template_yn           := 'N';
18102          l_rulv_rec.warn_yn                   := 'N';
18103       END IF;
18104 
18105       IF (l_st_transfer_of_title IS NOT NULL) THEN
18106          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
18107          l_rulv_rec.dnz_chr_id                := p_chr_id;
18108          l_rulv_rec.rule_information3         := l_st_transfer_of_title;
18109          l_rulv_rec.rule_information_category := 'LASTCL';
18110          l_rulv_rec.std_template_yn           := 'N';
18111          l_rulv_rec.warn_yn                   := 'N';
18112       END IF;
18113 
18114       IF (l_st_sale_and_lease_back IS NOT NULL) THEN
18115          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
18116          l_rulv_rec.dnz_chr_id                := p_chr_id;
18117          l_rulv_rec.rule_information4         := l_st_sale_and_lease_back;
18118          l_rulv_rec.rule_information_category := 'LASTCL';
18119          l_rulv_rec.std_template_yn           := 'N';
18120          l_rulv_rec.warn_yn                   := 'N';
18121       END IF;
18122 
18123       IF (l_st_purchase_of_lease IS NOT NULL) THEN
18124          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
18125          l_rulv_rec.dnz_chr_id                := p_chr_id;
18126          l_rulv_rec.rule_information5         := l_st_purchase_of_lease;
18127          l_rulv_rec.rule_information_category := 'LASTCL';
18128          l_rulv_rec.std_template_yn           := 'N';
18129          l_rulv_rec.warn_yn                   := 'N';
18130       END IF;
18131 
18132       IF (l_st_equipment_usage IS NOT NULL) THEN
18133          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
18134          l_rulv_rec.dnz_chr_id                := p_chr_id;
18135          l_rulv_rec.rule_information6         := l_st_equipment_usage;
18136          l_rulv_rec.rule_information_category := 'LASTCL';
18137          l_rulv_rec.std_template_yn           := 'N';
18138          l_rulv_rec.warn_yn                   := 'N';
18139       END IF;
18140 
18141       IF (l_st_equipment_age IS NOT NULL) THEN
18142          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
18143          l_rulv_rec.dnz_chr_id                := p_chr_id;
18144          l_rulv_rec.rule_information7         := l_st_equipment_age;
18145          l_rulv_rec.rule_information_category := 'LASTCL';
18146          l_rulv_rec.std_template_yn           := 'N';
18147          l_rulv_rec.warn_yn                   := 'N';
18148       END IF;
18149 
18150       create_rule_group_and_rule(
18151                                  x_return_status => x_return_status,
18152                                  x_msg_count     => x_msg_count,
18153                                  x_msg_data      => x_msg_data,
18154                                  p_rgp_id        => l_rgp_id,
18155                                  p_rgpv_rec      => l_rgpv_rec,
18156                                  p_rulv_rec      => l_rulv_rec,
18157                                  x_rgpv_rec      => x_rgpv_rec,
18158                                  x_rulv_rec      => x_rulv_rec
18159                                 );
18160 
18161       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
18162           raise header_rule_failed;
18163       END IF;
18164 
18165       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
18166          l_rgp_id := x_rgpv_rec.id;
18167       END IF;
18168       debug_message('------>Rule: LAHDTX/LASTCL processed');
18169       l_rulv_rec := NULL;
18170 
18171       l_st_asset_upfront_tax                    := p_header_rec.st_asset_upfront_tax;
18172       l_st_bill_stream_type_code                := p_header_rec.st_bill_stream_type_code;
18173       l_st_bill_stream_purpose_code             := p_header_rec.st_bill_stream_purpose_code;
18174       l_st_bill_stream_id                       := NULL;
18175       l_st_fin_stream_type_code                 := p_header_rec.st_fin_stream_type_code;
18176       l_st_fin_stream_purpose_code              := p_header_rec.st_fin_stream_purpose_code;
18177       l_st_fin_stream_id                        := NULL;
18178       l_st_cap_stream_type_code                 := p_header_rec.st_cap_stream_type_code;
18179       l_st_cap_stream_purpose_code              := p_header_rec.st_cap_stream_purpose_code;
18180       l_st_cap_stream_id                        := NULL;
18181 
18182       --R12B ebTax change
18183       l_st_tax_schedule_applies_flag            := p_header_rec.st_tax_schedule_applies_flag;
18184 
18185       IF (l_st_bill_stream_type_code IS NOT NULL
18186           AND
18187           l_st_bill_stream_purpose_code IS NOT NULL) THEN
18188          check_stream_type_code(
18189                                 x_return_status    => x_return_status,
18190                                 x_msg_count        => x_msg_count,
18191                                 x_msg_data         => x_msg_data,
18192                                 p_stream_type_code => l_st_bill_stream_type_code,
18193                                 p_stream_purpose   => l_st_bill_stream_purpose_code,
18194                                 x_id1              => l_id1,
18195                                 x_name             => l_st_stream_name
18196                                );
18197          l_st_bill_stream_id := l_id1;
18198 
18199          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
18200             okl_api.set_message(
18201                                 G_APP_NAME,
18202                                 G_INVALID_VALUE,
18203                                 'CONTRACT_NUM',
18204                                 p_header_rec.contract_number_old,
18205                                 'COL_NAME',
18206                                 'ST_BILL_STREAM_TYPE_CODE, ST_BILL_STREAM_PURPOSE_CODE',
18207                                 'COL_VALUE',
18208                                  l_st_bill_stream_type_code||', '||l_st_bill_stream_purpose_code
18209                                 );
18210              x_return_status := OKL_API.G_RET_STS_ERROR;
18211              RAISE header_rule_failed;
18212          END IF;
18213       END IF;
18214 
18215       IF (l_st_fin_stream_type_code IS NOT NULL
18216           AND
18217           l_st_fin_stream_purpose_code IS NOT NULL) THEN
18218          check_stream_type_code(
18219                                 x_return_status    => x_return_status,
18220                                 x_msg_count        => x_msg_count,
18221                                 x_msg_data         => x_msg_data,
18222                                 p_stream_type_code => l_st_fin_stream_type_code,
18223                                 p_stream_purpose   => l_st_fin_stream_purpose_code,
18224                                 x_id1              => l_id1,
18225                                 x_name             => l_st_stream_name
18226                                );
18227          l_st_fin_stream_id := l_id1;
18228 
18229          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
18230             okl_api.set_message(
18231                                 G_APP_NAME,
18232                                 G_INVALID_VALUE,
18233                                 'CONTRACT_NUM',
18234                                 p_header_rec.contract_number_old,
18235                                 'COL_NAME',
18236                                 'ST_FIN_STREAM_TYPE_CODE, ST_FIN_STREAM_PURPOSE_CODE',
18237                                 'COL_VALUE',
18238                                  l_st_fin_stream_type_code||', '||l_st_fin_stream_purpose_code
18239                                 );
18240              x_return_status := OKL_API.G_RET_STS_ERROR;
18241              RAISE header_rule_failed;
18242          END IF;
18243       END IF;
18244 
18245       IF (l_st_cap_stream_type_code IS NOT NULL
18246           AND
18247           l_st_cap_stream_purpose_code IS NOT NULL) THEN
18248          check_stream_type_code(
18249                                 x_return_status    => x_return_status,
18250                                 x_msg_count        => x_msg_count,
18251                                 x_msg_data         => x_msg_data,
18252                                 p_stream_type_code => l_st_cap_stream_type_code,
18253                                 p_stream_purpose   => l_st_cap_stream_purpose_code,
18254                                 x_id1              => l_id1,
18255                                 x_name             => l_st_stream_name
18256                                );
18257          l_st_cap_stream_id := l_id1;
18258 
18259          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
18260             okl_api.set_message(
18261                                 G_APP_NAME,
18262                                 G_INVALID_VALUE,
18263                                 'CONTRACT_NUM',
18264                                 p_header_rec.contract_number_old,
18265                                 'COL_NAME',
18266                                 'ST_CAP_STREAM_TYPE_CODE, ST_CAP_STREAM_PURPOSE_CODE',
18267                                 'COL_VALUE',
18268                                  l_st_cap_stream_type_code||', '||l_st_cap_stream_purpose_code
18269                                 );
18270              x_return_status := OKL_API.G_RET_STS_ERROR;
18271              RAISE header_rule_failed;
18272          END IF;
18273       END IF;
18274 
18275       IF (l_st_asset_upfront_tax IS NULL
18276           OR
18277           l_st_bill_stream_ID IS NULL
18278           OR
18279           l_st_fin_stream_ID IS NULL
18280           OR
18281           l_st_cap_stream_ID IS NULL
18282           OR
18283           l_st_tax_schedule_applies_flag is NULL -- R12B ebTax change
18284           AND
18285           p_header_rec.template_number IS NOT NULL) THEN
18286 
18287          get_contract_rules(
18288                             x_return_status  => x_return_status,
18289                             x_msg_count      => x_msg_count,
18290                             x_msg_data       => x_msg_data,
18291                             p_chr_id         => p_template_id,
18292                             p_cle_id         => NULL,
18293                             p_rgd_code       => 'LAHDTX',
18294                             p_rule_code      => 'LASTPR',
18295                             x_rulv_tbl       => l_rulv_tbl,
18296                             x_rule_count     => l_rule_count
18297                            );
18298 
18299          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
18300             RAISE header_rule_failed;
18301          END IF;
18302 
18303          IF (l_rule_count > 0) THEN
18304             l_st_asset_upfront_tax          := NVL(l_st_asset_upfront_tax, l_rulv_tbl(1).rule_information1);
18305             l_st_bill_stream_id             := NVL(l_st_bill_stream_id, l_rulv_tbl(1).rule_information2);
18306             l_st_fin_stream_id              := NVL(l_st_fin_stream_id, l_rulv_tbl(1).rule_information3);
18307             l_st_cap_stream_id              := NVL(l_st_cap_stream_id, l_rulv_tbl(1).rule_information4);
18308             --R12B ebtax change
18309             l_st_tax_schedule_applies_flag  := NVL(l_st_tax_schedule_applies_flag, l_rulv_tbl(1).rule_information5);
18310          END IF;
18311       END IF;
18312 
18313       IF (l_st_asset_upfront_tax IS NOT NULL) THEN
18314          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
18315          l_rulv_rec.dnz_chr_id                := p_chr_id;
18316          l_rulv_rec.rule_information1         := l_st_asset_upfront_tax;
18317          l_rulv_rec.rule_information_category := 'LASTPR';
18318          l_rulv_rec.std_template_yn           := 'N';
18319          l_rulv_rec.warn_yn                   := 'N';
18320       END IF;
18321 
18322       IF (l_st_bill_stream_id IS NOT NULL) THEN
18323          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
18324          l_rulv_rec.dnz_chr_id                := p_chr_id;
18325          l_rulv_rec.rule_information2         := l_st_bill_stream_id;
18326          l_rulv_rec.rule_information_category := 'LASTPR';
18327          l_rulv_rec.std_template_yn           := 'N';
18328          l_rulv_rec.warn_yn                   := 'N';
18329       END IF;
18330 
18331       IF (l_st_fin_stream_id IS NOT NULL) THEN
18332          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
18333          l_rulv_rec.dnz_chr_id                := p_chr_id;
18334          l_rulv_rec.rule_information3         := l_st_fin_stream_id;
18335          l_rulv_rec.rule_information_category := 'LASTPR';
18336          l_rulv_rec.std_template_yn           := 'N';
18337          l_rulv_rec.warn_yn                   := 'N';
18338       END IF;
18339 
18340       IF (l_st_cap_stream_id IS NOT NULL) THEN
18341          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
18342          l_rulv_rec.dnz_chr_id                := p_chr_id;
18343          l_rulv_rec.rule_information4         := l_st_cap_stream_id;
18344          l_rulv_rec.rule_information_category := 'LASTPR';
18345          l_rulv_rec.std_template_yn           := 'N';
18346          l_rulv_rec.warn_yn                   := 'N';
18347       END IF;
18348 
18349       -- R12 ebtax change - START
18350 
18351       IF (l_st_tax_schedule_applies_flag IS NOT NULL) THEN
18352          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
18353          l_rulv_rec.dnz_chr_id                := p_chr_id;
18354          l_rulv_rec.rule_information5         := l_st_tax_schedule_applies_flag;
18355          l_rulv_rec.rule_information_category := 'LASTPR';
18356          l_rulv_rec.std_template_yn           := 'N';
18357          l_rulv_rec.warn_yn                   := 'N';
18358       ELSIF (l_st_tax_schedule_applies_flag IS NULL) THEN
18359 
18360          -- R12B ebTax: Fetch Tax Schedule Flag from system options
18361          -- if it was not supplied during import
18362 
18363          OPEN c_tax_schedule_yn;
18364          FETCH c_tax_schedule_yn INTO l_tax_schedule_yn;
18365          CLOSE c_tax_schedule_yn;
18366 
18367           l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
18368          l_rulv_rec.dnz_chr_id                := p_chr_id;
18369          l_rulv_rec.rule_information5         := l_tax_schedule_yn;
18370          l_rulv_rec.rule_information_category := 'LASTPR';
18371          l_rulv_rec.std_template_yn           := 'N';
18372          l_rulv_rec.warn_yn                   := 'N';
18373       END IF;
18374 
18375       -- R12 ebtax change - END
18376 
18377       create_rule_group_and_rule(
18378                                  x_return_status => x_return_status,
18379                                  x_msg_count     => x_msg_count,
18380                                  x_msg_data      => x_msg_data,
18381                                  p_rgp_id        => l_rgp_id,
18382                                  p_rgpv_rec      => l_rgpv_rec,
18383                                  p_rulv_rec      => l_rulv_rec,
18384                                  x_rgpv_rec      => x_rgpv_rec,
18385                                  x_rulv_rec      => x_rulv_rec
18386                                 );
18387 
18388       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
18389           raise header_rule_failed;
18390       END IF;
18391 
18392       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
18393          l_rgp_id := x_rgpv_rec.id;
18394       END IF;
18395       debug_message('------>Rule: LAHDTX/LASTPR processed');
18396       l_rulv_rec := NULL;
18397       return;
18398 
18399    EXCEPTION
18400 
18401      WHEN header_rule_failed THEN
18402          x_return_status := OKL_API.G_RET_STS_ERROR;
18403          debug_message('------>Error with: '||l_rgpv_rec.rgd_code);
18404          debug_message('------>Rule Catg: '|| l_rulv_rec.rule_information_category);
18405 
18406       WHEN OTHERS THEN
18407         okl_api.set_message(
18408                             G_APP_NAME,
18409                             G_UNEXPECTED_ERROR,
18410                             'OKL_SQLCODE',
18411                             SQLCODE,
18412                             'OKL_SQLERRM',
18413                             SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
18414                            );
18415 
18416         x_return_status := OKL_API.G_RET_STS_ERROR;
18417         debug_message('Others : '||l_progress);
18418 
18419    END create_header_rules;
18420 
18421 ------------------------------------------------------------------------------
18422 -- PROCEDURE create_contact
18423 -- It creates contact and
18424 -- stacks Error, if any, and returns ERROR status to calling process.
18425 -- Calls:
18426 --  None
18427 -- Called By:
18428 --  load_input_record
18429 ------------------------------------------------------------------------------
18430    PROCEDURE create_contact(
18431                             x_return_status       OUT NOCOPY VARCHAR2,
18432                             x_msg_count           OUT NOCOPY NUMBER,
18433                             x_msg_data            OUT NOCOPY VARCHAR2,
18434                             p_contract_header_id  IN  okc_k_headers_v.id%TYPE,
18435                             p_contract_number_old IN  okl_header_interface.contract_number_old%TYPE,
18436                             p_salesperson_id      IN  okl_header_interface.salesperson_id%TYPE,
18437                             p_salesperson_name    IN  okl_header_interface.salesperson_name%TYPE,
18438                             p_authoring_org_id    IN  okl_header_interface.authoring_org_id%TYPE,
18439                             p_lessor_id           IN  NUMBER
18440                            ) IS
18441 
18442    l_proc_name      VARCHAR2(35) := 'CREATE_CONTRACT';
18443    x_salesperson_id NUMBER;
18444    l_ctcv_rec       OKL_OKC_MIGRATION_PVT.ctcv_rec_type;
18445    x_ctcv_rec       OKL_OKC_MIGRATION_PVT.ctcv_rec_type;
18446    l_id             NUMBER;
18447    contact_failed   EXCEPTION;
18448 
18449    CURSOR sale_csr (p_salesrep_id   NUMBER,
18450                     p_salesrep_name VARCHAR2,
18451                     p_org_id        NUMBER) IS
18452    SELECT id1
18453    FROM   okx_salesreps_v
18454    WHERE  (( id1 = p_salesrep_id
18455              AND
18456              p_salesrep_id IS NOT NULL
18457            )
18458            OR
18459            ( name = p_salesrep_name
18460              AND
18461              p_salesrep_name IS NOT NULL
18462            )
18463           )
18464    AND    org_id = p_org_id;
18465 
18466    BEGIN
18467 
18468      IF (p_salesperson_id   IS NOT NULL
18469          OR
18470          p_salesperson_name IS NOT NULL) THEN
18471         OPEN sale_csr (p_salesperson_id,
18472                        p_salesperson_name,
18473                        p_authoring_org_id);
18474         FETCH sale_csr INTO l_id;
18475         IF sale_csr%NOTFOUND THEN
18476          okl_api.set_message(
18477                             G_APP_NAME,
18478                             G_INVALID_VALUE,
18479                             'COL_NAME',
18480                             'SALESPERSON_NAME, ID',
18481                             'COL_VALUE',
18482                             p_salesperson_name||', '||p_salesperson_id,
18483                             'CONTRACT_NUM',
18484                             p_contract_number_old
18485                            );
18486            RAISE contact_failed;
18487         END IF;
18488         CLOSE sale_csr;
18489 
18490         x_salesperson_id := l_id;
18491      END IF;
18492 
18493 
18494      IF (x_salesperson_id IS NOT NULL) THEN
18495         l_ctcv_rec.cpl_id            := p_lessor_id;
18496         l_ctcv_rec.dnz_chr_id        := p_contract_header_id;
18497         l_ctcv_rec.cro_code          := 'SALESPERSON';
18498         l_ctcv_rec.jtot_object1_code := 'OKX_SALEPERS';
18499         l_ctcv_rec.object1_id1       := x_salesperson_id;
18500         l_ctcv_rec.object1_id2       := '#';
18501 
18502         OKL_OKC_MIGRATION_PVT.create_contact(
18503                                               p_api_version   => 1.0,
18504                                               x_return_status => x_return_status,
18505                                               x_msg_count     => x_msg_count,
18506                                               x_msg_data      => x_msg_data,
18507                                               p_ctcv_rec      => l_ctcv_rec,
18508                                               x_ctcv_rec      => x_ctcv_rec);
18509         IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
18510             x_return_status := OKL_API.G_RET_STS_ERROR;
18511             raise contact_failed;
18512         END IF;
18513 
18514      END IF;
18515 
18516      return;
18517 
18518    EXCEPTION
18519      WHEN contact_failed THEN
18520          x_return_status := OKL_API.G_RET_STS_ERROR;
18521 
18522      WHEN OTHERS THEN
18523         okl_api.set_message(
18524                             G_APP_NAME,
18525                             G_UNEXPECTED_ERROR,
18526                             'OKL_SQLCODE',
18527                             SQLCODE,
18528                             'OKL_SQLERRM',
18529                             SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
18530                            );
18531 
18532         x_return_status := OKL_API.G_RET_STS_ERROR;
18533 
18534 
18535    END create_contact;
18536 
18537 ------------------------------------------------------------------------------
18538 -- PROCEDURE get_ship_to_site
18539 -- It gets Ship to site id from number and
18540 -- stacks Error, if any, and returns ERROR status to calling process.
18541 -- Calls:
18542 --  None
18543 -- Called By:
18544 --  process_party_role
18545 ------------------------------------------------------------------------------
18546    PROCEDURE get_ship_to_site(
18547                               x_return_status                OUT NOCOPY VARCHAR2,
18548                               x_msg_count                    OUT NOCOPY NUMBER,
18549                               x_msg_data                     OUT NOCOPY VARCHAR2,
18550                               p_contract_number              IN  okc_k_headers_v.contract_number%TYPE,
18551                               p_line_number                  IN  okc_k_lines_v.line_number%TYPE,
18552                               p_auth_org_id                  IN  NUMBER,
18553                               p_ship_to_site_number          IN  okx_party_site_uses_v.party_site_number%TYPE,
18554                               p_ship_to_site_id              IN  okx_party_site_uses_v.party_site_id%TYPE,
18555                               x_ship_to_site_id              OUT NOCOPY okx_party_site_uses_v.party_site_id%TYPE
18556                              ) IS
18557 
18558    CURSOR ship_csr (p_site_id      NUMBER,
18559                     p_site_number  VARCHAR2,
18560                     p_customer_id  NUMBER) IS
18561    SELECT party_site_id
18562    FROM   okx_party_site_uses_v
18563    WHERE  ((party_site_number = p_site_number
18564             AND
18565             p_site_number IS NOT NULL)
18566             OR
18567             (id1 = p_site_id
18568              AND
18569              p_site_id IS NOT NULL
18570             )
18571            )
18572    AND    site_use_type = 'SHIP_TO'
18573    AND    party_id      = p_customer_id
18574    AND    status        = 'A';
18575 
18576    CURSOR cust_ship_csr (p_party_site_id NUMBER,
18577                          p_cust_acct_id  NUMBER,
18578                          p_org_id        NUMBER) IS
18579    SELECT site_use.id1
18580    FROM   okx_cust_site_uses_v site_use,
18581           hz_cust_acct_sites_all site
18582    WHERE  site.cust_acct_site_id = site_use.cust_acct_site_id
18583    AND    site_use.party_site_id         = p_party_site_id
18584    AND    site_use.org_id                = p_org_id
18585    AND    site.org_id                    = p_org_id
18586    AND    site_use.site_use_code         = 'SHIP_TO'
18587    AND    site_use.cust_account_id       = p_cust_acct_id
18588    AND    site_use.b_status              = 'A'
18589    AND    site.status                    = 'A';
18590 
18591    l_proc_name     VARCHAR2(35) := 'GET_SHIP_TO_SITE';
18592    l_cust_site_id  NUMBER;
18593    l_party_site_id NUMBER;
18594    ship_failed     EXCEPTION;
18595 
18596    BEGIN
18597 
18598       x_return_status := OKL_API.G_RET_STS_SUCCESS;
18599       debug_message(l_proc_name);
18600       debug_message('Customer: '|| g_customer_id);
18601       debug_message('Cust Acc: '|| g_customer_account_id);
18602       debug_message('p_ship_to_site_id: '|| p_ship_to_site_id);
18603 
18604       OPEN ship_csr (p_ship_to_site_id,
18605                      p_ship_to_site_number,
18606                      g_customer_id);
18607       FETCH ship_csr INTO l_party_site_id;
18608       IF (ship_csr%NOTFOUND) THEN
18609          RAISE ship_failed;
18610       END IF;
18611       CLOSE ship_csr;
18612 
18613       debug_message('Party Site: '||l_party_site_id);
18614       debug_message('Org : '||p_auth_org_id);
18615       OPEN cust_ship_csr (l_party_site_id,
18616                           g_customer_account_id,
18617                           p_auth_org_id);
18618       FETCH cust_ship_csr INTO l_cust_site_id;
18619       IF (cust_ship_csr%NOTFOUND) THEN
18620          RAISE ship_failed;
18621       END IF;
18622       CLOSE cust_ship_csr;
18623 
18624       debug_message('Cust Site: ' || l_cust_site_id);
18625       x_ship_to_site_id := l_cust_site_id;
18626 
18627       RETURN;
18628 
18629   EXCEPTION
18630      WHEN ship_failed THEN
18631         IF (ship_csr%ISOPEN) THEN
18632            CLOSE ship_csr;
18633         END IF;
18634         IF (cust_ship_csr%ISOPEN) THEN
18635            CLOSE cust_ship_csr;
18636         END IF;
18637         okl_api.set_message(
18638                             G_APP_NAME,
18639                             G_INVALID_VALUE,
18640                             'COL_NAME',
18641                             'SHIP_TO_SITE, ID',
18642                             'COL_VALUE',
18643                             p_ship_to_site_number||', '||p_ship_to_site_id,
18644                             'CONTRACT_NUM',
18645                             p_contract_number||'/'||p_line_number
18646                            );
18647         x_return_status := OKL_API.G_RET_STS_ERROR;
18648 
18649    END get_ship_to_site;
18650 
18651 ------------------------------------------------------------------------------
18652 -- PROCEDURE get_guarantor_address
18653 -- It gets Gurarantor Address ID from given address and
18654 -- stacks Error, if any, and returns ERROR status to calling process.
18655 -- Calls:
18656 --  None
18657 -- Called By:
18658 --  process_party_role
18659 ------------------------------------------------------------------------------
18660    PROCEDURE get_guarantor_address(
18661                                    x_return_status                OUT NOCOPY VARCHAR2,
18662                                    x_msg_count                    OUT NOCOPY NUMBER,
18663                                    x_msg_data                     OUT NOCOPY VARCHAR2,
18664                                    p_contract_number              IN  okc_k_headers_v.contract_number%TYPE,
18665                                    p_line_number                  IN  okc_k_lines_v.line_number%TYPE,
18666                                    p_guarantor_site_number        IN  okl_party_roles_interface.guarantor_site_number%TYPE,
18667                                    p_guarantor_site_id            IN  okl_party_roles_interface.guarantor_site_id%TYPE,
18668                                    x_guarantor_site_id            OUT NOCOPY okl_party_roles_interface.guarantor_site_id%TYPE
18669                                   ) IS
18670 
18671    CURSOR gaddr_csr (p_site_id      NUMBER,
18672                      p_site_number  VARCHAR2) IS
18673    SELECT id1
18674    FROM   okx_party_sites_v
18675    WHERE  ( party_site_number = p_site_number
18676             AND
18677             p_site_number IS NOT NULL)
18678    OR     ( id1 = p_site_id
18679             AND
18680             p_site_id IS NOT NULL);
18681 
18682    l_id         NUMBER;
18683    gaddr_failed EXCEPTION;
18684 
18685    BEGIN
18686 
18687       x_return_status := OKL_API.G_RET_STS_SUCCESS;
18688       OPEN gaddr_csr (p_guarantor_site_id,
18689                       p_guarantor_site_number);
18690       FETCH gaddr_csr INTO l_id;
18691       IF (gaddr_csr%NOTFOUND) THEN
18692          RAISE gaddr_failed;
18693       END IF;
18694 
18695       CLOSE gaddr_csr;
18696       x_guarantor_site_id := l_id;
18697 
18698       RETURN;
18699 
18700   EXCEPTION
18701      WHEN gaddr_failed THEN
18702         IF (gaddr_csr%ISOPEN) THEN
18703            CLOSE gaddr_csr;
18704         END IF;
18705         okl_api.set_message(
18706                             G_APP_NAME,
18707                             G_INVALID_VALUE,
18708                             'COL_NAME',
18709                             'GUARANTOR_SITE, ID',
18710                             'COL_VALUE',
18711                             p_guarantor_site_number||', '||p_guarantor_site_id,
18712                             'CONTRACT_NUM',
18713                             p_contract_number||'/'||p_line_number
18714                            );
18715         x_return_status := OKL_API.G_RET_STS_ERROR;
18716 
18717    END get_guarantor_address;
18718 
18719 ------------------------------------------------------------------------------
18720 -- PROCEDURE get_rrd_id
18721 -- It gets RRD_ID for Guarantor and
18722 -- stacks Error, if any, and returns ERROR status to calling process.
18723 -- Calls:
18724 --  None
18725 -- Called By:
18726 --  process_party_role
18727 ------------------------------------------------------------------------------
18728    PROCEDURE get_rrd_id(
18729                         x_return_status OUT NOCOPY VARCHAR2,
18730                         p_rgd_code      IN  VARCHAR2,
18731                         p_rle_code      IN  VARCHAR2,
18732                         x_rrd_id        OUT NOCOPY NUMBER
18733                        ) IS
18734    CURSOR rrd_csr (p_rgd_code VARCHAR2,
18735                    p_rle_code VARCHAR2) IS
18736    SELECT rrd.id
18737    FROM   okc_rg_role_defs rrd,
18738           okc_subclass_rg_defs srd,
18739           okc_subclass_roles   srl
18740    WHERE  rrd.srd_id    = srd.id
18741    AND    rrd.sre_id    = srl.id
18742    AND    srd.scs_code  = 'LEASE'
18743    AND    srd.rgd_code  = p_rgd_code --'LAGRDT'
18744    AND    srl.scs_code  = 'LEASE'
18745    AND    srl.rle_code  = p_rle_code; --'GUARANTOR'
18746 
18747    l_id NUMBER:= NULL;
18748 
18749    BEGIN
18750 
18751       OPEN rrd_csr (p_rgd_code,
18752                     p_rle_code);
18753       FETCH rrd_csr INTO l_id;
18754       IF rrd_csr%NOTFOUND THEN
18755          x_return_status := OKL_API.G_RET_STS_ERROR;
18756       END IF;
18757       CLOSE rrd_csr;
18758 
18759       x_rrd_id := l_id;
18760       return;
18761 
18762    EXCEPTION
18763      WHEN OTHERS THEN
18764         x_return_status := OKL_API.G_RET_STS_ERROR;
18765    END get_rrd_id;
18766 
18767 
18768 
18769 ------------------------------------------------------------------------------
18770 -- PROCEDURE create_private_label
18771 -- It create party roles and rules for PRIVATE_LABEL information and
18772 -- stacks Error, if any, and returns ERROR status to calling process.
18773 -- Calls:
18774 --  None
18775 -- Called By:
18776 ------------------------------------------------------------------------------
18777    PROCEDURE create_private_label (
18778                                    x_return_status   OUT NOCOPY VARCHAR2,
18779                                    x_msg_count       OUT NOCOPY NUMBER,
18780                                    x_msg_data        OUT NOCOPY VARCHAR2,
18781                                    p_chr_id          IN  NUMBER,
18782                                    p_contract_number IN okc_k_headers_v.contract_number%TYPE,
18783                                    p_label_number    IN  VARCHAR2,
18784                                    p_label_id        IN  NUMBER,
18785                                    p_label_url       IN  VARCHAR2
18786                                   ) IS
18787 
18788    CURSOR party_csr (p_private_label_number VARCHAR2,
18789                      p_private_label_id     NUMBER) IS
18790    SELECT id1
18791    FROM   okx_parties_v
18792    WHERE  ((party_number = p_private_label_number
18793             AND
18794             p_private_label_number IS NOT NULL)
18795             OR
18796             (id1  = p_private_label_id
18797              AND
18798              p_private_label_id IS NOT NULL
18799             )
18800            );
18801 
18802    l_proc_name  VARCHAR2(35) := 'CREATE_PRIVATE_LABEL';
18803    p_cplv_rec   cplv_rec_type;
18804    x_cplv_rec   cplv_rec_type;
18805    l_rgpv_rec   rgpv_rec_type;
18806    x_rgpv_rec   rgpv_rec_type;
18807    l_rulv_rec   rulv_rec_type;
18808    x_rulv_rec   rulv_rec_type;
18809    l_rmpv_rec   rmpv_rec_type;
18810    x_rmpv_rec   rmpv_rec_type;
18811 
18812    l_rgp_id     NUMBER;
18813    x_rrd_id     NUMBER;
18814    l_id         NUMBER;
18815 
18816    party_failed EXCEPTION;
18817 
18818    l_kplv_rec   kplv_rec_type;
18819    x_kplv_rec   kplv_rec_type;
18820 
18821    BEGIN
18822 
18823       x_return_status := OKL_API.G_RET_STS_SUCCESS;
18824 
18825       IF (p_label_number IS NOT NULL
18826           OR
18827           p_label_id IS NOT NULL) THEN
18828 
18829          OPEN party_csr (p_label_number,
18830                          p_label_id);
18831          FETCH party_csr INTO l_id;
18832 
18833          IF party_csr%NOTFOUND THEN
18834             RAISE party_failed;
18835          END IF;
18836          CLOSE party_csr;
18837 
18838          p_cplv_rec                   := NULL;
18839          p_cplv_rec.chr_id            := p_chr_id;
18840          p_cplv_rec.dnz_chr_id        := p_chr_id;
18841          p_cplv_rec.cle_id            := NULL; -- always at header level
18842          p_cplv_rec.object1_id1       := TO_CHAR(l_id);
18843          p_cplv_rec.object1_id2       := '#';
18844          p_cplv_rec.jtot_object1_code := 'OKX_PARTY';
18845          p_cplv_rec.rle_code          := 'PRIVATE_LABEL';
18846 
18847          OKL_K_PARTY_ROLES_PVT.create_k_party_role(
18848                                                 p_api_version   => 1.0,
18849                                                 p_init_msg_list => OKL_API.G_FALSE,
18850                                                 x_return_status => x_return_status,
18851                                                 x_msg_count     => x_msg_count,
18852                                                 x_msg_data      => x_msg_data,
18853                                                 p_cplv_rec      => p_cplv_rec,
18854                                                 p_kplv_rec      => l_kplv_rec,
18855                                                 x_cplv_rec      => x_cplv_rec,
18856                                                 x_kplv_rec      => x_kplv_rec
18857                                                );
18858 
18859          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
18860             RAISE party_failed;
18861          END IF;
18862 
18863          l_rgpv_rec            := NULL;
18864          l_rgp_id              := NULL;
18865          l_rgpv_rec.rgd_code   := 'LALABL';
18866          l_rgpv_rec.chr_id     := p_chr_id;
18867          l_rgpv_rec.dnz_chr_id := p_chr_id;
18868          l_rgpv_rec.cle_id     := NULL; -- always at header level
18869          l_rgpv_rec.rgp_type   := 'KRG';
18870 
18871          l_rulv_rec            := NULL;
18872 
18873          IF (p_label_url IS NOT NULL) THEN
18874 
18875             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
18876             l_rulv_rec.dnz_chr_id                := p_chr_id;
18877             l_rulv_rec.rule_information1         := p_label_url;
18878             l_rulv_rec.rule_information_category := 'LALOGO';
18879             l_rulv_rec.std_template_yn           := 'N';
18880             l_rulv_rec.warn_yn                   := 'N';
18881 
18882             create_rule_group_and_rule(
18883                                        x_return_status => x_return_status,
18884                                        x_msg_count     => x_msg_count,
18885                                        x_msg_data      => x_msg_data,
18886                                        p_rgp_id        => l_rgp_id,
18887                                        p_rgpv_rec      => l_rgpv_rec,
18888                                        p_rulv_rec      => l_rulv_rec,
18889                                        x_rgpv_rec      => x_rgpv_rec,
18890                                        x_rulv_rec      => x_rulv_rec
18891                                       );
18892 
18893             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
18894                 raise party_failed;
18895             END IF;
18896 
18897             get_rrd_id(
18898                        x_return_status => x_return_status,
18899                        p_rgd_code      => 'LALABL',
18900                        p_rle_code      => 'PRIVATE_LABEL',
18901                        x_rrd_id        => x_rrd_id
18902                       );
18903             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
18904                  okl_api.set_message(
18905                                      G_APP_NAME,
18906                                      G_LABEL_SETUP_ERROR,
18907                                      'CONTRACT_NUM',
18908                                      p_contract_number
18909                                     );
18910                  x_return_status := OKL_API.G_RET_STS_ERROR;
18911                  RAISE party_failed;
18912             END IF;
18913 
18914             l_rmpv_rec.rgp_id     := x_rgpv_rec.id;
18915             l_rmpv_rec.cpl_id     := x_cplv_rec.id;
18916             l_rmpv_rec.rrd_id     := x_rrd_id;
18917             l_rmpv_rec.dnz_chr_id := p_chr_id;
18918 
18919             okl_rule_pub.create_rg_mode_pty_role(
18920                                                  p_api_version   => 1.0,
18921                                                  p_init_msg_list => OKL_API.G_FALSE,
18922                                                  x_return_status => x_return_status,
18923                                                  x_msg_count     => x_msg_count,
18924                                                  x_msg_data      => x_msg_data,
18925                                                  p_rmpv_rec      => l_rmpv_rec,
18926                                                  x_rmpv_rec      => x_rmpv_rec
18927                                                 );
18928             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
18929                 x_return_status := OKL_API.G_RET_STS_ERROR;
18930                 raise party_failed;
18931             END IF;
18932 
18933          END IF; --label_url
18934 
18935       END IF;  --private_label
18936 
18937    EXCEPTION
18938       WHEN party_failed THEN
18939          IF party_csr%ISOPEN THEN
18940             CLOSE party_csr;
18941          END IF;
18942          okl_api.set_message(
18943                              G_APP_NAME,
18944                              G_INVALID_VALUE,
18945                              'COL_NAME',
18946                              'PRIVATE_LABEL_NUMBER, ID',
18947                              'COL_VALUE',
18948                              p_label_number||', '||p_label_id,
18949                              'CONTRACT_NUM',
18950                              p_contract_number
18951                             );
18952          x_return_status := OKL_API.G_RET_STS_ERROR;
18953 
18954    END create_private_label;
18955 
18956 -- strat cklee 02/16/2004  bug# 3440442
18957 ------------------------------------------------------------------------------
18958 -- PROCEDURE validate_3rd_party_insurance
18959 -- It validate 3rd party insurence policy and
18960 -- stacks Error, if any, and returns ERROR status to calling process.
18961 -- Calls:
18962 --  None
18963 -- Called By:
18964 ------------------------------------------------------------------------------
18965 
18966    PROCEDURE validate_3rd_party_insurance (
18967                                    x_return_status   OUT NOCOPY VARCHAR2,
18968                                    x_msg_count       OUT NOCOPY NUMBER,
18969                                    x_msg_data        OUT NOCOPY VARCHAR2,
18970                                    p_intf_header     IN  intf_h_rec_type,
18971                                    x_intf_header     OUT NOCOPY intf_h_rec_type
18972                                   ) IS
18973    v_3rd_party_insurance_failed EXCEPTION;
18974 
18975   l_proc_name varchar2(150) := 'OKL_HEADER_INTERFACE: validate_3rd_party_insurance';
18976   l_progress  varchar2(150);
18977 
18978   l_intf_header intf_h_rec_type := p_intf_header;
18979 
18980   intf_party_rec intf_party_rec_type;
18981 
18982    BEGIN
18983 
18984       x_return_status := OKL_API.G_RET_STS_SUCCESS;
18985 --
18986 -- 1. validation
18987 --
18988      -- 3rd party insurace
18989      -- 1. insurance company name/site
18990       IF ((p_intf_header.insurance_company_name IS NOT NULL OR
18991            p_intf_header.insurance_company_id IS NOT NULL OR
18992            p_intf_header.insurance_company_number IS NOT NULL)
18993           AND
18994           (p_intf_header.insurance_company_site_name IS NOT NULL OR
18995            p_intf_header.insurance_company_site_id IS NOT NULL OR
18996            p_intf_header.insurance_company_site_number IS NOT NULL)) THEN
18997 
18998 
18999               intf_party_rec.contract_number       := p_intf_header.contract_number_old;
19000               intf_party_rec.line_number           := NULL;
19001               intf_party_rec.party_category_code   := G_INSURER;
19002 
19003               intf_party_rec.party_id              := p_intf_header.insurance_company_id;
19004               intf_party_rec.party_name            := p_intf_header.insurance_company_name;
19005               intf_party_rec.party_number          := p_intf_header.insurance_company_number;
19006               intf_party_rec.party_site_id         := p_intf_header.insurance_company_site_id;
19007               intf_party_rec.party_site_name       := p_intf_header.insurance_company_site_name;
19008               intf_party_rec.party_site_number     := p_intf_header.insurance_company_site_number;
19009               intf_party_rec.intf_party_id         := G_INSURANCE_COMPANY_ID;
19010               intf_party_rec.intf_party_name       := G_INSURANCE_COMPANY_NAME;
19011               intf_party_rec.intf_party_number     := G_INSURANCE_COMPANY_NUMBER;
19012               intf_party_rec.intf_party_site_id    := G_INSURANCE_COMPANY_SITE_ID;
19013               intf_party_rec.intf_party_site_name  := G_INSURANCE_COMPANY_SITE_NAME;
19014               intf_party_rec.intf_party_site_number:= G_INSURANCE_COMPANY_SITE_NUM;
19015 
19016 
19017               get_party(
19018                   x_return_status     => x_return_status,
19019                   x_msg_count         => x_msg_count,
19020                   x_msg_data          => x_msg_data,
19021                   p_intf_party_rec    => intf_party_rec,
19022                   x_party_id          => l_intf_header.insurance_company_id,
19023                   x_party_site_id     => l_intf_header.insurance_company_site_id
19024                  );
19025 
19026              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19027                 RAISE v_3rd_party_insurance_failed;
19028              END IF;
19029       END IF;
19030       l_progress := 'validate insurance company name/site';
19031 
19032      -- 3. agent name/site
19033       IF ((p_intf_header.agent_name IS NOT NULL OR
19034            p_intf_header.agent_id IS NOT NULL OR
19035            p_intf_header.agent_number IS NOT NULL)
19036           AND
19037           (p_intf_header.agent_address_site_name IS NOT NULL OR
19038            p_intf_header.agent_address_site_id IS NOT NULL OR
19039            p_intf_header.agent_address_site_number IS NOT NULL)) THEN
19040 
19041 
19042               intf_party_rec.contract_number       := p_intf_header.contract_number_old;
19043               intf_party_rec.line_number           := NULL;
19044               intf_party_rec.party_category_code   := G_INSURANCE_AGENT;
19045 
19046               intf_party_rec.party_id              := p_intf_header.agent_id;
19047               intf_party_rec.party_name            := p_intf_header.agent_name;
19048               intf_party_rec.party_number          := p_intf_header.agent_number;
19049               intf_party_rec.party_site_id         := p_intf_header.agent_address_site_id;
19050               intf_party_rec.party_site_name       := p_intf_header.agent_address_site_name;
19051               intf_party_rec.party_site_number     := p_intf_header.agent_address_site_number;
19052               intf_party_rec.intf_party_id         := G_AGENT_ID;
19053               intf_party_rec.intf_party_name       := G_AGENT_NAME;
19054               intf_party_rec.intf_party_number     := G_AGENT_NUMBER;
19055               intf_party_rec.intf_party_site_id    := G_AGENT_ADDRESS_SITE_ID;
19056               intf_party_rec.intf_party_site_name  := G_AGENT_ADDRESS_SITE_NAME;
19057               intf_party_rec.intf_party_site_number:= G_AGENT_ADDRESS_SITE_NUMBER;
19058 
19059 
19060               get_party(
19061                   x_return_status     => x_return_status,
19062                   x_msg_count         => x_msg_count,
19063                   x_msg_data          => x_msg_data,
19064                   p_intf_party_rec    => intf_party_rec,
19065                   x_party_id          => l_intf_header.agent_id,
19066                   x_party_site_id     => l_intf_header.agent_address_site_id
19067                  );
19068 
19069              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19070                 RAISE v_3rd_party_insurance_failed;
19071              END IF;
19072       END IF;
19073       l_progress := 'validate insurance agent name/address site';
19074 
19075 
19076       IF (NVL(p_intf_header.LESSOR_INSURED_FLAG,'N') NOT IN ('Y','N')) THEN
19077            okl_api.set_message(
19078                                G_APP_NAME,
19079                                G_INVALID_VALUE,
19080                                'CONTRACT_NUM',
19081                                p_intf_header.contract_number_old,
19082                                'COL_NAME',
19083                                'LESSOR_INSURED_FLAG',
19084                                'COL_VALUE',
19085                                p_intf_header.LESSOR_INSURED_FLAG
19086                               );
19087 
19088         x_return_status := OKL_API.G_RET_STS_ERROR;
19089 
19090         RAISE v_3rd_party_insurance_failed;
19091       END IF;
19092       l_progress := 'validate LESSOR_INSURED_FLAG';
19093 
19094       IF (NVL(p_intf_header.LESSOR_PAYEE_FLAG,'N') NOT IN ('Y','N')) THEN
19095            okl_api.set_message(
19096                                G_APP_NAME,
19097                                G_INVALID_VALUE,
19098                                'CONTRACT_NUM',
19099                                p_intf_header.contract_number_old,
19100                                'COL_NAME',
19101                                'LESSOR_PAYEE_FLAG',
19102                                'COL_VALUE',
19103                                p_intf_header.LESSOR_PAYEE_FLAG
19104                               );
19105 
19106         x_return_status := OKL_API.G_RET_STS_ERROR;
19107 
19108         RAISE v_3rd_party_insurance_failed;
19109       END IF;
19110       l_progress := 'validate LESSOR_PAYEE_FLAG';
19111 
19112       -- assign to out record
19113       x_intf_header := l_intf_header;
19114 
19115    EXCEPTION
19116       WHEN v_3rd_party_insurance_failed THEN
19117         x_return_status := OKL_API.G_RET_STS_ERROR;
19118         debug_message(l_proc_name ||': '||l_progress);
19119 
19120       WHEN OTHERS THEN
19121         x_return_status := OKL_API.G_RET_STS_ERROR;
19122         debug_message(l_proc_name ||': '||l_progress);
19123 
19124    END validate_3rd_party_insurance;
19125 
19126 ------------------------------------------------------------------------------
19127 -- PROCEDURE create_3rd_party_insurance
19128 -- It create 3rd party insurence policy and
19129 -- stacks Error, if any, and returns ERROR status to calling process.
19130 -- Calls:
19131 --  None
19132 -- Called By:
19133 ------------------------------------------------------------------------------
19134 
19135    PROCEDURE create_3rd_party_insurance (
19136                                    x_return_status   OUT NOCOPY VARCHAR2,
19137                                    x_msg_count       OUT NOCOPY NUMBER,
19138                                    x_msg_data        OUT NOCOPY VARCHAR2,
19139                                    p_intf_header     IN  intf_h_rec_type,
19140                                    p_chr_id          IN  NUMBER
19141                                   ) IS
19142    e_3rd_party_insurance_failed EXCEPTION;
19143 
19144   l_proc_name varchar2(150) := 'OKL_HEADER_INTERFACE: create_3rd_party_insurance';
19145   l_progress  varchar2(150);
19146 
19147   x_intf_header intf_h_rec_type;
19148 
19149   l_ipyv_rec okl_ipy_pvt.ipyv_rec_type;
19150   x_ipyv_rec okl_ipy_pvt.ipyv_rec_type;
19151 
19152    BEGIN
19153 
19154       x_return_status := OKL_API.G_RET_STS_SUCCESS;
19155 --
19156 -- 1. validation
19157 --
19158       validate_3rd_party_insurance(x_return_status  => x_return_status,
19159                                    x_msg_count      => x_msg_count,
19160                                    x_msg_data       => x_msg_data,
19161                                    p_intf_header    => p_intf_header,
19162                                    x_intf_header    => x_intf_header
19163                                   );
19164 
19165 
19166       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19167         raise e_3rd_party_insurance_failed;
19168       END IF;
19169 
19170 --
19171 -- 2. create record
19172 --
19173 
19174       l_ipyv_rec.ipy_type            := 'THIRD_PARTY_POLICY';
19175       l_ipyv_rec.khr_id              := p_chr_id;
19176 
19177       l_ipyv_rec.policy_number       := x_intf_header.POLICY_NUMBER;
19178       l_ipyv_rec.date_from           := x_intf_header.POLICY_EFFECTIVE_FROM;
19179       l_ipyv_rec.date_to             := x_intf_header.POLICY_EFFECTIVE_TO;
19180       l_ipyv_rec.covered_amount      := x_intf_header.COVERED_AMOUNT;
19181       l_ipyv_rec.deductible          := x_intf_header.DEDUCTIBLE_AMOUNT;
19182       l_ipyv_rec.endorsement         := x_intf_header.ENDORSEMENT;
19183       l_ipyv_rec.name_of_insured     := x_intf_header.NAME_OF_INSURED;
19184       l_ipyv_rec.lessor_insured_yn   := x_intf_header.LESSOR_INSURED_FLAG;
19185       l_ipyv_rec.lessor_payee_yn     := x_intf_header.LESSOR_PAYEE_FLAG;
19186 
19187       l_ipyv_rec.isu_id              := x_intf_header.insurance_company_id;
19188       l_ipyv_rec.agency_site_id      := x_intf_header.insurance_company_site_id;
19189 
19190       l_ipyv_rec.int_id              := x_intf_header.agent_id;
19191       l_ipyv_rec.agent_site_id       := x_intf_header.agent_address_site_id;
19192 
19193       l_ipyv_rec.date_proof_required := x_intf_header.PROOF_DUE_DATE;
19194       l_ipyv_rec.date_proof_provided := x_intf_header.PROOF_PROVIDED_DATE;
19195 
19196       OKL_INS_POLICIES_PUB.INSERT_INS_POLICIES(
19197                                                 p_api_version   => 1.0,
19198                                                 p_init_msg_list => OKL_API.G_FALSE,
19199                                                 x_return_status => x_return_status,
19200                                                 x_msg_count     => x_msg_count,
19201                                                 x_msg_data      => x_msg_data,
19202                                                 p_ipyv_rec      => l_ipyv_rec,
19203                                                 x_ipyv_rec      => x_ipyv_rec
19204                                                );
19205 
19206       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19207         RAISE e_3rd_party_insurance_failed;
19208       END IF;
19209       l_progress := 'Create 3rd insurance record';
19210 
19211    EXCEPTION
19212       WHEN e_3rd_party_insurance_failed THEN
19213         x_return_status := OKL_API.G_RET_STS_ERROR;
19214         debug_message(l_proc_name ||': '||l_progress);
19215 
19216       WHEN OTHERS THEN
19217         x_return_status := OKL_API.G_RET_STS_ERROR;
19218         debug_message(l_proc_name ||': '||l_progress);
19219 
19220    END create_3rd_party_insurance;
19221 
19222 -- end cklee 02/16/2004 bug# 3440442
19223 ------------------------------------------------------------------------------
19224 -- PROCEDURE get_vendor_paygroup
19225 -- It returns vendor Pay-group info and
19226 -- stacks Error, if any, and returns ERROR status to calling process.
19227 -- Calls:
19228 --  None
19229 -- Called By:
19230 ------------------------------------------------------------------------------
19231    FUNCTION get_vendor_paygroup(
19232                                x_return_status       OUT NOCOPY VARCHAR2,
19233                                p_contract_number     IN  OKL_HEADER_INTERFACE.CONTRACT_NUMBER_OLD%TYPE,
19234                                p_line_number         IN  OKL_LINES_INTERFACE.LINE_NUMBER%TYPE,
19235 			       p_auth_org_id         IN  OKL_HEADER_INTERFACE.authoring_org_id%TYPE,
19236                                p_vendor_paysite_id   IN  OKL_LINES_INTERFACE.VENDOR_PAYSITE_ID%TYPE
19237                               )
19238    /* RETURN NUMBER IS 13924672 */
19239    RETURN VARCHAR2 IS /* 13924672 */
19240    CURSOR paygroup_csr (p_paysite_id NUMBER,
19241                          p_org_id   NUMBER) IS
19242    SELECT pay_group_lookup_code
19243    FROM   po_vendor_sites_all
19244    WHERE  vendor_site_id = p_vendor_paysite_id
19245    AND    org_id = p_auth_org_id;
19246 
19247    l_paygroup po_vendor_sites_all.pay_group_lookup_code%TYPE;
19248    BEGIN
19249 
19250      x_return_status := OKL_API.G_RET_STS_SUCCESS;
19251 
19252      OPEN paygroup_csr (p_vendor_paysite_id,
19253                          p_auth_org_id);
19254      FETCH paygroup_csr INTO l_paygroup;
19255      IF paygroup_csr%NOTFOUND THEN
19256        CLOSE paygroup_csr;
19257        RETURN NULL;
19258      ELSE
19259        CLOSE paygroup_csr;
19260        RETURN l_paygroup;
19261      END IF;
19262 
19263 
19264    END get_vendor_paygroup;
19265 
19266 ------------------------------------------------------------------------------
19267 -- PROCEDURE process_party_role
19268 -- It Process Party Role Interafce Records at Contract Line level and Header Level as well and
19269 -- stacks Error, if any, and returns ERROR status to calling process.
19270 -- Calls:
19271 --  get_vendor_id
19272 --  get_party_id
19273 --  get_rrd_id
19274 -- Called By:
19275 --  load_input_record
19276 ------------------------------------------------------------------------------
19277    PROCEDURE  process_party_role(
19278                                  x_return_status        OUT NOCOPY VARCHAR2,
19279                                  x_msg_count            OUT NOCOPY NUMBER,
19280                                  x_msg_data             OUT NOCOPY VARCHAR2,
19281                                  p_contract_number      IN  okl_header_interface.contract_number_old%TYPE,
19282                                  p_chr_id               IN  okc_k_headers_v.id%TYPE,
19283                                  p_auth_org_id          IN  okl_header_interface.authoring_org_id%TYPE,
19284                                  p_line_number          IN  okc_k_lines_v.line_number%TYPE,
19285                                  p_line_type            IN  okl_lines_interface.line_type%TYPE,
19286                                  p_fin_cle_id           IN  NUMBER,
19287                                  p_model_cle_id         IN  NUMBER,
19288                                  p_service_line_id      IN  NUMBER,
19289                                  p_fee_line_id          IN  NUMBER,
19290                                  p_usage_line_id        IN  NUMBER,
19291                                  p_asset_vendor_name    IN  okl_party_roles_interface.asset_vendor_name%TYPE,
19292                                  p_asset_vendor_id      IN  okl_party_roles_interface.asset_vendor_id%TYPE,
19293                                  p_service_vendor_name  IN  okl_party_roles_interface.service_vendor_name%TYPE,
19294                                  p_service_vendor_id    IN  okl_party_roles_interface.service_vendor_id%TYPE,
19295                                  p_fees_vendor_name     IN  okl_party_roles_interface.fees_vendor_name%TYPE,
19296                                  p_fees_vendor_id       IN  okl_party_roles_interface.fees_vendor_id%TYPE,
19297                                  p_guarantor_number     IN  okl_party_roles_interface.guarantor_number%TYPE,
19298                                  p_guarantor_id         IN  okl_party_roles_interface.guarantor_id%TYPE,
19299                                  p_dealer_name          IN  okl_party_roles_interface.dealer_name%TYPE,
19300                                  p_dealer_id            IN  okl_party_roles_interface.dealer_id%TYPE,
19301                                  p_guarantor_type       IN  okl_party_roles_interface.guarantor_type%TYPE,
19302                                  p_guarantee_type       IN  okl_party_roles_interface.guarantee_type%TYPE,
19303                                  p_guaranteed_amount    IN  okl_party_roles_interface.guaranteed_amount%TYPE,
19304                                  p_guarantee_date       IN  okl_party_roles_interface.guarantee_date%TYPE,
19305                                  p_guarantee_comment    IN  okl_party_roles_interface.guarantee_comment%TYPE,
19306                                  p_guarantor_site_number IN okl_party_roles_interface.guarantor_site_number%TYPE,
19307                                  p_guarantor_site_id     IN okl_party_roles_interface.guarantor_site_id%TYPE,
19308                                  p_payment_term          IN okl_lines_interface.payment_term%TYPE,
19309                                  p_payment_term_id       IN okl_lines_interface.payment_term_id%TYPE,
19310                                  p_vendor_paysite_id     IN okl_lines_interface.vendor_paysite_id%TYPE,
19311                                  p_vendor_paysite_name   IN okl_lines_interface.vendor_paysite_name%TYPE,
19312                                  p_vendor_payment_method IN okl_lines_interface.vendor_payment_method%TYPE,
19313                                  p_passthrough_percent      IN okl_lines_interface.passthrough_percent%TYPE,
19314                                  p_passthrough_basis_code   IN okl_lines_interface.passthrough_basis_code%TYPE,
19315                                  p_billable_vendor_id       IN okl_party_roles_interface.billable_vendor_id%TYPE,
19316                                  p_billable_vendor_name     IN okl_party_roles_interface.billable_vendor_name%TYPE,
19317                                  p_vend_as_customer_number  IN okl_party_roles_interface.vend_as_customer_number%TYPE,
19318                                  p_vend_as_customer_id      IN okl_party_roles_interface.vend_as_customer_id%TYPE,
19319                                  p_vend_as_cust_acc_id      IN okl_party_roles_interface.vend_as_customer_acc_id%TYPE,
19320                                  p_vend_as_cust_acc_number  IN okl_party_roles_interface.vend_as_customer_acc_number%TYPE,
19321                                  p_vend_bill_to_addr_id     IN okl_party_roles_interface.vend_bill_to_addr_id%TYPE,
19322                                  p_vend_bill_to_addr        IN okl_party_roles_interface.vend_bill_to_addr%TYPE,
19323                                  p_vend_payment_method_id   IN okl_party_roles_interface.vend_payment_method_id%TYPE,
19324                                  p_vend_payment_method      IN okl_party_roles_interface.vend_payment_method%TYPE,
19325                                  p_vend_bank_acc_id         IN okl_party_roles_interface.vend_bank_acc_id%TYPE,
19326                                  p_vend_bank_acc_number     IN okl_party_roles_interface.vend_bank_acc_number%TYPE,
19327                                  p_vend_invoice_format_id      IN okl_party_roles_interface.vend_invoice_format_id%TYPE,
19328                                  p_vend_invoice_format_code    IN okl_party_roles_interface.vend_invoice_format_code%TYPE,
19329                                  p_vend_review_invoice_flag    IN okl_party_roles_interface.vend_review_invoice_flag%TYPE,
19330                                  p_vend_reason_for_inv_review  IN okl_party_roles_interface.vend_reason_for_inv_review%TYPE,
19331                                  p_vend_inv_review_until_date  IN okl_party_roles_interface.vend_inv_review_until_date%TYPE,
19332                                  p_pth_base_vendor_site_code   IN okl_party_roles_interface.pth_base_vendor_site_code%TYPE,
19333                                  p_pth_base_vendor_site_id     IN okl_party_roles_interface.pth_base_vendor_site_id%TYPE,
19334                                  p_pth_base_paygroup_code      IN okl_party_roles_interface.pth_base_paygroup_code%TYPE,
19335                                  p_pth_base_pmnt_term_code     IN okl_party_roles_interface.pth_base_pmnt_term_code%TYPE,
19336                                  p_pth_base_pmnt_term_id       IN okl_party_roles_interface.pth_base_pmnt_term_id%TYPE,
19337                                  p_pth_base_pmnt_basis         IN okl_party_roles_interface.pth_base_pmnt_basis%TYPE,
19338                                  p_pth_base_pmnt_start_date    IN okl_party_roles_interface.pth_base_pmnt_start_date%TYPE,
19339                                  p_pth_base_pmnt_method_code   IN okl_party_roles_interface.pth_base_pmnt_method_code%TYPE,
19340                                  p_pth_base_pmnt_freq          IN okl_party_roles_interface.pth_base_pmnt_freq%TYPE,
19341                                  p_pth_base_pmnt_remit_days    IN okl_party_roles_interface.pth_base_pmnt_remit_days%TYPE,
19342                                  p_pth_base_disb_basis         IN okl_party_roles_interface.pth_base_disb_basis%TYPE,
19343                                  p_pth_base_disb_fixed_amount  IN okl_party_roles_interface.pth_base_disb_fixed_amount%TYPE,
19344                                  p_pth_base_disb_pct           IN okl_party_roles_interface.pth_base_disb_pct%TYPE,
19345                                  p_pth_base_proc_fee_basis     IN okl_party_roles_interface.pth_base_proc_fee_basis%TYPE,
19346                                  p_pth_base_proc_fee_fixed_amt IN okl_party_roles_interface.pth_base_proc_fee_fixed_amt%TYPE,
19347                                  p_pth_base_proc_pct           IN okl_party_roles_interface.pth_base_proc_pct%TYPE,
19348                                  p_pth_evg_vendor_site_code    IN okl_party_roles_interface.pth_evg_vendor_site_code%TYPE,
19349                                  p_pth_evg_vendor_site_id      IN okl_party_roles_interface.pth_evg_vendor_site_id%TYPE,
19350                                  p_pth_evg_paygroup_code       IN okl_party_roles_interface.pth_evg_paygroup_code%TYPE,
19351                                  p_pth_evg_pmnt_term_code      IN okl_party_roles_interface.pth_evg_pmnt_term_code%TYPE,
19352                                  p_pth_evg_pmnt_term_id        IN okl_party_roles_interface.pth_evg_pmnt_term_id%TYPE,
19353                                  p_pth_evg_pmnt_basis          IN okl_party_roles_interface.pth_evg_pmnt_basis%TYPE,
19354                                  p_pth_evg_pmnt_start_date     IN okl_party_roles_interface.pth_evg_pmnt_start_date%TYPE,
19355                                  p_pth_evg_pmnt_method_code    IN okl_party_roles_interface.pth_evg_pmnt_method_code%TYPE,
19356                                  p_pth_evg_pmnt_freq           IN okl_party_roles_interface.pth_evg_pmnt_freq%TYPE,
19357                                  p_pth_evg_pmnt_remit_days     IN okl_party_roles_interface.pth_evg_pmnt_remit_days%TYPE,
19358                                  p_pth_evg_disb_basis          IN okl_party_roles_interface.pth_evg_disb_basis%TYPE,
19359                                  p_pth_evg_disb_fixed_amount   IN okl_party_roles_interface.pth_evg_disb_fixed_amount%TYPE,
19360                                  p_pth_evg_disb_pct            IN okl_party_roles_interface.pth_evg_disb_pct%TYPE,
19361                                  p_pth_evg_proc_fee_basis      IN okl_party_roles_interface.pth_evg_proc_fee_basis%TYPE,
19362                                  p_pth_evg_proc_fee_fixed_amt  IN okl_party_roles_interface.pth_evg_proc_fee_fixed_amt%TYPE,
19363                                  p_pth_evg_proc_pct            IN okl_party_roles_interface.pth_evg_proc_pct%TYPE,
19364                                  p_attribute_category          IN okl_party_roles_interface.attribute_category%TYPE,
19365                                  p_attribute1                  IN okl_party_roles_interface.attribute1%TYPE,
19366                                  p_attribute2                  IN okl_party_roles_interface.attribute2%TYPE,
19367                                  p_attribute3                  IN okl_party_roles_interface.attribute3%TYPE,
19368                                  p_attribute4                  IN okl_party_roles_interface.attribute4%TYPE,
19369                                  p_attribute5                  IN okl_party_roles_interface.attribute5%TYPE,
19370                                  p_attribute6                  IN okl_party_roles_interface.attribute6%TYPE,
19371                                  p_attribute7                  IN okl_party_roles_interface.attribute7%TYPE,
19372                                  p_attribute8                  IN okl_party_roles_interface.attribute8%TYPE,
19373                                  p_attribute9                  IN okl_party_roles_interface.attribute9%TYPE,
19374                                  p_attribute10                 IN okl_party_roles_interface.attribute10%TYPE,
19375                                  p_attribute11                 IN okl_party_roles_interface.attribute11%TYPE,
19376                                  p_attribute12                 IN okl_party_roles_interface.attribute12%TYPE,
19377                                  p_attribute13                 IN okl_party_roles_interface.attribute13%TYPE,
19378                                  p_attribute14                 IN okl_party_roles_interface.attribute14%TYPE,
19379                                  p_attribute15                 IN okl_party_roles_interface.attribute15%TYPE
19380                                 ) IS
19381    l_proc_name         VARCHAR2(35) := 'PROCESS_PARTY_ROLE';
19382    party_role_failed   EXCEPTION;
19383    l_progress          VARCHAR2(10);
19384 
19385    p_cplv_rec          cplv_rec_type;
19386    x_cplv_rec          cplv_rec_type;
19387    l_rgpv_rec          rgpv_rec_type;
19388    x_rgpv_rec          rgpv_rec_type;
19389    l_rulv_rec          rulv_rec_type;
19390    x_rulv_rec          rulv_rec_type;
19391    l_rmpv_rec          rmpv_rec_type;
19392    x_rmpv_rec          rmpv_rec_type;
19393    l_rgp_id            NUMBER;
19394 
19395    x_asset_vendor_id   NUMBER := NULL;
19396    x_service_vendor_id NUMBER := NULL;
19397    x_fees_vendor_id    NUMBER := NULL;
19398    x_guarantor_id      NUMBER := NULL;
19399    x_rrd_id            NUMBER := NULL;
19400    x_guarantor_site_id NUMBER;
19401    x_payment_term_id1   VARCHAR2(240);
19402    x_pay_site_id1       VARCHAR2(240);
19403    x_payment_method_id1 VARCHAR2(240);
19404 
19405    CURSOR customer_csr (p_customer_number OKX_PARTIES_V.PARTY_NUMBER%TYPE,
19406                         p_customer_id     OKX_PARTIES_V.ID1%TYPE) IS
19407    SELECT id1
19408    FROM   okx_parties_v
19409    WHERE  ((party_number = p_customer_number
19410             AND
19411             p_customer_number IS NOT NULL
19412            )
19413            OR
19414            (id1          = p_customer_id
19415             AND
19416             p_customer_id IS NOT NULL
19417            )
19418           );
19419 
19420    CURSOR pmnt_basis_csr (p_payment_basis OKL_PARTY_PAYMENT_DTLS.payment_basis%TYPE) IS
19421    SELECT 'Y'
19422    FROM  FND_LOOKUPS
19423    WHERE lookup_type = 'OKL_PAYMENT_BASIS'
19424    AND   nvl(enabled_flag,'N') = 'Y'
19425    AND   sysdate between nvl(start_date_active,sysdate) and nvl(end_date_active,sysdate)
19426    AND   lookup_code = p_payment_basis;
19427 
19428    CURSOR disb_basis_csr (p_disbursement_basis OKL_PARTY_PAYMENT_DTLS.disbursement_basis%TYPE) IS
19429    SELECT 'Y'
19430    FROM  FND_LOOKUPS
19431    WHERE lookup_type = 'OKL_DISBURSE_BASIS'
19432    AND   nvl(enabled_flag,'N') = 'Y'
19433    AND   sysdate between nvl(start_date_active,sysdate) and nvl(end_date_active,sysdate)
19434    AND   lookup_code = p_disbursement_basis;
19435 
19436    CURSOR proc_fee_basis_csr (p_processing_fee_basis OKL_PARTY_PAYMENT_DTLS.disbursement_basis%TYPE) IS
19437    SELECT 'Y'
19438    FROM  FND_LOOKUPS
19439    WHERE lookup_type = 'OKL_PROC_FEE_BASIS'
19440    AND   nvl(enabled_flag,'N') = 'Y'
19441    AND   sysdate between nvl(start_date_active,sysdate) and nvl(end_date_active,sysdate)
19442    AND   lookup_code = p_processing_fee_basis;
19443 
19444    l_vend_cust_id           NUMBER;
19445    l_vend_cust_acc_id       NUMBER;
19446    x_billable_vendor_id     NUMBER;
19447    l_vend_bill_to_addr_id   NUMBER;
19448    l_vend_payment_method_id NUMBER;
19449    l_vend_bank_acc_id       NUMBER;
19450    l_vend_invoice_format_id NUMBER;
19451    l_vend_invoice_format_name VARCHAR2(450);
19452 
19453    -- pass through
19454    l_paygroup_code      po_vendor_sites_all.pay_group_lookup_code%TYPE;
19455    l_base_pmnt_dtls_rec    ppydv_rec_type;
19456    l_evg_pmnt_dtls_rec     ppydv_rec_type;
19457    l_pmnt_dtls_tbl_in      ppydv_tbl_type;
19458    l_pmnt_dtls_tbl_out     ppydv_tbl_type;
19459    l_counter               NUMBER := 0;
19460    rec_exists_yn           VARCHAR2(1);
19461 
19462    l_kplv_rec              kplv_rec_type;
19463    x_kplv_rec              kplv_rec_type;
19464 
19465    l_evg_cont_pmnt_dtls_rec  ppydv_rec_type;
19466    l_cont_pmnt_dtls_tbl_in   ppydv_tbl_type;
19467    l_cont_pmnt_dtls_tbl_out  ppydv_tbl_type;
19468    BEGIN
19469 
19470       x_return_status := OKL_API.G_RET_STS_SUCCESS;
19471       debug_message(l_proc_name);
19472 
19473       IF (p_asset_vendor_id IS NOT NULL) THEN
19474         x_asset_vendor_id := p_asset_vendor_id;
19475       ELSIF (p_asset_vendor_name IS NOT NULL) THEN
19476         get_vendor_id (
19477                        x_return_status     => x_return_status,
19478                        x_msg_count         => x_msg_count,
19479                        x_msg_data          => x_msg_data,
19480                        p_contract_number   => p_contract_number,
19481                        p_line_number       => p_line_number,
19482                        x_vendor_id         => x_asset_vendor_id,
19483                        p_vendor_name       => p_asset_vendor_name
19484                       );
19485         IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19486            RAISE party_role_failed;
19487         END IF;
19488       END IF;
19489 
19490       IF (p_billable_vendor_id IS NOT NULL
19491           OR
19492           p_billable_vendor_name IS NOT NULL) THEN
19493 
19494          IF (p_vend_as_customer_id IS NOT NULL
19495              OR
19496              p_vend_as_customer_number IS NOT NULL) THEN
19497 
19498              OPEN customer_csr(p_vend_as_customer_number,
19499                                p_vend_as_customer_id);
19500 
19501              FETCH customer_csr INTO l_vend_cust_id;
19502              IF customer_csr%NOTFOUND THEN
19503                 okl_api.set_message(
19504                              G_APP_NAME,
19505                              G_INVALID_VALUE,
19506                              'CONTRACT_NUM',
19507                              p_contract_number,
19508                              'COL_NAME',
19509                              'VENDOR AS CUSTOMER ACCOUNT',
19510                              'COL_VALUE',
19511                               p_vend_as_customer_id||', '||p_vend_as_customer_number
19512                              );
19513                  x_return_status := OKL_API.G_RET_STS_ERROR;
19514                  RAISE party_role_failed;
19515              END IF;
19516 
19517              CLOSE customer_csr;
19518          ELSE
19519              okl_api.set_message(
19520                                  G_APP_NAME,
19521                                  G_MISSING_VALUE,
19522                                  'CONTRACT_NUM',
19523                                  p_contract_number,
19524                                  'COL_NAME',
19525                                  'VENDOR AS CUSTOMER'
19526                                 );
19527               x_return_status := OKL_API.G_RET_STS_ERROR;
19528               RAISE party_role_failed;
19529          END IF; -- Vend as customer
19530 
19531          IF (p_vend_as_cust_acc_id IS NOT NULL
19532              OR
19533              p_vend_as_cust_acc_number IS NOT NULL) THEN
19534 
19535              get_customer_account_id(
19536                                   x_return_status           => x_return_status,
19537                                   x_msg_count               => x_msg_count,
19538                                   x_msg_data                => x_msg_data,
19539                                   p_contract_number         => p_contract_number,
19540                                   p_customer_id             => l_vend_cust_id,
19541                                   p_customer_account_id     => p_vend_as_cust_acc_id,
19542                                   p_customer_account_number => p_vend_as_cust_acc_number,
19543                                   x_customer_account_id     => l_vend_cust_acc_id
19544                                  );
19545 
19546              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19547                 x_return_status := OKL_API.G_RET_STS_ERROR;
19548                 raise party_role_failed;
19549              END IF;
19550 
19551              debug_message('------>l_vend_cust_acc_id : '||l_vend_cust_acc_id);
19552          ELSE
19553              okl_api.set_message(
19554                                  G_APP_NAME,
19555                                  G_MISSING_VALUE,
19556                                  'CONTRACT_NUM',
19557                                  p_contract_number,
19558                                  'COL_NAME',
19559                                  'VENDOR AS CUSTOMER ACCOUNT'
19560                                 );
19561               x_return_status := OKL_API.G_RET_STS_ERROR;
19562               RAISE party_role_failed;
19563          END IF; -- vend as cust acct
19564 
19565          IF (p_vend_bill_to_addr_id IS NOT NULL
19566              OR
19567              p_vend_bill_to_addr IS NOT NULL) THEN
19568             get_bill_to_address_id(
19569                              x_return_status           => x_return_status,
19570                              x_msg_count               => x_msg_count,
19571                              x_msg_data                => x_msg_data,
19572                              p_contract_number         => p_contract_number,
19573                              p_auth_org_id             => p_auth_org_id,
19574                              p_bill_to_address_id      => p_vend_bill_to_addr_id,
19575                              p_bill_to_address         => p_vend_bill_to_addr,
19576                              p_customer_account_id     => l_vend_cust_acc_id,
19577                              x_bill_to_address_id      => l_vend_bill_to_addr_id
19578                             );
19579 
19580             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19581                x_return_status := OKL_API.G_RET_STS_ERROR;
19582                raise party_role_failed;
19583             END IF;
19584          ELSE
19585              okl_api.set_message(
19586                                  G_APP_NAME,
19587                                  G_MISSING_VALUE,
19588                                  'CONTRACT_NUM',
19589                                  p_contract_number,
19590                                  'COL_NAME',
19591                                  'VENDOR BILL TO ADDRESS'
19592                                 );
19593               x_return_status := OKL_API.G_RET_STS_ERROR;
19594               RAISE party_role_failed;
19595          END IF; -- vend bill to addr
19596 
19597       END IF; -- billable vendor info
19598 
19599       debug_message('------>l_vend_bill_to_addr_id : '||l_vend_bill_to_addr_id);
19600       debug_message('------> Asset Vendor id: '||x_asset_vendor_id);
19601 
19602       IF (x_asset_vendor_id IS NOT NULL) THEN
19603          p_cplv_rec                   := NULL;
19604 
19605          IF (p_line_number IS NOT NULL) THEN
19606             p_cplv_rec.chr_id            := NULL;
19607             p_cplv_rec.dnz_chr_id        := p_chr_id;
19608 	    IF ((p_pth_evg_vendor_site_code is NOT NULL) OR
19609 	        (p_pth_evg_vendor_site_id is NOT NULL)) THEN
19610                 p_cplv_rec.cle_id            := p_fin_cle_id;   -- PASS THROUGH VENDOR
19611 	    ELSE
19612                 p_cplv_rec.cle_id            := p_model_cle_id; -- ASSET VENDOR
19613 	    END IF;
19614          ELSE
19615             p_cplv_rec.chr_id            := p_chr_id;
19616             p_cplv_rec.dnz_chr_id        := p_chr_id;
19617             p_cplv_rec.cle_id            := NULL;
19618 
19619             -- Contract addl field, Bug 4558486, for party role at header level and asset vendor only
19620 
19621             debug_message('Party role DFF...'||'Vendor name/id: '||p_asset_vendor_name||'/'||p_asset_vendor_id);
19622 
19623             l_kplv_rec.validate_dff_yn          := 'Y';  -- always validate DFF
19624             l_kplv_rec.attribute_category       := p_attribute_category;
19625             debug_message('attribute_category: '||l_kplv_rec.attribute_category);
19626             l_kplv_rec.attribute1               := p_attribute1;
19627             debug_message('attribute1: '||l_kplv_rec.attribute1);
19628             l_kplv_rec.attribute2               := p_attribute2;
19629             debug_message('attribute2: '||l_kplv_rec.attribute2);
19630             l_kplv_rec.attribute3               := p_attribute3;
19631             l_kplv_rec.attribute4               := p_attribute4;
19632             l_kplv_rec.attribute5               := p_attribute5;
19633             l_kplv_rec.attribute6               := p_attribute6;
19634             l_kplv_rec.attribute7               := p_attribute7;
19635             l_kplv_rec.attribute8               := p_attribute8;
19636             l_kplv_rec.attribute9               := p_attribute9;
19637             l_kplv_rec.attribute10              := p_attribute10;
19638             l_kplv_rec.attribute11              := p_attribute11;
19639             l_kplv_rec.attribute12              := p_attribute12;
19640             l_kplv_rec.attribute13              := p_attribute13;
19641             l_kplv_rec.attribute14              := p_attribute14;
19642             l_kplv_rec.attribute15              := p_attribute15;
19643             -- Contract addl field, Bug 4558486
19644 
19645          END IF;
19646 
19647          p_cplv_rec.object1_id1       := TO_CHAR(x_asset_vendor_id);
19648          p_cplv_rec.object1_id2       := '#';
19649          p_cplv_rec.jtot_object1_code := 'OKX_VENDOR';
19650          p_cplv_rec.rle_code          := 'OKL_VENDOR';
19651 
19652          p_cplv_rec.bill_to_site_use_id := l_vend_bill_to_addr_id;
19653          p_cplv_rec.cust_acct_id        := l_vend_cust_acc_id;
19654 
19655          --OKL_OKC_MIGRATION_PVT.create_k_party_role( -- Bug 4558486
19656          OKL_K_PARTY_ROLES_PVT.create_k_party_role(
19657                                                 p_api_version   => 1.0,
19658                                                 p_init_msg_list => OKL_API.G_FALSE,
19659                                                 x_return_status => x_return_status,
19660                                                 x_msg_count     => x_msg_count,
19661                                                 x_msg_data      => x_msg_data,
19662                                                 p_cplv_rec      => p_cplv_rec,
19663                                                 p_kplv_rec      => l_kplv_rec,
19664                                                 x_cplv_rec      => x_cplv_rec,
19665                                                 x_kplv_rec      => x_kplv_rec
19666                                                );
19667 
19668          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19669             RAISE party_role_failed;
19670          END IF;
19671       END IF; -- asset vendor
19672 
19673       debug_message('------>Asset vendor processed');
19674 
19675       -- Evergreen Passthru at header
19676       IF (g_evg_cont_pmnt_hdr.id IS NOT NULL) THEN
19677         NULL;
19678       END IF;
19679 
19680       -- Evergreen Passthru at header
19681 
19682       IF (p_line_type = 'SERVICE') THEN
19683       IF (p_service_vendor_id IS NOT NULL) THEN
19684           x_service_vendor_id := p_service_vendor_id;
19685       ELSIF (p_service_vendor_name IS NOT NULL) THEN
19686           get_vendor_id (
19687                        x_return_status     => x_return_status,
19688                        x_msg_count         => x_msg_count,
19689                        x_msg_data          => x_msg_data,
19690                        p_contract_number   => p_contract_number,
19691                        p_line_number       => p_line_number,
19692                        x_vendor_id         => x_service_vendor_id,
19693                        p_vendor_name       => p_service_vendor_name
19694                       );
19695            IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19696               RAISE party_role_failed;
19697            END IF;
19698       END IF;
19699 
19700       IF (x_service_vendor_id IS NOT NULL) THEN
19701            p_cplv_rec                   := NULL;
19702            l_kplv_rec                   := NULL;
19703 
19704            IF (p_line_number IS NOT NULL) THEN
19705               p_cplv_rec.chr_id            := NULL;
19706               p_cplv_rec.dnz_chr_id        := p_chr_id;
19707               p_cplv_rec.cle_id            := p_service_line_id;
19708            ELSE
19709               p_cplv_rec.chr_id            := p_chr_id;
19710               p_cplv_rec.dnz_chr_id        := p_chr_id;
19711               p_cplv_rec.cle_id            := NULL;
19712            END IF;
19713            p_cplv_rec.object1_id1       := TO_CHAR(x_service_vendor_id);
19714            p_cplv_rec.object1_id2       := '#';
19715            p_cplv_rec.jtot_object1_code := 'OKX_VENDOR';
19716            p_cplv_rec.rle_code          := 'OKL_VENDOR';
19717 
19718            p_cplv_rec.bill_to_site_use_id := l_vend_bill_to_addr_id;
19719            p_cplv_rec.cust_acct_id        := l_vend_cust_acc_id;
19720 
19721            OKL_K_PARTY_ROLES_PVT.create_k_party_role(
19722                                                 p_api_version   => 1.0,
19723                                                 p_init_msg_list => OKL_API.G_FALSE,
19724                                                 x_return_status => x_return_status,
19725                                                 x_msg_count     => x_msg_count,
19726                                                 x_msg_data      => x_msg_data,
19727                                                 p_cplv_rec      => p_cplv_rec,
19728                                                 p_kplv_rec      => l_kplv_rec,
19729                                                 x_cplv_rec      => x_cplv_rec,
19730                                                 x_kplv_rec      => x_kplv_rec
19731                                                );
19732 
19733            IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19734                RAISE party_role_failed;
19735            END IF;
19736 
19737            debug_message('------>Party Roles Created');
19738 
19739 /* Passthru is moved to OKL table,do not need rule group LAPSTH
19740 
19741            okl_contract_top_line_pub.validate_passthru_rule(
19742                                   p_api_version         => 1.0,
19743                                   p_init_msg_list       => OKL_API.G_FALSE,
19744                                   x_return_status       => x_return_status,
19745                                   x_msg_count           => x_msg_count,
19746                                   x_msg_data            => x_msg_data,
19747                                   p_line_id             => p_service_line_id,
19748                                   p_vendor_id           => x_service_vendor_id,
19749                                   p_payment_term        => p_payment_term,
19750                                   p_payment_term_id     => p_payment_term_id,
19751                                   p_pay_to_site         => p_vendor_paysite_name,
19752                                   p_pay_to_site_id      => p_vendor_paysite_id,
19753                                   p_payment_method_code => p_vendor_payment_method,
19754                                   x_payment_term_id1    => x_payment_term_id1,
19755                                   x_pay_site_id1        => x_pay_site_id1,
19756                                   x_payment_method_id1  => x_payment_method_id1
19757                                  );
19758 
19759             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19760                RAISE party_role_failed;
19761             END IF;
19762          -- Rule Group LAPSTH
19763          l_rgpv_rec            := NULL;
19764          l_rgp_id              := NULL;
19765          l_rgpv_rec.rgd_code   := 'LAPSTH';
19766          l_rgpv_rec.chr_id     := NULL;
19767          l_rgpv_rec.dnz_chr_id := p_chr_id;
19768          l_rgpv_rec.cle_id     := p_service_line_id;
19769          l_rgpv_rec.rgp_type   := 'KRG';
19770 
19771          l_rulv_rec := NULL;
19772 
19773          --debug_message('Term: '||x_payment_term_id1);
19774 
19775          IF (x_payment_term_id1 IS NOT NULL) THEN
19776 
19777             l_rulv_rec.jtot_object1_code         := 'OKX_PPAYTERM';
19778             l_rulv_rec.object1_id1               := x_payment_term_id1;
19779             l_rulv_rec.object1_id2               := '#';
19780             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
19781             l_rulv_rec.dnz_chr_id                := p_chr_id;
19782             l_rulv_rec.rule_information_category := 'LAPTR';
19783             l_rulv_rec.std_template_yn           := 'N';
19784             l_rulv_rec.warn_yn                   := 'N';
19785          END IF;
19786 
19787          create_rule_group_and_rule(
19788                                     x_return_status => x_return_status,
19789                                     x_msg_count     => x_msg_count,
19790                                     x_msg_data      => x_msg_data,
19791                                     p_rgp_id        => l_rgp_id,
19792                                     p_rgpv_rec      => l_rgpv_rec,
19793                                     p_rulv_rec      => l_rulv_rec,
19794                                     x_rgpv_rec      => x_rgpv_rec,
19795                                     x_rulv_rec      => x_rulv_rec
19796                                    );
19797          l_progress := '1.2';
19798          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19799              raise party_role_failed;
19800          END IF;
19801 
19802          debug_message('------>Rule: LAPSTH/LAPTR processed');
19803 
19804          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
19805             l_rgp_id := x_rgpv_rec.id;
19806          END IF;
19807 
19808          l_rulv_rec := NULL;
19809          --debug_message('Site: '||x_pay_site_id1);
19810          IF (x_pay_site_id1 IS NOT NULL) THEN
19811 
19812             l_rulv_rec.jtot_object1_code         := 'OKX_PAYTO';
19813             l_rulv_rec.object1_id1               := x_pay_site_id1;
19814             l_rulv_rec.object1_id2               := '#';
19815             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
19816             l_rulv_rec.dnz_chr_id                := p_chr_id;
19817             l_rulv_rec.rule_information_category := 'LAPTO';
19818             l_rulv_rec.std_template_yn           := 'N';
19819             l_rulv_rec.warn_yn                   := 'N';
19820          END IF;
19821 
19822          create_rule_group_and_rule(
19823                                     x_return_status => x_return_status,
19824                                     x_msg_count     => x_msg_count,
19825                                     x_msg_data      => x_msg_data,
19826                                     p_rgp_id        => l_rgp_id,
19827                                     p_rgpv_rec      => l_rgpv_rec,
19828                                     p_rulv_rec      => l_rulv_rec,
19829                                     x_rgpv_rec      => x_rgpv_rec,
19830                                     x_rulv_rec      => x_rulv_rec
19831                                    );
19832          l_progress := '1.2';
19833          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19834              raise party_role_failed;
19835          END IF;
19836 
19837          debug_message('------>Rule: LAPSTH/LAPTO processed');
19838          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
19839             l_rgp_id := x_rgpv_rec.id;
19840          END IF;
19841 
19842          l_rulv_rec := NULL;
19843          --debug_message('Pay method: '||x_payment_method_id1);
19844          IF (x_payment_method_id1 IS NOT NULL) THEN
19845 
19846 
19847             --l_rulv_rec.jtot_object1_code         := 'OKX_PPAYTERM';
19848             --l_rulv_rec.object1_id1               := x_payment_method_id1;
19849             --l_rulv_rec.object1_id2               := '#';
19850 
19851             l_rulv_rec.rule_information1         := x_payment_method_id1;
19852             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
19853             l_rulv_rec.dnz_chr_id                := p_chr_id;
19854             l_rulv_rec.rule_information_category := 'LAVPMT';
19855             l_rulv_rec.std_template_yn           := 'N';
19856             l_rulv_rec.warn_yn                   := 'N';
19857          END IF;
19858 
19859          create_rule_group_and_rule(
19860                                     x_return_status => x_return_status,
19861                                     x_msg_count     => x_msg_count,
19862                                     x_msg_data      => x_msg_data,
19863                                     p_rgp_id        => l_rgp_id,
19864                                     p_rgpv_rec      => l_rgpv_rec,
19865                                     p_rulv_rec      => l_rulv_rec,
19866                                     x_rgpv_rec      => x_rgpv_rec,
19867                                     x_rulv_rec      => x_rulv_rec
19868                                    );
19869          l_progress := '1.2';
19870          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19871              raise party_role_failed;
19872          END IF;
19873 
19874          debug_message('------>Rule: LAPSTH/LAVPMT processed');
19875          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
19876             l_rgp_id := x_rgpv_rec.id;
19877          END IF;
19878 
19879          l_rulv_rec := NULL;
19880 
19881          IF (p_passthrough_percent IS NOT NULL) THEN
19882             l_rulv_rec.rule_information1         := p_passthrough_percent;
19883             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
19884             l_rulv_rec.dnz_chr_id                := p_chr_id;
19885             l_rulv_rec.rule_information_category := 'LAPTPR';
19886             l_rulv_rec.std_template_yn           := 'N';
19887             l_rulv_rec.warn_yn                   := 'N';
19888          END IF;
19889 
19890          create_rule_group_and_rule(
19891                                  x_return_status => x_return_status,
19892                                  x_msg_count     => x_msg_count,
19893                                  x_msg_data      => x_msg_data,
19894                                  p_rgp_id        => l_rgp_id,
19895                                  p_rgpv_rec      => l_rgpv_rec,
19896                                  p_rulv_rec      => l_rulv_rec,
19897                                  x_rgpv_rec      => x_rgpv_rec,
19898                                  x_rulv_rec      => x_rulv_rec
19899                                 );
19900 
19901          l_progress := '1.5';
19902          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19903              raise party_role_failed;
19904          END IF;
19905 
19906          debug_message('------>Rule: LAPSTH/LAPTRP processed');
19907 
19908          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
19909             l_rgp_id := x_rgpv_rec.id;
19910          END IF;
19911 
19912          l_rulv_rec            := NULL;
19913          IF (p_passthrough_basis_code IS NOT NULL) THEN
19914             l_rulv_rec.rule_information1         := p_passthrough_basis_code;
19915             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
19916             l_rulv_rec.dnz_chr_id                := p_chr_id;
19917             l_rulv_rec.rule_information_category := 'LAPTBC';
19918             l_rulv_rec.std_template_yn           := 'N';
19919             l_rulv_rec.warn_yn                   := 'N';
19920          END IF;
19921 
19922          create_rule_group_and_rule(
19923                                  x_return_status => x_return_status,
19924                                  x_msg_count     => x_msg_count,
19925                                  x_msg_data      => x_msg_data,
19926                                  p_rgp_id        => l_rgp_id,
19927                                  p_rgpv_rec      => l_rgpv_rec,
19928                                  p_rulv_rec      => l_rulv_rec,
19929                                  x_rgpv_rec      => x_rgpv_rec,
19930                                  x_rulv_rec      => x_rulv_rec
19931                                 );
19932 
19933          l_progress := '1.6';
19934          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19935              raise party_role_failed;
19936          END IF;
19937 
19938          debug_message('------>Rule: LAPSTH/LAPTBC processed');
19939          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
19940             l_rgp_id := x_rgpv_rec.id;
19941          END IF;
19942 */
19943       END IF; -- service vendor
19944 
19945       END IF;
19946 
19947       --debug_message('Fees vendor: '||p_fees_vendor_name);
19948       --debug_message('Line Type: '|| p_line_type);
19949 
19950       IF (p_line_type = 'FEE') THEN
19951          --debug_message('Inside FEE line type');
19952       IF (p_fees_vendor_id IS NOT NULL) THEN
19953            x_fees_vendor_id := p_fees_vendor_id;
19954       ELSIF (p_fees_vendor_name IS NOT NULL) THEN
19955            get_vendor_id (
19956                        x_return_status     => x_return_status,
19957                        x_msg_count         => x_msg_count,
19958                        x_msg_data          => x_msg_data,
19959                        p_contract_number   => p_contract_number,
19960                        p_line_number       => p_line_number,
19961                        x_vendor_id         => x_fees_vendor_id,
19962                        p_vendor_name       => p_fees_vendor_name
19963                       );
19964            IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19965               RAISE party_role_failed;
19966            END IF;
19967       END IF;
19968 
19969       debug_message('------>FEE Vendor ID: '||x_fees_vendor_id);
19970       IF (x_fees_vendor_id IS NOT NULL) THEN
19971 
19972            p_cplv_rec                   := NULL;
19973            l_kplv_rec                   := NULL;
19974 
19975            IF (p_line_number IS NOT NULL) THEN
19976               p_cplv_rec.chr_id            := NULL;
19977               p_cplv_rec.dnz_chr_id        := p_chr_id;
19978               p_cplv_rec.cle_id            := p_fee_line_id;
19979            ELSE
19980               p_cplv_rec.chr_id            := p_chr_id;
19981               p_cplv_rec.dnz_chr_id        := p_chr_id;
19982               p_cplv_rec.cle_id            := NULL;
19983            END IF;
19984            p_cplv_rec.object1_id1       := TO_CHAR(x_fees_vendor_id);
19985            p_cplv_rec.object1_id2       := '#';
19986            p_cplv_rec.jtot_object1_code := 'OKX_VENDOR';
19987            p_cplv_rec.rle_code          := 'OKL_VENDOR';
19988 
19989            p_cplv_rec.bill_to_site_use_id := l_vend_bill_to_addr_id;
19990            p_cplv_rec.cust_acct_id        := l_vend_cust_acc_id;
19991 
19992            OKL_K_PARTY_ROLES_PVT.create_k_party_role(
19993                                                 p_api_version   => 1.0,
19994                                                 p_init_msg_list => OKL_API.G_FALSE,
19995                                                 x_return_status => x_return_status,
19996                                                 x_msg_count     => x_msg_count,
19997                                                 x_msg_data      => x_msg_data,
19998                                                 p_cplv_rec      => p_cplv_rec,
19999                                                 p_kplv_rec      => l_kplv_rec,
20000                                                 x_cplv_rec      => x_cplv_rec,
20001                                                 x_kplv_rec      => x_kplv_rec
20002                                                );
20003 
20004            IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20005                RAISE party_role_failed;
20006            END IF;
20007 
20008            debug_message('------>Fee Vendor Processed');
20009 
20010 /* Passthru is moved to OKL table,do not need rule group LAPSTH
20011 
20012            okl_contract_top_line_pub.validate_passthru_rule(
20013                                   p_api_version         => 1.0,
20014                                   p_init_msg_list       => OKL_API.G_FALSE,
20015                                   x_return_status       => x_return_status,
20016                                   x_msg_count           => x_msg_count,
20017                                   x_msg_data            => x_msg_data,
20018                                   p_line_id             => p_fee_line_id,
20019                                   p_vendor_id           => x_fees_vendor_id,
20020                                   p_payment_term        => p_payment_term,
20021                                   p_payment_term_id     => p_payment_term_id,
20022                                   p_pay_to_site         => p_vendor_paysite_name,
20023                                   p_pay_to_site_id      => p_vendor_paysite_id,
20024                                   p_payment_method_code => p_vendor_payment_method,
20025                                   x_payment_term_id1    => x_payment_term_id1,
20026                                   x_pay_site_id1        => x_pay_site_id1,
20027                                   x_payment_method_id1  => x_payment_method_id1
20028                                  );
20029 
20030             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20031                RAISE party_role_failed;
20032             END IF;
20033 
20034          -- Rule Group LAPSTH
20035          l_rgpv_rec            := NULL;
20036          l_rgp_id              := NULL;
20037          l_rgpv_rec.rgd_code   := 'LAPSTH';
20038          l_rgpv_rec.chr_id     := NULL;
20039          l_rgpv_rec.dnz_chr_id := p_chr_id;
20040          l_rgpv_rec.cle_id     := p_fee_line_id;
20041          l_rgpv_rec.rgp_type   := 'KRG';
20042 
20043          l_rulv_rec := NULL;
20044 
20045          --debug_message('Term: '||x_payment_term_id1);
20046 
20047          IF (x_payment_term_id1 IS NOT NULL) THEN
20048 
20049             l_rulv_rec.jtot_object1_code         := 'OKX_PPAYTERM';
20050             l_rulv_rec.object1_id1               := x_payment_term_id1;
20051             l_rulv_rec.object1_id2               := '#';
20052             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20053             l_rulv_rec.dnz_chr_id                := p_chr_id;
20054             l_rulv_rec.rule_information_category := 'LAPTR';
20055             l_rulv_rec.std_template_yn           := 'N';
20056             l_rulv_rec.warn_yn                   := 'N';
20057          END IF;
20058 
20059          create_rule_group_and_rule(
20060                                     x_return_status => x_return_status,
20061                                     x_msg_count     => x_msg_count,
20062                                     x_msg_data      => x_msg_data,
20063                                     p_rgp_id        => l_rgp_id,
20064                                     p_rgpv_rec      => l_rgpv_rec,
20065                                     p_rulv_rec      => l_rulv_rec,
20066                                     x_rgpv_rec      => x_rgpv_rec,
20067                                     x_rulv_rec      => x_rulv_rec
20068                                    );
20069          l_progress := '1.2';
20070          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20071              raise party_role_failed;
20072          END IF;
20073 
20074          debug_message('------>Fee Rule: LAPSTH/LAPTR processed');
20075          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
20076             l_rgp_id := x_rgpv_rec.id;
20077          END IF;
20078          l_rulv_rec := NULL;
20079          --debug_message('Site: '||x_pay_site_id1);
20080          IF (x_pay_site_id1 IS NOT NULL) THEN
20081 
20082             l_rulv_rec.jtot_object1_code         := 'OKX_PAYTO';
20083             l_rulv_rec.object1_id1               := x_pay_site_id1;
20084             l_rulv_rec.object1_id2               := '#';
20085             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20086             l_rulv_rec.dnz_chr_id                := p_chr_id;
20087             l_rulv_rec.rule_information_category := 'LAPTO';
20088             l_rulv_rec.std_template_yn           := 'N';
20089             l_rulv_rec.warn_yn                   := 'N';
20090          END IF;
20091 
20092          create_rule_group_and_rule(
20093                                     x_return_status => x_return_status,
20094                                     x_msg_count     => x_msg_count,
20095                                     x_msg_data      => x_msg_data,
20096                                     p_rgp_id        => l_rgp_id,
20097                                     p_rgpv_rec      => l_rgpv_rec,
20098                                     p_rulv_rec      => l_rulv_rec,
20099                                     x_rgpv_rec      => x_rgpv_rec,
20100                                     x_rulv_rec      => x_rulv_rec
20101                                    );
20102          l_progress := '1.2';
20103          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20104              raise party_role_failed;
20105          END IF;
20106 
20107          debug_message('------>Fee Rule: LAPSTH/LAPTO processed');
20108          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
20109             l_rgp_id := x_rgpv_rec.id;
20110          END IF;
20111 
20112          l_rulv_rec := NULL;
20113          --debug_message('Pay method: '||x_payment_method_id1);
20114          IF (x_payment_method_id1 IS NOT NULL) THEN
20115 
20116 
20117             --l_rulv_rec.jtot_object1_code         := 'OKX_PPAYTERM';
20118             --l_rulv_rec.object1_id1               := x_payment_method_id1;
20119             --l_rulv_rec.object1_id2               := '#';
20120 
20121             l_rulv_rec.rule_information1         := x_payment_method_id1;
20122             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20123             l_rulv_rec.dnz_chr_id                := p_chr_id;
20124             l_rulv_rec.rule_information_category := 'LAVPMT';
20125             l_rulv_rec.std_template_yn           := 'N';
20126             l_rulv_rec.warn_yn                   := 'N';
20127          END IF;
20128 
20129          create_rule_group_and_rule(
20130                                     x_return_status => x_return_status,
20131                                     x_msg_count     => x_msg_count,
20132                                     x_msg_data      => x_msg_data,
20133                                     p_rgp_id        => l_rgp_id,
20134                                     p_rgpv_rec      => l_rgpv_rec,
20135                                     p_rulv_rec      => l_rulv_rec,
20136                                     x_rgpv_rec      => x_rgpv_rec,
20137                                     x_rulv_rec      => x_rulv_rec
20138                                    );
20139          l_progress := '1.2';
20140          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20141              raise party_role_failed;
20142          END IF;
20143 
20144          debug_message('------>Fee Rule: LAPSTH/LAVPMT processed');
20145          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
20146             l_rgp_id := x_rgpv_rec.id;
20147          END IF;
20148 
20149          l_rulv_rec := NULL;
20150 
20151          IF (p_passthrough_percent IS NOT NULL) THEN
20152             l_rulv_rec.rule_information1         := p_passthrough_percent;
20153             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20154             l_rulv_rec.dnz_chr_id                := p_chr_id;
20155             l_rulv_rec.rule_information_category := 'LAPTPR';
20156             l_rulv_rec.std_template_yn           := 'N';
20157             l_rulv_rec.warn_yn                   := 'N';
20158          END IF;
20159 
20160          create_rule_group_and_rule(
20161                                  x_return_status => x_return_status,
20162                                  x_msg_count     => x_msg_count,
20163                                  x_msg_data      => x_msg_data,
20164                                  p_rgp_id        => l_rgp_id,
20165                                  p_rgpv_rec      => l_rgpv_rec,
20166                                  p_rulv_rec      => l_rulv_rec,
20167                                  x_rgpv_rec      => x_rgpv_rec,
20168                                  x_rulv_rec      => x_rulv_rec
20169                                 );
20170 
20171          l_progress := '1.5';
20172          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20173              raise party_role_failed;
20174          END IF;
20175 
20176          debug_message('------>Fee Rule: LAPSTH/LAPTPR processed');
20177          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
20178             l_rgp_id := x_rgpv_rec.id;
20179          END IF;
20180 
20181          l_rulv_rec            := NULL;
20182          IF (p_passthrough_basis_code IS NOT NULL) THEN
20183             l_rulv_rec.rule_information1         := p_passthrough_basis_code;
20184             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20185             l_rulv_rec.dnz_chr_id                := p_chr_id;
20186             l_rulv_rec.rule_information_category := 'LAPTBC';
20187             l_rulv_rec.std_template_yn           := 'N';
20188             l_rulv_rec.warn_yn                   := 'N';
20189          END IF;
20190 
20191          create_rule_group_and_rule(
20192                                  x_return_status => x_return_status,
20193                                  x_msg_count     => x_msg_count,
20194                                  x_msg_data      => x_msg_data,
20195                                  p_rgp_id        => l_rgp_id,
20196                                  p_rgpv_rec      => l_rgpv_rec,
20197                                  p_rulv_rec      => l_rulv_rec,
20198                                  x_rgpv_rec      => x_rgpv_rec,
20199                                  x_rulv_rec      => x_rulv_rec
20200                                 );
20201 
20202          l_progress := '1.6';
20203          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20204              raise party_role_failed;
20205          END IF;
20206 
20207          debug_message('------>Fee Rule: LAPSTH/LAPTBC processed');
20208          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
20209             l_rgp_id := x_rgpv_rec.id;
20210          END IF;
20211 */
20212       END IF; -- Fees vendor
20213       END IF;
20214 
20215       x_guarantor_id := NULL;
20216       IF (p_guarantor_id IS NOT NULl
20217           OR
20218           p_guarantor_number IS NOT NULL) THEN
20219          get_party_id(
20220                       x_return_status     => x_return_status,
20221                       x_msg_count         => x_msg_count,
20222                       x_msg_data          => x_msg_data,
20223                       p_contract_number   => p_contract_number,
20224                       p_line_number       => p_line_number,
20225                       p_party_id          => p_guarantor_id,
20226                       p_party_number      => p_guarantor_number,
20227                       x_party_id          => x_guarantor_id
20228                      );
20229          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20230             RAISE party_role_failed;
20231          END IF;
20232       END IF;
20233 
20234       debug_message('------>Guarantor id: '||x_guarantor_id);
20235 
20236       IF (x_guarantor_id IS NOT NULL) THEN
20237 
20238          -- Contract addl field, Bug 4558486, for party role at header level and asset vendor only
20239 
20240          debug_message('Guarantor DFF...'||x_guarantor_id);
20241 
20242          l_kplv_rec.validate_dff_yn          := 'Y';  -- always validate DFF
20243          l_kplv_rec.attribute_category       := p_attribute_category;
20244          debug_message('attribute_category: '||l_kplv_rec.attribute_category);
20245          l_kplv_rec.attribute1               := p_attribute1;
20246          debug_message('attribute1: '||l_kplv_rec.attribute1);
20247          l_kplv_rec.attribute2               := p_attribute2;
20248          debug_message('attribute2: '||l_kplv_rec.attribute2);
20249          l_kplv_rec.attribute3               := p_attribute3;
20250          l_kplv_rec.attribute4               := p_attribute4;
20251          l_kplv_rec.attribute5               := p_attribute5;
20252          l_kplv_rec.attribute6               := p_attribute6;
20253          l_kplv_rec.attribute7               := p_attribute7;
20254          l_kplv_rec.attribute8               := p_attribute8;
20255          l_kplv_rec.attribute9               := p_attribute9;
20256          l_kplv_rec.attribute10              := p_attribute10;
20257          l_kplv_rec.attribute11              := p_attribute11;
20258          l_kplv_rec.attribute12              := p_attribute12;
20259          l_kplv_rec.attribute13              := p_attribute13;
20260          l_kplv_rec.attribute14              := p_attribute14;
20261          l_kplv_rec.attribute15              := p_attribute15;
20262          -- Contract addl field, Bug 4558486
20263 
20264          p_cplv_rec                   := NULL;
20265          p_cplv_rec.chr_id            := p_chr_id;
20266          p_cplv_rec.dnz_chr_id        := p_chr_id;
20267          p_cplv_rec.cle_id            := NULL; -- always at header level
20268          p_cplv_rec.object1_id1       := TO_CHAR(x_guarantor_id);
20269          p_cplv_rec.object1_id2       := '#';
20270          p_cplv_rec.jtot_object1_code := 'OKX_PARTY';
20271          p_cplv_rec.rle_code          := 'GUARANTOR';
20272 
20273          OKL_K_PARTY_ROLES_PVT.create_k_party_role(
20274                                                 p_api_version   => 1.0,
20275                                                 p_init_msg_list => OKL_API.G_FALSE,
20276                                                 x_return_status => x_return_status,
20277                                                 x_msg_count     => x_msg_count,
20278                                                 x_msg_data      => x_msg_data,
20279                                                 p_cplv_rec      => p_cplv_rec,
20280                                                 p_kplv_rec      => l_kplv_rec,
20281                                                 x_cplv_rec      => x_cplv_rec,
20282                                                 x_kplv_rec      => x_kplv_rec
20283                                                );
20284 
20285          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20286             RAISE party_role_failed;
20287          END IF;
20288 
20289          l_rgpv_rec            := NULL;
20290          l_rgp_id              := NULL;
20291          l_rgpv_rec.rgd_code   := 'LAGRDT';
20292          l_rgpv_rec.chr_id     := p_chr_id;
20293          l_rgpv_rec.dnz_chr_id := p_chr_id;
20294          l_rgpv_rec.cle_id     := NULL; -- always at header level
20295          l_rgpv_rec.rgp_type   := 'KRG';
20296 
20297          l_rulv_rec            := NULL;
20298          IF (p_guarantor_type IS NOT NULL) THEN
20299 
20300             l_progress := 'P1.2';
20301 
20302             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20303             l_rulv_rec.dnz_chr_id                := p_chr_id;
20304             l_rulv_rec.rule_information1         := p_guarantor_type;
20305             l_rulv_rec.rule_information_category := 'LAGRNP';
20306             l_rulv_rec.std_template_yn           := 'N';
20307             l_rulv_rec.warn_yn                   := 'N';
20308          END IF;
20309 
20310          IF (p_guarantor_site_number IS NOT NULL
20311              OR
20312              p_guarantor_site_id IS NOT NULL
20313             ) THEN
20314             get_guarantor_address(
20315                                   x_return_status                => x_return_status,
20316                                   x_msg_count                    => x_msg_count,
20317                                   x_msg_data                     => x_msg_data,
20318                                   p_contract_number              => p_contract_number,
20319                                   p_line_number                  => p_line_number,
20320                                   p_guarantor_site_number        => p_guarantor_site_number,
20321                                   p_guarantor_site_id            => p_guarantor_site_id,
20322                                   x_guarantor_site_id            => x_guarantor_site_id
20323                                  );
20324 
20325             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20326                RAISE party_role_failed;
20327             END IF;
20328 
20329             l_rulv_rec.jtot_object1_code         := 'OKL_PARTYSITE'; -- Bug 5024651 'OKX_PARTSITE';
20330             l_rulv_rec.object1_id1               := TO_CHAR(x_guarantor_site_id);
20331             l_rulv_rec.object1_id2               := '#';
20332             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20333             l_rulv_rec.dnz_chr_id                := p_chr_id;
20334             l_rulv_rec.rule_information_category := 'LAGRNP';
20335             l_rulv_rec.std_template_yn           := 'N';
20336             l_rulv_rec.warn_yn                   := 'N';
20337 
20338          END IF;
20339 
20340          create_rule_group_and_rule(
20341                                  x_return_status => x_return_status,
20342                                  x_msg_count     => x_msg_count,
20343                                  x_msg_data      => x_msg_data,
20344                                  p_rgp_id        => l_rgp_id,
20345                                  p_rgpv_rec      => l_rgpv_rec,
20346                                  p_rulv_rec      => l_rulv_rec,
20347                                  x_rgpv_rec      => x_rgpv_rec,
20348                                  x_rulv_rec      => x_rulv_rec
20349                                 );
20350 
20351          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20352              raise party_role_failed;
20353          END IF;
20354 
20355          debug_message('------>Fee Rule: LAGRDT/LAGRNP processed');
20356          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
20357             l_rgp_id := x_rgpv_rec.id;
20358          END IF;
20359 
20360          IF (p_guarantor_type IS NOT NULL) THEN
20361 
20362             l_progress := 'P1.4';
20363             get_rrd_id(
20364                         x_return_status => x_return_status,
20365                         p_rgd_code      => 'LAGRDT',
20366                         p_rle_code      => 'GUARANTOR',
20367                         x_rrd_id        => x_rrd_id
20368                        );
20369             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20370                  okl_api.set_message(
20371                                      G_APP_NAME,
20372                                      G_GUARANTOR_SETUP_ERROR,
20373                                      'CONTRACT_NUM',
20374                                      p_contract_number
20375                                     );
20376                  x_return_status := OKL_API.G_RET_STS_ERROR;
20377                  RAISE party_role_failed;
20378             END IF;
20379 
20380             l_rmpv_rec.rgp_id     := x_rgpv_rec.id;
20381             l_rmpv_rec.cpl_id     := x_cplv_rec.id;
20382             l_rmpv_rec.rrd_id     := x_rrd_id;
20383             l_rmpv_rec.dnz_chr_id := p_chr_id;
20384 
20385             okl_rule_pub.create_rg_mode_pty_role(
20386                                                    p_api_version   => 1.0,
20387                                                    p_init_msg_list => OKL_API.G_FALSE,
20388                                                    x_return_status => x_return_status,
20389                                                    x_msg_count     => x_msg_count,
20390                                                    x_msg_data      => x_msg_data,
20391                                                    p_rmpv_rec      => l_rmpv_rec,
20392                                                    x_rmpv_rec      => x_rmpv_rec
20393                                                   );
20394             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20395                 x_return_status := OKL_API.G_RET_STS_ERROR;
20396                 raise party_role_failed;
20397             END IF;
20398 
20399             debug_message('------>Guaraontor type processed');
20400 
20401          END IF; -- guarantor_type
20402 
20403          l_rulv_rec := NULL;
20404          IF (p_guarantee_type IS NOT NULL) THEN
20405 
20406              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20407              l_rulv_rec.dnz_chr_id                := p_chr_id;
20408              l_rulv_rec.rule_information1         := p_guarantee_type;
20409              l_rulv_rec.rule_information_category := 'LAGRNT';
20410              l_rulv_rec.std_template_yn           := 'N';
20411              l_rulv_rec.warn_yn                   := 'N';
20412 
20413          END IF; -- guarantee_type
20414 
20415          IF (p_guaranteed_amount IS NOT NULL) THEN
20416 
20417              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20418              l_rulv_rec.dnz_chr_id                := p_chr_id;
20419              l_rulv_rec.rule_information2         := TO_CHAR(p_guaranteed_amount);
20420              l_rulv_rec.rule_information_category := 'LAGRNT';
20421              l_rulv_rec.std_template_yn           := 'N';
20422              l_rulv_rec.warn_yn                   := 'N';
20423          END IF; -- guaranteed_amount
20424 
20425          IF (p_guarantee_date IS NOT NULL) THEN
20426 
20427              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20428              l_rulv_rec.dnz_chr_id                := p_chr_id;
20429              l_rulv_rec.rule_information3         := get_canonicaL_date(p_guarantee_date);
20430              l_rulv_rec.rule_information_category := 'LAGRNT';
20431              l_rulv_rec.std_template_yn           := 'N';
20432              l_rulv_rec.warn_yn                   := 'N';
20433 
20434          END IF; -- guarantee_date
20435 
20436          IF (p_guarantee_comment IS NOT NULL) THEN
20437 
20438              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20439              l_rulv_rec.dnz_chr_id                := p_chr_id;
20440              l_rulv_rec.rule_information4         := p_guarantee_comment;
20441              l_rulv_rec.rule_information_category := 'LAGRNT';
20442              l_rulv_rec.std_template_yn           := 'N';
20443              l_rulv_rec.warn_yn                   := 'N';
20444 
20445          END IF; -- guarantee_comment
20446 
20447          create_rule_group_and_rule(
20448                                  x_return_status => x_return_status,
20449                                  x_msg_count     => x_msg_count,
20450                                  x_msg_data      => x_msg_data,
20451                                  p_rgp_id        => l_rgp_id,
20452                                  p_rgpv_rec      => l_rgpv_rec,
20453                                  p_rulv_rec      => l_rulv_rec,
20454                                  x_rgpv_rec      => x_rgpv_rec,
20455                                  x_rulv_rec      => x_rulv_rec
20456                                 );
20457 
20458          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20459              raise party_role_failed;
20460          END IF;
20461 
20462          debug_message('------>Rule: LAGRDT/LAGRNT processed');
20463 
20464          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
20465             l_rgp_id := x_rgpv_rec.id;
20466          END IF;
20467 
20468       END IF; -- guarantor_id
20469 
20470       -- Create Vendor Billing info, if any
20471       IF (p_billable_vendor_id IS NOT NULL) THEN
20472           x_billable_vendor_id := p_billable_vendor_id;
20473       ELSIF
20474           (p_billable_vendor_name IS NOT NULL) THEN
20475         get_vendor_id (
20476                        x_return_status     => x_return_status,
20477                        x_msg_count         => x_msg_count,
20478                        x_msg_data          => x_msg_data,
20479                        p_contract_number   => p_contract_number,
20480                        p_line_number       => p_line_number,
20481                        x_vendor_id         => x_billable_vendor_id,
20482                        p_vendor_name       => p_billable_vendor_name
20483                       );
20484         IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20485            RAISE party_role_failed;
20486         END IF;
20487       END IF;
20488 
20489       debug_message('------>Billable Vendor id: '||x_billable_vendor_id);
20490 
20491       IF (x_billable_vendor_id IS NOT NULL) THEN
20492 
20493          -- Create billing detail
20494          IF (x_billable_vendor_id <> x_asset_vendor_id) THEN
20495              okl_api.set_message(
20496                              G_APP_NAME,
20497                              G_BILL_VENDOR_INVALID,
20498                              'CONTRACT_NUM',
20499                              p_contract_number,
20500                              'VENDOR',
20501                              p_billable_vendor_id||', '||p_billable_vendor_name
20502                              );
20503               x_return_status := OKL_API.G_RET_STS_ERROR;
20504               RAISE party_role_failed;
20505          END IF;
20506 
20507          l_rgpv_rec            := NULL;
20508          l_rgp_id              := NULL;
20509          l_rgpv_rec.rgd_code   := 'LAVENB';
20510          l_rgpv_rec.chr_id     := p_chr_id;
20511          l_rgpv_rec.dnz_chr_id := p_chr_id;
20512          l_rgpv_rec.cle_id     := NULL; -- always at header level
20513          l_rgpv_rec.rgp_type   := 'KRG';
20514 
20515          l_rulv_rec            := NULL;
20516 
20517 /* Check above , Rule migration impact
20518          IF (p_vend_as_customer_id IS NOT NULL
20519              OR
20520              p_vend_as_customer_number IS NOT NULL) THEN
20521 
20522              OPEN customer_csr(p_vend_as_customer_number,
20523                                p_vend_as_customer_id);
20524 
20525              FETCH customer_csr INTO l_vend_cust_id;
20526              IF customer_csr%NOTFOUND THEN
20527                 okl_api.set_message(
20528                              G_APP_NAME,
20529                              G_INVALID_VALUE,
20530                              'CONTRACT_NUM',
20531                              p_contract_number,
20532                              'COL_NAME',
20533                              'VENDOR AS CUSTOMER ACCOUNT',
20534                              'COL_VALUE',
20535                               p_vend_as_customer_id||', '||p_vend_as_customer_number
20536                              );
20537                  x_return_status := OKL_API.G_RET_STS_ERROR;
20538                  RAISE party_role_failed;
20539              END IF;
20540 
20541              CLOSE customer_csr;
20542 */
20543           IF (l_vend_cust_id IS NOT NULL) THEN
20544 
20545              l_rulv_rec.jtot_object1_code         := 'OKX_PARTY';
20546              l_rulv_rec.object1_id1               := TO_CHAR(l_vend_cust_id);
20547              l_rulv_rec.object1_id2               := '#';
20548              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20549              l_rulv_rec.dnz_chr_id                := p_chr_id;
20550              l_rulv_rec.rule_information_category := 'LAVENC';
20551              l_rulv_rec.std_template_yn           := 'N';
20552              l_rulv_rec.warn_yn                   := 'N';
20553 
20554              create_rule_group_and_rule(
20555                                  x_return_status => x_return_status,
20556                                  x_msg_count     => x_msg_count,
20557                                  x_msg_data      => x_msg_data,
20558                                  p_rgp_id        => l_rgp_id,
20559                                  p_rgpv_rec      => l_rgpv_rec,
20560                                  p_rulv_rec      => l_rulv_rec,
20561                                  x_rgpv_rec      => x_rgpv_rec,
20562                                  x_rulv_rec      => x_rulv_rec
20563                                 );
20564 
20565              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20566                  raise party_role_failed;
20567              END IF;
20568 
20569              IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
20570                 l_rgp_id := x_rgpv_rec.id;
20571              END IF;
20572              l_rulv_rec := NULL;
20573 
20574          ELSE
20575              okl_api.set_message(
20576                                  G_APP_NAME,
20577                                  G_MISSING_VALUE,
20578                                  'CONTRACT_NUM',
20579                                  p_contract_number,
20580                                  'COL_NAME',
20581                                  'VENDOR AS CUSTOMER'
20582                                 );
20583               x_return_status := OKL_API.G_RET_STS_ERROR;
20584               RAISE party_role_failed;
20585          END IF;
20586 
20587 /* Rule Migration
20588          IF (p_vend_as_cust_acc_id IS NOT NULL
20589              OR
20590              p_vend_as_cust_acc_number IS NOT NULL) THEN
20591 
20592              get_customer_account_id(
20593                                   x_return_status           => x_return_status,
20594                                   x_msg_count               => x_msg_count,
20595                                   x_msg_data                => x_msg_data,
20596                                   p_contract_number         => p_contract_number,
20597                                   p_customer_id             => l_vend_cust_id,
20598                                   p_customer_account_id     => p_vend_as_cust_acc_id,
20599                                   p_customer_account_number => p_vend_as_cust_acc_number,
20600                                   x_customer_account_id     => l_vend_cust_acc_id
20601                                  );
20602 
20603              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20604                 x_return_status := OKL_API.G_RET_STS_ERROR;
20605                 raise party_role_failed;
20606              END IF;
20607 
20608              debug_message('------>l_vend_cust_acc_id : '||l_vend_cust_acc_id);
20609 
20610              l_rulv_rec.jtot_object1_code         := 'OKX_CUSTACCT';
20611              l_rulv_rec.object1_id1               := TO_CHAR(l_vend_cust_acc_id);
20612              l_rulv_rec.object1_id2               := '#';
20613              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20614              l_rulv_rec.dnz_chr_id                := p_chr_id;
20615              l_rulv_rec.rule_information_category := 'CAN';
20616              l_rulv_rec.std_template_yn           := 'N';
20617              l_rulv_rec.warn_yn                   := 'N';
20618 
20619              create_rule_group_and_rule(
20620                                  x_return_status => x_return_status,
20621                                  x_msg_count     => x_msg_count,
20622                                  x_msg_data      => x_msg_data,
20623                                  p_rgp_id        => l_rgp_id,
20624                                  p_rgpv_rec      => l_rgpv_rec,
20625                                  p_rulv_rec      => l_rulv_rec,
20626                                  x_rgpv_rec      => x_rgpv_rec,
20627                                  x_rulv_rec      => x_rulv_rec
20628                                 );
20629 
20630              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20631                  raise party_role_failed;
20632              END IF;
20633 
20634              IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
20635                 l_rgp_id := x_rgpv_rec.id;
20636              END IF;
20637              l_rulv_rec := NULL;
20638          ELSE
20639              okl_api.set_message(
20640                                  G_APP_NAME,
20641                                  G_MISSING_VALUE,
20642                                  'CONTRACT_NUM',
20643                                  p_contract_number,
20644                                  'COL_NAME',
20645                                  'VENDOR AS CUSTOMER ACCOUNT'
20646                                 );
20647               x_return_status := OKL_API.G_RET_STS_ERROR;
20648               RAISE party_role_failed;
20649          END IF;
20650 */
20651 
20652 /* Rule Migration
20653          IF (p_vend_bill_to_addr_id IS NOT NULL
20654              OR
20655              p_vend_bill_to_addr IS NOT NULL) THEN
20656             get_bill_to_address_id(
20657                              x_return_status           => x_return_status,
20658                              x_msg_count               => x_msg_count,
20659                              x_msg_data                => x_msg_data,
20660                              p_contract_number         => p_contract_number,
20661                              p_auth_org_id             => p_auth_org_id,
20662                              p_bill_to_address_id      => p_vend_bill_to_addr_id,
20663                              p_bill_to_address         => p_vend_bill_to_addr,
20664                              p_customer_account_id     => l_vend_cust_acc_id,
20665                              x_bill_to_address_id      => l_vend_bill_to_addr_id
20666                             );
20667 
20668             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20669                x_return_status := OKL_API.G_RET_STS_ERROR;
20670                raise party_role_failed;
20671             END IF;
20672 
20673             debug_message('------>l_vend_bill_to_addr_id : '||l_vend_bill_to_addr_id);
20674             l_rulv_rec.jtot_object1_code         := 'OKX_BILLTO';
20675             l_rulv_rec.object1_id1               := TO_CHAR(l_vend_bill_to_addr_id);
20676             l_rulv_rec.object1_id2               := '#';
20677             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20678             l_rulv_rec.dnz_chr_id                := p_chr_id;
20679             l_rulv_rec.rule_information_category := 'BTO';
20680             l_rulv_rec.std_template_yn           := 'N';
20681             l_rulv_rec.warn_yn                   := 'N';
20682 
20683             create_rule_group_and_rule(
20684                                  x_return_status => x_return_status,
20685                                  x_msg_count     => x_msg_count,
20686                                  x_msg_data      => x_msg_data,
20687                                  p_rgp_id        => l_rgp_id,
20688                                  p_rgpv_rec      => l_rgpv_rec,
20689                                  p_rulv_rec      => l_rulv_rec,
20690                                  x_rgpv_rec      => x_rgpv_rec,
20691                                  x_rulv_rec      => x_rulv_rec
20692                                 );
20693 
20694             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20695                 raise party_role_failed;
20696             END IF;
20697 
20698             IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
20699                l_rgp_id := x_rgpv_rec.id;
20700             END IF;
20701             l_rulv_rec := NULL;
20702          ELSE
20703              okl_api.set_message(
20704                                  G_APP_NAME,
20705                                  G_MISSING_VALUE,
20706                                  'CONTRACT_NUM',
20707                                  p_contract_number,
20708                                  'COL_NAME',
20709                                  'VENDOR BILL TO ADDRESS'
20710                                 );
20711               x_return_status := OKL_API.G_RET_STS_ERROR;
20712               RAISE party_role_failed;
20713          END IF;
20714 */
20715 
20716          IF (p_vend_payment_method_id IS NOT NULL
20717              OR
20718              p_vend_payment_method IS NOT NULL) THEN
20719              get_payment_method_id(
20720                                x_return_status           => x_return_status,
20721                                x_msg_count               => x_msg_count,
20722                                x_msg_data                => x_msg_data,
20723                                p_contract_number         => p_contract_number,
20724                                p_customer_account_id     => l_vend_cust_acc_id,
20725                                p_bill_to_address_id      => l_vend_bilL_to_addr_id,
20726                                p_payment_method_id       => p_vend_payment_method_id,
20727                                p_payment_method          => p_vend_payment_method,
20728                                x_payment_method_id       => l_vend_payment_method_id
20729                               );
20730 
20731              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20732                   x_return_status := OKL_API.G_RET_STS_ERROR;
20733                   raise party_role_failed;
20734              END IF;
20735 
20736              IF (l_vend_payment_method_id IS NOT NULL) THEN
20737                 l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20738                 l_rulv_rec.dnz_chr_id                := p_chr_id;
20739                 l_rulv_rec.jtot_object1_code         := 'OKX_RCPTMTH';
20740                 l_rulv_rec.object1_id1               := TO_CHAR(l_vend_payment_method_id);
20741                 l_rulv_rec.object1_id2               := '#';
20742                 l_rulv_rec.rule_information_category := 'LAPMTH';
20743                 l_rulv_rec.std_template_yn           := 'N';
20744                 l_rulv_rec.warn_yn                   := 'N';
20745              END IF;
20746 
20747              --debug_message('Payment Method: '||l_vend_payment_method_id);
20748 
20749              create_rule_group_and_rule(
20750                                         x_return_status => x_return_status,
20751                                         x_msg_count     => x_msg_count,
20752                                         x_msg_data      => x_msg_data,
20753                                         p_rgp_id        => l_rgp_id,
20754                                         p_rgpv_rec      => l_rgpv_rec,
20755                                         p_rulv_rec      => l_rulv_rec,
20756                                         x_rgpv_rec      => x_rgpv_rec,
20757                                         x_rulv_rec      => x_rulv_rec
20758                                        );
20759 
20760              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20761                   x_return_status := OKL_API.G_RET_STS_ERROR;
20762                   raise party_role_failed;
20763              END IF;
20764 
20765              IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
20766                 l_rgp_id := x_rgpv_rec.id;
20767              END IF;
20768 
20769              l_rulv_rec := NULL;
20770 
20771          END IF;
20772 
20773          IF (p_vend_bank_acc_id IS NOT NULL
20774              OR
20775              p_vend_bank_acc_number IS NOT NULL) THEN
20776             get_bank_account_id(
20777                                 x_return_status           => x_return_status,
20778                                 x_msg_count               => x_msg_count,
20779                                 x_msg_data                => x_msg_data,
20780                                 p_contract_number         => p_contract_number,
20781                                 p_auth_org_id             => p_auth_org_id,
20782                                 p_bank_account_id         => p_vend_bank_acc_id,
20783                                 p_bank_account_number     => p_vend_bank_acc_number,
20784                                 p_customer_account_id     => l_vend_cust_acc_id,
20785                                 p_cust_site_id            => l_vend_bill_to_addr_id,
20786                                 x_bank_account_id         => l_vend_bank_acc_id
20787                                );
20788             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20789                 x_return_status := OKL_API.G_RET_STS_ERROR;
20790                 raise party_role_failed;
20791             END IF;
20792 
20793             IF (l_vend_bank_acc_id IS NOT NULL) THEN
20794                 l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20795                 l_rulv_rec.dnz_chr_id                := p_chr_id;
20796                 l_rulv_rec.jtot_object1_code         := 'OKX_CUSTBKAC';
20797                 l_rulv_rec.object1_id1               := TO_CHAR(l_vend_bank_acc_id);
20798                 l_rulv_rec.object1_id2               := '#';
20799                 l_rulv_rec.rule_information_category := 'LABACC';
20800                 l_rulv_rec.std_template_yn           := 'N';
20801                 l_rulv_rec.warn_yn                   := 'N';
20802              END IF;
20803 
20804              debug_message('Bank Acc: '|| l_vend_bank_acc_id);
20805 
20806              create_rule_group_and_rule(
20807                                         x_return_status => x_return_status,
20808                                         x_msg_count     => x_msg_count,
20809                                         x_msg_data      => x_msg_data,
20810                                         p_rgp_id        => l_rgp_id,
20811                                         p_rgpv_rec      => l_rgpv_rec,
20812                                         p_rulv_rec      => l_rulv_rec,
20813                                         x_rgpv_rec      => x_rgpv_rec,
20814                                         x_rulv_rec      => x_rulv_rec
20815                                        );
20816 
20817              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20818                   x_return_status := OKL_API.G_RET_STS_ERROR;
20819                   raise party_role_failed;
20820              END IF;
20821 
20822              IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
20823                 l_rgp_id := x_rgpv_rec.id;
20824              END IF;
20825              l_rulv_rec := NULL;
20826 
20827           END IF; -- vend_bank_account
20828 
20829           IF (p_vend_invoice_format_id IS NOT NULL
20830               OR
20831               p_vend_invoice_format_code IS NOT NULL) THEN
20832               get_invoice_format_id(
20833                             x_return_status           => x_return_status,
20834                             x_msg_count               => x_msg_count,
20835                             x_msg_data                => x_msg_data,
20836                             p_contract_number         => p_contract_number,
20837                             p_invoice_format_id       => p_vend_invoice_format_id,
20838                             p_invoice_format_code     => p_vend_invoice_format_code,
20839                             x_invoice_format_id       => l_vend_invoice_format_id,
20840                             x_invoice_format_name     => l_vend_invoice_format_name
20841                            );
20842 
20843               IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20844                   x_return_status := OKL_API.G_RET_STS_ERROR;
20845                   raise party_role_failed;
20846               END IF;
20847 
20848               debug_message('Invoice Format: '||l_vend_invoice_format_name);
20849 
20850               IF (l_vend_invoice_format_name IS NOT NULL) THEN
20851                  l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20852                  l_rulv_rec.dnz_chr_id                := p_chr_id;
20853 
20854                  --sechawla 13-may-09 6826580 : Use ID instead of name
20855                  --l_rulv_rec.rule_information1         := l_vend_invoice_format_name;
20856                  l_rulv_rec.rule_information1         := l_vend_invoice_format_id;
20857 
20858                  l_rulv_rec.rule_information_category := 'LAINVD';
20859                  l_rulv_rec.std_template_yn           := 'N';
20860                  l_rulv_rec.warn_yn                   := 'N';
20861               END IF;
20862           END IF;
20863 
20864           IF (p_vend_review_invoice_flag IS NOT NULL) THEN
20865               l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20866               l_rulv_rec.dnz_chr_id                := p_chr_id;
20867               l_rulv_rec.rule_information4         := p_vend_review_invoice_flag;
20868               l_rulv_rec.rule_information_category := 'LAINVD';
20869               l_rulv_rec.std_template_yn           := 'N';
20870               l_rulv_rec.warn_yn                   := 'N';
20871           END IF;
20872 
20873           create_rule_group_and_rule(
20874                                      x_return_status => x_return_status,
20875                                      x_msg_count     => x_msg_count,
20876                                      x_msg_data      => x_msg_data,
20877                                      p_rgp_id        => l_rgp_id,
20878                                      p_rgpv_rec      => l_rgpv_rec,
20879                                      p_rulv_rec      => l_rulv_rec,
20880                                      x_rgpv_rec      => x_rgpv_rec,
20881                                      x_rulv_rec      => x_rulv_rec
20882                                     );
20883 
20884           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20885                x_return_status := OKL_API.G_RET_STS_ERROR;
20886                raise party_role_failed;
20887           END IF;
20888 
20889           IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
20890              l_rgp_id := x_rgpv_rec.id;
20891           END IF;
20892           l_rulv_rec := NULL;
20893 
20894          IF (p_vend_reason_for_inv_review IS NOT NULL) THEN
20895             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20896             l_rulv_rec.dnz_chr_id                := p_chr_id;
20897             l_rulv_rec.rule_information1         := p_vend_reason_for_inv_review;
20898             l_rulv_rec.rule_information_category := 'LAINPR';
20899             l_rulv_rec.std_template_yn           := 'N';
20900             l_rulv_rec.warn_yn                   := 'N';
20901          END IF;
20902 
20903          IF (p_vend_inv_review_until_date IS NOT NULL) THEN
20904             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20905             l_rulv_rec.dnz_chr_id                := p_chr_id;
20906             l_rulv_rec.rule_information2         := get_canonical_date(p_vend_inv_review_until_date);
20907             l_rulv_rec.rule_information_category := 'LAINPR';
20908             l_rulv_rec.std_template_yn           := 'N';
20909             l_rulv_rec.warn_yn                   := 'N';
20910          END IF;
20911 
20912          create_rule_group_and_rule(
20913                                     x_return_status => x_return_status,
20914                                     x_msg_count     => x_msg_count,
20915                                     x_msg_data      => x_msg_data,
20916                                     p_rgp_id        => l_rgp_id,
20917                                     p_rgpv_rec      => l_rgpv_rec,
20918                                     p_rulv_rec      => l_rulv_rec,
20919                                     x_rgpv_rec      => x_rgpv_rec,
20920                                     x_rulv_rec      => x_rulv_rec
20921                                    );
20922 
20923          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20924               x_return_status := OKL_API.G_RET_STS_ERROR;
20925               raise party_role_failed;
20926          END IF;
20927 
20928          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
20929             l_rgp_id := x_rgpv_rec.id;
20930          END IF;
20931          l_rulv_rec := NULL;
20932 
20933          IF (l_rgp_id IS NOT NULL) THEN
20934             get_rrd_id(
20935                         x_return_status => x_return_status,
20936                         p_rgd_code      => 'LAVENB',
20937                         p_rle_code      => 'OKL_VENDOR',
20938                         x_rrd_id        => x_rrd_id
20939                        );
20940             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20941                  okl_api.set_message(
20942                                      G_APP_NAME,
20943                                      G_GUARANTOR_SETUP_ERROR,
20944                                      'CONTRACT_NUM',
20945                                      p_contract_number
20946                                     );
20947                  x_return_status := OKL_API.G_RET_STS_ERROR;
20948                  RAISE party_role_failed;
20949             END IF;
20950 
20951             p_cplv_rec                   := NULL;
20952             p_cplv_rec.chr_id            := p_chr_id;
20953             p_cplv_rec.dnz_chr_id        := p_chr_id;
20954             p_cplv_rec.cle_id            := NULL; -- always at header level
20955             p_cplv_rec.object1_id1       := TO_CHAR(x_billable_vendor_id);
20956             p_cplv_rec.object1_id2       := '#';
20957             p_cplv_rec.jtot_object1_code := 'OKX_PARTY';
20958             p_cplv_rec.rle_code          := 'OKL_VENDOR';
20959 
20960             p_cplv_rec.bill_to_site_use_id := l_vend_bill_to_addr_id;
20961             p_cplv_rec.cust_acct_id        := l_vend_cust_acc_id;
20962 
20963             debug_message('------>Vendor Bill to :'||l_vend_bill_to_addr_id);
20964             debug_message('------>Vendor Cust Acct :'||l_vend_cust_acc_id);
20965 
20966             l_rmpv_rec.rgp_id     := l_rgp_id;
20967             l_rmpv_rec.cpl_id     := x_cplv_rec.id;
20968             l_rmpv_rec.rrd_id     := x_rrd_id;
20969             l_rmpv_rec.dnz_chr_id := p_chr_id;
20970 
20971             okl_rule_pub.create_rg_mode_pty_role(
20972                                                    p_api_version   => 1.0,
20973                                                    p_init_msg_list => OKL_API.G_FALSE,
20974                                                    x_return_status => x_return_status,
20975                                                    x_msg_count     => x_msg_count,
20976                                                    x_msg_data      => x_msg_data,
20977                                                    p_rmpv_rec      => l_rmpv_rec,
20978                                                    x_rmpv_rec      => x_rmpv_rec
20979                                                   );
20980             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20981                 x_return_status := OKL_API.G_RET_STS_ERROR;
20982                 raise party_role_failed;
20983             END IF;
20984          END IF;
20985       END IF; -- Billable Vendor process
20986 
20987 
20988       -- Assume that the existence of pay thru is driven by vendor pay site information
20989       IF (p_line_number is NOT NULL) THEN
20990          debug_message ('Processing passthrough for line number : '||p_line_number);
20991       IF (g_base_pmnt_hdr.id IS NOT NULL) THEN
20992            IF (p_line_type in  ('SERVICE', 'FEE')) THEN
20993 	       IF ((p_pth_base_vendor_site_code IS NOT NULL) OR
20994                    (p_pth_base_vendor_site_id IS NOT NULL)) THEN
20995 
20996 		      IF (p_line_type = 'SERVICE') THEN
20997                          l_base_pmnt_dtls_rec.vendor_id := x_service_vendor_id;
20998 		      ELSIF (p_line_type = 'FEE') THEN
20999                          l_base_pmnt_dtls_rec.vendor_id := x_fees_vendor_id;
21000 		      END IF;
21001                       l_base_pmnt_dtls_rec.cpl_id := x_cplv_rec.id;
21002 	              l_base_pmnt_dtls_rec.pay_site_id := get_vendor_paysite( x_return_status       => x_return_status,
21003 	                                                                 p_contract_number     => p_contract_number,
21004 			                                                 p_line_number         => p_line_number,
21005 			                                                 p_vendor_paysite_name => p_pth_base_vendor_site_code,
21006 			                                                 p_vendor_paysite_id   => p_pth_base_vendor_site_id
21007                                                                        );
21008                       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
21009                           raise party_role_failed;
21010                       END IF;
21011 
21012 		      IF (p_pth_base_pmnt_term_code is NOT NULL OR
21013 		          p_pth_base_pmnt_term_id IS NOT NULL ) THEN
21014                           l_base_pmnt_dtls_rec.payment_term_id := get_payment_term(
21015                                                                 x_return_status   => x_return_status,
21016                                                                 p_contract_number => p_contract_number,
21017                                                                 p_line_number     => p_line_number,
21018                                                                 p_payment_term    => p_pth_base_pmnt_term_code,
21019                                                                 p_payment_term_id => p_pth_base_pmnt_term_id
21020                                                                );
21021 
21022                           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
21023                               raise party_role_failed;
21024                           END IF;
21025 
21026                       ELSE
21027                           okl_api.set_message(
21028                                               G_APP_NAME,
21029                                               G_MISSING_VALUE,
21030                                               'CONTRACT_NUM',
21031                                               p_contract_number,
21032                                               'COL_NAME',
21033                                               'PASSTHROUGH PAYMENT TERM'
21034                                               );
21035                       END IF;
21036                       l_paygroup_code := NULL;
21037 		      IF (p_pth_base_paygroup_code IS NULL) THEN
21038                           l_paygroup_code := get_vendor_paygroup(
21039                                                                 x_return_status   => x_return_status,
21040                                                                 p_contract_number => p_contract_number,
21041                                                                 p_line_number     => p_line_number,
21042                                                                 p_auth_org_id     => p_auth_org_id,
21043                                                                 p_vendor_paysite_id => p_pth_base_vendor_site_id
21044                                                                );
21045 
21046                           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
21047                               raise party_role_failed;
21048                           END IF;
21049 
21050 			  IF (l_paygroup_code IS NOT NULL) THEN
21051                              l_base_pmnt_dtls_rec.pay_group_code := l_paygroup_code;
21052 			  ELSE
21053 			     okl_api.set_message(
21054                                                  G_APP_NAME,
21055                                                  G_MISSING_VALUE_FOR_LINE,
21056                                                  'CONTRACT_NUM',
21057                                                  p_contract_number||'/'||TO_CHAR(p_line_number),
21058                                                  'COL_NAME',
21059                                                  'PTH_BASE_PAYGROUP_CODE',
21060                                                  'LINE',
21061                                                  p_line_type
21062                                                 );
21063 			     raise party_role_failed;
21064                           END IF;
21065 
21066 
21067                       ELSE
21068                           l_base_pmnt_dtls_rec.pay_group_code := p_pth_base_paygroup_code;
21069                       END IF;
21070 
21071                       IF (p_pth_base_pmnt_basis is NULL) THEN
21072                          l_base_pmnt_dtls_rec.payment_basis := 'PROCESS_DATE';
21073                       ELSE
21074                          OPEN  pmnt_basis_csr(p_pth_base_pmnt_basis);
21075                          FETCH pmnt_basis_csr INTO rec_exists_yn;
21076                          IF (pmnt_basis_csr%NOTFOUND) THEN
21077                             okl_api.set_message(
21078                                                 G_APP_NAME,
21079                                                 G_INVALID_VALUE,
21080                                                 'CONTRACT_NUM',
21081                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21082                                                 'COL_NAME',
21083                                                 'PTH_BASE_PMNT_BASIS',
21084                                                 'COL_VALUE',
21085                                                 p_pth_base_pmnt_basis
21086                                                );
21087                             CLOSE pmnt_basis_csr;
21088                             raise party_role_failed;
21089                          ELSE
21090                             l_base_pmnt_dtls_rec.payment_basis := p_pth_base_pmnt_basis;
21091 			    CLOSE pmnt_basis_csr;
21092                          END IF;
21093                       END IF;
21094 
21095 		      IF ((p_pth_base_pmnt_basis = 'SCHEDULED') AND
21096                            (p_pth_base_pmnt_start_date IS NULL)) THEN
21097         	          okl_api.set_message(
21098                                               G_APP_NAME,
21099                                               G_MISSING_VALUE_FOR_LINE,
21100                                               'CONTRACT_NUM',
21101                                               p_contract_number||'/'||TO_CHAR(p_line_number),
21102                                               'COL_NAME',
21103                                               'PTH_BASE_PMNT_START_DATE',
21104                                               'LINE',
21105                                               p_line_type
21106                                              );
21107 			  raise party_role_failed;
21108                       ELSE
21109 		         l_base_pmnt_dtls_rec.payment_start_date := p_pth_base_pmnt_start_date;
21110                       END IF;
21111 
21112 		      IF ((p_pth_base_pmnt_basis = 'SCHEDULED') AND
21113                            (p_pth_base_pmnt_freq IS NULL)) THEN
21114         	          okl_api.set_message(
21115                                               G_APP_NAME,
21116                                               G_MISSING_VALUE_FOR_LINE,
21117                                               'CONTRACT_NUM',
21118                                               p_contract_number||'/'||TO_CHAR(p_line_number),
21119                                               'COL_NAME',
21120                                               'PTH_BASE_PMNT_FREQ',
21121                                               'LINE',
21122                                               p_line_type
21123                                              );
21124 			  raise party_role_failed;
21125                       ELSE
21126 		         l_base_pmnt_dtls_rec.payment_frequency := p_pth_base_pmnt_freq;
21127                       END IF;
21128                       l_base_pmnt_dtls_rec.payment_hdr_id := g_base_pmnt_hdr.id;
21129 		      l_base_pmnt_dtls_rec.payment_method_code := p_pth_base_pmnt_method_code;
21130 
21131 		      IF ((p_pth_base_pmnt_basis = 'PROCESS_DATE') AND
21132                            (p_pth_base_pmnt_remit_days IS NULL)) THEN
21133         	          okl_api.set_message(
21134                                               G_APP_NAME,
21135                                               G_MISSING_VALUE_FOR_LINE,
21136                                               'CONTRACT_NUM',
21137                                               p_contract_number||'/'||TO_CHAR(p_line_number),
21138                                               'COL_NAME',
21139                                               'PTH_BASE_PMNT_REMIT_DAYS',
21140                                               'LINE',
21141                                               p_line_type
21142                                              );
21143 			  raise party_role_failed;
21144                       ELSE
21145 		         l_base_pmnt_dtls_rec.remit_days := p_pth_base_pmnt_remit_days;
21146                       END IF;
21147 
21148                       IF (p_pth_base_disb_basis is NOT NULL) THEN
21149                          OPEN  disb_basis_csr(p_pth_base_disb_basis);
21150                          FETCH disb_basis_csr INTO rec_exists_yn;
21151                          IF (disb_basis_csr%NOTFOUND) THEN
21152                             okl_api.set_message(
21153                                                 G_APP_NAME,
21154                                                 G_INVALID_VALUE,
21155                                                 'CONTRACT_NUM',
21156                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21157                                                 'COL_NAME',
21158                                                 'PTH_BASE_DISB_BASIS',
21159                                                 'COL_VALUE',
21160                                                 p_pth_base_disb_basis
21161                                                );
21162                             CLOSE disb_basis_csr;
21163                             raise party_role_failed;
21164                          ELSE
21165                             l_base_pmnt_dtls_rec.disbursement_basis := p_pth_base_disb_basis;
21166                             CLOSE disb_basis_csr;
21167                          END IF;
21168                       ELSE
21169                             okl_api.set_message(
21170                                                 G_APP_NAME,
21171                                                 G_MISSING_VALUE_FOR_LINE,
21172                                                 'CONTRACT_NUM',
21173                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21174                                                 'COL_NAME',
21175                                                 'PTH_BASE_DISB_BASIS',
21176                                                 'LINE',
21177                                                 p_line_type
21178                                                );
21179                       END IF;
21180 
21181                       IF ((p_pth_base_disb_basis = 'AMOUNT')) THEN
21182                          IF (p_pth_base_disb_fixed_amount IS NULL) THEN
21183         	            okl_api.set_message(
21184                                                 G_APP_NAME,
21185                                                 G_MISSING_VALUE_FOR_LINE,
21186                                                 'CONTRACT_NUM',
21187                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21188                                                 'COL_NAME',
21189                                                 'PTH_BASE_DISB_FIXED_AMOUNT',
21190                                                 'LINE',
21191                                                 p_line_type
21192                                                );
21193 			    raise party_role_failed;
21194                          ELSE
21195 		         l_base_pmnt_dtls_rec.disbursement_fixed_amount := p_pth_base_disb_fixed_amount;
21196                          END IF;
21197 		      END IF;
21198 
21199 		      IF ((p_pth_base_disb_basis = 'PERCENT')) THEN
21200                          IF (p_pth_base_disb_pct IS NULL) THEN
21201         	            okl_api.set_message(
21202                                                 G_APP_NAME,
21203                                                 G_MISSING_VALUE_FOR_LINE,
21204                                                 'CONTRACT_NUM',
21205                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21206                                                 'COL_NAME',
21207                                                 'PTH_BASE_DISB_PCT',
21208                                                 'LINE',
21209                                                 p_line_type
21210                                                );
21211 			    raise party_role_failed;
21212                          ELSE
21213 		         l_base_pmnt_dtls_rec.disbursement_percent := p_pth_base_disb_pct;
21214                          END IF;
21215 		      END IF;
21216 
21217                       IF (p_pth_base_proc_fee_basis is NOT NULL) THEN
21218                          OPEN  proc_fee_basis_csr(p_pth_base_proc_fee_basis);
21219                          FETCH proc_fee_basis_csr INTO rec_exists_yn;
21220                          IF (proc_fee_basis_csr%NOTFOUND) THEN
21221                             okl_api.set_message(
21222                                                 G_APP_NAME,
21223                                                 G_INVALID_VALUE,
21224                                                 'CONTRACT_NUM',
21225                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21226                                                 'COL_NAME',
21227                                                 'PTH_BASE_PROC_FEE_BASIS',
21228                                                 'COL_VALUE',
21229                                                 p_pth_base_proc_fee_basis
21230                                                );
21231                             CLOSE proc_fee_basis_csr;
21232                             raise party_role_failed;
21233                          ELSE
21234                             l_base_pmnt_dtls_rec.processing_fee_basis := p_pth_base_proc_fee_basis;
21235                             CLOSE proc_fee_basis_csr;
21236                          END IF;
21237                       END IF;
21238 
21239 		      IF ((p_pth_base_proc_fee_basis = 'AMOUNT')) THEN
21240                          IF (p_pth_base_proc_fee_fixed_amt IS NULL) THEN
21241         	            okl_api.set_message(
21242                                                 G_APP_NAME,
21243                                                 G_MISSING_VALUE_FOR_LINE,
21244                                                 'CONTRACT_NUM',
21245                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21246                                                 'COL_NAME',
21247                                                 'PTH_BASE_PROC_FEE_FIXED_AMT',
21248                                                 'LINE',
21249                                                 p_line_type
21250                                                );
21251 			    raise party_role_failed;
21252                          ELSE
21253 		         l_base_pmnt_dtls_rec.processing_fee_fixed_amount := p_pth_base_proc_fee_fixed_amt;
21254                          END IF;
21255 		      END IF;
21256 
21257 		      IF ((p_pth_base_proc_fee_basis = 'PERCENT')) THEN
21258                          IF (p_pth_base_proc_pct IS NULL) THEN
21259         	            okl_api.set_message(
21260                                                 G_APP_NAME,
21261                                                 G_MISSING_VALUE_FOR_LINE,
21262                                                 'CONTRACT_NUM',
21263                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21264                                                 'COL_NAME',
21265                                                 'PTH_BASE_PROC_PCT',
21266                                                 'LINE',
21267                                                 p_line_type
21268                                                );
21269 			    raise party_role_failed;
21270                          ELSE
21271 		         l_base_pmnt_dtls_rec.processing_fee_percent := p_pth_base_proc_pct;
21272                          END IF;
21273 		      END IF;
21274                       l_counter := l_counter + 1;
21275                       l_pmnt_dtls_tbl_in(l_counter) := l_base_pmnt_dtls_rec;
21276 
21277                END IF;
21278       END IF;
21279       END IF;
21280 
21281 
21282       IF (g_evg_pmnt_hdr.id IS NOT NULL) THEN
21283            IF (p_line_type in  ('ASSET', 'SERVICE', 'FEE')) THEN
21284 	       IF ((p_pth_evg_vendor_site_code IS NOT NULL) OR
21285                    (p_pth_evg_vendor_site_id IS NOT NULL)) THEN
21286 		      IF (p_line_type = 'ASSET') THEN
21287                          l_evg_pmnt_dtls_rec.vendor_id := x_asset_vendor_id;
21288 		      ELSIF (p_line_type = 'SERVICE') THEN
21289                          l_evg_pmnt_dtls_rec.vendor_id := x_service_vendor_id;
21290 		      ELSE
21291                          l_evg_pmnt_dtls_rec.vendor_id := x_fees_vendor_id;
21292 		      END IF;
21293                       l_evg_pmnt_dtls_rec.cpl_id := x_cplv_rec.id;
21294 	              l_evg_pmnt_dtls_rec.pay_site_id := get_vendor_paysite( x_return_status       => x_return_status,
21295 	                                                                 p_contract_number     => p_contract_number,
21296 			                                                 p_line_number         => p_line_number,
21297 			                                                 p_vendor_paysite_name => p_pth_evg_vendor_site_code,
21298 			                                                 p_vendor_paysite_id   => p_pth_evg_vendor_site_id
21299                                                                        );
21300                       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
21301                           raise party_role_failed;
21302                       END IF;
21303 
21304 		      IF (p_pth_evg_pmnt_term_code is NOT NULL OR
21305 		          p_pth_evg_pmnt_term_id IS NOT NULL ) THEN
21306                           l_evg_pmnt_dtls_rec.payment_term_id := get_payment_term(
21307                                                                 x_return_status   => x_return_status,
21308                                                                 p_contract_number => p_contract_number,
21309                                                                 p_line_number     => p_line_number,
21310                                                                 p_payment_term    => p_pth_evg_pmnt_term_code,
21311                                                                 p_payment_term_id => p_pth_evg_pmnt_term_id
21312                                                                );
21313 
21314                           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
21315                               raise party_role_failed;
21316                           END IF;
21317 
21318                       ELSE
21319                           okl_api.set_message(
21320                                               G_APP_NAME,
21321                                               G_MISSING_VALUE,
21322                                               'CONTRACT_NUM',
21323                                               p_contract_number,
21324                                               'COL_NAME',
21325                                               'PTH_EVG_PMNT_TERM_CODE'
21326                                               );
21327                       END IF;
21328                       l_paygroup_code := NULL;
21329 		      IF (p_pth_evg_paygroup_code IS NULL) THEN
21330                           l_paygroup_code := get_vendor_paygroup(
21331                                                                 x_return_status   => x_return_status,
21332                                                                 p_contract_number => p_contract_number,
21333                                                                 p_line_number     => p_line_number,
21334                                                                 p_auth_org_id     => p_auth_org_id,
21335                                                                 p_vendor_paysite_id => p_pth_evg_vendor_site_id
21336                                                                );
21337 
21338                           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
21339                               raise party_role_failed;
21340                           END IF;
21341 
21342 			  IF (l_paygroup_code IS NOT NULL) THEN
21343                              l_evg_pmnt_dtls_rec.pay_group_code := l_paygroup_code;
21344 			  ELSE
21345 			     okl_api.set_message(
21346                                                  G_APP_NAME,
21347                                                  G_MISSING_VALUE_FOR_LINE,
21348                                                  'CONTRACT_NUM',
21349                                                  p_contract_number||'/'||TO_CHAR(p_line_number),
21350                                                  'COL_NAME',
21351                                                  'PTH_EVG_PAYGROUP_CODE',
21352                                                  'LINE',
21353                                                  p_line_type
21354                                                 );
21355 			     raise party_role_failed;
21356                           END IF;
21357                       ELSE
21358                           l_evg_pmnt_dtls_rec.pay_group_code := p_pth_evg_paygroup_code;
21359                       END IF;
21360                       IF (p_pth_evg_pmnt_basis is NULL) THEN
21361                          l_evg_pmnt_dtls_rec.payment_basis := 'PROCESS_DATE';
21362                       ELSE
21363                          OPEN  pmnt_basis_csr(p_pth_evg_pmnt_basis);
21364                          FETCH pmnt_basis_csr INTO rec_exists_yn;
21365                          IF (pmnt_basis_csr%NOTFOUND) THEN
21366                             okl_api.set_message(
21367                                                 G_APP_NAME,
21368                                                 G_INVALID_VALUE,
21369                                                 'CONTRACT_NUM',
21370                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21371                                                 'COL_NAME',
21372                                                 'PTH_EVG_PMNT_BASIS',
21373                                                 'COL_VALUE',
21374                                                 p_pth_evg_pmnt_basis
21375                                                );
21376                             CLOSE pmnt_basis_csr;
21377                             raise party_role_failed;
21378                          ELSE
21379                             l_evg_pmnt_dtls_rec.payment_basis := p_pth_evg_pmnt_basis;
21380                             CLOSE pmnt_basis_csr;
21381                          END IF;
21382                       END IF;
21383                       l_evg_pmnt_dtls_rec.payment_hdr_id := g_evg_pmnt_hdr.id;
21384 		      l_evg_pmnt_dtls_rec.payment_method_code := p_pth_evg_pmnt_method_code;
21385 
21386 		      IF ((p_pth_evg_pmnt_basis = 'PROCESS_DATE') AND
21387                            (p_pth_evg_pmnt_remit_days IS NULL)) THEN
21388         	          okl_api.set_message(
21389                                               G_APP_NAME,
21390                                               G_MISSING_VALUE_FOR_LINE,
21391                                               'CONTRACT_NUM',
21392                                               p_contract_number||'/'||TO_CHAR(p_line_number),
21393                                               'COL_NAME',
21394                                               'PTH_EVG_PMNT_REMIT_DAYS',
21395                                               'LINE',
21396                                               p_line_type
21397                                              );
21398 			  raise party_role_failed;
21399                       ELSE
21400 		         l_evg_pmnt_dtls_rec.remit_days := p_pth_evg_pmnt_remit_days;
21401                       END IF;
21402                       IF (p_pth_evg_disb_basis is NOT NULL) THEN
21403                          OPEN  disb_basis_csr(p_pth_evg_disb_basis);
21404                          FETCH disb_basis_csr INTO rec_exists_yn;
21405                          IF (disb_basis_csr%NOTFOUND) THEN
21406                             okl_api.set_message(
21407                                                 G_APP_NAME,
21408                                                 G_INVALID_VALUE,
21409                                                 'CONTRACT_NUM',
21410                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21411                                                 'COL_NAME',
21412                                                 'PTH_EVG_DISB_BASIS',
21413                                                 'COL_VALUE',
21414                                                 p_pth_evg_disb_basis
21415                                                );
21416                             CLOSE disb_basis_csr;
21417                             raise party_role_failed;
21418                          ELSE
21419                             l_evg_pmnt_dtls_rec.disbursement_basis := p_pth_evg_disb_basis;
21420                             CLOSE disb_basis_csr;
21421                          END IF;
21422                       ELSE
21423                             okl_api.set_message(
21424                                                 G_APP_NAME,
21425                                                 G_MISSING_VALUE_FOR_LINE,
21426                                                 'CONTRACT_NUM',
21427                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21428                                                 'COL_NAME',
21429                                                 'PTH_EVG_DISB_BASIS',
21430                                                 'LINE',
21431                                                 p_line_type
21432                                                );
21433                       END IF;
21434 		      IF ((p_pth_evg_disb_basis = 'AMOUNT')) THEN
21435                          IF (p_pth_evg_disb_fixed_amount IS NULL) THEN
21436         	            okl_api.set_message(
21437                                                 G_APP_NAME,
21438                                                 G_MISSING_VALUE_FOR_LINE,
21439                                                 'CONTRACT_NUM',
21440                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21441                                                 'COL_NAME',
21442                                                 'PTH_EVG_DISB_FIXED_AMOUNT',
21443                                                 'LINE',
21444                                                 p_line_type
21445                                                );
21446 			    raise party_role_failed;
21447                          ELSE
21448 		         l_evg_pmnt_dtls_rec.disbursement_fixed_amount := p_pth_evg_disb_fixed_amount;
21449                          END IF;
21450 		      END IF;
21451 		      IF ((p_pth_evg_disb_basis = 'PERCENT')) THEN
21452                          IF (p_pth_evg_disb_pct IS NULL) THEN
21453         	            okl_api.set_message(
21454                                                 G_APP_NAME,
21455                                                 G_MISSING_VALUE_FOR_LINE,
21456                                                 'CONTRACT_NUM',
21457                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21458                                                 'COL_NAME',
21459                                                 'PTH_EVG_DISB_PCT',
21460                                                 'LINE',
21461                                                 p_line_type
21462                                                );
21463 			    raise party_role_failed;
21464                          ELSE
21465 		         l_evg_pmnt_dtls_rec.disbursement_percent := p_pth_evg_disb_pct;
21466                          END IF;
21467 		      END IF;
21468 
21469                       IF (p_pth_evg_proc_fee_basis is NOT NULL) THEN
21470                          OPEN  proc_fee_basis_csr(p_pth_evg_proc_fee_basis);
21471                          FETCH proc_fee_basis_csr INTO rec_exists_yn;
21472                          IF (proc_fee_basis_csr%NOTFOUND) THEN
21473                             okl_api.set_message(
21474                                                 G_APP_NAME,
21475                                                 G_INVALID_VALUE,
21476                                                 'CONTRACT_NUM',
21477                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21478                                                 'COL_NAME',
21479                                                 'PTH_EVG_PROC_FEE_BASIS',
21480                                                 'COL_VALUE',
21481                                                 p_pth_evg_proc_fee_basis
21482                                                );
21483                             CLOSE proc_fee_basis_csr;
21484                             raise party_role_failed;
21485                          ELSE
21486                             l_evg_pmnt_dtls_rec.processing_fee_basis := p_pth_evg_proc_fee_basis;
21487                             CLOSE proc_fee_basis_csr;
21488                          END IF;
21489                       END IF;
21490 		      IF ((p_pth_evg_proc_fee_basis = 'AMOUNT')) THEN
21491                          IF (p_pth_evg_proc_fee_fixed_amt IS NULL) THEN
21492         	            okl_api.set_message(
21493                                                 G_APP_NAME,
21494                                                 G_MISSING_VALUE_FOR_LINE,
21495                                                 'CONTRACT_NUM',
21496                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21497                                                 'COL_NAME',
21498                                                 'PTH_EVG_PROC_FEE_FIXED_AMT',
21499                                                 'LINE',
21500                                                 p_line_type
21501                                                );
21502 			    raise party_role_failed;
21503                          ELSE
21504 		         l_evg_pmnt_dtls_rec.processing_fee_fixed_amount := p_pth_evg_proc_fee_fixed_amt;
21505                          END IF;
21506 		      END IF;
21507 
21508 		      IF ((p_pth_evg_proc_fee_basis = 'PERCENT')) THEN
21509                          IF (p_pth_evg_proc_pct IS NULL) THEN
21510         	            okl_api.set_message(
21511                                                 G_APP_NAME,
21512                                                 G_MISSING_VALUE_FOR_LINE,
21513                                                 'CONTRACT_NUM',
21514                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21515                                                 'COL_NAME',
21516                                                 'PTH_EVG_PROC_PCT',
21517                                                 'LINE',
21518                                                 p_line_type
21519                                                );
21520 			    raise party_role_failed;
21521                          ELSE
21522 		         l_evg_pmnt_dtls_rec.processing_fee_percent := p_pth_evg_proc_pct;
21523                          END IF;
21524 		      END IF;
21525                l_counter := l_counter + 1;
21526                l_pmnt_dtls_tbl_in(l_counter) := l_evg_pmnt_dtls_rec;
21527 
21528                END IF;
21529       END IF;
21530       END IF;
21531       END IF;
21532       debug_message ('No. of records in payment dtls table : '||l_pmnt_dtls_tbl_in.count);
21533 
21534       IF (l_pmnt_dtls_tbl_in.COUNT > 0) THEN
21535          okl_party_payments_pvt.create_party_payment_dtls(
21536                                                          p_api_version    => 1.0,
21537                                                          x_return_status  => x_return_status,
21538                                                          x_msg_count      => x_msg_count,
21539                                                          x_msg_data       => x_msg_data,
21540                                                          p_ppydv_tbl       => l_pmnt_dtls_tbl_in,
21541                                                          x_ppydv_tbl       => l_pmnt_dtls_tbl_out
21542 						        );
21543 
21544          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
21545             x_return_status := OKL_API.G_RET_STS_ERROR;
21546             RAISE party_role_failed;
21547          END IF;
21548       END IF;
21549 
21550       -- Create evergreen payment dtls if header exists
21551       debug_message('Create evergreen payment dtls if header exists');
21552       debug_message('Cont Evg pmnt hdr id: '||g_evg_cont_pmnt_hdr.id);
21553       l_evg_cont_pmnt_dtls_rec := NULL;
21554       IF (g_evg_cont_pmnt_hdr.id IS NOT NULL) THEN
21555            IF (p_line_number IS NULL) THEN -- header only
21556 	       IF ((p_pth_evg_vendor_site_code IS NOT NULL) OR
21557                    (p_pth_evg_vendor_site_id IS NOT NULL)) THEN
21558                       l_evg_cont_pmnt_dtls_rec.vendor_id := x_asset_vendor_id;
21559                       l_evg_cont_pmnt_dtls_rec.cpl_id := x_cplv_rec.id;
21560 	              l_evg_cont_pmnt_dtls_rec.pay_site_id := get_vendor_paysite( x_return_status       => x_return_status,
21561 	                                                                 p_contract_number     => p_contract_number,
21562 			                                                 p_line_number         => p_line_number,
21563 			                                                 p_vendor_paysite_name => p_pth_evg_vendor_site_code,
21564 			                                                 p_vendor_paysite_id   => p_pth_evg_vendor_site_id
21565                                                                        );
21566                       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
21567                           raise party_role_failed;
21568                       END IF;
21569 
21570 		      IF (p_pth_evg_pmnt_term_code is NOT NULL OR
21571 		          p_pth_evg_pmnt_term_id IS NOT NULL ) THEN
21572                           l_evg_cont_pmnt_dtls_rec.payment_term_id := get_payment_term(
21573                                                                 x_return_status   => x_return_status,
21574                                                                 p_contract_number => p_contract_number,
21575                                                                 p_line_number     => p_line_number,
21576                                                                 p_payment_term    => p_pth_evg_pmnt_term_code,
21577                                                                 p_payment_term_id => p_pth_evg_pmnt_term_id
21578                                                                );
21579 
21580                           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
21581                               raise party_role_failed;
21582                           END IF;
21583 
21584                       ELSE
21585                           okl_api.set_message(
21586                                               G_APP_NAME,
21587                                               G_MISSING_VALUE,
21588                                               'CONTRACT_NUM',
21589                                               p_contract_number,
21590                                               'COL_NAME',
21591                                               'PTH_EVG_PMNT_TERM_CODE'
21592                                               );
21593                       END IF;
21594                       l_paygroup_code := NULL;
21595 		      IF (p_pth_evg_paygroup_code IS NULL) THEN
21596                           l_paygroup_code := get_vendor_paygroup(
21597                                                                 x_return_status   => x_return_status,
21598                                                                 p_contract_number => p_contract_number,
21599                                                                 p_line_number     => p_line_number,
21600                                                                 p_auth_org_id     => p_auth_org_id,
21601                                                                 p_vendor_paysite_id => p_pth_evg_vendor_site_id
21602                                                                );
21603 
21604                           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
21605                               raise party_role_failed;
21606                           END IF;
21607 
21608 			  IF (l_paygroup_code IS NOT NULL) THEN
21609                              l_evg_cont_pmnt_dtls_rec.pay_group_code := l_paygroup_code;
21610 			  ELSE
21611 			     okl_api.set_message(
21612                                                  G_APP_NAME,
21613                                                  G_MISSING_VALUE_FOR_LINE,
21614                                                  'CONTRACT_NUM',
21615                                                  p_contract_number||'/'||TO_CHAR(p_line_number),
21616                                                  'COL_NAME',
21617                                                  'PTH_EVG_PAYGROUP_CODE',
21618                                                  'LINE',
21619                                                  p_line_type
21620                                                 );
21621 			     raise party_role_failed;
21622                           END IF;
21623                       ELSE
21624                           l_evg_cont_pmnt_dtls_rec.pay_group_code := p_pth_evg_paygroup_code;
21625                       END IF;
21626                       IF (p_pth_evg_pmnt_basis is NULL) THEN
21627                          l_evg_cont_pmnt_dtls_rec.payment_basis := 'PROCESS_DATE';
21628                       ELSE
21629                          OPEN  pmnt_basis_csr(p_pth_evg_pmnt_basis);
21630                          FETCH pmnt_basis_csr INTO rec_exists_yn;
21631                          IF (pmnt_basis_csr%NOTFOUND) THEN
21632                             okl_api.set_message(
21633                                                 G_APP_NAME,
21634                                                 G_INVALID_VALUE,
21635                                                 'CONTRACT_NUM',
21636                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21637                                                 'COL_NAME',
21638                                                 'PTH_EVG_PMNT_BASIS',
21639                                                 'COL_VALUE',
21640                                                 p_pth_evg_pmnt_basis
21641                                                );
21642                             CLOSE pmnt_basis_csr;
21643                             raise party_role_failed;
21644                          ELSE
21645                             l_evg_cont_pmnt_dtls_rec.payment_basis := p_pth_evg_pmnt_basis;
21646                             CLOSE pmnt_basis_csr;
21647                          END IF;
21648                       END IF;
21649                       l_evg_cont_pmnt_dtls_rec.payment_hdr_id := g_evg_cont_pmnt_hdr.id;
21650 		      l_evg_cont_pmnt_dtls_rec.payment_method_code := p_pth_evg_pmnt_method_code;
21651 
21652 		      IF ((p_pth_evg_pmnt_basis = 'PROCESS_DATE') AND
21653                            (p_pth_evg_pmnt_remit_days IS NULL)) THEN
21654         	          okl_api.set_message(
21655                                               G_APP_NAME,
21656                                               G_MISSING_VALUE_FOR_LINE,
21657                                               'CONTRACT_NUM',
21658                                               p_contract_number||'/'||TO_CHAR(p_line_number),
21659                                               'COL_NAME',
21660                                               'PTH_EVG_PMNT_REMIT_DAYS',
21661                                               'LINE',
21662                                               p_line_type
21663                                              );
21664 			  raise party_role_failed;
21665                       ELSE
21666 		         l_evg_cont_pmnt_dtls_rec.remit_days := p_pth_evg_pmnt_remit_days;
21667                       END IF;
21668                       IF (p_pth_evg_disb_basis is NOT NULL) THEN
21669                          OPEN  disb_basis_csr(p_pth_evg_disb_basis);
21670                          FETCH disb_basis_csr INTO rec_exists_yn;
21671                          IF (disb_basis_csr%NOTFOUND) THEN
21672                             okl_api.set_message(
21673                                                 G_APP_NAME,
21674                                                 G_INVALID_VALUE,
21675                                                 'CONTRACT_NUM',
21676                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21677                                                 'COL_NAME',
21678                                                 'PTH_EVG_DISB_BASIS',
21679                                                 'COL_VALUE',
21680                                                 p_pth_evg_disb_basis
21681                                                );
21682                             CLOSE disb_basis_csr;
21683                             raise party_role_failed;
21684                          ELSE
21685                             l_evg_cont_pmnt_dtls_rec.disbursement_basis := p_pth_evg_disb_basis;
21686                             CLOSE disb_basis_csr;
21687                          END IF;
21688                       ELSE
21689                             okl_api.set_message(
21690                                                 G_APP_NAME,
21691                                                 G_MISSING_VALUE_FOR_LINE,
21692                                                 'CONTRACT_NUM',
21693                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21694                                                 'COL_NAME',
21695                                                 'PTH_EVG_DISB_BASIS',
21696                                                 'LINE',
21697                                                 p_line_type
21698                                                );
21699                       END IF;
21700 		      IF ((p_pth_evg_disb_basis = 'AMOUNT')) THEN
21701                          IF (p_pth_evg_disb_fixed_amount IS NULL) THEN
21702         	            okl_api.set_message(
21703                                                 G_APP_NAME,
21704                                                 G_MISSING_VALUE_FOR_LINE,
21705                                                 'CONTRACT_NUM',
21706                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21707                                                 'COL_NAME',
21708                                                 'PTH_EVG_DISB_FIXED_AMOUNT',
21709                                                 'LINE',
21710                                                 p_line_type
21711                                                );
21712 			    raise party_role_failed;
21713                          ELSE
21714 		         l_evg_cont_pmnt_dtls_rec.disbursement_fixed_amount := p_pth_evg_disb_fixed_amount;
21715                          END IF;
21716 		      END IF;
21717 		      IF ((p_pth_evg_disb_basis = 'PERCENT')) THEN
21718                          IF (p_pth_evg_disb_pct IS NULL) THEN
21719         	            okl_api.set_message(
21720                                                 G_APP_NAME,
21721                                                 G_MISSING_VALUE_FOR_LINE,
21722                                                 'CONTRACT_NUM',
21723                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21724                                                 'COL_NAME',
21725                                                 'PTH_EVG_DISB_PCT',
21726                                                 'LINE',
21727                                                 p_line_type
21728                                                );
21729 			    raise party_role_failed;
21730                          ELSE
21731 		         l_evg_cont_pmnt_dtls_rec.disbursement_percent := p_pth_evg_disb_pct;
21732                          END IF;
21733 		      END IF;
21734 
21735                       IF (p_pth_evg_proc_fee_basis is NOT NULL) THEN
21736                          OPEN  proc_fee_basis_csr(p_pth_evg_proc_fee_basis);
21737                          FETCH proc_fee_basis_csr INTO rec_exists_yn;
21738                          IF (proc_fee_basis_csr%NOTFOUND) THEN
21739                             okl_api.set_message(
21740                                                 G_APP_NAME,
21741                                                 G_INVALID_VALUE,
21742                                                 'CONTRACT_NUM',
21743                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21744                                                 'COL_NAME',
21745                                                 'PTH_EVG_PROC_FEE_BASIS',
21746                                                 'COL_VALUE',
21747                                                 p_pth_evg_proc_fee_basis
21748                                                );
21749                             CLOSE proc_fee_basis_csr;
21750                             raise party_role_failed;
21751                          ELSE
21752                             l_evg_cont_pmnt_dtls_rec.processing_fee_basis := p_pth_evg_proc_fee_basis;
21753                             CLOSE proc_fee_basis_csr;
21754                          END IF;
21755                       END IF;
21756 		      IF ((p_pth_evg_proc_fee_basis = 'AMOUNT')) THEN
21757                          IF (p_pth_evg_proc_fee_fixed_amt IS NULL) THEN
21758         	            okl_api.set_message(
21759                                                 G_APP_NAME,
21760                                                 G_MISSING_VALUE_FOR_LINE,
21761                                                 'CONTRACT_NUM',
21762                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21763                                                 'COL_NAME',
21764                                                 'PTH_EVG_PROC_FEE_FIXED_AMT',
21765                                                 'LINE',
21766                                                 p_line_type
21767                                                );
21768 			    raise party_role_failed;
21769                          ELSE
21770 		         l_evg_cont_pmnt_dtls_rec.processing_fee_fixed_amount := p_pth_evg_proc_fee_fixed_amt;
21771                          END IF;
21772 		      END IF;
21773 
21774 		      IF ((p_pth_evg_proc_fee_basis = 'PERCENT')) THEN
21775                          IF (p_pth_evg_proc_pct IS NULL) THEN
21776         	            okl_api.set_message(
21777                                                 G_APP_NAME,
21778                                                 G_MISSING_VALUE_FOR_LINE,
21779                                                 'CONTRACT_NUM',
21780                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21781                                                 'COL_NAME',
21782                                                 'PTH_EVG_PROC_PCT',
21783                                                 'LINE',
21784                                                 p_line_type
21785                                                );
21786 			    raise party_role_failed;
21787                          ELSE
21788 		         l_evg_cont_pmnt_dtls_rec.processing_fee_percent := p_pth_evg_proc_pct;
21789                          END IF;
21790 		      END IF;
21791                       l_counter := l_counter + 1;
21792                       l_cont_pmnt_dtls_tbl_in(l_counter) := l_evg_cont_pmnt_dtls_rec;
21793 
21794                END IF; -- vendor_site_code is not null
21795            END IF; -- p_line_number is null
21796       END IF; -- g_evg_cont_pmnt_hdr.id is not null
21797 
21798       debug_message ('No. of records in payment dtls table : '||l_cont_pmnt_dtls_tbl_in.count);
21799 
21800       IF (l_cont_pmnt_dtls_tbl_in.COUNT > 0) THEN
21801          okl_party_payments_pvt.create_party_payment_dtls(
21802                                                          p_api_version    => 1.0,
21803                                                          x_return_status  => x_return_status,
21804                                                          x_msg_count      => x_msg_count,
21805                                                          x_msg_data       => x_msg_data,
21806                                                          p_ppydv_tbl       => l_cont_pmnt_dtls_tbl_in,
21807                                                          x_ppydv_tbl       => l_cont_pmnt_dtls_tbl_out
21808 						        );
21809 
21810          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
21811             x_return_status := OKL_API.G_RET_STS_ERROR;
21812             RAISE party_role_failed;
21813          END IF;
21814       END IF;
21815       debug_message('Contract evergreen dtls end.');
21816       -- Create evergreen payment dtls if header exists
21817 
21818       debug_message('------>Party role done');
21819       return;
21820 
21821    EXCEPTION
21822 
21823      WHEN party_role_failed THEN
21824         x_return_status := OKL_API.G_RET_STS_ERROR;
21825         debug_message(l_proc_name ||': '||l_progress);
21826 
21827      WHEN OTHERS THEN
21828        debug_message(l_proc_name ||': '||l_progress);
21829 
21830   END process_party_role;
21831 
21832 ------------------------------------------------------------------------------
21833 -- PROCEDURE process_term
21834 -- It Process Terms Interafce Records at Contract Line level and Header Level as well and
21835 -- stacks Error, if any, and returns ERROR status to calling process.
21836 -- Calls:
21837 --  get_bill_to_address_id
21838 --  get_bank_account_id
21839 --  get_invoice_format_id
21840 --  get_payment_method_id
21841 -- Called By:
21842 --  load_input_record
21843 ------------------------------------------------------------------------------
21844    PROCEDURE process_term(
21845                           x_return_status             OUT NOCOPY VARCHAR2,
21846                           x_msg_count                 OUT NOCOPY NUMBER,
21847                           x_msg_data                  OUT NOCOPY VARCHAR2,
21848                           p_contract_number           IN  okc_k_headers_v.contract_number%TYPE,
21849                           p_chr_id                    IN  okc_k_headers_v.id%TYPE,
21850                           p_auth_org_id               IN  okl_header_interface.authoring_org_id%TYPE,
21851                           p_line_number               IN  okc_k_lines_v.line_number%TYPE,
21852                           p_line_type                 IN  okl_lines_interface.line_type%TYPE,
21853                           p_cle_id                    IN  okc_k_lines_v.id%TYPE,
21854                           p_bill_to_address_id        IN  okl_terms_interface.bill_to_address_id%TYPE,
21855                           p_bill_to_address           IN  okl_terms_interface.bill_to_address%TYPE,
21856                           p_bank_account_id           IN  okl_terms_interface.bank_account_id%TYPE,
21857                           p_bank_account_number       IN  okl_terms_interface.bank_account_number%TYPE,
21858                           p_reason_for_invoice_review IN  okl_terms_interface.reason_for_invoice_review%TYPE,
21859                           p_invoice_review_until_date IN  okl_terms_interface.invoice_review_until_date%TYPE,
21860                           p_invoice_format_id         IN  okl_terms_interface.invoice_format_id%TYPE,
21861                           p_invoice_format_code       IN  okl_terms_interface.invoice_format_code%TYPE,
21862                           p_review_invoice_flag       IN  okl_terms_interface.review_invoice_flag%TYPE,
21863                           p_payment_method_id         IN  okl_terms_interface.payment_method_id%TYPE,
21864                           p_payment_method            IN  okl_terms_interface.payment_method%TYPE,
21865                           p_prescribed_asset_flag     IN  okl_terms_interface.prescribed_asset_flag%TYPE,
21866                           p_cash_appl_rule_name       IN  okl_terms_interface.cash_appl_rule_name%TYPE
21867                          ) IS
21868 
21869    l_proc_name VARCHAR2(35) := 'PROCESS_TERM';
21870    term_failed EXCEPTION;
21871 
21872    -- Rule Rec
21873    x_rgpv_rec         rgpv_rec_type;
21874    l_rgpv_rec         rgpv_rec_type;
21875 
21876    l_rulv_rec         rulv_rec_type;
21877    x_rulv_rec         rulv_rec_type;
21878 
21879    l_clev_rec         clev_rec_type;
21880    x_clev_rec         clev_rec_type;
21881    l_klev_rec         klev_rec_type;
21882    x_klev_rec         klev_rec_type;
21883 
21884    x_bank_account_id    NUMBER := NULL;
21885    x_bill_to_address_id NUMBER := NULL;
21886    x_invoice_format_id  NUMBER := NULL;
21887    x_payment_method_id  NUMBER := NULL;
21888    x_invoice_format_name okl_invoice_formats_v.name%TYPE;
21889    l_rgp_id              NUMBER;
21890 
21891    x_cash_appl_rule_id  OKL_BPD_ACTIVE_CSH_RLS_V.ID1%TYPE;
21892    BEGIN
21893 
21894      x_return_status := OKL_API.G_RET_STS_SUCCESS;
21895      debug_message(l_proc_name);
21896 
21897      IF (p_line_type = 'ASSET') THEN
21898 
21899          l_rgpv_rec            := NULL;
21900          l_rgp_id              := NULL;
21901          l_rgpv_rec.rgd_code   := 'LABILL';
21902          l_rgpv_rec.chr_id     := NULL;
21903          l_rgpv_rec.dnz_chr_id := p_chr_id;
21904          l_rgpv_rec.cle_id     := p_cle_id;
21905          l_rgpv_rec.rgp_type   := 'KRG';
21906 
21907      debug_message('------>Cust Acct: '||g_customer_account_id);
21908 
21909      IF (g_customer_account_id IS NOT NULL) THEN -- customer account is provided at header interface
21910         get_bill_to_address_id(
21911                                x_return_status           => x_return_status,
21912                                x_msg_count               => x_msg_count,
21913                                x_msg_data                => x_msg_data,
21914                                p_contract_number         => p_contract_number,
21915                                p_auth_org_id             => p_auth_org_id,
21916                                p_bill_to_address_id      => p_bill_to_address_id,
21917                                p_bill_to_address         => p_bill_to_address,
21918                                p_customer_account_id     => g_customer_account_id,
21919                                x_bill_to_address_id      => x_bill_to_address_id
21920                               );
21921 
21922         IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
21923             x_return_status := OKL_API.G_RET_STS_ERROR;
21924             raise term_failed;
21925         END IF;
21926 
21927      END IF; --g_customer_account_id
21928 
21929      l_rulv_rec := NULL;
21930 
21931 -- cklee bug# 3440442 bug# 3440442
21932        debug_message('------>prescribed_asset_flag: '||p_prescribed_asset_flag);
21933        IF (p_prescribed_asset_flag IS NOT NULL) THEN
21934 
21935          IF (NVL(p_prescribed_asset_flag,'N') NOT IN ('Y','N')) THEN
21936             okl_api.set_message(
21937                                G_APP_NAME,
21938                                G_INVALID_VALUE,
21939                                'CONTRACT_NUM',
21940                                p_contract_number,
21941                                'COL_NAME',
21942                                'PRESCRIBED_ASSET_FLAG',
21943                                'COL_VALUE',
21944                                p_prescribed_asset_flag
21945                               );
21946 
21947             x_return_status := OKL_API.G_RET_STS_ERROR;
21948             raise term_failed;
21949 
21950          END IF;
21951 
21952          -- Update prescribed_asset_flag
21953          l_clev_rec.id                    := p_cle_id;
21954 --         l_clev_rec.dnz_chr_id            := p_chr_id;
21955          l_klev_rec.prescribed_asset_yn := p_prescribed_asset_flag;
21956 
21957          okl_contract_pub.update_contract_line(
21958                                   p_api_version     => 1.0,
21959                                   p_init_msg_list   => OKL_API.G_FALSE,
21960                                   x_return_status   => x_return_status,
21961                                   x_msg_count       => x_msg_count,
21962                                   x_msg_data        => x_msg_data,
21963                                   p_clev_rec        => l_clev_rec,
21964                                   p_klev_rec        => l_klev_rec,
21965                                   x_clev_rec        => x_clev_rec,
21966                                   x_klev_rec        => x_klev_rec
21967                                  );
21968 
21969          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
21970              x_return_status := OKL_API.G_RET_STS_ERROR;
21971              raise term_failed;
21972          END IF;
21973 
21974        debug_message('------>prescribed_asset_flag updated: '||x_klev_rec.prescribed_asset_yn);
21975        END IF;
21976 -- cklee bug# 3440442 bug# 3440442
21977 
21978 
21979      debug_message('------>Bill to ID: '||x_bill_to_address_id);
21980 
21981      IF (x_bill_to_address_id IS NOT NULL) THEN
21982 
21983          -- Update asset line with BTO information
21984          l_clev_rec.id                  := p_cle_id;
21985          --l_clev_rec.dnz_chr_id          := p_chr_id;
21986          l_clev_rec.bill_to_site_use_id := x_bill_to_address_id;
21987 
21988          okl_contract_pub.update_contract_line(
21989                                   p_api_version     => 1.0,
21990                                   p_init_msg_list   => OKL_API.G_FALSE,
21991                                   x_return_status   => x_return_status,
21992                                   x_msg_count       => x_msg_count,
21993                                   x_msg_data        => x_msg_data,
21994                                   p_clev_rec        => l_clev_rec,
21995                                   p_klev_rec        => l_klev_rec,
21996                                   x_clev_rec        => x_clev_rec,
21997                                   x_klev_rec        => x_klev_rec
21998                                  );
21999 
22000          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
22001              x_return_status := OKL_API.G_RET_STS_ERROR;
22002              raise term_failed;
22003          END IF;
22004 
22005          debug_message('------>Bill to updated: '||x_clev_rec.bill_to_site_use_id);
22006 
22007 /* Rule Migration
22008 
22009          l_rulv_rec.jtot_object1_code         := 'OKX_BILLTO';
22010          l_rulv_rec.object1_id1               := TO_CHAR(x_bill_to_address_id);
22011          l_rulv_rec.object1_id2               := '#';
22012          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
22013          l_rulv_rec.dnz_chr_id                := p_chr_id;
22014          l_rulv_rec.rule_information_category := 'BTO';
22015          l_rulv_rec.std_template_yn           := 'N';
22016          l_rulv_rec.warn_yn                   := 'N';
22017 
22018          create_rule_group_and_rule(
22019                                  x_return_status => x_return_status,
22020                                  x_msg_count     => x_msg_count,
22021                                  x_msg_data      => x_msg_data,
22022                                  p_rgp_id        => l_rgp_id,
22023                                  p_rgpv_rec      => l_rgpv_rec,
22024                                  p_rulv_rec      => l_rulv_rec,
22025                                  x_rgpv_rec      => x_rgpv_rec,
22026                                  x_rulv_rec      => x_rulv_rec
22027                                 );
22028 
22029          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
22030              raise term_failed;
22031          END IF;
22032 
22033          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
22034             l_rgp_id := x_rgpv_rec.id;
22035          END IF;
22036 */
22037          IF (p_bank_account_id IS NOT NULL
22038              OR
22039              p_bank_account_number IS NOT NULL) THEN
22040             get_bank_account_id(
22041                                 x_return_status           => x_return_status,
22042                                 x_msg_count               => x_msg_count,
22043                                 x_msg_data                => x_msg_data,
22044                                 p_contract_number         => p_contract_number,
22045                                 p_auth_org_id             => p_auth_org_id,
22046                                 p_bank_account_id         => p_bank_account_id,
22047                                 p_bank_account_number     => p_bank_account_number,
22048                                 p_customer_account_id     => g_customer_account_id,
22049                                 p_cust_site_id            => x_bill_to_address_id,
22050                                 x_bank_account_id         => x_bank_account_id
22051                                );
22052             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
22053                 x_return_status := OKL_API.G_RET_STS_ERROR;
22054                 raise term_failed;
22055             END IF;
22056          END IF;
22057 
22058          l_rulv_rec := NULL;
22059          IF (x_bank_account_id IS NOT NULL) THEN
22060 
22061             l_rulv_rec.jtot_object1_code         := 'OKX_CUSTBKAC';
22062             l_rulv_rec.object1_id1               := TO_CHAR(x_bank_account_id);
22063             l_rulv_rec.object1_id2               := '#';
22064             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
22065             l_rulv_rec.dnz_chr_id                := p_chr_id;
22066             l_rulv_rec.rule_information_category := 'LABACC';
22067             l_rulv_rec.std_template_yn           := 'N';
22068             l_rulv_rec.warn_yn                   := 'N';
22069 
22070             create_rule_group_and_rule(
22071                                        x_return_status => x_return_status,
22072                                        x_msg_count     => x_msg_count,
22073                                        x_msg_data      => x_msg_data,
22074                                        p_rgp_id        => l_rgp_id,
22075                                        p_rgpv_rec      => l_rgpv_rec,
22076                                        p_rulv_rec      => l_rulv_rec,
22077                                        x_rgpv_rec      => x_rgpv_rec,
22078                                        x_rulv_rec      => x_rulv_rec
22079                                       );
22080 
22081             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
22082                raise term_failed;
22083             END IF;
22084 
22085             IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
22086                l_rgp_id := x_rgpv_rec.id;
22087             END IF;
22088 
22089          END IF; --bank_account
22090 
22091          IF (p_reason_for_invoice_review IS NOT NULL) THEN -- Bug# 3650522
22092             OKL_API.SET_MESSAGE(
22093                                 G_APP_NAME,
22094                                 G_VALUE_NOT_ALLOWED,
22095                                 'CONTRACT_NUM',
22096                                 p_contract_number,
22097                                 'LINE_NUM',
22098                                 p_line_number,
22099                                 'COL_NAME',
22100                                 'REASON_FOR_INVOICE_REVIEW'
22101                                );
22102 
22103             x_return_status := OKL_API.G_RET_STS_ERROR;
22104 
22105          END IF;
22106 
22107          IF (p_invoice_review_until_date IS NOT NULL) THEN -- Bug# 3650522
22108             OKL_API.SET_MESSAGE(
22109                                 G_APP_NAME,
22110                                 G_VALUE_NOT_ALLOWED,
22111                                 'CONTRACT_NUM',
22112                                 p_contract_number,
22113                                 'LINE_NUM',
22114                                 p_line_number,
22115                                 'COL_NAME',
22116                                 'INVOICE_REVIEW_UNTIL_DATE'
22117                                );
22118 
22119             x_return_status := OKL_API.G_RET_STS_ERROR;
22120 
22121          END IF;
22122 
22123 /* not required, Bug# 3650522
22124          debug_message('------>Before review invoice');
22125          l_rulv_rec := NULL;
22126          IF (p_reason_for_invoice_review IS NOT NULL) THEN
22127 
22128             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
22129             l_rulv_rec.dnz_chr_id                := p_chr_id;
22130             l_rulv_rec.rule_information1         := p_reason_for_invoice_review;
22131             l_rulv_rec.rule_information_category := 'LAINPR';
22132             l_rulv_rec.std_template_yn           := 'N';
22133             l_rulv_rec.warn_yn                   := 'N';
22134 
22135          END IF; --reason for invoice review
22136 
22137          IF (p_invoice_review_until_date IS NOT NULL) THEN
22138 
22139             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
22140             l_rulv_rec.dnz_chr_id                := p_chr_id;
22141             l_rulv_rec.rule_information2         := get_canonical_date(p_invoice_review_until_date);
22142             l_rulv_rec.rule_information_category := 'LAINPR';
22143             l_rulv_rec.std_template_yn           := 'N';
22144             l_rulv_rec.warn_yn                   := 'N';
22145 
22146          END IF; -- invoice review until date
22147 
22148          create_rule_group_and_rule(
22149                                     x_return_status => x_return_status,
22150                                     x_msg_count     => x_msg_count,
22151                                     x_msg_data      => x_msg_data,
22152                                     p_rgp_id        => l_rgp_id,
22153                                     p_rgpv_rec      => l_rgpv_rec,
22154                                     p_rulv_rec      => l_rulv_rec,
22155                                     x_rgpv_rec      => x_rgpv_rec,
22156                                     x_rulv_rec      => x_rulv_rec
22157                                    );
22158 
22159          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
22160             raise term_failed;
22161          END IF;
22162 */
22163 /* Bug# 4284166 : not required
22164 
22165          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
22166             l_rgp_id := x_rgpv_rec.id;
22167          END IF;
22168 */
22169 
22170          IF (p_invoice_format_id IS NOT NULL
22171              OR
22172              p_invoice_format_code IS NOT NULL) THEN -- Bug# 3650522
22173             OKL_API.SET_MESSAGE(
22174                                 G_APP_NAME,
22175                                 G_VALUE_NOT_ALLOWED,
22176                                 'CONTRACT_NUM',
22177                                 p_contract_number,
22178                                 'LINE_NUM',
22179                                 p_line_number,
22180                                 'COL_NAME',
22181                                 'INVOICE_FORMAT_ID/_CODE'
22182                                );
22183 
22184             x_return_status := OKL_API.G_RET_STS_ERROR;
22185 
22186          END IF;
22187 
22188 /* not required, Bug# 3650522
22189          debug_message('------>Before invoice format');
22190 
22191          IF (p_invoice_format_id IS NOT NULL
22192              OR
22193              p_invoice_format_code IS NOT NULL) THEN
22194              get_invoice_format_id(
22195                                  x_return_status           => x_return_status,
22196                                  x_msg_count               => x_msg_count,
22197                                  x_msg_data                => x_msg_data,
22198                                  p_contract_number         => p_contract_number,
22199                                  p_invoice_format_id       => p_invoice_format_id,
22200                                  p_invoice_format_code     => p_invoice_format_code,
22201                                  x_invoice_format_id       => x_invoice_format_id,
22202                                  x_invoice_format_name     => x_invoice_format_name
22203                                 );
22204 
22205             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
22206                x_return_status := OKL_API.G_RET_STS_ERROR;
22207                raise term_failed;
22208             END IF;
22209          END IF;
22210 
22211          debug_message('------>Invoice format ID: '||x_invoice_format_id);
22212 */
22213 
22214          IF (p_cash_appl_rule_name IS NOT NULL) THEN -- Bug# 3650522
22215             OKL_API.SET_MESSAGE(
22216                                 G_APP_NAME,
22217                                 G_VALUE_NOT_ALLOWED,
22218                                 'CONTRACT_NUM',
22219                                 p_contract_number,
22220                                 'LINE_NUM',
22221                                 p_line_number,
22222                                 'COL_NAME',
22223                                 'CASH_APPL_RULE_NAME'
22224                                );
22225 
22226             x_return_status := OKL_API.G_RET_STS_ERROR;
22227 
22228          END IF;
22229 
22230          IF (p_review_invoice_flag IS NOT NULL) THEN -- Bug# 3650522
22231             OKL_API.SET_MESSAGE(
22232                                 G_APP_NAME,
22233                                 G_VALUE_NOT_ALLOWED,
22234                                 'CONTRACT_NUM',
22235                                 p_contract_number,
22236                                 'LINE_NUM',
22237                                 p_line_number,
22238                                 'COL_NAME',
22239                                 'REVIEW_INVOICE_FLAG'
22240                                );
22241 
22242             x_return_status := OKL_API.G_RET_STS_ERROR;
22243 
22244          END IF;
22245 
22246 /* Not required, Bug# 3650522
22247          IF (p_cash_appl_rule_name IS NOT NULL) THEN
22248              get_cash_appl_rule_id (
22249                                     x_return_status           => x_return_status,
22250                                     x_msg_count               => x_msg_count,
22251                                     x_msg_data                => x_msg_data,
22252                                     p_contract_number         => p_contract_number||'/'||p_line_number,
22253                                     p_org_id                  => p_auth_org_id,
22254                                     p_cash_appl_rule_name     => p_cash_appl_rule_name,
22255                                     x_cash_appl_rule_id       => x_cash_appl_rule_id
22256                                    );
22257 
22258              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
22259                  x_return_status := OKL_API.G_RET_STS_ERROR;
22260                  raise term_failed;
22261              END IF;
22262          END IF;
22263 
22264          l_rulv_rec := NULL;
22265 
22266          IF (x_cash_appl_rule_id IS NOT NULL) THEN
22267             l_rulv_rec.jtot_object1_code         := 'OKL_CASHAPPL';
22268             l_rulv_rec.object1_id1               := TO_CHAR(x_cash_appl_rule_id);
22269             l_rulv_rec.object1_id2               := '#';
22270             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
22271             l_rulv_rec.dnz_chr_id                := p_chr_id;
22272             l_rulv_rec.rule_information_category := 'LAINVD';
22273             l_rulv_rec.std_template_yn           := 'N';
22274             l_rulv_rec.warn_yn                   := 'N';
22275          END IF;
22276 
22277          IF (x_invoice_format_id IS NOT NULL) THEN
22278 
22279             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
22280             l_rulv_rec.dnz_chr_id                := p_chr_id;
22281             --l_rulv_rec.rule_information4         := TO_CHAR(x_invoice_format_id);
22282           --  l_rulv_rec.rule_information1         := x_invoice_format_name; --TO_CHAR(x_invoice_format_id); ----sechawla 13-may09 6826580
22283             l_rulv_rec.rule_information1   := x_invoice_format_id; --sechawla 13-may09 6826580
22284             l_rulv_rec.rule_information_category := 'LAINVD';
22285             l_rulv_rec.std_template_yn           := 'N';
22286             l_rulv_rec.warn_yn                   := 'N';
22287 
22288          END IF; -- invoice format id
22289 
22290          IF (p_review_invoice_flag IS NOT NULL) THEN
22291 
22292             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
22293             l_rulv_rec.dnz_chr_id                := p_chr_id;
22294             --l_rulv_rec.rule_information1         := p_review_invoice_flag;
22295             l_rulv_rec.rule_information4         := NVL(p_review_invoice_flag, 'N');
22296             l_rulv_rec.rule_information_category := 'LAINVD';
22297             l_rulv_rec.std_template_yn           := 'N';
22298             l_rulv_rec.warn_yn                   := 'N';
22299 
22300          END IF; -- reveiew invoice flag
22301 
22302          create_rule_group_and_rule(
22303                                  x_return_status => x_return_status,
22304                                  x_msg_count     => x_msg_count,
22305                                  x_msg_data      => x_msg_data,
22306                                  p_rgp_id        => l_rgp_id,
22307                                  p_rgpv_rec      => l_rgpv_rec,
22308                                  p_rulv_rec      => l_rulv_rec,
22309                                  x_rgpv_rec      => x_rgpv_rec,
22310                                  x_rulv_rec      => x_rulv_rec
22311                                 );
22312 
22313          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
22314              raise term_failed;
22315          END IF;
22316 */
22317 /* Bug# 4284166 : not required
22318 
22319          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
22320             l_rgp_id := x_rgpv_rec.id;
22321          END IF;
22322 */
22323          --
22324          -- status set to error if the following billing parameters are
22325          -- populated.
22326          --  1. Cash Application Rule
22327          --  2. Invoice Format
22328          --  3. Review Invoice
22329          --  4. Reason for Review
22330          --  5. Review until Date
22331          --
22332          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN -- Bug# 3650522
22333             RAISE term_failed;
22334          END IF;
22335 
22336          debug_message('------>Before Payment Method');
22337          IF (p_payment_method_id IS NOT NULL
22338              OR
22339              p_payment_method IS NOT NULL) THEN
22340             get_payment_method_id(
22341                                   x_return_status           => x_return_status,
22342                                   x_msg_count               => x_msg_count,
22343                                   x_msg_data                => x_msg_data,
22344                                   p_contract_number         => p_contract_number,
22345                                   p_customer_account_id     => g_customer_account_id,
22346                                   p_bill_to_address_id      => x_bill_to_address_id, -- got from get_bill_to_address_id() above
22347                                   p_payment_method_id       => p_payment_method_id,
22348                                   p_payment_method          => p_payment_method,
22349                                   x_payment_method_id       => x_payment_method_id
22350                                  );
22351 
22352             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
22353                 x_return_status := OKL_API.G_RET_STS_ERROR;
22354                 raise term_failed;
22355             END IF;
22356          END IF;
22357 
22358          l_rulv_rec := NULL;
22359          IF (x_payment_method_id IS NOT NULL) THEN
22360 
22361             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
22362             l_rulv_rec.dnz_chr_id                := p_chr_id;
22363             l_rulv_rec.jtot_object1_code         := 'OKX_RCPTMTH';
22364             l_rulv_rec.object1_id1               := TO_CHAR(x_payment_method_id);
22365             l_rulv_rec.object1_id2               := '#';
22366             l_rulv_rec.rule_information_category := 'LAPMTH';
22367             l_rulv_rec.std_template_yn           := 'N';
22368             l_rulv_rec.warn_yn                   := 'N';
22369 
22370             create_rule_group_and_rule(
22371                                        x_return_status => x_return_status,
22372                                        x_msg_count     => x_msg_count,
22373                                        x_msg_data      => x_msg_data,
22374                                        p_rgp_id        => l_rgp_id,
22375                                        p_rgpv_rec      => l_rgpv_rec,
22376                                        p_rulv_rec      => l_rulv_rec,
22377                                        x_rgpv_rec      => x_rgpv_rec,
22378                                        x_rulv_rec      => x_rulv_rec
22379                                       );
22380 
22381             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
22382                 raise term_failed;
22383             END IF;
22384 
22385             IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
22386                l_rgp_id := x_rgpv_rec.id;
22387             END IF;
22388 
22389          END IF; -- payment method id
22390 
22391          debug_message('------>After payment method');
22392       END IF; -- bill_to_address
22393       END IF; -- Line type
22394 
22395       return;
22396 
22397    EXCEPTION
22398 
22399       WHEN term_failed THEN
22400         x_return_status := OKL_API.G_RET_STS_ERROR;
22401 
22402    END process_term;
22403 
22404 ------------------------------------------------------------------------------
22405 -- PROCEDURE create_payment_rule_group
22406 -- It creates Rule Group and Rule related to Payments and
22407 -- stacks Error, if any, and returns ERROR status to calling process.
22408 -- Calls:
22409 --  check_stream_type_code
22410 -- Called By:
22411 --  load_input_record
22412 ------------------------------------------------------------------------------
22413    PROCEDURE create_payment_rule_group(
22414                                        x_return_status     OUT NOCOPY VARCHAR2,
22415                                        x_msg_count         OUT NOCOPY NUMBER,
22416                                        x_msg_data          OUT NOCOPY VARCHAR2,
22417                                        p_contract_number   IN  okl_header_interface.contract_number_old%TYPE,
22418                                        p_line_number       IN  okl_lines_interface.line_number%TYPE,
22419                                        p_payment_type_code IN  VARCHAR2,
22420                                        p_stream_purpose    IN  okl_payments_interface.stream_purpose_code%TYPE,
22421                                        p_chr_id            IN  NUMBER,
22422                                        p_cle_id            IN  NUMBER,
22423                                        p_rg_id             IN  NUMBER,
22424                                        x_rgp_id            OUT NOCOPY NUMBER,
22425                                        x_slh_rulv_rec      OUT NOCOPY rulv_rec_type
22426                                       ) IS
22427    l_proc_name     VARCHAR2(35) := 'CREATE_PAYMENT_RULE_GROUP';
22428    x_id1           okl_strmtyp_source_v.id1%TYPE;
22429    pay_rule_failed EXCEPTION;
22430 
22431    l_rulv_rec      rulv_rec_type;
22432    l_rgpv_rec      rgpv_rec_type;
22433    x_rgpv_rec      rgpv_rec_type;
22434 
22435    l_present_yn VARCHAR2(1);
22436    l_payment_stream_name OKL_STRMTYP_SOURCE_V.NAME%TYPE;
22437 
22438    --Bug# 6112766:Start
22439    CURSOR get_rule_group_info(p_chr_id  okc_k_headers_b.id%TYPE,
22440                               p_cle_id  okc_k_lines_v.id%TYPE) IS
22441    SELECT rgp.id
22442    FROM okc_rule_groups_b rgp
22443    WHERE rgp.dnz_chr_id = p_chr_id
22444    AND rgp.cle_id = p_cle_id
22445    AND rgp.rgd_code = 'LALEVL'
22446    AND rgp.rgp_type = 'KRG';
22447    ln_rgp_id    OKC_RULE_GROUPS_V.ID%TYPE;
22448 
22449    rule_group_failed  EXCEPTION;
22450    l_rgp_id  OKC_RULE_GROUPS_V.ID%TYPE;
22451 
22452 --Bug# 6112766: End
22453 
22454    BEGIN
22455 
22456       x_return_status := OKL_API.G_RET_STS_SUCCESS;
22457 
22458       debug_message('------>create_payment_rule_group'); --cklee
22459 
22460       check_stream_type_code(
22461                               x_return_status    => x_return_status,
22462                               x_msg_count        => x_msg_count,
22463                               x_msg_data         => x_msg_data,
22464                               p_stream_type_code => p_payment_type_code,
22465                               p_stream_purpose   => p_stream_purpose,
22466                               x_id1              => x_id1,
22467                               x_name             => l_payment_stream_name
22468                              );
22469 
22470       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
22471          okl_api.set_message(
22472                              G_APP_NAME,
22473                              G_INVALID_VALUE,
22474                              'CONTRACT_NUM',
22475                              p_contract_number||'/'||p_line_number,
22476                              'COL_NAME',
22477                              'PAYMENT_TYPE_CODE, STREAM_PURPOSE_CODE',
22478                              'COL_VALUE',
22479                               p_payment_type_code||', '||p_stream_purpose
22480                              );
22481           x_return_status := OKL_API.G_RET_STS_ERROR;
22482           RAISE pay_rule_failed;
22483       END IF;
22484 
22485       --
22486       -- UDS 10/27
22487       -- Check whether the stream is present in template for this contract
22488       --
22489       l_present_yn := '?';
22490       l_present_yn := OKL_STREAMS_UTIL.strm_tmpt_contains_strm_type
22491                                    (p_khr_id  => p_chr_id,
22492                                     p_sty_id  => x_id1
22493                                    );
22494 
22495       IF (l_present_yn <> 'Y') THEN
22496          okl_api.set_message(
22497                              G_APP_NAME,
22498                              G_NO_STRM_TMPL,
22499                              'CONTRACT_NUM',
22500                              p_contract_number||'/'||p_line_number,
22501                              'COL_NAME',
22502                              'PAYMENT_TYPE_CODE, STREAM_PURPOSE_CODE',
22503                              'COL_VALUE',
22504                              p_payment_type_code||', '||p_stream_purpose
22505                            );
22506 
22507           raise pay_rule_failed;
22508 
22509       END IF;
22510 --Bug# 6112766
22511         l_rgp_id :=p_rg_id;
22512       --check for the property tax code
22513       IF ((p_stream_purpose IN ('DOWN_PAYMENT', 'ESTIMATED_PROPERTY_TAX'))
22514                   AND (l_rgp_id IS NULL)) THEN
22515         OPEN get_rule_group_info(p_chr_id, p_cle_id);
22516          FETCH get_rule_group_info into l_rgp_id;
22517          IF get_rule_group_info%NOTFOUND THEN
22518 --start:| 04-Jun-08 cklee Fixed bug: 7152082                                         |
22519 --         RAISE rule_group_failed; -- cklee
22520            l_rgp_id := NULL;
22521 --end:| 04-Jun-08 cklee Fixed bug: 7152082                                         |
22522          END IF;
22523          CLOSE get_rule_group_info;
22524       END IF;
22525       --Bug# 6112766: End
22526 --      IF (p_rg_id IS NULL) THEN
22527       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136  --Bug# 6112766
22528          IF (p_line_number IS NOT NULL) THEN -- line level rule group
22529             l_rgpv_rec            := NULL;
22530             l_rgpv_rec.rgd_code   := 'LALEVL';
22531             l_rgpv_rec.chr_id     := NULL;
22532             l_rgpv_rec.dnz_chr_id := p_chr_id;
22533             l_rgpv_rec.cle_id     := p_cle_id;
22534             l_rgpv_rec.rgp_type   := 'KRG';
22535          ELSE -- header level rule group
22536             l_rgpv_rec            := NULL;
22537             l_rgpv_rec.rgd_code   := 'LALEVL';
22538             l_rgpv_rec.chr_id     := p_chr_id;
22539             l_rgpv_rec.dnz_chr_id := p_chr_id;
22540             l_rgpv_rec.cle_id     := NULL;
22541             l_rgpv_rec.rgp_type   := 'KRG';
22542          END IF;
22543 
22544          OKL_RULE_PUB.create_rule_group(
22545                                      p_api_version     => 1.0,
22546                                      p_init_msg_list   => OKL_API.G_FALSE,
22547                                      x_return_status   => x_return_status,
22548                                      x_msg_count       => x_msg_count,
22549                                      x_msg_data        => x_msg_data,
22550                                      p_rgpv_rec        => l_rgpv_rec,
22551                                      x_rgpv_rec        => x_rgpv_rec
22552                                    );
22553          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
22554              raise pay_rule_failed;
22555          END IF;
22556 
22557          x_rgp_id := x_rgpv_rec.id;
22558       ELSE
22559       --Bug# 6112766 :Start
22560        -- x_rgp_id := p_rg_id;
22561          x_rgp_id := l_rgp_id;
22562       --Bug# 6112766: End
22563       END IF;
22564 
22565       l_rulv_rec                           := NULL;
22566       l_rulv_rec.jtot_object1_code         := 'OKL_STRMTYP';
22567       l_rulv_rec.object1_id1               := TO_CHAR(x_id1);
22568       l_rulv_rec.object1_id2               := '#';
22569       l_rulv_rec.rgp_id                    := x_rgp_id;
22570       l_rulv_rec.dnz_chr_id                := p_chr_id;
22571       l_rulv_rec.rule_information_category := 'LASLH';
22572       l_rulv_rec.std_template_yn           := 'N';
22573       l_rulv_rec.warn_yn                   := 'N';
22574 
22575       OKL_RULE_PUB.create_rule(
22576                                p_api_version     => 1.0,
22577                                p_init_msg_list   => OKL_API.G_FALSE,
22578                                x_return_status   => x_return_status,
22579                                x_msg_count       => x_msg_count,
22580                                x_msg_data        => x_msg_data,
22581                                p_rulv_rec        => l_rulv_rec,
22582                                x_rulv_rec        => x_slh_rulv_rec
22583                               );
22584 
22585       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
22586          x_return_status := OKL_API.G_RET_STS_ERROR;
22587          raise pay_rule_failed;
22588       END IF;
22589 
22590       RETURN;
22591 
22592    EXCEPTION
22593       --Bug# 6112766 :Start
22594      WHEN rule_group_failed THEN
22595        IF get_rule_group_info%ISOPEN THEN
22596          CLOSE get_rule_group_info;
22597        END IF;
22598        x_return_status := OKL_API.G_RET_STS_ERROR;
22599      --Bug# 6112766: End
22600      WHEN pay_rule_failed THEN
22601         x_return_status := OKL_API.G_RET_STS_ERROR;
22602    END create_payment_rule_group;
22603 
22604 
22605 ------------------------------------------------------------------------------
22606 -- PROCEDURE create_payment_other_rules
22607 -- It creates some more rules for payment under rule group created by procedure: create_payment_rule_group and
22608 -- stacks Error, if any, and returns ERROR status to calling process.
22609 -- Calls:
22610 --  check_payment_frequency_code
22611 -- Called By:
22612 --  load_input_record
22613 ------------------------------------------------------------------------------
22614    PROCEDURE create_payment_other_rules(
22615                                         x_return_status      OUT NOCOPY VARCHAR2,
22616                                         x_msg_count          OUT NOCOPY NUMBER,
22617                                         x_msg_data           OUT NOCOPY VARCHAR2,
22618                                         p_contract_number    IN  okl_header_interface.contract_number_old%TYPE,
22619                                         p_line_number        IN  okl_lines_interface.line_number%TYPE,
22620                                         p_payment_sch_number IN  okl_payments_interface.payment_schedule_number%TYPE,
22621                                         p_payment_freq_code  IN  okl_payments_interface.payment_frequency_code%TYPE,
22622                                         p_arrears_flag       IN  okl_payments_interface.arrears_flag%TYPE,
22623                                         p_advance_payments   IN  okl_payments_interface.advance_payments%TYPE,
22624                                         p_payment_amount     IN  okl_payments_interface.payment_amount%TYPE,
22625                                         p_start_date         IN  okl_payments_interface.start_date%TYPE,
22626                                         p_number_of_periods  IN  okl_payments_interface.number_of_periods%TYPE,
22627                                         p_rate               IN  okl_payments_interface.rate%TYPE,
22628                                         p_comments           IN  okl_payments_interface.comments%TYPE,
22629                                         p_stub_days          IN  okl_payments_interface.stub_days%TYPE,
22630                                         p_stub_amount        IN  okl_payments_interface.stub_amount%TYPE,
22631                                         p_slh_rulv_rec       IN  rulv_rec_type,
22632                                         p_chr_id             IN  NUMBER,
22633                                         p_cle_id             IN  NUMBER,
22634                                         p_rgp_id             IN  NUMBER
22635                                        ) IS
22636 
22637    l_proc_name      VARCHAR2(35) := 'CREATE_PAYMENT_OTHER_RULES';
22638    x_id1            okx_tuom_v.ID1%TYPE;
22639    x_uom_code       okx_tuom_v.uom_code%TYPE;
22640    pay_other_failed EXCEPTION;
22641 
22642    l_rulv_rec       rulv_rec_type;
22643    x_rulv_rec       rulv_rec_type;
22644 
22645    l_rulv_tbl       rulv_tbl_type;
22646    x_rulv_tbl       rulv_tbl_type;
22647 
22648    BEGIN
22649 
22650       x_return_status := OKL_API.G_RET_STS_ERROR;
22651 
22652       l_rulv_rec                           := NULL;
22653       l_rulv_rec.rgp_id                    := p_rgp_id;
22654       l_rulv_rec.dnz_chr_id                := p_chr_id;
22655       l_rulv_rec.rule_information1         := TO_CHAR(p_payment_sch_number);
22656       l_rulv_rec.rule_information_category := 'LASLL';
22657       l_rulv_rec.std_template_yn           := 'N';
22658       l_rulv_rec.warn_yn                   := 'N';
22659 
22660       check_payment_frequency_code(
22661                                    x_return_status     => x_return_status,
22662                                    x_msg_count         => x_msg_count,
22663                                    x_msg_data          => x_msg_data,
22664                                    p_payment_freq_code => p_payment_freq_code,
22665                                    x_id1               => x_id1,
22666                                    x_uom_code          => x_uom_code
22667                                   );
22668       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
22669          okl_api.set_message(
22670                              G_APP_NAME,
22671                              G_INVALID_VALUE,
22672                              'CONTRACT_NUM',
22673                              p_contract_number||'/'||p_line_number,
22674                              'COL_NAME',
22675                              'PAYMENT_FREQUENCY_CODE',
22676                              'COL_VALUE',
22677                               p_payment_freq_code
22678                              );
22679          x_return_status := OKL_API.G_RET_STS_ERROR;
22680          RAISE pay_other_failed;
22681       END IF;
22682 
22683       l_rulv_rec.jtot_object1_code         := 'OKL_TUOM';
22684       l_rulv_rec.object1_id1               := x_id1;
22685       l_rulv_rec.object1_id2               := '#';
22686 
22687       l_rulv_rec.rule_information10        := p_arrears_flag;
22688       l_rulv_rec.rule_information5         := TO_CHAR(p_advance_payments);
22689 
22690       IF (p_payment_amount IS NULL) THEN
22691          l_rulv_rec.rule_information6      := TO_CHAR(p_rate * p_number_of_periods);
22692       ELSE
22693          l_rulv_rec.rule_information6      := TO_CHAR(p_payment_amount);
22694       END IF;
22695 
22696       -- l_rulv_rec.rule_information2         := get_canonicaL_date(p_start_date);
22697       l_rulv_rec.rule_information2         := NULL; -- for stub logic
22698       l_rulv_rec.rule_information3         := TO_CHAR(p_number_of_periods);
22699 
22700       IF (p_comments IS NOT NULL) THEN
22701          l_rulv_rec.rule_information9      := p_comments;
22702       END IF;
22703 
22704       l_rulv_rec.rule_information7         := p_stub_days;
22705       l_rulv_rec.rule_information8         := p_stub_amount;
22706 
22707       -- link with SLH
22708       l_rulv_rec.jtot_object2_code         := 'OKL_STRMHDR';
22709       l_rulv_rec.object2_id1               := p_slh_rulv_rec.id;
22710       l_rulv_rec.object2_id2               := '#';
22711 
22712 /* Not needed now
22713       --
22714       -- populate rulv_tbl structure and call
22715       -- new payment stub routine to create LASLLs
22716       --
22717       l_rulv_tbl(1).rgp_id                    := l_rulv_rec.rgp_id;
22718       l_rulv_tbl(1).dnz_chr_id                := l_rulv_rec.dnz_chr_id;
22719       l_rulv_tbl(1).rule_information1         := l_rulv_rec.rule_information1;
22720       l_rulv_tbl(1).rule_information_category := l_rulv_rec.rule_information_category;
22721       l_rulv_tbl(1).std_template_yn           := l_rulv_rec.std_template_yn;
22722       l_rulv_tbl(1).warn_yn                   := l_rulv_rec.warn_yn;
22723       l_rulv_tbl(1).jtot_object1_code         := l_rulv_rec.jtot_object1_code;
22724       l_rulv_tbl(1).object1_id1               := l_rulv_rec.object1_id1;
22725       l_rulv_tbl(1).object1_id2               := l_rulv_rec.object1_id2;
22726 
22727       l_rulv_tbl(1).rule_information10        := l_rulv_rec.rule_information10;
22728       l_rulv_tbl(1).rule_information5         := l_rulv_rec.rule_information5;
22729       l_rulv_tbl(1).rule_information6         := l_rulv_rec.rule_information6;
22730       l_rulv_tbl(1).rule_information2         := l_rulv_rec.rule_information2;
22731       l_rulv_tbl(1).rule_information3         := l_rulv_rec.rule_information3;
22732       l_rulv_tbl(1).rule_information9         := l_rulv_rec.rule_information9;
22733 
22734       l_rulv_tbl(1).rule_information7         := l_rulv_rec.rule_information7;
22735       l_rulv_tbl(1).rule_information8         := l_rulv_rec.rule_information8;
22736 
22737       l_rulv_tbl(1).jtot_object2_code         := l_rulv_rec.jtot_object2_code;
22738       l_rulv_tbl(1).object2_id1               := l_rulv_rec.object2_id1;
22739       l_rulv_tbl(1).object2_id2               := l_rulv_rec.object2_id2;
22740 
22741       okl_la_payments_pvt_1.create_rule(
22742                                         p_api_version      => 1.0,
22743                                         p_init_msg_list    => OKL_API.G_FALSE,
22744                                         x_return_status    => x_return_status,
22745                                         x_msg_count        => x_msg_count,
22746                                         x_msg_data         => x_msg_data,
22747                                         p_rulv_tbl         => l_rulv_tbl,
22748                                         x_rulv_tbl         => x_rulv_tbl
22749                                        );
22750 
22751       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
22752          x_return_status := OKL_API.G_RET_STS_ERROR;
22753          RAISE pay_other_failed;
22754       END IF;
22755 */
22756 
22757       OKL_RULE_PUB.create_rule(
22758                                p_api_version     => 1.0,
22759                                p_init_msg_list   => OKL_API.G_FALSE,
22760                                x_return_status   => x_return_status,
22761                                x_msg_count       => x_msg_count,
22762                                x_msg_data        => x_msg_data,
22763                                p_rulv_rec        => l_rulv_rec,
22764                                x_rulv_rec        => x_rulv_rec
22765                               );
22766 
22767       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
22768          x_return_status := OKL_API.G_RET_STS_ERROR;
22769          RAISE pay_other_failed;
22770       END IF;
22771 
22772       -- Now calculate payment start date
22773       --Bug# 10257857: Modified call to send in arrears as OKL_API.G_MISS_CHAR
22774       --               so that it does not get updated to NULL
22775       OKL_LA_PAYMENTS_PVT.calculate_details(
22776                                             p_api_version      => 1.0,
22777                                             p_init_msg_list    => OKL_API.G_FALSE,
22778                                             x_return_status    => x_return_status,
22779                                             x_msg_count        => x_msg_count,
22780                                             x_msg_data         => x_msg_data,
22781                                             p_chr_id           => p_chr_id,
22782                                             p_rgp_id           => p_rgp_id,
22783                                             p_slh_id           => p_slh_rulv_rec.id,
22784                                             structure          => NULL,
22785                                             frequency          => NULL,
22786                                             arrears            => OKL_API.G_MISS_CHAR,
22787                                             -- Bug# 6438785
22788                                             p_validate_date_yn => 'N'
22789                                            );
22790 
22791       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
22792          x_return_status := OKL_API.G_RET_STS_ERROR;
22793          RAISE pay_other_failed;
22794       END IF;
22795 
22796       RETURN;
22797 
22798    EXCEPTION
22799       WHEN pay_other_failed THEN
22800         x_return_status := OKL_API.G_RET_STS_ERROR;
22801 
22802    END create_payment_other_rules;
22803 
22804 ------------------------------------------------------------------------------
22805 -- PROCEDURE get_inventory_org_item_id
22806 -- It retrives Inventory Organization and Item Id and
22807 -- stacks Error, if any, and returns ERROR status to calling process.
22808 -- Calls:
22809 --  None
22810 -- Called By:
22811 --  process_other_line
22812 --  load_input_record
22813 ------------------------------------------------------------------------------
22814    PROCEDURE get_inventory_org_item_id(
22815                                       x_return_status       OUT NOCOPY VARCHAR2,
22816                                       x_msg_count           OUT NOCOPY NUMBER,
22817                                       x_msg_data            OUT NOCOPY VARCHAR2,
22818                                       p_contract_number     IN  okl_header_interface.contract_number_old%TYPE,
22819                                       p_line_number         IN  okl_lines_interface.line_number%TYPE,
22820                                       p_line_type           IN  okl_lines_interface.line_type%TYPE,
22821                                       p_inventory_org_id    IN  okl_header_interface.inventory_organization_id%TYPE,
22822                                       p_inventory_item_id   IN  okl_lines_interface.inventory_item_id%TYPE,
22823                                       p_inventory_item_name IN  okl_lines_interface.inventory_item_name%TYPE,
22824                                       x_inventory_org_id    OUT NOCOPY NUMBER,
22825                                       x_inventory_item_id   OUT NOCOPY NUMBER
22826                                      ) IS
22827    l_proc_name    VARCHAR2(35) := 'GET_INVENTORY_ORG_ITEM_ID';
22828    inv_org_failed EXCEPTION;
22829    l_org_id       NUMBER;
22830    l_item_id      NUMBER;
22831 
22832    CURSOR org_csr (p_inventory_org_id NUMBER) IS
22833    SELECT organization_id
22834    FROM   hr_all_organization_units
22835    WHERE  organization_id = p_inventory_org_id
22836    AND    SYSDATE BETWEEN NVL(date_from, SYSDATE) AND NVL(date_to, SYSDATE);
22837 
22838    /*
22839    CURSOR org_csr (p_inventory_org_name VARCHAR2,
22840                    p_inventory_org_id   NUMBER) IS
22841    SELECT organization_id
22842    FROM   hr_all_organization_units
22843    WHERE  ((name = p_inventory_org_name
22844             AND
22845             p_inventory_org_name IS NOT NULL)
22846             OR
22847             (organization_id = p_inventory_org_id
22848              AND
22849              p_inventory_org_id IS NOT NULL
22850             )
22851            )
22852    AND    SYSDATE BETWEEN NVL(date_from, SYSDATE) AND NVL(date_to, SYSDATE);
22853    */
22854    CURSOR item_csr (p_inventory_org_id    NUMBER,
22855                     p_inventory_item_id   NUMBER,
22856                     p_inventory_item_name VARCHAR2) IS
22857    SELECT inventory_item_id
22858    FROM   mtl_system_items
22859    WHERE  ((segment1        = p_inventory_item_name
22860             AND
22861             p_inventory_item_name IS NOT NULL)
22862             OR
22863             (inventory_item_id = p_inventory_item_id
22864              AND
22865              p_inventory_item_id IS NOT NULL
22866             )
22867            )
22868    AND    organization_id = p_inventory_org_id
22869    AND    SYSDATE BETWEEN NVL(start_date_active, SYSDATE) AND NVL(end_date_active, SYSDATE);
22870 
22871    CURSOR service_item_csr (p_inventory_org_id    NUMBER,
22872                             p_inventory_item_id   NUMBER,
22873                             p_inventory_item_name VARCHAR2) IS
22874    SELECT id1
22875    FROM   okx_system_items_v
22876    WHERE  ((name = p_inventory_item_name
22877             AND
22878             p_inventory_item_name IS NOT NULL)
22879             OR
22880             (id1 = p_inventory_item_id
22881              AND
22882              p_inventory_item_id IS NOT NULL
22883             )
22884            )
22885    AND    service_item_flag    = 'Y'
22886    AND    vendor_warranty_flag = 'N'
22887    AND    organization_id      = p_inventory_org_id
22888    AND    SYSDATE BETWEEN NVL(start_date_active, SYSDATE) AND NVL(end_date_active, SYSDATE);
22889 
22890    BEGIN
22891 
22892      x_return_status := OKL_API.G_RET_STS_SUCCESS;
22893 
22894      OPEN org_csr(p_inventory_org_id);
22895      FETCH org_csr INTO l_org_id;
22896 
22897      IF org_csr%NOTFOUND THEN
22898         okl_api.set_message(
22899                             G_APP_NAME,
22900                             G_INVALID_VALUE,
22901                             'CONTRACT_NUM',
22902                             p_contract_number,
22903                             'COL_NAME',
22904                             'INVENTORY_ORGANIZATION_ID',
22905                             'COL_VALUE',
22906                             p_inventory_org_id
22907                            );
22908         RAISE inv_org_failed;
22909      END IF;
22910      CLOSE org_csr;
22911      x_inventory_org_id := l_org_id;
22912 
22913      IF (p_line_type = 'ASSET') or (p_line_type = 'ASSET_ADDON') THEN
22914         OPEN item_csr (x_inventory_org_id,
22915                        p_inventory_item_id,
22916                        p_inventory_item_name);
22917         FETCH item_csr into l_item_id;
22918         IF item_csr%NOTFOUND THEN
22919            okl_api.set_message(
22920                                G_APP_NAME,
22921                                G_INVALID_VALUE,
22922                                'CONTRACT_NUM',
22923                                p_contract_number||'/'||p_line_number,
22924                                'COL_NAME',
22925                                'INVENTORY_ITEM_ID, NAME: ',
22926                                'COL_VALUE',
22927                                p_inventory_item_id||', '||p_inventory_item_name
22928                               );
22929            RAISE inv_org_failed;
22930         END IF;
22931         CLOSE item_csr;
22932       ELSIF (p_line_type = 'SERVICE') THEN
22933          OPEN service_item_csr (x_inventory_org_id,
22934                                 p_inventory_item_id,
22935                                 p_inventory_item_name);
22936          FETCH service_item_csr into l_item_id;
22937          IF service_item_csr%NOTFOUND THEN
22938             okl_api.set_message(
22939                                 G_APP_NAME,
22940                                 G_INVALID_VALUE,
22941                                 'CONTRACT_NUM',
22942                                 p_contract_number||'/'||p_line_number,
22943                                 'COL_NAME',
22944                                 'INVENTORY_ITEM_ID, NAME: ',
22945                                 'COL_VALUE',
22946                                 p_inventory_item_id||', '||p_inventory_item_name
22947                                );
22948             RAISE inv_org_failed;
22949          END IF;
22950          CLOSE service_item_csr;
22951      END IF; --line type
22952      x_inventory_item_id := l_item_id;
22953 
22954      return;
22955 
22956    EXCEPTION
22957 
22958       WHEN inv_org_failed THEN
22959          IF org_csr%ISOPEN THEN
22960             CLOSE org_csr;
22961          END IF;
22962          IF item_csr%ISOPEN THEN
22963             CLOSE item_csr;
22964          END IF;
22965          IF service_item_csr%ISOPEN THEN
22966             CLOSE service_item_csr;
22967          END IF;
22968          x_return_status := OKL_API.G_RET_STS_ERROR;
22969 
22970       WHEN OTHERS THEN
22971          okl_api.set_message(
22972                              G_APP_NAME,
22973                              G_UNEXPECTED_ERROR,
22974                              'OKL_SQLCODE',
22975                              SQLCODE,
22976                              'OKL_SQLERRM',
22977                              SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
22978                             );
22979          x_return_status := OKL_API.G_RET_STS_ERROR;
22980 
22981    END get_inventory_org_item_id;
22982 
22983 ------------------------------------------------------------------------------
22984 -- PROCEDURE get_asset_id
22985 -- It retrives Asset ID for given asset number and
22986 -- stacks Error, if any, and returns ERROR status to calling process.
22987 -- Calls:
22988 --  None
22989 -- Called By:
22990 --  load_input_record
22991 ------------------------------------------------------------------------------
22992    PROCEDURE get_asset_id(
22993                           x_return_status   OUT NOCOPY VARCHAR2,
22994                           x_msg_count       OUT NOCOPY NUMBER,
22995                           x_msg_data        OUT NOCOPY VARCHAR2,
22996                           p_contract_number IN  okl_header_interface.contract_number_old%TYPE,
22997                           p_line_number     IN  okl_lines_interface.line_number%TYPE,
22998                           p_asset_number    IN  okl_lines_interface.asset_number%TYPE,
22999                           x_id1             OUT NOCOPY okx_assets_v.id1%TYPE,
23000                           x_id2             OUT NOCOPY okx_assets_v.id2%TYPE
23001                          ) IS
23002 
23003    l_proc_name  VARCHAR2(35) := 'GET_ASSET_ID';
23004    asset_failed EXCEPTION;
23005    l_id1        okx_assets_v.id1%TYPE;
23006    l_id2        okx_assets_v.id2%TYPE;
23007 
23008    CURSOR asset_csr (p_asset_number VARCHAR2) IS
23009    SELECT id1,
23010           id2
23011    FROM   okx_assets_v
23012    WHERE  asset_number = p_asset_number
23013    AND    SYSDATE BETWEEN NVL(start_date_active, SYSDATE) AND NVL(end_date_active, SYSDATE);
23014 
23015    BEGIN
23016      x_return_status := OKL_API.G_RET_STS_SUCCESS;
23017 
23018      OPEN asset_csr (p_asset_number);
23019      FETCH asset_csr INTO l_id1,
23020                           l_id2;
23021      IF asset_csr%NOTFOUND THEN
23022         okl_api.set_message(
23023                             G_APP_NAME,
23024                             G_INVALID_VALUE,
23025                             'CONTRACT_NUM',
23026                             p_contract_number||'/'||p_line_number,
23027                             'COL_NAME',
23028                             'ASSET_NUMBER',
23029                             'COL_VALUE',
23030                             p_asset_number
23031                            );
23032            RAISE asset_failed;
23033      END IF;
23034 
23035      CLOSE asset_csr;
23036 
23037      x_id1 := l_id1;
23038      x_id2 := l_id2;
23039 
23040      return;
23041 
23042    EXCEPTION
23043      WHEN asset_failed THEN
23044 
23045         IF asset_csr%ISOPEN THEN
23046            CLOSE asset_csr;
23047         END IF;
23048 
23049         x_return_status := OKL_API.G_RET_STS_ERROR;
23050 
23051    END get_asset_id;
23052 
23053 ------------------------------------------------------------------------------
23054 -- PROCEDURE get_asset_key_id
23055 -- It retrives ASSET_KEY segments
23056 -- Calls:
23057 --  None
23058 -- Called By:
23059 --  load_input_record
23060 ------------------------------------------------------------------------------
23061 
23062    PROCEDURE get_asset_key_id(
23063                         x_return_status   OUT NOCOPY VARCHAR2,
23064                         x_msg_count       OUT NOCOPY NUMBER,
23065                         x_msg_data        OUT NOCOPY VARCHAR2,
23066                         p_contract_number IN  okc_k_headers_v.contract_number%TYPE,
23067                         p_line_number     IN  okc_k_lines_v.line_number%TYPE,
23068                         p_comb_id         IN  NUMBER,
23069                         p_segment1        IN  VARCHAR2,
23070                         p_segment2        IN  VARCHAR2,
23071                         p_segment3        IN  VARCHAR2,
23072                         p_segment4        IN  VARCHAR2,
23073                         p_segment5        IN  VARCHAR2,
23074                         p_segment6        IN  VARCHAR2,
23075                         p_segment7        IN  VARCHAR2,
23076                         p_segment8        IN  VARCHAR2,
23077                         p_segment9        IN  VARCHAR2,
23078                         p_segment10       IN  VARCHAR2,
23079                         x_comb_id         OUT NOCOPY NUMBER
23080                        ) IS
23081 
23082    CURSOR flex_asset_key_csr (p_segment1 VARCHAR2,
23083                               p_segment2 VARCHAR2,
23084                               p_segment3 VARCHAR2,
23085                               p_segment4 VARCHAR2,
23086                               p_segment5 VARCHAR2,
23087                               p_segment6 VARCHAR2,
23088                               p_segment7 VARCHAR2,
23089                               p_segment8 VARCHAR2,
23090                               p_segment9 VARCHAR2,
23091                               p_segment10 VARCHAR2 ) IS
23092    SELECT code_combination_id
23093    FROM   fa_asset_keywords
23094    WHERE  (segment1 = p_segment1
23095            OR
23096            p_segment1 IS NULL)
23097    AND    (segment2 = p_segment2
23098            OR
23099            p_segment2 IS NULL)
23100    AND    (segment2 = p_segment2
23101            OR
23102            p_segment2 IS NULL)
23103    AND    (segment3 = p_segment3
23104            OR
23105            p_segment3 IS NULL)
23106    AND    (segment4 = p_segment4
23107            OR
23108            p_segment4 IS NULL)
23109    AND    (segment5 = p_segment5
23110            OR
23111            p_segment5 IS NULL)
23112    AND    (segment6 = p_segment6
23113            OR
23114            p_segment6 IS NULL)
23115    AND    (segment7 = p_segment7
23116            OR
23117            p_segment7 IS NULL)
23118    AND    (segment8 = p_segment8
23119            OR
23120            p_segment8 IS NULL)
23121    AND    (segment9 = p_segment9
23122            OR
23123            p_segment9 IS NULL)
23124    AND    (segment10 = p_segment10
23125            OR
23126            p_segment10 IS NULL)
23127    AND    enabled_flag <> 'N'
23128    AND    TRUNC(SYSDATE) BETWEEN NVL(TRUNC(start_date_active), TRUNC(SYSDATE)) AND NVL(TRUNC(end_date_active), TRUNC(SYSDATE));
23129 
23130    l_id NUMBER;
23131    asset_key_failed EXCEPTION;
23132    l_proc_name      VARCHAR2(35) := 'GET_ASSET_KEY_ID';
23133 
23134   BEGIN
23135 
23136      x_return_status := OKL_API.G_RET_STS_SUCCESS;
23137      debug_message(l_proc_name);
23138 
23139      IF (p_comb_id IS NOT NULL) THEN
23140         x_comb_id := p_comb_id;
23141      ELSIF (p_segment1 IS NOT NULL
23142             OR
23143             p_segment2 IS NOT NULL
23144             OR
23145             p_segment3 IS NOT NULL
23146             OR
23147             p_segment4 IS NOT NULL
23148             OR
23149             p_segment5 IS NOT NULL
23150             OR
23151             p_segment6 IS NOT NULL
23152             OR
23153             p_segment7 IS NOT NULL
23154             OR
23155             p_segment8 IS NOT NULL
23156             OR
23157             p_segment9 IS NOT NULL
23158             OR
23159             p_segment10 IS NOT NULL) THEN
23160 
23161            debug_message('Asset key segment1: '||p_segment1);
23162            OPEN flex_asset_key_csr(
23163                              p_segment1,
23164                              p_segment2,
23165                              p_segment3,
23166                              p_segment4,
23167                              p_segment5,
23168                              p_segment6,
23169                              p_segment7,
23170                              p_segment8,
23171                              p_segment9,
23172                              p_segment10);
23173             FETCH flex_asset_key_csr INTO l_id;
23174             IF flex_asset_key_csr%NOTFOUND THEN
23175                raise asset_key_failed;
23176             END IF;
23177             x_comb_id := l_id;
23178      END IF;
23179 
23180    EXCEPTION
23181       WHEN asset_key_failed THEN
23182         IF flex_asset_key_csr%ISOPEN THEN
23183            CLOSE flex_asset_key_csr;
23184         END IF;
23185 
23186         okl_api.set_message(
23187                             G_APP_NAME,
23188                             G_INVALID_COMBINATION,
23189                             'CONTRACT_NUM',
23190                             p_contract_number||'/'||p_line_number,
23191                             'COMB_TYPE',
23192                             'ASSET_KEY'
23193                            );
23194         x_return_status := OKL_API.G_RET_STS_ERROR;
23195 
23196       WHEN OTHERS THEN
23197          okl_api.set_message(
23198                              G_APP_NAME,
23199                              G_UNEXPECTED_ERROR,
23200                              'OKL_SQLCODE',
23201                              SQLCODE,
23202                              'OKL_SQLERRM',
23203                              SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
23204                             );
23205          x_return_status := OKL_API.G_RET_STS_ERROR;
23206 
23207   END get_asset_key_id;
23208 
23209 ------------------------------------------------------------------------------
23210 -- PROCEDURE get_flexid
23211 -- It retrives Flex Value ID from Segments value for ASSET_CATEGORY and ASSET_LOCATION and
23212 -- stacks Error, if any, and returns ERROR status to calling process.
23213 -- Calls:
23214 --  None
23215 -- Called By:
23216 --  load_input_record
23217 ------------------------------------------------------------------------------
23218 
23219    PROCEDURE get_flexid(
23220                         x_return_status   OUT NOCOPY VARCHAR2,
23221                         x_msg_count       OUT NOCOPY NUMBER,
23222                         x_msg_data        OUT NOCOPY VARCHAR2,
23223                         p_contract_number IN  okc_k_headers_v.contract_number%TYPE,
23224                         p_line_number     IN  okc_k_lines_v.line_number%TYPE,
23225                         p_type            IN  VARCHAR2,
23226                         p_comb_id         IN  NUMBER,
23227                         p_segment1        IN  VARCHAR2,
23228                         p_segment2        IN  VARCHAR2,
23229                         p_segment3        IN  VARCHAR2,
23230                         p_segment4        IN  VARCHAR2,
23231                         p_segment5        IN  VARCHAR2,
23232                         p_segment6        IN  VARCHAR2,
23233                         p_segment7        IN  VARCHAR2,
23234                         x_comb_id         OUT NOCOPY NUMBER
23235                        ) IS
23236    CURSOR flex_cat_csr (p_segment1 VARCHAR2,
23237                         p_segment2 VARCHAR2,
23238                         p_segment3 VARCHAR2,
23239                         p_segment4 VARCHAR2,
23240                         p_segment5 VARCHAR2,
23241                         p_segment6 VARCHAR2,
23242                         p_segment7 VARCHAR2 ) IS
23243    SELECT category_id
23244    FROM   FA_CATEGORIES_B
23245    WHERE  (segment1 = NVL(p_segment1,'NULL') OR segment1 IS NULL)
23246    AND    (segment2 = NVL(p_segment2,'NULL') OR segment2 is NULL)
23247    AND    (segment3 = NVL(p_segment3,'NULL') OR segment3 IS NULL)
23248    AND    (segment4 = NVL(p_segment4,'NULL') OR segment4 IS NULL)
23249    AND    (segment5 = NVL(p_segment5,'NULL') OR segment5 IS NULL)
23250    AND    (segment6 = NVL(p_segment6,'NULL') OR segment6 IS NULL)
23251    AND    (segment7 = NVL(p_segment7,'NULL') OR segment7 IS NULL)
23252    AND    enabled_flag <> 'N'
23253    AND    SYSDATE BETWEEN NVL(start_date_active, SYSDATE) AND NVL(end_date_active, SYSDATE);
23254 
23255    CURSOR flex_loc_csr (p_segment1 VARCHAR2,
23256                         p_segment2 VARCHAR2,
23257                         p_segment3 VARCHAR2,
23258                         p_segment4 VARCHAR2,
23259                         p_segment5 VARCHAR2,
23260                         p_segment6 VARCHAR2,
23261                         p_segment7 VARCHAR2 ) IS
23262    SELECT location_id
23263    FROM   okx_ast_locs_v
23264    WHERE  (segment1 = NVL(P_segment1,'NULL') OR segment1 IS NULL)
23265    AND    (segment2 = NVL(p_segment2,'NULL') OR segment2 is NULL)
23266    AND    (segment3 = NVL(p_segment3,'NULL') OR segment3 IS NULL)
23267    AND    (segment4 = NVL(p_segment4,'NULL') OR segment4 IS NULL)
23268    AND    (segment5 = NVL(p_segment5,'NULL') OR segment5 IS NULL)
23269    AND    (segment6 = NVL(p_segment6,'NULL') OR segment6 IS NULL)
23270    AND    (segment7 = NVL(p_segment7,'NULL') OR segment7 IS NULL)
23271    AND    enabled_flag <> 'N'
23272    AND    SYSDATE BETWEEN NVL(start_date_active, SYSDATE) AND NVL(end_date_active, SYSDATE);
23273 
23274    l_id        NUMBER;
23275    flex_failed EXCEPTION;
23276 
23277    BEGIN
23278 
23279      x_return_status := OKL_API.G_RET_STS_SUCCESS;
23280 
23281      IF (p_comb_id IS NOT NULL) THEN
23282         x_comb_id := p_comb_id;
23283      ELSIF (p_segment1 IS NOT NULL
23284             OR
23285             p_segment2 IS NOT NULL
23286             OR
23287             p_segment3 IS NOT NULL
23288             OR
23289             p_segment4 IS NOT NULL
23290             OR
23291             p_segment5 IS NOT NULL
23292             OR
23293             p_segment6 IS NOT NULL
23294             OR
23295             p_segment7 IS NOT NULL) THEN
23296         IF (p_type = 'ASSET_CATEGORY') THEN
23297            OPEN flex_cat_csr(
23298                              p_segment1,
23299                              p_segment2,
23300                              p_segment3,
23301                              p_segment4,
23302                              p_segment5,
23303                              p_segment6,
23304                              p_segment7);
23305             FETCH flex_cat_csr INTO l_id;
23306             IF flex_cat_csr%NOTFOUND THEN
23307                raise flex_failed;
23308             END IF;
23309             x_comb_id := l_id;
23310          ELSIF (p_type = 'ASSET_LOCATION') THEN
23311            OPEN flex_loc_csr(
23312                              p_segment1,
23313                              p_segment2,
23314                              p_segment3,
23315                              p_segment4,
23316                              p_segment5,
23317                              p_segment6,
23318                              p_segment7);
23319             FETCH flex_loc_csr INTO l_id;
23320             IF flex_loc_csr%NOTFOUND THEN
23321                raise flex_failed;
23322             END IF;
23323             x_comb_id := l_id;
23324          END IF;
23325      END IF;
23326 
23327      RETURN;
23328    EXCEPTION
23329       WHEN flex_failed THEN
23330         IF flex_cat_csr%ISOPEN THEN
23331            CLOSE flex_cat_csr;
23332         ELSIF flex_loc_csr%ISOPEN THEN
23333            CLOSE flex_loc_csr;
23334         END IF;
23335 
23336         okl_api.set_message(
23337                             G_APP_NAME,
23338                             G_INVALID_COMBINATION,
23339                             'CONTRACT_NUM',
23340                             p_contract_number||'/'||p_line_number,
23341                             'COMB_TYPE',
23342                             p_type
23343                            );
23344         x_return_status := OKL_API.G_RET_STS_ERROR;
23345 
23346      WHEN OTHERS THEN
23347         x_return_status := OKL_API.G_RET_STS_ERROR;
23348 
23349    END get_flexid;
23350 
23351 ------------------------------------------------------------------------------
23352 -- PROCEDURE get_install_site_id
23353 -- It retrives Install Site Id from Install Site Name and
23354 -- stacks Error, if any, and returns ERROR status to calling process.
23355 -- Calls:
23356 --  None
23357 -- Called By:
23358 --  load_input_record
23359 ------------------------------------------------------------------------------
23360    PROCEDURE get_install_site_id(
23361                                  x_return_status       OUT NOCOPY VARCHAR2,
23362                                  x_msg_count           OUT NOCOPY NUMBER,
23363                                  x_msg_data            OUT NOCOPY VARCHAR2,
23364                                  p_contract_number     IN  okl_header_interface.contract_number_old%TYPE,
23365                                  p_line_number         IN  okl_lines_interface.line_number%TYPE,
23366                                  p_install_site_id     IN  okl_lines_interface.install_site_id%TYPE,
23367                                  p_install_site_number IN  okl_lines_interface.install_site_number%TYPE,
23368                                  x_install_site_id     OUT NOCOPY okl_lines_interface.install_site_id%TYPE
23369                                 ) IS
23370    l_proc_name    VARCHAR2(35) := 'GET_INSTALL_SITE_ID';
23371    install_failed EXCEPTION;
23372    l_id1          okx_party_site_uses_v.id1%TYPE;
23373 
23374    CURSOR install_csr (p_install_site_name okx_party_site_uses_v.name%TYPE,
23375                        p_install_site_id   okx_party_site_uses_v.id1%TYPE) IS
23376    SELECT id1
23377    FROM   okx_party_site_uses_v
23378    WHERE  ((party_site_number = p_install_site_name
23379             AND
23380             p_install_site_number IS NOT NULL)
23381             OR
23382             (id1  = p_install_site_id
23383              AND
23384              p_install_site_id IS NOT NULL
23385             )
23386            )
23387    AND    site_use_type = 'INSTALL_AT'
23388    AND    party_id      = g_customer_id
23389    AND    status        = 'A';
23390 
23391    BEGIN
23392       x_return_status := OKL_API.G_RET_STS_SUCCESS;
23393 
23394       OPEN install_csr (p_install_site_number,
23395                         p_install_site_id);
23396       FETCH install_csr INTO l_id1;
23397 
23398       IF install_csr%NOTFOUND THEN
23399          RAISE install_failed;
23400       END IF;
23401 
23402       CLOSE install_csr;
23403       x_install_site_id := l_id1;
23404 
23405    EXCEPTION
23406      WHEN install_failed THEN
23407         IF install_csr%ISOPEN THEN
23408            CLOSE install_csr;
23409         END IF;
23410         okl_api.set_message(
23411                             G_APP_NAME,
23412                             G_INVALID_VALUE,
23413                             'CONTRACT_NUM',
23414                             p_contract_number||'/'||p_line_number,
23415                             'COL_NAME',
23416                             'INSTALL_SITE_ID, NAME: ',
23417                             'COL_VALUE',
23418                             p_install_site_id||', '||p_install_site_number
23419                            );
23420         x_return_status := OKL_API.G_RET_STS_ERROR;
23421 
23422    END get_install_site_id;
23423 
23424 ------------------------------------------------------------------------------
23425 -- PROCEDURE get_lse_id
23426 -- It retrives Line Style id for Contract Lines and
23427 -- stacks Error, if any, and returns ERROR status to calling process.
23428 -- Calls:
23429 -- Called By:
23430 --  process_other_line
23431 --  load_input_record
23432 ------------------------------------------------------------------------------
23433    PROCEDURE get_lse_id(
23434                         x_return_status     OUT NOCOPY VARCHAR2,
23435                         x_msg_count         OUT NOCOPY NUMBER,
23436                         x_msg_data          OUT NOCOPY VARCHAR2,
23437                         p_contract_number   IN  okl_header_interface.contract_number_old%TYPE,
23438                         p_line_number       IN  okl_lines_interface.line_number%TYPE,
23439                         p_lty_code          IN  VARCHAR2,
23440                         p_top_line_lty_code IN  VARCHAR2,
23441                         x_lse_id            OUT NOCOPY NUMBER
23442                        ) IS
23443 
23444    l_proc_name VARCHAR2(35) := 'GET_LSE_ID';
23445    lse_failed  EXCEPTION;
23446    l_id        NUMBER;
23447 
23448    CURSOR top_lse_csr (p_lty_code VARCHAR2) IS
23449    SELECT id
23450    FROM   OKC_LINE_STYLES_B ols,
23451           okc_subclass_top_line ostl
23452    WHERE  LTY_CODE      = p_lty_code
23453    AND    ostl.scs_code = 'LEASE'
23454    AND    ols.id        = ostl.lse_id;
23455 
23456    CURSOR sub_lse_csr (p_lty_code          VARCHAR2,
23457                        p_top_line_lty_code VARCHAR2) IS
23458    SELECT ols2.id
23459    FROM   okc_line_styles_v ols1,
23460           okc_line_styles_v ols2,
23461           okc_subclass_top_line ostl
23462    WHERE  ostl.scs_code      = 'LEASE'
23463    AND    ostl.lse_id        = ols1.id
23464    AND    ols1.lty_code      = p_top_line_lty_code
23465    AND    ols2.lty_code      = p_lty_code
23466    AND    ols2.lse_parent_id = ostl.lse_id;
23467 
23468    BEGIN
23469 
23470      x_return_status := OKL_API.G_RET_STS_SUCCESS;
23471 
23472      IF (p_top_line_lty_code IS NULL) THEN
23473         OPEN top_lse_csr(p_lty_code);
23474         FETCH top_lse_csr INTO l_id;
23475         IF top_lse_csr%NOTFOUND THEN
23476            okl_api.set_message(
23477                                G_APP_NAME,
23478                                G_INVALID_LTY_CODE,
23479                                'LTY_CODE',
23480                                p_lty_code,
23481                                'CONTRACT_NUM',
23482                                p_contract_number||'/'||p_line_number
23483                               );
23484            RAISE lse_failed;
23485         END IF;
23486         CLOSE top_lse_csr;
23487 
23488         x_lse_id := l_id;
23489      ELSE
23490         OPEN sub_lse_csr(p_lty_code,
23491                          p_top_line_lty_code);
23492         FETCH sub_lse_csr INTO l_id;
23493         IF sub_lse_csr%NOTFOUND THEN
23494            okl_api.set_message(
23495                                G_APP_NAME,
23496                                G_INVALID_LTY_CODE,
23497                                'LTY_CODE',
23498                                p_lty_code,
23499                                'CONTRACT_NUM',
23500                                p_contract_number||'/'||p_line_number
23501                               );
23502            RAISE lse_failed;
23503         END IF;
23504         CLOSE sub_lse_csr;
23505 
23506         x_lse_id := l_id;
23507      END IF;
23508 
23509      return;
23510 
23511    EXCEPTION
23512      WHEN lse_failed THEN
23513         IF top_lse_csr%ISOPEN THEN
23514            CLOSE top_lse_csr;
23515         END IF;
23516         IF sub_lse_csr%ISOPEN THEN
23517            CLOSE sub_lse_csr;
23518         END IF;
23519         x_return_status := OKL_API.G_RET_STS_ERROR;
23520    END get_lse_id;
23521 
23522 ------------------------------------------------------------------------------
23523 -- PROCEDURE validate_real_est
23524 -- It validates real estate record if applicable and
23525 -- stacks Error, if any, and returns ERROR status to calling process.
23526 -- Calls:
23527 -- Called By:
23528 --  process_other_line
23529 --  load_input_record
23530 ------------------------------------------------------------------------------
23531    PROCEDURE validate_real_est(
23532                         x_return_status     OUT NOCOPY VARCHAR2,
23533                         x_msg_count         OUT NOCOPY NUMBER,
23534                         x_msg_data          OUT NOCOPY VARCHAR2,
23535                         p_intf_line         IN  OKL_LINES_INTERFACE%ROWTYPE
23536                        ) IS
23537 
23538    l_proc_name VARCHAR2(150) := 'OKL_LINES_INTERFACE: validate_real_est';
23539    l_progress  varchar2(150);
23540    l_dummy number;
23541    l_prc boolean := false;
23542 
23543    validate_real_est_failed  EXCEPTION;
23544 
23545   cursor c_prc (p_prc_code VARCHAR2) is
23546     select 1
23547   from fnd_lookups lok
23548   where lok.lookup_type = 'OKL_PROPERTY_CLASS_OPTIONS'
23549   and lok.lookup_code = p_prc_code;
23550 
23551 
23552    BEGIN
23553 
23554      x_return_status := OKL_API.G_RET_STS_SUCCESS;
23555 
23556      -- real estate required columns check
23557      IF ((p_intf_line.real_est_init_direct_cost IS NOT NULL or
23558           p_intf_line.real_est_refinance_amt IS NOT NULL or
23559           p_intf_line.real_est_net_footage_rentable IS NOT NULL or
23560           p_intf_line.real_est_gross_footage IS NOT NULL or
23561           p_intf_line.real_est_property_class_code IS NOT NULL)
23562           AND
23563          NOT(p_intf_line.real_est_init_direct_cost IS NOT NULL and
23564            p_intf_line.real_est_refinance_amt IS NOT NULL and
23565            p_intf_line.real_est_net_footage_rentable IS NOT NULL and
23566            p_intf_line.real_est_property_class_code IS NOT NULL and
23567            p_intf_line.real_est_gross_footage IS NOT NULL)) THEN
23568 
23569 
23570         okl_api.set_message(
23571                             G_APP_NAME,
23572                             G_MISSING_VALUE_FOR_LINE,
23573                             'CONTRACT_NUM',
23574                             p_intf_line.contract_number_old||'/'||TO_CHAR(p_intf_line.line_number),
23575                             'COL_NAME',
23576 --
23577                             'REAL_EST_INIT_DIRECT_COST OR '||
23578                             'REAL_EST_REFINANCE_AMT OR '||
23579                             'REAL_EST_GROSS_FOOTAGE OR '||
23580                             'REAL_EST_NET_FOOTAGE_RENTABLE OR '||
23581                             'REAL_EST_PROPERTY_CLASS_CODE',
23582 --
23583                             'LINE',
23584                             p_intf_line.line_type
23585                             );
23586 
23587          raise validate_real_est_failed;
23588 
23589      END IF;
23590      l_progress := 'Check required columns for real estate';
23591 
23592      IF (p_intf_line.real_est_property_class_code IS NOT NULL) THEN
23593 
23594        OPEN c_prc(p_intf_line.real_est_property_class_code);
23595        FETCH c_prc INTO l_dummy;
23596        l_prc := c_prc%NOTFOUND;
23597        CLOSE c_prc;
23598 
23599        IF (l_prc) THEN
23600 
23601            okl_api.set_message(
23602                                G_APP_NAME,
23603                                G_INVALID_VALUE,
23604                                'CONTRACT_NUM',
23605                                p_intf_line.contract_number_old,
23606                                'COL_NAME',
23607                                'REAL_EST_PROPERTY_CLASS_CODE',
23608                                'COL_VALUE',
23609                                p_intf_line.REAL_EST_PROPERTY_CLASS_CODE
23610                               );
23611 
23612          raise validate_real_est_failed;
23613        END IF;
23614      END IF;
23615      l_progress := 'Check property class code';
23616 
23617      return;
23618 
23619    EXCEPTION
23620      WHEN validate_real_est_failed THEN
23621         x_return_status := OKL_API.G_RET_STS_ERROR;
23622         debug_message(l_proc_name ||': '||l_progress);
23623      WHEN OTHERS THEN
23624         x_return_status := OKL_API.G_RET_STS_ERROR;
23625         debug_message(l_proc_name ||': '||l_progress);
23626 
23627    END validate_real_est;
23628 
23629 ------------------------------------------------------------------------------
23630 -- PROCEDURE get_link_asset_id
23631 -- It gets line id for Financial Asset Line (TOP) corrsponding to ASSET_NUMBER provided and
23632 -- stacks Error, if any, and returns ERROR status to calling process.
23633 -- Calls:
23634 --  None
23635 -- Called By:
23636 --  process_other_line
23637 ------------------------------------------------------------------------------
23638    PROCEDURE get_link_asset_id(
23639                                x_return_status   OUT NOCOPY VARCHAR2,
23640                                x_msg_count       OUT NOCOPY NUMBER,
23641                                x_msg_data        OUT NOCOPY VARCHAR2,
23642                                p_asset_number    IN  okl_lines_interface.asset_number%TYPE,
23643                                p_contract_number IN  okc_k_headers_v.contract_number%TYPE,
23644                                p_chr_id          IN  okc_k_headers_v.id%TYPE,
23645                                p_line_number     IN  okc_k_lines_v.line_number%TYPE,
23646                                x_asset_line_id   OUT NOCOPY okc_k_lines_v.id%TYPE
23647                              ) IS
23648 
23649    l_proc_name VARCHAR2(35) := 'GET_LINK_ASSET_ID';
23650    fin_failed  EXCEPTION;
23651    l_line_id   okc_k_lines_v.id%TYPE;
23652 
23653    CURSOR fin_csr (p_chr_id       NUMBER,
23654                    p_asset_number VARCHAR2) IS
23655    SELECT id
23656    FROM   okc_k_lines_v
23657    WHERE  name = p_asset_number
23658    AND    chr_id = p_chr_id
23659    AND    lse_id = (
23660                     SELECT id
23661                     FROM   okc_line_styles_v
23662                     WHERE  lty_code = 'FREE_FORM1' -- to determine TOP line
23663                    );
23664    BEGIN
23665       x_return_status := OKL_API.G_RET_STS_SUCCESS;
23666       OPEN fin_csr (p_chr_id,
23667                     p_asset_number);
23668       FETCH fin_csr INTO l_line_id;
23669 
23670       IF fin_csr%NOTFOUND THEN
23671         okl_api.set_message(
23672                             G_APP_NAME,
23673                             G_FIN_ASSET_ERROR,
23674                             'CONTRACT_NUM',
23675                             p_contract_number,
23676                             'LINE_NUM',
23677                             p_line_number,
23678                             'ASSET_NUM',
23679                             p_asset_number
23680                            );
23681          raise fin_failed;
23682       END IF;
23683 
23684       CLOSE fin_csr;
23685 
23686       x_asset_line_id := l_line_id;
23687       --debug_message('ID: '||x_asset_line_id);
23688       RETURN;
23689 
23690    EXCEPTION
23691       WHEN fin_failed THEN
23692          IF fin_csr%ISOPEN THEN
23693             CLOSE fin_csr;
23694          END IF;
23695          x_return_status := OKL_API.G_RET_STS_ERROR;
23696 
23697       WHEN OTHERS THEN
23698          okl_api.set_message(
23699                              G_APP_NAME,
23700                              G_UNEXPECTED_ERROR,
23701                              'OKL_SQLCODE',
23702                              SQLCODE,
23703                              'OKL_SQLERRM',
23704                              SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
23705                             );
23706          x_return_status := OKL_API.G_RET_STS_ERROR;
23707    END get_link_asset_id;
23708 
23709 ------------------------------------------------------------------------------
23710 -- PROCEDURE validate_usage_other_line
23711 -- It validates association between Usage Line Item and Inventory Item at Model Line and
23712 -- stacks Error, if any, and returns ERROR status to calling process.
23713 -- Calls:
23714 -- Called By:
23715 ------------------------------------------------------------------------------
23716    PROCEDURE  validate_usage_item_assoc(
23717                                         x_return_status   OUT NOCOPY VARCHAR2,
23718                                         x_msg_count       OUT NOCOPY NUMBER,
23719                                         x_msg_data        OUT NOCOPY VARCHAR2,
23720                                         p_contract_number IN  VARCHAR2,
23721                                         p_line_number     IN  NUMBER,
23722                                         p_asset_line_id   IN  NUMBER,
23723                                         p_usage_item_id   IN  okl_lines_interface.usage_item_id%TYPE,
23724                                         p_usage_item_name IN  VARCHAR2,
23725                                         p_inv_org_id      IN  NUMBER
23726                                        ) IS
23727    l_proc_name VARCHAR2(35) := 'VALIDATE_USAGE_ITEM_ASSOC';
23728    CURSOR assoc_csr (p_usage_item_id NUMBER,
23729                      p_asset_line_id NUMBER) IS
23730    SELECT 'Y'
23731    FROM   okc_k_items_v item,
23732           okl_k_lines_full_v model,
23733           okc_line_styles_v style,
23734           cs_counters cc,
23735           cs_ctr_associations assoc
23736    WHERE  model.lse_id           = style.id
23737    AND    model.id               = item.cle_id
23738    AND    model.cle_id           = p_asset_line_id
23739    AND    style.lty_code         = 'ITEM'
23740    AND    cc.counter_group_id    = assoc.counter_group_id
23741    AND    cc.usage_item_id       = p_usage_item_id
23742    AND    assoc.source_object_id = item.object1_id1;
23743 
23744    assoc_failed    EXCEPTION;
23745    l_dummy         VARCHAR2(1);
23746    BEGIN
23747 
23748       debug_message(l_proc_name);
23749       x_return_status := OKL_API.G_RET_STS_SUCCESS;
23750 
23751       l_dummy := 'N';
23752       OPEN assoc_csr(p_usage_item_id,
23753                      p_asset_line_id);
23754       FETCH assoc_csr INTO l_dummy;
23755       IF (assoc_csr%NOTFOUND
23756           OR
23757           l_dummy = 'N')  THEN
23758          okl_api.set_message(
23759                              G_APP_NAME,
23760                              G_INVALID_USAGE_ITEM_ASSOC,
23761                              'CONTRACT_NUM',
23762                              p_contract_number||'/'||p_line_number,
23763                              'USAGE_ITEM',
23764                              p_usage_item_name||', '||p_usage_item_id
23765                             );
23766          RAISE assoc_failed;
23767       END IF;
23768       CLOSE assoc_csr;
23769 
23770       RETURN;
23771 
23772    EXCEPTION
23773       WHEN assoc_failed THEN
23774          IF assoc_csr%ISOPEN THEN
23775             CLOSE assoc_csr;
23776          END IF;
23777          x_return_status := OKL_API.G_RET_STS_ERROR;
23778    END validate_usage_item_assoc;
23779 
23780 ------------------------------------------------------------------------------
23781 -- PROCEDURE validate_term_quote
23782 -- It validates termination quote used for Rollover fee line and returns
23783 -- quote ID to caller and
23784 -- stacks Error, if any, and returns ERROR status to calling process.
23785 -- Calls:
23786 -- Called By:
23787 ------------------------------------------------------------------------------
23788    PROCEDURE validate_term_quote(
23789                                  x_return_status     OUT NOCOPY VARCHAR2,
23790                                  x_msg_count         OUT NOCOPY NUMBER,
23791                                  x_msg_data          OUT NOCOPY VARCHAR2,
23792                                  p_chr_id            IN  NUMBER,
23793                                  p_contract_number   IN  VARCHAR2,
23794                                  p_line_number       IN  NUMBER,
23795                                  p_term_quote_id     IN  okl_lines_interface.termination_quote_id%TYPE,
23796                                  p_term_quote_number IN  okl_lines_interface.termination_quote_number%TYPE,
23797                                  x_term_quote_id     OUT NOCOPY okl_lines_interface.termination_quote_id%TYPE
23798                                 ) IS
23799 
23800   l_proc_name   VARCHAR2(35) := 'VALIDATE_TERM_QUOTE';
23801   l_quote_id    NUMBER;
23802   quote_failed  EXCEPTION;
23803 
23804   CURSOR qte_csr (p_qte_number VARCHAR2) IS
23805   SELECT id
23806   FROM   okl_trx_quotes_b
23807   WHERE  quote_number = p_qte_number;
23808 
23809   BEGIN
23810 
23811     x_return_status := OKL_API.G_RET_STS_SUCCESS;
23812 
23813     IF (p_term_quote_number IS NOT NULL) THEN
23814        OPEN qte_csr (p_term_quote_number);
23815        FETCH qte_csr INTO l_quote_id;
23816        IF (qte_csr%NOTFOUND) THEN
23817             okl_api.set_message(
23818                                 G_APP_NAME,
23819                                 G_INVALID_VALUE,
23820                                 'CONTRACT_NUM',
23821                                 p_contract_number||'/'||p_line_number,
23822                                 'COL_NAME',
23823                                 'TERMINATION_QUOTE_NUMBER',
23824                                 'COL_VALUE',
23825                                 p_term_quote_number
23826                                );
23827 
23828             RAISE quote_failed;
23829        END IF;
23830        CLOSE qte_csr;
23831     ELSE
23832        l_quote_id := p_term_quote_id;
23833     END IF;
23834 
23835     -- validate quote
23836     okl_maintain_fee_pvt.validate_rollover_feeLine(
23837             p_api_version     => 1.0,
23838             p_init_msg_list   => OKL_API.G_FALSE,
23839             x_return_status   => x_return_status,
23840             x_msg_count       => x_msg_count,
23841             x_msg_data        => x_msg_data,
23842             p_chr_id          => p_chr_id,
23843             p_qte_id          => l_quote_id
23844             --p_for_qa_check    => 'T'
23845            );
23846 
23847     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
23848        RAISE quote_failed;
23849     END IF;
23850 
23851     x_term_quote_id := l_quote_id;
23852 
23853     RETURN;
23854 
23855   EXCEPTION
23856     WHEN quote_failed THEN
23857       x_return_status := OKL_API.G_RET_STS_ERROR;
23858       IF (qte_csr%ISOPEN) THEN
23859          CLOSE qte_csr;
23860       END IF;
23861 
23862   END validate_term_quote;
23863 
23864 ------------------------------------------------------------------------------
23865 -- PROCEDURE create_party_payment_hdr
23866 -- This procedure creates payment headers for pass throughs associated with Asset, Serive, and Fee lines
23867 -- stacks Error, if any, and returns ERROR status to calling process.
23868 -- Calls:
23869 --
23870 -- Called By:
23871 --
23872 ------------------------------------------------------------------------------
23873    PROCEDURE create_party_payment_hdr(
23874                                         x_return_status                OUT NOCOPY VARCHAR2,
23875                                         x_msg_count                    OUT NOCOPY NUMBER,
23876                                         x_msg_data                     OUT NOCOPY VARCHAR2,
23877                                         p_contract_id                  IN  okc_k_headers_b.id%TYPE,
23878                                         p_line_id                      IN  okc_k_lines_b.id%TYPE,
23879                                         p_line_type                    IN  okl_lines_interface.line_type%TYPE,
23880                                         p_pth_start_date               IN  okl_party_payment_hdr.passthru_start_date%TYPE,
23881                                         p_pth_base_payout_basis        IN  okl_party_payment_hdr.payout_basis%TYPE,
23882                                         p_pth_base_stream_code         IN  okl_lines_interface.pth_base_stream_code%TYPE,
23883                                         p_pth_base_stream_purpose_code IN  okl_lines_interface.pth_base_stream_purpose_code%TYPE,
23884                                         p_pth_evg_payout_basis         IN  okl_party_payment_hdr.payout_basis%TYPE,
23885                                         p_pth_payout_basis_formula     IN  okl_party_payment_hdr.payout_basis_formula%TYPE,
23886                                         p_pth_evg_stream_code          IN  okl_lines_interface.pth_evg_stream_code%TYPE,
23887                                         p_pth_evg_stream_purpose_code  IN  okl_lines_interface.pth_evg_stream_purpose_code%TYPE,
23888                                         x_party_pmnt_hdr_tbl           OUT NOCOPY okl_party_payments_pvt.pphv_tbl_type
23889                                        ) IS
23890 
23891    l_proc_name                  VARCHAR2(35) := 'CREATE_PARTY_PAYMENT_HDR';
23892    l_return_status              VARCHAR2(1);
23893    l_base_stream_type_id         okl_strmtyp_source_v.id1%TYPE;
23894    l_evg_stream_type_id         okl_strmtyp_source_v.id1%TYPE;
23895    l_yn                         VARCHAR2(1) := 'N';
23896    l_base_pmnt_hdr              pphv_rec_type := NULL;
23897    l_evg_pmnt_hdr               pphv_rec_type := NULL;
23898    l_pmnt_hdr_tbl_in            pphv_tbl_type;
23899    l_pmnt_hdr_tbl_out           pphv_tbl_type;
23900    l_counter                    NUMBER := 0;
23901    l_contract_number            okc_k_headers_b.contract_number%TYPE;
23902    l_contract_start_date        okc_k_headers_b.start_date%TYPE;
23903    party_pmnt_header_failed     EXCEPTION;
23904    l_stream_name                OKL_STRMTYP_SOURCE_V.NAME%TYPE;
23905 
23906    CURSOR contract_csr (p_contract_id NUMBER) is
23907    SELECT contract_number, start_date
23908    FROM   okl_k_headers_full_v
23909    WHERE  id = p_contract_id;
23910 
23911    CURSOR passthru_stream_csr (p_sty_id number, p_contract_start_date date) IS
23912    SELECT 'Y'
23913    FROM   okl_stream_types_uv STL
23914    WHERE  STL.id = p_sty_id
23915    AND    STL.start_date <= p_contract_start_date
23916    AND   (STL.end_date >= p_contract_start_date OR STL.end_date IS NULL);
23917 
23918    BEGIN
23919 
23920       x_return_status := OKL_API.G_RET_STS_SUCCESS;
23921 
23922       OPEN contract_csr(p_contract_id);
23923       FETCH contract_csr INTO l_contract_number,l_contract_start_date;
23924 
23925       IF contract_csr%NOTFOUND THEN
23926           x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
23927           CLOSE contract_csr;
23928           OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
23929                               p_msg_name     => G_LLA_CHR_ID);
23930           RAISE party_pmnt_header_failed;
23931       END IF;
23932 
23933       CLOSE contract_csr;
23934 
23935       IF (p_pth_base_stream_code IS NOT NULL AND
23936           p_pth_base_stream_purpose_code IS NOT NULL) THEN
23937          -- Derive the stream type ID
23938          check_stream_type_code(
23939                                 x_return_status    => l_return_status,
23940                                 x_msg_count        => x_msg_count,
23941                                 x_msg_data         => x_msg_data,
23942                                 p_stream_type_code => p_pth_base_stream_code,
23943                                 p_stream_purpose   => p_pth_base_stream_purpose_code,
23944                                 x_id1              => l_base_stream_type_id,
23945                                 x_name             => l_stream_name
23946                                );
23947          IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
23948              okl_api.set_message(
23949                                  G_APP_NAME,
23950                                  G_INVALID_VALUE,
23951                                  'CONTRACT_NUM',
23952                                  l_contract_number, --||'/'||TO_CHAR(p_line_number),
23953                                 'COL_NAME',
23954                                 'PTH_BASE_STREAM_CODE, PTH_BASE_STREAM_PURPOSE_CODE',
23955                                 'COL_VALUE',
23956                                 p_pth_base_stream_code||', '||p_pth_base_stream_purpose_code
23957                                );
23958              x_return_status := OKL_API.G_RET_STS_ERROR;
23959              RAISE party_pmnt_header_failed;
23960          END IF;
23961 
23962          -- Check if the stream type is ID is effective
23963          OPEN passthru_stream_csr (l_base_stream_type_id, l_contract_start_date);
23964          FETCH passthru_stream_csr INTO l_yn;
23965 
23966          IF passthru_stream_csr%NOTFOUND THEN
23967             CLOSE passthru_stream_csr;
23968             okl_api.set_message(
23969                                 G_APP_NAME,
23970                                 G_NO_STRM_TMPL,
23971                                 'CONTRACT_NUM',
23972                                 l_contract_number, --||'/'||p_line_number,
23973                                 'COL_NAME',
23974                                 'PTH_BASE_STREAM_CODE, PTH_BASE_STREAM_PURPOSE_CODE',
23975                                 'COL_VALUE',
23976                                 p_pth_base_stream_code||', '||p_pth_base_stream_purpose_code
23977                               );
23978             RAISE party_pmnt_header_failed;
23979          ELSE
23980             CLOSE passthru_stream_csr;
23981          END IF;
23982       END IF;
23983 
23984       IF (p_pth_evg_stream_code IS NOT NULL AND
23985           p_pth_evg_stream_purpose_code IS NOT NULL) THEN
23986           -- Derive the stream type ID
23987          check_stream_type_code(
23988                                 x_return_status    => l_return_status,
23989                                 x_msg_count        => x_msg_count,
23990                                 x_msg_data         => x_msg_data,
23991                                 p_stream_type_code => p_pth_evg_stream_code,
23992                                 p_stream_purpose   => p_pth_evg_stream_purpose_code,
23993                                 x_id1              => l_evg_stream_type_id,
23994                                 x_name             => l_stream_name
23995                                );
23996          IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
23997              okl_api.set_message(
23998                                  G_APP_NAME,
23999                                  G_INVALID_VALUE,
24000                                  'CONTRACT_NUM',
24001                                  l_contract_number, --||'/'||TO_CHAR(p_line_number),
24002                                 'COL_NAME',
24003                                 'PTH_EVG_STREAM_CODE, PTH_EVG_STREAM_PURPOSE_CODE',
24004                                 'COL_VALUE',
24005                                 p_pth_evg_stream_code||', '||p_pth_evg_stream_purpose_code
24006                                );
24007              x_return_status := OKL_API.G_RET_STS_ERROR;
24008              RAISE party_pmnt_header_failed;
24009          END IF;
24010 
24011          -- Check if the stream type is ID is effective
24012          OPEN passthru_stream_csr (l_evg_stream_type_id, l_contract_start_date);
24013          FETCH passthru_stream_csr INTO l_yn;
24014 
24015          IF passthru_stream_csr%NOTFOUND THEN
24016             CLOSE passthru_stream_csr;
24017             okl_api.set_message(
24018                                 G_APP_NAME,
24019                                 G_NO_STRM_TMPL,
24020                                 'CONTRACT_NUM',
24021                                 l_contract_number, --||'/'||p_line_number,
24022                                 'COL_NAME',
24023                                 'PTH_EVG_STREAM_CODE, PTH_EVG_STREAM_PURPOSE_CODE',
24024                                 'COL_VALUE',
24025                                 p_pth_evg_stream_code||', '||p_pth_evg_stream_purpose_code
24026                               );
24027             RAISE party_pmnt_header_failed;
24028          ELSE
24029             CLOSE passthru_stream_csr;
24030          END IF;
24031       END IF;
24032 
24033       IF ((p_line_type = 'ASSET') AND (p_pth_evg_payout_basis IS NOT NULL)) THEN
24034           l_evg_pmnt_hdr.dnz_chr_id              := p_contract_id;
24035           l_evg_pmnt_hdr.cle_id                  := p_line_id;
24036           l_evg_pmnt_hdr.payout_basis            := p_pth_evg_payout_basis;
24037           l_evg_pmnt_hdr.payout_basis_formula    := p_pth_payout_basis_formula;
24038           l_evg_pmnt_hdr.passthru_term           := 'EVERGREEN';
24039           l_evg_pmnt_hdr.passthru_stream_type_id := l_evg_stream_type_id;
24040 
24041       ELSIF (p_line_type in ('SERVICE','FEE'))  THEN
24042          IF (p_pth_base_payout_basis IS NOT NULL) THEN
24043              l_base_pmnt_hdr.passthru_start_date     := p_pth_start_date;
24044              l_base_pmnt_hdr.dnz_chr_id              := p_contract_id;
24045              l_base_pmnt_hdr.cle_id                  := p_line_id;
24046              l_base_pmnt_hdr.payout_basis            := p_pth_base_payout_basis;
24047              l_base_pmnt_hdr.passthru_term           := 'BASE';
24048              l_base_pmnt_hdr.passthru_stream_type_id := l_base_stream_type_id;
24049 	 END IF;
24050 
24051          IF (p_pth_evg_payout_basis IS NOT NULL) THEN
24052             l_evg_pmnt_hdr.dnz_chr_id              := p_contract_id;
24053             l_evg_pmnt_hdr.cle_id                  := p_line_id;
24054             l_evg_pmnt_hdr.payout_basis            := p_pth_evg_payout_basis;
24055             l_evg_pmnt_hdr.payout_basis_formula    := p_pth_payout_basis_formula;
24056             l_evg_pmnt_hdr.passthru_term           := 'EVERGREEN';
24057             l_evg_pmnt_hdr.passthru_stream_type_id := l_evg_stream_type_id;
24058 
24059 	 END IF;
24060 
24061       ELSIF (p_line_type IS NULL) THEN -- Evergreen pth at contract header
24062             l_evg_pmnt_hdr.dnz_chr_id              := p_contract_id;
24063             l_evg_pmnt_hdr.cle_id                  := NULL;
24064             l_evg_pmnt_hdr.payout_basis            := p_pth_evg_payout_basis;
24065             l_evg_pmnt_hdr.payout_basis_formula    := p_pth_payout_basis_formula;
24066             l_evg_pmnt_hdr.passthru_term           := 'EVERGREEN';
24067             l_evg_pmnt_hdr.passthru_stream_type_id := l_evg_stream_type_id;
24068       END IF;
24069 
24070       IF (l_base_pmnt_hdr.dnz_chr_id IS NOT NULL) THEN
24071          l_counter := l_counter + 1;
24072          l_pmnt_hdr_tbl_in(l_counter) := l_base_pmnt_hdr;
24073       END IF;
24074 
24075       IF (l_evg_pmnt_hdr.dnz_chr_id IS NOT NULL) THEN
24076          l_counter := l_counter + 1;
24077          l_pmnt_hdr_tbl_in(l_counter) := l_evg_pmnt_hdr;
24078       END IF;
24079 
24080       IF (l_pmnt_hdr_tbl_in.COUNT > 0) THEN
24081          okl_party_payments_pvt.create_party_payment_hdr(
24082                                                          p_api_version    => 1.0,
24083                                                          x_return_status  => x_return_status,
24084                                                          x_msg_count      => x_msg_count,
24085                                                          x_msg_data       => x_msg_data,
24086                                                          p_pphv_tbl       => l_pmnt_hdr_tbl_in,
24087                                                          x_pphv_tbl       => l_pmnt_hdr_tbl_out
24088 						        );
24089 	  x_party_pmnt_hdr_tbl := l_pmnt_hdr_tbl_out;
24090 
24091          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24092             x_return_status := OKL_API.G_RET_STS_ERROR;
24093             RAISE party_pmnt_header_failed;
24094          END IF;
24095       END IF;
24096 
24097       RETURN;
24098 
24099    EXCEPTION
24100       WHEN party_pmnt_header_failed THEN
24101         x_return_status := OKL_API.G_RET_STS_ERROR;
24102 
24103    END create_party_payment_hdr;
24104 
24105 ------------------------------------------------------------------------------
24106 -- PROCEDURE process_other_line
24107 -- It process SERVICE, FEE lines and calls API to create reecord in respective tables and
24108 -- stacks Error, if any, and returns ERROR status to calling process.
24109 -- Calls:
24110 --  get_link_asset_id
24111 --  get_lse_id
24112 --  get_inventory_org_item_id
24113 -- Called By:
24114 --  load_input_record
24115 ------------------------------------------------------------------------------
24116    PROCEDURE process_other_line(
24117                                   x_return_status     OUT NOCOPY VARCHAR2,
24118                                   x_msg_count         OUT NOCOPY NUMBER,
24119                                   x_msg_data          OUT NOCOPY VARCHAR2,
24120                                   p_contract_number   IN  okl_header_interface.contract_number_old%TYPE,
24121                                   p_chr_id            IN  okc_k_headers_v.id%TYPE,
24122                                   p_line_number       IN  okl_lines_interface.line_number%TYPE,
24123                                   p_line_type         IN  okl_lines_interface.line_type%TYPE,
24124                                   p_line_type_prev    IN  okl_lines_interface.line_type%TYPE,
24125                                   p_inv_item_id       IN  okl_lines_interface.inventory_item_id%TYPE,
24126                                   p_inv_org_id        IN  okl_header_interface.inventory_organization_id%TYPE,
24127                                   p_line_amount       IN  okl_lines_interface.amount%TYPE,
24128                                   p_link_asset_amount IN  okl_lines_interface.link_asset_amount%TYPE,
24129                                   p_init_direct_cost  IN  okl_lines_interface.initial_direct_cost%TYPE,
24130                                   p_fee_code          IN  okl_lines_interface.fee_code%TYPE,
24131                                   p_stream_purpose    IN  okl_lines_interface.stream_purpose_code%TYPE,
24132                                   p_fee_type          IN  okl_lines_interface.fee_type%TYPE,
24133                                   p_asset_number      IN  okl_lines_interface.asset_number%TYPE,
24134                                   p_currency_code     IN  okl_lines_interface.currency_code%TYPE,
24135                                   p_usage_item_name   IN  okl_lines_interface.usage_item_name%TYPE,
24136                                   p_usage_item_id     IN  okl_lines_interface.usage_item_id%TYPE,
24137                                   p_header_start_date IN  DATE,
24138                                   p_header_end_date   IN  DATE,
24139                                   p_line_start_date   IN  DATE,
24140                                   p_line_end_date     IN  DATE,
24141                                   p_inv_item_id_prev  IN  okl_lines_interface.inventory_item_id%TYPE,
24142                                   p_term_quote_id     IN  OKL_LINES_INTERFACE.TERMINATION_QUOTE_ID%TYPE,
24143                                   p_term_quote_number IN  OKL_LINES_INTERFACE.TERMINATION_QUOTE_NUMBER%TYPE,
24144                                   x_inv_item_id_prev  OUT NOCOPY okl_lines_interface.inventory_item_id%TYPE,
24145                                   p_cle_id            IN  okl_k_lines_v.id%TYPE,
24146                                   x_cle_id            OUT NOCOPY okc_k_lines_v.id%TYPE,
24147                                   x_sub_cle_id        OUT NOCOPY okc_k_lines_v.id%TYPE,       -- Bug# 3110115
24148                                   p_new_line_flag     IN  okl_lines_interface.explicit_new_line_flag%TYPE,
24149                                   p_pth_base_payout_basis        IN okl_lines_interface.pth_base_payout_basis%TYPE,
24150                                   p_pth_base_stream_code         IN okl_lines_interface.pth_base_stream_code%TYPE,
24151                                   p_pth_base_stream_purpose_code IN okl_lines_interface.pth_base_stream_purpose_code%TYPE,
24152                                   p_pth_start_date               IN okl_lines_interface.pth_start_date%TYPE,
24153                                   p_pth_evg_payout_basis         IN okl_lines_interface.pth_evg_payout_basis%TYPE,
24154                                   p_pth_payout_basis_formula     IN okl_lines_interface.pth_payout_basis_formula%TYPE,
24155                                   p_pth_evg_stream_code          IN okl_lines_interface.pth_evg_stream_code%TYPE,
24156                                   p_pth_evg_stream_purpose_code  IN okl_lines_interface.pth_evg_stream_purpose_code%TYPE,
24157                                   p_fee_purpose_code             IN okl_lines_interface.fee_purpose_code%TYPE,
24158                                   --Bug# 11690042
24159                                   p_attribute_category           IN okl_lines_interface.attribute_category%TYPE DEFAULT NULL,
24160                                   p_attribute1                   IN okl_lines_interface.attribute1%TYPE DEFAULT NULL,
24161                                   p_attribute2                   IN okl_lines_interface.attribute2%TYPE DEFAULT NULL,
24162                                   p_attribute3                   IN okl_lines_interface.attribute3%TYPE DEFAULT NULL,
24163                                   p_attribute4                   IN okl_lines_interface.attribute4%TYPE DEFAULT NULL,
24164                                   p_attribute5                   IN okl_lines_interface.attribute5%TYPE DEFAULT NULL,
24165                                   p_attribute6                   IN okl_lines_interface.attribute6%TYPE DEFAULT NULL,
24166                                   p_attribute7                   IN okl_lines_interface.attribute7%TYPE DEFAULT NULL,
24167                                   p_attribute8                   IN okl_lines_interface.attribute8%TYPE DEFAULT NULL,
24168                                   p_attribute9                   IN okl_lines_interface.attribute9%TYPE DEFAULT NULL,
24169                                   p_attribute10                  IN okl_lines_interface.attribute10%TYPE DEFAULT NULL,
24170                                   p_attribute11                  IN okl_lines_interface.attribute11%TYPE DEFAULT NULL,
24171                                   p_attribute12                  IN okl_lines_interface.attribute12%TYPE DEFAULT NULL,
24172                                   p_attribute13                  IN okl_lines_interface.attribute13%TYPE DEFAULT NULL,
24173                                   p_attribute14                  IN okl_lines_interface.attribute14%TYPE DEFAULT NULL,
24174                                   p_attribute15                  IN okl_lines_interface.attribute15%TYPE DEFAULT NULL,
24175                                   p_origination_income           IN okl_lines_interface.origination_income%TYPE DEFAULT NULL
24176                                  ) IS
24177    l_proc_name     VARCHAR2(35) := 'PROCESS_OTHER_LINE';
24178    x_lse_id        okc_line_styles_v.id%TYPE;
24179    x_inv_org_id    NUMBER;
24180    x_inv_item_id   NUMBER;
24181    x_asset_line_id okc_k_lines_v.id%TYPE;
24182    l_lty_code      okc_line_styles_v.lty_code%TYPE;
24183    l_link_lty_code okc_line_styles_v.lty_code%TYPE;
24184    l_link_top_code VARCHAR2(35);
24185    x_stream_type_id NUMBER;
24186    x_usage_item_id NUMBER;
24187    x_usage_id2     NUMBER;
24188 
24189    p_klev_rec      klev_rec_type;
24190    p_clev_rec      clev_rec_type;
24191    x_klev_rec      klev_rec_type;
24192    x_clev_rec      clev_rec_type;
24193 
24194    l_klev_rec      klev_rec_type;
24195    l_clev_rec      clev_rec_type;
24196    l_capital_amount okl_k_lines.capital_amount%type;
24197 
24198    p_cimv_rec      okl_okc_migration_pvt.cimv_rec_type;
24199    x_cimv_rec      okl_okc_migration_pvt.cimv_rec_type;
24200 
24201    service_failed  EXCEPTION;
24202    l_progress      VARCHAR2(10) := '100.1';
24203 
24204    l_fee_types_rec fee_types_rec_type;
24205    x_fee_types_rec fee_types_rec_type;
24206 
24207    x_term_quote_id NUMBER;
24208 
24209    CURSOR fee_vendor_csr (p_contract_number OKL_HEADER_INTERFACE.CONTRACT_NUMBER_OLD%TYPE,
24210                           p_line_number     OKL_LINES_INTERFACE.LINE_NUMBER%TYPE) IS
24211    SELECT fees_vendor_name,
24212           fees_vendor_id
24213    FROM   okl_party_roles_interface
24214    WHERE  contract_number_old = p_contract_number
24215    AND    line_number         = p_line_number;
24216 
24217    CURSOR capital_amount(p_line_id OKL_K_LINES.ID%TYPE)
24218    IS
24219              SELECT nvl(capital_amount , 0)
24220              from   okl_k_lines
24221              where id = p_line_id;
24222 
24223    CURSOR service_item_csr (p_inv_item_id OKX_SYSTEM_ITEMS_V.ID1%TYPE,
24224                             p_inv_org_id  OKX_SYSTEM_ITEMS_V.ID2%TYPE) IS
24225    SELECT name
24226    FROM   okx_system_items_v
24227    WHERE  id1 = p_inv_item_id
24228    AND    id2 = p_inv_org_id;
24229 
24230    l_fee_vendor_name OKL_PARTY_ROLES_INTERFACE.FEES_VENDOR_NAME%TYPE;
24231    l_fee_vendor_id   OKL_PARTY_ROLES_INTERFACE.FEES_VENDOR_ID%TYPE;
24232 
24233    l_service_item_name OKX_SYSTEM_ITEMS_V.NAME%TYPE;
24234 
24235    -- passthrough
24236    x_party_pmnt_hdr_tbl_out pphv_tbl_type;
24237    l_counter                NUMBER;
24238    -- passthrough
24239 
24240    l_stream_name           OKL_STRMTYP_SOURCE_V.NAME%TYPE;
24241 
24242    BEGIN
24243 
24244       x_return_status := OKL_API.G_RET_STS_SUCCESS;
24245       p_klev_rec := NULL;
24246       p_clev_rec := NULL;
24247 
24248       -- Set line_type based parameters
24249 
24250       IF (p_line_type = 'SERVICE') THEN             -- SERVICE line
24251          l_lty_code      := 'SOLD_SERVICE';
24252          l_link_lty_code := 'LINK_SERV_ASSET';
24253          l_link_top_code := 'OKX_SERVICE';
24254       ELSIF (p_line_type = 'FEE') THEN              -- FEE line
24255          l_lty_code      := 'FEE';
24256          l_link_lty_code := 'LINK_FEE_ASSET';
24257          l_link_top_code := 'OKL_STRMTYP';
24258       ELSIF (p_line_type = 'USAGE') THEN            -- USAGE line
24259          l_lty_code      := 'USAGE';
24260          l_link_lty_code := 'LINK_USAGE_ASSET';
24261          l_link_top_code := NULL; --'OKL_USAGE';
24262       END IF;
24263 
24264       l_progress := '100.2';
24265       x_inv_item_id := p_inv_item_id;
24266       x_inv_org_id  := p_inv_org_id;
24267 
24268       IF (p_line_type = 'FEE') THEN
24269 
24270          check_stream_type_code(
24271                                 x_return_status    => x_return_status,
24272                                 x_msg_count        => x_msg_count,
24273                                 x_msg_data         => x_msg_data,
24274                                 p_stream_type_code => p_fee_code,
24275                                 p_stream_purpose   => p_stream_purpose,
24276                                 x_id1              => x_stream_type_id,
24277                                 x_name             => l_stream_name
24278                                );
24279          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24280              x_return_status := OKL_API.G_RET_STS_ERROR;
24281              RAISE service_failed;
24282          END IF;
24283 
24284 
24285          --
24286          -- UDS 10/27
24287          -- Check whether the stream is present in template for this contract
24288          --
24289 
24290          x_inv_item_id := x_stream_type_id;
24291 
24292 /* Added on check_line_literal
24293          validate_fee_type(
24294                            x_return_status   => x_return_status,
24295                            p_fee_type        => p_fee_type
24296                           );
24297 
24298          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24299             okl_api.set_message(
24300                                 G_APP_NAME,
24301                                 G_INVALID_VALUE,
24302                                 'CONTRACT_NUM',
24303                                 p_contract_number,
24304                                 'COL_NAME',
24305                                 'FEE_TYPE',
24306                                 'COL_VALUE',
24307                                 p_fee_type
24308                                );
24309             RAISE service_failed;
24310          END IF;
24311 */
24312 
24313       ELSIF (p_line_type = 'USAGE') THEN
24314          get_usage_item_id(
24315                            x_return_status   => x_return_status,
24316                            p_usage_item_name => p_usage_item_name,
24317                            p_usage_item_id   => p_usage_item_id,
24318                            p_org_id          => p_inv_org_id,
24319                            x_usage_item_id   => x_usage_item_id,
24320                            x_usage_id2       => x_usage_id2
24321                           );
24322          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24323             okl_api.set_message(
24324                                 G_APP_NAME,
24325                                 G_INVALID_VALUE,
24326                                 'CONTRACT_NUM',
24327                                 p_contract_number,
24328                                 'COL_NAME',
24329                                 'USAGE_ITEM_NAME, ID',
24330                                 'COL_VALUE',
24331                                 p_usage_item_name||', '||p_usage_item_id
24332                                );
24333             RAISE service_failed;
24334          END IF;
24335 
24336          x_inv_item_id := x_usage_item_id;
24337       END IF;
24338 
24339       l_progress := '100.3';
24340 
24341       debug_message('------>Line number: '||p_line_number);
24342       debug_message('------>Prev Line type: '||p_line_type_prev);
24343       debug_message('------>Curr Line type: '||p_line_type);
24344       debug_message('------>Prec Item id  : '||p_inv_item_id_prev);
24345       debug_message('------>Curr Item id  : '||x_inv_item_id);
24346       -- Dont' create Top Line for same Item and Line type, create link_asset line only
24347       -- Bug 4092764: creaet top line if explicit_new_line_flag = 'Y'
24348       --
24349       -- Check for validity of the same flag
24350       -- If item and/or line type does not match
24351       -- but explicit_new_line_flag = 'N'
24352       -- raise error
24353 
24354       IF ( (p_inv_item_id_prev <> x_inv_item_id
24355             OR
24356             p_line_type_prev <> p_line_type)
24357            AND
24358            p_new_line_flag = 'N') THEN
24359             okl_api.set_message(
24360                                 G_APP_NAME,
24361                                 G_INVALID_NEW_LINE_REQ,
24362                                 'CONTRACT_NUM',
24363                                 p_contract_number,
24364                                 'LINE_TYPE',
24365                                 p_line_type||'/'||p_line_number,
24366                                 'NEW_LINE_FLAG',
24367                                 p_new_line_flag
24368                                );
24369             RAISE service_failed;
24370       END IF;
24371 
24372       IF (p_inv_item_id_prev <> x_inv_item_id
24373           OR
24374           p_line_type_prev <> p_line_type
24375           OR
24376           NVL(p_new_line_flag, 'N') = 'Y'
24377          ) THEN -- for same inventory item create link asset line only
24378 
24379       --create a blank TOP line
24380 
24381         get_lse_id(
24382                    x_return_status   => x_return_status,
24383                    x_msg_count       => x_msg_count,
24384                    x_msg_data        => x_msg_data,
24385                    p_contract_number => p_contract_number,
24386                    p_line_number     => p_line_number,
24387                    p_lty_code        => l_lty_code,
24388                    p_top_line_lty_code => NULL,
24389                    x_lse_id          => x_lse_id
24390                    );
24391          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24392             x_return_status := OKL_API.G_RET_STS_ERROR;
24393             RAISE service_failed;
24394          END IF;
24395          p_clev_rec.chr_id              := p_chr_id;
24396          p_clev_rec.dnz_chr_id          := p_chr_id;
24397          p_clev_rec.lse_id              := x_lse_id;
24398          p_clev_rec.line_number         := p_line_number;
24399          p_clev_rec.sts_code            := 'NEW';
24400          p_clev_rec.exception_yn        := 'N';
24401          p_clev_rec.display_sequence    := 1;
24402          p_clev_rec.currency_code       := p_currency_code;
24403          p_klev_rec.amount              := p_line_amount;
24404          p_klev_rec.initial_direct_cost := p_init_direct_cost;
24405          p_klev_rec.fee_type            := p_fee_type;
24406 
24407          IF p_fee_type = 'INCOME'
24408          THEN
24409            p_klev_rec.origination_income := NVL(p_origination_income, 0 );
24410          END IF;
24411 
24412          --
24413          -- Populate capital amount for CAPITALIZED FEE line
24414          -- Bug 3449762
24415          --
24416          IF ( p_line_type = 'FEE'
24417               AND
24418               p_fee_type = 'CAPITALIZED' ) THEN
24419               p_klev_rec.capital_amount := p_line_amount;
24420          END IF; -- capitalized fee
24421 
24422          IF ( p_line_type = 'FEE'
24423               AND
24424               p_klev_rec.initial_direct_cost IS NOT NULL
24425               AND
24426               p_klev_rec.initial_direct_cost > p_klev_rec.amount) THEN
24427 
24428             OKL_API.SET_MESSAGE(
24429                                 G_APP_NAME,
24430                                 G_INIT_DIRC_COST,
24431                                 'CONTRACT_NUM',
24432                                 p_contract_number,
24433                                 'LINE_NUM',
24434                                 p_line_number
24435                                );
24436 
24437             x_return_status := OKL_API.G_RET_STS_ERROR;
24438             RAISE service_failed;
24439 
24440          END IF;
24441 
24442          p_clev_rec.start_date := NVL(p_line_start_date, p_header_start_date);
24443          p_clev_rec.end_date   := NVL(p_line_end_date,p_header_end_date);
24444 
24445 /*
24446          --
24447          -- Rollover Fee line validation
24448          --
24449          IF (p_line_type = 'FEE'
24450              AND
24451              p_fee_type = 'ROLLOVER') THEN
24452 
24453              validate_term_quote(
24454                                  x_return_status     => x_return_status,
24455                                  x_msg_count         => x_msg_count,
24456                                  x_msg_data          => x_msg_data,
24457                                  p_chr_id            => p_chr_id,
24458                                  p_contract_number   => p_contract_number,
24459                                  p_line_number       => p_line_number,
24460                                  p_term_quote_id     => p_term_quote_id,
24461                                  p_term_quote_number => p_term_quote_number,
24462                                  x_term_quote_id     => x_term_quote_id
24463                                 );
24464 
24465              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24466                 x_return_status := OKL_API.G_RET_STS_ERROR;
24467                 RAISE service_failed;
24468              END IF;
24469 
24470              p_klev_rec.qte_id := x_term_quote_id;
24471 
24472          END IF; -- end Rollover
24473 */
24474          -- service name
24475          IF (p_line_type = 'SERVICE') THEN
24476               l_service_item_name := NULL;
24477 
24478               OPEN service_item_csr(p_inv_item_id,
24479                                     p_inv_org_id);
24480               FETCH service_item_csr INTO l_service_item_name;
24481               CLOSE service_item_csr;
24482 
24483               p_clev_rec.name := l_service_item_name;
24484          ELSIF (p_line_type = 'FEE') THEN
24485               p_klev_rec.fee_purpose_code := p_fee_purpose_code;
24486               p_clev_rec.name := l_stream_name;
24487          END IF;
24488          -- Fee type validation
24489          IF (p_line_type = 'FEE') THEN
24490 
24491 
24492               debug_message('------>Validate Fee TYpe');
24493 
24494               l_fee_types_rec.dnz_chr_id          := p_chr_id;
24495               l_fee_types_rec.fee_type            := p_fee_type;
24496               l_fee_types_rec.item_id1            := x_inv_item_id;
24497               l_fee_types_rec.item_id2            := '#';
24498               l_fee_types_rec.effective_from      := p_clev_rec.start_date;
24499               l_fee_types_rec.effective_to        := p_clev_rec.end_date;
24500               l_fee_types_rec.amount              := p_line_amount;
24501 
24502               l_fee_types_rec.initial_direct_cost := p_init_direct_cost;
24503 
24504               l_fee_vendor_name := NULL;
24505               l_fee_vendor_id   := NULL;
24506 
24507               OPEN fee_vendor_csr(p_contract_number,
24508                                   p_line_number);
24509               FETCH fee_vendor_csr INTO l_fee_vendor_name,
24510                                         l_fee_vendor_id;
24511               CLOSE fee_vendor_csr;
24512 
24513               IF (l_fee_vendor_name IS NOT NULL) THEN
24514 
24515                   get_vendor_id (
24516                        x_return_status     => x_return_status,
24517                        x_msg_count         => x_msg_count,
24518                        x_msg_data          => x_msg_data,
24519                        p_contract_number   => p_contract_number,
24520                        p_line_number       => p_line_number,
24521                        x_vendor_id         => l_fee_vendor_id,
24522                        p_vendor_name       => l_fee_vendor_name
24523                       );
24524 
24525                   IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24526                      RAISE service_failed;
24527                   END IF;
24528               END IF;
24529 
24530               l_fee_types_rec.party_id1 := l_fee_vendor_id;
24531               l_fee_types_rec.party_id2 := '#';
24532 
24533               l_fee_types_rec.roll_qt   := p_term_quote_number;
24534               l_fee_types_rec.qte_id    := p_term_quote_id;
24535 
24536               okl_maintain_fee_pvt.validate_fee_type(
24537                         p_api_version    => 1.0,
24538                         p_init_msg_list  => OKL_API.G_FALSE,
24539                         x_return_status  => x_return_status,
24540                         x_msg_count      => x_msg_count,
24541                         x_msg_data       => x_msg_data,
24542                         p_fee_types_rec  => l_fee_types_rec,
24543                         x_fee_types_rec  => x_fee_types_rec
24544                        );
24545 
24546               IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24547                  RAISE service_failed;
24548               END IF;
24549 
24550               debug_message('=====> Qte ID: '||x_fee_types_rec.qte_id);
24551               p_klev_rec.qte_id := x_fee_types_rec.qte_id;
24552 
24553          END IF; -- fee type validation
24554 
24555          --Bug# 11690042
24556 	   IF ((p_line_type = 'SERVICE') OR (p_line_type = 'FEE')) THEN
24557 
24558            debug_message('Contract line DFF...'||'Line Type: '||p_line_type);
24559            debug_message('Contract line DFF...'||'Line#: '||p_line_number);
24560 
24561            p_klev_rec.validate_dff_yn          := 'Y';  -- always validate DFF
24562            p_klev_rec.attribute_category       := p_attribute_category;
24563            debug_message('attribute_category: '||p_attribute_category);
24564            p_klev_rec.attribute1               := p_attribute1;
24565            debug_message('attribute1: '||p_klev_rec.attribute1);
24566            p_klev_rec.attribute2               := p_attribute2;
24567            debug_message('attribute2: '||p_klev_rec.attribute2);
24568            p_klev_rec.attribute3               := p_attribute3;
24569            p_klev_rec.attribute4               := p_attribute4;
24570            p_klev_rec.attribute5               := p_attribute5;
24571            p_klev_rec.attribute6               := p_attribute6;
24572            p_klev_rec.attribute7               := p_attribute7;
24573            p_klev_rec.attribute8               := p_attribute8;
24574            p_klev_rec.attribute9               := p_attribute9;
24575            p_klev_rec.attribute10              := p_attribute10;
24576            p_klev_rec.attribute11              := p_attribute11;
24577            p_klev_rec.attribute12              := p_attribute12;
24578            p_klev_rec.attribute13              := p_attribute13;
24579            p_klev_rec.attribute14              := p_attribute14;
24580            p_klev_rec.attribute15              := p_attribute15;
24581          END IF;
24582          --Bug# 11690042
24583 
24584          okl_contract_pub.create_contract_line(
24585                                                p_api_version   => 1.0,
24586                                                p_init_msg_list => OKL_API.G_FALSE,
24587                                                x_return_status => x_return_status,
24588                                                x_msg_count     => x_msg_count,
24589                                                x_msg_data      => x_msg_data,
24590                                                p_clev_rec      => p_clev_rec,
24591                                                p_klev_rec      => p_klev_rec,
24592                                                x_clev_rec      => x_clev_rec,
24593                                                x_klev_rec      => x_klev_rec
24594                                               );
24595 
24596          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24597             x_return_status := OKL_API.G_RET_STS_ERROR;
24598             RAISE service_failed;
24599          END IF;
24600 
24601          x_cle_id := x_clev_rec.id;
24602       l_progress := '100.4';
24603 
24604          -- create item line to link TOP line, created above, to MTL_SYSTEM_ITEMS
24605 
24606          p_cimv_rec                   := NULL;
24607          p_cimv_rec.cle_id            := x_cle_id;
24608          p_cimv_rec.chr_id            := p_chr_id;
24609          p_cimv_rec.dnz_chr_id        := p_chr_id;
24610 
24611          IF (p_line_type = 'USAGE') THEN
24612             p_cimv_rec.object1_id1       := NULL;
24613             p_cimv_rec.object1_id2       := NULL;
24614             p_cimv_rec.jtot_object1_code := NULL;
24615          ELSIF (p_line_type = 'FEE') THEN
24616             p_cimv_rec.object1_id1       := x_stream_type_id;
24617             p_cimv_rec.object1_id2       := '#';
24618             p_cimv_rec.jtot_object1_code := l_link_top_code;
24619          ELSE
24620             p_cimv_rec.object1_id1       := x_inv_item_id;
24621             p_cimv_rec.object1_id2       := x_inv_org_id;
24622             p_cimv_rec.jtot_object1_code := l_link_top_code;
24623          END IF;
24624 
24625          p_cimv_rec.exception_yn := 'N';
24626 
24627          OKL_OKC_MIGRATION_PVT.create_contract_item(
24628                                                     p_api_version   => 1.0,
24629                                                     p_init_msg_list => OKL_API.G_FALSE,
24630                                                     x_return_status => x_return_status,
24631                                                     x_msg_count     => x_msg_count,
24632                                                     x_msg_data	 => x_msg_data,
24633                                                     p_cimv_rec	 => p_cimv_rec,
24634                                                     x_cimv_rec	 => x_cimv_rec
24635                                                    );
24636       l_progress := '100.5';
24637          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24638              x_return_status := OKL_API.G_RET_STS_ERROR;
24639              RAISE service_failed;
24640          END IF;
24641 
24642          debug_message('Top line created for line# : '|| p_line_number);
24643          -- passthrough
24644          IF ((p_pth_base_payout_basis is NOT NULL) OR (p_pth_evg_payout_basis is NOT NULL)) THEN
24645 	    IF ((p_line_type = 'SERVICE') OR
24646 	        ((p_line_type = 'FEE') AND (p_fee_type = 'PASSTHROUGH'))) THEN
24647                debug_message('------>Create party payment starts for SERVICE / FEE : ' || p_line_type || '/'|| p_line_number);
24648                create_party_payment_hdr(
24649                                         x_return_status                   => x_return_status,
24650                                         x_msg_count                       => x_msg_count,
24651                                         x_msg_data                        => x_msg_data,
24652                                         p_contract_id                     => x_clev_rec.dnz_chr_id,
24653                                         p_line_id                         => x_clev_rec.id,
24654                                         p_line_type                       => p_line_type,
24655                                         p_pth_start_date                  => p_pth_start_date,
24656                                         p_pth_base_payout_basis           => p_pth_base_payout_basis,
24657                                         p_pth_base_stream_code            => p_pth_base_stream_code,
24658                                         p_pth_base_stream_purpose_code    => p_pth_base_stream_purpose_code,
24659                                         p_pth_evg_payout_basis            => p_pth_evg_payout_basis,
24660                                         p_pth_payout_basis_formula        => p_pth_payout_basis_formula,
24661                                         p_pth_evg_stream_code             => p_pth_evg_stream_code,
24662                                         p_pth_evg_stream_purpose_code     => p_pth_evg_stream_purpose_code,
24663                                         x_party_pmnt_hdr_tbl              => x_party_pmnt_hdr_tbl_out
24664                                        );
24665                debug_message('------>Create party payment ends '||x_return_status);
24666                IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24667                   x_return_status := OKL_API.G_RET_STS_ERROR;
24668                   RAISE service_failed;
24669                END IF;
24670          END IF;
24671 	    IF (x_party_pmnt_hdr_tbl_out.COUNT > 0 )THEN
24672 	       l_counter := x_party_pmnt_hdr_tbl_out.FIRST;
24673 	       LOOP
24674                   IF (x_party_pmnt_hdr_tbl_out(l_counter).passthru_term = 'BASE') THEN
24675 		     g_base_pmnt_hdr := x_party_pmnt_hdr_tbl_out(l_counter);
24676 		  ELSIF (x_party_pmnt_hdr_tbl_out(l_counter).passthru_term = 'EVERGREEN') THEN
24677 		     g_evg_pmnt_hdr := x_party_pmnt_hdr_tbl_out(l_counter);
24678 		  END IF;
24679 	       EXIT WHEN (l_counter = x_party_pmnt_hdr_tbl_out.LAST);
24680                l_counter := x_party_pmnt_hdr_tbl_out.NEXT(l_counter);
24681 	       END LOOP;
24682             END IF;
24683 	 END IF;
24684      ELSE
24685          x_cle_id := p_cle_id; -- use previous TOP line ID
24686      END IF; --inv_item_id
24687 
24688 
24689      IF (p_asset_number IS NOT NULL) THEN
24690 
24691       -- create link asset line only in case asset link is present
24692       -- and link it to blank TOP line
24693       get_lse_id(
24694                 x_return_status   => x_return_status,
24695                 x_msg_count       => x_msg_count,
24696                 x_msg_data        => x_msg_data,
24697                 p_contract_number => p_contract_number,
24698                 p_line_number     => p_line_number,
24699                 p_lty_code        => l_link_lty_code,
24700                 p_top_line_lty_code => l_lty_code,
24701                 x_lse_id          => x_lse_id
24702                );
24703       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24704         x_return_status := OKL_API.G_RET_STS_ERROR;
24705         RAISE service_failed;
24706       END IF;
24707 
24708       p_clev_rec.cle_id           := x_cle_id;
24709       p_clev_rec.chr_id           := NULL;
24710       p_clev_rec.dnz_chr_id       := p_chr_id;
24711       p_clev_rec.lse_id           := x_lse_id;
24712       p_clev_rec.line_number      := p_line_number;
24713       p_clev_rec.name             := p_asset_number;
24714       p_clev_rec.sts_code         := 'NEW';
24715       p_clev_rec.exception_yn     := 'N';
24716       p_clev_rec.display_sequence := 1;
24717 /*
24718       IF(p_line_start_date IS NULL) THEN
24719          p_clev_rec.start_date := p_line_start_date;
24720       ELSE
24721          p_clev_rec.start_date := p_header_start_date;
24722       END IF;
24723 */
24724       p_clev_rec.start_date := NVL(p_line_start_date, p_header_start_date);
24725       p_clev_rec.end_date   := NVL(p_line_end_date,p_header_end_date);
24726       p_clev_rec.currency_code    := p_currency_code;
24727 
24728       --Bug 4688098
24729       -- p_klev_rec.capital_amount            := p_link_asset_amount;
24730       IF ( p_line_type = 'FEE' AND  p_fee_type = 'CAPITALIZED' )
24731 	 OR ( p_line_type = 'SERVICE')
24732 	  THEN
24733          p_klev_rec.capital_amount            := p_link_asset_amount;
24734       ELSE
24735        p_klev_rec.amount :=p_link_asset_amount;
24736       END IF ;
24737       --Bug 4688098 : end
24738 
24739 
24740       okl_contract_pub.create_contract_line(
24741                                             p_api_version   => 1.0,
24742                                             p_init_msg_list => OKL_API.G_FALSE,
24743                                             x_return_status => x_return_status,
24744                                             x_msg_count     => x_msg_count,
24745                                             x_msg_data      => x_msg_data,
24746                                             p_clev_rec      => p_clev_rec,
24747                                             p_klev_rec      => p_klev_rec,
24748                                             x_clev_rec      => x_clev_rec,
24749                                             x_klev_rec      => x_klev_rec
24750                                            );
24751       l_progress := '100.6';
24752 
24753       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24754          x_return_status := OKL_API.G_RET_STS_ERROR;
24755          RAISE service_failed;
24756       END IF;
24757 
24758       x_sub_cle_id := x_clev_rec.id; -- ID of the sub-line, Bug# 3110115
24759 
24760       --link this line to financial asset line
24761       get_link_asset_id(
24762                         x_return_status   => x_return_status,
24763                         x_msg_count       => x_msg_count,
24764                         x_msg_data        => x_msg_data,
24765                         p_asset_number    => p_asset_number,
24766                         p_contract_number => p_contract_number,
24767                         p_chr_id          => p_chr_id,
24768                         p_line_number     => p_line_number,
24769                         x_asset_line_id   => x_asset_line_id
24770                        );
24771 
24772       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24773          x_return_status := OKL_API.G_RET_STS_ERROR;
24774          RAISE service_failed;
24775       END IF;
24776 
24777       --
24778       -- Validate Usage Item here
24779       -- check for association between Usage Item and Inventory Item for USAGE line
24780       --
24781       IF (p_line_type = 'USAGE') THEN
24782          validate_usage_item_assoc(
24783                                    x_return_status   => x_return_status,
24784                                    x_msg_count       => x_msg_count,
24785                                    x_msg_data        => x_msg_data,
24786                                    p_contract_number => p_contract_number,
24787                                    p_line_number     => p_line_number,
24788                                    p_asset_line_id   => x_asset_line_id,
24789                                    p_usage_item_name => p_usage_item_name,
24790                                    p_usage_item_id   => x_usage_item_id,
24791                                    p_inv_org_id      => x_inv_org_id
24792                                   );
24793       l_progress := '100.7';
24794          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24795             RAISE  service_failed;
24796          END IF;
24797       END IF;
24798 
24799       p_cimv_rec                   := NULL;
24800       p_cimv_rec.cle_id            := x_clev_rec.id;
24801       p_cimv_rec.chr_id            := p_chr_id;
24802       p_cimv_rec.dnz_chr_id        := p_chr_id;
24803       p_cimv_rec.object1_id1       := x_asset_line_id;
24804       p_cimv_rec.object1_id2       := '#';
24805       p_cimv_rec.jtot_object1_code := 'OKX_COVASST';
24806       p_cimv_rec.exception_yn      := 'N';
24807 
24808       okl_okc_migration_pvt.create_contract_item(
24809                                                  p_api_version   => 1.0,
24810                                                  p_init_msg_list => OKL_API.G_FALSE,
24811                                                  x_return_status => x_return_status,
24812                                                  x_msg_count     => x_msg_count,
24813                                                  x_msg_data	 => x_msg_data,
24814                                                  p_cimv_rec	 => p_cimv_rec,
24815                                                  x_cimv_rec	 => x_cimv_rec
24816                                                 );
24817       l_progress := '100.8';
24818       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24819           x_return_status := OKL_API.G_RET_STS_ERROR;
24820           RAISE service_failed;
24821       END IF;
24822 
24823       -- Bug 4190051 Start
24824 
24825          IF ( p_line_type = 'FEE' AND p_fee_type = 'CAPITALIZED' ) THEN
24826            null; -- Update asset x_asset_line_id with p_link_asset_amount
24827            l_clev_rec.id                  := x_asset_line_id;
24828            l_klev_rec.id                  := x_asset_line_id;
24829 
24830            OPEN  capital_amount(x_asset_line_id);
24831            FETCH capital_amount into l_capital_amount;
24832            CLOSE capital_amount;
24833 
24834            /*begin
24835              select nvl(capital_amount , 0)
24836              into   l_capital_amount
24837              from   okl_k_lines
24838              where id = x_asset_line_id;
24839            end;*/
24840            l_klev_rec.capital_amount := p_link_asset_amount + l_capital_amount;
24841 
24842            okl_contract_pub.update_contract_line
24843                            (p_api_version    => 1.0,
24844                             p_init_msg_list => OKL_API.G_FALSE,
24845                             x_return_status  => x_return_status,
24846                             x_msg_count      => x_msg_count,
24847                             x_msg_data       => x_msg_data,
24848                             p_clev_rec       => l_clev_rec,
24849                             p_klev_rec       => l_klev_rec,
24850                             x_clev_rec       => x_clev_rec,
24851                             x_klev_rec       => x_klev_rec);
24852            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
24853              RAISE OKL_API.G_EXCEPTION_ERROR;
24854            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
24855              RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
24856            END IF;
24857 
24858          END IF; -- capitalized fee
24859 
24860       -- Bug 4190051 Finish
24861 
24862       END IF; -- p_asset_number IS NOT NULL
24863 
24864       IF (p_line_type = 'FEE') THEN
24865          x_inv_item_id_prev := x_stream_type_id; -- to keep login in-line with SERVICE and USAGE line
24866       ELSIF (p_line_type = 'USAGE') THEN
24867          x_inv_item_id_prev := x_usage_item_id;
24868       ELSE
24869          x_inv_item_id_prev := x_inv_item_id; --copy current inventory item id to _prev
24870       END IF;
24871 
24872       RETURN;
24873 
24874    EXCEPTION
24875       WHEN service_failed THEN
24876          x_return_status := OKL_API.G_RET_STS_ERROR;
24877 
24878       WHEN OTHERS THEN
24879          debug_message(l_progress);
24880 
24881          okl_api.set_message(
24882                              G_APP_NAME,
24883                              G_UNEXPECTED_ERROR,
24884                              'OKL_SQLCODE',
24885                              SQLCODE,
24886                              'OKL_SQLERRM',
24887                              SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
24888                             );
24889          x_return_status := OKL_API.G_RET_STS_ERROR;
24890 
24891    END process_other_line;
24892 
24893 ------------------------------------------------------------------------------
24894 -- PROCEDURE get_qcl_id
24895 -- It returns qcl_id for QA checker to run
24896 -- Calls:
24897 -- Called By:
24898 ------------------------------------------------------------------------------
24899 
24900    PROCEDURE get_qcl_id(
24901                         x_return_status OUT NOCOPY VARCHAR2,
24902                         p_qcl_name      IN  VARCHAR2,
24903                         x_qcl_id        OUT NOCOPY NUMBER) IS
24904 
24905    CURSOR qcl_csr (p_qcL_name VARCHAR2) IS
24906    SELECT id
24907    FROM   okc_qa_check_lists_v
24908    WHERE  name = p_qcl_name;
24909 
24910    l_id   NUMBER;
24911 
24912    BEGIN
24913 
24914       x_return_status := OKL_API.G_RET_STS_SUCCESS;
24915 
24916       OPEN qcl_csr(p_qcl_name);
24917       FETCH qcl_csr INTO l_id;
24918       CLOSE qcl_csr;
24919 
24920       x_qcl_id := l_id;
24921 
24922    END get_qcl_id;
24923 
24924 ------------------------------------------------------------------------------
24925 -- PROCEDURE validate_credit_line
24926 -- It validates credit line against customer and customer account of the
24927 -- contract to be imported
24928 -- Calls:
24929 -- Called By:
24930 ------------------------------------------------------------------------------
24931    PROCEDURE validate_credit_line(
24932                               x_return_status           OUT NOCOPY VARCHAR2,
24933                               x_msg_count               OUT NOCOPY NUMBER,
24934                               x_msg_data                OUT NOCOPY VARCHAR2,
24935                               p_contract_number         IN  OKC_K_HEADERS_V.CONTRACT_NUMBER%TYPE,
24936                               p_template_id             IN  NUMBER,
24937                               p_credit_line_id          IN  NUMBER,
24938                               p_customer_id             IN  OKL_HEADER_INTERFACE.CUSTOMER_ID%TYPE,
24939                               p_customer_number         IN  OKL_HEADER_INTERFACE.CUSTOMER_NUMBER%TYPE,
24940                               p_customer_account_id     IN  OKL_HEADER_INTERFACE.CUSTOMER_ACCOUNT_ID%TYPE,
24941                               p_customer_account_number IN  OKL_HEADER_INTERFACE.CUSTOMER_ACCOUNT_NUMBER%TYPE,
24942                               p_start_date              IN  OKL_HEADER_INTERFACE.START_DATE%TYPE,
24943                               p_template_start_date     IN  OKL_HEADER_INTERFACE.START_DATE%TYPE
24944                              ) IS
24945 
24946    CURSOR customer_csr (p_customer_number OKX_PARTIES_V.PARTY_NUMBER%TYPE,
24947                         p_customer_id     OKX_PARTIES_V.ID1%TYPE) IS
24948    SELECT id1
24949    FROM   okx_parties_v
24950    WHERE  ((party_number = p_customer_number
24951             AND
24952             p_customer_number IS NOT NULL
24953            )
24954            OR
24955            (id1          = p_customer_id
24956             AND
24957             p_customer_id IS NOT NULL
24958            )
24959           );
24960 
24961    CURSOR temp_st_dt_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
24962    SELECT start_date
24963    FROM   okc_k_headers_v
24964    WHERE  id = p_chr_id;
24965 
24966    CURSOR temp_cust_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
24967    --Fixed Bug # 5484903
24968    SELECT object1_id1
24969    FROM   okc_k_party_roles_b
24970    WHERE  dnz_chr_id  = p_chr_id
24971       AND    chr_id          = dnz_chr_id
24972       AND    jtot_object1_code = 'OKX_PARTY'
24973       AND    rle_code          = 'LESSEE' ;
24974 
24975    CURSOR temp_cust_acc_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
24976    SELECT cust_acct_id
24977    FROM   okc_k_headers_b
24978    WHERE  id = p_chr_id;
24979 
24980    CURSOR credit_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE,
24981                       p_main_start_date OKC_K_HEADERS_V.START_DATE%TYPE) IS
24982    SELECT 'Y'
24983    FROM   okc_k_headers_v
24984    WHERE  id       = p_chr_id
24985    AND    end_date >= p_main_start_date;
24986 
24987    l_customer_id                OKX_PARTIES_V.ID1%TYPE;
24988    l_customer_account_id        OKX_CUSTOMER_ACCOUNTS_V.ID1%TYPE;
24989    l_credit_customer_id         OKX_PARTIES_V.ID1%TYPE;
24990    l_credit_customer_account_id OKX_CUSTOMER_ACCOUNTS_V.ID1%TYPE;
24991    l_rule_count                 NUMBER;
24992    l_rulv_tbl                   rulv_tbl_type;
24993    l_ok                         VARCHAR2(1) := '?';
24994 
24995    credit_line_failed EXCEPTION;
24996 
24997    BEGIN
24998 
24999       x_return_status := OKL_API.G_RET_STS_SUCCESS;
25000 /* 4414408
25001       IF (p_customer_id IS NULL
25002           AND
25003           p_customer_number IS NULL) THEN
25004 
25005           -- get from template
25006 
25007           l_customer_id := NULL;
25008           OPEN temp_cust_csr(p_template_id);
25009           FETCH temp_cust_csr INTO l_customer_id;
25010           CLOSE temp_cust_csr;
25011 
25012       ELSE
25013           l_customer_id := NULL;
25014           OPEN customer_csr (p_customer_number,
25015                              p_customer_id);
25016           FETCH customer_csr INTO l_customer_id;
25017           CLOSE customer_csr;
25018 
25019       END IF;
25020 */
25021       l_customer_id := p_customer_id;
25022       debug_message('----->customer: '||l_customer_id);
25023 
25024 /* 4414408
25025       IF (p_customer_account_id IS NULL
25026           AND
25027           p_customer_account_number IS NULL) THEN
25028 
25029           -- get from template
25030 
25031           l_rule_count          := 0;
25032           l_customer_account_id := NULL;
25033 
25034 -- Rule Migration
25035 --          get_contract_rules(
25036 --                             x_return_status  => x_return_status,
25037 --                             x_msg_count      => x_msg_count,
25038 --                             x_msg_data       => x_msg_data,
25039 --                             p_chr_id         => p_template_id,
25040 --                             p_cle_id         => NULL,
25041 --                             p_rgd_code       => 'LACAN',
25042 --                             p_rule_code      => 'CAN',
25043 --                             x_rulv_tbl       => l_rulv_tbl,
25044 --                             x_rule_count     => l_rule_count
25045 --                            );
25046 
25047 --          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
25048 --             RAISE credit_line_failed;
25049 --          END IF;
25050 
25051 --          IF (l_rule_count > 0) THEN
25052 --             l_customer_account_id := TO_NUMBER(l_rulv_tbl(1).object1_id1);
25053 --          END IF;
25054 
25055 
25056       ELSE
25057           get_customer_account_id(
25058                            x_return_status           => x_return_status,
25059                            x_msg_count               => x_msg_count,
25060                            x_msg_data                => x_msg_data,
25061                            p_contract_number         => p_contract_number,
25062                            p_customer_account_id     => p_customer_account_id,
25063                            p_customer_account_number => p_customer_account_number,
25064                            x_customer_account_id     => l_customer_account_id
25065                           );
25066 
25067           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
25068              x_return_status := OKL_API.G_RET_STS_ERROR;
25069              RAISE credit_line_failed;
25070           END IF;
25071       END IF;
25072 */
25073       l_customer_account_id := p_customer_account_id;
25074       debug_message('----->customer Acc: '||l_customer_account_id);
25075       --
25076       -- get customer_id and customer_account_id
25077       -- for credit line contract
25078       --
25079 
25080       l_credit_customer_id := NULL;
25081       OPEN temp_cust_csr(p_credit_line_id);
25082       FETCH temp_cust_csr INTO l_credit_customer_id;
25083       CLOSE temp_cust_csr;
25084 
25085       l_rule_count          := 0;
25086       l_credit_customer_account_id := NULL;
25087 
25088       OPEN temp_cust_acc_csr (p_credit_line_id);
25089       FETCH temp_cust_acc_csr INTO l_credit_customer_account_id;
25090       CLOSE temp_cust_acc_csr;
25091 
25092 /* Rule migration
25093       get_contract_rules(
25094                          x_return_status  => x_return_status,
25095                          x_msg_count      => x_msg_count,
25096                          x_msg_data       => x_msg_data,
25097                          p_chr_id         => p_credit_line_id,
25098                          p_cle_id         => NULL,
25099                          p_rgd_code       => 'LACAN',
25100                          p_rule_code      => 'CAN',
25101                          x_rulv_tbl       => l_rulv_tbl,
25102                          x_rule_count     => l_rule_count
25103                         );
25104 
25105       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
25106          RAISE credit_line_failed;
25107       END IF;
25108 
25109       IF (l_rule_count > 0) THEN
25110          l_credit_customer_account_id := TO_NUMBER(l_rulv_tbl(1).object1_id1);
25111       END IF;
25112 */
25113 
25114       debug_message('----->Credit customer: '||l_credit_customer_id||', '||l_credit_customer_account_id);
25115 
25116       IF (l_customer_id <> NVL(l_credit_customer_id, -1)
25117           OR
25118           l_customer_account_id <> NVL(l_credit_customer_account_id, -1)) THEN
25119           RAISE credit_line_failed;
25120       END IF;
25121 
25122       -- check for end_date on credit line contract
25123       l_ok := '?';
25124       OPEN credit_csr (p_credit_line_id,
25125                        nvl(p_start_date,p_template_start_date));
25126       FETCH credit_csr INTO l_ok;
25127       CLOSE credit_csr;
25128 
25129       debug_message('Flag: '||l_ok);
25130 
25131       IF (l_ok <> 'Y') THEN
25132           RAISE credit_line_failed;
25133       END IF;
25134 
25135    EXCEPTION
25136       WHEN credit_line_failed THEN
25137          x_return_status := OKL_API.G_RET_STS_ERROR;
25138    END validate_credit_line;
25139 
25140 ------------------------------------------------------------------------------
25141 -- PROCEDURE contract_after_yield
25142 -- Call this process after SuperTrump returns with yield. Call this process
25143 -- from OKL_LA_STREAM_PVT.UPDATE_CONTRACT_YIELD for every contract
25144 -- Calls:
25145 -- Called By:
25146 ------------------------------------------------------------------------------
25147    PROCEDURE contract_after_yield(
25148                                   p_api_version   IN NUMBER,
25149                                   p_init_msg_list IN VARCHAR2,
25150                                   x_return_status OUT NOCOPY VARCHAR2,
25151                                   x_msg_count     OUT NOCOPY NUMBER,
25152                                   x_msg_data      OUT NOCOPY VARCHAR2,
25153                                   p_chr_id        IN  OKC_K_HEADERS_V.ID%TYPE
25154                                  ) IS
25155 
25156    l_api_name    VARCHAR2(35)    := 'contract_after_yield';
25157    l_proc_name   VARCHAR2(35)    := 'CONTRACT_AFTER_YIELD';
25158    l_api_version NUMBER          := 1.0;
25159 
25160    after_yield_failed EXCEPTION;
25161 
25162    CURSOR contract_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
25163    SELECT contract_number,
25164           orig_system_reference1
25165    FROM   okc_k_headers_v
25166    WHERE  id                      = p_chr_id
25167    AND    orig_system_source_code = 'OKL_IMPORT';
25168 
25169    CURSOR stage_csr (p_contract_number OKC_K_HEADERS_V.CONTRACT_NUMBER%TYPE) IS
25170    SELECT import_request_stage
25171    FROM   okl_header_interface
25172    WHERE  contract_number = p_contract_number
25173    AND    status          = 'INTERFACED';
25174 
25175    l_contract_number OKC_K_HEADERS_V.CONTRACT_NUMBER%TYPE;
25176    l_orig_contract   OKC_K_HEADERS_V.ORIG_SYSTEM_REFERENCE1%TYPE;
25177    l_import_stage    OKC_K_HEADERS_V.STS_CODE%TYPE;
25178    l_process_status  VARCHAR2(1);
25179    BEGIN
25180 
25181      x_return_status := OKL_API.G_RET_STS_SUCCESS;
25182      debug_message(l_proc_name);
25183      x_return_status := OKL_API.START_ACTIVITY(
25184                                                 p_api_name      => l_api_name,
25185                                                 p_pkg_name      => G_PKG_NAME,
25186                                                 p_init_msg_list => p_init_msg_list,
25187                                                 l_api_version   => l_api_version,
25188                                                 p_api_version   => p_api_version,
25189                                                 p_api_type      => G_API_TYPE,
25190                                                 x_return_status => x_return_status);
25191 
25192       -- check if activity started successfully
25193      IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
25194        raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
25195      ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
25196        raise OKL_API.G_EXCEPTION_ERROR;
25197      END IF;
25198 
25199      l_contract_number := '?';
25200      OPEN contract_csr (p_chr_id);
25201      FETCH contract_csr INTO l_contract_number,
25202                              l_orig_contract;
25203      IF contract_csr%NOTFOUND THEN
25204         RAISE after_yield_failed;
25205      END IF;
25206      CLOSE contract_csr;
25207 
25208      l_import_stage := '?';
25209      IF (l_contract_number <> '?') THEN
25210        OPEN stage_csr(l_contract_number);
25211        FETCH stage_csr INTO l_import_stage;
25212        CLOSE stage_csr;
25213      END IF;
25214 
25215      IF (l_import_stage IN ('COMPLETE','APPROVED', 'BOOKED')) THEN
25216 
25217         IF (l_import_stage = 'COMPLETE') THEN
25218            --
25219            -- Generate Journal Entries
25220            --
25221            debug_message('Calling : okl_contract_book_pub.generate_journal_entries');
25222            okl_contract_book_pub.generate_journal_entries(
25223                        p_api_version      => p_api_version,
25224                        p_init_msg_list    => p_init_msg_list,
25225                        p_commit           => Okl_Api.G_FALSE,
25226                        p_contract_id      => p_chr_id,
25227                        p_transaction_type => 'Booking',
25228                        p_draft_yn         => Okc_Api.G_TRUE,
25229                        x_return_status    => x_return_status,
25230                        x_msg_count        => x_msg_count,
25231                        x_msg_data         => x_msg_data
25232                      );
25233 /*
25234  --
25235  Do not want to handle and throw exception
25236  which might cause Yield Generation to go for toss
25237  --
25238 */
25239            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
25240               RAISE after_yield_failed;
25241            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
25242               RAISE after_yield_failed;
25243            END IF;
25244 
25245        ELSIF (l_import_stage = 'APPROVED') THEN
25246            --
25247            -- Generate Journal Entries
25248            --
25249            debug_message('Calling : okl_contract_book_pub.generate_journal_entries');
25250            okl_contract_book_pub.generate_journal_entries(
25251                        p_api_version      => p_api_version,
25252                        p_init_msg_list    => p_init_msg_list,
25253                        p_commit           => Okl_Api.G_FALSE,
25254                        p_contract_id      => p_chr_id,
25255                        p_transaction_type => 'Booking',
25256                        p_draft_yn         => Okc_Api.G_TRUE,
25257                        x_return_status    => x_return_status,
25258                        x_msg_count        => x_msg_count,
25259                        x_msg_data         => x_msg_data
25260                      );
25261 
25262            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
25263               RAISE after_yield_failed;
25264            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
25265               RAISE after_yield_failed;
25266            END IF;
25267 
25268            --Bug# 2566822 : AME/WF integration in approval process
25269            --debug_message('Calling : okl_contract_book_pub.submit_for_approval');
25270            debug_message('Calling : okl_contract_book_pvt.approve_contract');
25271            --
25272            -- Submit for Approval
25273            --
25274            --Bug# 2566822 : AME/WF integration in approval process
25275            --okl_contract_book_pub.submit_for_approval(
25276 
25277            -- Bug# 12967955: When importing contracts in APPROVED status, submit
25278            -- contract for approval if workflow/AME profile is enabled. After approval
25279            -- automatically activate the contract
25280            --okl_contract_book_pvt.approve_contract(
25281            okl_contract_book_pvt.approve_activate_contract(
25282              p_api_version     => p_api_version,
25283              p_init_msg_list   => p_init_msg_list,
25284              x_return_status   => x_return_status,
25285              x_msg_count       => x_msg_count,
25286              x_msg_data        => x_msg_data,
25287              p_chr_id          => p_chr_id,
25288              x_process_status  => l_process_status
25289             );
25290 
25291            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
25292               RAISE after_yield_failed;
25293            ELSIF   (x_return_status = OKL_API.G_RET_STS_ERROR)
25294                 OR (l_process_status = OKL_API.G_RET_STS_ERROR) THEN
25295               RAISE after_yield_failed;
25296            END IF;
25297 
25298        ELSIF (l_import_stage = 'BOOKED') THEN
25299            --
25300            -- Generate Journal Entries
25301            --
25302            debug_message('Calling : okl_contract_book_pub.generate_journal_entries');
25303 
25304            okl_contract_book_pub.generate_journal_entries(
25305                        p_api_version      => p_api_version,
25306                        p_init_msg_list    => p_init_msg_list,
25307                        p_commit           => Okl_Api.G_FALSE,
25308                        p_contract_id      => p_chr_id,
25309                        p_transaction_type => 'Booking',
25310                        p_draft_yn         => Okc_Api.G_TRUE,
25311                        x_return_status    => x_return_status,
25312                        x_msg_count        => x_msg_count,
25313                        x_msg_data         => x_msg_data
25314                      );
25315 
25316            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
25317               RAISE after_yield_failed;
25318            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
25319               RAISE after_yield_failed;
25320            END IF;
25321 
25322 
25323            --Bug# 2566822 : AME/WF integration in approval process
25324            --debug_message('Calling : okl_contract_book_pub.submit_for_approval');
25325            debug_message('Calling : okl_contract_book_pvt.approve_contract');
25326            --
25327            -- Submit for Approval
25328            --
25329            --Bug# 2566822 : AME/WF integration in approval process
25330            --okl_contract_book_pub.submit_for_approval(
25331            okl_contract_book_pvt.approve_contract(
25332              p_api_version     => p_api_version,
25333              p_init_msg_list   => p_init_msg_list,
25334              x_return_status   => x_return_status,
25335              x_msg_count       => x_msg_count,
25336              x_msg_data        => x_msg_data,
25337              p_chr_id          => p_chr_id
25338             );
25339 
25340            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
25341               RAISE after_yield_failed;
25342            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
25343               RAISE after_yield_failed;
25344            END IF;
25345 
25346 
25347            debug_message('Calling : okl_contract_book_pub.activate_contract');
25348            okl_contract_book_pub.activate_contract(
25349              p_api_version     => p_api_version,
25350              p_init_msg_list   => p_init_msg_list,
25351              x_return_status   => x_return_status,
25352              x_msg_count       => x_msg_count,
25353              x_msg_data        => x_msg_data,
25354              p_chr_id          => p_chr_id
25355             );
25356 
25357            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
25358               RAISE after_yield_failed;
25359            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
25360               RAISE after_yield_failed;
25361            END IF;
25362 
25363            -- R12B Authoring OA Migration
25364            -- Update the status of the Submit Contract task to Complete
25365            OKL_BOOK_CONTROLLER_PVT.update_book_controller_trx(
25366              p_api_version        => p_api_version,
25367              p_init_msg_list      => p_init_msg_list,
25368              x_return_status      => x_return_status,
25369              x_msg_count          => x_msg_count,
25370              x_msg_data           => x_msg_data,
25371              p_khr_id             => p_chr_id ,
25372              p_prog_short_name    => OKL_BOOK_CONTROLLER_PVT.G_SUBMIT_CONTRACT,
25373              p_progress_status    => OKL_BOOK_CONTROLLER_PVT.G_PROG_STS_COMPLETE);
25374 
25375            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
25376              RAISE after_yield_failed;
25377            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
25378              RAISE after_yield_failed;
25379            END IF;
25380 
25381        END IF; -- import_stage
25382 
25383      END IF;
25384 
25385      Update_Interface_Status(
25386                              p_contract_number     => l_orig_contract,
25387                              p_new_contract_number => l_contract_number,
25388                              p_status              => 'FINAL',
25389                              x_return_status       => x_return_status
25390                             );
25391 
25392      IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
25393         RAISE after_yield_failed;
25394      END IF;
25395 
25396      OKL_API.END_ACTIVITY(x_msg_count   => x_msg_count,
25397                           x_msg_data    => x_msg_data);
25398 
25399 
25400      RETURN;
25401 
25402    EXCEPTION
25403        when after_yield_failed THEN
25404           IF contract_csr%ISOPEN THEN
25405               CLOSE contract_csr;
25406           END IF;
25407           x_return_status := OKL_API.G_RET_STS_SUCCESS; -- to allow Yield process to complete SUCCESSFULLY
25408 
25409        when OKL_API.G_EXCEPTION_ERROR then
25410           x_return_status := OKL_API.HANDLE_EXCEPTIONS(
25411                          p_api_name  => l_api_name,
25412                          p_pkg_name  => G_PKG_NAME,
25413                          p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
25414                          x_msg_count => x_msg_count,
25415                          x_msg_data  => x_msg_data,
25416                          p_api_type  => G_API_TYPE);
25417 
25418 
25419        when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
25420           x_return_status := OKL_API.HANDLE_EXCEPTIONS(
25421                          p_api_name  => l_api_name,
25422                          p_pkg_name  => G_PKG_NAME,
25423                          p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
25424                          x_msg_count => x_msg_count,
25425                          x_msg_data  => x_msg_data,
25426                          p_api_type  => G_API_TYPE);
25427 
25428        when OTHERS then
25429           x_return_status := OKL_API.HANDLE_EXCEPTIONS(
25430                          p_api_name  => l_api_name,
25431                          p_pkg_name  => G_PKG_NAME,
25432                          p_exc_name  => 'OTHERS',
25433                          x_msg_count => x_msg_count,
25434                          x_msg_data  => x_msg_data,
25435                          p_api_type  => G_API_TYPE);
25436 
25437    END contract_after_yield;
25438 
25439 ------------------------------------------------------------------------------
25440 -- PROCEDURE contract_further_process
25441 -- It process contract beyond status 'NEW'. It calls QA Checker and finally submits
25442 -- request to generate streams and
25443 -- stacks Error, if any, and returns ERROR status to calling process.
25444 -- Calls:
25445 -- Called By:
25446 --  process_record
25447 ------------------------------------------------------------------------------
25448   PROCEDURE contract_further_process(
25449                                      p_init_msg_list    IN  VARCHAR2,
25450                                      x_return_status    OUT NOCOPY VARCHAR2,
25451                                      x_msg_count        OUT NOCOPY NUMBER,
25452                                      x_msg_data         OUT NOCOPY VARCHAR2,
25453                                      p_chr_id           IN  OKC_K_HEADERS_V.ID%TYPE,
25454                                      p_import_stage     IN  VARCHAR2
25455                                     ) IS
25456   l_api_name             VARCHAR2(35)    := 'create_rebook_contract';
25457   l_proc_name            VARCHAR2(35)    := 'CREATE_REBOOK_CONTRACT';
25458   l_api_version          CONSTANT NUMBER := 1;
25459   l_qa_check_status      VARCHAR2(1)     := 'S';
25460 
25461   l_qcl_id               NUMBER;
25462   l_msg_tbl              Okl_Qa_Check_Pub.msg_tbl_type;
25463   x_trx_number           NUMBER;
25464   x_trx_status           VARCHAR2(100);
25465 
25466   -- R12B Authoring OA Migration
25467   l_upfront_tax_status   VARCHAR2(1)     := 'S';
25468 
25469   BEGIN
25470 
25471      x_return_status := OKL_API.G_RET_STS_SUCCESS;
25472 
25473      IF (p_import_stage IN ('PASSED','COMPLETE','APPROVED','BOOKED')) THEN
25474 /* 4414408
25475          get_qcl_id(
25476                     x_return_status => x_return_status,
25477                     p_qcl_name      => 'OKL LA QA CHECK LIST',
25478                     x_qcl_id        => l_qcl_id);
25479 
25480          debug_message('ID : '||l_qcl_id);
25481          IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
25482 */
25483             --fnd_file.put_line(fnd_file.output, 'Running QA Checker...');
25484             debug_message('ID : '||g_qcl_id);
25485             write_to_log('Running QA Checker...');
25486             okl_contract_book_pub.execute_qa_check_list(
25487                                                         p_api_version    => 1.0,
25488                                                         p_init_msg_list  => OKL_API.G_FALSE,
25489                                                         x_return_status  => x_return_status,
25490                                                         x_msg_count      => x_msg_count,
25491                                                         x_msg_data       => x_msg_data,
25492                                                         p_qcl_id         => g_qcl_id, -- 4414408
25493                                                         p_chr_id         => p_chr_id,
25494                                                         x_msg_tbl        => l_msg_tbl
25495                                                        );
25496 
25497             FOR i IN 1..l_msg_tbl.LAST
25498             LOOP
25499                IF (l_msg_tbl(i).error_status <> 'S') THEN
25500 
25501                   write_to_log('Name        : '||l_msg_tbl(i).name);
25502                   write_to_log('Description : '||l_msg_tbl(i).description);
25503                   write_to_log('Error Status: '||l_msg_tbl(i).error_status);
25504                   write_to_log('Data        : '||l_msg_tbl(i).data);
25505 
25506                END IF;
25507 
25508                IF (l_msg_tbl(i).error_status = 'E') THEN
25509                   l_qa_check_status := 'E';
25510                END IF;
25511             END LOOP;
25512 
25513             debug_message('After 1st Qa Checker '|| l_qa_check_status);
25514             commit;
25515 
25516 --         END IF; -- Success
25517 
25518            -- R12B Authoring OA Migration
25519            -- Call API to calculate upfront tax if QA check is complete
25520            IF  (l_qa_check_status = 'S') THEN
25521 
25522              OKL_CONTRACT_BOOK_PVT.calculate_upfront_tax(
25523                p_api_version      =>  1.0,
25524                p_init_msg_list    =>  OKL_API.G_FALSE,
25525                x_return_status    =>  x_return_status,
25526                x_msg_count        =>  x_msg_count,
25527                x_msg_data         =>  x_msg_data,
25528                p_chr_id           =>  p_chr_id,
25529                x_process_status   =>  l_upfront_tax_status);
25530 
25531              IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
25532                commit;
25533              ELSE
25534                report_error(x_msg_count, x_msg_data);
25535                rollback;
25536                l_upfront_tax_status := 'E';
25537              END IF;
25538 
25539            END IF;
25540 
25541       END IF; -- Import Stage
25542 
25543       debug_message('QA Error Status: '||l_qa_check_status);
25544 
25545       IF (p_import_stage IN ('COMPLETE', 'APPROVED', 'BOOKED')) THEN
25546             -- R12B Authoring OA Migration
25547             -- If Upfront Tax is complete, then call API to generate streams
25548             IF (l_upfront_tax_status = 'S') THEN
25549             --IF (l_qa_check_status = 'S') THEN
25550 
25551                --fnd_file.put_line(fnd_file.output, 'Submitting Request to generate Streams....');
25552                write_to_log('Submitting Request to generate Streams....');
25553 
25554                --OKL_GENERATE_STREAMS_PUB.GENERATE_STREAMS(
25555                OKL_LA_STREAM_PUB.GEN_INTR_EXTR_STREAM (
25556                                                          p_api_version         => 1.0,
25557                                                          p_init_msg_list       => OKL_API.G_FALSE,
25558                                                          p_khr_id              => p_chr_id,
25559                                                          p_generation_ctx_code => 'AUTH',
25560                                                          x_trx_number          => x_trx_number,
25561                                                          x_trx_status          => x_trx_status,
25562                                                          x_return_status       => x_return_status,
25563                                                          x_msg_count           => x_msg_count,
25564                                                          x_msg_data            => x_msg_data
25565                                                         );
25566 
25567                IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
25568                  commit; -- required for stream generation
25569                  --fnd_file.put_line(fnd_file.output,'Req ID: '||x_trx_number);
25570                  write_to_log('Req ID: '||x_trx_number);
25571                ELSE
25572                  report_error(
25573                               x_msg_count, x_msg_data);
25574                  rollback;
25575                END IF;
25576             END IF; -- upfront tax status
25577         END IF; -- import_stage
25578 
25579     RETURN;
25580 
25581   EXCEPTION
25582     WHEN OTHERS THEN
25583 
25584       okl_api.set_message(
25585                           G_APP_NAME,
25586                           G_UNEXPECTED_ERROR,
25587                           'OKL_SQLCODE',
25588                           SQLCODE,
25589                           'OKL_SQLERRM',
25590                           SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
25591                          );
25592       x_return_status := OKL_API.G_RET_STS_ERROR;
25593 
25594       report_error (
25595                     x_msg_count => x_msg_count,
25596                     x_msg_data  => x_msg_data
25597                    );
25598 
25599   END contract_further_process;
25600 
25601   PROCEDURE get_tal_id(
25602                        x_return_status OUT NOCOPY VARCHAR2,
25603                        p_fa_line_id    IN  NUMBER,
25604                        x_tal_id        OUT NOCOPY NUMBER
25605                       ) IS
25606 
25607   CURSOR tal_csr (p_id NUMBER) IS
25608   SELECT id
25609   FROM   okl_txl_assets_v
25610   WHERE  kle_id = p_id;
25611 
25612   tal_failed EXCEPTION;
25613   l_id   NUMBER;
25614 
25615   BEGIN
25616     x_return_status := OKL_API.G_RET_STS_SUCCESS;
25617     OPEN tal_csr(p_fa_line_id);
25618     FETCH tal_csr INTO l_id;
25619     IF tal_csr%NOTFOUND THEN
25620        RAISE tal_failed;
25621     END IF;
25622     CLOSE tal_csr;
25623     x_tal_id := l_id;
25624     RETURN;
25625   EXCEPTION
25626     WHEN tal_failed THEN
25627        IF tal_csr%ISOPEN THEN
25628          CLOSE tal_csr;
25629        END IF;
25630        okl_api.set_message(
25631                            G_APP_NAME,
25632                            G_OKL_TXD_ID
25633                           );
25634        x_return_status := OKL_API.G_RET_STS_ERROR;
25635   END get_tal_id;
25636 
25637 ------------------------------------------------------------------------------
25638 -- PROCEDURE populate_header_rec
25639 -- It checks template contract and interface data to populate final header record and
25640 -- stacks Error, if any, and returns ERROR status to calling process.
25641 -- Calls:
25642 --
25643 -- Called By:
25644 --
25645 ------------------------------------------------------------------------------
25646   PROCEDURE populate_header_rec(
25647                           x_return_status  OUT NOCOPY VARCHAR2,
25648                           x_msg_count      OUT NOCOPY NUMBER,
25649                           x_msg_data       OUT NOCOPY VARCHAR2,
25650                           p_temp_header    IN  template_h_rec_type,
25651                           p_intf_header    IN  intf_h_rec_type,
25652                           x_chrv_rec       OUT NOCOPY chrv_rec_type,
25653                           x_khrv_rec       OUT NOCOPY khrv_rec_type
25654                          ) IS
25655   l_proc_name            VARCHAR2(35)  := 'POPULATE_HEADER_REC';
25656 --  l_qcl_id               NUMBER;
25657   x_program_agreement_id OKC_K_HEADERS_V.ID%TYPE;
25658   x_product_id           NUMBER;
25659 
25660     CURSOR customer_csr (p_customer_number OKX_PARTIES_V.PARTY_NUMBER%TYPE,
25661                          p_customer_id     OKX_PARTIES_V.ID1%TYPE) IS
25662     SELECT id1
25663     FROM   okx_parties_v
25664     WHERE  ((party_number = p_customer_number
25665              AND
25666              p_customer_number IS NOT NULL
25667             )
25668             OR
25669             (id1          = p_customer_id
25670              AND
25671              p_customer_id IS NOT NULL
25672             )
25673            );
25674 
25675   l_id1                  OKX_PARTIES_V.ID1%TYPE;
25676   x_customer_account_id  NUMBER;
25677   x_bill_to_address_id   NUMBER;
25678   pop_header_failed      EXCEPTION;
25679 
25680   BEGIN
25681 
25682      -- Bug 4350579 start
25683      -- Validation from check
25684      --
25685      x_return_status := check_header_literal (
25686                            p_contract_number             => p_intf_header.contract_number_old,
25687                            p_template_id                 => p_temp_header.id,
25688                            p_application_code            => p_intf_header.application_code,
25689                            p_contract_category           => NVL(p_intf_header.contract_category,p_temp_header.scs_code),
25690                            p_import_request_stage        => p_intf_header.import_request_stage,
25691                            p_converted_account           => NVL(p_intf_header.converted_account,
25692                                                                 p_temp_header.converted_account_yn),
25693                            p_security_deposit_hold_flag  => p_intf_header.security_deposit_hold_flag,
25694                            p_security_deposit_net_flag   => p_intf_header.security_deposit_net_flag,
25695                            p_review_invoice_flag         => p_intf_header.review_invoice_flag,
25696                            p_date_signed                 => NVL(p_intf_header.date_signed,p_temp_header.date_signed),
25697                            p_start_date                  => NVL(p_intf_header.start_date,p_temp_header.start_date),
25698                            p_date_approved               => NVL(p_intf_header.date_approved,p_temp_header.date_approved),
25699                            p_term                        => NVL(p_intf_header.term,p_temp_header.term_duration),
25700                            p_accepted_date               => NVL(p_intf_header.accepted_date,p_temp_header.accepted_date),
25701                            p_deal_type_code              => NVL(p_intf_header.deal_type_code,p_temp_header.deal_type),
25702                            p_bill_to_address             => p_intf_header.bill_to_address,
25703                            p_bill_to_address_id          => p_intf_header.bill_to_address_id,
25704                            p_authoring_org_id            => NVL(p_intf_header.authoring_org_id,
25705                                                                 p_temp_header.authoring_org_id),
25706 			   p_inv_organization_id         => NVL(p_intf_header.inventory_organization_id,
25707 			                                        p_temp_header.inv_organization_id),
25708                            p_customer_account_number     => p_intf_header.customer_account_number,
25709                            p_customer_account_id         => p_intf_header.customer_account_id,
25710                            p_eot_purchase_opt_type       => p_intf_header.eot_purchase_opt_type,
25711                            p_expected_delivery_date      => p_intf_header.expected_delivery_date,
25712                            p_currency_code               => NVL(p_intf_header.currency_code,
25713                                                                 p_temp_header.currency_code)
25714                           );
25715 
25716      IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
25717         x_return_status := OKL_API.G_RET_STS_ERROR;
25718         RAISE pop_header_failed;
25719      END IF;
25720 
25721 
25722      -- Bug 4350579 end
25723 
25724      x_chrv_rec.sts_code                := 'NEW';
25725      x_chrv_rec.scs_code                := NVL(p_intf_header.contract_category, p_temp_header.scs_code);
25726      x_chrv_rec.contract_number         := p_intf_header.contract_number;
25727      x_chrv_rec.currency_code           := NVL(p_intf_header.currency_code, p_temp_header.currency_code);
25728      x_chrv_rec.cust_po_number          := NVL(p_intf_header.customer_po_number, p_temp_header.cust_po_number);
25729      x_chrv_rec.short_description       := NVL(p_intf_header.contract_description, p_temp_header.short_description);
25730      x_chrv_rec.description             := NVL(p_intf_header.contract_description, p_temp_header.description);
25731      x_chrv_rec.date_approved           := NVL(p_intf_header.date_approved, p_temp_header.date_approved);
25732      x_chrv_rec.archived_yn             := 'N';
25733      x_chrv_rec.deleted_yn              := 'N';
25734      x_chrv_rec.cust_po_number_req_yn   := 'N';
25735      x_chrv_rec.pre_pay_req_yn          := 'N';
25736      x_chrv_rec.template_yn             := 'N';
25737      x_chrv_rec.chr_type                := 'CYA';
25738      x_chrv_rec.date_signed             := NVL(p_intf_header.date_signed, p_temp_header.date_signed);
25739      x_chrv_rec.start_date              := NVL(p_intf_header.start_date, NVL(p_temp_header.start_date, SYSDATE));
25740      -- Added by asahoo for Bug#5416376
25741      x_chrv_rec.end_date                := OKL_LLA_UTIL_PVT.calculate_end_date(nvl(x_chrv_rec.start_date, SYSDATE),
25742                                                       nvl(p_intf_header.term,NVL(p_temp_header.term_duration, 0)));
25743      x_chrv_rec.authoring_org_id        := NVL(p_intf_header.authoring_org_id, p_temp_header.authoring_org_id);
25744      x_chrv_rec.inv_organization_id     := NVL(p_intf_header.inventory_organization_id, p_temp_header.inv_organization_id);
25745      x_chrv_rec.buy_or_sell             := 'S';
25746      x_chrv_rec.issue_or_receive        := 'I';
25747      x_chrv_rec.orig_system_source_code := 'OKL_IMPORT'; -- p_intf_header.contract_source; Only one source for 1st release
25748      x_chrv_rec.orig_system_reference1  := p_intf_header.contract_number_old;
25749 
25750      -- Validated customer
25751      l_id1 := NULL;
25752      OPEN customer_csr (p_intf_header.customer_number,
25753                         p_intf_header.customer_id);
25754      FETCH customer_csr INTO l_id1;
25755      CLOSE customer_csr;
25756 
25757      IF (l_id1 IS NOT NULL) THEN
25758         g_customer_id := l_id1;
25759      ELSE
25760        okl_api.set_message(
25761                            G_APP_NAME,
25762                            G_INVALID_VALUE,
25763                            'CONTRACT_NUM',
25764                            p_intf_header.contract_number_old,
25765                            'COL_NAME',
25766                            'CUSTOMER_ID, NUMBER: ',
25767                            'COL_VALUE',
25768                            p_intf_header.customer_id||', '||p_intf_header.customer_number
25769                           );
25770 
25771        x_return_status := OKL_API.G_RET_STS_ERROR;
25772        RAISE pop_header_failed;
25773      END IF;
25774 
25775      x_customer_account_id := NULL;
25776      IF (p_intf_header.customer_account_id IS NOT NULL
25777          OR
25778          p_intf_header.customer_account_number IS NOT NULL) THEN
25779           get_customer_account_id(
25780                                   x_return_status           => x_return_status,
25781                                   x_msg_count               => x_msg_count,
25782                                   x_msg_data                => x_msg_data,
25783                                   p_contract_number         => p_intf_header.contract_number_old,
25784                                   p_customer_id             => g_customer_id,
25785                                   p_customer_account_id     => p_intf_header.customer_account_id,
25786                                   p_customer_account_number => p_intf_header.customer_account_number,
25787                                   x_customer_account_id     => x_customer_account_id
25788                                  );
25789           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
25790              x_return_status := OKL_API.G_RET_STS_ERROR;
25791              RAISE pop_header_failed;
25792           END IF;
25793      ELSIF (p_intf_header.template_number IS NOT NULL) THEN
25794          x_customer_account_id := p_temp_header.cust_acct_id;
25795      END IF;
25796 
25797      IF (x_customer_account_id IS NULL
25798          AND
25799          p_intf_header.import_request_stage <> 'NEW') THEN
25800         okl_api.set_message(
25801                             G_APP_NAME,
25802                             G_MISSING_VALUE_FOR_STAGE,
25803                             'CONTRACT_NUM',
25804                             p_intf_header.contract_number_old,
25805                             'COL_NAME',
25806                             'CUSTOMER_ACCOUNT',
25807                             'STAGE',
25808                             p_intf_header.import_request_stage
25809                            );
25810        x_return_status := OKL_API.G_RET_STS_ERROR;
25811        RAISE pop_header_failed;
25812      END IF;
25813 
25814      x_chrv_rec.cust_acct_id            := x_customer_account_id;
25815      g_customer_account_id              := x_customer_account_id;
25816 
25817      x_bill_to_address_id := NULL;
25818      IF (p_intf_header.bill_to_address_id IS NOT NULL
25819          OR
25820          p_intf_header.bill_to_address IS NOT NULL) THEN
25821           get_bill_to_address_id(
25822                              x_return_status           => x_return_status,
25823                              x_msg_count               => x_msg_count,
25824                              x_msg_data                => x_msg_data,
25825                              p_contract_number         => p_intf_header.contract_number,
25826                              p_auth_org_id             => p_intf_header.authoring_org_id,
25827                              p_bill_to_address_id      => p_intf_header.bill_to_address_id,
25828                              p_bill_to_address         => p_intf_header.bill_to_address,
25829                              p_customer_account_id     => x_customer_account_id,
25830                              x_bill_to_address_id      => x_bill_to_address_id
25831                             );
25832           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
25833              x_return_status := OKL_API.G_RET_STS_ERROR;
25834              RAISE pop_header_failed;
25835           END IF;
25836 
25837      ELSIF (p_intf_header.template_number IS NOT NULL) THEN
25838          x_bill_to_address_id := p_temp_header.bill_to_site_use_id;
25839      END IF;
25840 
25841      IF (x_bill_to_address_id IS NULL
25842          AND
25843          p_intf_header.import_request_stage <> 'NEW') THEN
25844         okl_api.set_message(
25845                             G_APP_NAME,
25846                             G_MISSING_VALUE_FOR_STAGE,
25847                             'CONTRACT_NUM',
25848                             p_intf_header.contract_number_old,
25849                             'COL_NAME',
25850                             'BILL_TO_ADDRESS',
25851                             'STAGE',
25852                             p_intf_header.import_request_stage
25853                            );
25854          x_return_status := OKL_API.G_RET_STS_ERROR;
25855          RAISE pop_header_failed;
25856      END IF;
25857 
25858      g_bill_to_address_id               := x_bill_to_address_id;
25859      x_chrv_rec.bill_to_site_use_id     := x_bill_to_address_id;
25860 
25861 /* 4414408
25862      get_qcl_id(
25863                  x_return_status => x_return_status,
25864                  p_qcl_name      => 'OKL LA QA CHECK LIST',
25865                  x_qcl_id        => l_qcl_id
25866                 );
25867 */
25868 
25869      x_chrv_rec.qcl_id                  := g_qcl_id;
25870 
25871      --
25872      -- Bug 3990456
25873      -- For template import populate
25874      -- orig_system_id1 and template_used columns
25875      --
25876      IF (p_temp_header.id IS NOT NULL) THEN
25877         x_chrv_rec.orig_system_id1 := p_temp_header.id;
25878         x_chrv_rec.template_used   := p_temp_header.contract_number;
25879      END IF;
25880 
25881      IF (NVL(p_intf_header.program_agreement_id,p_temp_header.khr_id) IS NOT NULL
25882          OR
25883          p_intf_header.program_agreement_number IS NOT NULL) THEN
25884 
25885          x_return_status := get_prog_agreement_id(
25886                                              p_scs_code         => 'PROGRAM',
25887                                              p_agreement_number => p_intf_header.program_agreement_number,
25888                                              p_agreement_id     => NVL(p_intf_header.program_agreement_id,
25889                                                                        p_temp_header.khr_id),
25890                                              p_auth_org_id      => x_chrv_rec.authoring_org_id,
25891                                              x_agreement_id     => x_program_agreement_id
25892                                             );
25893 
25894          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
25895              okl_api.set_message(
25896                                  G_APP_NAME,
25897                                  G_INVALID_VALUE,
25898                                  'CONTRACT_NUM',
25899                                  p_intf_header.contract_number_old,
25900                                  'COL_NAME',
25901                                  'PROGRAM_AGREEMENT_ID, NUMBER: ',
25902                                  'COL_VALUE',
25903                                  p_intf_header.program_agreement_id||', '||p_intf_header.program_agreement_number
25904                                 );
25905             RAISE pop_header_failed;
25906          END IF;
25907          x_khrv_rec.khr_id := x_program_agreement_id;
25908      ELSE
25909          x_khrv_rec.khr_id := p_temp_header.khr_id;
25910      END IF;
25911 
25912      IF (p_intf_header.product_id IS NOT NULL
25913          OR
25914          p_intf_header.product_name IS NOT NULL) THEN
25915         x_return_status := get_product_id(p_product_id     => p_intf_header.product_id,
25916                                            p_product_name   => p_intf_header.product_name,
25917                                            x_product_id     => x_product_id );
25918 
25919         IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
25920               okl_api.set_message(
25921                                   G_APP_NAME,
25922                                   G_INVALID_VALUE,
25923                                   'CONTRACT_NUM',
25924                                   p_intf_header.contract_number_old,
25925                                   'COL_NAME',
25926                                   'PRODUCT_ID, NAME: ',
25927                                   'COL_VALUE',
25928                                   p_intf_header.product_id||', '||p_intf_header.product_name
25929                                  );
25930 
25931             x_return_status := OKL_API.G_RET_STS_ERROR;
25932 
25933            RAISE pop_header_failed;
25934         END IF;
25935         x_khrv_rec.pdt_id := x_product_id;
25936      ELSE
25937         x_khrv_rec.pdt_id := p_temp_header.pdt_id;
25938      END IF;
25939 
25940      IF (NVL(p_intf_header.assignable_yn,'N') NOT IN ('Y','N')) THEN
25941            okl_api.set_message(
25942                                G_APP_NAME,
25943                                G_INVALID_VALUE,
25944                                'CONTRACT_NUM',
25945                                p_intf_header.contract_number_old,
25946                                'COL_NAME',
25947                                'ASSIGNABLE_YN',
25948                                'COL_VALUE',
25949                                p_intf_header.assignable_yn
25950                               );
25951 
25952          x_return_status := OKL_API.G_RET_STS_ERROR;
25953 
25954         RAISE pop_header_failed;
25955      END IF;
25956 
25957 -- start cklee bug# 3440442
25958      IF (NVL(p_intf_header.prefunding_eligible_flag,'N') NOT IN ('Y','N')) THEN
25959            okl_api.set_message(
25960                                G_APP_NAME,
25961                                G_INVALID_VALUE,
25962                                'CONTRACT_NUM',
25963                                p_intf_header.contract_number_old,
25964                                'COL_NAME',
25965                                'PREFUNDING_ELIGIBLE_FLAG',
25966                                'COL_VALUE',
25967                                p_intf_header.prefunding_eligible_flag
25968                               );
25969 
25970          x_return_status := OKL_API.G_RET_STS_ERROR;
25971 
25972         RAISE pop_header_failed;
25973      END IF;
25974 -- end cklee bug# 3440442
25975 
25976      x_khrv_rec.amd_code                 := NVL(p_intf_header.acceptance_method_code, p_temp_header.amd_code);
25977      x_khrv_rec.converted_account_yn     := NVL(p_intf_header.converted_account, p_temp_header.converted_account_yn);
25978 
25979 /* Not used since 11.5.9, Product is defaulting deal_type_code
25980      x_khrv_rec.deal_type                := NVL(p_intf_header.deal_type_code, p_temp_header.deal_type);
25981 */
25982      x_khrv_rec.expected_delivery_date   := NVL(p_intf_header.expected_delivery_date, p_temp_header.expected_delivery_date);
25983      x_khrv_rec.accepted_date            := NVL(p_intf_header.accepted_date, p_temp_header.accepted_date);
25984      x_khrv_rec.term_duration            := NVL(p_intf_header.term, p_temp_header.term_duration);
25985      x_khrv_rec.currency_conversion_type := NVL(p_intf_header.currency_conversion_type,
25986                                                         p_temp_header.currency_conversion_type);
25987      x_khrv_rec.currency_conversion_rate := NVL(p_intf_header.currency_conversion_rate,
25988                                                         p_temp_header.currency_conversion_rate);
25989      x_khrv_rec.currency_conversion_date := NVL(p_intf_header.currency_conversion_date,
25990                                                         p_temp_header.currency_conversion_date);
25991      x_khrv_rec.assignable_yn            := NVL(p_intf_header.assignable_yn,p_temp_header.assignable_yn);
25992      x_khrv_rec.prefunding_eligible_yn   := NVL(p_intf_header.prefunding_eligible_flag,p_temp_header.prefunding_eligible_yn);
25993      x_khrv_rec.credit_act_yn            := NVL(p_intf_header.consumer_credit_act_deal_flag,
25994                                                         p_temp_header.credit_act_yn); -- dedey for bug 4637590
25995 
25996      -- Contract addl field, Bug 4558486
25997 
25998      debug_message('Contract DFF...');
25999 
26000      x_khrv_rec.validate_dff_yn          := 'Y';  -- always validate DFF
26001      x_khrv_rec.attribute_category       := NVL(p_intf_header.attribute_category,
26002                                                  p_temp_header.attribute_category);
26003      debug_message('attribute_category: '||x_khrv_rec.attribute_category);
26004      x_khrv_rec.attribute1               := NVL(p_intf_header.attribute1,
26005                                                  p_temp_header.attribute1);
26006      debug_message('attribute1: '||x_khrv_rec.attribute1);
26007      x_khrv_rec.attribute2               := NVL(p_intf_header.attribute2,
26008                                                  p_temp_header.attribute2);
26009      debug_message('attribute2: '||x_khrv_rec.attribute2);
26010      x_khrv_rec.attribute3               := NVL(p_intf_header.attribute3,
26011                                                  p_temp_header.attribute3);
26012      x_khrv_rec.attribute4               := NVL(p_intf_header.attribute4,
26013                                                  p_temp_header.attribute4);
26014      x_khrv_rec.attribute5               := NVL(p_intf_header.attribute5,
26015                                                  p_temp_header.attribute5);
26016      x_khrv_rec.attribute6               := NVL(p_intf_header.attribute6,
26017                                                  p_temp_header.attribute6);
26018      x_khrv_rec.attribute7               := NVL(p_intf_header.attribute7,
26019                                                  p_temp_header.attribute7);
26020      x_khrv_rec.attribute8               := NVL(p_intf_header.attribute8,
26021                                                  p_temp_header.attribute8);
26022      x_khrv_rec.attribute9               := NVL(p_intf_header.attribute9,
26023                                                  p_temp_header.attribute9);
26024      x_khrv_rec.attribute10              := NVL(p_intf_header.attribute10,
26025                                                  p_temp_header.attribute10);
26026      x_khrv_rec.attribute11              := NVL(p_intf_header.attribute11,
26027                                                  p_temp_header.attribute11);
26028      x_khrv_rec.attribute12              := NVL(p_intf_header.attribute12,
26029                                                  p_temp_header.attribute12);
26030      x_khrv_rec.attribute13              := NVL(p_intf_header.attribute13,
26031                                                  p_temp_header.attribute13);
26032      x_khrv_rec.attribute14              := NVL(p_intf_header.attribute14,
26033                                                  p_temp_header.attribute14);
26034      x_khrv_rec.attribute15              := NVL(p_intf_header.attribute15,
26035                                                  p_temp_header.attribute15);
26036      -- Contract addl field, Bug 4558486
26037 
26038 
26039     RETURN;
26040 
26041   EXCEPTION
26042     WHEN pop_header_failed THEN
26043       NULL; -- caller will handle appropriate exception
26044   END populate_header_rec;
26045 
26046 ------------------------------------------------------------------------------
26047 -- PROCEDURE check_payment_level
26048 -- This procedure determines payment level for SERVICE and FEE lines.
26049 -- If asset_number column is populated at SERVICE and FEE lines, payment
26050 -- will be attached to sub-line level.
26051 --
26052 -- If asset_number column is not populated at SERVICE and FEE lines, payment
26053 -- will be attached to top-line level.
26054 --
26055 -- Calls:
26056 -- Called By:
26057 --  load_input_record
26058 ------------------------------------------------------------------------------
26059   PROCEDURE  check_payment_level(
26060                                  x_return_status   OUT NOCOPY VARCHAR2,
26061                                  x_msg_count       OUT NOCOPY VARCHAR2,
26062                                  x_msg_data        OUT NOCOPY VARCHAR2,
26063                                  p_contract_number IN  OKL_HEADER_INTERFACE.CONTRACT_NUMBER_OLD%TYPE,
26064                                  p_line_number     IN  OKL_LINES_INTERFACE.LINE_NUMBER%TYPE,
26065                                  x_payment_level   OUT NOCOPY VARCHAR2
26066                                 ) IS
26067 
26068   l_proc_name VARCHAR2(35) := 'CHECK_PAYMENT_LEVEL';
26069 
26070   CURSOR line_csr (p_cont_number OKL_HEADER_INTERFACE.CONTRACT_NUMBER_OLD%TYPE,
26071                    p_line        OKL_LINES_INTERFACE.LINE_NUMBER%TYPE) IS
26072   SELECT line_type,
26073          asset_number
26074   FROM   okl_lines_interface
26075   WHERE  contract_number_old = p_cont_number
26076   AND    line_number         = p_line;
26077 
26078   l_line_type    OKL_LINES_INTERFACE.LINE_TYPE%TYPE;
26079   l_asset_number OKL_LINES_INTERFACE.ASSET_NUMBER%TYPE;
26080 
26081   BEGIN
26082     x_return_status := OKL_API.G_RET_STS_SUCCESS;
26083     debug_message(l_proc_name);
26084 
26085     x_payment_level := 'TOP'; -- default
26086 
26087     l_line_type    := NULL;
26088     l_asset_number := NULL;
26089 
26090     OPEN line_csr (p_contract_number,
26091                    p_line_number);
26092     FETCH line_csr INTO l_line_type,
26093                         l_asset_number;
26094     CLOSE line_csr;
26095 
26096     IF (l_line_type IN ('SERVICE', 'FEE')) THEN
26097        IF (l_asset_number IS NOT NULL) THEN
26098            x_payment_level := 'SUB';
26099        ELSE
26100            x_payment_level := 'TOP';
26101        END IF;
26102     ELSE
26103        x_payment_level := 'TOP'; -- For other lines attach payment at TOP level only
26104     END IF;
26105 
26106   EXCEPTION
26107     WHEN OTHERS THEN
26108       okl_api.set_message(
26109                           G_APP_NAME,
26110                           G_UNEXPECTED_ERROR,
26111                           'OKL_SQLCODE',
26112                           SQLCODE,
26113                           'OKL_SQLERRM',
26114                           SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
26115                          );
26116       x_return_status := OKL_API.G_RET_STS_ERROR;
26117 
26118   END check_payment_level;
26119 
26120 
26121 ------------------------------------------------------------------------------
26122 -- PROCEDURE create_lessee_as_vendor
26123 -- This procedure creates lessee as vendor and attach pay site to it
26124 -- Calls:
26125 -- Called By:
26126 --  load_input_record
26127 ------------------------------------------------------------------------------
26128    PROCEDURE create_lessee_as_vendor(
26129                                     x_return_status      OUT NOCOPY VARCHAR2,
26130                                     x_msg_count          OUT NOCOPY NUMBER,
26131                                     x_msg_data           OUT NOCOPY VARCHAR2,
26132                                     p_chr_id             IN  NUMBER,
26133                                     p_contract_num       IN  VARCHAR2,
26134                                     p_cpl_id             IN  NUMBER,
26135                                     p_lessee_vendor_id   IN  NUMBER,
26136                                     p_lessee_vendor_name IN  VARCHAR2,
26137                                     p_lessee_site_id     IN  NUMBER,
26138                                     p_lessee_site_code   IN  VARCHAR2,
26139                                     p_authoring_org_id   IN  NUMBER
26140                                    ) IS
26141 
26142   l_proc_name VARCHAR2(35) := 'CREATE_LESSEE_AS_VENDOR';
26143   CURSOR vendor_csr (p_vendor_id NUMBER,
26144                      p_vendor_name VARCHAR2) IS
26145   SELECT vendor_id
26146   FROM   po_vendors
26147   WHERE  ( (vendor_id = p_vendor_id
26148             AND
26149             p_vendor_id IS NOT NULL
26150            )
26151            OR (
26152                vendor_name = p_vendor_name
26153                AND
26154                p_vendor_name IS NOT NULL
26155               )
26156          );
26157 
26158   CURSOR vendor_site_csr (p_vendor_id   NUMBER,
26159                           p_site_id     NUMBER,
26160                           p_site_code   VARCHAR2,
26161                           p_auth_org_id NUMBER) IS
26162   select vendor_site_id
26163   from   po_vendor_sites_all
26164   where  ( (vendor_site_id = p_site_id
26165             AND
26166             p_site_id IS NOT NULL)
26167             OR
26168             (vendor_site_code = p_site_code
26169              AND
26170              p_site_code IS NOT NULL)
26171           )
26172   and     org_id    = p_auth_org_id
26173   and     vendor_id = p_vendor_id;
26174 
26175   l_vendor_id      po_vendors.vendor_id%TYPE;
26176   l_vendor_site_id po_vendor_sites_all.vendor_site_id%TYPE;
26177   l_ppydv_rec      ppydv_rec_type;
26178   x_ppydv_rec      ppydv_rec_type;
26179 
26180   lessee_failed    EXCEPTION;
26181 
26182   BEGIN
26183 
26184     x_return_status := OKL_API.G_RET_STS_SUCCESS;
26185     debug_message(l_proc_name);
26186 
26187     debug_message('------>Vendor: '||p_lessee_vendor_id||', '||p_lessee_vendor_name);
26188     debug_message('------>Vendor Site: '||p_lessee_site_id||', '||p_lessee_site_code);
26189 
26190     IF (p_lessee_vendor_id IS NOT NULL
26191         OR
26192         p_lessee_vendor_name IS NOT NULL) THEN
26193 
26194        -- Check vendor
26195        OPEN vendor_csr (p_lessee_vendor_id,
26196                           p_lessee_vendor_name);
26197        FETCH vendor_csr INTO l_vendor_id;
26198        IF vendor_csr%NOTFOUND THEN
26199             okl_api.set_message(
26200                                 G_APP_NAME,
26201                                 G_INVALID_VALUE,
26202                                 'CONTRACT_NUM',
26203                                 p_contract_num,
26204                                 'COL_NAME',
26205                                 'LESSEE_AS_VENDOR_ID OR LESSEE_AS_VENDOR_NAME',
26206                                 'COL_VALUE',
26207                                 p_lessee_vendor_id||', '||p_lessee_vendor_name
26208                                );
26209           RAISE lessee_failed;
26210        END IF;
26211        CLOSE vendor_csr;
26212 
26213        debug_message('------> Vendor valid');
26214        -- Check vendor Pay site
26215        OPEN vendor_site_csr(l_vendor_id,
26216                             p_lessee_site_id,
26217                             p_lessee_site_code,
26218                             p_authoring_org_id);
26219 
26220        FETCH vendor_site_csr INTO l_vendor_site_id;
26221        IF vendor_site_csr%NOTFOUND THEN
26222           okl_api.set_message(
26223                               G_APP_NAME,
26224                               G_INVALID_VALUE,
26225                               'CONTRACT_NUM',
26226                               p_contract_num,
26227                               'COL_NAME',
26228                               'LESSEE_AS_VENDOR_SITE_ID OR LESSEE_AS_VENDOR_SITE_CODE',
26229                               'COL_VALUE',
26230                                p_lessee_site_id||', '||p_lessee_site_code
26231                             );
26232           RAISE lessee_failed;
26233        END IF;
26234        CLOSE vendor_site_csr;
26235        debug_message('------> Vendor site valid');
26236 
26237        -- create lessee as vendor here
26238        l_ppydv_rec.cpl_id      := p_cpl_id;
26239        l_ppydv_rec.vendor_id   := l_vendor_id;
26240        l_ppydv_rec.pay_site_id := l_vendor_site_id;
26241 
26242        debug_message('------> Before creation of lessee as vendor');
26243        okl_lessee_as_vendor_pvt.create_lessee_as_vendor(
26244                                                         p_api_version    => 1.0,
26245                                                         p_init_msg_list  => OKL_API.G_FALSE,
26246                                                         x_return_status  => x_return_status,
26247                                                         x_msg_count      => x_msg_count,
26248                                                         x_msg_data       => x_msg_data,
26249                                                         p_chr_id         => p_chr_id,
26250                                                         p_ppydv_rec      => l_ppydv_rec,
26251                                                         x_ppydv_rec      => x_ppydv_rec
26252                                                        );
26253 
26254        IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
26255           RAISE lessee_failed;
26256        END IF;
26257        debug_message('------> After creation of lessee as vendor '||x_return_status);
26258 
26259     END IF; -- vendor_id NOT NULL
26260 
26261   EXCEPTION
26262     WHEN lessee_failed THEN
26263        IF vendor_csr%ISOPEN THEN
26264          CLOSE vendor_csr;
26265        END IF;
26266        IF vendor_site_csr%ISOPEN THEN
26267          CLOSE vendor_site_csr;
26268        END IF;
26269        x_return_status := OKL_API.G_RET_STS_ERROR;
26270 
26271     WHEN OTHERS THEN
26272       okl_api.set_message(
26273                           G_APP_NAME,
26274                           G_UNEXPECTED_ERROR,
26275                           'OKL_SQLCODE',
26276                           SQLCODE,
26277                           'OKL_SQLERRM',
26278                           SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
26279                          );
26280       x_return_status := OKL_API.G_RET_STS_ERROR;
26281 
26282   END create_lessee_as_vendor;
26283 
26284 ------------------------------------------------------------------------------
26285 -- PROCEDURE get_txd_id
26286 -- This procedure gets okl_txd_assets_b.id, required to update in case of
26287 -- released asset import with mutiple tax books.
26288 -- Calls:
26289 -- Called By:
26290 --  load_input_record
26291 ------------------------------------------------------------------------------
26292    PROCEDURE get_txd_id (
26293                          x_return_status   OUT NOCOPY VARCHAR2,
26294                          x_msg_count       OUT NOCOPY NUMBER,
26295                          x_msg_data        OUT NOCOPY VARCHAR2,
26296                          p_contract_number IN  VARCHAR2,
26297                          p_tal_id          IN  NUMBER,
26298                          p_tax_book        IN  VARCHAR2,
26299                          x_txd_id          OUT NOCOPY OKL_TXD_ASSETS_B.ID%TYPE
26300                         ) IS
26301 
26302    CURSOR txd_csr (p_tal_id   NUMBER,
26303                    p_tax_book VARCHAR2) IS
26304    SELECT id
26305    FROM   okl_txd_assets_b
26306    WHERE  tal_id = p_tal_id
26307    AND    tax_book = p_tax_book;
26308 
26309    l_proc_name VARCHAR2(35) := 'GET_TXD_ID';
26310    BEGIN
26311 
26312      x_return_status := OKL_API.G_RET_STS_SUCCESS;
26313      debug_message(l_proc_name);
26314 
26315      OPEN txd_csr (p_tal_id,
26316                    p_tax_book);
26317      FETCH txd_csr INTO x_txd_id;
26318      IF (txd_csr%NOTFOUND) THEN
26319          okl_api.set_message(
26320                              G_APP_NAME,
26321                              G_INVALID_VALUE,
26322                              'CONTRACT_NUM',
26323                              p_contract_number,
26324                              'COL_NAME',
26325                              'TAX_BOOK',
26326                              'COL_VALUE',
26327                              p_tax_book
26328                             );
26329 
26330         x_return_status := OKL_API.G_RET_STS_ERROR;
26331      END IF;
26332      CLOSE txd_csr;
26333 
26334    EXCEPTION
26335 
26336      WHEN OTHERS THEN
26337 
26338       okl_api.set_message(
26339                           G_APP_NAME,
26340                           G_UNEXPECTED_ERROR,
26341                           'OKL_SQLCODE',
26342                           SQLCODE,
26343                           'OKL_SQLERRM',
26344                           SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
26345                          );
26346       x_return_status := OKL_API.G_RET_STS_ERROR;
26347    END get_txd_id;
26348 
26349 ------------------------------------------------------------------------------
26350 -- PROCEDURE create_release_asset_rule
26351 -- This procedure creates release asset rule at contract header
26352 -- Calls:
26353 -- Called By:
26354 --  load_input_record
26355 ------------------------------------------------------------------------------
26356    PROCEDURE create_release_asset_rule(
26357                                        x_return_status      OUT NOCOPY VARCHAR2,
26358                                        x_msg_count          OUT NOCOPY NUMBER,
26359                                        x_msg_data           OUT NOCOPY VARCHAR2,
26360                                        p_chr_id             IN NUMBER,
26361                                        p_release_asset_flag IN VARCHAR2
26362                                       ) IS
26363 
26364    l_proc_name VARCHAR2(35) := 'CREATE_RELEASE_ASSET_RULE';
26365 
26366    l_rgpv_rec rgpv_rec_type;
26367    x_rgpv_rec rgpv_rec_type;
26368 
26369    l_rulv_rec rulv_rec_type;
26370    x_rulv_rec rulv_rec_type;
26371 
26372    l_rgp_id   NUMBER := NULL;
26373    rel_rule_failed EXCEPTION;
26374 
26375    BEGIN
26376 
26377       x_return_status := OKL_API.G_RET_STS_SUCCESS;
26378       debug_message(l_proc_name);
26379 
26380       l_rgpv_rec            := NULL;
26381       l_rgp_id              := NULL;
26382 
26383       l_rgpv_rec.rgd_code   := 'LARLES';
26384       l_rgpv_rec.chr_id     := p_chr_id;
26385       l_rgpv_rec.dnz_chr_id := p_chr_id;
26386       l_rgpv_rec.cle_id     := NULL;
26387       l_rgpv_rec.rgp_type   := 'KRG';
26388 
26389       l_rulv_rec                           := NULL;
26390 
26391       l_rulv_rec.dnz_chr_id                := p_chr_id;
26392       l_rulv_rec.rule_information_category := 'LARLES';
26393       -- Bug #15992711 : Start
26394       -- The rule information should always be null
26395       -- l_rulv_rec.rule_information1         := p_release_asset_flag;
26396       l_rulv_rec.rule_information1         := NULL;
26397       -- Bug #15992711 : Start
26398 
26399       l_rulv_rec.std_template_yn           := 'N';
26400       l_rulv_rec.warn_yn                   := 'N';
26401 
26402       create_rule_group_and_rule(
26403                               x_return_status => x_return_status,
26404                               x_msg_count     => x_msg_count,
26405                               x_msg_data      => x_msg_data,
26406                               p_rgp_id        => l_rgp_id,
26407                               p_rgpv_rec      => l_rgpv_rec,
26408                               p_rulv_rec      => l_rulv_rec,
26409                               x_rgpv_rec      => x_rgpv_rec,
26410                               x_rulv_rec      => x_rulv_rec
26411                              );
26412 
26413       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
26414           raise rel_rule_failed;
26415       END IF;
26416 
26417       debug_message('------>Rule: LARLES/LARLES processed');
26418 
26419    EXCEPTION
26420 
26421      WHEN rel_rule_failed THEN
26422         x_return_status := OKL_API.G_RET_STS_ERROR;
26423 
26424     WHEN OTHERS THEN
26425       okl_api.set_message(
26426                           G_APP_NAME,
26427                           G_UNEXPECTED_ERROR,
26428                           'OKL_SQLCODE',
26429                           SQLCODE,
26430                           'OKL_SQLERRM',
26431                           SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
26432                          );
26433       x_return_status := OKL_API.G_RET_STS_ERROR;
26434    END create_release_asset_rule;
26435 
26436 ------------------------------------------------------------------------------
26437 -- PROCEDURE process_release_asset
26438 -- This procedure creates asset line using released asset
26439 -- Calls:
26440 -- Called By:
26441 --  load_input_record
26442 ------------------------------------------------------------------------------
26443 
26444    PROCEDURE process_release_asset(
26445                                    x_return_status      OUT NOCOPY VARCHAR2,
26446                                    x_msg_count          OUT NOCOPY NUMBER,
26447                                    x_msg_data           OUT NOCOPY VARCHAR2,
26448                                    p_chr_id             IN VARCHAR2,
26449                                    p_contract_number    IN VARCHAR2,
26450                                    p_asset_number       IN VARCHAR2,
26451                                    p_asset_id           IN OKL_LA_RELEASE_ASSETS_UV.ASSET_ID%TYPE,
26452                                    p_line_number        IN NUMBER,
26453                                    p_re_lease_yn        IN VARCHAR2, -- Bug #15992711 : added new parameter, to pass value of re_lease_yn flag
26454                                    p_install_site_id    IN okl_lines_interface.install_site_id%TYPE,
26455                                    p_install_site_num   IN okl_lines_interface.install_site_number%TYPE,
26456                                    p_unit_price         IN okl_lines_interface.original_cost%TYPE,
26457                                    p_deprn_method       IN okl_lines_interface.depreciation_method_code%TYPE,
26458                                    p_life_in_months     IN okl_lines_interface.life_in_months%TYPE,
26459                                    p_deprn_rate         IN okl_lines_interface.depreciation_rate%TYPE,
26460                                    p_asset_location_id  IN okl_lines_interface.asset_location_id%TYPE,
26461                                    p_asset_loc_segment1 IN okl_lines_interface.asset_location_segment1%TYPE,
26462                                    p_asset_loc_segment2 IN okl_lines_interface.asset_location_segment2%TYPE,
26463                                    p_asset_loc_segment3 IN okl_lines_interface.asset_location_segment3%TYPE,
26464                                    p_asset_loc_segment4 IN okl_lines_interface.asset_location_segment4%TYPE,
26465                                    p_asset_loc_segment5 IN okl_lines_interface.asset_location_segment5%TYPE,
26466                                    p_asset_loc_segment6 IN okl_lines_interface.asset_location_segment6%TYPE,
26467                                    p_asset_loc_segment7 IN okl_lines_interface.asset_location_segment7%TYPE,
26468                                    p_salvage_value      IN okl_lines_interface.salvage_value%TYPE,
26469                                    p_salvage_ptg        IN okl_lines_interface.salvage_value_percent%TYPE,
26470                                    p_residual_grnty_amt IN okl_lines_interface.residual_amount_guarantee%TYPE,
26471                                    p_residual_code      IN okl_lines_interface.guarantor_type_code%TYPE,
26472                                    p_residual_ptg       IN okl_lines_interface.residual_percent%TYPE,
26473                                    p_residual_amt       IN okl_lines_interface.residual_amount%TYPE,
26474                                    p_tax_book           IN okl_lines_interface.tax_book%TYPE,
26475                                    p_tax_deprn          IN okl_lines_interface.deprn_method_tax%TYPE,
26476                                    p_tax_life_in_mnth   IN okl_lines_interface.life_in_months_tax%TYPE,
26477                                    p_tax_deprn_rate     IN okl_lines_interface.deprn_rate_tax%TYPE,
26478                                    p_pth_base_payout_basis        IN okl_lines_interface.pth_base_payout_basis%TYPE,
26479                                    p_pth_base_stream_code         IN okl_lines_interface.pth_base_stream_code%TYPE,
26480                                    p_pth_base_stream_purpose_code IN okl_lines_interface.pth_base_stream_purpose_code%TYPE,
26481                                    p_pth_start_date               IN okl_lines_interface.pth_start_date%TYPE,
26482                                    p_pth_evg_payout_basis         IN okl_lines_interface.pth_evg_payout_basis%TYPE,
26483                                    p_pth_payout_basis_formula     IN okl_lines_interface.pth_payout_basis_formula%TYPE,
26484                                    p_pth_evg_stream_code          IN okl_lines_interface.pth_evg_stream_code%TYPE,
26485                                    p_pth_evg_stream_purpose_code  IN okl_lines_interface.pth_evg_stream_purpose_code%TYPE,
26486                                    p_attribute_category           IN okl_lines_interface.attribute_category%TYPE,
26487                                    p_attribute1                   IN okl_lines_interface.attribute1%TYPE,
26488                                    p_attribute2                   IN okl_lines_interface.attribute2%TYPE,
26489                                    p_attribute3                   IN okl_lines_interface.attribute3%TYPE,
26490                                    p_attribute4                   IN okl_lines_interface.attribute4%TYPE,
26491                                    p_attribute5                   IN okl_lines_interface.attribute5%TYPE,
26492                                    p_attribute6                   IN okl_lines_interface.attribute6%TYPE,
26493                                    p_attribute7                   IN okl_lines_interface.attribute7%TYPE,
26494                                    p_attribute8                   IN okl_lines_interface.attribute8%TYPE,
26495                                    p_attribute9                   IN okl_lines_interface.attribute9%TYPE,
26496                                    p_attribute10                  IN okl_lines_interface.attribute10%TYPE,
26497                                    p_attribute11                  IN okl_lines_interface.attribute11%TYPE,
26498                                    p_attribute12                  IN okl_lines_interface.attribute12%TYPE,
26499                                    p_attribute13                  IN okl_lines_interface.attribute13%TYPE,
26500                                    p_attribute14                  IN okl_lines_interface.attribute14%TYPE,
26501                                    p_attribute15                  IN okl_lines_interface.attribute15%TYPE,
26502                                    --Bug# 16344245
26503                                    p_amount_balance_legacy        IN okl_lines_interface.amount_balance_legacy%TYPE,
26504                                    p_dt_effective_balance_legacy  IN okl_lines_interface.dt_effective_balance_legacy%TYPE,
26505                                    --Bug# 16344245
26506                                    x_clev_fin_rec                 OUT NOCOPY clev_rec_type,
26507                                    x_clev_model_rec               OUT NOCOPY clev_rec_type,
26508                                    x_clev_fa_rec                  OUT NOCOPY clev_rec_type,
26509                                    x_clev_ib_rec                  OUT NOCOPY clev_rec_type
26510                                   ) IS
26511 
26512    l_proc_name VARCHAR2(35) := 'PROCESS_RELEASE_ASSET';
26513    release_failed EXCEPTION;
26514 
26515    l_clev_fin_rec clev_rec_type;
26516    l_klev_fin_rec klev_rec_type;
26517    l_clev_fa_rec  clev_rec_type;
26518    l_cimv_fa_rec  cimv_rec_type;
26519    l_talv_fa_rec  talv_rec_type;
26520    l_itiv_ib_tbl  itiv_tbl_type;
26521    l_cimv_model_rec cimv_rec_type;
26522    x_lse_id       NUMBER;
26523    x_comb_id      NUMBER;
26524    x_install_site_id NUMBER;
26525 
26526    x_txd_id       NUMBER;
26527    l_tal_id       NUMBER;
26528 
26529    l_adpv_rec     adpv_rec_type;
26530    x_adpv_rec     adpv_rec_type;
26531 
26532    x_party_pmnt_hdr_tbl_out pphv_tbl_type;
26533    l_counter                NUMBER;
26534 
26535    BEGIN
26536 
26537      x_return_status := OKL_API.G_RET_STS_SUCCESS;
26538      debug_message(l_proc_name);
26539 
26540      debug_message('------> Contract id: '||p_chr_id);
26541      debug_message('------> Asset id: '||p_asset_id);
26542 
26543      debug_message('------> Residual : '||p_residual_ptg||'/'||p_residual_amt);
26544      debug_message('------> Unit Price : '||p_unit_price);
26545      l_cimv_fa_rec.object1_id1 := p_asset_id;
26546      l_cimv_fa_rec.object1_id2 := '#';
26547      l_clev_fin_rec.dnz_chr_id := p_chr_id;
26548 
26549      IF (p_unit_price IS NOT NULL) THEN
26550          l_clev_fin_rec.price_unit       := p_unit_price;
26551          l_talv_fa_rec.original_cost     := p_unit_price;
26552      END IF;
26553 
26554      IF (p_residual_grnty_amt IS NOT NULL) THEN
26555          l_klev_fin_rec.residual_grnty_amount     := p_residual_grnty_amt;
26556      END IF;
26557 
26558      IF (p_residual_ptg IS NOT NULL) THEN
26559         l_klev_fin_rec.residual_percentage       := p_residual_ptg;
26560      END IF;
26561 
26562      IF (p_residual_amt IS NOT NULL) THEN
26563         l_klev_fin_rec.residual_value            := p_residual_amt;
26564      END IF;
26565      l_klev_fin_rec.residual_code             := NVL(p_residual_code,'NONE');
26566 
26567      IF (p_deprn_method IS NOT NULL) THEN
26568         l_talv_fa_rec.deprn_method               := p_deprn_method;
26569      END IF;
26570 
26571      IF (p_life_in_months IS NOT NULL) THEN
26572         l_talv_fa_rec.life_in_months             := p_life_in_months;
26573      END IF;
26574 
26575      IF (p_deprn_rate IS NOT NULL) THEN
26576         l_talv_fa_rec.deprn_rate                 := p_deprn_rate;
26577      END IF;
26578 
26579      IF (p_salvage_value IS NOT NULL) THEN
26580         l_talv_fa_rec.salvage_value              := p_salvage_value;
26581      END IF;
26582 
26583      IF (p_salvage_value IS NOT NULL) THEN
26584         l_talv_fa_rec.percent_salvage_value      := p_salvage_ptg;
26585      END IF;
26586 
26587      x_comb_id := NULL;
26588      get_flexid(
26589                 x_return_status   => x_return_status,
26590                 x_msg_count       => x_msg_count,
26591                 x_msg_data        => x_msg_data,
26592                 p_type            => 'ASSET_LOCATION',
26593                 p_contract_number => p_contract_number,
26594                 p_line_number     => p_line_number,
26595                 p_comb_id         => p_asset_location_id,
26596                 p_segment1        => p_asset_loc_segment1,
26597                 p_segment2        => p_asset_loc_segment2,
26598                 p_segment3        => p_asset_loc_segment3,
26599                 p_segment4        => p_asset_loc_segment4,
26600                 p_segment5        => p_asset_loc_segment5,
26601                 p_segment6        => p_asset_loc_segment6,
26602                 p_segment7        => p_asset_loc_segment7,
26603                 x_comb_id         => x_comb_id
26604                );
26605      IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
26606         x_return_status := OKL_API.G_RET_STS_ERROR;
26607         RAISE release_failed;
26608      END IF;
26609 
26610      IF (x_comb_id IS NOT NULL) THEN
26611         l_talv_fa_rec.fa_location_id        := x_comb_id;
26612      END IF;
26613 
26614      IF (p_install_site_id IS NOT NULL
26615          OR
26616          p_install_site_num IS NOT NULL) THEN
26617         get_install_site_id(
26618                             x_return_status       => x_return_status,
26619                             x_msg_count           => x_msg_count,
26620                             x_msg_data            => x_msg_data,
26621                             p_contract_number     => p_contract_number,
26622                             p_line_number         => p_line_number,
26623                             p_install_site_id     => p_install_site_id,
26624                             p_install_site_number => p_install_site_num,
26625                             x_install_site_id     => x_install_site_id
26626                            );
26627 
26628         IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
26629            x_return_status := OKL_API.G_RET_STS_ERROR;
26630            RAISE release_failed;
26631         END IF;
26632         l_itiv_ib_tbl(1).object_id1_new := x_install_site_id;
26633      END IF;
26634 
26635      -- Contract addl field, Bug 4558486
26636 
26637      debug_message('Contract release Asset line DFF...'||'Line#: '||p_line_number);
26638 
26639      l_klev_fin_rec.validate_dff_yn          := 'Y';  -- always validate DFF
26640      l_klev_fin_rec.attribute_category       := p_attribute_category;
26641      debug_message('attribute_category: '||l_klev_fin_rec.attribute_category);
26642      l_klev_fin_rec.attribute1               := p_attribute1;
26643      debug_message('attribute1: '||l_klev_fin_rec.attribute1);
26644      l_klev_fin_rec.attribute2               := p_attribute2;
26645      debug_message('attribute2: '||l_klev_fin_rec.attribute2);
26646      l_klev_fin_rec.attribute3               := p_attribute3;
26647      l_klev_fin_rec.attribute4               := p_attribute4;
26648      l_klev_fin_rec.attribute5               := p_attribute5;
26649      l_klev_fin_rec.attribute6               := p_attribute6;
26650      l_klev_fin_rec.attribute7               := p_attribute7;
26651      l_klev_fin_rec.attribute8               := p_attribute8;
26652      l_klev_fin_rec.attribute9               := p_attribute9;
26653      l_klev_fin_rec.attribute10              := p_attribute10;
26654      l_klev_fin_rec.attribute11              := p_attribute11;
26655      l_klev_fin_rec.attribute12              := p_attribute12;
26656      l_klev_fin_rec.attribute13              := p_attribute13;
26657      l_klev_fin_rec.attribute14              := p_attribute14;
26658      l_klev_fin_rec.attribute15              := p_attribute15;
26659      l_klev_fin_rec.re_lease_yn              := p_re_lease_yn;  -- Bug #15992711 added the line
26660 
26661      -- Contract addl field, Bug 4558486
26662 
26663      --Bug# 16344245
26664      debug_message('Contract Asset line Balance from Legacy...'||'Line#: '||p_line_number);
26665 
26666      l_klev_fin_rec.amount_balance_legacy       := p_amount_balance_legacy;
26667      l_klev_fin_rec.dt_effective_balance_legacy := p_dt_effective_balance_legacy;
26668 
26669      debug_message('amount_balance_legacy: '||l_klev_fin_rec.amount_balance_legacy);
26670      debug_message('dt_effective_balance_legacy: '||l_klev_fin_rec.dt_effective_balance_legacy);
26671      --Bug# 16344245
26672 
26673      debug_message('======>Before calling create_all_line');
26674      okl_create_kle_pvt.Create_all_line(
26675                                         p_api_version    => 1.0,
26676                                         p_init_msg_list  => OKL_API.G_FALSE,
26677                                         x_return_status  => x_return_status,
26678                                         x_msg_count      => x_msg_count,
26679                                         x_msg_data       => x_msg_data,
26680                                         p_new_yn         => 'N',
26681                                         p_asset_number   => p_asset_number,-- Bug #15992711 changed from NULL, --p_asset_number,
26682                                         p_clev_fin_rec   => l_clev_fin_rec,
26683                                         p_klev_fin_rec   => l_klev_fin_rec,
26684                                         p_cimv_model_rec => l_cimv_model_rec,
26685                                         p_clev_fa_rec    => l_clev_fa_rec,
26686                                         p_cimv_fa_rec    => l_cimv_fa_rec,
26687                                         p_talv_fa_rec    => l_talv_fa_rec,
26688                                         p_itiv_ib_tbl    => l_itiv_ib_tbl,
26689                                         x_clev_fin_rec   => x_clev_fin_rec,
26690                                         x_clev_model_rec => x_clev_model_rec,
26691                                         x_clev_fa_rec    => x_clev_fa_rec,
26692                                         x_clev_ib_rec    => x_clev_ib_rec
26693                                        );
26694 
26695      debug_message('======>After calling create_all_line '||x_return_status);
26696 
26697      IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
26698         x_return_status := OKL_API.G_RET_STS_ERROR;
26699         RAISE release_failed;
26700      END IF;
26701 
26702      debug_message('------> clev_fin_rec.id: '||x_clev_fin_rec.id);
26703      debug_message('------> clev_model_rec.id: '||x_clev_model_rec.id);
26704      debug_message('------> clev_fa_rec.id: '||x_clev_fa_rec.id);
26705      debug_message('------> clev_ib_rec.id: '||x_clev_ib_rec.id);
26706 
26707      debug_message('------>Line created');
26708 
26709      IF (p_pth_evg_payout_basis is NOT NULL) THEN
26710         debug_message('------>Create party payment starts for Released Asset: '||p_asset_number || '/ '|| p_line_number);
26711         create_party_payment_hdr(
26712                                  x_return_status                   => x_return_status,
26713                                  x_msg_count                       => x_msg_count,
26714                                  x_msg_data                        => x_msg_data,
26715                                  p_contract_id                     => x_clev_fin_rec.dnz_chr_id,
26716                                  p_line_id                         => x_clev_fin_rec.id,
26717                                  p_line_type                       => 'ASSET',
26718                                  p_pth_start_date                  => p_pth_start_date,
26719                                  p_pth_base_payout_basis           => p_pth_base_payout_basis,
26720                                  p_pth_base_stream_code            => p_pth_base_stream_code,
26721                                  p_pth_base_stream_purpose_code    => p_pth_base_stream_purpose_code,
26722                                  p_pth_evg_payout_basis            => p_pth_evg_payout_basis,
26723                                  p_pth_payout_basis_formula        => p_pth_payout_basis_formula,
26724                                  p_pth_evg_stream_code             => p_pth_evg_stream_code,
26725                                  p_pth_evg_stream_purpose_code     => p_pth_evg_stream_purpose_code,
26726                                  x_party_pmnt_hdr_tbl              => x_party_pmnt_hdr_tbl_out
26727                                 );
26728 
26729         debug_message('------>Create party payment ends '||x_return_status);
26730         IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
26731            x_return_status := OKL_API.G_RET_STS_ERROR;
26732            RAISE release_failed;
26733         END IF;
26734 	IF (x_party_pmnt_hdr_tbl_out.COUNT > 0 )THEN
26735 	   l_counter := x_party_pmnt_hdr_tbl_out.FIRST;
26736 	   LOOP
26737               IF (x_party_pmnt_hdr_tbl_out(l_counter).passthru_term = 'BASE') THEN
26738  	         g_base_pmnt_hdr := x_party_pmnt_hdr_tbl_out(l_counter);
26739 	      ELSIF (x_party_pmnt_hdr_tbl_out(l_counter).passthru_term = 'EVERGREEN') THEN
26740 		 g_evg_pmnt_hdr := x_party_pmnt_hdr_tbl_out(l_counter);
26741 	      END IF;
26742 	   EXIT WHEN (l_counter = x_party_pmnt_hdr_tbl_out.LAST);
26743               l_counter := x_party_pmnt_hdr_tbl_out.NEXT(l_counter);
26744 	   END LOOP;
26745         END IF;
26746      END IF;
26747 
26748      -- Update TXD record for tax book, only if tax book is present
26749      IF (p_tax_book IS NOT NULL) THEN
26750         get_tal_id(
26751                    x_return_status => x_return_status,
26752                    p_fa_line_id    => x_clev_fa_rec.id,
26753                    x_tal_id        => l_tal_id);
26754 
26755         IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
26756            x_return_status := OKL_API.G_RET_STS_ERROR;
26757            RAISE release_failed;
26758         END IF;
26759 
26760         debug_message('------> tal_id : '||l_tal_id);
26761 
26762         get_txd_id (
26763                     x_return_status   => x_return_status,
26764                     x_msg_count       => x_msg_count,
26765                     x_msg_data        => x_msg_data,
26766                     p_contract_number => p_contract_number,
26767                     p_tal_id          => l_tal_id,
26768                     p_tax_book        => p_tax_book,
26769                     x_txd_id          => x_txd_id
26770                    );
26771 
26772         IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
26773            x_return_status := OKL_API.G_RET_STS_ERROR;
26774            RAISE release_failed;
26775         END IF;
26776 
26777         l_adpv_rec.id                 := x_txd_id;
26778         l_adpv_rec.asset_number       := p_asset_number;
26779         l_adpv_rec.tal_id             := l_tal_id;
26780 
26781         IF (p_tax_deprn IS NOT NULL) THEN
26782            l_adpv_rec.deprn_method_tax   := p_tax_deprn;
26783         END IF;
26784 
26785         IF (p_tax_deprn_rate IS NOT NULL) THEN
26786            l_adpv_rec.deprn_rate_tax     := p_tax_deprn_rate;
26787         END IF;
26788 
26789         IF (p_tax_life_in_mnth IS NOT NULL) THEN
26790            l_adpv_rec.life_in_months_tax := p_tax_life_in_mnth;
26791         END IF;
26792 
26793         okl_txd_assets_pub.update_txd_asset_def(
26794                                                 p_api_version     => 1.0,
26795                                                 p_init_msg_list   => OKL_API.G_FALSE,
26796                                                 x_return_status   => x_return_status,
26797                                                 x_msg_count       => x_msg_count,
26798                                                 x_msg_data        => x_msg_data,
26799                                                 p_adpv_rec        => l_adpv_rec,
26800                                                 x_adpv_rec        => x_adpv_rec
26801                                                );
26802 
26803         IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
26804             x_return_status := OKL_API.G_RET_STS_ERROR;
26805             RAISE release_failed;
26806         END IF;
26807 
26808         debug_message('------>TXD Line Updated');
26809 
26810      END IF; -- p_asset_number not null
26811 
26812    EXCEPTION
26813 
26814     WHEN release_failed THEN
26815        x_return_status := OKL_API.G_RET_STS_ERROR;
26816 
26817     WHEN OTHERS THEN
26818       okl_api.set_message(
26819                           G_APP_NAME,
26820                           G_UNEXPECTED_ERROR,
26821                           'OKL_SQLCODE',
26822                           SQLCODE,
26823                           'OKL_SQLERRM',
26824                           SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
26825                          );
26826       x_return_status := OKL_API.G_RET_STS_ERROR;
26827 
26828    END process_release_asset;
26829 
26830 ------------------------------------------------------------------------------
26831 -- PROCEDURE process_addon
26832 -- This procedure processes and creates addon line for each asset.
26833 -- Calls:
26834 -- Called By:
26835 --  load_input_record
26836 ------------------------------------------------------------------------------
26837 
26838    PROCEDURE process_addon(
26839                              x_return_status OUT NOCOPY VARCHAR2,
26840                              x_msg_count     OUT NOCOPY NUMBER,
26841                              x_msg_data      OUT NOCOPY VARCHAR2,
26842                              p_auth_org_id   IN  NUMBER,
26843                              p_contract_num  IN  VARCHAR2,
26844                              p_chr_id        IN  NUMBER,
26845                              p_fa_cle_id     IN  NUMBER,
26846                              p_asset_num     IN  VARCHAR2,
26847                              p_model_line_id IN  NUMBER,
26848                              p_number_of_items IN  NUMBER
26849                             ) IS
26850 
26851    subtype clev_tbl_type is OKL_CREATE_KLE_PUB.clev_tbl_type;
26852    subtype klev_tbl_type is OKL_CREATE_KLE_PUB.klev_tbl_type;
26853    subtype cimv_tbl_type is OKL_CREATE_KLE_PUB.cimv_tbl_type;
26854 
26855    -- Not needed these following three lines : AKP
26856    /*subtype clev_rec_type is OKL_CREATE_KLE_PUB.clev_rec_type;
26857    subtype klev_rec_type is OKL_CREATE_KLE_PUB.klev_rec_type;
26858    subtype cimv_rec_type is OKL_CREATE_KLE_PUB.cimv_rec_type; */
26859 
26860    l_clev_tbl clev_tbl_type;
26861    l_klev_tbl klev_tbl_type;
26862    l_cimv_tbl cimv_tbl_type;
26863 
26864    x_clev_tbl clev_tbl_type;
26865    x_klev_tbl klev_tbl_type;
26866    x_cimv_tbl cimv_tbl_type;
26867 
26868    l_clev_rec clev_rec_type;
26869    l_klev_rec klev_rec_type;
26870    x_fin_clev_rec clev_rec_type;
26871    x_fin_klev_rec klev_rec_type;
26872    l_cimv_rec cimv_rec_type;
26873 
26874    l_proc_name VARCHAR2(35):= 'PROCESS_ADDON';
26875    addon_failed EXCEPTION;
26876 
26877    x_inventory_org_id    NUMBER;
26878    x_inventory_item_id   NUMBER;
26879 
26880    x_asset_vendor_id NUMBER;
26881    p_cplv_rec cplv_rec_type;
26882    x_cplv_rec cplv_rec_type;
26883    l_kplv_rec         kplv_rec_type;
26884    x_kplv_rec         kplv_rec_type;
26885 
26886    x_ship_to_site_id okx_party_site_uses_v.id1%TYPE;
26887    p_sidv_rec sidv_rec_type;
26888    x_sidv_rec sidv_rec_type;
26889 
26890    CURSOR addon_csr (p_contract_number VARCHAR2,
26891                      p_asset_number VARCHAR2) IS
26892    SELECT *
26893    FROM   okl_lines_interface
26894    WHERE  line_type = 'ASSET_ADDON'
26895    AND    contract_number_old = p_contract_number
26896    AND    asset_number = p_asset_number;
26897 
26898    CURSOR okl_party_csr (p_contract_number_old VARCHAR2,
26899                         p_line_number         NUMBER) IS
26900    SELECT *
26901    FROM   okl_party_roles_interface
26902    WHERE  contract_number_old = p_contract_number_old
26903    AND    ( (line_number        = p_line_number
26904             AND
26905             p_line_number IS NOT NULL
26906             )
26907             OR
26908             (line_number   IS NULL
26909              AND
26910              p_line_number IS NULL
26911             )
26912           );
26913 
26914 BEGIN
26915 
26916   x_return_status := OKL_API.G_RET_STS_SUCCESS;
26917   debug_message(l_proc_name);
26918 
26919   FOR addon_rec IN addon_csr (p_contract_num,
26920                               p_asset_num)
26921   LOOP
26922     debug_message('Processing Addon line number: '||addon_rec.line_number);
26923     -- validate addon
26924 
26925     -- Get Item and Organization Info, for All line type
26926     IF (addon_rec.inventory_item_id IS NOT NULL
26927               OR
26928         addon_rec.inventory_item_name IS NOT NULL) THEN
26929       get_inventory_org_item_id(
26930                     x_return_status       => x_return_status,
26931                     x_msg_count           => x_msg_count,
26932                     x_msg_data            => x_msg_data,
26933                     p_contract_number     => p_contract_num,
26934                     p_line_number         => addon_rec.line_number,
26935                     p_line_type           => addon_rec.line_type,
26936                     p_inventory_org_id    => p_auth_org_id,
26937                     p_inventory_item_id   => addon_rec.inventory_item_id,
26938                     p_inventory_item_name => addon_rec.inventory_item_name,
26939                     x_inventory_org_id    => x_inventory_org_id,
26940                     x_inventory_item_id   => x_inventory_item_id
26941                  );
26942 
26943       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
26944         x_return_status := OKL_API.G_RET_STS_ERROR;
26945         RAISE addon_failed;
26946       END IF;
26947 
26948       -- Populate records and call create addon api
26949       l_clev_rec.cle_id := p_model_line_id;
26950       l_clev_rec.dnz_chr_id := p_chr_id;
26951       l_clev_rec.comments := addon_rec.DESCRIPTION;
26952       l_clev_rec.price_unit := addon_rec.ORIGINAL_COST;
26953       l_clev_rec.exception_yn := 'N';
26954 
26955       l_klev_rec.MANUFACTURER_NAME := addon_rec.MAKE;
26956       l_klev_rec.MODEL_NUMBER := addon_rec.MODEL;
26957       l_klev_rec.YEAR_OF_MANUFACTURE := addon_rec.YEAR_OF_MANUFACTURE;
26958 
26959       l_cimv_rec.object1_id1 := x_inventory_item_id;
26960       l_cimv_rec.object1_id2 := x_inventory_org_id;
26961       l_cimv_rec.exception_yn := 'N';
26962       l_cimv_rec.number_of_items := p_number_of_items;
26963 
26964       l_clev_tbl(1) := l_clev_rec;
26965       l_klev_tbl(1) := l_klev_rec;
26966       l_cimv_tbl(1) := l_cimv_rec;
26967 
26968       okl_create_kle_pub.create_add_on_line(
26969           p_api_version => 1,
26970           p_init_msg_list => OKC_API.G_FALSE,
26971           x_return_status => x_return_status,
26972           x_msg_count    => x_msg_count,
26973           x_msg_data     => x_msg_data,
26974           p_new_yn       => 'Y',
26975           p_asset_number => p_asset_num,
26976           p_clev_tbl     => l_clev_tbl,
26977           p_klev_tbl     => l_klev_tbl,
26978           p_cimv_tbl     => l_cimv_tbl,
26979           x_clev_tbl     => x_clev_tbl,
26980           x_klev_tbl     => x_klev_tbl,
26981           x_fin_clev_rec => x_fin_clev_rec,
26982           x_fin_klev_rec => x_fin_klev_rec,
26983           x_cimv_tbl     => x_cimv_tbl);
26984 
26985       debug_message('x_clev_tbl(1).id=' || x_clev_tbl(1).ID);
26986       --debug_message('x_klev_tbl(1).id=' || x_klev_tbl(1).ID);
26987       --debug_message('x_fin_clev_tbl(1).id=' || x_fin_clev_tbl(1).ID);
26988       --debug_message('x_fin_klev_tbl(1).id=' || x_fin_klev_tbl(1).ID);
26989       --debug_message('x_cimv_tbl(1).id=' || x_cimv_tbl(1).ID);
26990 
26991       debug_message('After create_add_on_line: x_return_status=' || x_return_status);
26992       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
26993         RAISE addon_failed;
26994       END IF;
26995 
26996       -- Do process party role
26997       FOR okl_party_rec IN okl_party_csr(p_contract_num, addon_rec.line_number)
26998       LOOP
26999         IF (okl_party_rec.ASSET_VENDOR_ID IS NOT NULL) THEN
27000           x_asset_vendor_id := okl_party_rec.ASSET_VENDOR_ID;
27001         ELSE
27002           get_vendor_id (
27003                        x_return_status     => x_return_status,
27004                        x_msg_count         => x_msg_count,
27005                        x_msg_data          => x_msg_data,
27006                        p_contract_number   => p_contract_num,
27007                        p_line_number       => addon_rec.line_number,
27008                        x_vendor_id         => x_asset_vendor_id,
27009                        p_vendor_name       => okl_party_rec.ASSET_VENDOR_NAME
27010                       );
27011           debug_message('Addon:x_asset_vendor_id=' || x_asset_vendor_id);
27012           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
27013              RAISE addon_failed;
27014           END IF;
27015         END IF;
27016 
27017         IF (x_asset_vendor_id IS NOT NULL) THEN
27018           p_cplv_rec := NULL;
27019           p_cplv_rec.chr_id := NULL;
27020           p_cplv_rec.dnz_chr_id := p_chr_id;
27021           p_cplv_rec.cle_id := x_clev_tbl(1).ID;
27022           p_cplv_rec.object1_id1       := TO_CHAR(x_asset_vendor_id);
27023           p_cplv_rec.object1_id2       := '#';
27024           p_cplv_rec.jtot_object1_code := 'OKX_VENDOR';
27025           p_cplv_rec.rle_code          := 'OKL_VENDOR';
27026           OKL_K_PARTY_ROLES_PVT.create_k_party_role(
27027                                   p_api_version   => 1.0,
27028                                   p_init_msg_list => OKL_API.G_FALSE,
27029                                   x_return_status => x_return_status,
27030                                   x_msg_count     => x_msg_count,
27031                                   x_msg_data      => x_msg_data,
27032                                   p_cplv_rec      => p_cplv_rec,
27033                                   p_kplv_rec      => l_kplv_rec,
27034                                   x_cplv_rec      => x_cplv_rec,
27035                                   x_kplv_rec      => x_kplv_rec
27036                                 );
27037 
27038          debug_message('x_cplv_rec.id=' || x_cplv_rec.ID);
27039          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
27040             RAISE addon_failed;
27041          END IF;
27042 
27043         END IF;
27044 
27045       END LOOP; -- okl_party_csr
27046 
27047       -- Do create supp invoice details
27048       IF (x_asset_vendor_id is NOT NULL) THEN
27049         debug_message('x_clev_tbl(1).ID=' || x_clev_tbl(1).ID);
27050         debug_message('p_fa_cle_id=' || p_fa_cle_id);
27051         p_sidv_rec.cle_id                := x_clev_tbl(1).id;
27052         p_sidv_rec.fa_cle_id             := p_fa_cle_id;
27053         p_sidv_rec.invoice_number        := addon_rec.vendor_invoice_number;
27054         p_sidv_rec.date_invoiced         := addon_rec.vendor_invoice_date;
27055         IF (addon_rec.ship_to_site_id IS NOT NULL
27056                 OR
27057             addon_rec.ship_to_site_number IS NOT NULL) THEN
27058           get_ship_to_site(
27059                            x_return_status       => x_return_status,
27060                            x_msg_count           => x_msg_count,
27061                            x_msg_data            => x_msg_data,
27062                            p_contract_number     => p_contract_num,
27063                            p_line_number         => addon_rec.line_number,
27064                            p_auth_org_id         => p_auth_org_id,
27065                            p_ship_to_site_number => addon_rec.ship_to_site_number,
27066                            p_ship_to_site_id     => addon_rec.ship_to_site_id,
27067                            x_ship_to_site_id     => x_ship_to_site_id
27068                          );
27069           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
27070             RAISE addon_failed;
27071             x_return_status := OKL_API.G_RET_STS_ERROR;
27072           END IF;
27073 
27074           debug_message('x_ship_to_site_id=' || x_ship_to_site_id);
27075           p_sidv_rec.shipping_address_id1  := x_ship_to_site_id;
27076           p_sidv_rec.shipping_address_id2  := '#';
27077           p_sidv_rec.shipping_address_code := 'OKX_CUSTSITE';
27078         END IF;
27079 
27080         okl_supp_invoice_dtls_pub.create_sup_inv_dtls(
27081                        p_api_version => 1.0,
27082                        x_return_status => x_return_status,
27083                        x_msg_count     => x_msg_count,
27084                        x_msg_data      => x_msg_data,
27085                        p_sidv_rec      => p_sidv_rec,
27086                        x_sidv_rec      => x_sidv_rec
27087                      );
27088         IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
27089           x_return_status := OKL_API.G_RET_STS_ERROR;
27090           RAISE addon_failed;
27091         END IF;
27092       ELSE
27093         IF (addon_rec.vendor_invoice_number IS NOT NULL OR
27094             addon_rec.vendor_invoice_date IS NOT NULL OR
27095             addon_rec.ship_to_site_id IS NOT NULL OR
27096             addon_rec.ship_to_site_number IS NOT NULL) THEN
27097            okl_api.set_message(
27098                                G_APP_NAME,
27099                                G_MISSING_VALUE_FOR_LINE,
27100                                'CONTRACT_NUM',
27101                                p_contract_num, --||'/'||addon_rec.line_number,
27102                                'COL_NAME',
27103                                'ADDON:ASSET_VENDOR_ID, ADDON:ASSET_VENDOR_NAME',
27104                                'LINE',
27105                                'Line Number ' || addon_rec.line_number || ' in party_roles_interface'
27106                               );
27107            RAISE addon_failed;
27108         END IF;
27109       END IF;
27110 
27111 
27112       -- Done processing. Now delete the tables.
27113       l_clev_tbl.delete;
27114       l_klev_tbl.delete;
27115       l_cimv_tbl.delete;
27116 
27117     END IF;
27118 
27119 
27120   END LOOP;
27121 
27122    EXCEPTION
27123       WHEN addon_failed THEN
27124          x_return_status := OKL_API.G_RET_STS_ERROR;
27125 
27126 END process_addon;
27127 
27128 ------------------------------------------------------------------------------
27129 -- PROCEDURE process_subsidy
27130 -- This procedure processes and creates subsidy line for each asset.
27131 -- Calls:
27132 -- Called By:
27133 --  load_input_record
27134 ------------------------------------------------------------------------------
27135    PROCEDURE process_subsidy(
27136                              x_return_status OUT NOCOPY VARCHAR2,
27137                              x_msg_count     OUT NOCOPY NUMBER,
27138                              x_msg_data      OUT NOCOPY VARCHAR2,
27139                              p_auth_org_id   IN  NUMBER,
27140                              p_contract_num  IN  VARCHAR2,
27141                              p_chr_id        IN  NUMBER,
27142                              p_asset_line_id IN  NUMBER,
27143                              p_asset_num     IN  VARCHAR2
27144                             ) IS
27145    l_proc_name VARCHAR2(35):= 'PROCESS_SUBSIDY';
27146    subsidy_failed EXCEPTION;
27147 
27148    CURSOR subsidy_csr (p_contract_number VARCHAR2,
27149                        p_asset_number VARCHAR2) IS
27150    SELECT *
27151    FROM   okl_lines_interface
27152    WHERE  line_type = 'ASSET_SUBSIDY'
27153    AND    contract_number_old = p_contract_number
27154    AND    asset_number = p_asset_number;
27155 
27156    l_subsidy_id okl_subsidies_b.id%TYPE;
27157    l_vendor_id  okl_subsidies_b.vendor_id%TYPE;
27158    l_paysite_id NUMBER;
27159    l_payterm_id NUMBER;
27160 
27161    l_asb_rec    okl_asset_subsidy_pvt.asb_rec_type;
27162    x_asb_rec    okl_asset_subsidy_pvt.asb_rec_type;
27163 
27164    l_srfvv_rec  okl_subsidy_rfnd_dtls_pvt.srfvv_rec_type;
27165    x_srfvv_rec  okl_subsidy_rfnd_dtls_pvt.srfvv_rec_type;
27166 
27167    CURSOR vendor_csr (p_name VARCHAR2) IS
27168    SELECT vendor_id
27169    FROM   po_vendors
27170    WHERE  vendor_name = p_name;
27171 
27172    CURSOR sub_id_csr (p_name okl_subsidies_b.name%TYPE,
27173                       p_org  NUMBER) IS
27174    SELECT id
27175    FROM   okl_subsidies_b
27176    WHERE  name   = p_name
27177    AND    org_id = p_org;
27178 
27179    CURSOR paysite_csr (p_code po_vendor_sites_all.vendor_site_code%TYPE,
27180                        p_ven_id NUMBER,
27181                        p_org  NUMBER) IS
27182    SELECT vendor_site_id
27183    FROM   po_vendor_sites_all
27184    WHERE  vendor_site_code = p_code
27185    AND    vendor_id        = p_ven_id
27186    AND    org_id           = p_org;
27187 
27188    CURSOR payterm_csr (p_name okx_payables_terms_v.name%TYPE) IS
27189    SELECT id1
27190    FROM   okx_payables_terms_v
27191    WHERE  NAME   = p_name
27192    AND    status = 'A';
27193 
27194    BEGIN
27195       x_return_status := OKL_API.G_RET_STS_SUCCESS;
27196       debug_message(l_proc_name);
27197 
27198       FOR subsidy_rec IN subsidy_csr (p_contract_num,
27199                                       p_asset_num)
27200       LOOP
27201         debug_message('Processing Subsidy line number: '||subsidy_rec.line_number);
27202         -- validate subsidy
27203         IF (subsidy_rec.subsidy_id IS NOT NULL) THEN
27204            l_subsidy_id := subsidy_rec.subsidy_id;
27205         ELSIF (subsidy_rec.subsidy_name IS NOT NULL) THEN
27206            OPEN sub_id_csr (subsidy_rec.subsidy_name,
27207                             p_auth_org_id);
27208            FETCH sub_id_csr INTO l_subsidy_id;
27209            IF sub_id_csr%NOTFOUND THEN
27210               -- Error
27211               okl_api.set_message(
27212                                   G_APP_NAME,
27213                                   G_INVALID_VALUE,
27214                                   'CONTRACT_NUM',
27215                                   p_contract_num||'/'||subsidy_rec.line_number,
27216                                   'COL_NAME',
27217                                   'SUBSIDY_NAME',
27218                                   'COL_VALUE',
27219                                   subsidy_rec.subsidy_name
27220                                  );
27221               RAISE subsidy_failed;
27222            END IF;
27223            CLOSE sub_id_csr;
27224         ELSE
27225            okl_api.set_message(
27226                                G_APP_NAME,
27227                                G_MISSING_VALUE_FOR_LINE,
27228                                'CONTRACT_NUM',
27229                                p_contract_num||'/'||subsidy_rec.line_number,
27230                                'COL_NAME',
27231                                'SUBSIDY_ID, NAME'
27232                               );
27233            RAISE subsidy_failed;
27234         END IF;
27235 
27236         -- validate vendor
27237         IF (subsidy_rec.subsidy_party_id IS NOT NULL) THEN
27238            l_vendor_id := subsidy_rec.subsidy_party_id;
27239         ELSIF (subsidy_rec.subsidy_party_name IS NOT NULL) THEN
27240            OPEN vendor_csr (subsidy_rec.subsidy_party_name);
27241            FETCH vendor_csr INTO l_vendor_id;
27242            IF vendor_csr%NOTFOUND THEN
27243               okl_api.set_message(
27244                                   G_APP_NAME,
27245                                   G_INVALID_VALUE,
27246                                   'CONTRACT_NUM',
27247                                   p_contract_num||'/'||subsidy_rec.line_number,
27248                                   'COL_NAME',
27249                                   'SUBSIDY_PARTY_ID, NAME',
27250                                   'COL_VALUE',
27251                                   subsidy_rec.subsidy_party_id||', '||subsidy_rec.subsidy_party_name
27252                                  );
27253               RAISE subsidy_failed;
27254            END IF;
27255            CLOSE vendor_csr;
27256         ELSE
27257            l_vendor_id := NULL;
27258         END IF;
27259 
27260         l_asb_rec.subsidy_id               := l_subsidy_id;
27261         l_asb_rec.subsidy_override_amount  := subsidy_rec.subsidy_override_amount;
27262         l_asb_rec.dnz_chr_id               := p_chr_id;
27263         l_asb_rec.asset_cle_id             := p_asset_line_id;
27264         l_asb_rec.vendor_id                := l_vendor_id;
27265 
27266         debug_message('Subsidy: '||l_asb_rec.subsidy_id);
27267         debug_message('Override: '||l_asb_rec.subsidy_override_amount);
27268         debug_message('asset_cle_id: '||l_asb_rec.asset_cle_id);
27269         debug_message('vendor: '||l_asb_rec.vendor_id);
27270 
27271         okl_asset_subsidy_pvt.create_asset_subsidy(
27272                     p_api_version    => 1.0,
27273                     p_init_msg_list  => OKL_API.G_FALSE,
27274                     x_return_status  => x_return_status,
27275                     x_msg_count      => x_msg_count,
27276                     x_msg_data       => x_msg_data,
27277                     p_asb_rec        => l_asb_rec,
27278                     x_asb_rec        => x_asb_rec
27279                    );
27280 
27281         debug_message('okl_asset_subsidy_pvt.create_asset_subsidy: '||x_return_status);
27282 
27283         IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
27284            RAISE subsidy_failed;
27285         END IF;
27286 
27287         -- refund detail if any
27288         IF (subsidy_rec.subsidy_refnd_paysite_id IS NOT NULL
27289             OR
27290             subsidy_rec.subsidy_refnd_paysite_code IS NOT NULL
27291             OR
27292             subsidy_rec.subsidy_refnd_payterm_id IS NOT NULL
27293             OR
27294             subsidy_rec.subsidy_refnd_payterm_name IS NOT NULL
27295             OR
27296             subsidy_rec.subsidy_refnd_paymethod_code IS NOT NULL) THEN
27297 
27298            IF (subsidy_rec.subsidy_refnd_paysite_id IS NOT NULL) THEN
27299                l_paysite_id := subsidy_rec.subsidy_refnd_paysite_id;
27300            ELSIF (subsidy_rec.subsidy_refnd_paysite_code IS NOT NULL) THEN
27301               -- get pay site id
27302               OPEN paysite_csr(subsidy_rec.subsidy_refnd_paysite_code,
27303                                l_vendor_id,
27304                                p_auth_org_id);
27305               FETCH paysite_csr INTO l_paysite_id;
27306               IF paysite_csr%NOTFOUND THEN
27307                 -- error
27308                 okl_api.set_message(
27309                                     G_APP_NAME,
27310                                     G_INVALID_VALUE,
27311                                     'CONTRACT_NUM',
27312                                     p_contract_num||'/'||subsidy_rec.line_number,
27313                                     'COL_NAME',
27314                                     'SUBSIDY_REFND_PAYSITE_ID, CODE',
27315                                     'COL_VALUE',
27316                                      subsidy_rec.subsidy_refnd_paysite_id||', '||subsidy_rec.subsidy_refnd_paysite_code
27317                                    );
27318                 RAISE subsidy_failed;
27319               END IF;
27320               CLOSE paysite_csr;
27321            ELSE
27322               okl_api.set_message(
27323                                   G_APP_NAME,
27324                                   G_MISSING_VALUE_FOR_LINE,
27325                                   'CONTRACT_NUM',
27326                                   p_contract_num||'/'||subsidy_rec.line_number,
27327                                   'COL_NAME',
27328                                   'SUBSIDY_REFND_PAYSITE_ID/CODE'
27329                                  );
27330               RAISE subsidy_failed;
27331            END IF;
27332 
27333            IF (subsidy_rec.subsidy_refnd_payterm_id IS NOT NULL) THEN
27334                l_payterm_id := subsidy_rec.subsidy_refnd_payterm_id;
27335            ELSIF (subsidy_rec.subsidy_refnd_payterm_name IS NOT NULL) THEN
27336                -- get payterm id
27337               OPEN payterm_csr(subsidy_rec.subsidy_refnd_payterm_name);
27338               FETCH payterm_csr INTO l_payterm_id;
27339               IF payterm_csr%NOTFOUND THEN
27340                 -- error
27341                 okl_api.set_message(
27342                                     G_APP_NAME,
27343                                     G_INVALID_VALUE,
27344                                     'CONTRACT_NUM',
27345                                     p_contract_num||'/'||subsidy_rec.line_number,
27346                                     'COL_NAME',
27347                                     'SUBSIDY_REFND_PAYTERM_ID, NAME',
27348                                     'COL_VALUE',
27349                                      subsidy_rec.subsidy_refnd_payterm_id||', '||subsidy_rec.subsidy_refnd_payterm_name
27350                                    );
27351                 RAISE subsidy_failed;
27352               END IF;
27353               CLOSE payterm_csr;
27354            ELSE
27355               okl_api.set_message(
27356                                   G_APP_NAME,
27357                                   G_MISSING_VALUE_FOR_LINE,
27358                                   'CONTRACT_NUM',
27359                                   p_contract_num||'/'||subsidy_rec.line_number,
27360                                   'COL_NAME',
27361                                   'SUBSIDY_REFND_PAYTERM_ID/NAME'
27362                                  );
27363               RAISE subsidy_failed;
27364            END IF;
27365 
27366            l_srfvv_rec.cpl_id              := x_asb_rec.cpl_id;
27367            l_srfvv_rec.vendor_id           := l_vendor_id;
27368            l_srfvv_rec.pay_site_id         := l_paysite_id;
27369            l_srfvv_rec.payment_term_id     := l_payterm_id;
27370            l_srfvv_rec.payment_method_code := subsidy_rec.subsidy_refnd_paymethod_code;
27371            l_srfvv_rec.pay_group_code      := subsidy_rec.subsidy_refnd_paygroup_code;
27372 
27373            debug_message('l_srfvv_rec.cpl_id: '||l_srfvv_rec.cpl_id);
27374            debug_message('l_srfvv_rec.vendor_id: '||l_srfvv_rec.vendor_id);
27375            debug_message('l_srfvv_rec.pay_site_id: '||l_srfvv_rec.pay_site_id);
27376            debug_message('l_srfvv_rec.payment_term_id: '||l_srfvv_rec.payment_term_id);
27377            debug_message('l_srfvv_rec.payment_method_code: '||l_srfvv_rec.payment_method_code);
27378            debug_message('l_srfvv_rec.pay_group_code: '||l_srfvv_rec.pay_group_code);
27379 
27380            okl_subsidy_rfnd_dtls_pvt.create_refund_dtls(
27381                      p_api_version    => 1.0,
27382                      p_init_msg_list  => OKL_API.G_FALSE,
27383                      x_return_status  => x_return_status,
27384                      x_msg_count      => x_msg_count,
27385                      x_msg_data       => x_msg_data,
27386                      p_srfvv_rec      => l_srfvv_rec,
27387                      x_srfvv_rec      => x_srfvv_rec
27388                     );
27389 
27390            debug_message('okl_subsidy_rfnd_dtls_pvt.create_refund_dtls: '||x_return_status);
27391            IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
27392               RAISE subsidy_failed;
27393            END IF;
27394 
27395         END IF; -- refund detail
27396 
27397       END LOOP; --subsidy_rec
27398 
27399    EXCEPTION
27400       WHEN subsidy_failed THEN
27401          x_return_status := OKL_API.G_RET_STS_ERROR;
27402    END process_subsidy;
27403 
27404 ------------------------------------------------------------------------------
27405 -- PROCEDURE check_and_delete
27406 -- This procedure deletes contracts from OLM and
27407 -- stacks Error, if any, and returns ERROR status to calling process.
27408 -- Calls:
27409 ------------------------------------------------------------------------------
27410 
27411    PROCEDURE check_and_delete(
27412                        x_return_status   OUT NOCOPY VARCHAR2,
27413                        x_msg_count       OUT NOCOPY NUMBER,
27414                        x_msg_data        OUT NOCOPY VARCHAR2,
27415                        p_contract_number IN  varchar2,
27416                        p_delete_before_import_yn IN  varchar2 -- akp_delete
27417                       ) IS
27418 
27419     l_proc_name VARCHAR2(35) := 'CHECK_AND_DELETE';
27420     l_contract_id okc_k_headers_b.id%type;
27421 
27422     cursor get_contract_id(p_contract_no varchar2) is
27423       select id
27424       from okc_k_headers_b
27425       where  contract_number = p_contract_no;
27426 
27427     -- udhenuko Bug#5666768 Start
27428     l_ipyv_rec okl_ipy_pvt.ipyv_rec_type;
27429     l_ins_id    okl_ins_policies_b.id%TYPE;
27430     cursor get_ins_id_csr(p_khr_id in number) is
27431     select id
27432     from okl_ins_policies_b where khr_id=p_khr_id;
27433     --Bug#5666768 end
27434 
27435     BEGIN
27436        x_return_status := OKL_API.G_RET_STS_SUCCESS;
27437        debug_message(l_proc_name);
27438 
27439        if (p_contract_number is null) then
27440          return;
27441        end if;
27442 
27443        if (upper(nvl(p_delete_before_import_yn, 'N')) <> 'Y') then
27444          return;
27445        end if;
27446 
27447        debug_message('Contract ' || p_contract_number || ' picked up for delete...');
27448        open get_contract_id(p_contract_number);
27449        fetch get_contract_id into l_contract_id;
27450        if get_contract_id%notfound then
27451          close get_contract_id;
27452          debug_message('Contract ' || p_contract_number || ' not found in OLM for delete...');
27453          return;
27454        else
27455          close get_contract_id;
27456 
27457          -- Call Delete API
27458          okl_contract_pub.delete_contract(
27459           p_api_version   => 1.0,
27460           p_init_msg_list => OKL_API.G_FALSE,
27461           x_return_status => x_return_status,
27462           x_msg_count     => x_msg_count,
27463           x_msg_data      => x_msg_data,
27464           p_contract_id   => l_contract_id );
27465          IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
27466            debug_message('Contract ' || p_contract_number || ' deleted from OLM...');
27467          ELSE
27468            debug_message('Error during delete contract ' || p_contract_number );
27469          END IF;
27470 
27471        --Bug#5666768 - Start. Invoke the TAPI
27472          open get_ins_id_csr(l_contract_id);
27473          fetch get_ins_id_csr into l_ins_id;
27474          if get_ins_id_csr%notfound then
27475             close get_ins_id_csr;
27476        	    debug_message('Insurance Policy for Contract ' || p_contract_number || ' not found..');
27477             return;
27478 	 end if;
27479          close get_ins_id_csr;
27480          l_ipyv_rec.id:=l_ins_id;
27481          OKL_INS_POLICIES_PUB.delete_ins_policies(p_api_version   => 1.0,
27482                                                   p_init_msg_list => OKL_API.G_FALSE,
27483                                                   x_return_status => x_return_status,
27484                                                   x_msg_count     => x_msg_count,
27485                                                   x_msg_data      => x_msg_data,
27486                                                   p_ipyv_rec      => l_ipyv_rec);
27487          IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
27488            debug_message('Contract ' || p_contract_number || ' deleted from OLM after delete_ins_policies...');
27489          ELSE
27490            debug_message('Error during  OKL_INS_POLICIES_PUB.delete_ins_policies ' || p_contract_number );
27491          END IF;
27492        end if;
27493        --Bug#5666768 end
27494 
27495     END check_and_delete;
27496 
27497 ------------------------------------------------------------------------------
27498 -- PROCEDURE Load_Input_Record
27499 -- It Reads data from Interface Tables and Validates. During process of validation it
27500 -- stacks Error, if any, and returns ERROR status to calling process.
27501 -- Calls:
27502 --  get_agreement_id
27503 --  get_product_id
27504 --  create_party_role
27505 --  create_contact
27506 --  create_header_rules
27507 --  get_lse_id
27508 --  get_inventory_org_item_id
27509 --  get_asset_id
27510 --  get_install_site_id
27511 --  process_other_line
27512 --  create_line_rules
27513 --  process_party_role
27514 --  process_term
27515 --  create_payment_rule_group
27516 --  check_payment_frequency_code
27517 --  create_payment_other_rules
27518 --  report_error
27519 --  update_interface_status
27520 -- Called By:
27521 --  process_record
27522 ------------------------------------------------------------------------------
27523   PROCEDURE Load_Input_Record(
27524                             p_init_msg_list    IN VARCHAR2,
27525                             x_return_status    OUT NOCOPY VARCHAR2,
27526                             x_msg_count        OUT NOCOPY NUMBER,
27527                             x_msg_data         OUT NOCOPY VARCHAR2,
27528                             p_batch_number     IN  VARCHAR2,
27529                             p_start_date_from  IN  DATE,
27530                             p_start_date_to    IN  DATE,
27531                             p_contract_number  IN  VARCHAR2,
27532                             p_customer_number  IN  VARCHAR2,
27533                             x_total_loaded     OUT NOCOPY NUMBER
27534                            ) IS
27535 
27536   -- local variables
27537   l_proc_name           VARCHAR2(35)  := 'LOAD_INPUT_RECORD';
27538   l_progress            VARCHAR2(3)   := NULL;
27539   x_master_lease_id     OKC_K_HEADERS_V.ID%TYPE;
27540   x_customer_account_id NUMBER;
27541   x_inventory_org_id    NUMBER;
27542   x_inventory_item_id   NUMBER;
27543   x_lse_id              NUMBER;
27544   x_id1                 okx_assets_v.id1%TYPE;
27545   x_id2                 okx_assets_v.id2%TYPE;
27546   l_no_of_lines         NUMBER;
27547   l_ib_line_count       NUMBER;
27548 --  l_new_yn              VARCHAR2(1);
27549   x_comb_id             NUMBER;
27550   x_rgp_id              NUMBER;
27551   l_contract_number_old_prev okl_header_interface.contract_number_old%TYPE;
27552   l_line_number_prev    okl_lines_interface.line_number%TYPE;
27553   l_asset_number_prev   okl_payments_interface.asset_number%TYPE;
27554   l_payment_type_code_prev   okl_payments_interface.payment_type_code%TYPE;
27555   l_pmnt_sch_num_prev   NUMBER;
27556   l_start_date_prev     DATE;
27557   l_number_of_periods_prev NUMBER;
27558   x_pmnt_freq_id        okx_tuom_v.id1%TYPE;
27559   x_uom_code            okx_tuom_v.uom_code%TYPE;
27560   l_mult_factor         NUMBER;
27561   l_current_start_date  DATE;
27562   x_install_site_id     okx_party_site_uses_v.id1%TYPE;
27563   l_rule_create_flag    VARCHAR2(1) := 'Y';
27564 
27565   x_inv_item_id_prev    NUMBER;
27566   p_inv_item_id_prev    NUMBER;
27567   p_line_type_prev      VARCHAR2(35);
27568   x_ship_to_site_id     okx_party_site_uses_v.id1%TYPE;
27569   l_rg_id               NUMBER;
27570 
27571   x_cle_id              okc_k_lines_v.id%TYPE;
27572   p_cle_id              okc_k_lines_v.id%TYPE;
27573 
27574   -- Header Rec
27575   p_chrv_rec        chrv_rec_type;
27576   p_khrv_rec        khrv_rec_type;
27577   x_chrv_rec        chrv_rec_type;
27578   x_khrv_rec        khrv_rec_type;
27579 
27580   l_chrv_rec        chrv_rec_type;
27581   l_khrv_rec        khrv_rec_type;
27582 
27583   l_gvev_rec        gvev_rec_type;
27584   x_gvev_rec        gvev_rec_type;
27585 
27586   -- Party Role Rec
27587   p_cplv_rec        cplv_rec_type;
27588   x_cplv_rec        cplv_rec_type;
27589 
27590   -- Lines Rec
27591   p_clev_fin_rec   clev_rec_type;
27592   p_klev_fin_rec   klev_rec_type;
27593   p_cimv_model_rec cimv_rec_type;
27594   p_clev_fa_rec    clev_rec_type;
27595   p_cimv_fa_rec    cimv_rec_type;
27596   p_talv_fa_rec    talv_rec_type;
27597   p_itiv_ib_tbl    itiv_tbl_type;
27598   p_sidv_rec       sidv_rec_type;
27599   x_sidv_rec       sidv_rec_type;
27600 
27601   x_clev_fin_rec   clev_rec_type;
27602   x_clev_model_rec clev_rec_type;
27603   x_clev_fa_rec    clev_rec_type;
27604   x_clev_ib_rec    clev_rec_type;
27605 
27606   l_talv_rec       tlpv_rec_type;
27607   x_talv_rec       tlpv_rec_type;
27608 
27609   x_slh_rulv_rec   rulv_rec_type;
27610 
27611   l_adpv_rec      adpv_rec_type;
27612   x_adpv_rec      adpv_rec_type;
27613   l_tal_id        NUMBER;
27614 
27615   l_msg_tbl       Okl_Qa_Check_Pub.msg_tbl_type;
27616 
27617   l_intf_h_rec      intf_h_rec_type;
27618   okl_header_rec    intf_h_rec_type; --cklee
27619 
27620   l_header_template template_h_rec_type; -- Header template record
27621 
27622   l_service_line_id        OKC_K_LINES_V.ID%TYPE;
27623   l_fee_line_id            OKC_K_LINES_V.ID%TYPE;
27624   l_usage_line_id          OKC_K_LINES_V.ID%TYPE;
27625 
27626   x_update_status          VARCHAR2(1);
27627 
27628   header_validation_failed EXCEPTION;
27629   line_validation_failed   EXCEPTION;
27630   load_failed              EXCEPTION;
27631 
27632   --Bug# 13478101
27633   l_pdt_parameter_rec OKL_SETUPPRODUCTS_PUB.pdt_parameters_rec_type;
27634   x_rulv_tbl OKL_RULE_PUB.rulv_tbl_type;
27635 
27636   CURSOR l_var_int_sched_csr(p_chr_id IN NUMBER) IS
27637   SELECT rgp.id rgp_id,
27638          slh.id slh_id
27639    FROM okc_rule_groups_b rgp,
27640         okc_rules_b slh,
27641         okl_strm_type_b sty
27642    WHERE rgp.chr_id = p_chr_id
27643    AND   rgp.dnz_chr_id = p_chr_id
27644    AND   rgp.rgd_code = 'LALEVL'
27645    AND   slh.rgp_id = rgp.id
27646    AND   slh.dnz_chr_id = rgp.dnz_chr_id
27647    AND   slh.rule_information_category = 'LASLH'
27648    AND   sty.id = slh.object1_id1
27649    AND   slh.jtot_object1_code = 'OKL_STRMTYP'
27650    AND   sty.stream_type_purpose = 'VARIABLE_INTEREST_SCHEDULE';
27651 
27652   l_var_int_sched_rec l_var_int_sched_csr%ROWTYPE;
27653   --Bug# 13478101
27654 
27655     CURSOR le_entity(p_org_id NUMBER ,
27656 	p_legal_entity NUMBER) IS
27657   select 1 from
27658   xle_le_ou_ledger_v
27659   where OPERATING_UNIT_ID=p_org_id
27660   and LEGAL_ENTITY_ID=p_legal_entity; -- cusrsor to get LE for  an OU
27661 
27662 
27663   CURSOR proc_cob_csr (p_batch_number    VARCHAR2,
27664                        p_start_date_from DATE,
27665                        p_start_date_to   DATE,
27666                        p_contract_number VARCHAR2,
27667                        p_customer_number VARCHAR2 ) IS
27668 
27669   SELECT       BATCH_NUMBER
27670       ,TEMPLATE_NUMBER
27671      ,STATUS
27672      ,CREATED_BY
27673      ,DATE_CREATED
27674      ,DATE_CREATED_IN_OKL
27675      ,APPLICATION_CODE
27676      ,CONTRACT_CATEGORY
27677      ,CONTRACT_NUMBER_OLD
27678      ,CONTRACT_SOURCE
27679      ,CONTRACT_NUMBER
27680      ,CUSTOMER_NUMBER
27681      ,CUSTOMER_ID
27682      ,CUSTOMER_ACCOUNT_NUMBER
27683      ,CUSTOMER_ACCOUNT_ID
27684      ,START_DATE
27685      ,IMPORT_REQUEST_STAGE
27686      ,CURRENCY_CODE
27687      ,CUSTOMER_PO_NUMBER
27688      ,DATE_SIGNED
27689      ,DATE_APPROVED
27690      ,ACCEPTANCE_METHOD_CODE
27691      ,CONSUMER_CREDIT_ACT_DEAL_FLAG
27692      ,TERM
27693      ,CONVERTED_ACCOUNT
27694      ,ACCEPTED_DATE
27695      ,DEAL_TYPE_CODE
27696      ,EXPECTED_DELIVERY_DATE
27697      ,CONTRACT_DESCRIPTION
27698      ,SALESPERSON_NAME
27699      ,SALESPERSON_ID
27700      ,PRIVATE_LABEL_NUMBER
27701      ,PRIVATE_LABEL_ID
27702      ,PRIVATE_LABEL_URL
27703      ,PROGRAM_AGREEMENT_NUMBER
27704      ,PROGRAM_AGREEMENT_ID
27705      ,PROGRAM_VENDOR_NAME
27706      ,PROGRAM_VENDOR_ID
27707      ,MASTER_LEASE_AGREEMENT_NUMBER
27708      ,MASTER_LEASE_AGREEMENT_ID
27709      ,PRODUCT_NAME
27710      ,PRODUCT_ID
27711      ,CALCULATE_RESIDUAL_INSURANCE
27712      ,REBOOK_LIMIT_DATE
27713      ,IMPORT_REQUEST_ID
27714      ,END_OF_TERM_OPTION
27715      ,END_OF_TERM_AMOUNT
27716      ,MID_TERM_OPTION
27717      ,MID_TERM_AMOUNT
27718      ,SECURITY_DEPOSIT_HOLD_FLAG
27719      ,SECURITY_DEPOSIT_NET_FLAG
27720      ,SECURITY_DEPOSIT_DATE
27721      ,RENEWAL_NOTICE_DAYS
27722      ,RENEWAL_OPTION
27723      ,RENEWAL_AMOUNT
27724      ,LATE_INTEREST_HELD_UNTIL_DATE
27725      ,LATE_INTEREST_EXEMPT_FLAG
27726      ,LATE_INTEREST_PRODUCT_CODE
27727      ,LATE_CHARGE_HELD_UNTIL_DATE
27728      ,LATE_CHARGE_PRODUCT_CODE
27729      ,LATE_CHARGE_EXEMPT_FLAG
27730      ,VARIABLE_RATE
27731      ,CONVERT_TYPE
27732      ,CONVERSION_METHOD
27733      ,DATE_OF_CONVERSION
27734      ,CONVERT_BY_DATE
27735      ,VARIABLE_METHOD
27736      ,INDEX_NAME
27737      ,BASE_RATE
27738      ,ADDER
27739      ,MINIMUM_RATE
27740      ,MAXIMUM_RATE
27741      ,TOLERANCE
27742      ,ADJUSTMENT_FREQUENCY
27743      ,DAYS_IN_YEAR
27744      ,DAYS_IN_MONTH
27745      ,INTEREST_METHOD
27746      ,INTEREST_START_DATE
27747      ,METHOD_OF_CALCULATION
27748      ,FORMULA_NAME
27749      ,CAPITALIZE_FLAG
27750      ,NON_NOTIFICATION_FLAG
27751      ,TAX_WITHHOLDING_FLAG
27752      ,TAX_CALC_FORMULA_NAME
27753      ,TAX_OWNER
27754      ,FACTORING_DATE
27755      ,FACTORING_PERCENTAGE
27756      ,FACTORING_DISCOUNT_RATE
27757      ,EVERGREEN_ELIGIBLE_FLAG
27758      ,BILL_TO_ADDRESS_ID
27759      ,BILL_TO_ADDRESS
27760      ,BANK_ACCOUNT_ID
27761      ,BANK_ACCOUNT_NUMBER
27762      ,REASON_FOR_INVOICE_REVIEW
27763      ,INVOICE_REVIEW_UNTIL_DATE
27764      ,INVOICE_FORMAT_ID
27765      ,INVOICE_FORMAT_CODE
27766      ,PRINT_LEAD_DAYS   --hariven bug 5359935
27767      ,REVIEW_INVOICE_FLAG
27768      ,PAYMENT_METHOD_ID
27769      ,PAYMENT_METHOD
27770      ,AUTHORING_ORG_ID
27771      ,INVENTORY_ORGANIZATION_ID
27772      ,POLICY_NUMBER
27773      ,POLICY_EFFECTIVE_FROM
27774      ,POLICY_EFFECTIVE_TO
27775      ,COVERED_AMOUNT
27776      ,DEDUCTIBLE_AMOUNT
27777      ,ENDORSEMENT
27778      ,NAME_OF_INSURED
27779      ,LESSOR_INSURED_FLAG
27780      ,LESSOR_PAYEE_FLAG
27781      ,INSURANCE_COMPANY_NAME
27782      ,INSURANCE_COMPANY_ID
27783      ,INSURANCE_COMPANY_SITE_NAME
27784      ,INSURANCE_COMPANY_SITE_ID
27785      ,AGENT_NAME
27786      ,AGENT_ID
27787      ,AGENT_ADDRESS_SITE_NAME
27788      ,AGENT_ADDRESS_SITE_ID
27789      ,PROOF_DUE_DATE
27790      ,PROOF_PROVIDED_DATE
27791      ,PREFUNDING_ELIGIBLE_FLAG
27792      ,PRIVATE_ACTIVITY_BOND_FLAG
27793      ,RVI_AUTO_CALCULATE_FLAG
27794      ,RVI_GUARANTEED_AMOUNT
27795      ,RVI_PRESENT_GUARANTEED_AMOUNT
27796      ,RVI_PREMIUM_AMOUNT
27797      ,RVI_RATE
27798      ,FLOOR_PRICE_FORMULA
27799      ,REMKT_SALE_PRICE_FORMULA
27800      ,REPURCHASE_QUOTE_OPTION
27801      ,REPURCHASE_QUOTE_FORMULA
27802      ,SALE_PRICE_OPTION
27803      ,SALE_PRICE_AMOUNT
27804      ,SALE_PRICE_FORMULA
27805      ,SALE_PRICE_PRORATE
27806      ,DISCOUNT_RATE_OPTION
27807      ,DISCOUNT_RATE_AMOUNT
27808      ,DISCOUNT_RATE_FORMULA
27809      ,DISCOUNT_RATE_PRORATE
27810      ,QUOTE_FEE_OPTION
27811      ,QUOTE_FEE_AMOUNT
27812      ,QUOTE_FEE_FORMULA
27813      ,QUOTE_FEE_PRORATE
27814      ,ERT_PURCHASE_OPT
27815      ,ERT_PURCHASE_OPT_TYPE
27816      ,ERT_PURCHASE_OPT_AMOUNT
27817      ,ERT_PURCHASE_OPT_FORMULA
27818      ,ERT_PURCHASE_OPT_PRORATE
27819      ,ERT_PURCHASE_OPT_MAX_OPT
27820      ,ERT_PURCHASE_OPT_MAX_AMT
27821      ,ERT_PURCHASE_OPT_MAX_FORMULA
27822      ,ERT_PURCHASE_OPT_MIN_OPT
27823      ,ERT_PURCHASE_OPT_MIN_AMT
27824      ,ERT_PURCHASE_OPT_MIN_FORMULA
27825      ,EOT_PURCHASE_OPT
27826      ,EOT_PURCHASE_OPT_TYPE
27827      ,EOT_PURCHASE_OPT_AMOUNT
27828      ,EOT_PURCHASE_OPT_FORMULA
27829      ,EOT_PURCHASE_OPT_PRORATE
27830      ,EOT_PURCHASE_OPT_MAX_OPT
27831      ,EOT_PURCHASE_OPT_MAX_AMT
27832      ,EOT_PURCHASE_OPT_MAX_FORMULA
27833      ,EOT_PURCHASE_OPT_MIN_OPT
27834      ,EOT_PURCHASE_OPT_MIN_AMT
27835      ,EOT_PURCHASE_OPT_MIN_FORMULA
27836      ,TQP_ERL_TERMINATION_ALWD_FLAG
27837      ,TQP_PRT_TERMINATION_ALWD_FLAG
27838      ,QUOTE_EFFECTIVE_DAYS
27839      ,QUOTE_EFF_MAX_DAYS
27840      ,EOT_TOLERANCE_DAYS
27841      ,PRT_TERMINATION_APPROVAL_REQ
27842      ,PRT_TERMINATION_ALLOWED_FLAG
27843      ,GAIN_LOSS_APPROVAL_REQ
27844      ,GAIN_LOSS_NET_QUOTE_OPT
27845      ,GAIN_LOSS_NET_QUOTE_AMT
27846      ,GAIN_LOSS_NET_QUOTE_FORMULA
27847      ,GAIN_LOSS_TOLERANCE_ALLOWED
27848      ,QUOTE_RCPT_CONTRACT_ROLE
27849      ,QUOTE_APPROVER_CONTRACT_ROLE
27850      ,QUOTE_CRTSY_COPY_CONTRACT_ROLE
27851      ,ERT_QUOTE_CALC_TERM_OPTION
27852      ,ERT_QUOTE_CALC_TERM_FORMULA
27853      ,ERT_CONTRACT_OBLIG_OPT
27854      ,ERT_CONTRACT_OBLIG_AMOUNT
27855      ,ERT_CONTRACT_OBLIG_FORMULA
27856      ,ERT_CONTRACT_OBLIG_PRORATE
27857      ,ERT_DISC_RATE_OPT
27858      ,ERT_DISC_RATE_AMOUNT
27859      ,ERT_DISC_RATE_FORMULA
27860      ,ERT_DISC_RATE_PRORATE
27861      ,ERT_QUOTE_FEE_OPT
27862      ,ERT_QUOTE_FEE_AMOUNT
27863      ,ERT_QUOTE_FEE_FORMULA
27864      ,ERT_QUOTE_FEE_PRORATE
27865      ,ERT_RETURN_FEE_OPTION
27866      ,ERT_RETURN_FEE_AMOUNT
27867      ,ERT_RETURN_FEE_FORMULA
27868      ,ERT_RETURN_FEE_PRORATE
27869      ,ERT_ROLL_INCTV_OPTION
27870      ,ERT_ROLL_INCTV_AMOUNT
27871      ,ERT_ROLL_INCTV_FORMULA
27872      ,ERT_ROLL_INCTV_PRORATE
27873      ,ERT_SECU_DEP_DISPO_OPTION
27874      ,ERT_SECU_DEP_DISPO_AMOUNT
27875      ,ERT_SECU_DEP_DISPO_FORMULA
27876      ,ERT_SECU_DEP_DISPO_PRORATE
27877      ,ERT_TERM_PENALTY_OPTION
27878      ,ERT_TERM_PENALTY_AMOUNT
27879      ,ERT_TERM_PENALTY_FORMULA
27880      ,ERT_TERM_PENALTY_PRORATE
27881      ,ERT_TERM_PENALTY_CAP_OPTION
27882      ,ERT_TERM_PENALTY_CAP_AMOUNT
27883      ,ERT_TERM_PENALTY_CAP_FORMULA
27884      ,ERT_EST_PROP_TAX_OPTION
27885      ,ERT_EST_PROP_TAX_AMOUNT
27886      ,ERT_EST_PROP_TAX_FORMULA
27887      ,ERT_EST_PROP_TAX_PRORATE
27888      ,ERT_CONTR_FEES_OPTION
27889      ,ERT_OUTSTND_BAL_OPTION
27890      ,ERT_SERV_MANT_OPTION
27891      ,EOT_QUOTE_CALC_TERM_OPTION
27892      ,EOT_QUOTE_CALC_TERM_FORMULA
27893      ,EOT_CONTRACT_OBLIG_OPT
27894      ,EOT_CONTRACT_OBLIG_AMOUNT
27895      ,EOT_CONTRACT_OBLIG_FORMULA
27896      ,EOT_CONTRACT_OBLIG_PRORATE
27897      ,EOT_DISC_RATE_OPT
27898      ,EOT_DISC_RATE_AMOUNT
27899      ,EOT_DISC_RATE_FORMULA
27900      ,EOT_DISC_RATE_PRORATE
27901      ,EOT_QUOTE_FEE_OPT
27902      ,EOT_QUOTE_FEE_AMOUNT
27903      ,EOT_QUOTE_FEE_FORMULA
27904      ,EOT_QUOTE_FEE_PRORATE
27905      ,EOT_RETURN_FEE_OPTION
27906      ,EOT_RETURN_FEE_AMOUNT
27907      ,EOT_RETURN_FEE_FORMULA
27908      ,EOT_RETURN_FEE_PRORATE
27909      ,EOT_ROLL_INCTV_OPTION
27910      ,EOT_ROLL_INCTV_AMOUNT
27911      ,EOT_ROLL_INCTV_FORMULA
27912      ,EOT_ROLL_INCTV_PRORATE
27913      ,EOT_SECU_DEP_DISPO_OPTION
27914      ,EOT_SECU_DEP_DISPO_AMOUNT
27915      ,EOT_SECU_DEP_DISPO_FORMULA
27916      ,EOT_SECU_DEP_DISPO_PRORATE
27917      ,EOT_TERM_PENALTY_OPTION
27918      ,EOT_TERM_PENALTY_AMOUNT
27919      ,EOT_TERM_PENALTY_FORMULA
27920      ,EOT_TERM_PENALTY_PRORATE
27921      ,EOT_TERM_PENALTY_CAP_OPTION
27922      ,EOT_TERM_PENALTY_CAP_AMOUNT
27923      ,EOT_TERM_PENALTY_CAP_FORMULA
27924      ,EOT_EST_PROP_TAX_OPTION
27925      ,EOT_EST_PROP_TAX_AMOUNT
27926      ,EOT_EST_PROP_TAX_FORMULA
27927      ,EOT_EST_PROP_TAX_PRORATE
27928      ,EOT_CONTR_FEES_OPTION
27929      ,EOT_OUTSTND_BAL_OPTION
27930      ,EOT_SERV_MANT_OPTION
27931      ,EVERGREEN_PASSTHRU_FEES
27932      ,EVERGREEN_PASSTHRU_PERCENT
27933      ,LIEN_TYPE
27934      ,FILING_NUMBER
27935      ,FILING_DATE
27936      ,FILING_STATUS
27937      ,LIEN_HOLDER_NAME
27938      ,LIEN_HOLDER_ID
27939      ,JURISDICTION
27940      ,SUB_JURISDICTION
27941      ,LIEN_EXPIRATION_DATE
27942      ,LIEN_CONTINUATION_NUMBER
27943      ,LIEN_CONTINUATION_DATE
27944      ,TITLE_TYPE
27945      ,TITLE_ISSUER_NAME
27946      ,TITLE_ISSUER_ID
27947      ,TITLE_DATE
27948      ,TITLE_NUMBER
27949      ,REGISTRATION_NUMBER
27950      ,LOCATION
27951      ,TITLE_CUSTODIAN_NAME
27952      ,TITLE_CUSTODIAN_ID
27953      ,PAYEE_SITE
27954      ,REGISTRATION_LOCATION
27955      ,REG_EXPIRATION_DATE
27956      ,CREDIT_LINE_ID
27957      ,CREDIT_LINE_NUMBER
27958      ,PRTFL_APPROVAL_REQ
27959      ,PRTFL_ASSGN_GROUP
27960      ,PRTFL_BUDGET_AMT_OPT
27961      ,PRTFL_BUDGET_FIXED_AMT
27962      ,PRTFL_BUDGET_AMT_FORMULA
27963      ,PRTFL_DAYS_FROM_CON_EXPR
27964      ,PRTFL_STRATEGY
27965      ,PROP_TAX_APPLICABLE
27966      ,PROP_TAX_LEASE_REP
27967      ,MEX_TAX_SUB_BASIC_WTHLD
27968      ,MEX_TAX_CALC_FORMULA
27969      ,AUS_TAX_STAMP_DUTY
27970      ,CURRENCY_CONVERSION_TYPE
27971      ,CURRENCY_CONVERSION_RATE
27972      ,CURRENCY_CONVERSION_DATE
27973      ,ASSIGNABLE_YN
27974      ,LESSEE_VENDOR_ID
27975      ,LESSEE_VENDOR_NAME
27976      ,LESSEE_VENDOR_SITE_ID
27977      ,LESSEE_VENDOR_SITE_CODE
27978      ,INSURANCE_COMPANY_NUMBER
27979      ,INSURANCE_COMPANY_SITE_NUMBER
27980      ,AGENT_NUMBER
27981      ,AGENT_ADDRESS_SITE_NUMBER
27982      ,CASH_APPL_RULE_NAME
27983      ,PROP_TAX_BILL_METHOD
27984      ,GAIN_LOSS_TOLRNC_ALLWD_AMT
27985      ,GAIN_LOSS_TOLRNC_ALLWD_FRML
27986      ,GAIN_LOSS_TOLRNC_BASIS
27987      ,GAIN_LOSS_APPRV_PROC_FRML
27988      ,ERT_ABSORBED_FEE_FRML
27989      ,ERT_EXPENSE_FEE_FRML
27990      ,ERT_FINANCED_FEE_FRML
27991      ,ERT_GENERAL_FEE_FRML
27992      ,ERT_INCOME_FEE_FRML
27993      ,ERT_MISC_FEE_FRML
27994      ,ERT_PASSTHRU_FEE_FRML
27995      ,ERT_ROLLOVER_FEE_FRML
27996      ,EOT_ABSORBED_FEE_FRML
27997      ,EOT_EXPENSE_FEE_FRML
27998      ,EOT_FINANCED_FEE_FRML
27999      ,EOT_GENERAL_FEE_FRML
28000      ,EOT_INCOME_FEE_FRML
28001      ,EOT_MISC_FEE_FRML
28002      ,EOT_PASSTHRU_FEE_FRML
28003      ,EOT_ROLLOVER_FEE_FRML
28004      ,DELETE_BEFORE_IMPORT_YN
28005      ,ST_UPDATE_LINES_FROM_CONTRACT
28006      ,ST_INTEREST_DISCLOSED
28007      ,ST_TRANSFER_OF_TITLE
28008      ,ST_SALE_AND_LEASE_BACK
28009      ,ST_PURCHASE_OF_LEASE
28010      ,ST_EQUIPMENT_USAGE
28011      ,ST_EQUIPMENT_AGE
28012      ,ST_ASSET_UPFRONT_TAX
28013      ,ST_BILL_STREAM_TYPE_CODE
28014      ,ST_BILL_STREAM_PURPOSE_CODE
28015      ,ST_FIN_STREAM_TYPE_CODE
28016      ,ST_FIN_STREAM_PURPOSE_CODE
28017      ,ST_CAP_STREAM_TYPE_CODE
28018      ,ST_CAP_STREAM_PURPOSE_CODE
28019      ,ST_TAX_SCHEDULE_APPLIES_FLAG
28020   FROM   okl_header_interface
28021   WHERE  (
28022           batch_number        = p_batch_number
28023           OR
28024           contract_number_old = p_contract_number
28025           OR
28026           (
28027            customer_number    = p_customer_number
28028            AND
28029            start_date         between p_start_date_from AND p_start_date_to
28030           )
28031          )
28032   AND    nvl(scheduled_worker_id,'NONE') = g_instance_number
28033   AND    status = 'INTERFACED'
28034   AND    import_request_stage <> 'NEW' ; --Process INTERFACED contract upto import_request_stage
28035 
28036   --
28037   -- Cursor to fetch Header Interface Records
28038   --
28039 
28040   CURSOR okl_header_csr (p_batch_number    VARCHAR2,
28041                          p_start_date_from DATE,
28042                          p_start_date_to   DATE,
28043                          p_contract_number VARCHAR2,
28044                          p_customer_number VARCHAR2 ) IS
28045 
28046   SELECT
28047       BATCH_NUMBER
28048      ,TEMPLATE_NUMBER
28049      ,STATUS
28050      ,CREATED_BY
28051      ,DATE_CREATED
28052      ,DATE_CREATED_IN_OKL
28053      ,APPLICATION_CODE
28054      ,CONTRACT_CATEGORY
28055      ,CONTRACT_NUMBER_OLD
28056      ,CONTRACT_SOURCE
28057      ,CONTRACT_NUMBER
28058      ,CUSTOMER_NUMBER
28059      ,CUSTOMER_ID
28060      ,CUSTOMER_ACCOUNT_NUMBER
28061      ,CUSTOMER_ACCOUNT_ID
28062      ,START_DATE
28063      ,IMPORT_REQUEST_STAGE
28064      ,CURRENCY_CODE
28065      ,CUSTOMER_PO_NUMBER
28066      ,DATE_SIGNED
28067      ,DATE_APPROVED
28068      ,ACCEPTANCE_METHOD_CODE
28069      ,CONSUMER_CREDIT_ACT_DEAL_FLAG
28070      ,TERM
28071      ,CONVERTED_ACCOUNT
28072      ,ACCEPTED_DATE
28073      ,DEAL_TYPE_CODE
28074      ,EXPECTED_DELIVERY_DATE
28075      ,CONTRACT_DESCRIPTION
28076      ,SALESPERSON_NAME
28077      ,SALESPERSON_ID
28078      ,PRIVATE_LABEL_NUMBER
28079      ,PRIVATE_LABEL_ID
28080      ,PRIVATE_LABEL_URL
28081      ,PROGRAM_AGREEMENT_NUMBER
28082      ,PROGRAM_AGREEMENT_ID
28083      ,PROGRAM_VENDOR_NAME
28084      ,PROGRAM_VENDOR_ID
28085      ,MASTER_LEASE_AGREEMENT_NUMBER
28086      ,MASTER_LEASE_AGREEMENT_ID
28087      ,PRODUCT_NAME
28088      ,PRODUCT_ID
28089      ,CALCULATE_RESIDUAL_INSURANCE
28090      ,REBOOK_LIMIT_DATE
28091      ,IMPORT_REQUEST_ID
28092      ,END_OF_TERM_OPTION
28093      ,END_OF_TERM_AMOUNT
28094      ,MID_TERM_OPTION
28095      ,MID_TERM_AMOUNT
28096      ,SECURITY_DEPOSIT_HOLD_FLAG
28097      ,SECURITY_DEPOSIT_NET_FLAG
28098      ,SECURITY_DEPOSIT_DATE
28099      ,RENEWAL_NOTICE_DAYS
28100      ,RENEWAL_OPTION
28101      ,RENEWAL_AMOUNT
28102      ,LATE_INTEREST_HELD_UNTIL_DATE
28103      ,LATE_INTEREST_EXEMPT_FLAG
28104      ,LATE_INTEREST_PRODUCT_CODE
28105      ,LATE_CHARGE_HELD_UNTIL_DATE
28106      ,LATE_CHARGE_PRODUCT_CODE
28107      ,LATE_CHARGE_EXEMPT_FLAG
28108      ,VARIABLE_RATE
28109      ,CONVERT_TYPE
28110      ,CONVERSION_METHOD
28111      ,DATE_OF_CONVERSION
28112      ,CONVERT_BY_DATE
28113      ,VARIABLE_METHOD
28114      ,INDEX_NAME
28115      ,BASE_RATE
28116      ,ADDER
28117      ,MINIMUM_RATE
28118      ,MAXIMUM_RATE
28119      ,TOLERANCE
28120      ,ADJUSTMENT_FREQUENCY
28121      ,DAYS_IN_YEAR
28122      ,DAYS_IN_MONTH
28123      ,INTEREST_METHOD
28124      ,INTEREST_START_DATE
28125      ,METHOD_OF_CALCULATION
28126      ,FORMULA_NAME
28127      ,CAPITALIZE_FLAG
28128      ,NON_NOTIFICATION_FLAG
28129      ,TAX_WITHHOLDING_FLAG
28130      ,TAX_CALC_FORMULA_NAME
28131      ,TAX_OWNER
28132      ,FACTORING_DATE
28133      ,FACTORING_PERCENTAGE
28134      ,FACTORING_DISCOUNT_RATE
28135      ,EVERGREEN_ELIGIBLE_FLAG
28136      ,BILL_TO_ADDRESS_ID
28137      ,BILL_TO_ADDRESS
28138      ,BANK_ACCOUNT_ID
28139      ,BANK_ACCOUNT_NUMBER
28140      ,REASON_FOR_INVOICE_REVIEW
28141      ,INVOICE_REVIEW_UNTIL_DATE
28142      ,INVOICE_FORMAT_ID
28143      ,INVOICE_FORMAT_CODE
28144      ,PRINT_LEAD_DAYS --hariven bug 5359935
28145      ,REVIEW_INVOICE_FLAG
28146      ,PAYMENT_METHOD_ID
28147      ,PAYMENT_METHOD
28148      ,AUTHORING_ORG_ID
28149      ,INVENTORY_ORGANIZATION_ID
28150      ,POLICY_NUMBER
28151      ,POLICY_EFFECTIVE_FROM
28152      ,POLICY_EFFECTIVE_TO
28153      ,COVERED_AMOUNT
28154      ,DEDUCTIBLE_AMOUNT
28155      ,ENDORSEMENT
28156      ,NAME_OF_INSURED
28157      ,LESSOR_INSURED_FLAG
28158      ,LESSOR_PAYEE_FLAG
28159      ,INSURANCE_COMPANY_NAME
28160      ,INSURANCE_COMPANY_ID
28161      ,INSURANCE_COMPANY_SITE_NAME
28162      ,INSURANCE_COMPANY_SITE_ID
28163      ,AGENT_NAME
28164      ,AGENT_ID
28165      ,AGENT_ADDRESS_SITE_NAME
28166      ,AGENT_ADDRESS_SITE_ID
28167      ,PROOF_DUE_DATE
28168      ,PROOF_PROVIDED_DATE
28169      ,PREFUNDING_ELIGIBLE_FLAG
28170      ,PRIVATE_ACTIVITY_BOND_FLAG
28171      ,RVI_AUTO_CALCULATE_FLAG
28172      ,RVI_GUARANTEED_AMOUNT
28173      ,RVI_PRESENT_GUARANTEED_AMOUNT
28174      ,RVI_PREMIUM_AMOUNT
28175      ,RVI_RATE
28176      ,FLOOR_PRICE_FORMULA
28177      ,REMKT_SALE_PRICE_FORMULA
28178      ,REPURCHASE_QUOTE_OPTION
28179      ,REPURCHASE_QUOTE_FORMULA
28180      ,SALE_PRICE_OPTION
28181      ,SALE_PRICE_AMOUNT
28182      ,SALE_PRICE_FORMULA
28183      ,SALE_PRICE_PRORATE
28184      ,DISCOUNT_RATE_OPTION
28185      ,DISCOUNT_RATE_AMOUNT
28186      ,DISCOUNT_RATE_FORMULA
28187      ,DISCOUNT_RATE_PRORATE
28188      ,QUOTE_FEE_OPTION
28189      ,QUOTE_FEE_AMOUNT
28190      ,QUOTE_FEE_FORMULA
28191      ,QUOTE_FEE_PRORATE
28192      ,ERT_PURCHASE_OPT
28193      ,ERT_PURCHASE_OPT_TYPE
28194      ,ERT_PURCHASE_OPT_AMOUNT
28195      ,ERT_PURCHASE_OPT_FORMULA
28196      ,ERT_PURCHASE_OPT_PRORATE
28197      ,ERT_PURCHASE_OPT_MAX_OPT
28198      ,ERT_PURCHASE_OPT_MAX_AMT
28199      ,ERT_PURCHASE_OPT_MAX_FORMULA
28200      ,ERT_PURCHASE_OPT_MIN_OPT
28201      ,ERT_PURCHASE_OPT_MIN_AMT
28202      ,ERT_PURCHASE_OPT_MIN_FORMULA
28203      ,EOT_PURCHASE_OPT
28204      ,EOT_PURCHASE_OPT_TYPE
28205      ,EOT_PURCHASE_OPT_AMOUNT
28206      ,EOT_PURCHASE_OPT_FORMULA
28207      ,EOT_PURCHASE_OPT_PRORATE
28208      ,EOT_PURCHASE_OPT_MAX_OPT
28209      ,EOT_PURCHASE_OPT_MAX_AMT
28210      ,EOT_PURCHASE_OPT_MAX_FORMULA
28211      ,EOT_PURCHASE_OPT_MIN_OPT
28212      ,EOT_PURCHASE_OPT_MIN_AMT
28213      ,EOT_PURCHASE_OPT_MIN_FORMULA
28214      ,TQP_ERL_TERMINATION_ALWD_FLAG
28215      ,TQP_PRT_TERMINATION_ALWD_FLAG
28216      ,QUOTE_EFFECTIVE_DAYS
28217      ,QUOTE_EFF_MAX_DAYS
28218      ,EOT_TOLERANCE_DAYS
28219      ,PRT_TERMINATION_APPROVAL_REQ
28220      ,PRT_TERMINATION_ALLOWED_FLAG
28221      ,GAIN_LOSS_APPROVAL_REQ
28222      ,GAIN_LOSS_NET_QUOTE_OPT
28223      ,GAIN_LOSS_NET_QUOTE_AMT
28224      ,GAIN_LOSS_NET_QUOTE_FORMULA
28225      ,GAIN_LOSS_TOLERANCE_ALLOWED
28226      ,QUOTE_RCPT_CONTRACT_ROLE
28227      ,QUOTE_APPROVER_CONTRACT_ROLE
28228      ,QUOTE_CRTSY_COPY_CONTRACT_ROLE
28229      ,ERT_QUOTE_CALC_TERM_OPTION
28230      ,ERT_QUOTE_CALC_TERM_FORMULA
28231      ,ERT_CONTRACT_OBLIG_OPT
28232      ,ERT_CONTRACT_OBLIG_AMOUNT
28233      ,ERT_CONTRACT_OBLIG_FORMULA
28234      ,ERT_CONTRACT_OBLIG_PRORATE
28235      ,ERT_DISC_RATE_OPT
28236      ,ERT_DISC_RATE_AMOUNT
28237      ,ERT_DISC_RATE_FORMULA
28238      ,ERT_DISC_RATE_PRORATE
28239      ,ERT_QUOTE_FEE_OPT
28240      ,ERT_QUOTE_FEE_AMOUNT
28241      ,ERT_QUOTE_FEE_FORMULA
28242      ,ERT_QUOTE_FEE_PRORATE
28243      ,ERT_RETURN_FEE_OPTION
28244      ,ERT_RETURN_FEE_AMOUNT
28245      ,ERT_RETURN_FEE_FORMULA
28246      ,ERT_RETURN_FEE_PRORATE
28247      ,ERT_ROLL_INCTV_OPTION
28248      ,ERT_ROLL_INCTV_AMOUNT
28249      ,ERT_ROLL_INCTV_FORMULA
28250      ,ERT_ROLL_INCTV_PRORATE
28251      ,ERT_SECU_DEP_DISPO_OPTION
28252      ,ERT_SECU_DEP_DISPO_AMOUNT
28253      ,ERT_SECU_DEP_DISPO_FORMULA
28254      ,ERT_SECU_DEP_DISPO_PRORATE
28255      ,ERT_TERM_PENALTY_OPTION
28256      ,ERT_TERM_PENALTY_AMOUNT
28257      ,ERT_TERM_PENALTY_FORMULA
28258      ,ERT_TERM_PENALTY_PRORATE
28259      ,ERT_TERM_PENALTY_CAP_OPTION
28260      ,ERT_TERM_PENALTY_CAP_AMOUNT
28261      ,ERT_TERM_PENALTY_CAP_FORMULA
28262      ,ERT_EST_PROP_TAX_OPTION
28263      ,ERT_EST_PROP_TAX_AMOUNT
28264      ,ERT_EST_PROP_TAX_FORMULA
28265      ,ERT_EST_PROP_TAX_PRORATE
28266      ,ERT_CONTR_FEES_OPTION
28267      ,ERT_OUTSTND_BAL_OPTION
28268      ,ERT_SERV_MANT_OPTION
28269      ,EOT_QUOTE_CALC_TERM_OPTION
28270      ,EOT_QUOTE_CALC_TERM_FORMULA
28271      ,EOT_CONTRACT_OBLIG_OPT
28272      ,EOT_CONTRACT_OBLIG_AMOUNT
28273      ,EOT_CONTRACT_OBLIG_FORMULA
28274      ,EOT_CONTRACT_OBLIG_PRORATE
28275      ,EOT_DISC_RATE_OPT
28276      ,EOT_DISC_RATE_AMOUNT
28277      ,EOT_DISC_RATE_FORMULA
28278      ,EOT_DISC_RATE_PRORATE
28279      ,EOT_QUOTE_FEE_OPT
28280      ,EOT_QUOTE_FEE_AMOUNT
28281      ,EOT_QUOTE_FEE_FORMULA
28282      ,EOT_QUOTE_FEE_PRORATE
28283      ,EOT_RETURN_FEE_OPTION
28284      ,EOT_RETURN_FEE_AMOUNT
28285      ,EOT_RETURN_FEE_FORMULA
28286      ,EOT_RETURN_FEE_PRORATE
28287      ,EOT_ROLL_INCTV_OPTION
28288      ,EOT_ROLL_INCTV_AMOUNT
28289      ,EOT_ROLL_INCTV_FORMULA
28290      ,EOT_ROLL_INCTV_PRORATE
28291      ,EOT_SECU_DEP_DISPO_OPTION
28292      ,EOT_SECU_DEP_DISPO_AMOUNT
28293      ,EOT_SECU_DEP_DISPO_FORMULA
28294      ,EOT_SECU_DEP_DISPO_PRORATE
28295      ,EOT_TERM_PENALTY_OPTION
28296      ,EOT_TERM_PENALTY_AMOUNT
28297      ,EOT_TERM_PENALTY_FORMULA
28298      ,EOT_TERM_PENALTY_PRORATE
28299      ,EOT_TERM_PENALTY_CAP_OPTION
28300      ,EOT_TERM_PENALTY_CAP_AMOUNT
28301      ,EOT_TERM_PENALTY_CAP_FORMULA
28302      ,EOT_EST_PROP_TAX_OPTION
28303      ,EOT_EST_PROP_TAX_AMOUNT
28304      ,EOT_EST_PROP_TAX_FORMULA
28305      ,EOT_EST_PROP_TAX_PRORATE
28306      ,EOT_CONTR_FEES_OPTION
28307      ,EOT_OUTSTND_BAL_OPTION
28308      ,EOT_SERV_MANT_OPTION
28309      ,EVERGREEN_PASSTHRU_FEES
28310      ,EVERGREEN_PASSTHRU_PERCENT
28311      ,LIEN_TYPE
28312      ,FILING_NUMBER
28313      ,FILING_DATE
28314      ,FILING_STATUS
28315      ,LIEN_HOLDER_NAME
28316      ,LIEN_HOLDER_ID
28317      ,JURISDICTION
28318      ,SUB_JURISDICTION
28319      ,LIEN_EXPIRATION_DATE
28320      ,LIEN_CONTINUATION_NUMBER
28321      ,LIEN_CONTINUATION_DATE
28322      ,TITLE_TYPE
28323      ,TITLE_ISSUER_NAME
28324      ,TITLE_ISSUER_ID
28325      ,TITLE_DATE
28326      ,TITLE_NUMBER
28327      ,REGISTRATION_NUMBER
28328      ,LOCATION
28329      ,TITLE_CUSTODIAN_NAME
28330      ,TITLE_CUSTODIAN_ID
28331      ,PAYEE_SITE
28332      ,REGISTRATION_LOCATION
28333      ,REG_EXPIRATION_DATE
28334      ,CREDIT_LINE_ID
28335      ,CREDIT_LINE_NUMBER
28336      ,PRTFL_APPROVAL_REQ
28337      ,PRTFL_ASSGN_GROUP
28338      ,PRTFL_BUDGET_AMT_OPT
28339      ,PRTFL_BUDGET_FIXED_AMT
28340      ,PRTFL_BUDGET_AMT_FORMULA
28341      ,PRTFL_DAYS_FROM_CON_EXPR
28342      ,PRTFL_STRATEGY
28343      ,PROP_TAX_APPLICABLE
28344      ,PROP_TAX_LEASE_REP
28345      ,MEX_TAX_SUB_BASIC_WTHLD
28346      ,MEX_TAX_CALC_FORMULA
28347      ,AUS_TAX_STAMP_DUTY
28348      ,CURRENCY_CONVERSION_TYPE
28349      ,CURRENCY_CONVERSION_RATE
28350      ,CURRENCY_CONVERSION_DATE
28351      ,ASSIGNABLE_YN
28352      ,LESSEE_VENDOR_ID
28353      ,LESSEE_VENDOR_NAME
28354      ,LESSEE_VENDOR_SITE_ID
28355      ,LESSEE_VENDOR_SITE_CODE
28356      ,INSURANCE_COMPANY_NUMBER
28357      ,INSURANCE_COMPANY_SITE_NUMBER
28358      ,AGENT_NUMBER
28359      ,AGENT_ADDRESS_SITE_NUMBER
28360      ,CASH_APPL_RULE_NAME
28361      ,PROP_TAX_BILL_METHOD
28362      ,GAIN_LOSS_TOLRNC_ALLWD_AMT
28363      ,GAIN_LOSS_TOLRNC_ALLWD_FRML
28364      ,GAIN_LOSS_TOLRNC_BASIS
28365      ,GAIN_LOSS_APPRV_PROC_FRML
28366      ,ERT_ABSORBED_FEE_FRML
28367      ,ERT_EXPENSE_FEE_FRML
28368      ,ERT_FINANCED_FEE_FRML
28369      ,ERT_GENERAL_FEE_FRML
28370      ,ERT_INCOME_FEE_FRML
28371      ,ERT_MISC_FEE_FRML
28372      ,ERT_PASSTHRU_FEE_FRML
28373      ,ERT_ROLLOVER_FEE_FRML
28374      ,EOT_ABSORBED_FEE_FRML
28375      ,EOT_EXPENSE_FEE_FRML
28376      ,EOT_FINANCED_FEE_FRML
28377      ,EOT_GENERAL_FEE_FRML
28378      ,EOT_INCOME_FEE_FRML
28379      ,EOT_MISC_FEE_FRML
28380      ,EOT_PASSTHRU_FEE_FRML
28381      ,EOT_ROLLOVER_FEE_FRML
28382      ,DELETE_BEFORE_IMPORT_YN -- akp_delete
28383      ,ST_UPDATE_LINES_FROM_CONTRACT
28384      ,ST_INTEREST_DISCLOSED
28385      ,ST_TRANSFER_OF_TITLE
28386      ,ST_SALE_AND_LEASE_BACK
28387      ,ST_PURCHASE_OF_LEASE
28388      ,ST_EQUIPMENT_USAGE
28389      ,ST_EQUIPMENT_AGE
28390      ,ST_ASSET_UPFRONT_TAX
28391      ,ST_BILL_STREAM_TYPE_CODE
28392      ,ST_BILL_STREAM_PURPOSE_CODE
28393      ,ST_FIN_STREAM_TYPE_CODE
28394      ,ST_FIN_STREAM_PURPOSE_CODE
28395      ,ST_CAP_STREAM_TYPE_CODE
28396      ,ST_CAP_STREAM_PURPOSE_CODE
28397      ,INT_RATE_EFFECTIVE_FROM_DATE
28398      ,INT_RATE_EFFECTIVE_TO_DATE
28399      ,INT_RATE_PRINC_BASIS_CODE
28400      ,INT_RATE_BASIS_CODE
28401      ,INT_RATE_DELAY_CODE
28402      ,INT_RATE_DELAY_FREQ
28403      ,INT_RATE_CMPND_FREQ_CODE
28404      ,INT_RATE_CATCHUP_BASIS_CODE
28405      ,INT_RATE_CATCHUP_START_DATE
28406      ,INT_RATE_CAT_STLMNT_CODE
28407      ,INT_RATE_CHANGE_START_DATE
28408      ,INT_RATE_CHANGE_FREQ_CODE
28409      ,INT_RATE_CHANGE_VALUE
28410      ,INT_RATE_CON_OPTION_CODE
28411      ,INT_RATE_NEXT_CON_DATE
28412      ,INT_RATE_CON_INDEX_NAME
28413      ,INT_RATE_CON_BASE_RATE
28414      ,INT_RATE_CON_START_DATE
28415      ,INT_RATE_CON_ADDER_RATE
28416      ,INT_RATE_CON_MAXIMUM_RATE
28417      ,INT_RATE_CON_MINIMUM_RATE
28418      ,INT_RATE_CON_PRC_BAS_CODE
28419      ,INT_RATE_CON_DAY_MTH_CODE
28420      ,INT_RATE_CON_DAY_YER_CODE
28421      ,INT_RATE_CON_INT_BAS_CODE
28422      ,INT_RATE_CON_RATE_DELAY_CODE
28423      ,INT_RATE_CON_RATE_DELAY_FREQ
28424      ,INT_RATE_CON_CMPND_FREQ_CODE
28425      ,INT_RATE_CON_FORMULA_NAME
28426      ,INT_RATE_CON_CAT_BAS_CODE
28427      ,INT_RATE_CON_CAT_START_DATE
28428      ,INT_RATE_CON_CAT_STLMNT_CODE
28429      ,INT_RATE_CON_CHG_START_DATE
28430      ,INT_RATE_CON_CHG_FREQ_CODE
28431      ,INT_RATE_CON_CHG_VALUE
28432      ,INT_RATE_CAT_FREQ_CODE
28433      ,INT_RATE_CON_CAT_FREQ_CODE
28434      ,RVI_STREAM_CODE
28435      ,RVI_STREAM_PURPOSE_CODE
28436      ,ATTRIBUTE_CATEGORY
28437      ,ATTRIBUTE1
28438      ,ATTRIBUTE2
28439      ,ATTRIBUTE3
28440      ,ATTRIBUTE4
28441      ,ATTRIBUTE5
28442      ,ATTRIBUTE6
28443      ,ATTRIBUTE7
28444      ,ATTRIBUTE8
28445      ,ATTRIBUTE9
28446      ,ATTRIBUTE10
28447      ,ATTRIBUTE11
28448      ,ATTRIBUTE12
28449      ,ATTRIBUTE13
28450      ,ATTRIBUTE14
28451      ,ATTRIBUTE15
28452      ,EOT_AUTO_PROC_PURCHASE_OPT
28453      ,PTH_EVG_PAYOUT_BASIS
28454      ,PTH_PAYOUT_BASIS_FORMULA
28455      ,PTH_EVG_STREAM_CODE
28456      ,PTH_EVG_STREAM_PURPOSE_CODE
28457      ,SEND_BILL_SALE
28458      ,MANUAL_QUOTES_ONLY
28459      ,FIRST_TERMINATION_DATE
28460      ,QUOTE_RCPT_ADDL_RCPT_ROLE
28461      ,QUOTE_RCPT_ALLOC_PTG
28462      ,QUOTE_APPRVR_ADV_NOTICE_ROLE
28463      ,QUOTE_APPROVER_DELAY_DAYS
28464      ,ERT_SERV_MANT_FRML
28465      ,EOT_SERV_MANT_FRML
28466      --Added by dpsingh for LE Uptake
28467      ,LEGAL_ENTITY_ID
28468      ,ST_TAX_SCHEDULE_APPLIES_FLAG
28469    FROM   okl_header_interface
28470    WHERE  (
28471           batch_number        = p_batch_number
28472           OR
28473           contract_number_old = p_contract_number
28474           OR
28475           (
28476            customer_number    = p_customer_number
28477            AND
28478            start_date         between p_start_date_from AND p_start_date_to
28479           )
28480          )
28481   AND    nvl(scheduled_worker_id, 'NONE') = g_instance_number
28482   AND    status            in ('NEW', 'ERROR')  -- Bug 4350579
28483   AND    application_code  = 'OKL'    -- Bug 4350579
28484   AND    contract_category = 'LEASE'; -- Bug 4350579
28485   --AND    status in ('ELIGIBLE'); --Process only ELIGIBLE (i.e. validated) record
28486 
28487   --
28488   -- Cursor to fetch Line Interface Records for each contract header
28489   --
28490 
28491   CURSOR okl_line_csr (p_contract_number_old VARCHAR2) IS
28492   SELECT *
28493   FROM   okl_lines_interface
28494   WHERE  contract_number_old = p_contract_number_old
28495   AND    serial_number       IS NULL                 -- indicates TOP line
28496   AND    line_type           <> 'ASSET_SUBSIDY'      -- this line_type is being processed in process_subsidy()
28497   AND    line_type           <> 'ASSET_ADDON'      -- this line_type is being processed in process_addon()
28498   ORDER BY
28499          line_type,
28500          line_number;
28501 
28502   CURSOR okl_ib_csr (p_contract_number_old VARCHAR2,
28503                      p_line_number         NUMBER) IS
28504   SELECT serial_number
28505   FROM   okl_lines_interface
28506   WHERE  contract_number_old = p_contract_number_old
28507   AND    serial_number       IS NOT NULL
28508   AND    line_number         = p_line_number;
28509 
28510   --
28511   -- Cursor to fetch Party roles interface Records for each contract header/Line
28512   --
28513   CURSOR okl_party_csr (p_contract_number_old VARCHAR2,
28514                         p_line_number         NUMBER) IS
28515   SELECT *
28516   FROM   okl_party_roles_interface
28517   WHERE  contract_number_old = p_contract_number_old
28518   AND    ( (line_number        = p_line_number
28519             AND
28520             p_line_number IS NOT NULL
28521             )
28522             OR
28523             (line_number   IS NULL
28524              AND
28525              p_line_number IS NULL
28526             )
28527           );
28528 
28529   --
28530   -- Cursor to fetch Terms interface Records for each contract header/Line
28531   --
28532   CURSOR okl_term_csr (p_contract_number_old VARCHAR2,
28533                        p_line_number         NUMBER) IS
28534   SELECT *
28535   FROM   okl_terms_interface
28536   WHERE  contract_number_old = p_contract_number_old
28537   AND    ( line_number       = p_line_number
28538            AND
28539            p_line_number IS NOT NULL
28540          );
28541 
28542 
28543   --
28544   -- Cursor to fetch Payment interface Records for each contract header/Line
28545   --
28546   CURSOR okl_payment_csr (p_contract_number_old VARCHAR2,
28547                           p_line_number         NUMBER) IS
28548   SELECT *
28549   FROM   okl_payments_interface
28550   WHERE  contract_number_old = p_contract_number_old
28551   AND    payment_type_code <> 'RENT'  -- Bug 5155206
28552   AND    ( (line_number      = p_line_number
28553             AND
28554             p_line_number IS NOT NULL
28555             )
28556             OR
28557             (line_number   IS NULL
28558              AND
28559              p_line_number IS NULL
28560             )
28561           )
28562   ORDER BY
28563          contract_number_old,
28564          line_number,
28565          --asset_number,
28566          payment_type_code,
28567          payment_schedule_number,
28568          start_date;
28569 
28570 
28571   CURSOR temp_role_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
28572   --Fixed Bug # 5484903
28573    SELECT object1_id1
28574    FROM   okc_k_party_roles_b
28575    WHERE  dnz_chr_id            = p_chr_id
28576      AND    chr_id                = dnz_chr_id
28577      AND    jtot_object1_code = 'OKX_PARTY'
28578      AND    rle_code          = 'LESSEE';
28579 
28580   l_customer_id     okc_k_party_roles_v.object1_id1%TYPE;
28581   l_customer_number okl_header_interface.customer_number%TYPE;
28582 
28583   CURSOR temp_sales_csr(p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
28584   SELECT sales.object1_id1
28585   FROM   okc_contacts_v sales,
28586          okc_k_party_roles_v party
28587   WHERE  sales.cpl_id   = party.id
28588   AND    party.rle_code = 'LESSOR'
28589   AND    party.chr_id   = p_chr_id
28590   AND    party.dnz_chr_id = p_chr_id        -- Bug# 3862650
28591   AND    sales.role     = 'Salesperson';
28592 
28593   l_salesperson_id   okc_contacts_v.object1_id1%TYPE;
28594   l_salesperson_name okl_header_interface.salesperson_name%TYPE;
28595 
28596   CURSOR temp_aggr_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE,
28597                         p_scs_code OKC_K_HEADERS_V.SCS_CODE%TYPE) IS
28598   SELECT head.id
28599   FROM   okc_k_headers_v head,
28600          okc_governances gov
28601   WHERE  head.id         = gov.chr_id_referred
28602   AND    head.scs_code   = p_scs_code --'MASTER_LEASE'
28603   AND    gov.dnz_chr_id  = p_chr_id;
28604 
28605   CURSOR txl_csr (p_khr_id NUMBER,
28606                   p_kle_id NUMBER) IS
28607   SELECT id
28608   FROM   okl_txl_assets_b
28609   WHERE  dnz_khr_id = p_khr_id
28610   AND    kle_id     = p_kle_id;
28611 
28612   CURSOR deal_csr (p_chr_id OKC_K_HEADERS_B.ID%TYPE) IS
28613   SELECT 'Y' loan_revolving
28614   FROM   okl_k_headers
28615   WHERE  deal_type = 'LOAN-REVOLVING'
28616   AND    id        = p_chr_id;
28617 
28618   CURSOR c_asset (p_asset_number OKL_LA_RELEASE_ASSETS_UV.ASSET_NUMBER%TYPE) IS
28619   SELECT asset_id
28620   FROM   FA_ADDITIONS_B
28621   WHERE  asset_number = p_asset_number;
28622 
28623   l_master_lease_aggr_id NUMBER;
28624   l_credit_line_id       NUMBER;
28625   x_credit_line_id       NUMBER;
28626 
28627   x_sub_cle_id           OKC_K_LINES_V.ID%TYPE;
28628   l_payment_level        VARCHAR2(3);
28629   l_pmnt_line_id         OKC_K_LINES_V.ID%TYPE;
28630 
28631   l_loan_yn              VARCHAR2(1) := 'N';
28632   l_prev_corp_book    VARCHAR2(15) := 'NULL';
28633   l_prev_asset_number VARCHAR2(15) := 'NULL';
28634   l_prev_tax_book     VARCHAR2(15) := 'NULL';
28635 
28636   x_release_asset     VARCHAR2(1) := 'N';
28637   x_asset_id          OKL_LA_RELEASE_ASSETS_UV.ASSET_ID%TYPE;
28638   x_txd_id            OKL_TXD_ASSETS_B.ID%TYPE;
28639 
28640   x_party_pmnt_hdr_tbl_out   pphv_tbl_type;
28641   l_counter                  NUMBER;
28642 
28643   x_evg_cont_pmnt_hdr_out    pphv_tbl_type;
28644 
28645  -- Bug 5155206
28646   /*Cursor to fetch Payment interface Records for each contract header/Line of
28647     type RENT only */
28648   CURSOR okl_payment_rent_csr (p_contract_number_old VARCHAR2,
28649                           p_line_number         NUMBER) IS
28650   SELECT *
28651   FROM   okl_payments_interface
28652   WHERE  contract_number_old = p_contract_number_old
28653   AND    payment_type_code = 'RENT'
28654   AND    ( (line_number      = p_line_number
28655             AND
28656             p_line_number IS NOT NULL
28657             )
28658             OR
28659             (line_number   IS NULL
28660              AND
28661              p_line_number IS NULL
28662             )
28663           )
28664   ORDER BY
28665          contract_number_old,
28666          line_number,
28667          --asset_number,
28668          payment_schedule_number,
28669          start_date;
28670  -- Bug 5155206
28671    --Added by dpsingh for LE Uptake
28672    l_exists                      NUMBER(1):=0;
28673    item_not_found_error    EXCEPTION;
28674 
28675      -- hariven - Bug#5393374 - Added - Start
28676   -- Procedure to raise Business Event - "oracle.apps.okl.la.lease_contract.imported"
28677   PROCEDURE raise_business_event(
28678                                  p_chr_id        IN         NUMBER
28679                                , x_return_status OUT NOCOPY VARCHAR2
28680                                  ) IS
28681     l_parameter_list           wf_parameter_list_t;
28682   BEGIN
28683     x_return_status := OKL_API.G_RET_STS_SUCCESS;
28684     wf_event.AddParameterToList(G_WF_ITM_CONTRACT_ID,p_chr_id,l_parameter_list);
28685 
28686     OKL_WF_PVT.raise_event (p_api_version    => 1.0,
28687                             p_init_msg_list  => p_init_msg_list,
28688                             x_return_status  => x_return_status,
28689                             x_msg_count      => x_msg_count,
28690                             x_msg_data       => x_msg_data,
28691                             p_event_name     => G_WF_EVT_KHR_IMPORTED,
28692                             p_parameters     => l_parameter_list);
28693 
28694   EXCEPTION
28695     WHEN OTHERS THEN
28696        x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
28697        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
28698   END raise_business_event;
28699   -- hariven - Bug#5393374 - Added - End
28700 
28701   BEGIN -- Actual Procedure Starts Here
28702 
28703   l_proc_name     := 'LOAD_INPUT_RECORD';
28704   x_return_status := OKL_API.G_RET_STS_SUCCESS; -- Assume Success at begining
28705   --okl_api.init_msg_list(p_init_msg_list => OKL_API.G_TRUE);
28706 
28707   l_progress      := '000';
28708 
28709   --okl_context.set_okc_org_context(204,204);
28710   -- 4374085
28711   get_qcl_id(
28712              x_return_status => x_return_status,
28713              p_qcl_name      => 'OKL LA QA CHECK LIST',
28714              x_qcl_id        => g_qcl_id
28715             );
28716 
28717   debug_message('Load... Started');
28718 
28719 
28720   FOR okl_header_rec IN okl_header_csr (p_batch_number,
28721                                         p_start_date_from,
28722                                         p_start_date_to,
28723                                         p_contract_number,
28724                                         p_customer_number )
28725   LOOP
28726 
28727 
28728     BEGIN --1
28729       -- Populates Header Record before calling APIs
28730       --fnd_file.put_line(fnd_file.output, 'Loading... '||okl_header_rec.contract_number_old);
28731       okl_api.init_msg_list(p_init_msg_list => OKL_API.G_TRUE);
28732 
28733       debug_message(l_proc_name);
28734       debug_message('');
28735 
28736       debug_message('Calling check_and_delete ' || to_char(sysdate,'HH24:MI:SS'));
28737       -- Check to delete contract from OLM before loading
28738       check_and_delete(
28739                        x_return_status   => x_return_status,
28740                        x_msg_count       => x_msg_count,
28741                        x_msg_data        => x_msg_data,
28742                        p_contract_number        => okl_header_rec.contract_number,
28743                        p_delete_before_import_yn => okl_header_rec.delete_before_import_yn -- akp_delete
28744                       );
28745       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
28746          RAISE load_failed;
28747       END IF;
28748       debug_message('check_and_delete done ' || to_char(sysdate,'HH24:MI:SS'));
28749 
28750       write_to_log('Loading... '||okl_header_rec.contract_number_old);
28751       debug_message('Loading... '||okl_header_rec.contract_number_old);
28752 
28753       g_release_asset_flag := 'N'; -- global variable to check released asset
28754 
28755       --
28756       -- Get Template Information if requested
28757       --
28758 
28759       IF (okl_header_rec.template_number IS NOT NULL) THEN
28760          l_header_template := get_template(
28761                                            x_return_status   => x_return_status,
28762                                            x_msg_count       => x_msg_count,
28763                                            x_msg_data        => x_msg_data,
28764                                            p_template_number => okl_header_rec.template_number
28765                                           );
28766 
28767          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
28768             RAISE load_failed;
28769          END IF;
28770 
28771       debug_message('--->Template information retrieved');
28772       END IF;
28773 
28774 -- comment out. cklee      l_intf_h_rec := okl_header_rec;
28775 
28776 --      debug_message('--->Template information retrieved');
28777       -- It checks template and interface record and prepare final header rec
28778       populate_header_rec(
28779                           x_return_status  => x_return_status,
28780                           x_msg_count      => x_msg_count,
28781                           x_msg_data       => x_msg_data,
28782                           p_temp_header    => l_header_template,
28783                           p_intf_header    => okl_header_rec,--comment out. cklee l_intf_h_rec,
28784                           x_chrv_rec       => l_chrv_rec,
28785                           x_khrv_rec       => l_khrv_rec
28786                          );
28787 
28788       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
28789           RAISE load_failed;
28790       END IF;
28791 
28792       -- Call API to create Contract Header
28793       debug_message('--->Header record populated');
28794 
28795       l_progress := '010';
28796 
28797      --Added by dpsingh for LE Uptake
28798     IF (okl_header_rec.legal_entity_id IS NOT NULL) AND
28799         (okl_header_rec.legal_entity_id <> Okl_Api.G_MISS_NUM) THEN
28800 
28801             -- l_exists  := OKL_LEGAL_ENTITY_UTIL.check_le_id_exists(okl_header_rec.legal_entity_id) ;
28802        OPEN  le_entity(NVL(okl_header_rec.authoring_org_id,l_header_template.authoring_org_id),okl_header_rec.legal_entity_id);
28803        FETCH  le_entity INTO l_exists;
28804 
28805       CLOSE  le_entity;
28806            IF (l_exists <>1 ) THEN
28807            debug_message('--->Legal entity is not valid for operating unit');
28808               Okc_Api.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'LEGAL_ENTITY_ID');
28809               RAISE item_not_found_error;
28810            END IF;
28811       END IF;
28812       l_khrv_rec.legal_entity_id := okl_header_rec.legal_entity_id ;
28813       -- Call Header API to create header
28814       okl_contract_pub.create_contract_header(
28815                                               p_api_version   => 1.0,
28816                                               p_init_msg_list => OKL_API.G_FALSE,
28817                                               x_return_status => x_return_status,
28818                                               x_msg_count     => x_msg_count,
28819                                               x_msg_data      => x_msg_data,
28820                                               p_chrv_rec      => l_chrv_rec,
28821                                               p_khrv_rec      => l_khrv_rec,
28822                                               x_chrv_rec      => x_chrv_rec,
28823                                               x_khrv_rec      => x_khrv_rec
28824                                              );
28825       l_progress := '050';
28826 
28827       debug_message('Contract header call ends...'||x_return_status);
28828       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
28829 
28830            x_return_status := OKL_API.G_RET_STS_ERROR;
28831 
28832          RAISE load_failed;
28833       END IF;
28834 
28835       debug_message('--->Contract Header Created');
28836       debug_message('--->Evergreen passthru at contract header - Start');
28837 
28838       g_evg_cont_pmnt_hdr := NULL;
28839 
28840       IF (okl_header_rec.pth_evg_payout_basis IS NOT NULL) THEN
28841 
28842           create_party_payment_hdr(
28843                                    x_return_status                   => x_return_status,
28844                                    x_msg_count                       => x_msg_count,
28845                                    x_msg_data                        => x_msg_data,
28846                                    p_contract_id                     => x_chrv_rec.id,
28847                                    p_line_id                         => NULL,
28848                                    p_line_type                       => NULL,
28849                                    p_pth_start_date                  => NULL,
28850                                    p_pth_base_payout_basis           => NULL,
28851                                    p_pth_base_stream_code            => NULL,
28852                                    p_pth_base_stream_purpose_code    => NULL,
28853                                    p_pth_evg_payout_basis            => okl_header_rec.pth_evg_payout_basis,
28854                                    p_pth_payout_basis_formula        => okl_header_rec.pth_payout_basis_formula,
28855                                    p_pth_evg_stream_code             => okl_header_rec.pth_evg_stream_code,
28856                                    p_pth_evg_stream_purpose_code     => okl_header_rec.pth_evg_stream_purpose_code,
28857                                    x_party_pmnt_hdr_tbl              => x_evg_cont_pmnt_hdr_out
28858                                   );
28859           debug_message('------>Create evergreen at contract header ends'||x_return_status);
28860           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
28861              x_return_status := OKL_API.G_RET_STS_ERROR;
28862              RAISE load_failed;
28863           END IF;
28864 
28865           debug_message('x_evg_cont_pmnt_hdr_out.count: '||x_evg_cont_pmnt_hdr_out.COUNT);
28866 
28867           IF (x_evg_cont_pmnt_hdr_out.COUNT > 0) THEN
28868              g_evg_cont_pmnt_hdr := x_evg_cont_pmnt_hdr_out(1); --only 1 evg record at contract header
28869           END IF;
28870       END IF;
28871       debug_message('--->Evergreen passthru at contract header - End');
28872 
28873       l_master_lease_aggr_id := NULL;
28874 
28875       IF (okl_header_rec.master_lease_agreement_id IS NOT NULL
28876           OR
28877           okl_header_rec.master_lease_agreement_number IS NOT NULL) THEN
28878 
28879             x_return_status := get_agreement_id(
28880                                                  p_scs_code            => 'MASTER_LEASE',
28881                                                  p_auth_org_id         => l_chrv_rec.authoring_org_id,
28882                                                  p_agreement_number    => okl_header_rec.master_lease_agreement_number,
28883                                                  p_agreement_id        => okl_header_rec.master_lease_agreement_id,
28884                                                  x_agreement_id        => x_master_lease_id
28885                                                 );
28886 
28887             l_master_lease_aggr_id := x_master_lease_id;
28888 
28889             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
28890                okl_api.set_message(
28891                                    G_APP_NAME,
28892                                    G_INVALID_VALUE,
28893                                    'CONTRACT_NUM',
28894                                    okl_header_rec.contract_number_old,
28895                                    'COL_NAME',
28896                                    'MASTER_LEASE_AGREEMENT_ID, NUMBER: ',
28897                                    'COL_VALUE',
28898                                    okl_header_rec.master_lease_agreement_id||', '||okl_header_rec.master_lease_agreement_number
28899                                   );
28900                RAISE load_failed;
28901             END IF;
28902       ELSE
28903         IF (okl_header_rec.template_number IS NOT NULL) THEN
28904 
28905             l_master_lease_aggr_id     := NULL;
28906 
28907             OPEN temp_aggr_csr (l_header_template.id,
28908                                 'MASTER_LEASE');
28909             FETCH temp_aggr_csr INTO l_master_lease_aggr_id;
28910             CLOSE temp_aggr_csr;
28911 
28912         END IF;
28913 
28914       END IF;
28915 
28916       IF (l_master_lease_aggr_id IS NOT NULL) THEN
28917 
28918          l_gvev_rec.dnz_chr_id      := x_chrv_rec.id;
28919          l_gvev_rec.chr_id          := x_chrv_rec.id;
28920          l_gvev_rec.chr_id_referred := l_master_lease_aggr_id;
28921          l_gvev_rec.cle_id          := NULL;
28922          l_gvev_rec.copied_only_yn  := 'Y';
28923 
28924          okl_okc_migration_pvt.create_governance(
28925                                                  p_api_version                  => 1.0,
28926                                                  p_init_msg_list                => OKL_API.G_FALSE,
28927                                                  x_return_status                => x_return_status,
28928                                                  x_msg_count                    => x_msg_count,
28929                                                  x_msg_data                     => x_msg_data,
28930                                                  p_gvev_rec                     => l_gvev_rec,
28931                                                  x_gvev_rec                     => x_gvev_rec
28932                                                 );
28933          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
28934             RAISE load_failed;
28935          END IF;
28936 
28937          debug_message('--->Master Lease agreement created');
28938       END IF;
28939 
28940       -- Process credit line, if any
28941       l_credit_line_id := NULL;
28942       IF (okl_header_rec.credit_line_id IS NOT NULL
28943           OR
28944           okl_header_rec.credit_line_number IS NOT NULL) THEN
28945 
28946           x_return_status := get_agreement_id(
28947                                               p_scs_code            => 'CREDITLINE_CONTRACT',
28948                                               p_auth_org_id         => l_chrv_rec.authoring_org_id,
28949                                               p_agreement_number    => okl_header_rec.credit_line_number,
28950                                               p_agreement_id        => okl_header_rec.credit_line_id,
28951                                               x_agreement_id        => x_credit_line_id
28952                                              );
28953 
28954             l_credit_line_id := x_credit_line_id;
28955 
28956             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
28957                okl_api.set_message(
28958                                    G_APP_NAME,
28959                                    G_INVALID_VALUE,
28960                                    'CONTRACT_NUM',
28961                                    okl_header_rec.contract_number_old,
28962                                    'COL_NAME',
28963                                    'CREDIT LINE ID, NUMBER: ',
28964                                    'COL_VALUE',
28965                                    okl_header_rec.credit_line_id||', '||okl_header_rec.credit_line_number
28966                                   );
28967                RAISE load_failed;
28968             END IF;
28969       ELSE
28970          IF (okl_header_rec.template_number IS NOT NULL) THEN
28971             l_credit_line_id     := NULL;
28972 
28973             OPEN temp_aggr_csr (l_header_template.id,
28974                                 'CREDITLINE_CONTRACT');
28975             FETCH temp_aggr_csr INTO l_credit_line_id;
28976             CLOSE temp_aggr_csr;
28977 
28978          END IF;
28979       END IF;
28980 
28981       IF (l_credit_line_id IS NOT NULL) THEN
28982 
28983          --
28984          -- Validated Credit Line contract against
28985          -- customer number and customer account number
28986          -- of the imported contract
28987          --
28988          validate_credit_line(
28989                               x_return_status           => x_return_status,
28990                               x_msg_count               => x_msg_count,
28991                               x_msg_data                => x_msg_data,
28992                               p_contract_number         => okl_header_rec.contract_number_old,
28993                               p_template_id             => l_header_template.id,
28994                               p_credit_line_id          => l_credit_line_id,
28995                               p_customer_id             => g_customer_id,  -- 4414408
28996                               p_customer_number         => okl_header_rec.customer_number,
28997                               p_customer_account_id     => x_chrv_rec.cust_acct_id, -- 4414408
28998                               p_customer_account_number => okl_header_rec.customer_account_number,
28999                               p_start_date              => x_chrv_rec.start_date, -- 4414408
29000                               p_template_start_date     => l_header_template.start_date
29001                              );
29002          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29003              okl_api.set_message(
29004                                  G_APP_NAME,
29005                                  G_INVALID_VALUE,
29006                                  'CONTRACT_NUM',
29007                                  okl_header_rec.contract_number_old,
29008                                  'COL_NAME',
29009                                  'CREDIT LINE ID, NUMBER: ',
29010                                  'COL_VALUE',
29011                                  okl_header_rec.credit_line_id||', '||okl_header_rec.credit_line_number
29012                                 );
29013              RAISE load_failed;
29014          END IF;
29015 
29016          l_gvev_rec := NULL;
29017          l_gvev_rec.dnz_chr_id      := x_chrv_rec.id;
29018          l_gvev_rec.chr_id          := x_chrv_rec.id;
29019          l_gvev_rec.chr_id_referred := l_credit_line_id;
29020          l_gvev_rec.cle_id          := NULL;
29021          l_gvev_rec.copied_only_yn  := 'Y';
29022 
29023          okl_okc_migration_pvt.create_governance(
29024                                                  p_api_version                  => 1.0,
29025                                                  p_init_msg_list                => OKL_API.G_FALSE,
29026                                                  x_return_status                => x_return_status,
29027                                                  x_msg_count                    => x_msg_count,
29028                                                  x_msg_data                     => x_msg_data,
29029                                                  p_gvev_rec                     => l_gvev_rec,
29030                                                  x_gvev_rec                     => x_gvev_rec
29031                                                 );
29032          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29033             RAISE load_failed;
29034          END IF;
29035          debug_message('--->Credit line created');
29036       END IF;
29037       -- end of credit line
29038 
29039       -- Call Party Role API to create Party Roles, LESSEE and LESSOR
29040 
29041       l_customer_id     := okl_header_rec.customer_id;
29042       l_customer_number := okl_header_rec.customer_number;
29043 
29044       IF (okl_header_rec.template_number IS NOT NULL) THEN
29045          IF (l_customer_id IS NULL
29046              AND
29047              l_customer_number IS NULL) THEN
29048              --
29049              -- Get it from Template Contract
29050              --
29051              l_customer_id := NULL;
29052              OPEN temp_role_csr (l_header_template.id);
29053              FETCH temp_role_csr INTO l_customer_id;
29054              CLOSE temp_role_csr;
29055 
29056              l_customer_number := NULL; -- ID is good enough
29057          END IF;
29058       END IF;
29059 
29060       l_progress := '060';
29061       create_party_role( x_return_status       => x_return_status,
29062                          x_msg_count           => x_msg_count,
29063                          x_msg_data            => x_msg_data,
29064                          p_contract_header_id  => x_khrv_rec.id,
29065                          p_contract_number_old => x_chrv_rec.orig_system_reference1,
29066                          p_customer_id         => l_customer_id,
29067                          p_customer_number     => l_customer_number,
29068                          p_authoring_org_id    => NVL(okl_header_rec.authoring_org_id,l_header_template.authoring_org_id),
29069                          x_cplv_rec            => x_cplv_rec );
29070 
29071       l_progress := '070';
29072 
29073       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29074          x_return_status := OKL_API.G_RET_STS_ERROR;
29075          raise load_failed;
29076       END IF;
29077 
29078       debug_message('--->Party Role created');
29079       l_progress := '080';
29080 
29081       --
29082       -- create lessee as vendor if product is loan revolving
29083       --
29084       FOR deal_rec IN deal_csr (x_khrv_rec.id)
29085       LOOP
29086          IF (deal_rec.loan_revolving = 'Y') THEN
29087             debug_message('-----> create_lessee_as_vendor()');
29088 
29089             create_lessee_as_vendor(
29090                                     x_return_status      => x_return_status,
29091                                     x_msg_count          => x_msg_count,
29092                                     x_msg_data           => x_msg_data,
29093                                     p_chr_id             => x_khrv_rec.id,
29094                                     p_contract_num       => okl_header_rec.contract_number_old,
29095                                     p_cpl_id             => x_cplv_rec.id,
29096                                     p_lessee_vendor_id   => okl_header_rec.lessee_vendor_id,
29097                                     p_lessee_vendor_name => okl_header_rec.lessee_vendor_name,
29098                                     p_lessee_site_id     => okl_header_rec.lessee_vendor_site_id,
29099                                     p_lessee_site_code   => okl_header_rec.lessee_vendor_site_code,
29100                                     p_authoring_org_id   => NVL(okl_header_rec.authoring_org_id,l_header_template.authoring_org_id)
29101                                    );
29102 
29103             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29104                x_return_status := OKL_API.G_RET_STS_ERROR;
29105                raise load_failed;
29106             END IF;
29107 
29108             debug_message('--->Lessee as Vendor Created');
29109          END IF;
29110       END LOOP;
29111 
29112       -- Create Contact for Sales Rep...???
29113 
29114       l_salesperson_id   := okl_header_rec.salesperson_id;
29115       l_salesperson_name := okl_header_rec.salesperson_name;
29116 
29117       IF (okl_header_rec.template_number IS NOT NULL) THEN
29118          IF (l_salesperson_id IS NULL
29119              AND
29120              l_salesperson_name IS NULL) THEN
29121 
29122             l_salesperson_id   := NULL;
29123             l_salesperson_name := NULL;
29124 
29125             OPEN temp_sales_csr(l_header_template.id);
29126             FETCH temp_sales_csr INTO l_salesperson_id;
29127             CLOSE temp_sales_csr;
29128 
29129          END IF;
29130       END IF;
29131 
29132       create_contact(
29133                      x_return_status       => x_return_status,
29134                      x_msg_count           => x_msg_count,
29135                      x_msg_data            => x_msg_data,
29136                      p_contract_header_id  => x_khrv_rec.id,
29137                      p_contract_number_old => okl_header_rec.contract_number_old,
29138                      p_salesperson_id      => l_salesperson_id,
29139                      p_salesperson_name    => l_salesperson_name,
29140                      p_authoring_org_id    => NVL(okl_header_rec.authoring_org_id,l_header_template.authoring_org_id),
29141                      p_lessor_id           => x_cplv_rec.id
29142                     );
29143 
29144       debug_message('--->Contact created');
29145       l_progress := '081';
29146 
29147       debug_message('--->Header rule creation started');
29148       create_header_rules(
29149                           x_return_status                  => x_return_status,
29150                           x_msg_count                      => x_msg_count,
29151                           x_msg_data                       => x_msg_data,
29152                           p_chr_id                         => x_chrv_rec.id,
29153                           p_template_id                    => l_header_template.id,
29154                           p_header_rec                     => okl_header_rec --comment out. ckleel_intf_h_rec
29155                           --p_header_rec                     => l_intf_h_rec
29156                          );
29157 
29158       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29159          x_return_status := OKL_API.G_RET_STS_ERROR;
29160          raise load_failed;
29161       END IF;
29162       debug_message('--->Header rule creation complete');
29163 
29164       -- Create private Label party
29165       create_private_label(
29166                            x_return_status   => x_return_status,
29167                            x_msg_count       => x_msg_count,
29168                            x_msg_data        => x_msg_data,
29169                            p_chr_id          => x_chrv_rec.id,
29170                            p_contract_number => okl_header_rec.contract_number_old,
29171                            p_label_number    => okl_header_rec.private_label_number,
29172                            p_label_id        => okl_header_rec.private_label_id,
29173                            p_label_url       => okl_header_rec.private_label_url
29174                           );
29175 
29176       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29177          x_return_status := OKL_API.G_RET_STS_ERROR;
29178          raise load_failed;
29179       END IF;
29180       debug_message('--->Private label created');
29181 
29182       --
29183       -- Copy program agreement rules, if present,  to contract
29184       --
29185       --debug_message('PROG: id: '||x_khrv_rec.khr_id);
29186       --debug_message('PROG: source: '||x_khrv_rec.khr_id);
29187       --debug_message('PROG: dest: '||x_chrv_rec.id);
29188       --debug_message('PROG: org: '||x_chrv_rec.authoring_org_id);
29189       --debug_message('PROG: inv org: '||x_chrv_rec.inv_organization_id);
29190 
29191       IF (x_khrv_rec.khr_id IS NOT NULL) THEN
29192          okl_deal_create_pub.copy_rules(
29193                                         p_api_version    => 1.0,
29194                                         p_init_msg_list  => OKL_API.G_FALSE,
29195                                         x_return_status  => x_return_status,
29196                                         x_msg_count      => x_msg_count,
29197                                         x_msg_data       => x_msg_data,
29198                                         p_source_id      => x_khrv_rec.khr_id,
29199                                         p_dest_id        => x_chrv_rec.id, -- imported Contract ID
29200                                         p_org_id         => x_chrv_rec.authoring_org_id,
29201                                         p_organization_id => x_chrv_rec.inv_organization_id
29202                                        );
29203 
29204          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29205             x_return_status := OKL_API.G_RET_STS_ERROR;
29206             raise load_failed;
29207          END IF;
29208 
29209       debug_message('--->Program agreement copied');
29210 
29211       END IF;
29212 
29213 --      debug_message('--->Program agreement copied');
29214 
29215 -- start cklee 02/13/2003 bug# 3440442
29216       -- create 3rd party insurance
29217       -- 1. x_khrv_rec.id indicates contract deatils record exists
29218       -- 2. okl_header_rec.policy_number is a PK for 3rd party insurance policy
29219 
29220       IF (x_chrv_rec.id IS NOT NULL and
29221           okl_header_rec.policy_number IS NOT NULL) THEN
29222 
29223          create_3rd_party_insurance(
29224                                         x_return_status  => x_return_status,
29225                                         x_msg_count      => x_msg_count,
29226                                         x_msg_data       => x_msg_data,
29227                                         p_intf_header    => okl_header_rec,
29228                                         --p_intf_header    => l_intf_h_rec,
29229                                         p_chr_id         => x_chrv_rec.id -- imported Contract ID
29230                                        );
29231 
29232 
29233          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29234             x_return_status := OKL_API.G_RET_STS_ERROR;
29235             raise load_failed;
29236          END IF;
29237 
29238       debug_message('--->3rd Party Insurance created');
29239       END IF;
29240 
29241 -- end cklee 02/13/2003 bug# 3440442
29242 
29243       --debug_message('Contract Number: '||x_chrv_rec.contract_number);
29244       l_progress := '090';
29245 
29246     -- Call Line Cursor to get Line detail
29247 
29248       l_no_of_lines      := 0;
29249       x_inv_item_id_prev := -9999999;
29250       x_cle_id           := -9999999;
29251       p_inv_item_id_prev := -9999999;
29252       p_line_type_prev   := 'NULL';
29253       l_prev_corp_book    := 'NULL';
29254       l_prev_asset_number := 'NULL';
29255       l_prev_tax_book     := 'NULL';
29256 
29257       -- Check product type
29258       -- in case of loan product, don't populate depreciation detail
29259       -- Bug 3407354
29260       --
29261       check_product_type(
29262                          x_return_status  => x_return_status,
29263                          x_msg_count      => x_msg_count,
29264                          x_msg_data       => x_msg_data,
29265                          p_prod_name      => okl_header_rec.product_name,
29266                          p_prod_id        => okl_header_rec.product_id,
29267                          x_loan_yn        => l_loan_yn
29268                         );
29269       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29270          x_return_status := OKL_API.G_RET_STS_ERROR;
29271          RAISE load_failed;
29272       END IF;
29273 
29274       -- 4414408
29275       -- Start: Bug #15992711
29276     /*  x_release_asset := get_release_asset_flag(
29277                                                 x_return_status   => x_return_status,
29278                                                 x_msg_count       => x_msg_count,
29279                                                 x_msg_data        => x_msg_data,
29280                                                 p_contract_number => okl_header_rec.contract_number_old,
29281                                                 p_org_id          => okl_header_rec.inventory_organization_id
29282                                     ) ;
29283       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29284          x_return_status := OKL_API.G_RET_STS_ERROR;
29285          RAISE load_failed;
29286       END IF;*/
29287       -- End: Bug #15992711
29288 
29289       --Bug# 16344245: Check that DT_EFFECTIVE_BALANCE_LEGACY if defined for one asset must be defined
29290       --               with the same date value for all assets
29291       check_balance_legacy(
29292                            x_return_status   => x_return_status,
29293                            x_msg_count       => x_msg_count,
29294                            x_msg_data        => x_msg_data,
29295                            p_contract_number => okl_header_rec.contract_number_old
29296                            ) ;
29297       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29298          x_return_status := OKL_API.G_RET_STS_ERROR;
29299          RAISE load_failed;
29300       END IF;
29301 
29302       FOR okl_line_rec IN okl_line_csr (okl_header_rec.contract_number_old)
29303       LOOP
29304 
29305         BEGIN --2
29306 
29307       -- Start: Bug #15992711
29308       x_release_asset := get_release_asset_flag(
29309                                                 x_return_status   => x_return_status,
29310                                                 x_msg_count       => x_msg_count,
29311                                                 x_msg_data        => x_msg_data,
29312                                                 p_contract_number => okl_header_rec.contract_number_old,
29313                                                 p_asset_number    => okl_line_rec.asset_number, -- Bug# 15992711
29314                                                 p_org_id          => okl_header_rec.inventory_organization_id
29315                                                ) ;
29316       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29317          x_return_status := OKL_API.G_RET_STS_ERROR;
29318          RAISE load_failed;
29319       END IF;
29320       -- End: Bug #15992711
29321 
29322           -- Bug 4350579 start
29323           -- validate line information before proceeding
29324           --
29325           debug_message('Processing line : '||okl_line_rec.line_type||'/'||okl_line_rec.line_number);
29326           check_line_literal (
29327                             x_return_status             => x_return_status,
29328                             x_msg_count                 => x_msg_count,
29329                             x_msg_data                  => x_msg_data,
29330                             p_contract_number           => okl_header_rec.contract_number_old,
29331                             p_import_request_stage      => okl_header_rec.import_request_stage,
29332                             p_product_id                => okl_header_rec.product_id,
29333                             p_product_name              => okl_header_rec.product_name,
29334                             p_line_number               => okl_line_rec.line_number,
29335                             p_line_type                 => okl_line_rec.line_type,
29336                             p_amount                    => okl_line_rec.amount,
29337                             p_currency_code             => okl_header_rec.currency_code,
29338                             p_asset_number              => okl_line_rec.asset_number,
29339                             p_inventory_item_name       => okl_line_rec.inventory_item_name,
29340                             p_inventory_item_id         => okl_line_rec.inventory_item_id,
29341                             p_install_site_number       => okl_line_rec.install_site_number,
29342                             p_install_site_id           => okl_line_rec.install_site_id,
29343                             p_asset_corporate_book      => okl_line_rec.asset_corporate_book,
29344                             p_asset_category_id         => okl_line_rec.asset_category_id,
29345                             p_asset_category_segment1   => okl_line_rec.asset_category_segment1,
29346                             p_asset_category_segment2   => okl_line_rec.asset_category_segment2,
29347                             p_asset_category_segment3   => okl_line_rec.asset_category_segment3,
29348                             p_asset_category_segment4   => okl_line_rec.asset_category_segment4,
29349                             p_asset_category_segment5   => okl_line_rec.asset_category_segment5,
29350                             p_asset_category_segment6   => okl_line_rec.asset_category_segment6,
29351                             p_asset_category_segment7   => okl_line_rec.asset_category_segment7,
29352                             p_asset_location_id         => okl_line_rec.asset_location_id,
29353                             p_asset_location_segment1   => okl_line_rec.asset_location_segment1,
29354                             p_asset_location_segment2   => okl_line_rec.asset_location_segment2,
29355                             p_asset_location_segment3   => okl_line_rec.asset_location_segment3,
29356                             p_asset_location_segment4   => okl_line_rec.asset_location_segment4,
29357                             p_asset_location_segment5   => okl_line_rec.asset_location_segment5,
29358                             p_asset_location_segment6   => okl_line_rec.asset_location_segment6,
29359                             p_asset_location_segment7   => okl_line_rec.asset_location_segment7,
29360                             p_depreciation_method_id    => okl_line_rec.depreciation_method_id,
29361                             p_depreciation_method_code  => okl_line_rec.depreciation_method_code,
29362                             p_life_in_months            => okl_line_rec.life_in_months,
29363                             p_fee_code                  => okl_line_rec.fee_code,
29364                             p_stream_purpose            => okl_line_rec.stream_purpose_code,
29365                             p_fee_type                  => okl_line_rec.fee_type,
29366                             p_price_list_name           => okl_line_rec.price_list_name,
29367                             p_price_list_id             => okl_line_rec.price_list_id,
29368                             p_counter_group_name        => okl_line_rec.counter_group_name,
29369                             p_counter_group_id          => okl_line_rec.counter_group_id,
29370                             p_usage_bill_frequency_code => okl_line_rec.usage_bill_frequency_code,
29371                             p_base_reading_uom_code     => okl_line_rec.base_reading_uom_code,
29372                             p_usage_type_code           => okl_line_rec.usage_type_code,
29373                             p_usage_period              => okl_line_rec.usage_period,
29374                             p_usage_no_of_period        => okl_line_rec.usage_no_of_period,
29375                             p_tax_cost                  => okl_line_rec.tax_cost,
29376                             p_tax_book                  => okl_line_rec.tax_book,
29377                             p_life_in_months_tax        => okl_line_rec.life_in_months_tax,
29378                             p_deprn_method_tax          => okl_line_rec.deprn_method_tax,
29379                             p_deprn_rate_tax            => okl_line_rec.deprn_rate_tax,
29380                             p_in_service_date           => okl_line_rec.in_service_date,
29381 			    p_link_asset_amount         => okl_line_rec.link_asset_amount,
29382                             p_inv_org_id                => okl_header_rec.inventory_organization_id,
29383                             p_term_quote_id             => okl_line_rec.termination_quote_id,
29384                             p_term_quote_number         => okl_line_rec.termination_quote_number,
29385                             p_fee_purpose_code          => okl_line_rec.fee_purpose_code,
29386                             --Bug# 16344245
29387                             p_amount_balance_legacy       => okl_line_rec.amount_balance_legacy,
29388                             p_dt_effective_balance_legacy => okl_line_rec.dt_effective_balance_legacy
29389                            );
29390 
29391           debug_message('check_line_literal: '||x_return_status);
29392 
29393           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29394              x_return_status := OKL_API.G_RET_STS_ERROR;
29395              RAISE load_failed;
29396           END IF;
29397 
29398           -- Bug 4321621 end
29399 
29400           -- Populates Header Record before calling APIs
29401           l_no_of_lines := l_no_of_lines + 1;
29402           l_progress := '100';
29403           okl_api.init_msg_list(p_init_msg_list => OKL_API.G_TRUE); --Bug 3958519
29404 
29405           debug_message('------> Processing Line: '||okl_line_rec.line_type);
29406 
29407           l_service_line_id := NULL;
29408           l_fee_line_id     := NULL;
29409           l_usage_line_id   := NULL;
29410 	  g_base_pmnt_hdr   := NULL;
29411 	  g_evg_pmnt_hdr    := NULL;
29412 
29413           -- Get Item and Organization Info, for All line type
29414           IF (okl_line_rec.inventory_item_id IS NOT NULL
29415               OR
29416               okl_line_rec.inventory_item_name IS NOT NULL) THEN
29417              get_inventory_org_item_id(
29418                                        x_return_status       => x_return_status,
29419                                        x_msg_count           => x_msg_count,
29420                                        x_msg_data            => x_msg_data,
29421                                        p_contract_number     => okl_header_rec.contract_number_old,
29422                                        P_line_number         => okl_line_rec.line_number,
29423                                        p_line_type           => okl_line_rec.line_type,
29424                                        p_inventory_org_id    => x_chrv_rec.inv_organization_id,
29425 				                                --okl_line_rec.inventory_organization_id,
29426                                        p_inventory_item_id   => okl_line_rec.inventory_item_id,
29427                                        p_inventory_item_name => okl_line_rec.inventory_item_name,
29428                                        x_inventory_org_id    => x_inventory_org_id,
29429                                        x_inventory_item_id   => x_inventory_item_id
29430                                       );
29431 
29432              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29433                  x_return_status := OKL_API.G_RET_STS_ERROR;
29434                  RAISE load_failed;
29435              END IF;
29436 
29437              debug_message('------>Inv Org ID: '||x_chrv_rec.inv_organization_id);
29438 
29439           END IF;
29440 
29441           -- Processing for Asset Lines
29442           IF (okl_line_rec.line_type = 'ASSET') THEN
29443 /* 4414408
29444              IF (okl_line_rec.asset_number = l_prev_asset_number) THEN
29445                 x_release_asset := g_release_asset_flag;
29446 
29447              ELSE --  check asset type
29448                 --
29449                 -- Check whether the asset it released already
29450                 -- If so, processing will be different
29451                 --
29452                 check_for_release_asset(
29453                                         x_return_status => x_return_status,
29454                                         x_msg_count     => x_msg_count,
29455                                         x_msg_data      => x_msg_data,
29456                                         p_asset_number  => okl_line_rec.asset_number,
29457                                         p_line_number   => okl_line_rec.line_number,
29458                                         p_org_id        => x_chrv_rec.inv_organization_id,
29459                                         x_release_asset => x_release_asset,
29460                                         x_asset_id      => x_asset_id
29461                                        );
29462 
29463                 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29464                     x_return_status := OKL_API.G_RET_STS_ERROR;
29465                     RAISE load_failed;
29466                 END IF;
29467 */
29468                 IF (x_release_asset = 'N'
29469                     AND
29470                     okl_line_rec.tax_book IS NOT NULL
29471                     AND
29472                     okl_line_rec.asset_corporate_book IS NULL) THEN
29473                     okl_api.set_message(
29474                                   G_APP_NAME,
29475                                   G_MISSING_VALUE_FOR_LINE,
29476                                   'CONTRACT_NUM',
29477                                   okl_header_rec.contract_number_old||'/'||TO_CHAR(okl_line_rec.line_number),
29478                                   'COL_NAME',
29479                                   'CORPORATE BOOK',
29480                                   'LINE',
29481                                   'ASSET'
29482                                   );
29483                    x_return_status := OKL_API.G_RET_STS_ERROR;
29484 
29485                 END IF;
29486 
29487                 IF (x_release_asset = 'N'
29488                    AND
29489                    okl_line_rec.inventory_item_name IS NULL
29490                    AND
29491                    okl_line_rec.inventory_item_id IS NULL) THEN
29492                    okl_api.set_message(
29493                                        G_APP_NAME,
29494                                        G_MISSING_VALUE_FOR_LINE,
29495                                        'CONTRACT_NUM',
29496                                        okl_header_rec.contract_number_old||'/'||TO_CHAR(okl_line_rec.line_number),
29497                                        'COL_NAME',
29498                                        'INVENTORY_ITEM_NAME OR INVENTORY_ITEM_ID',
29499                                        'LINE',
29500                                        'ASSET'
29501                                       );
29502 
29503                    x_return_status := OKL_API.G_RET_STS_ERROR;
29504                 END IF;
29505 
29506                 IF (x_release_asset = 'N'
29507                     AND
29508                     okl_line_rec.install_site_number IS NULL
29509                     AND
29510                     okl_line_rec.install_site_id IS NULL) THEN
29511                     okl_api.set_message(
29512                                         G_APP_NAME,
29513                                         G_MISSING_VALUE_FOR_LINE,
29514                                         'CONTRACT_NUM',
29515                                         okl_header_rec.contract_number_old||'/'||TO_CHAR(okl_line_rec.line_number),
29516                                         'COL_NAME',
29517                                         'INSTALL_SITE_NUMBER OR INSTALL_SITE_ID',
29518                                         'LINE',
29519                                         'ASSET'
29520                                        );
29521 
29522                     x_return_status := OKL_API.G_RET_STS_ERROR;
29523                 END IF;
29524 
29525 --             END IF;
29526 
29527              --
29528              -- make sure all the assets are either released or
29529              -- none of them are released asset,
29530              -- which means, mix of released and new asset should not
29531              -- be attched to a contract
29532              --Bug #15992711
29533              -- As per bug #15992711 a contract can have a mix of assets
29534              -- hence this validation needs to be removed
29535              --Bug #15992711
29536              --
29537              IF (l_no_of_lines = 1) THEN -- first asset line
29538 --               g_release_asset_flag := x_release_asset; -- set the value
29539 
29540                   create_release_asset_rule(
29541                                             x_return_status       => x_return_status,
29542                                             x_msg_count           => x_msg_count,
29543                                             x_msg_data            => x_msg_data,
29544                                             p_chr_id              => x_chrv_rec.id,
29545                                             p_release_asset_flag  => x_release_asset -- 4414408
29546                                            );
29547 
29548                   IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29549                       x_return_status := OKL_API.G_RET_STS_ERROR;
29550                       RAISE load_failed;
29551                   END IF;
29552 
29553                   IF (x_release_asset = 'Y') THEN
29554                      OPEN c_asset(okl_line_rec.asset_number);
29555                      FETCH c_asset into x_asset_id;
29556                      CLOSE c_asset;
29557                   END IF;
29558 /*4414408
29559 
29560              ELSE -- more than one different assets found
29561                IF (okl_line_rec.asset_number <> l_prev_asset_number
29562                    AND
29563                    x_release_asset <> g_release_asset_flag) THEN
29564 
29565                    okl_api.set_message(
29566                                        G_APP_NAME,
29567                                        G_MIXED_ASSET,
29568                                        'CONTRACT_NUM',
29569                                        okl_line_rec.contract_number_old
29570                                       );
29571                    x_return_status := OKL_API.G_RET_STS_ERROR;
29572                    RAISE load_failed;
29573                END IF;
29574 */
29575              END IF;
29576 
29577              IF (x_release_asset = 'Y') THEN
29578 
29579                 IF (l_loan_yn <> 'Y'
29580                     AND
29581                     okl_line_rec.asset_number = l_prev_asset_number
29582                     AND
29583                     okl_line_rec.asset_corporate_book = l_prev_corp_book ) THEN
29584 
29585                     IF (l_prev_tax_book = okl_line_rec.tax_book) THEN
29586 
29587                         -- Can not have more than one same Tax book
29588                         -- for one corporate book, raise error
29589 
29590                         okl_api.set_message(
29591                                             G_APP_NAME,
29592                                             G_DUP_TAX_BOOK,
29593                                             'TAX_BOOK',
29594                                             okl_line_rec.tax_book,
29595                                             'CONTRACT_NUM',
29596                                             okl_line_rec.contract_number_old||'/'||okl_line_rec.line_number,
29597                                             'ASSET_NUM',
29598                                             okl_line_rec.asset_number
29599                                            );
29600                         x_return_status := OKL_API.G_RET_STS_ERROR;
29601                        RAISE load_failed;
29602 
29603                     END IF;
29604 
29605                     debug_message('---->Processing Multiple Tax book');
29606 
29607                     get_tal_id(
29608                                x_return_status => x_return_status,
29609                                p_fa_line_id    => x_clev_fa_rec.id,
29610                                x_tal_id        => l_tal_id);
29611 
29612                     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29613                        x_return_status := OKL_API.G_RET_STS_ERROR;
29614                        RAISE load_failed;
29615                     END IF;
29616 
29617                     get_txd_id (
29618                                 x_return_status   => x_return_status,
29619                                 x_msg_count       => x_msg_count,
29620                                 x_msg_data        => x_msg_data,
29621                                 p_contract_number => okl_header_rec.contract_number_old,
29622                                 p_tal_id          => l_tal_id,
29623                                 p_tax_book        => okl_line_rec.tax_book,
29624                                 x_txd_id          => x_txd_id
29625                                );
29626 
29627                     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29628                        x_return_status := OKL_API.G_RET_STS_ERROR;
29629                        RAISE load_failed;
29630                     END IF;
29631 
29632                     --l_adpv_rec                    := NULL;
29633                     l_adpv_rec.id                 := x_txd_id;
29634                     l_adpv_rec.asset_number       := okl_line_rec.asset_number;
29635                     l_adpv_rec.tal_id             := l_tal_id;
29636 
29637                     IF (okl_line_rec.deprn_method_tax IS NOT NULL) THEN
29638                        l_adpv_rec.deprn_method_tax   := okl_line_rec.deprn_method_tax;
29639                     END IF;
29640 
29641                     IF (okl_line_rec.deprn_rate_tax IS NOT NULL) THEN
29642                        l_adpv_rec.deprn_rate_tax     := okl_line_rec.deprn_rate_tax;
29643                     END IF;
29644 
29645                     IF (okl_line_rec.deprn_rate_tax IS NOT NULL) THEN
29646                        l_adpv_rec.deprn_rate_tax     := okl_line_rec.deprn_rate_tax;
29647                     END IF;
29648 
29649                     IF (okl_line_rec.life_in_months_tax IS NOT NULL) THEN
29650                        l_adpv_rec.life_in_months_tax := okl_line_rec.life_in_months_tax;
29651                     END IF;
29652 
29653                     okl_txd_assets_pub.update_txd_asset_def(
29654                                                             p_api_version     => 1.0,
29655                                                             p_init_msg_list   => OKL_API.G_FALSE,
29656                                                             x_return_status   => x_return_status,
29657                                                             x_msg_count       => x_msg_count,
29658                                                             x_msg_data        => x_msg_data,
29659                                                             p_adpv_rec        => l_adpv_rec,
29660                                                             x_adpv_rec        => x_adpv_rec
29661                                                            );
29662 
29663                     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29664                         x_return_status := OKL_API.G_RET_STS_ERROR;
29665                         RAISE load_failed;
29666                     END IF;
29667 
29668                     debug_message('------>TXD Line Updated');
29669 
29670                     --
29671                     -- End of multiple Tax book logic for release asset
29672                     --
29673 
29674                     -- Bug# 4345613
29675                     l_rule_create_flag := 'N';
29676 
29677                 ELSE
29678 
29679                    process_release_asset(
29680                                          x_return_status      => x_return_status,
29681                                          x_msg_count          => x_msg_count,
29682                                          x_msg_data           => x_msg_data,
29683                                          p_chr_id             => x_chrv_rec.id,
29684                                          p_contract_number    => okl_line_rec.contract_number_old,
29685                                          p_asset_number       => okl_line_rec.asset_number,
29686                                          p_asset_id           => x_asset_id,
29687                                          p_line_number        => okl_line_rec.line_number,
29688                                          p_re_lease_yn        => x_release_asset, -- Bug #15992711 : Passing the re_lease_yn flag
29689                                          p_install_site_id    => okl_line_rec.install_site_id,
29690                                          p_install_site_num   => okl_line_rec.install_site_number,
29691                                          p_unit_price         => okl_line_rec.original_cost,
29692                                          p_deprn_method       => okl_line_rec.depreciation_method_code,
29693                                          p_life_in_months     => okl_line_rec.life_in_months,
29694                                          p_deprn_rate         => okl_line_rec.depreciation_rate,
29695                                          p_asset_location_id  => okl_line_rec.asset_location_id,
29696                                          p_asset_loc_segment1 => okl_line_rec.asset_location_segment1,
29697                                          p_asset_loc_segment2 => okl_line_rec.asset_location_segment2,
29698                                          p_asset_loc_segment3 => okl_line_rec.asset_location_segment3,
29699                                          p_asset_loc_segment4 => okl_line_rec.asset_location_segment4,
29700                                          p_asset_loc_segment5 => okl_line_rec.asset_location_segment5,
29701                                          p_asset_loc_segment6 => okl_line_rec.asset_location_segment6,
29702                                          p_asset_loc_segment7 => okl_line_rec.asset_location_segment7,
29703                                          p_salvage_value      => okl_line_rec.salvage_value,
29704                                          p_salvage_ptg        => okl_line_rec.salvage_value_percent,
29705                                          p_residual_grnty_amt => okl_line_rec.residual_amount_guarantee,
29706                                          p_residual_code      => okl_line_rec.guarantor_type_code,
29707                                          p_residual_ptg       => okl_line_rec.residual_percent,
29708                                          p_residual_amt       => okl_line_rec.residual_amount,
29709                                          p_tax_book           => okl_line_rec.tax_book,
29710                                          p_tax_deprn          => okl_line_rec.deprn_method_tax,
29711                                          p_tax_life_in_mnth   => okl_line_rec.life_in_months_tax,
29712                                          p_tax_deprn_rate     => okl_line_rec.deprn_rate_tax,
29713                                          p_pth_base_payout_basis        => okl_line_rec.pth_base_payout_basis,
29714                                          p_pth_base_stream_code         => okl_line_rec.pth_base_stream_code,
29715                                          p_pth_base_stream_purpose_code => okl_line_rec.pth_base_stream_purpose_code,
29716                                          p_pth_start_date               => okl_line_rec.pth_start_date,
29717                                          p_pth_evg_payout_basis         => okl_line_rec.pth_evg_payout_basis,
29718                                          p_pth_payout_basis_formula     => okl_line_rec.pth_payout_basis_formula,
29719                                          p_pth_evg_stream_code          => okl_line_rec.pth_evg_stream_code,
29720                                          p_pth_evg_stream_purpose_code  => okl_line_rec.pth_evg_stream_purpose_code,
29721                                          p_attribute_category           => okl_line_rec.attribute_category,
29722                                          p_attribute1                   => okl_line_rec.attribute1,
29723                                          p_attribute2                   => okl_line_rec.attribute2,
29724                                          p_attribute3                   => okl_line_rec.attribute3,
29725                                          p_attribute4                   => okl_line_rec.attribute4,
29726                                          p_attribute5                   => okl_line_rec.attribute5,
29727                                          p_attribute6                   => okl_line_rec.attribute6,
29728                                          p_attribute7                   => okl_line_rec.attribute7,
29729                                          p_attribute8                   => okl_line_rec.attribute8,
29730                                          p_attribute9                   => okl_line_rec.attribute9,
29731                                          p_attribute10                  => okl_line_rec.attribute10,
29732                                          p_attribute11                  => okl_line_rec.attribute11,
29733                                          p_attribute12                  => okl_line_rec.attribute12,
29734                                          p_attribute13                  => okl_line_rec.attribute13,
29735                                          p_attribute14                  => okl_line_rec.attribute14,
29736                                          p_attribute15                  => okl_line_rec.attribute15,
29737                                          --Bug# 16344245
29738                                          p_amount_balance_legacy        => okl_line_rec.amount_balance_legacy,
29739                                          p_dt_effective_balance_legacy  => okl_line_rec.dt_effective_balance_legacy,
29740                                          --Bug# 16344245
29741                                          x_clev_fin_rec                 => x_clev_fin_rec,
29742                                          x_clev_model_rec               => x_clev_model_rec,
29743                                          x_clev_fa_rec                  => x_clev_fa_rec,
29744                                          x_clev_ib_rec                  => x_clev_ib_rec
29745                                         );
29746 
29747                    IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29748                        x_return_status := OKL_API.G_RET_STS_ERROR;
29749                        RAISE load_failed;
29750                    END IF;
29751 
29752                    x_cle_id := x_clev_fin_rec.id;
29753 
29754                 END IF;
29755 
29756              ELSE -- process new assets
29757 
29758                 --
29759                 -- Multiple Tax book creation
29760                 --
29761                 -- Check for Corporate book and asset number
29762                 -- If those 2 matches with previous records create
29763                 -- Tax book only
29764                 --
29765                 IF (l_loan_yn <> 'Y'
29766                     AND
29767                     okl_line_rec.asset_number = l_prev_asset_number
29768                     AND
29769                     okl_line_rec.asset_corporate_book = l_prev_corp_book ) THEN
29770 
29771                     IF (l_prev_tax_book = okl_line_rec.tax_book) THEN
29772 
29773                         -- Can not have more than one same Tax book
29774                         -- for one corporate book, raise error
29775 
29776                         okl_api.set_message(
29777                                             G_APP_NAME,
29778                                             G_DUP_TAX_BOOK,
29779                                             'TAX_BOOK',
29780                                             okl_line_rec.tax_book,
29781                                             'CONTRACT_NUM',
29782                                             okl_line_rec.contract_number_old||'/'||okl_line_rec.line_number,
29783                                             'ASSET_NUM',
29784                                             okl_line_rec.asset_number
29785                                            );
29786                         x_return_status := OKL_API.G_RET_STS_ERROR;
29787                        RAISE load_failed;
29788 
29789                     END IF;
29790 
29791                     debug_message('---->Processing Multiple Tax book');
29792 
29793                     l_adpv_rec                    := NULL;
29794                     l_adpv_rec.tal_id             := l_tal_id;
29795                     l_adpv_rec.asset_number       := okl_line_rec.asset_number;
29796                     l_adpv_rec.cost               := okl_line_rec.tax_cost;
29797                     l_adpv_rec.tax_book           := okl_line_rec.tax_book;
29798                     l_adpv_rec.life_in_months_tax := okl_line_rec.life_in_months_tax;
29799                     l_adpv_rec.deprn_method_tax   := okl_line_rec.deprn_method_tax;
29800                     l_adpv_rec.deprn_rate_tax     := okl_line_rec.deprn_rate_tax;
29801                     l_adpv_rec.salvage_value      := 0;
29802 
29803                     -- Take currency info from header, Bug 4005881
29804                     l_adpv_rec.CURRENCY_CODE            := okl_header_rec.currency_code;
29805                     l_adpv_rec.CURRENCY_CONVERSION_TYPE := okl_header_rec.currency_conversion_type;
29806                     l_adpv_rec.CURRENCY_CONVERSION_RATE := okl_header_rec.currency_conversion_rate;
29807                     l_adpv_rec.CURRENCY_CONVERSION_DATE := okl_header_rec.currency_conversion_date;
29808 
29809                     okl_txd_assets_pub.create_txd_asset_def(
29810                                                             p_api_version     => 1.0,
29811                                                             p_init_msg_list   => OKL_API.G_FALSE,
29812                                                             x_return_status   => x_return_status,
29813                                                             x_msg_count       => x_msg_count,
29814                                                             x_msg_data        => x_msg_data,
29815                                                             p_adpv_rec        => l_adpv_rec,
29816                                                             x_adpv_rec        => x_adpv_rec
29817                                                            );
29818 
29819                     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29820                         x_return_status := OKL_API.G_RET_STS_ERROR;
29821                         RAISE load_failed;
29822                     END IF;
29823 
29824                     debug_message('------>Only TXD Line Created');
29825 
29826                     --
29827                     -- End of multiple Tax book logic
29828                     --
29829 
29830                     -- Bug# 4345613
29831                     l_rule_create_flag := 'N';
29832 
29833                 ELSE -- create new asset line
29834 
29835                    p_clev_fin_rec                  := NULL;
29836                    p_clev_fin_rec.chr_id           := x_chrv_rec.id;
29837                    p_clev_fin_rec.line_number      := okl_line_rec.line_number;
29838                    p_clev_fin_rec.sts_code         := 'NEW';
29839                    p_clev_fin_rec.dnz_chr_id       := x_chrv_rec.id;
29840                    p_clev_fin_rec.item_description := okl_line_rec.description;
29841                    p_clev_fin_rec.price_unit       := okl_line_rec.original_cost;
29842                    p_clev_fin_rec.currency_code    := okl_header_rec.currency_code;
29843                    p_clev_fin_rec.start_date       := okl_line_rec.start_date;
29844                    p_clev_fin_rec.end_date         := okl_line_rec.end_date;
29845                    p_clev_fin_rec.name             := okl_line_rec.asset_number;
29846 /* 4414408
29847                    get_lse_id(
29848                               x_return_status   => x_return_status,
29849                               x_msg_count       => x_msg_count,
29850                               x_msg_data        => x_msg_data,
29851                               p_contract_number => okl_header_rec.contract_number_old,
29852                               p_line_number     => okl_line_rec.line_number,
29853                               p_lty_code        => 'FREE_FORM1',
29854                               p_top_line_lty_code => NULL,
29855                               x_lse_id          => x_lse_id
29856                              );
29857                    IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29858                       x_return_status := OKL_API.G_RET_STS_ERROR;
29859                       RAISE load_failed;
29860                    END IF;
29861 */
29862                    l_progress := '101';
29863 
29864                    p_clev_fin_rec.lse_id           := G_FIN_LINE_LTY_ID;
29865 
29866       -- start cklee 02/18/2004  bug# 3440442
29867 
29868                    validate_real_est(
29869                               x_return_status   => x_return_status,
29870                               x_msg_count       => x_msg_count,
29871                               x_msg_data        => x_msg_data,
29872                               p_intf_line       => okl_line_rec
29873                              );
29874                    IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29875                       x_return_status := OKL_API.G_RET_STS_ERROR;
29876                       RAISE load_failed;
29877                    END IF;
29878 
29879       -- end cklee 02/18/2004  bug# 3440442
29880       -- Rviriyal - fix for bug 5397754 -- start
29881        IF (okl_line_rec.CAPITALIZE_DOWN_PAYMENT_YN IS NOT NULL) AND
29882         (okl_line_rec.CAPITALIZE_DOWN_PAYMENT_YN = 'N') THEN
29883            IF (okl_line_rec.DOWN_PAYMENT_RECEIVER_CODE IS NOT NULL) AND
29884                (okl_line_rec.DOWN_PAYMENT_RECEIVER_CODE = 'VENDOR') THEN
29885                     okl_api.set_message(
29886                                             G_APP_NAME,
29887                                             'OKL_INVALID_COMBINATION',
29888                                             'CONTRACT_NUM',
29889                                             okl_line_rec.contract_number_old||'/'||okl_line_rec.line_number,
29890                                             'ASSET_NUM',
29891                                             okl_line_rec.asset_number
29892                                            );
29893                         x_return_status := OKL_API.G_RET_STS_ERROR;
29894                        RAISE load_failed;
29895 
29896                     END IF;
29897          END IF;
29898 
29899          -- Rviriyal - fix for bug 5397754 -- End
29900 
29901                    p_klev_fin_rec                           := NULL;
29902                    p_klev_fin_rec.year_of_manufacture       := okl_line_rec.year_of_manufacture;
29903                    p_klev_fin_rec.residual_percentage       := okl_line_rec.residual_percent;
29904                    p_klev_fin_rec.residual_value            := okl_line_rec.residual_amount;
29905 /*
29906                    IF (okl_line_rec.residual_amount IS NULL) THEN
29907                       --p_klev_fin_rec.residual_value         := (okl_line_rec.residual_percent / (nvl(okl_line_rec.amount,1) * 100));
29908                             p_klev_fin_rec.residual_value         := (okl_line_rec.residual_percent / 100) * nvl(okl_line_rec.amount,0);
29909                    ELSE
29910                       p_klev_fin_rec.residual_value         := okl_line_rec.residual_amount;
29911                    END IF;
29912 */
29913                    p_klev_fin_rec.residual_grnty_amount     := okl_line_rec.residual_amount_guarantee;
29914                    p_klev_fin_rec.tradein_amount            := okl_line_rec.trade_in_amount;
29915 
29916                    IF (okl_line_rec.capital_reduction_percent IS NOT NULL) THEN
29917                       --p_klev_fin_rec.capital_reduction      := (okl_line_rec.capital_reduction_percent / (nvl(okl_line_rec.amount,1) * 100));
29918                       p_klev_fin_rec.capital_reduction      := (okl_line_rec.capital_reduction_percent / 100)
29919                                                                   * nvl(okl_line_rec.amount,0);
29920                    END IF;
29921 
29922                    IF (okl_line_rec.capital_reduction_amount IS NOT NULL) THEN
29923                       p_klev_fin_rec.capital_reduction      := okl_line_rec.capital_reduction_amount;
29924                    END IF;
29925 
29926 		   --rviriyal : bug# 5397754
29927                    p_klev_fin_rec.CAPITALIZE_DOWN_PAYMENT_YN   :=  okl_line_rec.CAPITALIZE_DOWN_PAYMENT_YN;
29928                    p_klev_fin_rec.DOWN_PAYMENT_RECEIVER_CODE  :=  okl_line_rec.DOWN_PAYMENT_RECEIVER_CODE;
29929                    --rviriyal : end
29930 
29931       -- start cklee 02/16/2004  bug# 3440442
29932                    p_klev_fin_rec.initial_direct_cost       := okl_line_rec.real_est_init_direct_cost;
29933                    p_klev_fin_rec.occupancy                 := okl_line_rec.real_est_occupancy;
29934                    p_klev_fin_rec.date_last_inspection      := okl_line_rec.real_est_date_last_insp;
29935                    p_klev_fin_rec.date_next_inspection_due  := okl_line_rec.real_est_date_next_insp;
29936                    p_klev_fin_rec.date_commitment_expiration  := okl_line_rec.real_est_accept_expire_date;
29937       -- fnd lookup_type = 'OKL_PROPERTY_CLASS_OPTIONS'. check at API level
29938                    p_klev_fin_rec.prc_code                  := okl_line_rec.real_est_property_class_code;
29939 
29940       -- end cklee 02/16/2004 bug# 3440442
29941 
29942                    p_klev_fin_rec.weighted_average_life     := okl_line_rec.real_est_wtd_avg_life;
29943                    p_klev_fin_rec.bond_equivalent_yield     := okl_line_rec.real_est_bond_eq_yield;
29944                    p_klev_fin_rec.refinance_amount          := okl_line_rec.real_est_refinance_amt;
29945                    p_klev_fin_rec.credit_tenant_yn          := okl_line_rec.real_est_credit_tenant_flag;
29946                    p_klev_fin_rec.coverage_ratio            := okl_line_rec.real_est_coverage_ratio;
29947                    p_klev_fin_rec.date_appraisal            := okl_line_rec.real_est_appraisal_date;
29948                    p_klev_fin_rec.appraisal_value           := okl_line_rec.real_est_appraisal_value;
29949                    p_klev_fin_rec.gross_square_footage      := okl_line_rec.real_est_gross_footage;
29950                    p_klev_fin_rec.net_rentable              := okl_line_rec.real_est_net_footage_rentable;
29951                    p_klev_fin_rec.date_letter_acceptance    := okl_line_rec.real_est_letter_accept_date;
29952                    --p_klev_fin_rec.oec                       := okl_line_rec.amount;
29953                    p_klev_fin_rec.oec                       := okl_line_rec.original_cost;
29954                    --p_klev_fin_rec.capital_amount            := okl_line_rec.amount;
29955                    p_klev_fin_rec.capitalized_interest      := okl_line_rec.capitalized_interest;
29956                    p_klev_fin_rec.capital_reduction_percent := okl_line_rec.capital_reduction_percent;
29957                    p_klev_fin_rec.residual_code             := NVL(okl_line_rec.guarantor_type_code,'NONE');
29958                    p_cimv_model_rec                         := NULL;
29959                    p_cimv_model_rec.chr_id                  := x_chrv_rec.id;
29960                    p_cimv_model_rec.dnz_chr_id              := x_chrv_rec.id;
29961                    p_cimv_model_rec.number_of_items         := okl_line_rec.total_units;
29962 
29963                    l_progress := '102';
29964                    IF (x_inventory_org_id IS NOT NULL) THEN
29965                       p_cimv_model_rec.object1_id2          := x_inventory_org_id;
29966                       p_cimv_model_rec.object1_id1          := x_inventory_item_id;
29967                       p_cimv_model_rec.jtot_object1_code    := 'OKX_SYSITEM';
29968                    END IF;
29969 
29970 
29971                    p_clev_fa_rec                         := NULL;
29972                    p_clev_fa_rec.chr_id                  := x_chrv_rec.id;
29973                    p_clev_fa_rec.line_number             := okl_line_rec.line_number;
29974                    p_clev_fa_rec.name                    := okl_line_rec.asset_number;
29975                    p_clev_fa_rec.sts_code                := 'NEW';
29976                    p_clev_fa_rec.item_description        := okl_line_rec.description;
29977 /* 4414408
29978                    get_lse_id(
29979                               x_return_status   => x_return_status,
29980                               x_msg_count       => x_msg_count,
29981                               x_msg_data        => x_msg_data,
29982                               p_contract_number => okl_header_rec.contract_number_old,
29983                               p_line_number     => okl_line_rec.line_number,
29984                               p_lty_code        => 'FIXED_ASSET',
29985                               p_top_line_lty_code => 'FREE_FORM1',
29986                               x_lse_id          => x_lse_id
29987                              );
29988                    IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29989                       x_return_status := OKL_API.G_RET_STS_ERROR;
29990                       RAISE load_failed;
29991                    END IF;
29992 */
29993                    l_progress := '103';
29994                    p_clev_fa_rec.lse_id := G_FA_LINE_LTY_ID;
29995 
29996                    p_cimv_fa_rec := NULL;
29997 /* 4414408
29998                    l_new_yn      := 'Y'; -- Yes to create Asset, No to validate asset, Default is 'Y'
29999 
30000                    IF (l_new_yn = 'N') THEN
30001                       get_asset_id(
30002                                    x_return_status   => x_return_status,
30003                                    x_msg_count       => x_msg_count,
30004                                    x_msg_data        => x_msg_data,
30005                                    p_contract_number => okl_header_rec.contract_number_old,
30006                                    p_line_number     => okl_line_rec.line_number,
30007                                    p_asset_number    => okl_line_rec.asset_number,
30008                                    x_id1             => x_id1,
30009                                    x_id2             => x_id2
30010                                  );
30011                       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30012                          x_return_status := OKL_API.G_RET_STS_ERROR;
30013                          RAISE load_failed;
30014                       END IF;
30015 
30016                       p_cimv_fa_rec.chr_id            := x_chrv_rec.id;
30017                       p_cimv_fa_rec.dnz_chr_id        := x_chrv_rec.id;
30018                       p_cimv_fa_rec.jtot_object1_code := 'OKX_ASSET';
30019                       p_cimv_fa_rec.object1_id1       := x_id1;
30020                       p_cimv_fa_rec.object1_id2       := x_id2;
30021                    END IF;
30022 
30023                    p_talv_fa_rec := NULL;
30024 
30025                    IF (l_new_yn = 'Y') THEN
30026 */
30027                       p_talv_fa_rec := NULL;  -- re-initialized for bug 5584648
30028                       -- Take currency info from header, Bug 4005881
30029                       p_talv_fa_rec.CURRENCY_CODE            := okl_header_rec.currency_code;
30030                       p_talv_fa_rec.CURRENCY_CONVERSION_TYPE := okl_header_rec.currency_conversion_type;
30031                       p_talv_fa_rec.CURRENCY_CONVERSION_RATE := okl_header_rec.currency_conversion_rate;
30032                       p_talv_fa_rec.CURRENCY_CONVERSION_DATE := okl_header_rec.currency_conversion_date;
30033 
30034                       p_talv_fa_rec.asset_number          := okl_line_rec.asset_number;
30035                       p_talv_fa_rec.original_cost         := okl_line_rec.original_cost;
30036                       p_talv_fa_rec.current_units         := okl_line_rec.total_units;
30037                       --p_talv_fa_rec.depreciation_cost     := okl_line_rec.amount;
30038                       p_talv_fa_rec.description           := okl_line_rec.description;
30039                       p_talv_fa_rec.model_number          := okl_line_rec.model;
30040                       p_talv_fa_rec.manufacturer_name     := okl_line_rec.make;
30041                       p_talv_fa_rec.year_manufactured     := okl_line_rec.year_of_manufacture;
30042 
30043                       IF (l_loan_yn <> 'Y') THEN -- not a loan product
30044                          p_talv_fa_rec.corporate_book        := okl_line_rec.asset_corporate_book;
30045                          p_talv_fa_rec.depreciation_cost     := okl_line_rec.amount; --okl_line_rec.depreciation_cost;
30046                       END IF; -- l_loan_yn
30047 
30048                       IF (l_loan_yn <> 'Y') THEN -- not a loan product
30049                          x_comb_id := NULL;
30050                          get_flexid(
30051                                     x_return_status   => x_return_status,
30052                                     x_msg_count       => x_msg_count,
30053                                     x_msg_data        => x_msg_data,
30054                                     p_contract_number => okl_header_rec.contract_number_old,
30055                                     p_line_number     => okl_line_rec.line_number,
30056                                     p_type            => 'ASSET_CATEGORY',
30057                                     p_comb_id         => okl_line_rec.asset_category_id,
30058                                     p_segment1        => okl_line_rec.asset_category_segment1,
30059                                     p_segment2        => okl_line_rec.asset_category_segment2,
30060                                     p_segment3        => okl_line_rec.asset_category_segment3,
30061                                     p_segment4        => okl_line_rec.asset_category_segment4,
30062                                     p_segment5        => okl_line_rec.asset_category_segment5,
30063                                     p_segment6        => okl_line_rec.asset_category_segment6,
30064                                     p_segment7        => okl_line_rec.asset_category_segment7,
30065                                     x_comb_id         => x_comb_id
30066                                    );
30067                          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30068                             x_return_status := OKL_API.G_RET_STS_ERROR;
30069                             RAISE load_failed;
30070                          END IF;
30071                          p_talv_fa_rec.depreciation_id       := x_comb_id;
30072 
30073                          x_comb_id := NULL;
30074                          get_flexid(
30075                                     x_return_status   => x_return_status,
30076                                     x_msg_count       => x_msg_count,
30077                                     x_msg_data        => x_msg_data,
30078                                     p_type            => 'ASSET_LOCATION',
30079                                     p_contract_number => okl_header_rec.contract_number_old,
30080                                     p_line_number     => okl_line_rec.line_number,
30081                                     p_comb_id         => okl_line_rec.asset_location_id,
30082                                     p_segment1        => okl_line_rec.asset_location_segment1,
30083                                     p_segment2        => okl_line_rec.asset_location_segment2,
30084                                     p_segment3        => okl_line_rec.asset_location_segment3,
30085                                     p_segment4        => okl_line_rec.asset_location_segment4,
30086                                     p_segment5        => okl_line_rec.asset_location_segment5,
30087                                     p_segment6        => okl_line_rec.asset_location_segment6,
30088                                     p_segment7        => okl_line_rec.asset_location_segment7,
30089                                     x_comb_id         => x_comb_id
30090                                    );
30091                          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30092                             x_return_status := OKL_API.G_RET_STS_ERROR;
30093                             RAISE load_failed;
30094                          END IF;
30095                          p_talv_fa_rec.fa_location_id        := x_comb_id;
30096 
30097                          -- Asset Key
30098                          x_comb_id := NULL;
30099                          debug_message('Asset Key segment1: '||okl_line_rec.asset_key_segment1);
30100 
30101                          get_asset_key_id(
30102                                     x_return_status   => x_return_status,
30103                                     x_msg_count       => x_msg_count,
30104                                     x_msg_data        => x_msg_data,
30105                                     p_contract_number => okl_header_rec.contract_number_old,
30106                                     p_line_number     => okl_line_rec.line_number,
30107                                     p_comb_id         => okl_line_rec.asset_key_id,
30108                                     p_segment1        => okl_line_rec.asset_key_segment1,
30109                                     p_segment2        => okl_line_rec.asset_key_segment2,
30110                                     p_segment3        => okl_line_rec.asset_key_segment3,
30111                                     p_segment4        => okl_line_rec.asset_key_segment4,
30112                                     p_segment5        => okl_line_rec.asset_key_segment5,
30113                                     p_segment6        => okl_line_rec.asset_key_segment6,
30114                                     p_segment7        => okl_line_rec.asset_key_segment7,
30115                                     p_segment8        => okl_line_rec.asset_key_segment8,
30116                                     p_segment9        => okl_line_rec.asset_key_segment9,
30117                                     p_segment10       => okl_line_rec.asset_key_segment10,
30118                                     x_comb_id         => x_comb_id
30119                                    );
30120                          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30121                             x_return_status := OKL_API.G_RET_STS_ERROR;
30122                             RAISE load_failed;
30123                          END IF;
30124                          p_talv_fa_rec.asset_key_id       := x_comb_id;
30125                          debug_message('Asset Key: '||x_comb_id);
30126                          -- Asset Key
30127 
30128                          p_talv_fa_rec.deprn_method          := okl_line_rec.depreciation_method_code; --??? Get method Code from id
30129                          p_talv_fa_rec.life_in_months        := okl_line_rec.life_in_months;
30130                          p_talv_fa_rec.deprn_rate            := okl_line_rec.depreciation_rate;
30131                          p_talv_fa_rec.salvage_value         := okl_line_rec.salvage_value;
30132                          p_talv_fa_rec.percent_salvage_value := okl_line_rec.salvage_value_percent;
30133                          p_talv_fa_rec.in_service_date       := okl_line_rec.in_service_date;
30134                                                             --okl_header_rec.expected_delivery_date;-- ??? should be at line
30135                       END IF; -- l_loan_yn
30136 
30137 --                   END IF;
30138 
30139                    l_progress := '104';
30140 
30141                    get_install_site_id(
30142                                        x_return_status     => x_return_status,
30143                                        x_msg_count         => x_msg_count,
30144                                        x_msg_data          => x_msg_data,
30145                                        p_contract_number   => okl_header_rec.contract_number_old,
30146                                        p_line_number       => okl_line_rec.line_number,
30147                                        p_install_site_id   => okl_line_rec.install_site_id,
30148                                        p_install_site_number => okl_line_rec.install_site_number,
30149                                        x_install_site_id   => x_install_site_id
30150                                       );
30151 
30152                    IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30153                       x_return_status := OKL_API.G_RET_STS_ERROR;
30154                       RAISE load_failed;
30155                    END IF;
30156 
30157                    --debug_message('Install site id: '||x_install_site_id);
30158 
30159                    -- Get IB Lines
30160                    l_ib_line_count := 0;
30161                    p_itiv_ib_tbl.DELETE; -- initialize table, Bug 4067179
30162                    FOR okl_ib_rec IN okl_ib_csr(okl_header_rec.contract_number_old,
30163                                                 okl_line_rec.line_number)
30164                    LOOP
30165 
30166                      --Bug# 9299607
30167                      IF (okl_ib_rec.serial_number IS NOT NULL AND LENGTH(okl_ib_rec.serial_number) > 30) THEN
30168                        OKL_API.Set_Message(p_app_name     => G_APP_NAME,
30169                          p_msg_name     => 'OKL_LLA_EXCEED_MAXIMUM_LENGTH',
30170                          p_token1       => 'MAX_CHARS',
30171                          p_token1_value => '30',
30172                          p_token2       => 'COL_NAME',
30173                          p_token2_value => 'SERIAL_NUMBER');
30174 
30175                        x_return_status := OKL_API.G_RET_STS_ERROR;
30176                        RAISE load_failed;
30177                      END IF;
30178 
30179                      l_ib_line_count := l_ib_line_count + 1;
30180 
30181                      p_itiv_ib_tbl(l_ib_line_count).line_number          := okl_line_rec.line_number;
30182                      p_itiv_ib_tbl(l_ib_line_count).mfg_serial_number_yn := 'Y';
30183                      p_itiv_ib_tbl(l_ib_line_count).object_id1_new       := x_install_site_id;
30184                      p_itiv_ib_tbl(l_ib_line_count).object_id2_new       := '#';
30185                      p_itiv_ib_tbl(l_ib_line_count).serial_number        := okl_ib_rec.serial_number;
30186 
30187                      debug_message('Count: '||l_ib_line_count);
30188                      debug_message('Serial#: '||p_itiv_ib_tbl(l_ib_line_count).serial_number);
30189 
30190                    END LOOP; --ib line
30191 
30192                    IF (l_ib_line_count = 0) THEN
30193 
30194                      p_itiv_ib_tbl(1).mfg_serial_number_yn := 'N';
30195                      p_itiv_ib_tbl(1).object_id1_new       := x_install_site_id;
30196                      p_itiv_ib_tbl(1).object_id2_new       := '#';
30197 
30198                    END IF;
30199                    debug_message('Residual% : '|| p_klev_fin_rec.residual_percentage);
30200                    debug_message('Residual value : '|| p_klev_fin_rec.residual_value);
30201 
30202                    -- Contract addl field, Bug 4558486
30203 
30204                    debug_message('Contract Asset line DFF...'||'Line#: '||okl_line_rec.line_number);
30205 
30206                    p_klev_fin_rec.validate_dff_yn          := 'Y';  -- always validate DFF
30207                    p_klev_fin_rec.attribute_category       := okl_line_rec.attribute_category;
30208                    debug_message('attribute_category: '||p_klev_fin_rec.attribute_category);
30209                    p_klev_fin_rec.attribute1               := okl_line_rec.attribute1;
30210                    debug_message('attribute1: '||p_klev_fin_rec.attribute1);
30211                    p_klev_fin_rec.attribute2               := okl_line_rec.attribute2;
30212                    debug_message('attribute2: '||p_klev_fin_rec.attribute2);
30213                    p_klev_fin_rec.attribute3               := okl_line_rec.attribute3;
30214                    p_klev_fin_rec.attribute4               := okl_line_rec.attribute4;
30215                    p_klev_fin_rec.attribute5               := okl_line_rec.attribute5;
30216                    p_klev_fin_rec.attribute6               := okl_line_rec.attribute6;
30217                    p_klev_fin_rec.attribute7               := okl_line_rec.attribute7;
30218                    p_klev_fin_rec.attribute8               := okl_line_rec.attribute8;
30219                    p_klev_fin_rec.attribute9               := okl_line_rec.attribute9;
30220                    p_klev_fin_rec.attribute10              := okl_line_rec.attribute10;
30221                    p_klev_fin_rec.attribute11              := okl_line_rec.attribute11;
30222                    p_klev_fin_rec.attribute12              := okl_line_rec.attribute12;
30223                    p_klev_fin_rec.attribute13              := okl_line_rec.attribute13;
30224                    p_klev_fin_rec.attribute14              := okl_line_rec.attribute14;
30225                    p_klev_fin_rec.attribute15              := okl_line_rec.attribute15;
30226                    -- Contract addl field, Bug 4558486
30227 
30228                    --Bug# 16344245
30229                    debug_message('Contract Asset line Balance Legacy...'||'Line#: '||okl_line_rec.line_number);
30230 
30231                    p_klev_fin_rec.amount_balance_legacy       := okl_line_rec.amount_balance_legacy;
30232                    p_klev_fin_rec.dt_effective_balance_legacy := okl_line_rec.dt_effective_balance_legacy;
30233 
30234                    debug_message('amount_balance_legacy: '||p_klev_fin_rec.amount_balance_legacy);
30235                    debug_message('dt_effective_balance_legacy: '||p_klev_fin_rec.dt_effective_balance_legacy);
30236                    --Bug# 16344245
30237 
30238                    debug_message('Before create_all_line');
30239 
30240                    okl_create_kle_pvt.Create_all_line(
30241                                                       p_api_version    => 1.0,
30242                                                       p_init_msg_list  => OKL_API.G_FALSE,
30243                                                       x_return_status  => x_return_status,
30244                                                       x_msg_count      => x_msg_count,
30245                                                       x_msg_data       => x_msg_data,
30246                                                       P_new_yn         => 'Y', -- 4414408
30247                                                       p_asset_number   => okl_line_rec.asset_number,
30248                                                       p_clev_fin_rec   => p_clev_fin_rec,
30249                                                       p_klev_fin_rec   => p_klev_fin_rec,
30250                                                       p_cimv_model_rec => p_cimv_model_rec,
30251                                                       p_clev_fa_rec    => p_clev_fa_rec,
30252                                                       p_cimv_fa_rec    => p_cimv_fa_rec,
30253                                                       p_talv_fa_rec    => p_talv_fa_rec,
30254                                                       p_itiv_ib_tbl    => p_itiv_ib_tbl,
30255                                                       x_clev_fin_rec   => x_clev_fin_rec,
30256                                                       x_clev_model_rec => x_clev_model_rec,
30257                                                       x_clev_fa_rec    => x_clev_fa_rec,
30258                                                       x_clev_ib_rec    => x_clev_ib_rec
30259                                                      );
30260 
30261                    IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30262                       x_return_status := OKL_API.G_RET_STS_ERROR;
30263                       RAISE load_failed;
30264                    END IF;
30265 		   --rviriyal bug#6015423 start 27-Aug-2007
30266                      /* Added code to consider date_funding_expected field. If date_funding_expected
30267                         is present in okl_interface_lines that value is considered else asset
30268                         start date is considered. */
30269 
30270                      IF okl_line_rec.date_funding_expected IS NULL THEN
30271                        p_klev_fin_rec.date_funding_expected := x_clev_fin_rec.start_date;
30272                      ELSE
30273                        p_klev_fin_rec.date_funding_expected := okl_line_rec.date_funding_expected;
30274                      END IF;
30275 
30276                      OKL_LA_ASSET_PVT.update_contract_line(
30277                                                        p_api_version                =>1.0
30278                                                        ,p_init_msg_list             =>OKL_API.G_FALSE
30279                                                        ,x_return_status             =>x_return_status
30280                                                        ,x_msg_count                 =>x_msg_count
30281                                                        ,x_msg_data                  =>x_msg_data
30282                                                        ,p_id                        =>x_clev_fin_rec.id
30283                                                        ,p_date_delivery_expected    => NULL
30284                                                        ,p_date_funding_expected     => p_klev_fin_rec.date_funding_expected
30285                                                        ,p_org_id                    =>NULL
30286                                                        ,p_organization_id           =>NULL
30287                                                       );
30288                     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30289                          x_return_status := OKL_API.G_RET_STS_ERROR;
30290                          RAISE load_failed;
30291                     END IF;
30292 
30293                     --rviriyal bug#6015423 start 27-Aug-2007
30294 
30295                    debug_message('------>Line created');
30296 
30297 	  -- Bug 5155206
30298 	  /*  Load Rent payment for the asset line, before asset subisidy is processed.
30299 	       Rent line will be always TOP line. so skip check_payment_level call  */
30300 
30301 		  -- Process Rent Payments Interface Record, if any
30302 		  l_contract_number_old_prev := 'INITIAL';
30303 		  l_line_number_prev         := -999999999;
30304 		  l_payment_type_code_prev   := 'INITIAL';
30305 		  l_pmnt_sch_num_prev        := -999999999;
30306 		  l_start_date_prev          := NULL;
30307 		  l_number_of_periods_prev   := -999999999;
30308 		  l_rg_id                    := NULL;
30309 
30310 		  FOR okl_payment_rent_rec IN okl_payment_rent_csr(okl_header_rec.contract_number_old,
30311 							 okl_line_rec.line_number)
30312 		  LOOP
30313 		     BEGIN --5
30314 
30315 		       check_payment_record(
30316 					    x_return_status              => x_return_status,
30317 					    x_msg_count                  => x_msg_count,
30318 					    x_msg_data                   => x_msg_data,
30319 					    p_contract_number_old        => okl_payment_rent_rec.contract_number_old,
30320 					    p_line_number                => okl_payment_rent_rec.line_number,
30321 					    p_asset_number               => okl_payment_rent_rec.asset_number,
30322 					    p_payment_type_code          => okl_payment_rent_rec.payment_type_code,
30323 					    p_stream_purpose             => okl_payment_rent_rec.stream_purpose_code,
30324 					    p_payment_schedule_number    => okl_payment_rent_rec.payment_schedule_number,
30325 					    p_payment_frequency_code     => okl_payment_rent_rec.payment_frequency_code,
30326 					    p_arrears_flag               => okl_payment_rent_rec.arrears_flag,
30327 					    p_advance_payments           => okl_payment_rent_rec.advance_payments,
30328 					    p_payment_amount             => okl_payment_rent_rec.payment_amount,
30329 					    p_start_date                 => okl_payment_rent_rec.start_date,
30330 					    p_number_of_periods          => okl_payment_rent_rec.number_of_periods,
30331 					    p_rate                       => okl_payment_rent_rec.rate,
30332 					    p_comments                   => okl_payment_rent_rec.comments,
30333 					    p_stub_days                  => okl_payment_rent_rec.stub_days,
30334 					    p_stub_amount                => okl_payment_rent_rec.stub_amount
30335 					   );
30336 
30337 		       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30338 			   RAISE load_failed;
30339 		       END IF;
30340 
30341 			IF (l_contract_number_old_prev <> okl_payment_rent_rec.contract_number_old  -- prev checking
30342 			    OR
30343 			    l_line_number_prev         <> okl_payment_rent_rec.line_number
30344 			    OR
30345 			    l_payment_type_code_prev   <> okl_payment_rent_rec.payment_type_code) THEN
30346 
30347 			   IF (l_line_number_prev <> okl_payment_rent_rec.line_number) THEN -- for new line create rule group
30348 			       l_rg_id := NULL;
30349 			   END IF;
30350 
30351 			    create_payment_rule_group(
30352 						      x_return_status     => x_return_status,
30353 						      x_msg_count         => x_msg_count,
30354 						      x_msg_data          => x_msg_data,
30355 						      p_contract_number   => okl_header_rec.contract_number_old,
30356 						      p_line_number       => okl_line_rec.line_number,
30357 						      p_payment_type_code => okl_payment_rent_rec.payment_type_code,
30358 						      p_stream_purpose    => okl_payment_rent_rec.stream_purpose_code,
30359 						      p_chr_id            => x_chrv_rec.id,
30360 						      p_cle_id            => x_clev_fin_rec.id,
30361 						      p_rg_id             => l_rg_id,
30362 						      x_rgp_id            => x_rgp_id,
30363 						      x_slh_rulv_rec      => x_slh_rulv_rec
30364 						     );
30365 
30366 			   IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30367 			      RAISE load_failed;
30368 			   END IF;
30369 
30370 			ELSE
30371 			    l_progress := '170';
30372 
30373 			    -- Some more validation on Payment Lines
30374 			    IF (okl_payment_rent_rec.payment_schedule_number <= l_pmnt_sch_num_prev) THEN
30375 			       okl_api.set_message(
30376 						   G_APP_NAME,
30377 						   G_PAYMENT_SCHD_ERROR,
30378 						   'COL_VALUE',
30379 						    okl_payment_rent_rec.payment_schedule_number,
30380 						   'CONTRACT_NUM',
30381 						   okl_header_rec.contract_number_old||'/'||okl_payment_rent_rec.line_number
30382 						  );
30383 			       x_return_status := OKL_API.G_RET_STS_ERROR;
30384 			       RAISE load_failed;
30385 			    END IF;
30386 
30387 			    check_payment_frequency_code(
30388 							 x_return_status     => x_return_status,
30389 							 x_msg_count         => x_msg_count,
30390 							 x_msg_data          => x_msg_data,
30391 							 p_payment_freq_code => okl_payment_rent_rec.payment_frequency_code,
30392 							 x_id1               => x_pmnt_freq_id,
30393 							 x_uom_code          => x_uom_code
30394 							);
30395 
30396 			    IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30397 			       okl_api.set_message(
30398 						   G_APP_NAME,
30399 						   G_INVALID_VALUE,
30400 						   'CONTRACT_NUM',
30401 						   okl_payment_rent_rec.contract_number_old||'/'||okl_payment_rent_rec.line_number,
30402 						   'COL_NAME',
30403 						   'PAYMENT_FREQUENCY_CODE',
30404 						   'COL_VALUE',
30405 						   okl_payment_rent_rec.payment_frequency_code
30406 						  );
30407 			       RAISE load_failed;
30408 			    END IF;
30409 
30410 			    IF (x_uom_code = 'M') THEN
30411 			       l_mult_factor := 1;
30412 			    ELSIF (x_uom_code = 'Q') THEN
30413 			       l_mult_factor := 3;
30414 			    ELSIF (x_uom_code = 'S') THEN
30415 			       l_mult_factor := 6;
30416 			    ELSIF (x_uom_code = 'A') THEN
30417 			       l_mult_factor := 12;
30418 			    ELSE
30419 			       okl_api.set_message(
30420 						   G_APP_NAME,
30421 						   G_UOM_SETUP_ERROR,
30422 						   'COL_VALUE',
30423 						   okl_payment_rent_rec.payment_frequency_code
30424 						  );
30425 			       RAISE load_failed;
30426 			    END IF;
30427 
30428 
30429 			    l_current_start_date := add_months(l_start_date_prev, (l_number_of_periods_prev * l_mult_factor));
30430 
30431 			    IF (TRUNC(l_current_start_date) <> TRUNC(okl_payment_rent_rec.start_date)) THEN
30432 			       okl_api.set_message(
30433 						   G_APP_NAME,
30434 						   G_PAYMENT_START_DATE_ERROR,
30435 						   'CONTRACT_NUM',
30436 						   okl_payment_rent_rec.contract_number_old||'/'||okl_payment_rent_rec.line_number
30437 						  );
30438 			       RAISE load_failed;
30439 			    END IF;
30440 
30441 			END IF; --prev checking
30442 
30443 			IF (l_rg_id IS NULL) THEN
30444 			   l_rg_id := x_rgp_id;
30445 			END IF;
30446 
30447 			-- Create other rules
30448 			-- Keep a copy to compare with latest record
30449 			create_payment_other_rules(
30450 						   x_return_status      => x_return_status,
30451 						   x_msg_count          => x_msg_count,
30452 						   x_msg_data           => x_msg_data,
30453 						   p_contract_number    => okl_header_rec.contract_number_old,
30454 						   p_line_number        => okl_line_rec.line_number,
30455 						   p_payment_sch_number => okl_payment_rent_rec.payment_schedule_number,
30456 						   p_payment_freq_code  => okl_payment_rent_rec.payment_frequency_code,
30457 						   p_arrears_flag       => okl_payment_rent_rec.arrears_flag,
30458 						   p_advance_payments   => okl_payment_rent_rec.advance_payments,
30459 						   p_payment_amount     => okl_payment_rent_rec.payment_amount,
30460 						   p_start_date         => okl_payment_rent_rec.start_date,
30461 						   p_number_of_periods  => okl_payment_rent_rec.number_of_periods,
30462 						   p_rate               => okl_payment_rent_rec.rate,
30463 						   p_comments           => okl_payment_rent_rec.comments,
30464 						   p_stub_days          => okl_payment_rent_rec.stub_days,
30465 						   p_stub_amount        => okl_payment_rent_rec.stub_amount,
30466 						   p_slh_rulv_rec       => x_slh_rulv_rec,
30467 						   p_chr_id             => x_chrv_rec.id,
30468 						   p_cle_id             => x_cle_id,
30469 						   p_rgp_id             => x_rgp_id
30470 						  );
30471 
30472 			IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30473 			   RAISE load_failed;
30474 			END IF;
30475 
30476 			l_progress := '180';
30477 
30478 			l_contract_number_old_prev := okl_payment_rent_rec.contract_number_old;
30479 			l_line_number_prev         := okl_payment_rent_rec.line_number;
30480 			l_payment_type_code_prev   := okl_payment_rent_rec.payment_type_code;
30481 			l_pmnt_sch_num_prev        := okl_payment_rent_rec.payment_schedule_number;
30482 			l_start_date_prev          := okl_payment_rent_rec.start_date;
30483 			l_number_of_periods_prev   := okl_payment_rent_rec.number_of_periods;
30484 
30485 		     END; --5 Payment begin
30486 
30487 		  END LOOP; -- Payment Loop
30488            -- Bug 5155206
30489 
30490 
30491 /* OKL.H - Subsidy import start Bug 4411317 */
30492                    debug_message('------>Process Subsidy starts for Asset: '||okl_line_rec.asset_number);
30493                    process_subsidy(
30494                                    x_return_status => x_return_status,
30495                                    x_msg_count     => x_msg_count,
30496                                    x_msg_data      => x_msg_data,
30497                                    p_auth_org_id   => x_chrv_rec.authoring_org_id,
30498                                    p_contract_num  => okl_header_rec.contract_number_old,
30499                                    p_chr_id        => x_chrv_rec.id,
30500                                    p_asset_line_id => x_clev_fin_rec.id,
30501                                    p_asset_num     => okl_line_rec.asset_number
30502                                   );
30503 
30504                    debug_message('------>Process Subsidy ends '||x_return_status);
30505                    IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30506                       x_return_status := OKL_API.G_RET_STS_ERROR;
30507                       RAISE load_failed;
30508                    END IF;
30509 
30510 
30511 /* OKL.H - Subsidy import end */
30512 
30513 /* OKL.H - Addon import start Bug 5077142 */
30514                    debug_message('------>Process Addon starts for Asset: '||okl_line_rec.asset_number);
30515 
30516                    process_addon(
30517                                    x_return_status => x_return_status,
30518                                    x_msg_count     => x_msg_count,
30519                                    x_msg_data      => x_msg_data,
30520                                    p_auth_org_id   => x_chrv_rec.authoring_org_id,
30521                                    p_contract_num  => okl_header_rec.contract_number_old,
30522                                    p_chr_id        => x_chrv_rec.id,
30523                                    p_fa_cle_id     => x_clev_fa_rec.id,
30524                                    p_asset_num     => okl_line_rec.asset_number,
30525                                    p_model_line_id => x_clev_model_rec.id,
30526                                    p_number_of_items => okl_line_rec.total_units
30527                                   );
30528 
30529              --debug_message('AKP:NEEDED:x_clev_fa_rec.id=' || x_clev_fa_rec.id);
30530 
30531                    debug_message('------>Process Addon ends '||x_return_status);
30532                    IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30533                       x_return_status := OKL_API.G_RET_STS_ERROR;
30534                       RAISE load_failed;
30535                    END IF;
30536 
30537 /* OKL.H - Addon import end */
30538 
30539                    IF (okl_line_rec.pth_evg_payout_basis is NOT NULL) THEN
30540                       debug_message('------>Create party payment starts for Asset: '||okl_line_rec.asset_number || ' / '||okl_line_rec.line_number);
30541                       create_party_payment_hdr(
30542                                          x_return_status                   => x_return_status,
30543                                          x_msg_count                       => x_msg_count,
30544                                          x_msg_data                        => x_msg_data,
30545                                          p_contract_id                     => x_clev_fin_rec.dnz_chr_id,
30546                                          p_line_id                         => x_clev_fin_rec.id,
30547                                          p_line_type                       => okl_line_rec.line_type,
30548                                          p_pth_start_date                  => okl_line_rec.pth_start_date,
30549                                          p_pth_base_payout_basis           => okl_line_rec.pth_base_payout_basis,
30550                                          p_pth_base_stream_code            => okl_line_rec.pth_base_stream_code,
30551                                          p_pth_base_stream_purpose_code    => okl_line_rec.pth_base_stream_purpose_code,
30552                                          p_pth_evg_payout_basis            => okl_line_rec.pth_evg_payout_basis,
30553                                          p_pth_payout_basis_formula        => okl_line_rec.pth_payout_basis_formula,
30554                                          p_pth_evg_stream_code             => okl_line_rec.pth_evg_stream_code,
30555                                          p_pth_evg_stream_purpose_code     => okl_line_rec.pth_evg_stream_purpose_code,
30556                                          x_party_pmnt_hdr_tbl              => x_party_pmnt_hdr_tbl_out
30557                                         );
30558 
30559                       debug_message('------>Create party payment ends '||x_return_status);
30560                       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30561                          x_return_status := OKL_API.G_RET_STS_ERROR;
30562                          RAISE load_failed;
30563                       END IF;
30564 	              IF (x_party_pmnt_hdr_tbl_out.COUNT > 0 )THEN
30565 	                 l_counter := x_party_pmnt_hdr_tbl_out.FIRST;
30566 	                 LOOP
30567                            IF (x_party_pmnt_hdr_tbl_out(l_counter).passthru_term = 'BASE') THEN
30568 		              g_base_pmnt_hdr := x_party_pmnt_hdr_tbl_out(l_counter);
30569 		           ELSIF (x_party_pmnt_hdr_tbl_out(l_counter).passthru_term = 'EVERGREEN') THEN
30570 		              g_evg_pmnt_hdr := x_party_pmnt_hdr_tbl_out(l_counter);
30571 		           END IF;
30572 	                 EXIT WHEN (l_counter = x_party_pmnt_hdr_tbl_out.LAST);
30573                          l_counter := x_party_pmnt_hdr_tbl_out.NEXT(l_counter);
30574 	                 END LOOP;
30575                       END IF;
30576 		   END IF;
30577 
30578 /*
30579                    --
30580                    -- Update asset detail with depreciation cost
30581                    --
30582                    IF (okl_line_rec.depreciation_cost IS NOT NULL) THEN
30583 
30584                       FOR txl_rec IN txl_csr (x_chrv_rec.id,
30585                                               x_clev_fa_rec.id)
30586                       LOOP
30587                          l_talv_rec.id                    := txl_rec.id;
30588                          l_talv_rec.depreciation_cost     := okl_line_rec.depreciation_cost;
30589                       END LOOP;
30590 
30591                       okl_txl_assets_pub.update_txl_asset_def(
30592                                               p_api_version     => 1.0,
30593                                               p_init_msg_list   => OKL_API.G_FALSE,
30594                                               x_return_status   => x_return_status,
30595                                               x_msg_count       => x_msg_count,
30596                                               x_msg_data        => x_msg_data,
30597                                               p_tlpv_rec        => l_talv_rec,
30598                                               x_tlpv_rec        => x_talv_rec
30599                                              );
30600 
30601                       debug_message('Depreciation Cost update: '||x_return_status);
30602 
30603                       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30604                          x_return_status := OKL_API.G_RET_STS_ERROR;
30605                          RAISE load_failed;
30606                       END IF;
30607 
30608                    END IF; -- depreciation_cost
30609 */
30610 
30611                    get_tal_id(
30612                               x_return_status => x_return_status,
30613                               p_fa_line_id    => x_clev_fa_rec.id,
30614                               x_tal_id        => l_tal_id);
30615 
30616                    IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30617                       x_return_status := OKL_API.G_RET_STS_ERROR;
30618                       RAISE load_failed;
30619                    END IF;
30620 
30621                    IF (l_loan_yn <> 'Y') THEN -- don't create txd for loan type contract
30622 
30623                       l_adpv_rec                    := NULL;
30624                       l_adpv_rec.tal_id             := l_tal_id;
30625                       l_adpv_rec.asset_number       := okl_line_rec.asset_number;
30626                       l_adpv_rec.cost               := okl_line_rec.tax_cost;
30627                       l_adpv_rec.tax_book           := okl_line_rec.tax_book;
30628                       l_adpv_rec.life_in_months_tax := okl_line_rec.life_in_months_tax;
30629                       l_adpv_rec.deprn_method_tax   := okl_line_rec.deprn_method_tax;
30630                       l_adpv_rec.deprn_rate_tax     := okl_line_rec.deprn_rate_tax;
30631                       l_adpv_rec.salvage_value      := 0; -- to make consistant with UI, might need a change later
30632 
30633                       -- Take currency info from header, Bug 4005881
30634                       l_adpv_rec.CURRENCY_CODE            := okl_header_rec.currency_code;
30635                       l_adpv_rec.CURRENCY_CONVERSION_TYPE := okl_header_rec.currency_conversion_type;
30636                       l_adpv_rec.CURRENCY_CONVERSION_RATE := okl_header_rec.currency_conversion_rate;
30637                       l_adpv_rec.CURRENCY_CONVERSION_DATE := okl_header_rec.currency_conversion_date;
30638 
30639                       okl_txd_assets_pub.create_txd_asset_def(
30640                                                               p_api_version     => 1.0,
30641                                                               p_init_msg_list   => OKL_API.G_FALSE,
30642                                                               x_return_status   => x_return_status,
30643                                                               x_msg_count       => x_msg_count,
30644                                                               x_msg_data        => x_msg_data,
30645                                                               p_adpv_rec        => l_adpv_rec,
30646                                                               x_adpv_rec        => x_adpv_rec
30647                                                              );
30648 
30649                       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30650                           x_return_status := OKL_API.G_RET_STS_ERROR;
30651                           RAISE load_failed;
30652                       END IF;
30653 
30654                       debug_message('------>TXD Line Created');
30655 
30656                    END IF; -- loan_yn
30657 
30658                    x_cle_id := x_clev_fin_rec.id;
30659                    l_rule_create_flag := 'Y';
30660 
30661                    l_progress := '105';
30662                    --
30663                    -- Create Supplier Invoice details for contract
30664                    --
30665                    p_sidv_rec.cle_id                := x_clev_model_rec.id;
30666                    p_sidv_rec.fa_cle_id             := x_clev_fa_rec.id;
30667                    p_sidv_rec.invoice_number        := okl_line_rec.vendor_invoice_number;
30668                    p_sidv_rec.date_invoiced         := okl_line_rec.vendor_invoice_date;
30669                    IF (okl_line_rec.ship_to_site_id IS NOT NULL
30670                        OR
30671                        okl_line_rec.ship_to_site_number IS NOT NULL) THEN
30672                       get_ship_to_site(
30673                                   x_return_status       => x_return_status,
30674                                   x_msg_count           => x_msg_count,
30675                                   x_msg_data            => x_msg_data,
30676                                   p_contract_number     => okl_header_rec.contract_number_old,
30677                                   p_line_number         => okl_line_rec.line_number,
30678                                   p_auth_org_id         => NVL(okl_header_rec.authoring_org_id,l_header_template.authoring_org_id),
30679                                   p_ship_to_site_number => okl_line_rec.ship_to_site_number,
30680                                   p_ship_to_site_id     => okl_line_rec.ship_to_site_id,
30681                                   x_ship_to_site_id     => x_ship_to_site_id
30682                                  );
30683                       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30684                          RAISE load_failed;
30685                          x_return_status := OKL_API.G_RET_STS_ERROR;
30686                       END IF;
30687 
30688                       p_sidv_rec.shipping_address_id1  := x_ship_to_site_id;
30689                       p_sidv_rec.shipping_address_id2  := '#';
30690                       p_sidv_rec.shipping_address_code := 'OKX_PARTSITE';
30691                    END IF;
30692 
30693                    okl_supp_invoice_dtls_pub.create_sup_inv_dtls(
30694                                                                  p_api_version => 1.0,
30695                                                                  x_return_status => x_return_status,
30696                                                                  x_msg_count     => x_msg_count,
30697                                                                  x_msg_data      => x_msg_data,
30698                                                                  p_sidv_rec      => p_sidv_rec,
30699                                                                  x_sidv_rec      => x_sidv_rec
30700                                                                 );
30701                    IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30702                       x_return_status := OKL_API.G_RET_STS_ERROR;
30703                       RAISE load_failed;
30704                    END IF;
30705 
30706                 END IF; -- multiple Tax Book
30707 
30708              END IF; -- release asset
30709 
30710              -- Save current values for future comparison
30711   	     --abhsaxen 13-feb-2008 bug#6773219
30712 	     --commented this portion and added the same just at the end of line processing loop
30713 	     --to utilize these variables for processing non rent records in okl_payments_interface
30714 	     --like ESTIMATED PERSONAL PROPERTY TAX
30715 	     --l_prev_asset_number := okl_line_rec.asset_number;
30716 	     --l_prev_corp_book    := okl_line_rec.asset_corporate_book;
30717 	     --l_prev_tax_book     := okl_line_rec.tax_book;
30718 	     --end abhsaxen 13-feb-2008 bug#6773219
30719 
30720           ELSIF (okl_line_rec.line_type = 'SERVICE') THEN
30721 
30722              process_other_line(
30723                                   x_return_status   => x_return_status,
30724                                   x_msg_count       => x_msg_count,
30725                                   x_msg_data        => x_msg_data,
30726                                   p_contract_number => okl_header_rec.contract_number_old,
30727                                   p_chr_id          => x_chrv_rec.id,
30728                                   p_line_number     => okl_line_rec.line_number,
30729                                   p_line_type       => okl_line_rec.line_type,
30730                                   p_line_type_prev  => p_line_type_prev,
30731                                   p_inv_item_id     => x_inventory_item_id,
30732                                   p_inv_org_id      => x_inventory_org_id,
30733                                   p_line_amount     => okl_line_rec.amount,
30734                                   p_link_asset_amount => okl_line_rec.link_asset_amount,
30735                                   p_init_direct_cost => okl_line_rec.initial_direct_cost,
30736                                   p_fee_code        => okl_line_rec.fee_code,
30737                                   p_stream_purpose  => okl_line_rec.stream_purpose_code,
30738                                   p_fee_type        => NULL,
30739                                   p_asset_number    => okl_line_rec.asset_number,
30740                                   p_currency_code   => okl_header_rec.currency_code,
30741                                   p_usage_item_name => okl_line_rec.usage_item_name,
30742                                   p_usage_item_id   => okl_line_rec.usage_item_id,
30743                                   p_header_start_date => NVL(okl_header_rec.start_date,l_header_template.start_date),
30744                                   p_header_end_date   => x_chrv_rec.end_date,
30745                                   p_line_start_date   => okl_line_rec.start_date,
30746                                   p_line_end_date     => okl_line_rec.end_date,
30747                                   p_inv_item_id_prev => p_inv_item_id_prev,
30748                                   p_term_quote_id    => NULL,
30749                                   p_term_quote_number => NULL,
30750                                   x_inv_item_id_prev => x_inv_item_id_prev,
30751                                   p_cle_id           => p_cle_id,
30752                                   x_cle_id           => x_cle_id,
30753                                   x_sub_cle_id       => x_sub_cle_id,
30754                                   p_new_line_flag    => okl_line_rec.explicit_new_line_flag,
30755                                   p_pth_base_payout_basis       => okl_line_rec.pth_base_payout_basis,
30756                                   p_pth_base_stream_code         => okl_line_rec.pth_base_stream_code,
30757                                   p_pth_base_stream_purpose_code => okl_line_rec.pth_base_stream_purpose_code,
30758                                   p_pth_start_date              => okl_line_rec.pth_start_date,
30759                                   p_pth_evg_payout_basis        => okl_line_rec.pth_evg_payout_basis,
30760                                   p_pth_payout_basis_formula    => okl_line_rec.pth_payout_basis_formula,
30761                                   p_pth_evg_stream_code         => okl_line_rec.pth_evg_stream_code,
30762                                   p_pth_evg_stream_purpose_code => okl_line_rec.pth_evg_stream_purpose_code,
30763                                   p_fee_purpose_code            => okl_line_rec.fee_purpose_code,
30764                                   --Bug# 11690042
30765                                   p_attribute_category          => okl_line_rec.attribute_category,
30766                                   p_attribute1                  => okl_line_rec.attribute1,
30767                                   p_attribute2                  => okl_line_rec.attribute2,
30768                                   p_attribute3                  => okl_line_rec.attribute3,
30769                                   p_attribute4                  => okl_line_rec.attribute4,
30770                                   p_attribute5                  => okl_line_rec.attribute5,
30771                                   p_attribute6                  => okl_line_rec.attribute6,
30772                                   p_attribute7                  => okl_line_rec.attribute7,
30773                                   p_attribute8                  => okl_line_rec.attribute8,
30774                                   p_attribute9                  => okl_line_rec.attribute9,
30775                                   p_attribute10                 => okl_line_rec.attribute10,
30776                                   p_attribute11                 => okl_line_rec.attribute11,
30777                                   p_attribute12                 => okl_line_rec.attribute12,
30778                                   p_attribute13                 => okl_line_rec.attribute13,
30779                                   p_attribute14                 => okl_line_rec.attribute14,
30780                                   p_attribute15                 => okl_line_rec.attribute15
30781                                  );
30782 
30783              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30784                 x_return_status := OKL_API.G_RET_STS_ERROR;
30785                 RAISE load_failed;
30786              END IF;
30787 
30788              l_service_line_id := x_cle_id;
30789 
30790              IF (x_cle_id = p_cle_id) THEN -- No New Top Line Created, don't create rule against this line
30791 	        l_rule_create_flag := 'N';
30792 	     ELSE
30793 	        l_rule_create_flag := 'Y';
30794 	     END IF;
30795 
30796              p_line_type_prev   := okl_line_rec.line_type;
30797              p_inv_item_id_prev := x_inv_item_id_prev;
30798              p_cle_id           := x_cle_id;
30799              debug_message('------>SERVICE line created');
30800 
30801           ELSIF (okl_line_rec.line_type = 'FEE') THEN
30802              process_other_line(
30803                                   x_return_status   => x_return_status,
30804                                   x_msg_count       => x_msg_count,
30805                                   x_msg_data        => x_msg_data,
30806                                   p_contract_number => okl_header_rec.contract_number_old,
30807                                   p_chr_id          => x_chrv_rec.id,
30808                                   p_line_number     => okl_line_rec.line_number,
30809                                   p_line_type       => okl_line_rec.line_type,
30810                                   p_line_type_prev  => p_line_type_prev,
30811                                   p_inv_item_id     => okl_line_rec.inventory_item_id,
30812                                   p_inv_org_id      => x_chrv_rec.inv_organization_id,
30813                                                        --okl_line_rec.inventory_organization_id,
30814                                   p_line_amount     => okl_line_rec.amount,
30815                                   p_link_asset_amount => okl_line_rec.link_asset_amount,
30816                                   p_init_direct_cost => okl_line_rec.initial_direct_cost,
30817                                   p_fee_code        => okl_line_rec.fee_code,
30818                                   p_stream_purpose  => okl_line_rec.stream_purpose_code,
30819                                   p_fee_type        => okl_line_rec.fee_type,
30820                                   p_asset_number    => okl_line_rec.asset_number,
30821                                   p_currency_code   => okl_header_rec.currency_code,
30822                                   p_usage_item_name => okl_line_rec.usage_item_name,
30823                                   p_usage_item_id   => okl_line_rec.usage_item_id,
30824                                   p_header_start_date => NVL(okl_header_rec.start_date,l_header_template.start_date),
30825                                   p_header_end_date   => x_chrv_rec.end_date,
30826                                   p_line_start_date   => okl_line_rec.start_date,
30827                                   p_line_end_date     => okl_line_rec.end_date,
30828                                   p_inv_item_id_prev => p_inv_item_id_prev,
30829                                   p_term_quote_id    => okl_line_rec.termination_quote_id,
30830                                   p_term_quote_number => okl_line_rec.termination_quote_number,
30831                                   x_inv_item_id_prev => x_inv_item_id_prev,
30832                                   p_cle_id           => p_cle_id,
30833                                   x_cle_id           => x_cle_id,
30834                                   x_sub_cle_id       => x_sub_cle_id,
30835                                   p_new_line_flag    => okl_line_rec.explicit_new_line_flag,
30836                                   p_pth_base_payout_basis       => okl_line_rec.pth_base_payout_basis,
30837                                   p_pth_base_stream_code         => okl_line_rec.pth_base_stream_code,
30838                                   p_pth_base_stream_purpose_code => okl_line_rec.pth_base_stream_purpose_code,
30839                                   p_pth_start_date              => okl_line_rec.pth_start_date,
30840                                   p_pth_evg_payout_basis        => okl_line_rec.pth_evg_payout_basis,
30841                                   p_pth_payout_basis_formula    => okl_line_rec.pth_payout_basis_formula,
30842                                   p_pth_evg_stream_code         => okl_line_rec.pth_evg_stream_code,
30843                                   p_pth_evg_stream_purpose_code => okl_line_rec.pth_evg_stream_purpose_code,
30844                                   p_fee_purpose_code            => okl_line_rec.fee_purpose_code,
30845                                   --Bug# 11690042
30846                                   p_attribute_category          => okl_line_rec.attribute_category,
30847                                   p_attribute1                  => okl_line_rec.attribute1,
30848                                   p_attribute2                  => okl_line_rec.attribute2,
30849                                   p_attribute3                  => okl_line_rec.attribute3,
30850                                   p_attribute4                  => okl_line_rec.attribute4,
30851                                   p_attribute5                  => okl_line_rec.attribute5,
30852                                   p_attribute6                  => okl_line_rec.attribute6,
30853                                   p_attribute7                  => okl_line_rec.attribute7,
30854                                   p_attribute8                  => okl_line_rec.attribute8,
30855                                   p_attribute9                  => okl_line_rec.attribute9,
30856                                   p_attribute10                 => okl_line_rec.attribute10,
30857                                   p_attribute11                 => okl_line_rec.attribute11,
30858                                   p_attribute12                 => okl_line_rec.attribute12,
30859                                   p_attribute13                 => okl_line_rec.attribute13,
30860                                   p_attribute14                 => okl_line_rec.attribute14,
30861                                   p_attribute15                 => okl_line_rec.attribute15,
30862                                   p_origination_income          => okl_line_rec.origination_income
30863                                  );
30864 
30865              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30866                 x_return_status := OKL_API.G_RET_STS_ERROR;
30867                 RAISE load_failed;
30868              END IF;
30869 
30870              l_fee_line_id := x_cle_id;
30871              IF (x_cle_id = p_cle_id) THEN -- No New Top Line Created, don't create rule against this line
30872 	        l_rule_create_flag := 'N';
30873 	     ELSE
30874 	        l_rule_create_flag := 'Y';
30875 	     END IF;
30876 
30877              debug_message('------>FEE line created');
30878              p_line_type_prev   := okl_line_rec.line_type;
30879              p_inv_item_id_prev := x_inv_item_id_prev;
30880              p_cle_id           := x_cle_id;
30881 
30882 
30883           ELSIF (okl_line_rec.line_type = 'USAGE') THEN
30884              process_other_line(
30885                                   x_return_status   => x_return_status,
30886                                   x_msg_count       => x_msg_count,
30887                                   x_msg_data        => x_msg_data,
30888                                   p_contract_number => okl_header_rec.contract_number_old,
30889                                   p_chr_id          => x_chrv_rec.id,
30890                                   p_line_number     => okl_line_rec.line_number,
30891                                   p_line_type       => okl_line_rec.line_type,
30892                                   p_line_type_prev  => p_line_type_prev,
30893                                   p_inv_item_id     => okl_line_rec.inventory_item_id,
30894                                   p_inv_org_id      => x_chrv_rec.inv_organization_id,
30895 				                       --okl_line_rec.inventory_organization_id,
30896                                   p_line_amount     => okl_line_rec.amount,
30897                                   p_link_asset_amount => okl_line_rec.link_asset_amount,
30898                                   p_init_direct_cost => okl_line_rec.initial_direct_cost,
30899                                   p_fee_code        => okl_line_rec.fee_code,
30900                                   p_stream_purpose  => okl_line_rec.stream_purpose_code,
30901                                   p_fee_type        => NULL,
30902                                   p_asset_number    => okl_line_rec.asset_number,
30903                                   p_currency_code   => okl_header_rec.currency_code,
30904                                   p_usage_item_name => okl_line_rec.usage_item_name,
30905                                   p_usage_item_id   => okl_line_rec.usage_item_id,
30906                                   p_header_start_date => NVL(okl_header_rec.start_date,l_header_template.start_date),
30907                                   p_header_end_date   => x_chrv_rec.end_date,
30908                                   p_line_start_date   => okl_line_rec.start_date,
30909                                   p_line_end_date     => okl_line_rec.end_date,
30910                                   p_inv_item_id_prev => p_inv_item_id_prev,
30911                                   p_term_quote_id    => NULL,
30912                                   p_term_quote_number => NULL,
30913                                   x_inv_item_id_prev => x_inv_item_id_prev,
30914                                   p_cle_id           => p_cle_id,
30915                                   x_cle_id           => x_cle_id,
30916                                   x_sub_cle_id       => x_sub_cle_id,
30917                                   p_new_line_flag    => okl_line_rec.explicit_new_line_flag,
30918                                   p_pth_base_payout_basis       => NULL,
30919                                   p_pth_base_stream_code         => NULL,
30920                                   p_pth_base_stream_purpose_code => NULL,
30921                                   p_pth_start_date              => NULL,
30922                                   p_pth_evg_payout_basis        => NULL,
30923                                   p_pth_payout_basis_formula    => NULL,
30924                                   p_pth_evg_stream_code         => NULL,
30925                                   p_pth_evg_stream_purpose_code => NULL,
30926                                   p_fee_purpose_code            => okl_line_rec.fee_purpose_code
30927                                  );
30928 
30929              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30930                 x_return_status := OKL_API.G_RET_STS_ERROR;
30931                 RAISE load_failed;
30932              END IF;
30933 
30934              l_usage_line_id := x_cle_id;
30935 
30936              IF (x_cle_id = p_cle_id) THEN -- No New Top Line Created, don't create rule against this line
30937 	        l_rule_create_flag := 'N';
30938 	     ELSE
30939 	        l_rule_create_flag := 'Y';
30940 	     END IF;
30941 
30942              debug_message('USAGE line created');
30943              p_line_type_prev   := okl_line_rec.line_type;
30944              p_inv_item_id_prev := x_inv_item_id_prev;
30945              p_cle_id           := x_cle_id;
30946 
30947           END IF; -- line type
30948 
30949           l_progress := '110';
30950 
30951           IF (l_rule_create_flag = 'Y') THEN
30952           debug_message('------>Line rule started');
30953           create_line_rules(
30954                             x_return_status                  => x_return_status,
30955                             x_msg_count                      => x_msg_count,
30956                             x_msg_data                       => x_msg_data,
30957                             p_chr_id                         => x_chrv_rec.id,
30958                             p_cle_id                         => x_cle_id,
30959                             p_contract_number                => okl_header_rec.contract_number_old,
30960                             p_line_number                    => okl_line_rec.line_number,
30961                             p_line_type                      => okl_line_rec.line_type,
30962                             p_inv_org_id                     => x_inventory_org_id,
30963                             p_sales_tax_exempt_flag          => okl_line_rec.sales_tax_exempt_flag,
30964                             p_sales_tax_exempt_cert_number   => okl_line_rec.sales_tax_exempt_cert_number,
30965                             p_sales_tax_override_flag        => okl_line_rec.sales_tax_override_flag,
30966                             p_sales_tax_override_rate        => okl_line_rec.sales_tax_override_rate,
30967                             p_st_upd_lines_from_contract     => okl_line_rec.st_update_lines_from_contract,
30968                             p_st_transfer_of_title           => okl_line_rec.st_transfer_of_title,
30969                             p_st_sale_and_lease_back         => okl_line_rec.st_sale_and_lease_back,
30970                             p_st_purchase_of_lease           => okl_line_rec.st_purchase_of_lease,
30971                             p_st_equipment_usage             => okl_line_rec.st_equipment_usage,
30972                             p_st_equipment_age               => okl_line_rec.st_equipment_age,
30973                             p_st_asset_upfront_tax           => okl_line_rec.st_asset_upfront_tax,
30974                             p_vat_tax_exempt                 => okl_line_rec.vat_tax_exempt,
30975                             p_vat_tax_exempt_cert_number     => okl_line_rec.vat_tax_exempt_cert_number,
30976                             p_vat_tax_override_flag          => okl_line_rec.vat_tax_override_flag,
30977                             p_vat_tax_override_rate          => okl_line_rec.vat_tax_override_rate,
30978                             p_lien_type                      => okl_line_rec.lien_type,
30979                             p_lien_filing_number             => okl_line_rec.lien_filing_number,
30980                             p_lien_filing_date               => okl_line_rec.lien_filing_date,
30981                             p_lien_filing_status             => okl_line_rec.lien_filing_status,
30982                             p_lienholder_id                  => okl_line_rec.lienholder_id,
30983                             p_lienholder_number              => okl_line_rec.lienholder_number,
30984                             p_filing_jurisdiction            => okl_line_rec.filing_jurisdiction,
30985                             p_filing_sub_jurisdiction        => okl_line_rec.filing_sub_jurisdiction,
30986                             p_lien_expiration_date           => okl_line_rec.lien_expiration_date,
30987                             p_lien_continuation_number       => okl_line_rec.lien_continuation_number,
30988                             p_lien_continuation_date         => okl_line_rec.lien_continuation_date,
30989                             p_title_type                     => okl_line_rec.title_type,
30990                             p_title_issuer_number            => okl_line_rec.title_issuer_number,
30991                             p_title_issuer_id                => okl_line_rec.title_issuer_id,
30992                             p_title_date                     => okl_line_rec.title_date,
30993                             p_title_number                   => okl_line_rec.title_number,
30994                             p_registration_number            => okl_line_rec.registration_number,
30995                             p_asset_registration_loc_name    => okl_line_rec.asset_registration_loc_name,
30996                             p_title_custodian_name           => okl_line_rec.title_custodian_name,
30997                             p_payee_site_name                => okl_line_rec.payee_site_name,
30998                             p_passthrough_percent            => okl_line_rec.passthrough_percent,
30999                             p_passthrough_basis_code         => okl_line_rec.passthrough_basis_code,
31000                             p_fee_code                       => okl_line_rec.fee_code,
31001                             p_stream_purpose                 => okl_line_rec.stream_purpose_code,
31002                             p_usage_item_name                => okl_line_rec.usage_item_name,
31003                             p_usage_item_id                  => okl_line_rec.usage_item_id,
31004                             p_price_list_name                => okl_line_rec.price_list_name,
31005                             p_price_list_id                  => okl_line_rec.price_list_id,
31006                             p_minimum_qty_usage              => okl_line_rec.minimum_qty_usage,
31007                             p_default_qty_usage              => okl_line_rec.default_qty_usage,
31008                             p_amcv_flag                      => okl_line_rec.amcv_flag,
31009                             p_level_flag                     => okl_line_rec.level_flag,
31010                             p_base_reading                   => okl_line_rec.base_reading,
31011                             p_base_reading_uom_code          => okl_line_rec.base_reading_uom_code,
31012                             p_usage_type_code                => okl_line_rec.usage_type_code,
31013                             p_fixed_usage_quantity           => okl_line_rec.fixed_usage_quantity,
31014                             p_usage_period                   => okl_line_rec.usage_period,
31015                             p_usage_no_of_period             => okl_line_rec.usage_no_of_period,
31016                             p_fee_no_of_period               => okl_line_rec.fee_exp_no_of_periods,
31017                             p_fee_frequency                  => okl_line_rec.fee_exp_frequency,
31018                             p_fee_amount_per_period          => okl_line_rec.fee_exp_amount_per_period,
31019                             p_prop_tax_applicable            => okl_line_rec.prop_tax_applicable,
31020                             p_prop_tax_lease_rep             => okl_line_rec.prop_tax_lease_rep,
31021                             p_french_tax_code                => okl_line_rec.french_tax_code,
31022                             p_french_tax_name                => okl_line_rec.french_tax_name,
31023 -- Added by rravikir (Fix for Bug 3947959)
31024                             p_prop_tax_bill_method           => okl_line_rec.prop_tax_bill_method,
31025                             p_prop_tax_as_contract_yn        => okl_line_rec.prop_tax_as_contract_yn
31026 -- End
31027                            );
31028 
31029           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
31030              x_return_status := OKL_API.G_RET_STS_ERROR;
31031              raise load_failed;
31032           END IF;
31033 
31034           debug_message('------>Line rule complete');
31035           END IF; -- l_rule_create_flag
31036 
31037           l_progress := '120';
31038 
31039           FOR okl_party_rec IN okl_party_csr (okl_header_rec.contract_number_old,
31040                                               okl_line_rec.line_number)
31041           LOOP
31042              BEGIN --3
31043                 l_progress := '130';
31044 
31045                 debug_message('------>Party role: '||okl_line_rec.line_type||','||okl_line_rec.line_number);
31046 
31047                 IF (l_rule_create_flag = 'Y') THEN -- create role only for top line
31048                 process_party_role(
31049                                  x_return_status       => x_return_status,
31050                                  x_msg_count           => x_msg_count,
31051                                  x_msg_data            => x_msg_data,
31052                                  p_contract_number     => okl_header_rec.contract_number_old,
31053                                  p_chr_id              => x_chrv_rec.id,
31054                                  p_auth_org_id         => okl_header_rec.authoring_org_id,
31055                                  p_line_number         => okl_line_rec.line_number,
31056                                  p_line_type           => okl_line_rec.line_type,
31057                                  p_fin_cle_id          => x_clev_fin_rec.id,
31058                                  p_model_cle_id        => x_clev_model_rec.id,
31059                                  p_service_line_id     => l_service_line_id,
31060                                  p_fee_line_id         => l_fee_line_id,
31061                                  p_usage_line_id       => l_usage_line_id,
31062                                  p_asset_vendor_name   => okl_party_rec.asset_vendor_name,
31063                                  p_asset_vendor_id     => okl_party_rec.asset_vendor_id,
31064                                  p_service_vendor_name => okl_party_rec.service_vendor_name,
31065                                  p_service_vendor_id   => okl_party_rec.service_vendor_id,
31066                                  p_fees_vendor_name    => okl_party_rec.fees_vendor_name,
31067                                  p_fees_vendor_id      => okl_party_rec.fees_vendor_id,
31068                                  p_guarantor_number    => okl_party_rec.guarantor_number,
31069                                  p_guarantor_id        => okl_party_rec.guarantor_id,
31070                                  p_dealer_name         => okl_party_rec.dealer_name,
31071                                  p_dealer_id           => okl_party_rec.dealer_id,
31072                                  p_guarantor_type      => okl_party_rec.guarantor_type,
31073                                  p_guarantee_type      => okl_party_rec.guarantee_type,
31074                                  p_guaranteed_amount   => okl_party_rec.guaranteed_amount,
31075                                  p_guarantee_date      => okl_party_rec.guarantee_date,
31076                                  p_guarantee_comment   => okl_party_rec.guarantee_comment,
31077                                  p_guarantor_site_number => okl_party_rec.guarantor_site_number,
31078                                  p_guarantor_site_id     => okl_party_rec.guarantor_site_id,
31079                                  p_payment_term          => okl_line_rec.payment_term,
31080                                  p_payment_term_id       => okl_line_rec.payment_term_id,
31081                                  p_vendor_paysite_id     => okl_line_rec.vendor_paysite_id,
31082                                  p_vendor_paysite_name   => okl_line_rec.vendor_paysite_name,
31083                                  p_vendor_payment_method => okl_line_rec.vendor_payment_method,
31084                                  p_passthrough_percent      => okl_line_rec.passthrough_percent,
31085                                  p_passthrough_basis_code   => okl_line_rec.passthrough_basis_code,
31086                                  p_billable_vendor_id       => NULL,
31087                                  p_billable_vendor_name     => NULL,
31088                                  p_vend_as_customer_number  => NULL,
31089                                  p_vend_as_customer_id      => NULL,
31090                                  p_vend_as_cust_acc_id      => NULL,
31091                                  p_vend_as_cust_acc_number  => NULL,
31092                                  p_vend_bill_to_addr_id     => NULL,
31093                                  p_vend_bill_to_addr        => NULL,
31094                                  p_vend_payment_method_id   => NULL,
31095                                  p_vend_payment_method      => NULL,
31096                                  p_vend_bank_acc_id         => NULL,
31097                                  p_vend_bank_acc_number     => NULL,
31098                                  p_vend_invoice_format_id   => NULL,
31099                                  p_vend_invoice_format_code => NULL,
31100                                  p_vend_review_invoice_flag => NULL,
31101                                  p_vend_reason_for_inv_review => NULL,
31102                                  p_vend_inv_review_until_date => NULL,
31103                                  p_pth_base_vendor_site_code  => okl_party_rec.pth_base_vendor_site_code,
31104                                  p_pth_base_vendor_site_id    => okl_party_rec.pth_base_vendor_site_id,
31105                                  p_pth_base_paygroup_code     => okl_party_rec.pth_base_paygroup_code,
31106                                  p_pth_base_pmnt_term_code    => okl_party_rec.pth_base_pmnt_term_code,
31107                                  p_pth_base_pmnt_term_id      => okl_party_rec.pth_base_pmnt_term_id,
31108                                  p_pth_base_pmnt_basis        => okl_party_rec.pth_base_pmnt_basis,
31109                                  p_pth_base_pmnt_start_date   => okl_party_rec.pth_base_pmnt_start_date,
31110                                  p_pth_base_pmnt_method_code  => okl_party_rec.pth_base_pmnt_method_code,
31111                                  p_pth_base_pmnt_freq         => okl_party_rec.pth_base_pmnt_freq,
31112                                  p_pth_base_pmnt_remit_days   => okl_party_rec.pth_base_pmnt_remit_days,
31113                                  p_pth_base_disb_basis        => okl_party_rec.pth_base_disb_basis,
31114                                  p_pth_base_disb_fixed_amount => okl_party_rec.pth_base_disb_fixed_amount,
31115                                  p_pth_base_disb_pct          => okl_party_rec.pth_base_disb_pct,
31116                                  p_pth_base_proc_fee_basis    => okl_party_rec.pth_base_proc_fee_basis,
31117                                  p_pth_base_proc_fee_fixed_amt => okl_party_rec.pth_base_proc_fee_fixed_amt,
31118                                  p_pth_base_proc_pct           => okl_party_rec.pth_base_proc_pct,
31119                                  p_pth_evg_vendor_site_code    => okl_party_rec.pth_evg_vendor_site_code,
31120                                  p_pth_evg_vendor_site_id      => okl_party_rec.pth_evg_vendor_site_id,
31121                                  p_pth_evg_paygroup_code       => okl_party_rec.pth_evg_paygroup_code,
31122                                  p_pth_evg_pmnt_term_code      => okl_party_rec.pth_evg_pmnt_term_code,
31123                                  p_pth_evg_pmnt_term_id        => okl_party_rec.pth_evg_pmnt_term_id,
31124                                  p_pth_evg_pmnt_basis          => okl_party_rec.pth_evg_pmnt_basis,
31125                                  p_pth_evg_pmnt_start_date     => okl_party_rec.pth_evg_pmnt_start_date,
31126                                  p_pth_evg_pmnt_method_code    => okl_party_rec.pth_evg_pmnt_method_code,
31127                                  p_pth_evg_pmnt_freq           => okl_party_rec.pth_evg_pmnt_freq,
31128                                  p_pth_evg_pmnt_remit_days     => okl_party_rec.pth_evg_pmnt_remit_days,
31129                                  p_pth_evg_disb_basis          => okl_party_rec.pth_evg_disb_basis,
31130                                  p_pth_evg_disb_fixed_amount   => okl_party_rec.pth_evg_disb_fixed_amount,
31131                                  p_pth_evg_disb_pct            => okl_party_rec.pth_evg_disb_pct,
31132                                  p_pth_evg_proc_fee_basis      => okl_party_rec.pth_evg_proc_fee_basis,
31133                                  p_pth_evg_proc_fee_fixed_amt  => okl_party_rec.pth_evg_proc_fee_fixed_amt,
31134                                  p_pth_evg_proc_pct            => okl_party_rec.pth_evg_proc_pct,
31135                                  p_attribute_category          => okl_party_rec.attribute_category,
31136                                  p_attribute1                  => okl_party_rec.attribute1,
31137                                  p_attribute2                  => okl_party_rec.attribute2,
31138                                  p_attribute3                  => okl_party_rec.attribute3,
31139                                  p_attribute4                  => okl_party_rec.attribute4,
31140                                  p_attribute5                  => okl_party_rec.attribute5,
31141                                  p_attribute6                  => okl_party_rec.attribute6,
31142                                  p_attribute7                  => okl_party_rec.attribute7,
31143                                  p_attribute8                  => okl_party_rec.attribute8,
31144                                  p_attribute9                  => okl_party_rec.attribute9,
31145                                  p_attribute10                 => okl_party_rec.attribute10,
31146                                  p_attribute11                 => okl_party_rec.attribute11,
31147                                  p_attribute12                 => okl_party_rec.attribute12,
31148                                  p_attribute13                 => okl_party_rec.attribute13,
31149                                  p_attribute14                 => okl_party_rec.attribute14,
31150                                  p_attribute15                 => okl_party_rec.attribute15
31151                                 );
31152 
31153                 debug_message('------>Party Role Status: '||x_return_status);
31154 
31155                 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
31156                    RAISE load_failed;
31157                 END IF;
31158                 END IF; --rule create
31159                 l_progress := '140';
31160 
31161              END; --3 party begin
31162 
31163           END LOOP; --party role
31164 
31165           FOR okl_term_rec IN okl_term_csr (okl_header_rec.contract_number_old,
31166                                             okl_line_rec.line_number)
31167           LOOP
31168              BEGIN --4
31169                 --Bug# 	6006332 : Procces_term should be called only for top line and only once
31170                 IF (l_rule_create_flag = 'Y') THEN
31171                 l_progress := '150';
31172 
31173                 IF (okl_header_rec.import_request_stage <> 'NEW'
31174                     AND
31175                     okl_term_rec.bill_to_address_id IS NULL
31176                     AND
31177                     okl_term_rec.bill_to_address IS NULL) THEN
31178 
31179                     okl_api.set_message(
31180                                         G_APP_NAME,
31181                                         G_MISSING_VALUE,
31182                                         'CONTRACT_NUM',
31183                                         okl_term_rec.contract_number_old||'/'||okl_term_rec.line_number,
31184                                        'COL_NAME',
31185                                        'BILL_TO_ADDRESS'
31186                                        );
31187 
31188                     x_return_status := OKL_API.G_RET_STS_ERROR;
31189                     RAISE load_failed;
31190                 END IF;
31191 
31192                 debug_message('------>Process term');
31193                 process_term(
31194                              x_return_status             => x_return_status,
31195                              x_msg_count                 => x_msg_count,
31196                              x_msg_data                  => x_msg_data,
31197                              p_contract_number           => okl_header_rec.contract_number_old,
31198                              p_chr_id                    => x_chrv_rec.id,
31199                              p_auth_org_id               => okl_header_rec.authoring_org_id,
31200                              p_line_number               => okl_line_rec.line_number,
31201                              p_line_type                 => okl_line_rec.line_type,
31202                              p_cle_id                    => x_cle_id,
31203                              p_bill_to_address_id        => okl_term_rec.bill_to_address_id,
31204                              p_bill_to_address           => okl_term_rec.bill_to_address,
31205                              p_bank_account_id           => okl_term_rec.bank_account_id,
31206                              p_bank_account_number       => okl_term_rec.bank_account_number,
31207                              p_reason_for_invoice_review => okl_term_rec.reason_for_invoice_review,
31208                              p_invoice_review_until_date => okl_term_rec.invoice_review_until_date,
31209                              p_invoice_format_id         => okl_term_rec.invoice_format_id,
31210                              p_invoice_format_code       => okl_term_rec.invoice_format_code,
31211                              p_review_invoice_flag       => okl_term_rec.review_invoice_flag,
31212                              p_payment_method_id         => okl_term_rec.payment_method_id,
31213                              p_payment_method            => okl_term_rec.payment_method,
31214                              p_prescribed_asset_flag     => okl_term_rec.prescribed_asset_flag,
31215                              p_cash_appl_rule_name       => okl_term_rec.cash_appl_rule_name
31216                             );
31217 
31218                 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
31219                    RAISE load_failed;
31220                 END IF;
31221 
31222                 l_progress := '160';
31223              END IF; -- Bug# 6006332
31224              END; --4 terms
31225 
31226           END LOOP; --terms
31227 
31228           -- Process Payments Interface Record, if any
31229           l_contract_number_old_prev := 'INITIAL';
31230           l_line_number_prev         := -999999999;
31231           l_payment_type_code_prev   := 'INITIAL';
31232           l_pmnt_sch_num_prev        := -999999999;
31233           l_start_date_prev          := NULL;
31234           l_number_of_periods_prev   := -999999999;
31235           l_rg_id                    := NULL;
31236      --abhsaxen 13-Feb-2008 bug#6773219 added this if condition to prevent
31237       --processing Non Rent records like ESTIMATED PERSONAL PROPERTY TAX twice for the same
31238       --asset with the same corporate book but with a different tax book. Otherwise the
31239       --ESTIMATED PERSONAL PROPERTY TAX payment lines is shown multiple times after
31240       --contract is imported.
31241 
31242           IF  (okl_line_rec.asset_number = l_prev_asset_number
31243                   AND
31244                  okl_line_rec.asset_corporate_book = l_prev_corp_book
31245                  --Bug# 10104527: Apply check only for Asset Line Payments
31246                  and okl_line_rec.line_type = 'ASSET')
31247           THEN
31248              NULL; --dont process the records for the same asset twice
31249           ELSE
31250 
31251           FOR okl_payment_rec IN okl_payment_csr(okl_header_rec.contract_number_old,
31252                                                  okl_line_rec.line_number)
31253           LOOP
31254              BEGIN --5
31255 
31256                check_payment_record(
31257                                     x_return_status              => x_return_status,
31258                                     x_msg_count                  => x_msg_count,
31259                                     x_msg_data                   => x_msg_data,
31260                                     p_contract_number_old        => okl_payment_rec.contract_number_old,
31261                                     p_line_number                => okl_payment_rec.line_number,
31262                                     p_asset_number               => okl_payment_rec.asset_number,
31263                                     p_payment_type_code          => okl_payment_rec.payment_type_code,
31264                                     p_stream_purpose             => okl_payment_rec.stream_purpose_code,
31265                                     p_payment_schedule_number    => okl_payment_rec.payment_schedule_number,
31266                                     p_payment_frequency_code     => okl_payment_rec.payment_frequency_code,
31267                                     p_arrears_flag               => okl_payment_rec.arrears_flag,
31268                                     p_advance_payments           => okl_payment_rec.advance_payments,
31269                                     p_payment_amount             => okl_payment_rec.payment_amount,
31270                                     p_start_date                 => okl_payment_rec.start_date,
31271                                     p_number_of_periods          => okl_payment_rec.number_of_periods,
31272                                     p_rate                       => okl_payment_rec.rate,
31273                                     p_comments                   => okl_payment_rec.comments,
31274                                     p_stub_days                  => okl_payment_rec.stub_days,
31275                                     p_stub_amount                => okl_payment_rec.stub_amount
31276                                    );
31277 
31278                IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
31279                    RAISE load_failed;
31280                END IF;
31281 
31282                 IF (l_contract_number_old_prev <> okl_payment_rec.contract_number_old  -- prev checking
31283                     OR
31284                     l_line_number_prev         <> okl_payment_rec.line_number
31285                     OR
31286                     l_payment_type_code_prev   <> okl_payment_rec.payment_type_code) THEN
31287 
31288                    IF (l_line_number_prev <> okl_payment_rec.line_number) THEN -- for new line create rule group
31289                        l_rg_id := NULL;
31290                    END IF;
31291 
31292                    --do all
31293                    -- Bug# 3110155
31294                    -- Check for SERVICE and FEE line whether to attach
31295                    -- payments at TOP or SUB lines
31296                    --
31297                    check_payment_level(
31298                                        x_return_status   => x_return_status,
31299                                        x_msg_count       => x_msg_count,
31300                                        x_msg_data        => x_msg_data,
31301                                        p_contract_number => okl_header_rec.contract_number_old,
31302                                        p_line_number     => okl_line_rec.line_number,
31303                                        x_payment_level   => l_payment_level
31304                                       );
31305 
31306                    IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
31307                       RAISE load_failed;
31308                    END IF;
31309 
31310                    IF (l_payment_level = 'SUB') THEN -- attach payment at sub-line
31311                       l_pmnt_line_id := x_sub_cle_id;
31312                    ELSE                              -- attach payment at top-line
31313                       l_pmnt_line_id := x_cle_id;
31314                    END IF;
31315 
31316                    create_payment_rule_group(
31317                                               x_return_status     => x_return_status,
31318                                               x_msg_count         => x_msg_count,
31319                                               x_msg_data          => x_msg_data,
31320                                               p_contract_number   => okl_header_rec.contract_number_old,
31321                                               p_line_number       => okl_line_rec.line_number,
31322                                               p_payment_type_code => okl_payment_rec.payment_type_code,
31323                                               p_stream_purpose    => okl_payment_rec.stream_purpose_code,
31324                                               p_chr_id            => x_chrv_rec.id,
31325                                               p_cle_id            => l_pmnt_line_id,
31326                                               p_rg_id             => l_rg_id,
31327                                               x_rgp_id            => x_rgp_id,
31328                                               x_slh_rulv_rec      => x_slh_rulv_rec
31329                                              );
31330 
31331                    IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
31332                       RAISE load_failed;
31333                    END IF;
31334 
31335                 ELSE
31336                     l_progress := '170';
31337 
31338                     -- Some more validation on Payment Lines
31339                     IF (okl_payment_rec.payment_schedule_number <= l_pmnt_sch_num_prev) THEN
31340                      debug_message('First check error...');
31341                        okl_api.set_message(
31342                                            G_APP_NAME,
31343                                            G_PAYMENT_SCHD_ERROR,
31344                                            'COL_VALUE',
31345                                             okl_payment_rec.payment_schedule_number,
31346                                            'CONTRACT_NUM',
31347                                            okl_header_rec.contract_number_old||'/'||okl_payment_rec.line_number
31348                                           );
31349                        x_return_status := OKL_API.G_RET_STS_ERROR;
31350                        RAISE load_failed;
31351                     END IF;
31352 
31353                     check_payment_frequency_code(
31354                                                  x_return_status     => x_return_status,
31355                                                  x_msg_count         => x_msg_count,
31356                                                  x_msg_data          => x_msg_data,
31357                                                  p_payment_freq_code => okl_payment_rec.payment_frequency_code,
31358                                                  x_id1               => x_pmnt_freq_id,
31359                                                  x_uom_code          => x_uom_code
31360                                                 );
31361 
31362                     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
31363                        okl_api.set_message(
31364                                            G_APP_NAME,
31365                                            G_INVALID_VALUE,
31366                                            'CONTRACT_NUM',
31367                                            okl_payment_rec.contract_number_old||'/'||okl_payment_rec.line_number,
31368                                            'COL_NAME',
31369                                            'PAYMENT_FREQUENCY_CODE',
31370                                            'COL_VALUE',
31371                                            okl_payment_rec.payment_frequency_code
31372                                           );
31373                        RAISE load_failed;
31374                     END IF;
31375 
31376                     IF (x_uom_code = 'M') THEN
31377                        l_mult_factor := 1;
31378                     ELSIF (x_uom_code = 'Q') THEN
31379                        l_mult_factor := 3;
31380                     ELSIF (x_uom_code = 'S') THEN
31381                        l_mult_factor := 6;
31382                     ELSIF (x_uom_code = 'A') THEN
31383                        l_mult_factor := 12;
31384                     ELSE
31385                        okl_api.set_message(
31386                                            G_APP_NAME,
31387                                            G_UOM_SETUP_ERROR,
31388                                            'COL_VALUE',
31389                                            okl_payment_rec.payment_frequency_code
31390                                           );
31391                        RAISE load_failed;
31392                     END IF;
31393 
31394 
31395                     l_current_start_date := add_months(l_start_date_prev, (l_number_of_periods_prev * l_mult_factor));
31396 
31397                     IF (TRUNC(l_current_start_date) <> TRUNC(okl_payment_rec.start_date)) THEN
31398                        okl_api.set_message(
31399                                            G_APP_NAME,
31400                                            G_PAYMENT_START_DATE_ERROR,
31401                                            'CONTRACT_NUM',
31402                                            okl_payment_rec.contract_number_old||'/'||okl_payment_rec.line_number
31403                                           );
31404                        RAISE load_failed;
31405                     END IF;
31406 
31407                 END IF; --prev checking
31408 
31409                 IF (l_rg_id IS NULL) THEN
31410                    l_rg_id := x_rgp_id;
31411                 END IF;
31412 
31413                 -- Create other rules
31414                 -- Keep a copy to compare with latest record
31415                 create_payment_other_rules(
31416                                            x_return_status      => x_return_status,
31417                                            x_msg_count          => x_msg_count,
31418                                            x_msg_data           => x_msg_data,
31419                                            p_contract_number    => okl_header_rec.contract_number_old,
31420                                            p_line_number        => okl_line_rec.line_number,
31421                                            p_payment_sch_number => okl_payment_rec.payment_schedule_number,
31422                                            p_payment_freq_code  => okl_payment_rec.payment_frequency_code,
31423                                            p_arrears_flag       => okl_payment_rec.arrears_flag,
31424                                            p_advance_payments   => okl_payment_rec.advance_payments,
31425                                            p_payment_amount     => okl_payment_rec.payment_amount,
31426                                            p_start_date         => okl_payment_rec.start_date,
31427                                            p_number_of_periods  => okl_payment_rec.number_of_periods,
31428                                            p_rate               => okl_payment_rec.rate,
31429                                            p_comments           => okl_payment_rec.comments,
31430                                            p_stub_days          => okl_payment_rec.stub_days,
31431                                            p_stub_amount        => okl_payment_rec.stub_amount,
31432                                            p_slh_rulv_rec       => x_slh_rulv_rec,
31433                                            p_chr_id             => x_chrv_rec.id,
31434                                            p_cle_id             => x_cle_id,
31435                                            p_rgp_id             => x_rgp_id
31436                                           );
31437 
31438                 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
31439                    RAISE load_failed;
31440                 END IF;
31441 
31442                 l_progress := '180';
31443 
31444                 l_contract_number_old_prev := okl_payment_rec.contract_number_old;
31445                 l_line_number_prev         := okl_payment_rec.line_number;
31446                 l_payment_type_code_prev   := okl_payment_rec.payment_type_code;
31447                 l_pmnt_sch_num_prev        := okl_payment_rec.payment_schedule_number;
31448                 l_start_date_prev          := okl_payment_rec.start_date;
31449                 l_number_of_periods_prev   := okl_payment_rec.number_of_periods;
31450 
31451              END; --5 Payment begin
31452 
31453           END LOOP; -- Payment Loop
31454 	END IF; --end if of abhsaxen 13-Feb-2008 bug#6773219
31455         END; --2 Line Begin
31456 	--abhsaxen bug#6773219 13-Feb-2008
31457         -- reinitializing the following variables for comparison with the next line that follows
31458            l_prev_asset_number := okl_line_rec.asset_number;
31459            l_prev_corp_book    := okl_line_rec.asset_corporate_book;
31460            l_prev_tax_book     := okl_line_rec.tax_book;
31461         --abhsaxen end bug#6773219 13-Feb-2008
31462 
31463       END LOOP; -- Line Loop
31464 
31465       l_progress := '190';
31466 
31467       -- Process party role once again at Header level
31468       FOR okl_party_rec IN okl_party_csr (okl_header_rec.contract_number_old,
31469                                           NULL)
31470       LOOP
31471          BEGIN --6
31472             l_progress := '200';
31473 
31474             process_party_role(
31475                                  x_return_status       => x_return_status,
31476                                  x_msg_count           => x_msg_count,
31477                                  x_msg_data            => x_msg_data,
31478                                  p_contract_number     => okl_header_rec.contract_number_old,
31479                                  p_chr_id              => x_chrv_rec.id,
31480                                  p_auth_org_id         => okl_header_rec.authoring_org_id,
31481                                  p_line_number         => NULL,
31482                                  p_line_type           => NULL,
31483                                  p_fin_cle_id          => NULL,
31484                                  p_model_cle_id        => NULL,
31485                                  p_service_line_id     => NULL,
31486                                  p_fee_line_id         => NULL,
31487                                  p_usage_line_id       => NULL,
31488                                  p_asset_vendor_name   => okl_party_rec.asset_vendor_name,
31489                                  p_asset_vendor_id     => okl_party_rec.asset_vendor_id,
31490                                  p_service_vendor_name => okl_party_rec.service_vendor_name,
31491                                  p_service_vendor_id   => okl_party_rec.service_vendor_id,
31492                                  p_fees_vendor_name    => okl_party_rec.fees_vendor_name,
31493                                  p_fees_vendor_id      => okl_party_rec.fees_vendor_id,
31494                                  p_guarantor_number    => okl_party_rec.guarantor_number,
31495                                  p_guarantor_id        => okl_party_rec.guarantor_id,
31496                                  p_dealer_name         => okl_party_rec.dealer_name,
31497                                  p_dealer_id           => okl_party_rec.dealer_id,
31498                                  p_guarantor_type      => okl_party_rec.guarantor_type,
31499                                  p_guarantee_type      => okl_party_rec.guarantee_type,
31500                                  p_guaranteed_amount   => okl_party_rec.guaranteed_amount,
31501                                  p_guarantee_date      => okl_party_rec.guarantee_date,
31502                                  p_guarantee_comment   => okl_party_rec.guarantee_comment,
31503                                  p_guarantor_site_number => okl_party_rec.guarantor_site_number,
31504                                  p_guarantor_site_id     => okl_party_rec.guarantor_site_id,
31505                                  p_payment_term          => NULL,
31506                                  p_payment_term_id       => NULL,
31507                                  p_vendor_paysite_id     => NULL,
31508                                  p_vendor_paysite_name   => NULL,
31509                                  p_vendor_payment_method => NULL,
31510                                  p_passthrough_percent      => NULL,
31511                                  p_passthrough_basis_code   => NULL,
31512                                  p_billable_vendor_id       => okl_party_rec.billable_vendor_id,
31513                                  p_billable_vendor_name     => okl_party_rec.billable_vendor_name,
31514                                  p_vend_as_customer_number  => okl_party_rec.vend_as_customer_number,
31515                                  p_vend_as_customer_id      => okl_party_rec.vend_as_customer_id,
31516                                  p_vend_as_cust_acc_id      => okl_party_rec.vend_as_customer_acc_id,
31517                                  p_vend_as_cust_acc_number  => okl_party_rec.vend_as_customer_acc_number,
31518                                  p_vend_bill_to_addr_id     => okl_party_rec.vend_bill_to_addr_id,
31519                                  p_vend_bill_to_addr        => okl_party_rec.vend_bill_to_addr,
31520                                  p_vend_payment_method_id   => okl_party_rec.vend_payment_method_id,
31521                                  p_vend_payment_method      => okl_party_rec.vend_payment_method,
31522                                  p_vend_bank_acc_id         => okl_party_rec.vend_bank_acc_id,
31523                                  p_vend_bank_acc_number     => okl_party_rec.vend_bank_acc_number,
31524                                  p_vend_invoice_format_id   => okl_party_rec.vend_invoice_format_id,
31525                                  p_vend_invoice_format_code => okl_party_rec.vend_invoice_format_code,
31526                                  p_vend_review_invoice_flag => okl_party_rec.vend_review_invoice_flag,
31527                                  p_vend_reason_for_inv_review => okl_party_rec.vend_reason_for_inv_review,
31528                                  p_vend_inv_review_until_date => okl_party_rec.vend_inv_review_until_date,
31529                                  p_pth_base_vendor_site_code  => okl_party_rec.pth_base_vendor_site_code,
31530                                  p_pth_base_vendor_site_id    => okl_party_rec.pth_base_vendor_site_id,
31531                                  p_pth_base_paygroup_code     => okl_party_rec.pth_base_paygroup_code,
31532                                  p_pth_base_pmnt_term_code    => okl_party_rec.pth_base_pmnt_term_code,
31533                                  p_pth_base_pmnt_term_id      => okl_party_rec.pth_base_pmnt_term_id,
31534                                  p_pth_base_pmnt_basis        => okl_party_rec.pth_base_pmnt_basis,
31535                                  p_pth_base_pmnt_start_date   => okl_party_rec.pth_base_pmnt_start_date,
31536                                  p_pth_base_pmnt_method_code  => okl_party_rec.pth_base_pmnt_method_code,
31537                                  p_pth_base_pmnt_freq         => okl_party_rec.pth_base_pmnt_freq,
31538                                  p_pth_base_pmnt_remit_days   => okl_party_rec.pth_base_pmnt_remit_days,
31539                                  p_pth_base_disb_basis        => okl_party_rec.pth_base_disb_basis,
31540                                  p_pth_base_disb_fixed_amount => okl_party_rec.pth_base_disb_fixed_amount,
31541                                  p_pth_base_disb_pct          => okl_party_rec.pth_base_disb_pct,
31542                                  p_pth_base_proc_fee_basis    => okl_party_rec.pth_base_proc_fee_basis,
31543                                  p_pth_base_proc_fee_fixed_amt => okl_party_rec.pth_base_proc_fee_fixed_amt,
31544                                  p_pth_base_proc_pct           => okl_party_rec.pth_base_proc_pct,
31545                                  p_pth_evg_vendor_site_code    => okl_party_rec.pth_evg_vendor_site_code,
31546                                  p_pth_evg_vendor_site_id      => okl_party_rec.pth_evg_vendor_site_id,
31547                                  p_pth_evg_paygroup_code       => okl_party_rec.pth_evg_paygroup_code,
31548                                  p_pth_evg_pmnt_term_code      => okl_party_rec.pth_evg_pmnt_term_code,
31549                                  p_pth_evg_pmnt_term_id        => okl_party_rec.pth_evg_pmnt_term_id,
31550                                  p_pth_evg_pmnt_basis          => okl_party_rec.pth_evg_pmnt_basis,
31551                                  p_pth_evg_pmnt_start_date     => okl_party_rec.pth_evg_pmnt_start_date,
31552                                  p_pth_evg_pmnt_method_code    => okl_party_rec.pth_evg_pmnt_method_code,
31553                                  p_pth_evg_pmnt_freq           => okl_party_rec.pth_evg_pmnt_freq,
31554                                  p_pth_evg_pmnt_remit_days     => okl_party_rec.pth_evg_pmnt_remit_days,
31555                                  p_pth_evg_disb_basis          => okl_party_rec.pth_evg_disb_basis,
31556                                  p_pth_evg_disb_fixed_amount   => okl_party_rec.pth_evg_disb_fixed_amount,
31557                                  p_pth_evg_disb_pct            => okl_party_rec.pth_evg_disb_pct,
31558                                  p_pth_evg_proc_fee_basis      => okl_party_rec.pth_evg_proc_fee_basis,
31559                                  p_pth_evg_proc_fee_fixed_amt  => okl_party_rec.pth_evg_proc_fee_fixed_amt,
31560                                  p_pth_evg_proc_pct            => okl_party_rec.pth_evg_proc_pct,
31561                                  p_attribute_category          => okl_party_rec.attribute_category,
31562                                  p_attribute1                  => okl_party_rec.attribute1,
31563                                  p_attribute2                  => okl_party_rec.attribute2,
31564                                  p_attribute3                  => okl_party_rec.attribute3,
31565                                  p_attribute4                  => okl_party_rec.attribute4,
31566                                  p_attribute5                  => okl_party_rec.attribute5,
31567                                  p_attribute6                  => okl_party_rec.attribute6,
31568                                  p_attribute7                  => okl_party_rec.attribute7,
31569                                  p_attribute8                  => okl_party_rec.attribute8,
31570                                  p_attribute9                  => okl_party_rec.attribute9,
31571                                  p_attribute10                 => okl_party_rec.attribute10,
31572                                  p_attribute11                 => okl_party_rec.attribute11,
31573                                  p_attribute12                 => okl_party_rec.attribute12,
31574                                  p_attribute13                 => okl_party_rec.attribute13,
31575                                  p_attribute14                 => okl_party_rec.attribute14,
31576                                  p_attribute15                 => okl_party_rec.attribute15
31577                                 );
31578 
31579             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
31580                 RAISE load_failed;
31581             END IF;
31582 
31583             l_progress := '210';
31584 
31585          END; --6 party header begin
31586 
31587       END LOOP; --party role header
31588 
31589       -- Process Payments Interface Record once again at header level
31590           l_contract_number_old_prev := 'INITIAL';
31591           --l_line_number_prev         := -999999999;
31592           l_payment_type_code_prev   := 'INITIAL';
31593           l_pmnt_sch_num_prev        := -999999999;
31594           l_start_date_prev          := NULL;
31595           l_number_of_periods_prev   := -999999999;
31596           l_rg_id                    := NULL;
31597 
31598           FOR okl_payment_rec IN okl_payment_csr(okl_header_rec.contract_number_old,
31599                                                  NULL)
31600           LOOP
31601              BEGIN --5
31602 
31603                check_payment_record(
31604                                     x_return_status              => x_return_status,
31605                                     x_msg_count                  => x_msg_count,
31606                                     x_msg_data                   => x_msg_data,
31607                                     p_contract_number_old        => okl_payment_rec.contract_number_old,
31608                                     p_line_number                => NULL,
31609                                     p_asset_number               => okl_payment_rec.asset_number,
31610                                     p_payment_type_code          => okl_payment_rec.payment_type_code,
31611                                     p_stream_purpose             => okl_payment_rec.stream_purpose_code,
31612                                     p_payment_schedule_number    => okl_payment_rec.payment_schedule_number,
31613                                     p_payment_frequency_code     => okl_payment_rec.payment_frequency_code,
31614                                     p_arrears_flag               => okl_payment_rec.arrears_flag,
31615                                     p_advance_payments           => okl_payment_rec.advance_payments,
31616                                     p_payment_amount             => okl_payment_rec.payment_amount,
31617                                     p_start_date                 => okl_payment_rec.start_date,
31618                                     p_number_of_periods          => okl_payment_rec.number_of_periods,
31619                                     p_rate                       => okl_payment_rec.rate,
31620                                     p_comments                   => okl_payment_rec.comments,
31621                                     p_stub_days                  => okl_payment_rec.stub_days,
31622                                     p_stub_amount                => okl_payment_rec.stub_amount
31623                                    );
31624 
31625                IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
31626                    RAISE load_failed;
31627                END IF;
31628 
31629                IF (l_contract_number_old_prev <> okl_payment_rec.contract_number_old  -- prev checking
31630                     OR
31631                     l_payment_type_code_prev   <> okl_payment_rec.payment_type_code) THEN
31632 
31633                    --do all
31634                    create_payment_rule_group(
31635                                               x_return_status     => x_return_status,
31636                                               x_msg_count         => x_msg_count,
31637                                               x_msg_data          => x_msg_data,
31638                                               p_contract_number   => okl_header_rec.contract_number_old,
31639                                               p_line_number       => NULL,
31640                                               p_payment_type_code => okl_payment_rec.payment_type_code,
31641                                               p_stream_purpose    => okl_payment_rec.stream_purpose_code,
31642                                               p_chr_id            => x_chrv_rec.id,
31643                                               p_cle_id            => NULL,
31644                                               p_rg_id             => l_rg_id,
31645                                               x_rgp_id            => x_rgp_id,
31646                                               x_slh_rulv_rec      => x_slh_rulv_rec
31647                                              );
31648 
31649                    IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
31650                       RAISE load_failed;
31651                    END IF;
31652 
31653                    l_rg_id := x_rgp_id;
31654 
31655                 ELSE
31656                     l_progress := '170';
31657 
31658                     -- Some more validation on Payment Lines
31659                     IF (okl_payment_rec.payment_schedule_number <= l_pmnt_sch_num_prev) THEN
31660                      debug_message('Second check error...');
31661                        okl_api.set_message(
31662                                            G_APP_NAME,
31663                                            G_PAYMENT_SCHD_ERROR,
31664                                            'COL_VALUE',
31665                                             okl_payment_rec.payment_schedule_number,
31666                                            'CONTRACT_NUM',
31667                                            okl_header_rec.contract_number_old||'/'||okl_payment_rec.line_number
31668                                           );
31669                        x_return_status := OKL_API.G_RET_STS_ERROR;
31670                        RAISE load_failed;
31671                     END IF;
31672 
31673                     check_payment_frequency_code(
31674                                                  x_return_status     => x_return_status,
31675                                                  x_msg_count         => x_msg_count,
31676                                                  x_msg_data          => x_msg_data,
31677                                                  p_payment_freq_code => okl_payment_rec.payment_frequency_code,
31678                                                  x_id1               => x_pmnt_freq_id,
31679                                                  x_uom_code          => x_uom_code
31680                                                 );
31681 
31682                     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
31683                        okl_api.set_message(
31684                                            G_APP_NAME,
31685                                            G_INVALID_VALUE,
31686                                            'CONTRACT_NUM',
31687                                            okl_payment_rec.contract_number_old||'/'||okl_payment_rec.line_number,
31688                                            'COL_NAME',
31689                                            'PAYMENT_FREQUENCY_CODE',
31690                                            'COL_VALUE',
31691                                            okl_payment_rec.payment_frequency_code
31692                                           );
31693                        RAISE load_failed;
31694                     END IF;
31695 
31696                     IF (x_uom_code = 'M') THEN
31697                        l_mult_factor := 1;
31698                     ELSIF (x_uom_code = 'Q') THEN
31699                        l_mult_factor := 3;
31700                     ELSIF (x_uom_code = 'S') THEN
31701                        l_mult_factor := 6;
31702                     ELSIF (x_uom_code = 'A') THEN
31703                        l_mult_factor := 12;
31704                     ELSE
31705                        okl_api.set_message(
31706                                            G_APP_NAME,
31707                                            G_UOM_SETUP_ERROR,
31708                                            'COL_VALUE',
31709                                            okl_payment_rec.payment_frequency_code
31710                                           );
31711                        RAISE load_failed;
31712                     END IF;
31713 
31714 
31715                     l_current_start_date := add_months(l_start_date_prev, (l_number_of_periods_prev * l_mult_factor));
31716 
31717                     IF (TRUNC(l_current_start_date) <> TRUNC(okl_payment_rec.start_date)) THEN
31718                        okl_api.set_message(
31719                                            G_APP_NAME,
31720                                            G_PAYMENT_START_DATE_ERROR,
31721                                            'CONTRACT_NUM',
31722                                            okl_payment_rec.contract_number_old||'/'||okl_payment_rec.line_number
31723                                           );
31724                        RAISE load_failed;
31725                     END IF;
31726 
31727                 END IF; --prev checking
31728 
31729                 --IF (l_rg_id IS NULL) THEN
31730                 --   l_rg_id := x_rgp_id;
31731                 --END IF;
31732 
31733                 -- Create other rules
31734                 -- Keep a copy to compare with latest record
31735                 create_payment_other_rules(
31736                                            x_return_status      => x_return_status,
31737                                            x_msg_count          => x_msg_count,
31738                                            x_msg_data           => x_msg_data,
31739                                            p_contract_number    => okl_header_rec.contract_number_old,
31740                                            p_line_number        => NULL,
31741                                            p_payment_sch_number => okl_payment_rec.payment_schedule_number,
31742                                            p_payment_freq_code  => okl_payment_rec.payment_frequency_code,
31743                                            p_arrears_flag       => okl_payment_rec.arrears_flag,
31744                                            p_advance_payments   => okl_payment_rec.advance_payments,
31745                                            p_payment_amount     => okl_payment_rec.payment_amount,
31746                                            p_start_date         => okl_payment_rec.start_date,
31747                                            p_number_of_periods  => okl_payment_rec.number_of_periods,
31748                                            p_rate               => okl_payment_rec.rate,
31749                                            p_comments           => okl_payment_rec.comments,
31750                                            p_stub_days          => okl_payment_rec.stub_days,
31751                                            p_stub_amount        => okl_payment_rec.stub_amount,
31752                                            p_slh_rulv_rec       => x_slh_rulv_rec,
31753                                            p_chr_id             => x_chrv_rec.id,
31754                                            p_cle_id             => NULL,
31755                                            p_rgp_id             => l_rg_id
31756                                           );
31757 
31758                 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
31759                    RAISE load_failed;
31760                 END IF;
31761 
31762                 l_progress := '180';
31763 
31764                 l_contract_number_old_prev := okl_payment_rec.contract_number_old;
31765                 --l_line_number_prev         := okl_payment_rec.line_number;
31766                 l_payment_type_code_prev   := okl_payment_rec.payment_type_code;
31767                 l_pmnt_sch_num_prev        := okl_payment_rec.payment_schedule_number;
31768                 l_start_date_prev          := okl_payment_rec.start_date;
31769                 l_number_of_periods_prev   := okl_payment_rec.number_of_periods;
31770 
31771              END; --5 Payment begin
31772 
31773           END LOOP; -- Payment Loop
31774 
31775           --Bug# 13478101
31776           OKL_K_RATE_PARAMS_PVT.get_product(
31777             p_api_version   => 1.0,
31778             p_init_msg_list => OKL_API.G_FALSE,
31779             x_return_status => x_return_status,
31780             x_msg_count     => x_msg_count,
31781             x_msg_data      => x_msg_data,
31782             p_khr_id        => x_chrv_rec.id,
31783             x_pdt_parameter_rec => l_pdt_parameter_rec);
31784 
31785           IF ((l_pdt_parameter_rec.deal_type = 'LOAN' AND
31786                  l_pdt_parameter_rec.interest_calculation_basis = 'FLOAT') OR
31787                 (l_pdt_parameter_rec.deal_type = 'LOAN-REVOLVING' AND
31788                  l_pdt_parameter_rec.interest_calculation_basis = 'FLOAT'))
31789           THEN
31790 
31791             OPEN l_var_int_sched_csr(p_chr_id => x_chrv_rec.id);
31792             FETCH l_var_int_sched_csr INTO l_var_int_sched_rec;
31793             CLOSE l_var_int_sched_csr;
31794 
31795             -- If Variable Interest Schedule has been imported
31796             -- then call OKL_LA_PAYMENTS_PVT.calculate_details to
31797             -- add stub period at the end, if required
31798             IF l_var_int_sched_rec.rgp_id IS NOT NULL THEN
31799 
31800               OKL_LA_PAYMENTS_PVT.calculate_details(
31801                                             p_api_version      => 1.0,
31802                                             p_init_msg_list    => OKL_API.G_FALSE,
31803                                             x_return_status    => x_return_status,
31804                                             x_msg_count        => x_msg_count,
31805                                             x_msg_data         => x_msg_data,
31806                                             p_chr_id           => x_chrv_rec.id,
31807                                             p_rgp_id           => l_var_int_sched_rec.rgp_id,
31808                                             p_slh_id           => l_var_int_sched_rec.slh_id,
31809                                             structure          => NULL,
31810                                             frequency          => NULL,
31811                                             arrears            => OKL_API.G_MISS_CHAR,
31812                                             p_validate_date_yn => 'N',
31813                                             p_update_type      => 'IMPORT'
31814                                            );
31815 
31816               IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
31817                 RAISE load_failed;
31818               END IF;
31819 
31820             ELSE
31821 
31822               OKL_LA_PAYMENTS_PVT.VARIABLE_INTEREST_SCHEDULE (
31823                 p_api_version   => 1.0,
31824                 p_init_msg_list => OKL_API.G_FALSE,
31825                 x_return_status => x_return_status,
31826                 x_msg_count     => x_msg_count,
31827                 x_msg_data      => x_msg_data,
31828                 p_chr_id        => x_chrv_rec.id,
31829                 x_rulv_tbl      => x_rulv_tbl
31830               );
31831 
31832               IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
31833                 RAISE load_failed;
31834               END IF;
31835             END IF;
31836           END IF;
31837           --Bug# 13478101
31838 
31839       IF (l_no_of_lines = 0
31840           AND
31841           okl_header_rec.import_request_stage <> 'NEW') THEN -- There must be atleast one line, except for NEW contracts
31842 
31843           okl_api.set_message(
31844                               G_APP_NAME,
31845                               G_INVALID_CONTRACT,
31846                               'CONTRACT_NUM',
31847                               okl_header_rec.contract_number_old
31848                              );
31849           x_return_status := OKL_API.G_RET_STS_ERROR;
31850           RAISE load_failed;
31851       END IF;
31852 
31853       COMMIT; -- commit after every Contract to avoid problem with Rollback segment
31854 /*
31855       --
31856       -- Process Contracts depending on import_request_stage
31857       --
31858       IF (x_return_status = OKL_API.G_RET_STS_SUCCESS
31859           AND
31860           okl_header_rec.import_request_stage <> 'NEW' ) THEN
31861           contract_further_process(
31862                                    p_init_msg_list  => OKL_API.G_FALSE,
31863                                    x_return_status  => x_return_status,
31864                                    x_msg_count      => x_msg_count,
31865                                    x_msg_data       => x_msg_data,
31866                                    p_chr_id         => x_chrv_rec.id,
31867                                    p_import_stage   => okl_header_rec.import_request_stage
31868                                   );
31869       END IF;
31870 */
31871 
31872     EXCEPTION
31873 
31874       WHEN load_failed THEN
31875 
31876          report_error (
31877                        x_msg_count => x_msg_count,
31878                        x_msg_data  => x_msg_data
31879                       );
31880          x_return_status := OKL_API.G_RET_STS_ERROR;
31881 
31882     END; -- of Header Begin
31883 
31884       IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN -- Final checking for SUCCESSFUL Processing
31885 
31886          update_interface_status(
31887                                  p_contract_number     => okl_header_rec.contract_number_old,
31888                                  p_new_contract_number => x_chrv_rec.contract_number,
31889                                  p_status              => 'INTERFACED',
31890                                  x_return_status       => x_update_status
31891                                 );
31892          write_to_log('Contract '||okl_header_rec.contract_number_old||'-> loaded as :'||x_chrv_rec.contract_number);
31893          x_total_loaded := nvl(x_total_loaded,0) + 1;
31894 
31895 	       -- hariven - Bug#5393374 - Added - Start
31896       -- Raise Business event for "oracle.apps.okl.la.lease_contract.imported"
31897       raise_business_event( p_chr_id        => x_chrv_rec.id
31898                           , x_return_status => x_return_status);
31899     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
31900       write_to_log('Raising Business Event For Contract -' ||x_chrv_rec.contract_number ||' FAILED!');
31901       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
31902     END IF;
31903       -- hariven - Bug#5393374 - Added - End
31904 
31905       ELSE
31906 
31907          ROLLBACK; -- Rollback any incomplete transactions
31908          update_interface_status(
31909                                  p_contract_number     => okl_header_rec.contract_number_old,
31910                                  p_new_contract_number => okl_header_rec.contract_number,
31911                                  p_status              => 'ERROR',
31912                                  x_return_status       => x_update_status
31913                                 );
31914       END IF;
31915 
31916       COMMIT;
31917 
31918       --
31919       -- Process Contracts depending on import_request_stage
31920       --
31921       IF (x_return_status = OKL_API.G_RET_STS_SUCCESS
31922           AND
31923           okl_header_rec.import_request_stage <> 'NEW' ) THEN
31924           contract_further_process(
31925                                    p_init_msg_list  => OKL_API.G_FALSE,
31926                                    x_return_status  => x_return_status,
31927                                    x_msg_count      => x_msg_count,
31928                                    x_msg_data       => x_msg_data,
31929                                    p_chr_id         => x_chrv_rec.id,
31930                                    p_import_stage   => okl_header_rec.import_request_stage
31931                                   );
31932       END IF;
31933 
31934       debug_message('========================done ');
31935       write_to_log('========================done ');
31936 
31937   END LOOP; -- okl_header_csr
31938 
31939   return;
31940 
31941   EXCEPTION
31942      WHEN item_not_found_error THEN
31943       x_return_status := Okc_Api.G_RET_STS_ERROR;
31944 
31945     WHEN OTHERS THEN
31946       okl_api.set_message(
31947                           G_APP_NAME,
31948                           G_UNEXPECTED_ERROR,
31949                           'OKL_SQLCODE',
31950                           SQLCODE,
31951                           'OKL_SQLERRM',
31952                           SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
31953                          );
31954       x_return_status := OKL_API.G_RET_STS_ERROR;
31955 
31956       report_error (
31957                     x_msg_count => x_msg_count,
31958                     x_msg_data  => x_msg_data
31959                    );
31960       debug_message('Progress: '||l_progress);
31961       debug_message('========================done ');
31962 
31963   END Load_Input_Record;
31964 
31965 --+++++++++++++++++++++++++++++++ Load Interface +++++++++++++++++++++++++++
31966 -- Function to submit the concurrent request for Contract Import.
31967 
31968   FUNCTION Submit_Import_Contract(
31969   		   			p_api_version       IN NUMBER,
31970   		   			p_init_msg_list 	  IN VARCHAR2,
31971   		   			x_return_status     OUT NOCOPY VARCHAR2,
31972   		   			x_msg_count         OUT NOCOPY NUMBER,
31973   		   			x_msg_data 		  OUT NOCOPY VARCHAR2,
31974   		   			p_batch_number  	  IN VARCHAR2,
31975   		   			p_contract_number   IN VARCHAR2,
31976   		   			p_start_date  	  IN DATE,
31977   		   			p_end_date  	  IN DATE,
31978   		   			p_party_number 	  IN VARCHAR2)
31979    RETURN NUMBER
31980    IS
31981 
31982     x_request_id           NUMBER;
31983 
31984  l_start_date  VARCHAR2(30);
31985  l_end_date    VARCHAR2(30);
31986 
31987 
31988 BEGIN
31989 
31990     x_return_status := Okl_Api.G_RET_STS_SUCCESS;
31991 
31992 -- Convert the date to Varchar2
31993 
31994     l_start_date := Fnd_Date.date_to_canonical(p_start_date);
31995     l_end_date   := Fnd_Date.date_to_canonical(p_end_date);
31996 
31997 
31998    -- Submit Concurrent Program Request for interest calculation
31999     FND_REQUEST.set_org_id(mo_global.get_current_org_id); --MOAC- Concurrent request
32000     x_request_id := Fnd_Request.SUBMIT_REQUEST
32001 			(application 	=> 'OKL',
32002 			program 		=> 'OKLXKOI',
32003 			description 		=> 'Contract Import',
32004 			argument1 		=> p_batch_number,
32005 			argument2 		=> p_start_date,
32006 			argument3 		=> p_end_date,
32007 			argument4 		=> p_contract_number,
32008 			argument5 		=> p_party_number);
32009 
32010 
32011    IF x_request_id = 0 THEN
32012        -- Raise Error if the request has not been submitted successfully.
32013        Okc_Api.set_message(p_app_name => 'OFA',
32014                            p_msg_name => 'FA_DEPRN_TAX_ERROR',
32015                            p_token1   => 'REQUEST_ID',
32016                            p_token1_value => x_request_id);
32017 
32018         RAISE Okl_Api.g_exception_error;
32019    END IF;
32020 
32021     RETURN x_request_id;
32022 
32023   EXCEPTION
32024 
32025     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
32026         x_return_status := Okl_Api.G_RET_STS_ERROR;
32027        RETURN x_request_id;
32028 
32029     WHEN OTHERS THEN
32030         x_return_status := Okl_Api.G_RET_STS_UNEXP_ERROR;
32031         RETURN x_request_id;
32032 
32033   END Submit_Import_Contract;
32034 
32035   PROCEDURE Process_Record_Parallel (
32036                             errbuf             OUT NOCOPY VARCHAR2,
32037                             retcode            OUT NOCOPY VARCHAR2,
32038                             p_batch_number     IN VARCHAR2,
32039                             p_start_date_from  IN VARCHAR2,
32040                             p_start_date_to    IN VARCHAR2,
32041                             p_contract_number  IN VARCHAR2,
32042                             p_customer_number  IN VARCHAR2,
32043                             p_instance_number  IN NUMBER
32044                            ) IS
32045 
32046 
32047 request_id NUMBER := 0;
32048 
32049 batch_list varchar2(2000);
32050 start_pos number;
32051 l_batch_number okl_header_interface.batch_number%type;
32052 req_id req_tab_type;
32053 
32054 req_data varchar2(10);
32055 cur_req_pos number;
32056 
32057 batch_num_tab batch_tab_type;
32058 batch_counter number := 0;
32059 
32060 -- Parameters
32061 l_max_lines_per_worker number := 50000;
32062 l_line_count number := 0;
32063 l_header_count number := 0;
32064 
32065 l_partition_size number;
32066 l_max_partition_size number := 50000;
32067 l_parallel_count number;
32068 l_max_parallel_count number := 500;
32069 
32070 l_contract_tab batch_tab_type;
32071 l_contract_num_count number := 0;
32072 
32073 l_contract_num_tab batch_tab_type;
32074 l_count_tab req_tab_type;
32075 l_contract_num_tab2 batch_tab_type;
32076 l_count_tab2 req_tab_type;
32077 l_running_total number := 0;
32078 l_worker_id number := 1;
32079 l_percent number := 1;
32080 l_contract_tab_count req_tab_type;
32081 l_status_tab batch_tab_type;
32082 l_temp_count number := 1;
32083 
32084 cursor c1 is
32085   select b.contract_number_old, count(*)
32086   from okl_lines_interface b
32087   where b.contract_number_old in (
32088   select a.contract_number_old
32089   from okl_header_interface a
32090   where
32091   (
32092           a.batch_number        = p_batch_number
32093           OR
32094           a.contract_number_old = p_contract_number
32095           OR
32096           (
32097            a.customer_number    = p_customer_number
32098            AND
32099            a.start_date         between p_start_date_from AND p_start_date_to
32100           )
32101          )
32102   AND    a.status in ('NEW','ERROR')
32103   AND    a.contract_number_old = b.contract_number_old
32104   )
32105   group by b.contract_number_old
32106   order by 2;
32107 
32108 cursor c2 is
32109   select a.contract_number_old
32110   from okl_header_interface a
32111   where
32112   (
32113           a.batch_number        = p_batch_number
32114           OR
32115           a.contract_number_old = p_contract_number
32116           OR
32117           (
32118            a.customer_number    = p_customer_number
32119            AND
32120            a.start_date         between p_start_date_from AND p_start_date_to
32121           )
32122   )
32123   AND    a.status in ('NEW','ERROR');
32124 
32125   FUNCTION get_max_lines_per_worker return number IS
32126   BEGIN
32127     --AKP:Get value from profile
32128     return fnd_profile.value('OKL_MAX_LINES_PER_WORKER');
32129     --return 10000;
32130   END;
32131 
32132 
32133 begin
32134 
32135   write_to_log('In OKL_OPEN_INTERFACE_PVT.process_record_parallel...');
32136 
32137   if (p_instance_number is null) and (instr(NVL(p_batch_number,'?'),',') = 0)
32138   then
32139     -- Call the existing process_record (Old way)
32140     Process_Record (
32141                             errbuf          ,
32142                             retcode         ,
32143                             p_batch_number  ,
32144                             p_start_date_from,
32145                             p_start_date_to  ,
32146                             p_contract_number,
32147                             p_customer_number,
32148                             null
32149                    );
32150     return;
32151   else
32152 
32153 
32154     req_data := fnd_conc_global.request_data;
32155     write_to_log('req_data retrieved =' || req_data);
32156 
32157     if req_data is not null then
32158         errbuf := 'Done!';
32159         retcode := 0;
32160         return;
32161     end if;
32162 
32163     l_status_tab.delete;
32164     if (p_instance_number = 1) then
32165       write_to_log('Submit Old Concurrent program as is...');
32166 
32167       --AKP Change colname: assigned_process to scheduled_worker_id
32168       update okl_header_interface a
32169       set a.scheduled_worker_id = '1'
32170       where
32171       (
32172             a.batch_number        = p_batch_number
32173             OR
32174             a.contract_number_old = p_contract_number
32175             OR
32176             (
32177              a.customer_number    = p_customer_number
32178              AND
32179              a.start_date         between p_start_date_from AND p_start_date_to
32180             )
32181            )
32182       AND    a.status in ('NEW','ERROR');
32183       commit;
32184 
32185       FND_REQUEST.set_org_id(mo_global.get_current_org_id); --MOAC- Concurrent request
32186       request_id := FND_REQUEST.SUBMIT_REQUEST(
32187                     application => 'OKL',
32188                     program => 'OKLXKOIC',  -- AKP: Change program name
32189                     sub_request => TRUE,
32190                     argument1 => p_batch_number,
32191                     argument2 => p_start_date_from ,
32192                     argument3 => p_start_date_to ,
32193                     argument4 => p_contract_number ,
32194                     argument5 => p_customer_number ,
32195                     argument6 => '1'
32196                    );
32197 
32198       if (request_id = 0) then
32199           errbuf := fnd_message.get;
32200           retcode := 2;
32201       else
32202           retcode := 0;
32203       end if;
32204       fnd_conc_global.set_req_globals(conc_status => 'PAUSED',
32205                                       request_data => to_char(1));
32206       errbuf := 'Sub-Request submitted!';
32207       retcode := 0;
32208 
32209       return;
32210     end if;
32211 
32212 
32213     if (p_instance_number is null) and (instr(p_batch_number,',') > 0) then
32214 
32215       -------------- Copied from here
32216       batch_num_tab.delete;
32217       req_id.delete;
32218 
32219       batch_list := ltrim(rtrim(p_batch_number));  -- Separated by commas
32220       write_to_log('Before:batch_list=' || batch_list);
32221       -- Has comma at the end
32222       if (substr(batch_list,length(batch_list),1) = ',') then
32223         batch_list := substr(batch_list, 1, length(batch_list)-1);
32224       end if;
32225       write_to_log('After:batch_list=' || batch_list);
32226       start_pos := 1;
32227       for i in 1..length(batch_list)
32228       loop
32229         if (substr(batch_list,i,1) = ',') then
32230           l_batch_number := ltrim(rtrim(substr(batch_list, start_pos, i - start_pos )));
32231           write_to_log('i=' || i || ' start_pos=' || start_pos || ' l_batch_number=' || l_batch_number);
32232           if (l_batch_number is not null) then
32233             batch_counter := batch_counter + 1;
32234             batch_num_tab(batch_counter) := l_batch_number;
32235           end if;
32236 
32237           start_pos := i+1;
32238         end if;
32239       end loop;
32240 
32241       l_batch_number := ltrim(rtrim(substr(batch_list, start_pos, length(batch_list) - start_pos +1)));
32242       write_to_log('start_pos=' || start_pos || ' length=' || length(batch_list)|| ' l_batch_number=' || l_batch_number);
32243       if (l_batch_number is not null) then
32244         batch_counter := batch_counter + 1;
32245         batch_num_tab(batch_counter) := l_batch_number;
32246       end if;
32247 
32248       write_to_log('batch_counter=' || batch_counter);
32249 
32250       for i in batch_num_tab.first..batch_num_tab.last
32251       loop
32252         write_to_log('batch_num_tab(' || i || ')=' || batch_num_tab(i));
32253       end loop;
32254 
32255       req_data := fnd_conc_global.request_data;
32256       write_to_log('req_data retrieved =' || req_data);
32257 
32258       if req_data is not null then
32259           errbuf := 'Done!';
32260           retcode := 0;
32261           return;
32262       else
32263         for i in batch_num_tab.first..batch_num_tab.last
32264         loop
32265           l_batch_number := batch_num_tab(i);
32266           update okl_header_interface
32267           set    scheduled_worker_id = to_char(i)
32268           where batch_number = l_batch_number;
32269           commit;
32270 
32271           write_to_log('Submitting for ' || l_batch_number);
32272           FND_REQUEST.set_org_id(mo_global.get_current_org_id); --MOAC- Concurrent request
32273           request_id := FND_REQUEST.SUBMIT_REQUEST(
32274                       application => 'OKL',
32275                       program => 'OKLXKOIC',  -- AKP: Change program name
32276                       sub_request => TRUE,
32277                       argument1 => l_batch_number,
32278                       argument2 => p_start_date_from ,
32279                       argument3 => p_start_date_to ,
32280                       argument4 => p_contract_number ,
32281                       argument5 => p_customer_number ,
32282                       argument6 => to_char(i)
32283                      );
32284 
32285           if (request_id = 0) then
32286             errbuf := fnd_message.get;
32287             retcode := 2;
32288           end if;
32289 
32290         end loop;
32291         fnd_conc_global.set_req_globals(conc_status => 'PAUSED',
32292                                        request_data => to_char(1));
32293         errbuf := 'Sub-Request submitted!';
32294         retcode := 0;
32295       end if;
32296 
32297       -------------- Copied to here
32298 
32299     else
32300 
32301 
32302       l_max_lines_per_worker := get_max_lines_per_worker();
32303       write_to_log('Max lines per worker='||l_max_lines_per_worker);
32304 
32305       select count(*) into l_header_count
32306       from   okl_header_interface b
32307       where (
32308               b.batch_number        = p_batch_number
32309               OR
32310               b.contract_number_old = p_contract_number
32311               OR
32312               (
32313                b.customer_number    = p_customer_number
32314                AND
32315                b.start_date         between p_start_date_from AND p_start_date_to
32316               )
32317              )
32318       AND    b.status in ('NEW','ERROR');
32319 
32320       select count(*) into l_line_count
32321       from okl_lines_interface a
32322       where a.contract_number_old in (
32323       select b.contract_number_old
32324       from   okl_header_interface b
32325       where (
32326               b.batch_number        = p_batch_number
32327               OR
32328               b.contract_number_old = p_contract_number
32329               OR
32330               (
32331                b.customer_number    = p_customer_number
32332                AND
32333                b.start_date         between p_start_date_from AND p_start_date_to
32334               )
32335              )
32336       AND    b.status in ('NEW','ERROR')
32337       AND    b.contract_number_old = a.contract_number_old
32338       );
32339 
32340       write_to_log('l_header_count=' || l_header_count);
32341       write_to_log('l_line_count=' || l_line_count);
32342 
32343         if (nvl(l_max_lines_per_worker,0) < 1) then
32344           l_max_partition_size := 100000;
32345         else
32346           l_max_partition_size := l_max_lines_per_worker;
32347         end if;
32348         l_partition_size := round((l_line_count+l_header_count)/p_instance_number,0);
32349 
32350         if (l_partition_size > l_max_partition_size) then
32351           l_partition_size := l_max_partition_size;
32352         end if;
32353         write_to_log('l_partition_size=' || l_partition_size);
32354 
32355         l_parallel_count := round((l_line_count+l_header_count)/l_partition_size, 0);
32356 
32357         if (l_parallel_count > l_max_parallel_count) then
32358           l_parallel_count := l_max_parallel_count;
32359         end if;
32360         write_to_log('l_parallel_count=' || l_parallel_count);
32361 
32362 
32363       if ((l_line_count + l_header_count = 0) or (l_header_count = 0)) then
32364         write_to_log('No contracts/lines eligible for loading...');
32365         retcode := 0;
32366       elsif (l_Line_count = 0) then
32367         null;
32368         write_to_log('Only headers exist. No lines...');
32369         -- l_contract_num_tab, tab2, l_status_tab, l_temp_count
32370 
32371         write_to_log('Before open c2...');
32372         open c2;
32373         loop
32374           fetch c2 bulk collect into
32375             l_contract_num_tab2
32376           limit 10000;
32377           write_to_log('After fetch c2...');
32378           exit when l_contract_num_tab2.count = 0;
32379           for i in 1..l_contract_num_tab2.count loop
32380             l_contract_num_tab(l_temp_count) := l_contract_num_tab2(i);
32381             l_temp_count := l_temp_count + 1;
32382           end loop;
32383         end loop;
32384         close c2;
32385         write_to_log('After close c2...');
32386         l_worker_id := 1;
32387         for i in 1..l_contract_num_tab.count loop
32388           l_status_tab(i) := to_char(l_worker_id);
32389           l_worker_id := l_worker_id + 1;
32390           if (l_worker_id > l_parallel_count) then
32391             l_worker_id := 1;
32392           end if;
32393         end loop;
32394         write_to_log('After status_tab population ...');
32395         forall i in l_contract_num_tab.first..l_contract_num_tab.last
32396           update okl_header_interface
32397           set    scheduled_worker_id = l_status_tab(i)
32398           where  contract_number_old = l_contract_num_tab(i);
32399         write_to_log('After bulk update...');
32400 
32401         /* ************** */
32402         write_to_log('Before submitting: l_worker_id=' || l_worker_id);
32403         for i in 1..l_parallel_count
32404         loop
32405             FND_REQUEST.set_org_id(mo_global.get_current_org_id); --MOAC- Concurrent request
32406             request_id := FND_REQUEST.SUBMIT_REQUEST(
32407                         application => 'OKL',
32408                         program => 'OKLXKOIC', -- AKP Change program name
32409                         sub_request => TRUE,
32410                         argument1 => p_batch_number,
32411                         argument2 => p_start_date_from ,
32412                         argument3 => p_start_date_to ,
32413                         argument4 => p_contract_number ,
32414                         argument5 => p_customer_number ,
32415                         argument6 => to_char(i)
32416                        );
32417 
32418             if (request_id = 0) then
32419               errbuf := fnd_message.get;
32420               retcode := 2;
32421             end if;
32422 
32423         end loop;
32424         fnd_conc_global.set_req_globals(conc_status => 'PAUSED',
32425                                          request_data => to_char(1));
32426         errbuf := 'Sub-Request submitted!';
32427         retcode := 0;
32428 
32429         write_to_log('Done Spawning Child Processes...');
32430         /* ************** */
32431       else
32432 
32433         /*if (nvl(l_max_lines_per_worker,0) < 1) then
32434           l_max_partition_size := 100000;
32435         else
32436           l_max_partition_size := l_max_lines_per_worker;
32437         end if;
32438         l_partition_size := round((l_line_count+l_header_count)/p_instance_number,0);
32439 
32440         if (l_partition_size > l_max_partition_size) then
32441           l_partition_size := l_max_partition_size;
32442         end if;
32443         write_to_log('l_partition_size=' || l_partition_size);
32444 
32445         l_parallel_count := round((l_line_count+l_header_count)/l_partition_size, 0);
32446 
32447         if (l_parallel_count > l_max_parallel_count) then
32448           l_parallel_count := l_max_parallel_count;
32449         end if;
32450         write_to_log('l_parallel_count=' || l_parallel_count); */
32451 
32452         l_contract_tab.delete;
32453         l_contract_tab_count.delete;
32454         l_contract_num_count:= 1;
32455 
32456         l_contract_num_tab.delete;
32457         l_count_tab.delete;
32458         l_contract_num_tab2.delete;
32459         l_count_tab2.delete;
32460         l_running_total := 0;
32461         l_worker_id := 1;
32462 
32463         write_to_log('After initializing...');
32464         l_temp_count := 1;
32465         open c1;
32466         loop
32467           fetch c1 bulk collect into l_contract_num_tab2, l_count_tab2
32468             LIMIT G_BULK_BATCH_SIZE;
32469           if (l_contract_num_tab2.count=0) then
32470             exit;
32471           else
32472             null;
32473             --Populate l_contract_num_tab and l_count_tab from 2 above
32474             for i in l_contract_num_tab2.first..l_contract_num_tab2.last loop
32475               l_contract_num_tab(l_temp_count) := l_contract_num_tab2(i);
32476               l_count_tab(l_temp_count) := l_count_tab2(i);
32477               l_temp_count := l_temp_count + 1;
32478             end loop;
32479           end if;
32480         end loop;
32481         close c1;
32482 
32483         write_to_log('l_contract_num_tab.count=' || l_contract_num_tab.count);
32484 
32485         if (l_contract_num_tab.count > 0) then
32486 
32487           for i in l_contract_num_tab.first .. l_contract_num_tab.last loop
32488 
32489             write_to_log('processing l_contract_num_tab(' || i || ')=' || l_contract_num_tab(i));
32490             l_contract_tab(l_contract_num_count) := l_contract_num_tab(i);
32491             l_contract_tab_count(l_contract_num_count) := l_count_tab(i);
32492             l_contract_num_count := l_contract_num_count + 1;
32493 
32494             l_running_total := l_running_total + l_count_tab(i) + 1;
32495             --write_to_log('l_contract_num_count=' || l_contract_num_count);
32496             --write_to_log('l_running_total=' || l_running_total);
32497 
32498             l_percent := round((l_running_total-l_partition_size)*100/l_partition_size,0);
32499             --write_to_log('l_percent=' || l_percent);
32500             if (l_running_total = l_partition_size) then
32501                 for j in 1..l_contract_num_count-1 loop
32502                   --write_to_log(l_contract_tab(j) || ' on worker ' || l_worker_id);
32503                   l_status_tab(j) := to_char(l_worker_id);
32504                   write_to_log(l_contract_tab(j) || ' on worker ' || l_worker_id ||
32505                      ' lines -> ' || l_contract_tab_count(j));
32506                 end loop;
32507                 -- AKP: Change assigned_process to scheduled_worker_id
32508                 forall j in l_status_tab.first..l_status_tab.last
32509                   update okl_header_interface set scheduled_worker_id=l_status_tab(j)
32510                   where  contract_number_old = l_contract_tab(j);
32511                 commit;
32512 
32513                 l_running_total := 0;
32514                 l_contract_num_count := 1;
32515                 l_worker_id := l_worker_id + 1;
32516                 l_contract_tab.delete;
32517                 l_contract_tab_count.delete;
32518                 l_status_tab.delete;
32519             elsif (l_running_total > l_partition_size) then
32520               if ((l_contract_num_count > 2)  and round((l_running_total-l_partition_size)*100/l_partition_size,0) >10 )
32521               then
32522                 l_contract_num_count := l_contract_num_count - 1;
32523                 --write_to_log('Reduced contract_num_count=' || l_contract_num_count);
32524                 for j in 1..l_contract_num_count-1 loop
32525                   l_status_tab(j) := to_char(l_worker_id);
32526                   write_to_log(l_contract_tab(j) || ' on worker ' || l_worker_id ||
32527                      ' lines -> ' || l_contract_tab_count(j));
32528                 end loop;
32529                 -- AKP: Change assigned_process to scheduled_worker_id
32530                 forall j in l_status_tab.first..l_status_tab.last
32531                   update okl_header_interface set scheduled_worker_id=l_status_tab(j)
32532                   where  contract_number_old = l_contract_tab(j);
32533                 commit;
32534 
32535                 l_running_total := 0;
32536                 l_contract_num_count := 1;
32537                 l_worker_id := l_worker_id + 1;
32538                 l_contract_tab.delete;
32539                 l_contract_tab_count.delete;
32540                 l_status_tab.delete;
32541                 l_contract_tab(l_contract_num_count) := l_contract_num_tab(i);
32542                 l_contract_tab_count(l_contract_num_count) := l_count_tab(i);
32543                 l_contract_num_count := l_contract_num_count + 1;
32544               else
32545                 for j in 1..l_contract_num_count-1 loop
32546                   --write_to_log(l_contract_tab(j) || ' on worker ' || l_worker_id);
32547                   l_status_tab(j) := to_char(l_worker_id);
32548                   write_to_log(l_contract_tab(j) || ' on worker ' || l_worker_id ||
32549                      ' lines -> ' || l_contract_tab_count(j));
32550                 end loop;
32551                 -- AKP: Change assigned_process to scheduled_worker_id
32552                 forall j in l_status_tab.first..l_status_tab.last
32553                   update okl_header_interface set scheduled_worker_id=l_status_tab(j)
32554                   where  contract_number_old = l_contract_tab(j);
32555                 commit;
32556 
32557                 l_running_total := 0;
32558                 l_contract_num_count := 1;
32559                 l_worker_id := l_worker_id + 1;
32560                 l_contract_tab.delete;
32561                 l_contract_tab_count.delete;
32562                 l_status_tab.delete;
32563               end if;
32564             end if;  -- if contract_num_tab.count > 0
32565 
32566           end loop;
32567         end if;
32568 
32569         write_to_log('Outside...contract_num_count=' || l_contract_num_count
32570                      || ' l_worker_id=' || l_worker_id);
32571         if (l_contract_tab.count > 0) then
32572                 for j in 1..l_contract_num_count-1 loop
32573                   --write_to_log(l_contract_tab(j) || ' on worker ' || l_worker_id);
32574                   l_status_tab(j) := to_char(l_worker_id);
32575                   write_to_log(l_contract_tab(j) || ' on worker ' || l_worker_id ||
32576                      ' lines -> ' || l_contract_tab_count(j));
32577                 end loop;
32578                 -- AKP: Change assigned_process to scheduled_worker_id
32579                 forall j in l_status_tab.first..l_status_tab.last
32580                   update okl_header_interface set scheduled_worker_id=l_status_tab(j)
32581                   where  contract_number_old = l_contract_tab(j);
32582                 commit;
32583 
32584                 l_running_total := 0;
32585                 l_contract_num_count := 1;
32586                 l_worker_id := l_worker_id + 1;
32587                 l_contract_tab.delete;
32588                 l_contract_tab_count.delete;
32589                 l_status_tab.delete;
32590         end if;
32591 
32592         /*end loop;
32593         close c1; */
32594 
32595 
32596         write_to_log('Before submitting: l_worker_id=' || l_worker_id);
32597         if (l_worker_id > l_max_parallel_count + 1) then
32598           l_worker_id := l_max_parallel_count + 1;
32599           write_to_log('ALERT:Some workers can not be started because of resource. Please rerun your job later after this submission finishes.');
32600         end if;
32601         for i in 1..l_worker_id -1
32602         loop
32603             FND_REQUEST.set_org_id(mo_global.get_current_org_id); --MOAC- Concurrent request
32604             request_id := FND_REQUEST.SUBMIT_REQUEST(
32605                         application => 'OKL',
32606                         program => 'OKLXKOIC', -- AKP Change program name
32607                         sub_request => TRUE,
32608                         argument1 => p_batch_number,
32609                         argument2 => p_start_date_from ,
32610                         argument3 => p_start_date_to ,
32611                         argument4 => p_contract_number ,
32612                         argument5 => p_customer_number ,
32613                         argument6 => to_char(i)
32614                        );
32615 
32616             if (request_id = 0) then
32617               errbuf := fnd_message.get;
32618               retcode := 2;
32619             end if;
32620 
32621         end loop;
32622         fnd_conc_global.set_req_globals(conc_status => 'PAUSED',
32623                                          request_data => to_char(1));
32624         errbuf := 'Sub-Request submitted!';
32625         retcode := 0;
32626 
32627         write_to_log('Done Spawning Child Processes...');
32628 
32629       end if;  -- if line_count = 0
32630     end if;  -- if instance_number
32631 
32632   end if;  -- if parallel
32633 
32634 
32635 exception when FND_API.G_EXC_ERROR THEN
32636             write_to_log('G_EXC_ERROR');
32637             raise FND_API.G_EXC_ERROR;
32638           when others then
32639             write_to_log('OTHERS');
32640             FND_MESSAGE.SET_NAME('AR', 'HZ_STAGE_SQL_ERROR');
32641             FND_MESSAGE.SET_TOKEN('PROC' ,'Parallel Contract import failed');
32642             FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
32643             FND_MSG_PUB.ADD;
32644             RAISE FND_API.G_EXC_ERROR;
32645 end;
32646 
32647 
32648 END okl_open_interface_pvt;