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.100.12010000.3 2008/11/07 18:54:17 cklee 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 
69 -- start cklee 02/13/2004 bug# 3440442
70 -- 3rd party insurance
71   G_INSURER                       CONSTANT VARCHAR2(80) := 'INSURER';
72   G_INSURANCE_AGENT               CONSTANT VARCHAR2(80) := 'INSURANCE_AGENT';
73 
74 --   OKX_INSURER_V
75   G_INSURANCE_COMPANY_NAME        CONSTANT VARCHAR2(80) := 'INSURANCE_COMPANY_NAME';
76   G_INSURANCE_COMPANY_NUMBER      CONSTANT VARCHAR2(80) := 'INSURANCE_COMPANY_NUMBER';
77   G_INSURANCE_COMPANY_ID          CONSTANT VARCHAR2(80) := 'INSURANCE_COMPANY_ID';
78   G_INSURANCE_COMPANY_SITE_NAME   CONSTANT VARCHAR2(80) := 'INSURANCE_COMPANY_SITE_NAME';
79   G_INSURANCE_COMPANY_SITE_NUM    CONSTANT VARCHAR2(80) := 'INSURANCE_COMPANY_SITE_NUMBER';
80   G_INSURANCE_COMPANY_SITE_ID     CONSTANT VARCHAR2(80) := 'INSURANCE_COMPANY_SITE_ID';
81 --  OKX_INSURANCE_AGENT_V
82   G_AGENT_NAME                    CONSTANT VARCHAR2(80) := 'AGENT_NAME';
83   G_AGENT_NUMBER                  CONSTANT VARCHAR2(80) := 'AGENT_NUMBER';
84   G_AGENT_ID                      CONSTANT VARCHAR2(80) := 'AGENT_ID';
85   G_AGENT_ADDRESS_SITE_NAME       CONSTANT VARCHAR2(80) := 'AGENT_ADDRESS_SITE_NAME';
86   G_AGENT_ADDRESS_SITE_NUMBER     CONSTANT VARCHAR2(80) := 'AGENT_ADDRESS_SITE_NUMBER';
87   G_AGENT_ADDRESS_SITE_ID         CONSTANT VARCHAR2(80) := 'AGENT_ADDRESS_SITE_ID';
88 
89   G_DEFAULT_NUM  CONSTANT NUMBER := 0;
90   G_DEFAULT_CHAR CONSTANT VARCHAR2(1) := 'X';
91   G_DEFAULT_DATE CONSTANT DATE := TO_DATE('1111','YYYY');
92   G_FINAL_DATE   CONSTANT    DATE    	:= TO_DATE('1','j') + 5300000;
93 -- end cklee 02/13/2004 bug# 3440442
94   G_REQUIRED_VALUE CONSTANT VARCHAR2(200) := OKC_API.G_REQUIRED_VALUE;
95   G_COL_NAME_TOKEN CONSTANT VARCHAR2(200) := OKC_API.G_COL_NAME_TOKEN;
96   G_PRODUCT_ID NUMBER;
97   G_REVENUE_RECOGNITION_METHOD okl_product_parameters_v.REVENUE_RECOGNITION_METHOD%TYPE;
98   G_INTEREST_CALCULATION_BASIS okl_product_parameters_v.INTEREST_CALCULATION_BASIS%TYPE;
99   G_DEAL_TYPE okl_product_parameters_v.DEAL_TYPE%TYPE;
100 
101   -- hariven - Bug#5393374 - Added - Start
102   G_WF_EVT_KHR_IMPORTED CONSTANT VARCHAR2(50) := 'oracle.apps.okl.la.lease_contract.imported';
103   G_WF_ITM_CONTRACT_ID CONSTANT VARCHAR2(11) := 'CONTRACT_ID';
104   -- hariven - Bug#5393374 - Added - End
105 
106 TYPE req_tab_type is TABLE of NUMBER index by binary_integer;
107 TYPE batch_tab_type is TABLE of VARCHAR2(30) index by binary_integer;
108 
109   TYPE template_h_rec_type IS RECORD (
110       ID                               OKL_K_HEADERS_FULL_V.ID%TYPE
111      ,OBJECT_VERSION_NUMBER            OKL_K_HEADERS_FULL_V.OBJECT_VERSION_NUMBER%TYPE
112      ,SFWT_FLAG                        OKL_K_HEADERS_FULL_V.SFWT_FLAG%TYPE
113      ,CHR_ID_RESPONSE                  OKL_K_HEADERS_FULL_V.CHR_ID_RESPONSE%TYPE
114      ,CHR_ID_AWARD                     OKL_K_HEADERS_FULL_V.CHR_ID_AWARD%TYPE
115      ,CHR_ID_RENEWED                   OKL_K_HEADERS_FULL_V.CHR_ID_RENEWED%TYPE
116      ,INV_ORGANIZATION_ID              OKL_K_HEADERS_FULL_V.INV_ORGANIZATION_ID%TYPE
117      ,STS_CODE                         OKL_K_HEADERS_FULL_V.STS_CODE%TYPE
118      ,QCL_ID                           OKL_K_HEADERS_FULL_V.QCL_ID%TYPE
119      ,SCS_CODE                         OKL_K_HEADERS_FULL_V.SCS_CODE%TYPE
120      ,CONTRACT_NUMBER                  OKL_K_HEADERS_FULL_V.CONTRACT_NUMBER%TYPE
121      ,CURRENCY_CODE                    OKL_K_HEADERS_FULL_V.CURRENCY_CODE%TYPE
122      ,CONTRACT_NUMBER_MODIFIER         OKL_K_HEADERS_FULL_V.CONTRACT_NUMBER_MODIFIER%TYPE
123      ,ARCHIVED_YN                      OKL_K_HEADERS_FULL_V.ARCHIVED_YN%TYPE
124      ,DELETED_YN                       OKL_K_HEADERS_FULL_V.DELETED_YN%TYPE
125      ,CUST_PO_NUMBER_REQ_YN            OKL_K_HEADERS_FULL_V.CUST_PO_NUMBER_REQ_YN%TYPE
126      ,PRE_PAY_REQ_YN                   OKL_K_HEADERS_FULL_V.PRE_PAY_REQ_YN%TYPE
127      ,CUST_PO_NUMBER                   OKL_K_HEADERS_FULL_V.CUST_PO_NUMBER%TYPE
128      ,SHORT_DESCRIPTION                OKL_K_HEADERS_FULL_V.SHORT_DESCRIPTION%TYPE
129      ,COMMENTS                         OKL_K_HEADERS_FULL_V.COMMENTS%TYPE
130      ,DESCRIPTION                      OKL_K_HEADERS_FULL_V.DESCRIPTION%TYPE
131      ,DPAS_RATING                      OKL_K_HEADERS_FULL_V.DPAS_RATING%TYPE
132      ,COGNOMEN                         OKL_K_HEADERS_FULL_V.COGNOMEN%TYPE
133      ,TEMPLATE_YN                      OKL_K_HEADERS_FULL_V.TEMPLATE_YN%TYPE
134      ,tEMPLATE_USED                    OKL_K_HEADERS_FULL_V.TEMPLATE_USED%TYPE
135      ,DATE_APPROVED                    OKL_K_HEADERS_FULL_V.DATE_APPROVED%TYPE
136      ,DATETIME_CANCELLED               OKL_K_HEADERS_FULL_V.DATETIME_CANCELLED%TYPE
137      ,AUTO_RENEW_DAYS                  OKL_K_HEADERS_FULL_V.AUTO_RENEW_DAYS%TYPE
138      ,DATE_ISSUED                      OKL_K_HEADERS_FULL_V.DATE_ISSUED%TYPE
139      ,DATETIME_RESPONDED               OKL_K_HEADERS_FULL_V.DATETIME_RESPONDED%TYPE
140      ,NON_RESPONSE_REASON              OKL_K_HEADERS_FULL_V.NON_RESPONSE_REASON%TYPE
141      ,NON_RESPONSE_EXPLAIN             OKL_K_HEADERS_FULL_V.NON_RESPONSE_EXPLAIN%TYPE
142      ,RFP_TYPE                         OKL_K_HEADERS_FULL_V.RFP_TYPE%TYPE
143      ,CHR_TYPE                         OKL_K_HEADERS_FULL_V.CHR_TYPE%TYPE
144      ,KEEP_ON_MAIL_LIST                OKL_K_HEADERS_FULL_V.KEEP_ON_MAIL_LIST%TYPE
145      ,SET_ASIDE_REASON                 OKL_K_HEADERS_FULL_V.SET_ASIDE_REASON%TYPE
146      ,SET_ASIDE_PERCENT                OKL_K_HEADERS_FULL_V.SET_ASIDE_PERCENT%TYPE
147      ,RESPONSE_COPIES_REQ              OKL_K_HEADERS_FULL_V.RESPONSE_COPIES_REQ%TYPE
148      ,DATE_CLOSE_PROJECTED             OKL_K_HEADERS_FULL_V.DATE_CLOSE_PROJECTED%TYPE
149      ,DATETIME_PROPOSED                OKL_K_HEADERS_FULL_V.DATETIME_PROPOSED%TYPE
150      ,DATE_SIGNED                      OKL_K_HEADERS_FULL_V.DATE_SIGNED%TYPE
151      ,DATE_TERMINATED                  OKL_K_HEADERS_FULL_V.DATE_TERMINATED%TYPE
152      ,DATE_RENEWED                     OKL_K_HEADERS_FULL_V.DATE_RENEWED%TYPE
153      ,TRN_CODE                         OKL_K_HEADERS_FULL_V.TRN_CODE%TYPE
154      ,START_DATE                       OKL_K_HEADERS_FULL_V.START_DATE%TYPE
155      ,END_DATE                         OKL_K_HEADERS_FULL_V.END_DATE%TYPE
156      ,AUTHORING_ORG_ID                 OKL_K_HEADERS_FULL_V.AUTHORING_ORG_ID%TYPE
157      ,BUY_OR_SELL                      OKL_K_HEADERS_FULL_V.BUY_OR_SELL%TYPE
158      ,ISSUE_OR_RECEIVE                 OKL_K_HEADERS_FULL_V.ISSUE_OR_RECEIVE%TYPE
159      ,ESTIMATED_AMOUNT                 OKL_K_HEADERS_FULL_V.ESTIMATED_AMOUNT%TYPE
160      ,CHR_ID_RENEWED_TO                OKL_K_HEADERS_FULL_V.CHR_ID_RENEWED_TO%TYPE
161      ,ESTIMATED_AMOUNT_RENEWED         OKL_K_HEADERS_FULL_V.ESTIMATED_AMOUNT_RENEWED%TYPE
162      ,CURRENCY_CODE_RENEWED            OKL_K_HEADERS_FULL_V.CURRENCY_CODE_RENEWED%TYPE
163      ,USER_ACCESS_LEVEL                OKL_K_HEADERS_FULL_V.USER_ACCESS_LEVEL%TYPE
164      ,UPG_ORIG_SYSTEM_REF              OKL_K_HEADERS_FULL_V.UPG_ORIG_SYSTEM_REF%TYPE
165      ,UPG_ORIG_SYSTEM_REF_ID           OKL_K_HEADERS_FULL_V.UPG_ORIG_SYSTEM_REF_ID%TYPE
166      ,APPLICATION_ID                   OKL_K_HEADERS_FULL_V.APPLICATION_ID%TYPE
167      ,RESOLVED_UNTIL                   OKL_K_HEADERS_FULL_V.RESOLVED_UNTIL%TYPE
168      ,ATTRIBUTE_CATEGORY               OKL_K_HEADERS_FULL_V.ATTRIBUTE_CATEGORY%TYPE
169      ,ATTRIBUTE1                       OKL_K_HEADERS_FULL_V.ATTRIBUTE1%TYPE
170      ,ATTRIBUTE2                       OKL_K_HEADERS_FULL_V.ATTRIBUTE2%TYPE
171      ,ATTRIBUTE3                       OKL_K_HEADERS_FULL_V.ATTRIBUTE3%TYPE
172      ,ATTRIBUTE4                       OKL_K_HEADERS_FULL_V.ATTRIBUTE4%TYPE
173      ,ATTRIBUTE5                       OKL_K_HEADERS_FULL_V.ATTRIBUTE5%TYPE
174      ,ATTRIBUTE6                       OKL_K_HEADERS_FULL_V.ATTRIBUTE6%TYPE
175      ,ATTRIBUTE7                       OKL_K_HEADERS_FULL_V.ATTRIBUTE7%TYPE
176      ,ATTRIBUTE8                       OKL_K_HEADERS_FULL_V.ATTRIBUTE8%TYPE
177      ,ATTRIBUTE9                       OKL_K_HEADERS_FULL_V.ATTRIBUTE9%TYPE
178      ,ATTRIBUTE10                      OKL_K_HEADERS_FULL_V.ATTRIBUTE10%TYPE
179      ,ATTRIBUTE11                      OKL_K_HEADERS_FULL_V.ATTRIBUTE11%TYPE
180      ,ATTRIBUTE12                      OKL_K_HEADERS_FULL_V.ATTRIBUTE12%TYPE
181      ,ATTRIBUTE13                      OKL_K_HEADERS_FULL_V.ATTRIBUTE13%TYPE
182      ,ATTRIBUTE14                      OKL_K_HEADERS_FULL_V.ATTRIBUTE14%TYPE
183      ,ATTRIBUTE15                      OKL_K_HEADERS_FULL_V.ATTRIBUTE15%TYPE
184      ,CREATED_BY                       OKL_K_HEADERS_FULL_V.CREATED_BY%TYPE
185      ,CREATION_DATE                    OKL_K_HEADERS_FULL_V.CREATION_DATE%TYPE
186      ,LAST_UPDATED_BY                  OKL_K_HEADERS_FULL_V.LAST_UPDATED_BY%TYPE
187      ,LAST_UPDATE_DATE                 OKL_K_HEADERS_FULL_V.LAST_UPDATE_DATE%TYPE
188      ,LAST_UPDATE_LOGIN                OKL_K_HEADERS_FULL_V.LAST_UPDATE_LOGIN%TYPE
189      ,ORIG_SYSTEM_SOURCE_CODE          OKL_K_HEADERS_FULL_V.ORIG_SYSTEM_SOURCE_CODE%TYPE
190      ,ORIG_SYSTEM_ID1                  OKL_K_HEADERS_FULL_V.ORIG_SYSTEM_ID1%TYPE
191      ,ORIG_SYSTEM_REFERENCE1           OKL_K_HEADERS_FULL_V.ORIG_SYSTEM_REFERENCE1%TYPE
192      ,KHR_ROW_ID                       OKL_K_HEADERS_FULL_V.KHR_ROW_ID%TYPE
193      ,KHR_OBJECT_VERSION_NUMBER        OKL_K_HEADERS_FULL_V.KHR_OBJECT_VERSION_NUMBER%TYPE
194      ,ISG_ID                           OKL_K_HEADERS_FULL_V.ISG_ID%TYPE
195      ,KHR_ID                           OKL_K_HEADERS_FULL_V.KHR_ID%TYPE
196      ,PDT_ID                           OKL_K_HEADERS_FULL_V.PDT_ID%TYPE
197      ,AMD_CODE                         OKL_K_HEADERS_FULL_V.AMD_CODE%TYPE
198      ,DATE_FIRST_ACTIVITY              OKL_K_HEADERS_FULL_V.DATE_FIRST_ACTIVITY%TYPE
199      ,GENERATE_ACCRUAL_YN              OKL_K_HEADERS_FULL_V.GENERATE_ACCRUAL_YN%TYPE
200      ,GENERATE_ACCRUAL_OVERRIDE_YN     OKL_K_HEADERS_FULL_V.GENERATE_ACCRUAL_OVERRIDE_YN%TYPE
201      ,DATE_REFINANCED                  OKL_K_HEADERS_FULL_V.DATE_REFINANCED%TYPE
202      ,CREDIT_ACT_YN                    OKL_K_HEADERS_FULL_V.CREDIT_ACT_YN%TYPE
203      ,TERM_DURATION                    OKL_K_HEADERS_FULL_V.TERM_DURATION%TYPE
204      ,CONVERTED_ACCOUNT_YN             OKL_K_HEADERS_FULL_V.CONVERTED_ACCOUNT_YN%TYPE
205      ,DATE_CONVERSION_EFFECTIVE        OKL_K_HEADERS_FULL_V.DATE_CONVERSION_EFFECTIVE%TYPE
206      ,SYNDICATABLE_YN                  OKL_K_HEADERS_FULL_V.SYNDICATABLE_YN%TYPE
207      ,SALESTYPE_YN                     OKL_K_HEADERS_FULL_V.SALESTYPE_YN%TYPE
208      ,DATE_DEAL_TRANSFERRED            OKL_K_HEADERS_FULL_V.DATE_DEAL_TRANSFERRED%TYPE
209      ,DATETIME_PROPOSAL_EFFECTIVE      OKL_K_HEADERS_FULL_V.DATETIME_PROPOSAL_EFFECTIVE%TYPE
210      ,DATETIME_PROPOSAL_INEFFECTIVE    OKL_K_HEADERS_FULL_V.DATETIME_PROPOSAL_INEFFECTIVE%TYPE
211      ,DATE_PROPOSAL_ACCEPTED           OKL_K_HEADERS_FULL_V.DATE_PROPOSAL_ACCEPTED%TYPE
212      ,KHR_ATTRIBUTE_CATEGORY           OKL_K_HEADERS_FULL_V.KHR_ATTRIBUTE_CATEGORY%TYPE
213      ,KHR_ATTRIBUTE1                   OKL_K_HEADERS_FULL_V.KHR_ATTRIBUTE1%TYPE
214      ,KHR_ATTRIBUTE2                   OKL_K_HEADERS_FULL_V.KHR_ATTRIBUTE2%TYPE
215      ,KHR_ATTRIBUTE3                   OKL_K_HEADERS_FULL_V.KHR_ATTRIBUTE3%TYPE
216      ,KHR_ATTRIBUTE4                   OKL_K_HEADERS_FULL_V.KHR_ATTRIBUTE4%TYPE
217      ,KHR_ATTRIBUTE5                   OKL_K_HEADERS_FULL_V.KHR_ATTRIBUTE5%TYPE
218      ,KHR_ATTRIBUTE6                   OKL_K_HEADERS_FULL_V.KHR_ATTRIBUTE6%TYPE
219      ,KHR_ATTRIBUTE7                   OKL_K_HEADERS_FULL_V.KHR_ATTRIBUTE7%TYPE
220      ,KHR_ATTRIBUTE8                   OKL_K_HEADERS_FULL_V.KHR_ATTRIBUTE8%TYPE
221      ,KHR_ATTRIBUTE9                   OKL_K_HEADERS_FULL_V.KHR_ATTRIBUTE9%TYPE
222      ,KHR_ATTRIBUTE10                  OKL_K_HEADERS_FULL_V.KHR_ATTRIBUTE10%TYPE
223      ,KHR_ATTRIBUTE11                  OKL_K_HEADERS_FULL_V.KHR_ATTRIBUTE11%TYPE
224      ,KHR_ATTRIBUTE12                  OKL_K_HEADERS_FULL_V.KHR_ATTRIBUTE12%TYPE
225      ,KHR_ATTRIBUTE13                  OKL_K_HEADERS_FULL_V.KHR_ATTRIBUTE13%TYPE
226      ,KHR_ATTRIBUTE14                  OKL_K_HEADERS_FULL_V.KHR_ATTRIBUTE14%TYPE
227      ,KHR_ATTRIBUTE15                  OKL_K_HEADERS_FULL_V.KHR_ATTRIBUTE15%TYPE
228      ,KHR_CREATED_BY                   OKL_K_HEADERS_FULL_V.KHR_CREATED_BY%TYPE
229      ,KHR_CREATON_DATE                 OKL_K_HEADERS_FULL_V.KHR_CREATON_DATE%TYPE
230      ,KHR_LAST_UPDATED_BY              OKL_K_HEADERS_FULL_V.KHR_LAST_UPDATED_BY%TYPE
231      ,KHR_LAST_UPDATE_DATE             OKL_K_HEADERS_FULL_V.KHR_LAST_UPDATE_DATE%TYPE
232      ,KHR_LAST_UPDATE_LOGIN            OKL_K_HEADERS_FULL_V.KHR_LAST_UPDATE_LOGIN%TYPE
233      ,PRE_TAX_YIELD                    OKL_K_HEADERS_FULL_V.PRE_TAX_YIELD%TYPE
234      ,AFTER_TAX_YIELD                  OKL_K_HEADERS_FULL_V.AFTER_TAX_YIELD%TYPE
235      ,IMPLICIT_INTEREST_RATE           OKL_K_HEADERS_FULL_V.IMPLICIT_INTEREST_RATE%TYPE
236      ,IMPLICIT_NON_IDC_INTEREST_RATE   OKL_K_HEADERS_FULL_V.IMPLICIT_NON_IDC_INTEREST_RATE%TYPE
237      ,TARGET_PRE_TAX_YIELD             OKL_K_HEADERS_FULL_V.TARGET_PRE_TAX_YIELD%TYPE
238      ,TARGET_AFTER_TAX_YIELD           OKL_K_HEADERS_FULL_V.TARGET_AFTER_TAX_YIELD%TYPE
239      ,TARGET_IMPLICIT_INTEREST_RATE    OKL_K_HEADERS_FULL_V.TARGET_IMPLICIT_INTEREST_RATE%TYPE
240      ,TARGET_IMPLICIT_NONIDC_INTRATE   OKL_K_HEADERS_FULL_V.TARGET_IMPLICIT_NONIDC_INTRATE%TYPE
241      ,DATE_LAST_INTERIM_INTEREST_CAL   OKL_K_HEADERS_FULL_V.DATE_LAST_INTERIM_INTEREST_CAL%TYPE
242      ,DEAL_TYPE                        OKL_K_HEADERS_FULL_V.DEAL_TYPE%TYPE
243      ,PRE_TAX_IRR                      OKL_K_HEADERS_FULL_V.PRE_TAX_IRR%TYPE
244      ,AFTER_TAX_IRR                    OKL_K_HEADERS_FULL_V.AFTER_TAX_IRR%TYPE
245      ,EXPECTED_DELIVERY_DATE           OKL_K_HEADERS_FULL_V.EXPECTED_DELIVERY_DATE%TYPE
246      ,ACCEPTED_DATE                    OKL_K_HEADERS_FULL_V.ACCEPTED_DATE%TYPE
247      ,PREFUNDING_ELIGIBLE_YN           OKL_K_HEADERS_FULL_V.PREFUNDING_ELIGIBLE_YN%TYPE
248      ,REVOLVING_CREDIT_YN              OKL_K_HEADERS_FULL_V.REVOLVING_CREDIT_YN%TYPE
249      ,CURRENCY_CONVERSION_TYPE         OKL_K_HEADERS_FULL_V.CURRENCY_CONVERSION_TYPE%TYPE
250      ,CURRENCY_CONVERSION_RATE         OKL_K_HEADERS_FULL_V.CURRENCY_CONVERSION_RATE%TYPE
251      ,CURRENCY_CONVERSION_DATE         OKL_K_HEADERS_FULL_V.CURRENCY_CONVERSION_DATE%TYPE
252      ,ASSIGNABLE_YN                    OKL_K_HEADERS_FULL_V.ASSIGNABLE_YN%TYPE
253      ,CUST_ACCT_ID                     OKL_K_HEADERS_FULL_V.CUST_ACCT_ID%TYPE
254      ,BILL_TO_SITE_USE_ID              OKL_K_HEADERS_FULL_V.BILL_TO_SITE_USE_ID%TYPE);
255 
256 
257  TYPE intf_h_rec_type IS RECORD (
258       BATCH_NUMBER                       OKL_HEADER_INTERFACE.BATCH_NUMBER%TYPE
259       ,TEMPLATE_NUMBER                    OKL_HEADER_INTERFACE.TEMPLATE_NUMBER%TYPE
260      ,STATUS                             OKL_HEADER_INTERFACE.STATUS %TYPE
261      ,CREATED_BY                         OKL_HEADER_INTERFACE.CREATED_BY %TYPE
262      ,DATE_CREATED                       OKL_HEADER_INTERFACE.DATE_CREATED %TYPE
263      ,DATE_CREATED_IN_OKL                OKL_HEADER_INTERFACE.DATE_CREATED_IN_OKL%TYPE
264      ,APPLICATION_CODE                   OKL_HEADER_INTERFACE.APPLICATION_CODE%TYPE
265      ,CONTRACT_CATEGORY                  OKL_HEADER_INTERFACE.CONTRACT_CATEGORY%TYPE
266      ,CONTRACT_NUMBER_OLD                OKL_HEADER_INTERFACE.CONTRACT_NUMBER_OLD%TYPE
267      ,CONTRACT_SOURCE                    OKL_HEADER_INTERFACE.CONTRACT_SOURCE%TYPE
268      ,CONTRACT_NUMBER                    OKL_HEADER_INTERFACE.CONTRACT_NUMBER%TYPE
269      ,CUSTOMER_NUMBER                    OKL_HEADER_INTERFACE.CUSTOMER_NUMBER%TYPE
270      ,CUSTOMER_ID                        OKL_HEADER_INTERFACE.CUSTOMER_ID%TYPE
271      ,CUSTOMER_ACCOUNT_NUMBER            OKL_HEADER_INTERFACE.CUSTOMER_ACCOUNT_NUMBER%TYPE
272      ,CUSTOMER_ACCOUNT_ID                OKL_HEADER_INTERFACE.CUSTOMER_ACCOUNT_ID%TYPE
273      ,START_DATE                         OKL_HEADER_INTERFACE.START_DATE%TYPE
274      ,IMPORT_REQUEST_STAGE               OKL_HEADER_INTERFACE.IMPORT_REQUEST_STAGE%TYPE
275      ,CURRENCY_CODE                      OKL_HEADER_INTERFACE.CURRENCY_CODE%TYPE
276      ,CUSTOMER_PO_NUMBER                 OKL_HEADER_INTERFACE.CUSTOMER_PO_NUMBER%TYPE
277      ,DATE_SIGNED                        OKL_HEADER_INTERFACE.DATE_SIGNED%TYPE
278      ,DATE_APPROVED                      OKL_HEADER_INTERFACE.DATE_APPROVED%TYPE
279      ,ACCEPTANCE_METHOD_CODE             OKL_HEADER_INTERFACE.ACCEPTANCE_METHOD_CODE%TYPE
280      ,CONSUMER_CREDIT_ACT_DEAL_FLAG      OKL_HEADER_INTERFACE.CONSUMER_CREDIT_ACT_DEAL_FLAG%TYPE
281      ,TERM                               OKL_HEADER_INTERFACE.TERM%TYPE
282      ,CONVERTED_ACCOUNT                  OKL_HEADER_INTERFACE.CONVERTED_ACCOUNT%TYPE
283      ,ACCEPTED_DATE                      OKL_HEADER_INTERFACE.ACCEPTED_DATE%TYPE
284      ,DEAL_TYPE_CODE                     OKL_HEADER_INTERFACE.DEAL_TYPE_CODE%TYPE
285      ,EXPECTED_DELIVERY_DATE             OKL_HEADER_INTERFACE.EXPECTED_DELIVERY_DATE%TYPE
286      ,CONTRACT_DESCRIPTION               OKL_HEADER_INTERFACE.CONTRACT_DESCRIPTION%TYPE
287      ,SALESPERSON_NAME                   OKL_HEADER_INTERFACE.SALESPERSON_NAME%TYPE
288      ,SALESPERSON_ID                     OKL_HEADER_INTERFACE.SALESPERSON_ID%TYPE
289      ,PRIVATE_LABEL_NUMBER               OKL_HEADER_INTERFACE.PRIVATE_LABEL_NUMBER%TYPE
290      ,PRIVATE_LABEL_ID                   OKL_HEADER_INTERFACE.PRIVATE_LABEL_ID%TYPE
291      ,PRIVATE_LABEL_URL                  OKL_HEADER_INTERFACE.PRIVATE_LABEL_URL%TYPE
292      ,PROGRAM_AGREEMENT_NUMBER           OKL_HEADER_INTERFACE.PROGRAM_AGREEMENT_NUMBER%TYPE
293      ,PROGRAM_AGREEMENT_ID               OKL_HEADER_INTERFACE.PROGRAM_AGREEMENT_ID%TYPE
294      ,PROGRAM_VENDOR_NAME                OKL_HEADER_INTERFACE.PROGRAM_VENDOR_NAME%TYPE
295      ,PROGRAM_VENDOR_ID                  OKL_HEADER_INTERFACE.PROGRAM_VENDOR_ID%TYPE
296      ,MASTER_LEASE_AGREEMENT_NUMBER      OKL_HEADER_INTERFACE.MASTER_LEASE_AGREEMENT_NUMBER%TYPE
297      ,MASTER_LEASE_AGREEMENT_ID          OKL_HEADER_INTERFACE.MASTER_LEASE_AGREEMENT_ID%TYPE
298      ,PRODUCT_NAME                       OKL_HEADER_INTERFACE.PRODUCT_NAME%TYPE
299      ,PRODUCT_ID                         OKL_HEADER_INTERFACE.PRODUCT_ID%TYPE
300      ,CALCULATE_RESIDUAL_INSURANCE       OKL_HEADER_INTERFACE.CALCULATE_RESIDUAL_INSURANCE%TYPE
301      ,REBOOK_LIMIT_DATE                  OKL_HEADER_INTERFACE.REBOOK_LIMIT_DATE%TYPE
302      ,IMPORT_REQUEST_ID                  OKL_HEADER_INTERFACE.IMPORT_REQUEST_ID%TYPE
303      ,END_OF_TERM_OPTION                 OKL_HEADER_INTERFACE.END_OF_TERM_OPTION%TYPE
304      ,END_OF_TERM_AMOUNT                 OKL_HEADER_INTERFACE.END_OF_TERM_AMOUNT%TYPE
305      ,MID_TERM_OPTION                    OKL_HEADER_INTERFACE.MID_TERM_OPTION%TYPE
306      ,MID_TERM_AMOUNT                    OKL_HEADER_INTERFACE.MID_TERM_AMOUNT%TYPE
307      ,SECURITY_DEPOSIT_HOLD_FLAG         OKL_HEADER_INTERFACE.SECURITY_DEPOSIT_HOLD_FLAG%TYPE
308      ,SECURITY_DEPOSIT_NET_FLAG          OKL_HEADER_INTERFACE.SECURITY_DEPOSIT_NET_FLAG%TYPE
309      ,SECURITY_DEPOSIT_DATE              OKL_HEADER_INTERFACE.SECURITY_DEPOSIT_DATE%TYPE
310      ,RENEWAL_NOTICE_DAYS                OKL_HEADER_INTERFACE.RENEWAL_NOTICE_DAYS%TYPE
311      ,RENEWAL_OPTION                     OKL_HEADER_INTERFACE.RENEWAL_OPTION%TYPE
312      ,RENEWAL_AMOUNT                     OKL_HEADER_INTERFACE.RENEWAL_AMOUNT%TYPE
313      ,LATE_INTEREST_HELD_UNTIL_DATE      OKL_HEADER_INTERFACE.LATE_INTEREST_HELD_UNTIL_DATE%TYPE
314      ,LATE_INTEREST_EXEMPT_FLAG          OKL_HEADER_INTERFACE.LATE_INTEREST_EXEMPT_FLAG%TYPE
315      ,LATE_INTEREST_PRODUCT_CODE         OKL_HEADER_INTERFACE.LATE_INTEREST_PRODUCT_CODE%TYPE
316      ,LATE_CHARGE_HELD_UNTIL_DATE        OKL_HEADER_INTERFACE.LATE_CHARGE_HELD_UNTIL_DATE%TYPE
317      ,LATE_CHARGE_PRODUCT_CODE           OKL_HEADER_INTERFACE.LATE_CHARGE_PRODUCT_CODE%TYPE
318      ,LATE_CHARGE_EXEMPT_FLAG            OKL_HEADER_INTERFACE.LATE_CHARGE_EXEMPT_FLAG%TYPE
319      ,VARIABLE_RATE                      OKL_HEADER_INTERFACE.VARIABLE_RATE%TYPE
320      ,CONVERT_TYPE                       OKL_HEADER_INTERFACE.CONVERT_TYPE%TYPE
321      ,CONVERSION_METHOD                  OKL_HEADER_INTERFACE.CONVERSION_METHOD%TYPE
322      ,DATE_OF_CONVERSION                 OKL_HEADER_INTERFACE.DATE_OF_CONVERSION%TYPE
323      ,CONVERT_BY_DATE                    OKL_HEADER_INTERFACE.CONVERT_BY_DATE%TYPE
324      ,VARIABLE_METHOD                    OKL_HEADER_INTERFACE.VARIABLE_METHOD%TYPE
325      ,INDEX_NAME                         OKL_HEADER_INTERFACE.INDEX_NAME%TYPE
326      ,BASE_RATE                          OKL_HEADER_INTERFACE.BASE_RATE%TYPE
327      ,ADDER                              OKL_HEADER_INTERFACE.ADDER%TYPE
328      ,MINIMUM_RATE                       OKL_HEADER_INTERFACE.MINIMUM_RATE%TYPE
329      ,MAXIMUM_RATE                       OKL_HEADER_INTERFACE.MAXIMUM_RATE%TYPE
330      ,TOLERANCE                          OKL_HEADER_INTERFACE.TOLERANCE%TYPE
331      ,ADJUSTMENT_FREQUENCY               OKL_HEADER_INTERFACE.ADJUSTMENT_FREQUENCY%TYPE
332      ,DAYS_IN_YEAR                       OKL_HEADER_INTERFACE.DAYS_IN_YEAR%TYPE
333      ,DAYS_IN_MONTH                      OKL_HEADER_INTERFACE.DAYS_IN_MONTH%TYPE
334      ,INTEREST_METHOD                    OKL_HEADER_INTERFACE.INTEREST_METHOD%TYPE
335      ,INTEREST_START_DATE                OKL_HEADER_INTERFACE.INTEREST_START_DATE%TYPE
336      ,METHOD_OF_CALCULATION              OKL_HEADER_INTERFACE.METHOD_OF_CALCULATION%TYPE
337      ,FORMULA_NAME                       OKL_HEADER_INTERFACE.FORMULA_NAME%TYPE
338      ,CAPITALIZE_FLAG                    OKL_HEADER_INTERFACE.CAPITALIZE_FLAG%TYPE
339      ,NON_NOTIFICATION_FLAG              OKL_HEADER_INTERFACE.NON_NOTIFICATION_FLAG%TYPE
340      ,TAX_WITHHOLDING_FLAG               OKL_HEADER_INTERFACE.TAX_WITHHOLDING_FLAG%TYPE
341      ,TAX_CALC_FORMULA_NAME              OKL_HEADER_INTERFACE.TAX_CALC_FORMULA_NAME%TYPE
342      ,TAX_OWNER                          OKL_HEADER_INTERFACE.TAX_OWNER%TYPE
343      ,FACTORING_DATE                     OKL_HEADER_INTERFACE.FACTORING_DATE%TYPE
344      ,FACTORING_PERCENTAGE               OKL_HEADER_INTERFACE.FACTORING_PERCENTAGE%TYPE
345      ,FACTORING_DISCOUNT_RATE            OKL_HEADER_INTERFACE.FACTORING_DISCOUNT_RATE%TYPE
346      ,EVERGREEN_ELIGIBLE_FLAG            OKL_HEADER_INTERFACE.EVERGREEN_ELIGIBLE_FLAG%TYPE
347      ,BILL_TO_ADDRESS_ID                 OKL_HEADER_INTERFACE.BILL_TO_ADDRESS_ID%TYPE
348      ,BILL_TO_ADDRESS                    OKL_HEADER_INTERFACE.BILL_TO_ADDRESS%TYPE
349      ,BANK_ACCOUNT_ID                    OKL_HEADER_INTERFACE.BANK_ACCOUNT_ID%TYPE
350      ,BANK_ACCOUNT_NUMBER                OKL_HEADER_INTERFACE.BANK_ACCOUNT_NUMBER%TYPE
351      ,REASON_FOR_INVOICE_REVIEW          OKL_HEADER_INTERFACE.REASON_FOR_INVOICE_REVIEW%TYPE
352      ,INVOICE_REVIEW_UNTIL_DATE          OKL_HEADER_INTERFACE.INVOICE_REVIEW_UNTIL_DATE%TYPE
353      ,INVOICE_FORMAT_ID                  OKL_HEADER_INTERFACE.INVOICE_FORMAT_ID%TYPE
354      ,INVOICE_FORMAT_CODE                OKL_HEADER_INTERFACE.INVOICE_FORMAT_CODE%TYPE
355      ,PRINT_LEAD_DAYS                    OKL_HEADER_INTERFACE.PRINT_LEAD_DAYS%TYPE --hariven bug 5359935
356      ,REVIEW_INVOICE_FLAG                OKL_HEADER_INTERFACE.REVIEW_INVOICE_FLAG%TYPE
357      ,PAYMENT_METHOD_ID                  OKL_HEADER_INTERFACE.PAYMENT_METHOD_ID%TYPE
358      ,PAYMENT_METHOD                     OKL_HEADER_INTERFACE.PAYMENT_METHOD%TYPE
359      ,AUTHORING_ORG_ID                   OKL_HEADER_INTERFACE.AUTHORING_ORG_ID%TYPE
360      ,INVENTORY_ORGANIZATION_ID          OKL_HEADER_INTERFACE.INVENTORY_ORGANIZATION_ID%TYPE
361      ,POLICY_NUMBER                      OKL_HEADER_INTERFACE.POLICY_NUMBER%TYPE
362      ,POLICY_EFFECTIVE_FROM              OKL_HEADER_INTERFACE.POLICY_EFFECTIVE_FROM%TYPE
363      ,POLICY_EFFECTIVE_TO                OKL_HEADER_INTERFACE.POLICY_EFFECTIVE_TO%TYPE
364      ,COVERED_AMOUNT                     OKL_HEADER_INTERFACE.COVERED_AMOUNT%TYPE
365      ,DEDUCTIBLE_AMOUNT                  OKL_HEADER_INTERFACE.DEDUCTIBLE_AMOUNT%TYPE
366      ,ENDORSEMENT                        OKL_HEADER_INTERFACE.ENDORSEMENT%TYPE
367      ,NAME_OF_INSURED                    OKL_HEADER_INTERFACE.NAME_OF_INSURED%TYPE
368      ,LESSOR_INSURED_FLAG                OKL_HEADER_INTERFACE.LESSOR_INSURED_FLAG%TYPE
369      ,LESSOR_PAYEE_FLAG                  OKL_HEADER_INTERFACE.LESSOR_PAYEE_FLAG%TYPE
370      ,INSURANCE_COMPANY_NAME             OKL_HEADER_INTERFACE.INSURANCE_COMPANY_NAME%TYPE
371      ,INSURANCE_COMPANY_ID               OKL_HEADER_INTERFACE.INSURANCE_COMPANY_ID%TYPE
372      ,INSURANCE_COMPANY_SITE_NAME        OKL_HEADER_INTERFACE.INSURANCE_COMPANY_SITE_NAME%TYPE
373      ,INSURANCE_COMPANY_SITE_ID          OKL_HEADER_INTERFACE.INSURANCE_COMPANY_SITE_ID%TYPE
374      ,AGENT_NAME                         OKL_HEADER_INTERFACE.AGENT_NAME%TYPE
375      ,AGENT_ID                           OKL_HEADER_INTERFACE.AGENT_ID%TYPE
376      ,AGENT_ADDRESS_SITE_NAME            OKL_HEADER_INTERFACE.AGENT_ADDRESS_SITE_NAME%TYPE
377      ,AGENT_ADDRESS_SITE_ID              OKL_HEADER_INTERFACE.AGENT_ADDRESS_SITE_ID%TYPE
378      ,PROOF_DUE_DATE                     OKL_HEADER_INTERFACE.PROOF_DUE_DATE%TYPE
379      ,PROOF_PROVIDED_DATE                OKL_HEADER_INTERFACE.PROOF_PROVIDED_DATE%TYPE
380      ,PREFUNDING_ELIGIBLE_FLAG           OKL_HEADER_INTERFACE.PREFUNDING_ELIGIBLE_FLAG%TYPE
381      ,PRIVATE_ACTIVITY_BOND_FLAG         OKL_HEADER_INTERFACE.PRIVATE_ACTIVITY_BOND_FLAG%TYPE
382      ,RVI_AUTO_CALCULATE_FLAG            OKL_HEADER_INTERFACE.RVI_AUTO_CALCULATE_FLAG%TYPE
383      ,RVI_GUARANTEED_AMOUNT              OKL_HEADER_INTERFACE.RVI_GUARANTEED_AMOUNT%TYPE
384      ,RVI_PRESENT_GUARANTEED_AMOUNT      OKL_HEADER_INTERFACE.RVI_PRESENT_GUARANTEED_AMOUNT%TYPE
385      ,RVI_PREMIUM_AMOUNT                 OKL_HEADER_INTERFACE.RVI_PREMIUM_AMOUNT%TYPE
386      ,RVI_RATE                           OKL_HEADER_INTERFACE.RVI_RATE%TYPE
387      ,FLOOR_PRICE_FORMULA                OKL_HEADER_INTERFACE.FLOOR_PRICE_FORMULA%TYPE
388      ,REMKT_SALE_PRICE_FORMULA           OKL_HEADER_INTERFACE.REMKT_SALE_PRICE_FORMULA%TYPE
389      ,REPURCHASE_QUOTE_OPTION            OKL_HEADER_INTERFACE.REPURCHASE_QUOTE_OPTION%TYPE
390      ,REPURCHASE_QUOTE_FORMULA           OKL_HEADER_INTERFACE.REPURCHASE_QUOTE_FORMULA%TYPE
391      ,SALE_PRICE_OPTION                  OKL_HEADER_INTERFACE.SALE_PRICE_OPTION%TYPE
392      ,SALE_PRICE_AMOUNT                  OKL_HEADER_INTERFACE.SALE_PRICE_AMOUNT%TYPE
393      ,SALE_PRICE_FORMULA                 OKL_HEADER_INTERFACE.SALE_PRICE_FORMULA%TYPE
394      ,SALE_PRICE_PRORATE                 OKL_HEADER_INTERFACE.SALE_PRICE_PRORATE%TYPE
395      ,DISCOUNT_RATE_OPTION               OKL_HEADER_INTERFACE.DISCOUNT_RATE_OPTION%TYPE
396      ,DISCOUNT_RATE_AMOUNT               OKL_HEADER_INTERFACE.DISCOUNT_RATE_AMOUNT%TYPE
397      ,DISCOUNT_RATE_FORMULA              OKL_HEADER_INTERFACE.DISCOUNT_RATE_FORMULA%TYPE
398      ,DISCOUNT_RATE_PRORATE              OKL_HEADER_INTERFACE.DISCOUNT_RATE_PRORATE%TYPE
399      ,QUOTE_FEE_OPTION                   OKL_HEADER_INTERFACE.QUOTE_FEE_OPTION%TYPE
400      ,QUOTE_FEE_AMOUNT                   OKL_HEADER_INTERFACE.QUOTE_FEE_AMOUNT%TYPE
401      ,QUOTE_FEE_FORMULA                  OKL_HEADER_INTERFACE.QUOTE_FEE_FORMULA%TYPE
402      ,QUOTE_FEE_PRORATE                  OKL_HEADER_INTERFACE.QUOTE_FEE_PRORATE%TYPE
403      ,ERT_PURCHASE_OPT                   OKL_HEADER_INTERFACE.ERT_PURCHASE_OPT%TYPE
404      ,ERT_PURCHASE_OPT_TYPE              OKL_HEADER_INTERFACE.ERT_PURCHASE_OPT_TYPE%TYPE
405      ,ERT_PURCHASE_OPT_AMOUNT            OKL_HEADER_INTERFACE.ERT_PURCHASE_OPT_AMOUNT%TYPE
406      ,ERT_PURCHASE_OPT_FORMULA           OKL_HEADER_INTERFACE.ERT_PURCHASE_OPT_FORMULA%TYPE
407      ,ERT_PURCHASE_OPT_PRORATE           OKL_HEADER_INTERFACE.ERT_PURCHASE_OPT_PRORATE%TYPE
408      ,ERT_PURCHASE_OPT_MAX_OPT           OKL_HEADER_INTERFACE.ERT_PURCHASE_OPT_MAX_OPT%TYPE
409      ,ERT_PURCHASE_OPT_MAX_AMT           OKL_HEADER_INTERFACE.ERT_PURCHASE_OPT_MAX_AMT%TYPE
410      ,ERT_PURCHASE_OPT_MAX_FORMULA       OKL_HEADER_INTERFACE.ERT_PURCHASE_OPT_MAX_FORMULA%TYPE
411      ,ERT_PURCHASE_OPT_MIN_OPT           OKL_HEADER_INTERFACE.ERT_PURCHASE_OPT_MIN_OPT%TYPE
412      ,ERT_PURCHASE_OPT_MIN_AMT           OKL_HEADER_INTERFACE.ERT_PURCHASE_OPT_MIN_AMT%TYPE
413      ,ERT_PURCHASE_OPT_MIN_FORMULA       OKL_HEADER_INTERFACE.ERT_PURCHASE_OPT_MIN_FORMULA%TYPE
414      ,EOT_PURCHASE_OPT                   OKL_HEADER_INTERFACE.EOT_PURCHASE_OPT%TYPE
415      ,EOT_PURCHASE_OPT_TYPE              OKL_HEADER_INTERFACE.EOT_PURCHASE_OPT_TYPE%TYPE
416      ,EOT_PURCHASE_OPT_AMOUNT            OKL_HEADER_INTERFACE.EOT_PURCHASE_OPT_AMOUNT%TYPE
417      ,EOT_PURCHASE_OPT_FORMULA           OKL_HEADER_INTERFACE.EOT_PURCHASE_OPT_FORMULA%TYPE
418      ,EOT_PURCHASE_OPT_PRORATE           OKL_HEADER_INTERFACE.EOT_PURCHASE_OPT_PRORATE%TYPE
419      ,EOT_PURCHASE_OPT_MAX_OPT           OKL_HEADER_INTERFACE.EOT_PURCHASE_OPT_MAX_OPT%TYPE
420      ,EOT_PURCHASE_OPT_MAX_AMT           OKL_HEADER_INTERFACE.EOT_PURCHASE_OPT_MAX_AMT%TYPE
421      ,EOT_PURCHASE_OPT_MAX_FORMULA       OKL_HEADER_INTERFACE.EOT_PURCHASE_OPT_MAX_FORMULA%TYPE
422      ,EOT_PURCHASE_OPT_MIN_OPT           OKL_HEADER_INTERFACE.EOT_PURCHASE_OPT_MIN_OPT%TYPE
423      ,EOT_PURCHASE_OPT_MIN_AMT           OKL_HEADER_INTERFACE.EOT_PURCHASE_OPT_MIN_AMT%TYPE
424      ,EOT_PURCHASE_OPT_MIN_FORMULA       OKL_HEADER_INTERFACE.EOT_PURCHASE_OPT_MIN_FORMULA%TYPE
425      ,TQP_ERL_TERMINATION_ALWD_FLAG      OKL_HEADER_INTERFACE.TQP_ERL_TERMINATION_ALWD_FLAG%TYPE
426      ,TQP_PRT_TERMINATION_ALWD_FLAG      OKL_HEADER_INTERFACE.TQP_PRT_TERMINATION_ALWD_FLAG%TYPE
427      ,QUOTE_EFFECTIVE_DAYS               OKL_HEADER_INTERFACE.QUOTE_EFFECTIVE_DAYS%TYPE
428      ,QUOTE_EFF_MAX_DAYS                 OKL_HEADER_INTERFACE.QUOTE_EFF_MAX_DAYS%TYPE
429      ,EOT_TOLERANCE_DAYS                 OKL_HEADER_INTERFACE.EOT_TOLERANCE_DAYS%TYPE
430      ,PRT_TERMINATION_APPROVAL_REQ       OKL_HEADER_INTERFACE.PRT_TERMINATION_APPROVAL_REQ%TYPE
431      ,PRT_TERMINATION_ALLOWED_FLAG       OKL_HEADER_INTERFACE.PRT_TERMINATION_ALLOWED_FLAG%TYPE
432      ,GAIN_LOSS_APPROVAL_REQ             OKL_HEADER_INTERFACE.GAIN_LOSS_APPROVAL_REQ%TYPE
433      ,GAIN_LOSS_NET_QUOTE_OPT            OKL_HEADER_INTERFACE.GAIN_LOSS_NET_QUOTE_OPT%TYPE
434      ,GAIN_LOSS_NET_QUOTE_AMT            OKL_HEADER_INTERFACE.GAIN_LOSS_NET_QUOTE_AMT%TYPE
435      ,GAIN_LOSS_NET_QUOTE_FORMULA        OKL_HEADER_INTERFACE.GAIN_LOSS_NET_QUOTE_FORMULA%TYPE
436      ,GAIN_LOSS_TOLERANCE_ALLOWED        OKL_HEADER_INTERFACE.GAIN_LOSS_TOLERANCE_ALLOWED%TYPE
437      ,QUOTE_RCPT_CONTRACT_ROLE           OKL_HEADER_INTERFACE.QUOTE_RCPT_CONTRACT_ROLE%TYPE
438      ,QUOTE_APPROVER_CONTRACT_ROLE       OKL_HEADER_INTERFACE.QUOTE_APPROVER_CONTRACT_ROLE%TYPE
439      ,QUOTE_CRTSY_COPY_CONTRACT_ROLE     OKL_HEADER_INTERFACE.QUOTE_CRTSY_COPY_CONTRACT_ROLE%TYPE
440      ,ERT_QUOTE_CALC_TERM_OPTION         OKL_HEADER_INTERFACE.ERT_QUOTE_CALC_TERM_OPTION%TYPE
441      ,ERT_QUOTE_CALC_TERM_FORMULA        OKL_HEADER_INTERFACE.ERT_QUOTE_CALC_TERM_FORMULA%TYPE
442      ,ERT_CONTRACT_OBLIG_OPT             OKL_HEADER_INTERFACE.ERT_CONTRACT_OBLIG_OPT%TYPE
443      ,ERT_CONTRACT_OBLIG_AMOUNT          OKL_HEADER_INTERFACE.ERT_CONTRACT_OBLIG_AMOUNT%TYPE
444      ,ERT_CONTRACT_OBLIG_FORMULA         OKL_HEADER_INTERFACE.ERT_CONTRACT_OBLIG_FORMULA%TYPE
445      ,ERT_CONTRACT_OBLIG_PRORATE         OKL_HEADER_INTERFACE.ERT_CONTRACT_OBLIG_PRORATE%TYPE
446      ,ERT_DISC_RATE_OPT                  OKL_HEADER_INTERFACE.ERT_DISC_RATE_OPT%TYPE
447      ,ERT_DISC_RATE_AMOUNT               OKL_HEADER_INTERFACE.ERT_DISC_RATE_AMOUNT%TYPE
448      ,ERT_DISC_RATE_FORMULA              OKL_HEADER_INTERFACE.ERT_DISC_RATE_FORMULA%TYPE
449      ,ERT_DISC_RATE_PRORATE              OKL_HEADER_INTERFACE.ERT_DISC_RATE_PRORATE%TYPE
450      ,ERT_QUOTE_FEE_OPT                  OKL_HEADER_INTERFACE.ERT_QUOTE_FEE_OPT%TYPE
451      ,ERT_QUOTE_FEE_AMOUNT               OKL_HEADER_INTERFACE.ERT_QUOTE_FEE_AMOUNT%TYPE
452      ,ERT_QUOTE_FEE_FORMULA              OKL_HEADER_INTERFACE.ERT_QUOTE_FEE_FORMULA%TYPE
453      ,ERT_QUOTE_FEE_PRORATE              OKL_HEADER_INTERFACE.ERT_QUOTE_FEE_PRORATE%TYPE
454      ,ERT_RETURN_FEE_OPTION              OKL_HEADER_INTERFACE.ERT_RETURN_FEE_OPTION%TYPE
455      ,ERT_RETURN_FEE_AMOUNT              OKL_HEADER_INTERFACE.ERT_RETURN_FEE_AMOUNT%TYPE
456      ,ERT_RETURN_FEE_FORMULA             OKL_HEADER_INTERFACE.ERT_RETURN_FEE_FORMULA%TYPE
457      ,ERT_RETURN_FEE_PRORATE             OKL_HEADER_INTERFACE.ERT_RETURN_FEE_PRORATE%TYPE
458      ,ERT_ROLL_INCTV_OPTION              OKL_HEADER_INTERFACE.ERT_ROLL_INCTV_OPTION%TYPE
459      ,ERT_ROLL_INCTV_AMOUNT              OKL_HEADER_INTERFACE.ERT_ROLL_INCTV_AMOUNT%TYPE
460      ,ERT_ROLL_INCTV_FORMULA             OKL_HEADER_INTERFACE.ERT_ROLL_INCTV_FORMULA%TYPE
461      ,ERT_ROLL_INCTV_PRORATE             OKL_HEADER_INTERFACE.ERT_ROLL_INCTV_PRORATE%TYPE
462      ,ERT_SECU_DEP_DISPO_OPTION          OKL_HEADER_INTERFACE.ERT_SECU_DEP_DISPO_OPTION%TYPE
463      ,ERT_SECU_DEP_DISPO_AMOUNT          OKL_HEADER_INTERFACE.ERT_SECU_DEP_DISPO_AMOUNT%TYPE
464      ,ERT_SECU_DEP_DISPO_FORMULA         OKL_HEADER_INTERFACE.ERT_SECU_DEP_DISPO_FORMULA%TYPE
465      ,ERT_SECU_DEP_DISPO_PRORATE         OKL_HEADER_INTERFACE.ERT_SECU_DEP_DISPO_PRORATE%TYPE
466      ,ERT_TERM_PENALTY_OPTION            OKL_HEADER_INTERFACE.ERT_TERM_PENALTY_OPTION%TYPE
467      ,ERT_TERM_PENALTY_AMOUNT            OKL_HEADER_INTERFACE.ERT_TERM_PENALTY_AMOUNT%TYPE
468      ,ERT_TERM_PENALTY_FORMULA           OKL_HEADER_INTERFACE.ERT_TERM_PENALTY_FORMULA%TYPE
469      ,ERT_TERM_PENALTY_PRORATE           OKL_HEADER_INTERFACE.ERT_TERM_PENALTY_PRORATE%TYPE
470      ,ERT_TERM_PENALTY_CAP_OPTION        OKL_HEADER_INTERFACE.ERT_TERM_PENALTY_CAP_OPTION%TYPE
471      ,ERT_TERM_PENALTY_CAP_AMOUNT        OKL_HEADER_INTERFACE.ERT_TERM_PENALTY_CAP_AMOUNT%TYPE
472      ,ERT_TERM_PENALTY_CAP_FORMULA       OKL_HEADER_INTERFACE.ERT_TERM_PENALTY_CAP_FORMULA%TYPE
473      ,ERT_EST_PROP_TAX_OPTION            OKL_HEADER_INTERFACE.ERT_EST_PROP_TAX_OPTION%TYPE
474      ,ERT_EST_PROP_TAX_AMOUNT            OKL_HEADER_INTERFACE.ERT_EST_PROP_TAX_AMOUNT%TYPE
475      ,ERT_EST_PROP_TAX_FORMULA           OKL_HEADER_INTERFACE.ERT_EST_PROP_TAX_FORMULA%TYPE
476      ,ERT_EST_PROP_TAX_PRORATE           OKL_HEADER_INTERFACE.ERT_EST_PROP_TAX_PRORATE%TYPE
477      ,ERT_CONTR_FEES_OPTION              OKL_HEADER_INTERFACE.ERT_CONTR_FEES_OPTION%TYPE
478      ,ERT_OUTSTND_BAL_OPTION             OKL_HEADER_INTERFACE.ERT_OUTSTND_BAL_OPTION%TYPE
479      ,ERT_SERV_MANT_OPTION               OKL_HEADER_INTERFACE.ERT_SERV_MANT_OPTION%TYPE
480      ,EOT_QUOTE_CALC_TERM_OPTION         OKL_HEADER_INTERFACE.EOT_QUOTE_CALC_TERM_OPTION%TYPE
481      ,EOT_QUOTE_CALC_TERM_FORMULA        OKL_HEADER_INTERFACE.EOT_QUOTE_CALC_TERM_FORMULA%TYPE
482      ,EOT_CONTRACT_OBLIG_OPT             OKL_HEADER_INTERFACE.EOT_CONTRACT_OBLIG_OPT%TYPE
483      ,EOT_CONTRACT_OBLIG_AMOUNT          OKL_HEADER_INTERFACE.EOT_CONTRACT_OBLIG_AMOUNT%TYPE
484      ,EOT_CONTRACT_OBLIG_FORMULA         OKL_HEADER_INTERFACE.EOT_CONTRACT_OBLIG_FORMULA%TYPE
485      ,EOT_CONTRACT_OBLIG_PRORATE         OKL_HEADER_INTERFACE.EOT_CONTRACT_OBLIG_PRORATE%TYPE
486      ,EOT_DISC_RATE_OPT                  OKL_HEADER_INTERFACE.EOT_DISC_RATE_OPT%TYPE
487      ,EOT_DISC_RATE_AMOUNT               OKL_HEADER_INTERFACE.EOT_DISC_RATE_AMOUNT%TYPE
488      ,EOT_DISC_RATE_FORMULA              OKL_HEADER_INTERFACE.EOT_DISC_RATE_FORMULA%TYPE
489      ,EOT_DISC_RATE_PRORATE              OKL_HEADER_INTERFACE.EOT_DISC_RATE_PRORATE%TYPE
490      ,EOT_QUOTE_FEE_OPT                  OKL_HEADER_INTERFACE.EOT_QUOTE_FEE_OPT%TYPE
491      ,EOT_QUOTE_FEE_AMOUNT               OKL_HEADER_INTERFACE.EOT_QUOTE_FEE_AMOUNT%TYPE
492      ,EOT_QUOTE_FEE_FORMULA              OKL_HEADER_INTERFACE.EOT_QUOTE_FEE_FORMULA%TYPE
493      ,EOT_QUOTE_FEE_PRORATE              OKL_HEADER_INTERFACE.EOT_QUOTE_FEE_PRORATE%TYPE
494      ,EOT_RETURN_FEE_OPTION              OKL_HEADER_INTERFACE.EOT_RETURN_FEE_OPTION%TYPE
495      ,EOT_RETURN_FEE_AMOUNT              OKL_HEADER_INTERFACE.EOT_RETURN_FEE_AMOUNT%TYPE
496      ,EOT_RETURN_FEE_FORMULA             OKL_HEADER_INTERFACE.EOT_RETURN_FEE_FORMULA%TYPE
497      ,EOT_RETURN_FEE_PRORATE             OKL_HEADER_INTERFACE.EOT_RETURN_FEE_PRORATE%TYPE
498      ,EOT_ROLL_INCTV_OPTION              OKL_HEADER_INTERFACE.EOT_ROLL_INCTV_OPTION%TYPE
499      ,EOT_ROLL_INCTV_AMOUNT              OKL_HEADER_INTERFACE.EOT_ROLL_INCTV_AMOUNT%TYPE
500      ,EOT_ROLL_INCTV_FORMULA             OKL_HEADER_INTERFACE.EOT_ROLL_INCTV_FORMULA%TYPE
501      ,EOT_ROLL_INCTV_PRORATE             OKL_HEADER_INTERFACE.EOT_ROLL_INCTV_PRORATE%TYPE
502      ,EOT_SECU_DEP_DISPO_OPTION          OKL_HEADER_INTERFACE.EOT_SECU_DEP_DISPO_OPTION%TYPE
503      ,EOT_SECU_DEP_DISPO_AMOUNT          OKL_HEADER_INTERFACE.EOT_SECU_DEP_DISPO_AMOUNT%TYPE
504      ,EOT_SECU_DEP_DISPO_FORMULA         OKL_HEADER_INTERFACE.EOT_SECU_DEP_DISPO_FORMULA%TYPE
505      ,EOT_SECU_DEP_DISPO_PRORATE         OKL_HEADER_INTERFACE.EOT_SECU_DEP_DISPO_PRORATE%TYPE
506      ,EOT_TERM_PENALTY_OPTION            OKL_HEADER_INTERFACE.EOT_TERM_PENALTY_OPTION%TYPE
507      ,EOT_TERM_PENALTY_AMOUNT            OKL_HEADER_INTERFACE.EOT_TERM_PENALTY_AMOUNT%TYPE
508      ,EOT_TERM_PENALTY_FORMULA           OKL_HEADER_INTERFACE.EOT_TERM_PENALTY_FORMULA%TYPE
509      ,EOT_TERM_PENALTY_PRORATE           OKL_HEADER_INTERFACE.EOT_TERM_PENALTY_PRORATE%TYPE
510      ,EOT_TERM_PENALTY_CAP_OPTION        OKL_HEADER_INTERFACE.EOT_TERM_PENALTY_CAP_OPTION%TYPE
511      ,EOT_TERM_PENALTY_CAP_AMOUNT        OKL_HEADER_INTERFACE.EOT_TERM_PENALTY_CAP_AMOUNT%TYPE
512      ,EOT_TERM_PENALTY_CAP_FORMULA       OKL_HEADER_INTERFACE.EOT_TERM_PENALTY_CAP_FORMULA%TYPE
513      ,EOT_EST_PROP_TAX_OPTION            OKL_HEADER_INTERFACE.EOT_EST_PROP_TAX_OPTION%TYPE
514      ,EOT_EST_PROP_TAX_AMOUNT            OKL_HEADER_INTERFACE.EOT_EST_PROP_TAX_AMOUNT%TYPE
515      ,EOT_EST_PROP_TAX_FORMULA           OKL_HEADER_INTERFACE.EOT_EST_PROP_TAX_FORMULA%TYPE
516      ,EOT_EST_PROP_TAX_PRORATE           OKL_HEADER_INTERFACE.EOT_EST_PROP_TAX_PRORATE%TYPE
517      ,EOT_CONTR_FEES_OPTION              OKL_HEADER_INTERFACE.EOT_CONTR_FEES_OPTION%TYPE
518      ,EOT_OUTSTND_BAL_OPTION             OKL_HEADER_INTERFACE.EOT_OUTSTND_BAL_OPTION%TYPE
519      ,EOT_SERV_MANT_OPTION               OKL_HEADER_INTERFACE.EOT_SERV_MANT_OPTION%TYPE
520      ,EVERGREEN_PASSTHRU_FEES            OKL_HEADER_INTERFACE.EVERGREEN_PASSTHRU_FEES%TYPE
521      ,EVERGREEN_PASSTHRU_PERCENT         OKL_HEADER_INTERFACE.EVERGREEN_PASSTHRU_PERCENT%TYPE
522      ,LIEN_TYPE                          OKL_HEADER_INTERFACE.LIEN_TYPE%TYPE
523      ,FILING_NUMBER                      OKL_HEADER_INTERFACE.FILING_NUMBER%TYPE
524      ,FILING_DATE                        OKL_HEADER_INTERFACE.FILING_DATE%TYPE
525      ,FILING_STATUS                      OKL_HEADER_INTERFACE.FILING_STATUS%TYPE
526      ,LIEN_HOLDER_NAME                   OKL_HEADER_INTERFACE.LIEN_HOLDER_NAME%TYPE
527      ,LIEN_HOLDER_ID                     OKL_HEADER_INTERFACE.LIEN_HOLDER_ID%TYPE
528      ,JURISDICTION                       OKL_HEADER_INTERFACE.JURISDICTION%TYPE
529      ,SUB_JURISDICTION                   OKL_HEADER_INTERFACE.SUB_JURISDICTION%TYPE
530      ,LIEN_EXPIRATION_DATE               OKL_HEADER_INTERFACE.LIEN_EXPIRATION_DATE%TYPE
531      ,LIEN_CONTINUATION_NUMBER           OKL_HEADER_INTERFACE.LIEN_CONTINUATION_NUMBER%TYPE
532      ,LIEN_CONTINUATION_DATE             OKL_HEADER_INTERFACE.LIEN_CONTINUATION_DATE%TYPE
533      ,TITLE_TYPE                         OKL_HEADER_INTERFACE.TITLE_TYPE%TYPE
534      ,TITLE_ISSUER_NAME                  OKL_HEADER_INTERFACE.TITLE_ISSUER_NAME%TYPE
535      ,TITLE_ISSUER_ID                    OKL_HEADER_INTERFACE.TITLE_ISSUER_ID%TYPE
536      ,TITLE_DATE                         OKL_HEADER_INTERFACE.TITLE_DATE%TYPE
537      ,TITLE_NUMBER                       OKL_HEADER_INTERFACE.TITLE_NUMBER%TYPE
538      ,REGISTRATION_NUMBER                OKL_HEADER_INTERFACE.REGISTRATION_NUMBER%TYPE
539      ,LOCATION                           OKL_HEADER_INTERFACE.LOCATION%TYPE
540      ,TITLE_CUSTODIAN_NAME               OKL_HEADER_INTERFACE.TITLE_CUSTODIAN_NAME%TYPE
541      ,TITLE_CUSTODIAN_ID                 OKL_HEADER_INTERFACE.TITLE_CUSTODIAN_ID%TYPE
542      ,PAYEE_SITE                         OKL_HEADER_INTERFACE.PAYEE_SITE%TYPE
543      ,REGISTRATION_LOCATION              OKL_HEADER_INTERFACE.REGISTRATION_LOCATION%TYPE
544      ,REG_EXPIRATION_DATE                OKL_HEADER_INTERFACE.REG_EXPIRATION_DATE%TYPE
545      ,CREDIT_LINE_ID                     OKL_HEADER_INTERFACE.CREDIT_LINE_ID%TYPE
546      ,CREDIT_LINE_NUMBER                 OKL_HEADER_INTERFACE.CREDIT_LINE_NUMBER%TYPE
547      ,PRTFL_APPROVAL_REQ                 OKL_HEADER_INTERFACE.PRTFL_APPROVAL_REQ%TYPE
548      ,PRTFL_ASSGN_GROUP                  OKL_HEADER_INTERFACE.PRTFL_ASSGN_GROUP%TYPE
549      ,PRTFL_BUDGET_AMT_OPT               OKL_HEADER_INTERFACE.PRTFL_ASSGN_GROUP%TYPE
550      ,PRTFL_BUDGET_FIXED_AMT             OKL_HEADER_INTERFACE.PRTFL_BUDGET_FIXED_AMT%TYPE
551      ,PRTFL_BUDGET_AMT_FORMULA           OKL_HEADER_INTERFACE.PRTFL_BUDGET_AMT_FORMULA%TYPE
552      ,PRTFL_DAYS_FROM_CON_EXPR           OKL_HEADER_INTERFACE.PRTFL_DAYS_FROM_CON_EXPR%TYPE
553      ,PRTFL_STRATEGY                     OKL_HEADER_INTERFACE.PRTFL_STRATEGY%TYPE
554      ,PROP_TAX_APPLICABLE                OKL_HEADER_INTERFACE.PROP_TAX_APPLICABLE%TYPE
555      ,PROP_TAX_LEASE_REP                 OKL_HEADER_INTERFACE.PROP_TAX_LEASE_REP%TYPE
556      ,MEX_TAX_SUB_BASIC_WTHLD            OKL_HEADER_INTERFACE.MEX_TAX_SUB_BASIC_WTHLD%TYPE
557      ,MEX_TAX_CALC_FORMULA               OKL_HEADER_INTERFACE.MEX_TAX_CALC_FORMULA%TYPE
558      ,AUS_TAX_STAMP_DUTY                 OKL_HEADER_INTERFACE.AUS_TAX_STAMP_DUTY%TYPE
559      ,CURRENCY_CONVERSION_TYPE           OKL_HEADER_INTERFACE.CURRENCY_CONVERSION_TYPE%TYPE
560      ,CURRENCY_CONVERSION_RATE           OKL_HEADER_INTERFACE.CURRENCY_CONVERSION_RATE%TYPE
561      ,CURRENCY_CONVERSION_DATE           OKL_HEADER_INTERFACE.CURRENCY_CONVERSION_DATE%TYPE
562      ,ASSIGNABLE_YN                      OKL_HEADER_INTERFACE.ASSIGNABLE_YN%TYPE
563      ,LESSEE_VENDOR_ID                   OKL_HEADER_INTERFACE.LESSEE_VENDOR_ID%TYPE
564      ,LESSEE_VENDOR_NAME                 OKL_HEADER_INTERFACE.LESSEE_VENDOR_NAME%TYPE
565      ,LESSEE_VENDOR_SITE_ID              OKL_HEADER_INTERFACE.LESSEE_VENDOR_SITE_ID%TYPE
566      ,LESSEE_VENDOR_SITE_CODE            OKL_HEADER_INTERFACE.LESSEE_VENDOR_SITE_CODE%TYPE
567 -- cklee start 02/23/2004
568      ,INSURANCE_COMPANY_NUMBER           OKL_HEADER_INTERFACE.INSURANCE_COMPANY_NUMBER%TYPE
569      ,INSURANCE_COMPANY_SITE_NUMBER      OKL_HEADER_INTERFACE.INSURANCE_COMPANY_SITE_NUMBER%TYPE
570      ,AGENT_NUMBER                       OKL_HEADER_INTERFACE.AGENT_NUMBER%TYPE
571      ,AGENT_ADDRESS_SITE_NUMBER          OKL_HEADER_INTERFACE.AGENT_ADDRESS_SITE_NUMBER%TYPE
572      --,RELEASED_ASSET_YN                  OKL_HEADER_INTERFACE.RELEASED_ASSET_YN%TYPE
573 -- cklee start 02/23/2004
574      ,CASH_APPL_RULE_NAME                OKL_HEADER_INTERFACE.CASH_APPL_RULE_NAME%TYPE
575 -- Added by rravikir (Fix for Bug 3947959) 10/07/2004
576      ,PROP_TAX_BILL_METHOD               OKL_HEADER_INTERFACE.PROP_TAX_BILL_METHOD%TYPE
577 -- End
578   -- AKP new rules 4067094
579      ,GAIN_LOSS_TOLRNC_ALLWD_AMT         OKL_HEADER_INTERFACE.GAIN_LOSS_TOLRNC_ALLWD_AMT%TYPE
580      ,GAIN_LOSS_TOLRNC_ALLWD_FRML        OKL_HEADER_INTERFACE.GAIN_LOSS_TOLRNC_ALLWD_FRML%TYPE
581      ,GAIN_LOSS_TOLRNC_BASIS             OKL_HEADER_INTERFACE.GAIN_LOSS_TOLRNC_BASIS%TYPE
582      ,GAIN_LOSS_APPRV_PROC_FRML          OKL_HEADER_INTERFACE.GAIN_LOSS_APPRV_PROC_FRML%TYPE
583      ,ERT_ABSORBED_FEE_FRML              OKL_HEADER_INTERFACE.ERT_ABSORBED_FEE_FRML%TYPE
584      ,ERT_EXPENSE_FEE_FRML               OKL_HEADER_INTERFACE.ERT_EXPENSE_FEE_FRML%TYPE
585      ,ERT_FINANCED_FEE_FRML              OKL_HEADER_INTERFACE.ERT_FINANCED_FEE_FRML%TYPE
586      ,ERT_GENERAL_FEE_FRML               OKL_HEADER_INTERFACE.ERT_GENERAL_FEE_FRML%TYPE
587      ,ERT_INCOME_FEE_FRML                OKL_HEADER_INTERFACE.ERT_INCOME_FEE_FRML%TYPE
588      ,ERT_MISC_FEE_FRML                  OKL_HEADER_INTERFACE.ERT_MISC_FEE_FRML%TYPE
589      ,ERT_PASSTHRU_FEE_FRML              OKL_HEADER_INTERFACE.ERT_PASSTHRU_FEE_FRML%TYPE
590      ,ERT_ROLLOVER_FEE_FRML              OKL_HEADER_INTERFACE.ERT_ROLLOVER_FEE_FRML%TYPE
591      ,EOT_ABSORBED_FEE_FRML              OKL_HEADER_INTERFACE.EOT_ABSORBED_FEE_FRML%TYPE
592      ,EOT_EXPENSE_FEE_FRML               OKL_HEADER_INTERFACE.EOT_EXPENSE_FEE_FRML%TYPE
593      ,EOT_FINANCED_FEE_FRML              OKL_HEADER_INTERFACE.EOT_FINANCED_FEE_FRML%TYPE
594      ,EOT_GENERAL_FEE_FRML               OKL_HEADER_INTERFACE.EOT_GENERAL_FEE_FRML%TYPE
595      ,EOT_INCOME_FEE_FRML                OKL_HEADER_INTERFACE.EOT_INCOME_FEE_FRML%TYPE
596      ,EOT_MISC_FEE_FRML                  OKL_HEADER_INTERFACE.EOT_MISC_FEE_FRML%TYPE
597      ,EOT_PASSTHRU_FEE_FRML              OKL_HEADER_INTERFACE.EOT_PASSTHRU_FEE_FRML%TYPE
598      ,EOT_ROLLOVER_FEE_FRML              OKL_HEADER_INTERFACE.EOT_ROLLOVER_FEE_FRML%TYPE
599   -- AKP new rules 4067094
600      ,DELETE_BEFORE_IMPORT_YN            OKL_HEADER_INTERFACE.DELETE_BEFORE_IMPORT_YN%TYPE /* akp_delete */
601      ,ST_UPDATE_LINES_FROM_CONTRACT      OKL_HEADER_INTERFACE.ST_UPDATE_LINES_FROM_CONTRACT%TYPE
602      ,ST_INTEREST_DISCLOSED              OKL_HEADER_INTERFACE.ST_INTEREST_DISCLOSED%TYPE
603      ,ST_TRANSFER_OF_TITLE               OKL_HEADER_INTERFACE.ST_TRANSFER_OF_TITLE%TYPE
604      ,ST_SALE_AND_LEASE_BACK             OKL_HEADER_INTERFACE.ST_SALE_AND_LEASE_BACK%TYPE
605      ,ST_PURCHASE_OF_LEASE               OKL_HEADER_INTERFACE.ST_PURCHASE_OF_LEASE%TYPE
606      ,ST_EQUIPMENT_USAGE                 OKL_HEADER_INTERFACE.ST_EQUIPMENT_USAGE%TYPE
607      ,ST_EQUIPMENT_AGE                   OKL_HEADER_INTERFACE.ST_EQUIPMENT_AGE%TYPE
608      ,ST_ASSET_UPFRONT_TAX               OKL_HEADER_INTERFACE.ST_ASSET_UPFRONT_TAX%TYPE
609      ,ST_BILL_STREAM_TYPE_CODE           OKL_HEADER_INTERFACE.ST_BILL_STREAM_TYPE_CODE%TYPE
610      ,ST_BILL_STREAM_PURPOSE_CODE        OKL_HEADER_INTERFACE.ST_BILL_STREAM_PURPOSE_CODE%TYPE
611      ,ST_FIN_STREAM_TYPE_CODE            OKL_HEADER_INTERFACE.ST_FIN_STREAM_TYPE_CODE%TYPE
612      ,ST_FIN_STREAM_PURPOSE_CODE         OKL_HEADER_INTERFACE.ST_FIN_STREAM_PURPOSE_CODE%TYPE
613      ,ST_CAP_STREAM_TYPE_CODE            OKL_HEADER_INTERFACE.ST_CAP_STREAM_TYPE_CODE%TYPE
614      ,ST_CAP_STREAM_PURPOSE_CODE         OKL_HEADER_INTERFACE.ST_CAP_STREAM_PURPOSE_CODE%TYPE
615      -- AKP: Vartiable Rate
616      ,INT_RATE_EFFECTIVE_FROM_DATE         OKL_HEADER_INTERFACE.INT_RATE_EFFECTIVE_FROM_DATE%TYPE
617      ,INT_RATE_EFFECTIVE_TO_DATE           OKL_HEADER_INTERFACE.INT_RATE_EFFECTIVE_TO_DATE%TYPE
618      ,INT_RATE_PRINC_BASIS_CODE        OKL_HEADER_INTERFACE.INT_RATE_PRINC_BASIS_CODE%TYPE
619      ,INT_RATE_BASIS_CODE         OKL_HEADER_INTERFACE.INT_RATE_BASIS_CODE%TYPE
620      ,INT_RATE_DELAY_CODE             OKL_HEADER_INTERFACE.INT_RATE_DELAY_CODE%TYPE
621      ,INT_RATE_DELAY_FREQ        OKL_HEADER_INTERFACE.INT_RATE_DELAY_FREQ%TYPE
622      ,INT_RATE_CMPND_FREQ_CODE  OKL_HEADER_INTERFACE.INT_RATE_CMPND_FREQ_CODE%TYPE
623      ,INT_RATE_CATCHUP_BASIS_CODE          OKL_HEADER_INTERFACE.INT_RATE_CATCHUP_BASIS_CODE%TYPE
624      ,INT_RATE_CATCHUP_START_DATE          OKL_HEADER_INTERFACE.INT_RATE_CATCHUP_START_DATE%TYPE
625      ,INT_RATE_CAT_STLMNT_CODE     OKL_HEADER_INTERFACE.INT_RATE_CAT_STLMNT_CODE%TYPE
626      ,INT_RATE_CHANGE_START_DATE      OKL_HEADER_INTERFACE.INT_RATE_CHANGE_START_DATE%TYPE
627      ,INT_RATE_CHANGE_FREQ_CODE  OKL_HEADER_INTERFACE.INT_RATE_CHANGE_FREQ_CODE%TYPE
628      ,INT_RATE_CHANGE_VALUE           OKL_HEADER_INTERFACE.INT_RATE_CHANGE_VALUE%TYPE
629      ,INT_RATE_CON_OPTION_CODE      OKL_HEADER_INTERFACE.INT_RATE_CON_OPTION_CODE%TYPE
630      ,INT_RATE_NEXT_CON_DATE        OKL_HEADER_INTERFACE.INT_RATE_NEXT_CON_DATE%TYPE
631      --,INT_RATE_EFFECTIVE_FROM_DATE_CON     OKL_HEADER_INTERFACE.INT_RATE_EFFECTIVE_FROM_DATE_CON%TYPE
632      --,INT_RATE_EFFECTIVE_TO_DATE_CON       OKL_HEADER_INTERFACE.INT_RATE_EFFECTIVE_TO_DATE_CON%TYPE
633      ,INT_RATE_CON_INDEX_NAME       OKL_HEADER_INTERFACE.INT_RATE_CON_INDEX_NAME%TYPE
634      ,INT_RATE_CON_BASE_RATE               OKL_HEADER_INTERFACE.INT_RATE_CON_BASE_RATE%TYPE
635      ,INT_RATE_CON_START_DATE     OKL_HEADER_INTERFACE.INT_RATE_CON_START_DATE%TYPE
636      ,INT_RATE_CON_ADDER_RATE              OKL_HEADER_INTERFACE.INT_RATE_CON_ADDER_RATE%TYPE
637      ,INT_RATE_CON_MAXIMUM_RATE            OKL_HEADER_INTERFACE.INT_RATE_CON_MAXIMUM_RATE%TYPE
638      ,INT_RATE_CON_MINIMUM_RATE            OKL_HEADER_INTERFACE.INT_RATE_CON_MINIMUM_RATE%TYPE
639      ,INT_RATE_CON_PRC_BAS_CODE    OKL_HEADER_INTERFACE.INT_RATE_CON_PRC_BAS_CODE%TYPE
640      ,INT_RATE_CON_DAY_MTH_CODE    OKL_HEADER_INTERFACE.INT_RATE_CON_DAY_MTH_CODE%TYPE
641      ,INT_RATE_CON_DAY_YER_CODE    OKL_HEADER_INTERFACE.INT_RATE_CON_DAY_YER_CODE%TYPE
642      ,INT_RATE_CON_INT_BAS_CODE     OKL_HEADER_INTERFACE.INT_RATE_CON_INT_BAS_CODE%TYPE
643      ,INT_RATE_CON_RATE_DELAY_CODE         OKL_HEADER_INTERFACE.INT_RATE_CON_RATE_DELAY_CODE%TYPE
644      ,INT_RATE_CON_RATE_DELAY_FREQ    OKL_HEADER_INTERFACE.INT_RATE_CON_RATE_DELAY_FREQ%TYPE
645      ,INT_RATE_CON_CMPND_FREQ_CODE  OKL_HEADER_INTERFACE.INT_RATE_CON_CMPND_FREQ_CODE%TYPE
646      ,INT_RATE_CON_FORMULA_NAME  OKL_HEADER_INTERFACE.INT_RATE_CON_FORMULA_NAME%TYPE
647      ,INT_RATE_CON_CAT_BAS_CODE      OKL_HEADER_INTERFACE.INT_RATE_CON_CAT_BAS_CODE%TYPE
648      ,INT_RATE_CON_CAT_START_DATE    OKL_HEADER_INTERFACE.INT_RATE_CON_CAT_START_DATE%TYPE
649      ,INT_RATE_CON_CAT_STLMNT_CODE    OKL_HEADER_INTERFACE.INT_RATE_CON_CAT_STLMNT_CODE%TYPE
650      ,INT_RATE_CON_CHG_START_DATE    OKL_HEADER_INTERFACE.INT_RATE_CON_CHG_START_DATE%TYPE
651      ,INT_RATE_CON_CHG_FREQ_CODE    OKL_HEADER_INTERFACE.INT_RATE_CON_CHG_FREQ_CODE%TYPE
652      ,INT_RATE_CON_CHG_VALUE    OKL_HEADER_INTERFACE.INT_RATE_CON_CHG_VALUE%TYPE
653      ,INT_RATE_CAT_FREQ_CODE    OKL_HEADER_INTERFACE.INT_RATE_CAT_FREQ_CODE%TYPE
654      ,INT_RATE_CON_CAT_FREQ_CODE    OKL_HEADER_INTERFACE.INT_RATE_CON_CAT_FREQ_CODE%TYPE
655       -- Bug 4655611
656      ,RVI_STREAM_CODE  OKL_HEADER_INTERFACE.RVI_STREAM_CODE%TYPE
657      ,RVI_STREAM_PURPOSE_CODE  OKL_HEADER_INTERFACE.RVI_STREAM_PURPOSE_CODE%TYPE
658       -- Bug 4655611
659       -- Contract Additional field, Bug 4558486
660      ,ATTRIBUTE_CATEGORY OKL_HEADER_INTERFACE.ATTRIBUTE_CATEGORY%TYPE
661      ,ATTRIBUTE1         OKL_HEADER_INTERFACE.ATTRIBUTE1%TYPE
662      ,ATTRIBUTE2         OKL_HEADER_INTERFACE.ATTRIBUTE2%TYPE
663      ,ATTRIBUTE3         OKL_HEADER_INTERFACE.ATTRIBUTE3%TYPE
664      ,ATTRIBUTE4         OKL_HEADER_INTERFACE.ATTRIBUTE4%TYPE
665      ,ATTRIBUTE5         OKL_HEADER_INTERFACE.ATTRIBUTE5%TYPE
666      ,ATTRIBUTE6         OKL_HEADER_INTERFACE.ATTRIBUTE6%TYPE
667      ,ATTRIBUTE7         OKL_HEADER_INTERFACE.ATTRIBUTE7%TYPE
668      ,ATTRIBUTE8         OKL_HEADER_INTERFACE.ATTRIBUTE8%TYPE
669      ,ATTRIBUTE9         OKL_HEADER_INTERFACE.ATTRIBUTE9%TYPE
670      ,ATTRIBUTE10        OKL_HEADER_INTERFACE.ATTRIBUTE10%TYPE
671      ,ATTRIBUTE11        OKL_HEADER_INTERFACE.ATTRIBUTE11%TYPE
672      ,ATTRIBUTE12        OKL_HEADER_INTERFACE.ATTRIBUTE12%TYPE
673      ,ATTRIBUTE13        OKL_HEADER_INTERFACE.ATTRIBUTE13%TYPE
674      ,ATTRIBUTE14        OKL_HEADER_INTERFACE.ATTRIBUTE14%TYPE
675      ,ATTRIBUTE15        OKL_HEADER_INTERFACE.ATTRIBUTE15%TYPE
676       -- Contract Additional field, Bug 4558486
677      -- $1 Buyout
678      ,EOT_AUTO_PROC_PURCHASE_OPT OKL_HEADER_INTERFACE.EOT_AUTO_PROC_PURCHASE_OPT%TYPE
679      -- $1 Buyout
680      ,PTH_EVG_PAYOUT_BASIS        OKL_HEADER_INTERFACE.PTH_EVG_PAYOUT_BASIS%TYPE
681      ,PTH_PAYOUT_BASIS_FORMULA    OKL_HEADER_INTERFACE.PTH_PAYOUT_BASIS_FORMULA%TYPE
682      ,PTH_EVG_STREAM_CODE         OKL_HEADER_INTERFACE.PTH_EVG_STREAM_CODE%TYPE
683      ,PTH_EVG_STREAM_PURPOSE_CODE OKL_HEADER_INTERFACE.PTH_EVG_STREAM_PURPOSE_CODE%TYPE
684      ,SEND_BILL_SALE               OKL_HEADER_INTERFACE.SEND_BILL_SALE%TYPE
685      ,MANUAL_QUOTES_ONLY           OKL_HEADER_INTERFACE.MANUAL_QUOTES_ONLY%TYPE
686      ,FIRST_TERMINATION_DATE       OKL_HEADER_INTERFACE.FIRST_TERMINATION_DATE%TYPE
687      ,QUOTE_RCPT_ADDL_RCPT_ROLE    OKL_HEADER_INTERFACE.QUOTE_RCPT_ADDL_RCPT_ROLE%TYPE
688      ,QUOTE_RCPT_ALLOC_PTG         OKL_HEADER_INTERFACE.QUOTE_RCPT_ALLOC_PTG%TYPE
689      ,QUOTE_APPRVR_ADV_NOTICE_ROLE OKL_HEADER_INTERFACE.QUOTE_APPRVR_ADV_NOTICE_ROLE%TYPE
690      ,QUOTE_APPROVER_DELAY_DAYS    OKL_HEADER_INTERFACE.QUOTE_APPROVER_DELAY_DAYS%TYPE
691      ,ERT_SERV_MANT_FRML           OKL_HEADER_INTERFACE.ERT_SERV_MANT_FRML%TYPE
692      ,EOT_SERV_MANT_FRML           OKL_HEADER_INTERFACE.EOT_SERV_MANT_FRML%TYPE
693      --Added by dpsingh for LE Uptake
694      ,LEGAL_ENTITY_ID              NUMBER := Okl_Api.G_MISS_NUM
695      -- Added by Punith for R12 ebtax
696      ,ST_TAX_SCHEDULE_APPLIES_FLAG OKL_HEADER_INTERFACE.ST_TAX_SCHEDULE_APPLIES_FLAG%TYPE
697    );
698 
699    SUBTYPE fee_types_rec_type IS OKL_MAINTAIN_FEE_PVT.fee_types_rec_type;
700    SUBTYPE tlpv_rec_type IS okl_txl_assets_pub.tlpv_rec_type;
701 
702  TYPE intf_party_rec_type IS RECORD (
703      CONTRACT_NUMBER         OKL_HEADER_INTERFACE.CONTRACT_NUMBER_OLD%TYPE
704      ,LINE_NUMBER             OKL_LINES_INTERFACE.LINE_NUMBER%TYPE
705 --
706      ,PARTY_ID                HZ_PARTIES.PARTY_ID%TYPE
707      ,PARTY_NUMBER            HZ_PARTIES.PARTY_NUMBER%TYPE
708      ,PARTY_NAME              HZ_PARTIES.PARTY_NAME%TYPE
709      ,PARTY_CATEGORY_CODE     HZ_PARTIES.CATEGORY_CODE%TYPE
710 --
711      ,PARTY_SITE_ID           HZ_PARTY_SITES.PARTY_SITE_ID%TYPE
712      ,PARTY_SITE_NUMBER       HZ_PARTY_SITES.PARTY_SITE_NUMBER%TYPE
713      ,PARTY_SITE_NAME         HZ_PARTY_SITES.PARTY_SITE_NAME%TYPE
714 --
715      ,INTF_PARTY_ID           VARCHAR2(150)
716      ,INTF_PARTY_NUMBER       VARCHAR2(150)
717      ,INTF_PARTY_NAME         VARCHAR2(150)
718      ,INTF_PARTY_SITE_ID      VARCHAR2(150)
719      ,INTF_PARTY_SITE_NUMBER  VARCHAR2(150)
720      ,INTF_PARTY_SITE_NAME    VARCHAR2(150)
721    );
722 
723 
724    G_BASE_PMNT_HDR       pphv_rec_type;
725    G_EVG_PMNT_HDR        pphv_rec_type;
726    G_LLA_CHR_ID          CONSTANT VARCHAR2(30) := 'OKL_LLA_CHR_ID';
727 
728    G_EVG_CONT_PMNT_HDR   pphv_rec_type; -- Evergreen param at contract header
729 
730 
731 ------------------------------------------------------------------------------
732 -- PROCEDURE debug_message
733 --
734 --  This procedure prints debug message depending on DEBUG flag
735 --
736 -- Calls:
737 -- Called By:
738 ------------------------------------------------------------------------------
739    PROCEDURE debug_message(
740                            p_message IN VARCHAR2
741                           ) IS
742    L_DEBUG NUMBER := 1;
743    BEGIN
744       IF ( L_DEBUG = 1 ) THEN
745         fnd_file.put_line (fnd_file.log, p_message);
746         --dbms_output.put_line (p_message);
747          okl_debug_pub.logmessage(p_message);
748       END IF;
749 
750       RETURN;
751    END debug_message;
752 
753 ------------------------------------------------------------------------------
754 -- PROCEDURE Report_Error
755 -- It is a generalized routine to display error on Concurrent Manager Log file
756 -- Calls:
757 --   okl_api package
758 --   fnd_msg_pub package
759 -- Called by:
760 --   process_record
761 --   check_input_record
762 --   process_input_record
763 ------------------------------------------------------------------------------
764 
765   PROCEDURE Report_Error(
766                          x_msg_count OUT NOCOPY NUMBER,
767                          x_msg_data  OUT NOCOPY VARCHAR2
768                         ) IS
769 
770   x_msg_index_out NUMBER;
771   x_msg_out       VARCHAR2(2000);
772 
773   BEGIN
774 
775     okl_api.end_activity(
776                          X_msg_count => x_msg_count,
777                          X_msg_data  => x_msg_data
778                         );
779 
780     FOR i in 1..x_msg_count
781     LOOP
782       FND_MSG_PUB.GET(
783                       p_msg_index     => i,
784                       p_encoded       => FND_API.G_FALSE,
785                       p_data          => x_msg_data,
786                       p_msg_index_out => x_msg_index_out
787                      );
788 
789       fnd_file.put_line(fnd_file.output, 'Error '||to_char(i)||': '||x_msg_data);
790       --dbms_output.put_line('Error '||to_char(i)||': '||x_msg_data);
791       debug_message('Error '||to_char(i)||': '||x_msg_data);
792 
793     END LOOP;
794     return;
795   EXCEPTION
796     WHEN OTHERS THEN
797       NULL;
798   END Report_Error;
799 
800   PROCEDURE write_to_log(
801                          p_message IN VARCHAR2
802                         ) IS
803   BEGIN
804     --dbms_output.put_line(p_message);
805     debug_message(p_message);
806     fnd_file.put_line(fnd_file.output, p_message);
807   END write_to_log;
808 
809 ------------------------------------------------------------------------------
810 -- PROCEDURE get_can_bto
811 -- It returns CAN and BTO from OKC_K_HEADERS - after migration
812 -- Calls:
813 -- Called by:
814 ------------------------------------------------------------------------------
815 
816    PROCEDURE get_can_bto(
817                          x_return_status  OUT NOCOPY VARCHAR2,
818                          p_chr_id         IN  OKC_K_HEADERS_B.ID%TYPE,
819                          x_bto_id         OUT NOCOPY OKC_K_HEADERS_B.BILL_TO_SITE_USE_ID%TYPE,
820                          x_can_id         OUT NOCOPY OKC_K_HEADERS_B.CUST_ACCT_ID%TYPE
821                         ) IS
822 
823    l_proc_name VARCHAR2(35) := 'GET_CAN_BTO';
824 
825    CURSOR can_bto_csr (p_chr_id OKC_K_HEADERS_B.ID%TYPE) IS
826    SELECT bill_to_site_use_id,
827           cust_acct_id
828    FROM   okc_k_headers_v
829    WHERE  id = p_chr_id;
830 
831    BEGIN
832       x_return_status := OKL_API.G_RET_STS_SUCCESS;
833       OPEN can_bto_csr (p_chr_id);
834       FETCH can_bto_csr INTO x_bto_id,
835                              x_can_id;
836       IF can_bto_csr%NOTFOUND THEN
837          x_return_status := OKL_API.G_RET_STS_ERROR;
838       END IF;
839       CLOSE can_bto_csr;
840 
841    END get_can_bto;
842 
843 ------------------------------------------------------------------------------
844 -- PROCEDURE get_canonical_date
845 -- It changes date input to canonical_date format as specified in FND_DATE
846 -- routine. Only required for date columns which are defined as rule segments
847 -- Calls:
848 -- Called by:
849 ------------------------------------------------------------------------------
850    FUNCTION get_canonical_date(
851                                p_from_date IN DATE
852                               ) RETURN VARCHAR2 IS
853    l_canonical_date VARCHAR2(25);
854 
855    BEGIN
856 
857      l_canonical_date := NULL;
858 
859      SELECT TO_CHAR(p_from_date ,fnd_date.canonical_mask)
860      INTO l_canonical_date
861      FROM dual;
862 
863      RETURN l_canonical_date;
864 
865    EXCEPTION
866      WHEN OTHERS THEN
867         RETURN NULL;
868    END get_canonical_date;
869 
870 ------------------------------------------------------------------------------
871 -- PROCEDURE Process_Record
872 -- It Validates Input record and Load record after SUCCESSFUL validation
873 -- Calls:
874 --   Check_Inout_Record
875 --   Load_Input_Record
876 --   Report Error
877 -- Called by:
878 --   Starting point
879 ------------------------------------------------------------------------------
880   PROCEDURE Process_Record (
881                             errbuf             OUT NOCOPY VARCHAR2,
882                             retcode            OUT NOCOPY VARCHAR2,
883                             p_batch_number     IN VARCHAR2,
884                             p_start_date_from  IN VARCHAR2,
885                             p_start_date_to    IN VARCHAR2,
886                             p_contract_number  IN VARCHAR2,
887                             p_customer_number  IN VARCHAR2,
888                             p_instance_number  IN VARCHAR2 DEFAULT 'NONE'
889                            ) IS
890 
891 
892   X_Progress         VARCHAR2(3) := NULL;
893   l_proc_name         CONSTANT VARCHAR2(30)  := 'PROCESS_RECORD';
894   X_msg_count        NUMBER;
895   X_msg_data         VARCHAR2(2000);
896   X_return_status    VARCHAR2(200);
897   X_total_checked    NUMBER := 0;
898   x_total_loaded     NUMBER := 0;
899   param_error        EXCEPTION;
900   BEGIN
901 
902     X_Progress := '010';
903     X_return_status := OKL_API.G_RET_STS_SUCCESS;
904     g_instance_number := nvl(p_instance_number, 'NONE');
905 
906     --fnd_file.put_line(fnd_file.output, 'OKL Contract Open Interface Report');
907     --fnd_file.put_line(fnd_file.output, '==================================');
908     write_to_log('OKL Contract Open Interface Report');
909     write_to_log('==================================');
910 
911     write_to_log('***** Parameter values *****');
912     write_to_log('Batch Number            : '||NVL(p_batch_number,'NULL'));
913     write_to_log('Contract Start Date From: '||NVL(p_start_date_from,'NULL'));
914     write_to_log('Contract Start Date To  : '||NVL(p_start_date_to,'NULL'));
915     write_to_log('Contract Number         : '||NVL(p_contract_number,'NULL'));
916     write_to_log('Customer Number         : '||NVL(p_customer_number,'NULL'));
917     write_to_log('Instance Number         : '||NVL(p_instance_number,'NULL'));
918     write_to_log('==================================');
919 
920     IF (p_batch_number    IS NULL AND
921        p_start_date_from IS NULL AND
922        p_start_date_to   IS NULL AND
923        p_contract_number IS NULL AND
924        p_customer_number IS NULL ) THEN  -- All Null
925 
926        okl_api.set_message(
927                            G_APP_NAME,
928                            G_NULL_PARAMETER
929                           );
930        RAISE param_error;
931     ELSIF
932        (p_batch_number     IS NOT NULL AND
933         (p_start_date_from IS NOT NULL OR
934          p_start_date_to   IS NOT NULL OR
935          p_contract_number IS NOT NULL OR
936          p_customer_number IS NOT NULL)) THEN  -- Provide Batch Number only
937 
938        okl_api.set_message(
939                            G_APP_NAME,
940                            G_INVALID_PARAMETER,
941                            'PARAM_NAME',
942                            'BATCH_NUMBER'
943                           );
944        RAISE param_error;
945     ELSIF
946        (p_customer_number IS NOT NULL
947         AND
948         p_start_date_from IS NULL
949         AND
950         p_start_date_to IS NULL
951        ) THEN
952        okl_api.set_message(
953                            G_APP_NAME,
954                            G_INVALID_PARAMETER,
955                            'PARAM_NAME',
956                            'Customer Number And Start Date From To'
957                           );
958        RAISE param_error;
959     END IF;
960 
961 /* Bug 4350579 - no need to run check_input_record
962  * Validations are moved to load procedure
963  *
964  *
965  *  check_input_record(
966  *                  p_init_msg_list   => OKL_API.G_TRUE,
967  *                  x_return_status   => X_return_status,
968  *                  x_msg_count       => X_msg_count,
969  *                  x_msg_data        => X_msg_data,
970  *                  p_batch_number    => p_batch_number,
971  *                  p_start_date_from => FND_DATE.CANONICAL_TO_DATE(p_start_date_from),
972  *                  p_start_date_to   => FND_DATE.CANONICAL_TO_DATE(p_start_date_to),
973  *                  p_contract_number => p_contract_number,
974  *                  p_customer_number => p_customer_number,
975  *                  x_total_checked   => x_total_checked
976  *                 );
977  *
978  *       okl_open_interface_pvt.report_error (
979  *                                        x_msg_count => x_msg_count,
980  *                                        x_msg_data  => x_msg_data
981  *                                       );
982  *
983     -- Check if Validation is SUCCESSFUL or not
984     --fnd_file.put_line(fnd_file.output, '==================================');
985     --fnd_file.put_line(fnd_file.output, 'Total Contract Checked for loading: '||TO_CHAR(nvl(x_total_checked,0)));
986     --fnd_file.put_line(fnd_file.output, '==================================');
987 
988  *  write_to_log('==================================');
989  *  write_to_log('Total Contract Checked for loading: '||TO_CHAR(nvl(x_total_checked,0)));
990  *  write_to_log('==================================');
991  *  Bug 4350579
992  */
993     Load_Input_Record(
994                     p_init_msg_list   => OKL_API.G_TRUE,
995                     x_return_status   => X_return_status,
996                     x_msg_count       => X_msg_count,
997                     x_msg_data        => X_msg_data,
998                     p_batch_number    => p_batch_number,
999                     p_start_date_from => FND_DATE.CANONICAL_TO_DATE(p_start_date_from),
1000                     p_start_date_to   => FND_DATE.CANONICAL_TO_DATE(p_start_date_to),
1001                     p_contract_number => p_contract_number,
1002                     p_customer_number => p_customer_number,
1003                     x_total_loaded    => x_total_loaded
1004                    );
1005 
1006     write_to_log('==================================');
1007     write_to_log('Total Contract loaded: '||TO_CHAR(nvl(x_total_loaded,0)));
1008     write_to_log('==================================');
1009 
1010     RETURN;
1011 
1012     EXCEPTION
1013       WHEN param_error THEN
1014       okl_api.end_activity(
1015                            X_msg_count => X_msg_count,
1016                            X_msg_data  => X_msg_data
1017                           );
1018 
1019       report_error(
1020                    x_msg_count => X_msg_count,
1021                    x_msg_data  => X_msg_data
1022                   );
1023 
1024    END Process_Record;
1025 
1026 ------------------------------------------------------------------------------
1027 -- PROCEDURE Update_Interface_Status
1028 -- It Changes Status to Interface Table
1029 -- Calls:
1030 --  None
1031 -- Called By:
1032 --  check_input_record
1033 --  load_input_record
1034 ------------------------------------------------------------------------------
1035    PROCEDURE Update_Interface_Status (p_contract_number IN  okl_header_interface.contract_number_old%TYPE,
1036                                       p_new_contract_number IN okl_header_interface.contract_number%TYPE,
1037                                       p_status          IN  VARCHAR2,
1038                                       x_return_status   OUT NOCOPY VARCHAR2 ) IS
1039 
1040    x_proc_name    VARCHAR2(35) := 'UPDATE_INTERFACE_STATUS';
1041    update_failed  EXCEPTION;
1042    BEGIN
1043 
1044      x_return_status := OKL_API.G_RET_STS_SUCCESS;
1045 
1046      UPDATE okl_header_interface
1047      SET    status              = p_status,
1048             contract_number     = p_new_contract_number,
1049             scheduled_worker_id = decode(p_status, 'ERROR', null, scheduled_worker_id),
1050             date_created_in_okl = decode(p_status,'INTERFACED',SYSDATE,
1051                                                   'FINAL', SYSDATE, NULL) -- update date in case of Successful loading
1052      WHERE  contract_number_old = p_contract_number;
1053 
1054      IF SQL%NOTFOUND THEN
1055         RAISE update_failed;
1056      END IF;
1057 
1058    EXCEPTION
1059      WHEN update_failed THEN
1060       okl_api.set_message(
1061                           G_APP_NAME,
1062                           G_UNEXPECTED_ERROR,
1063                           'OKL_SQLCODE',
1064                           SQLCODE,
1065                           'OKL_SQLERRM',
1066                           SQLERRM || ': '||G_PKG_NAME||'.'||x_proc_name
1067                          );
1068        x_return_status := OKL_API.G_RET_STS_ERROR;
1069 
1070    END Update_Interface_Status;
1071 
1072 ------------------------------------------------------------------------------
1073 -- PROCEDURE get_template
1074 -- It returns Template Contract information identified by p_template_number
1075 -- Calls:
1076 --  None
1077 -- Called By:
1078 ------------------------------------------------------------------------------
1079    FUNCTION get_template (
1080                            x_return_status   OUT NOCOPY VARCHAR2,
1081                            x_msg_count       OUT NOCOPY NUMBER,
1082                            x_msg_data        OUT NOCOPY VARCHAR2,
1083                            p_template_number IN  VARCHAR2
1084                           )
1085    RETURN template_h_rec_TYPE IS
1086 
1087    CURSOR t_header_csr (p_template VARCHAR2) IS
1088    SELECT
1089       ID
1090       ,OBJECT_VERSION_NUMBER
1091       ,SFWT_FLAG
1092       ,CHR_ID_RESPONSE
1093       ,CHR_ID_AWARD
1094       ,CHR_ID_RENEWED
1095       ,INV_ORGANIZATION_ID
1096       ,STS_CODE
1097       ,QCL_ID
1098       ,SCS_CODE
1099       ,CONTRACT_NUMBER
1100       ,CURRENCY_CODE
1101       ,CONTRACT_NUMBER_MODIFIER
1102       ,ARCHIVED_YN
1103       ,DELETED_YN
1104       ,CUST_PO_NUMBER_REQ_YN
1105       ,PRE_PAY_REQ_YN
1106       ,CUST_PO_NUMBER
1107       ,SHORT_DESCRIPTION
1108       ,COMMENTS
1109       ,DESCRIPTION
1110       ,DPAS_RATING
1111       ,COGNOMEN
1112       ,TEMPLATE_YN
1113       ,TEMPLATE_USED
1114       ,DATE_APPROVED
1115       ,DATETIME_CANCELLED
1116       ,AUTO_RENEW_DAYS
1117       ,DATE_ISSUED
1118       ,DATETIME_RESPONDED
1119       ,NON_RESPONSE_REASON
1120       ,NON_RESPONSE_EXPLAIN
1121       ,RFP_TYPE
1122       ,CHR_TYPE
1123       ,KEEP_ON_MAIL_LIST
1124       ,SET_ASIDE_REASON
1125       ,SET_ASIDE_PERCENT
1126       ,RESPONSE_COPIES_REQ
1127       ,DATE_CLOSE_PROJECTED
1128       ,DATETIME_PROPOSED
1129       ,DATE_SIGNED
1130       ,DATE_TERMINATED
1131       ,DATE_RENEWED
1132       ,TRN_CODE
1133       ,START_DATE
1134       ,END_DATE
1135       ,AUTHORING_ORG_ID
1136       ,BUY_OR_SELL
1137       ,ISSUE_OR_RECEIVE
1138       ,ESTIMATED_AMOUNT
1139       ,CHR_ID_RENEWED_TO
1140       ,ESTIMATED_AMOUNT_RENEWED
1141       ,CURRENCY_CODE_RENEWED
1142       ,USER_ACCESS_LEVEL
1143       ,UPG_ORIG_SYSTEM_REF
1144       ,UPG_ORIG_SYSTEM_REF_ID
1145       ,APPLICATION_ID
1146       ,RESOLVED_UNTIL
1147       ,ATTRIBUTE_CATEGORY
1148       ,ATTRIBUTE1
1149       ,ATTRIBUTE2
1150       ,ATTRIBUTE3
1151       ,ATTRIBUTE4
1152       ,ATTRIBUTE5
1153       ,ATTRIBUTE6
1154       ,ATTRIBUTE7
1155       ,ATTRIBUTE8
1156       ,ATTRIBUTE9
1157       ,ATTRIBUTE10
1158       ,ATTRIBUTE11
1159       ,ATTRIBUTE12
1160       ,ATTRIBUTE13
1161       ,ATTRIBUTE14
1162       ,ATTRIBUTE15
1163       ,CREATED_BY
1164       ,CREATION_DATE
1165       ,LAST_UPDATED_BY
1166       ,LAST_UPDATE_DATE
1167       ,LAST_UPDATE_LOGIN
1168       ,ORIG_SYSTEM_SOURCE_CODE
1169       ,ORIG_SYSTEM_ID1
1170       ,ORIG_SYSTEM_REFERENCE1
1171       ,KHR_ROW_ID
1172       ,KHR_OBJECT_VERSION_NUMBER
1173       ,ISG_ID
1174       ,KHR_ID
1175       ,PDT_ID
1176       ,AMD_CODE
1177       ,DATE_FIRST_ACTIVITY
1178       ,GENERATE_ACCRUAL_YN
1179       ,GENERATE_ACCRUAL_OVERRIDE_YN
1180       ,DATE_REFINANCED
1181       ,CREDIT_ACT_YN
1182       ,TERM_DURATION
1183       ,CONVERTED_ACCOUNT_YN
1184       ,DATE_CONVERSION_EFFECTIVE
1185       ,SYNDICATABLE_YN
1186       ,SALESTYPE_YN
1187       ,DATE_DEAL_TRANSFERRED
1188       ,DATETIME_PROPOSAL_EFFECTIVE
1189       ,DATETIME_PROPOSAL_INEFFECTIVE
1190       ,DATE_PROPOSAL_ACCEPTED
1191       ,KHR_ATTRIBUTE_CATEGORY
1192       ,KHR_ATTRIBUTE1
1193       ,KHR_ATTRIBUTE2
1194       ,KHR_ATTRIBUTE3
1195       ,KHR_ATTRIBUTE4
1196       ,KHR_ATTRIBUTE5
1197       ,KHR_ATTRIBUTE6
1198       ,KHR_ATTRIBUTE7
1199       ,KHR_ATTRIBUTE8
1200       ,KHR_ATTRIBUTE9
1201       ,KHR_ATTRIBUTE10
1202       ,KHR_ATTRIBUTE11
1203       ,KHR_ATTRIBUTE12
1204       ,KHR_ATTRIBUTE13
1205       ,KHR_ATTRIBUTE14
1206       ,KHR_ATTRIBUTE15
1207       ,KHR_CREATED_BY
1208       ,KHR_CREATON_DATE
1209       ,KHR_LAST_UPDATED_BY
1210       ,KHR_LAST_UPDATE_DATE
1211       ,KHR_LAST_UPDATE_LOGIN
1212       ,PRE_TAX_YIELD
1213       ,AFTER_TAX_YIELD
1214       ,IMPLICIT_INTEREST_RATE
1215       ,IMPLICIT_NON_IDC_INTEREST_RATE
1216       ,TARGET_PRE_TAX_YIELD
1217       ,TARGET_AFTER_TAX_YIELD
1218       ,TARGET_IMPLICIT_INTEREST_RATE
1219       ,TARGET_IMPLICIT_NONIDC_INTRATE
1220       ,DATE_LAST_INTERIM_INTEREST_CAL
1221       ,DEAL_TYPE
1222       ,PRE_TAX_IRR
1223       ,AFTER_TAX_IRR
1224       ,EXPECTED_DELIVERY_DATE
1225       ,ACCEPTED_DATE
1226       ,PREFUNDING_ELIGIBLE_YN
1227       ,REVOLVING_CREDIT_YN
1228       ,CURRENCY_CONVERSION_TYPE
1229       ,CURRENCY_CONVERSION_RATE
1230       ,CURRENCY_CONVERSION_DATE
1231       ,ASSIGNABLE_YN
1232       ,CUST_ACCT_ID
1233       ,BILL_TO_SITE_USE_ID
1234    FROM okl_k_headers_full_v
1235    WHERE contract_number = p_template
1236    AND   template_yn = 'Y';
1237 
1238    l_t_header_rec  template_h_rec_type;
1239    template_failed EXCEPTION;
1240 
1241    l_proc_name VARCHAR2(30) := 'GET_TEMPLATE';
1242    BEGIN
1243 
1244      x_return_status := OKL_API.G_RET_STS_SUCCESS;
1245 
1246      OPEN t_header_csr (p_template_number);
1247      FETCH t_header_csr into l_t_header_rec;
1248      IF t_header_csr%NOTFOUND THEN
1249         okl_api.set_message(
1250                             G_APP_NAME,
1251                             G_INVALID_TEMPLATE,
1252                             'TEMPLATE_NUMBER',
1253                             p_template_number
1254                            );
1255         RAISE template_failed;
1256      END IF;
1257      CLOSE t_header_csr;
1258 
1259      RETURN l_t_header_rec;
1260 
1261    EXCEPTION
1262      WHEN template_failed THEN
1263         IF t_header_csr%ISOPEN THEN
1264            CLOSE t_header_csr;
1265         END IF;
1266         x_return_status := OKL_API.G_RET_STS_ERROR;
1267    END get_template;
1268 
1269 
1270 --*********************** check Interface **************************************
1271 
1272 ------------------------------------------------------------------------------
1273 -- PROCEDURE get_contract_rules
1274 -- It retrives rules associated with contract and returns error, if any
1275 -- Calls:
1276 --  None
1277 -- Called By:
1278 ------------------------------------------------------------------------------
1279   PROCEDURE get_contract_rules(
1280                                x_return_status   OUT NOCOPY VARCHAR2,
1281                                x_msg_count       OUT NOCOPY NUMBER,
1282                                x_msg_data        OUT NOCOPY VARCHAR2,
1283                                p_chr_id          IN  OKC_K_HEADERS_V.ID%TYPE,
1284                                p_cle_id          IN  OKC_K_LINES_V.ID%TYPE,
1285                                p_rgd_code        IN  OKC_RULE_GROUPS_V.RGD_CODE%TYPE,
1286                                p_rule_code       IN  OKC_RULES_V.RULE_INFORMATION_CATEGORY%TYPE,
1287                                x_rulv_tbl        OUT NOCOPY rulv_tbl_type,
1288                                x_rule_count      OUT NOCOPY NUMBER
1289                               ) IS
1290   l_proc_name VARCHAR2(35) := 'GET_CONTRACT_RULES';
1291 
1292   CURSOR rulv_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE,
1293                    p_cle_id OKC_K_LINES_V.ID%TYPE,
1294                    p_rgd_code OKC_RULE_GROUPS_V.RGD_CODE%TYPE,
1295                    p_rule_code OKC_RULES_V.RULE_INFORMATION_CATEGORY%TYPE) IS
1296   SELECT
1297             rule.ID,
1298             rule.OBJECT_VERSION_NUMBER,
1299             rule.SFWT_FLAG,
1300             rule.OBJECT1_ID1,
1301             rule.OBJECT2_ID1,
1302             rule.OBJECT3_ID1,
1303             rule.OBJECT1_ID2,
1304             rule.OBJECT2_ID2,
1305             rule.OBJECT3_ID2,
1306             rule.JTOT_OBJECT1_CODE,
1307             rule.JTOT_OBJECT2_CODE,
1308             rule.JTOT_OBJECT3_CODE,
1309             rule.DNZ_CHR_ID,
1310             rule.RGP_ID,
1311             rule.PRIORITY,
1312             rule.STD_TEMPLATE_YN,
1313             rule.COMMENTS,
1314             rule.WARN_YN,
1315             rule.ATTRIBUTE_CATEGORY,
1316             rule.ATTRIBUTE1,
1317             rule.ATTRIBUTE2,
1318             rule.ATTRIBUTE3,
1319             rule.ATTRIBUTE4,
1320             rule.ATTRIBUTE5,
1321             rule.ATTRIBUTE6,
1322             rule.ATTRIBUTE7,
1323             rule.ATTRIBUTE8,
1324             rule.ATTRIBUTE9,
1325             rule.ATTRIBUTE10,
1326             rule.ATTRIBUTE11,
1327             rule.ATTRIBUTE12,
1328             rule.ATTRIBUTE13,
1329             rule.ATTRIBUTE14,
1330             rule.ATTRIBUTE15,
1331             rule.CREATED_BY,
1332             rule.CREATION_DATE,
1333             rule.LAST_UPDATED_BY,
1334             rule.LAST_UPDATE_DATE,
1335             rule.LAST_UPDATE_LOGIN,
1336             --rule.TEXT,
1337             rule.RULE_INFORMATION_CATEGORY,
1338             rule.RULE_INFORMATION1,
1339             rule.RULE_INFORMATION2,
1340             rule.RULE_INFORMATION3,
1341             rule.RULE_INFORMATION4,
1342             rule.RULE_INFORMATION5,
1343             rule.RULE_INFORMATION6,
1344             rule.RULE_INFORMATION7,
1345             rule.RULE_INFORMATION8,
1346             rule.RULE_INFORMATION9,
1347             rule.RULE_INFORMATION10,
1348             rule.RULE_INFORMATION11,
1349             rule.RULE_INFORMATION12,
1350             rule.RULE_INFORMATION13,
1351             rule.RULE_INFORMATION14,
1352             rule.RULE_INFORMATION15,
1353             rule.TEMPLATE_YN,
1354             rule.ans_set_jtot_object_code,
1355             rule.ans_set_jtot_object_id1,
1356             rule.ans_set_jtot_object_id2,
1357             rule.DISPLAY_SEQUENCE
1358   FROM   okc_rule_groups_v rg,
1359          okc_rules_v       rule
1360   WHERE  rg.id                          = rule.rgp_id
1361   AND    rg.dnz_chr_id                  = p_chr_id
1362   AND    ( ( p_cle_id IS NULL
1363              AND
1364              rg.cle_id IS NULL
1365            )
1366            OR
1367            rg.cle_id = p_cle_id
1368          )
1369   AND    rg.rgd_code                    = p_rgd_code
1370   AND    rule.rule_information_category = p_rule_code;
1371 
1372   i NUMBER := 0;
1373   BEGIN
1374 
1375     FOR rulv_rec IN rulv_csr (p_chr_id,
1376                               p_cle_id,
1377                               p_rgd_code,
1378                               p_rule_code)
1379     LOOP
1380        i := rulv_csr%ROWCOUNT;
1381        --x_rulv_tbl(i) := rulv_rec;
1382     x_rulv_tbl(i).id                            := rulv_rec.id;
1383     x_rulv_tbl(i).rgp_id                        := rulv_rec.rgp_id;
1384     x_rulv_tbl(i).object1_id1                   := rulv_rec.object1_id1;
1385     x_rulv_tbl(i).object2_id1                   := rulv_rec.object2_id1;
1386     x_rulv_tbl(i).object3_id1                   := rulv_rec.object3_id1;
1387     x_rulv_tbl(i).object1_id2                   := rulv_rec.object1_id2;
1388     x_rulv_tbl(i).object2_id2                   := rulv_rec.object2_id2;
1389     x_rulv_tbl(i).object3_id2                   := rulv_rec.object3_id2;
1390     x_rulv_tbl(i).jtot_object1_code             := rulv_rec.jtot_object1_code;
1391     x_rulv_tbl(i).jtot_object2_code             := rulv_rec.jtot_object2_code;
1392     x_rulv_tbl(i).jtot_object3_code             := rulv_rec.jtot_object3_code;
1393     x_rulv_tbl(i).dnz_chr_id                    := rulv_rec.dnz_chr_id;
1394     x_rulv_tbl(i).std_template_yn               := rulv_rec.std_template_yn;
1395     x_rulv_tbl(i).warn_yn                       := rulv_rec.warn_yn;
1396     x_rulv_tbl(i).priority                      := rulv_rec.priority;
1397     x_rulv_tbl(i).object_version_number         := rulv_rec.object_version_number;
1398     x_rulv_tbl(i).created_by                    := rulv_rec.created_by;
1399     x_rulv_tbl(i).creation_date                 := rulv_rec.creation_date;
1400     x_rulv_tbl(i).last_updated_by               := rulv_rec.last_updated_by;
1401     x_rulv_tbl(i).last_update_date              := rulv_rec.last_update_date;
1402     x_rulv_tbl(i).last_update_login             := rulv_rec.last_update_login;
1403     x_rulv_tbl(i).attribute_category            := rulv_rec.attribute_category;
1404     x_rulv_tbl(i).attribute1                    := rulv_rec.attribute1;
1405     x_rulv_tbl(i).attribute2                    := rulv_rec.attribute2;
1406     x_rulv_tbl(i).attribute3                    := rulv_rec.attribute3;
1407     x_rulv_tbl(i).attribute4                    := rulv_rec.attribute4;
1408     x_rulv_tbl(i).attribute5                    := rulv_rec.attribute5;
1409     x_rulv_tbl(i).attribute6                    := rulv_rec.attribute6;
1410     x_rulv_tbl(i).attribute7                    := rulv_rec.attribute7;
1411     x_rulv_tbl(i).attribute8                    := rulv_rec.attribute8;
1412     x_rulv_tbl(i).attribute9                    := rulv_rec.attribute9;
1413     x_rulv_tbl(i).attribute10                   := rulv_rec.attribute10;
1414     x_rulv_tbl(i).attribute11                   := rulv_rec.attribute11;
1415     x_rulv_tbl(i).attribute12                   := rulv_rec.attribute12;
1416     x_rulv_tbl(i).attribute13                   := rulv_rec.attribute13;
1417     x_rulv_tbl(i).attribute14                   := rulv_rec.attribute14;
1418     x_rulv_tbl(i).attribute15                   := rulv_rec.attribute15;
1419     x_rulv_tbl(i).rule_information_category     := rulv_rec.rule_information_category;
1420     x_rulv_tbl(i).rule_information1             := rulv_rec.rule_information1;
1421     x_rulv_tbl(i).rule_information2             := rulv_rec.rule_information2;
1422     x_rulv_tbl(i).rule_information3             := rulv_rec.rule_information3;
1423     x_rulv_tbl(i).rule_information4             := rulv_rec.rule_information4;
1424     x_rulv_tbl(i).rule_information5             := rulv_rec.rule_information5;
1425     x_rulv_tbl(i).rule_information6             := rulv_rec.rule_information6;
1426     x_rulv_tbl(i).rule_information7             := rulv_rec.rule_information7;
1427     x_rulv_tbl(i).rule_information8             := rulv_rec.rule_information8;
1428     x_rulv_tbl(i).rule_information9             := rulv_rec.rule_information9;
1429     x_rulv_tbl(i).rule_information10            := rulv_rec.rule_information10;
1430     x_rulv_tbl(i).rule_information11            := rulv_rec.rule_information11;
1431     x_rulv_tbl(i).rule_information12            := rulv_rec.rule_information12;
1432     x_rulv_tbl(i).rule_information13            := rulv_rec.rule_information13;
1433     x_rulv_tbl(i).rule_information14            := rulv_rec.rule_information14;
1434     x_rulv_tbl(i).rule_information15            := rulv_rec.rule_information15;
1435     x_rulv_tbl(i).template_yn                   := rulv_rec.template_yn;
1436     x_rulv_tbl(i).ans_set_jtot_object_code      := rulv_rec.ans_set_jtot_object_code;
1437     x_rulv_tbl(i).ans_set_jtot_object_id1       := rulv_rec.ans_set_jtot_object_id1;
1438     x_rulv_tbl(i).ans_set_jtot_object_id2       := rulv_rec.ans_set_jtot_object_id2;
1439     x_rulv_tbl(i).display_sequence              := rulv_rec.display_sequence;
1440     END LOOP;
1441 
1442     x_rule_count := i;
1443 
1444     RETURN;
1445 
1446   END get_contract_rules;
1447 
1448 ------------------------------------------------------------------------------
1449 -- PROCEDURE check_stream_type_code
1450 -- It validates payment method code and returns ID1 and
1451 -- stacks error, if any, for further processing
1452 -- Calls:
1453 --  None
1454 -- Called By:
1455 --  check_line_literal
1456 --  check_payment_record
1457 --  check_payment_rule_group
1458 ------------------------------------------------------------------------------
1459 
1460    PROCEDURE check_stream_type_code(
1461                                      x_return_status       OUT NOCOPY VARCHAR2,
1462                                      x_msg_count           OUT NOCOPY NUMBER,
1463                                      x_msg_data            OUT NOCOPY VARCHAR2,
1464                                      p_stream_type_code    IN  VARCHAR2,
1465                                      p_stream_purpose      IN  VARCHAR2,
1466                                      x_id1                 OUT NOCOPY NUMBER,
1467                                      x_name                OUT NOCOPY VARCHAR2
1468                                     ) IS
1469 
1470    CURSOR strm_csr (p_strm_code    VARCHAR2,
1471                     p_strm_purpose VARCHAR2) IS
1472    SELECT ID1, NAME
1473    FROM   okl_strmtyp_source_v
1474    WHERE  status              = 'A'
1475    AND    name                = p_strm_code
1476    AND    stream_type_purpose = p_strm_purpose;
1477 
1478    l_id1      NUMBER;
1479    l_name     OKL_STRMTYP_SOURCE_V.NAME%TYPE;
1480    strm_failed EXCEPTION;
1481 
1482    BEGIN
1483      x_return_status := OKL_API.G_RET_STS_SUCCESS;
1484 
1485      debug_message('p_stream_type_code=' || p_stream_type_code);
1486      debug_message('p_stream_purpose=' || p_stream_purpose);
1487      OPEN strm_csr(p_stream_type_code,
1488                    p_stream_purpose);
1489      FETCH strm_csr INTO l_id1,l_name;
1490 
1491      IF strm_csr%NOTFOUND THEN
1492         RAISE strm_failed;
1493      END IF;
1494 
1495      x_id1  := l_id1;
1496      x_name := l_name;
1497      RETURN;
1498 
1499    EXCEPTION
1500      WHEN strm_failed THEN
1501         x_return_status := OKL_API.G_RET_STS_ERROR;
1502 
1503    END check_stream_type_code;
1504 
1505 ------------------------------------------------------------------------------
1506 -- FUNCTION validate_currency_code
1507 -- It validates currency Code against database, FND_CURRENCIES
1508 -- Returns OKL_API.G_RET_STS_ERROR for unknown currency code
1509 --         OKL_API.G_RET_STS_SUCCESS for valid currency code
1510 -- Calls:
1511 --  None
1512 -- Called By:
1513 --  check_input_record
1514 ------------------------------------------------------------------------------
1515 
1516   FUNCTION validate_currency_code (p_contract_number IN OKL_HEADER_INTERFACE.CONTRACT_NUMBER_OLD%TYPE,
1517                                    p_currency_code   IN VARCHAR2)
1518   RETURN VARCHAR2 IS
1519 
1520     CURSOR currency_csr(p_curr_code FND_CURRENCIES.CURRENCY_CODE%TYPE) IS
1521     SELECT currency_code
1522     FROM   FND_CURRENCIES
1523     WHERE  currency_code = p_curr_code
1524     AND    NVL(end_date_active,SYSDATE) >= SYSDATE;
1525 
1526     x_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1527     l_currency_code FND_CURRENCIES.CURRENCY_CODE%TYPE;
1528 
1529   BEGIN
1530 
1531     IF (p_currency_code IS NULL) THEN
1532        okl_api.set_message(
1533                            G_APP_NAME,
1534                            G_MISSING_VALUE,
1535                            'CONTRACT_NUM',
1536                            p_contract_number,
1537                            'COL_NAME',
1538                            'CURRENCY_CODE'
1539                           );
1540          x_return_status := OKL_API.G_RET_STS_ERROR;
1541 
1542          return x_return_status;
1543     END IF;
1544 
1545     OPEN currency_csr(p_currency_code);
1546     FETCH currency_csr INTO l_currency_code;
1547     IF currency_csr%NOTFOUND THEN
1548       okl_api.set_message(
1549                           G_APP_NAME,
1550                           G_INVALID_VALUE,
1551                           'CONTRACT_NUM',
1552                           p_contract_number,
1553                           'COL_NAME',
1554                           'CURRENCY_CODE',
1555                           'COL_VALUE',
1556                           p_currency_code
1557                           );
1558        x_return_status := OKL_API.G_RET_STS_ERROR;
1559     END IF;
1560     CLOSE currency_csr;
1561 
1562     return x_return_status;
1563 
1564   END validate_currency_code;
1565 
1566 ------------------------------------------------------------------------------
1567 -- FUNCTION check_header_literal
1568 -- It checks for literals in
1569 --   application_code, contract_category, converted_account,
1570 --   security_deposit_hold_flag, seurity_deposite_net_flag,
1571 --   review_invoice_flag, date_signed, date_approved, term,
1572 --   accepted_date, deal_type_code, bill_to_address, authoring_org_id,
1573 --   customer_account
1574 -- columns and reports error, if any
1575 -- Returns OKL_API.G_RET_STS_ERROR for any Error
1576 --         OKL_API.G_RET_STS_SUCCESS
1577 -- Calls:
1578 --  None
1579 -- Called By:
1580 --  check_input_record
1581 ------------------------------------------------------------------------------
1582 
1583   FUNCTION check_header_literal (
1584                      p_contract_number             IN okl_header_interface.contract_number_old%type,
1585                      p_template_id                 IN okc_k_headers_v.id%type,
1586                      p_application_code            IN okl_header_interface.application_code%type,
1587                      p_contract_category           IN okl_header_interface.contract_category%type,
1588                      p_import_request_stage        IN okl_header_interface.import_request_stage%type,
1589                      p_converted_account           IN okl_header_interface.converted_account%type,
1590                      p_security_deposit_hold_flag  IN okl_header_interface.security_deposit_hold_flag%type,
1591                      p_security_deposit_net_flag   IN okl_header_interface.security_deposit_net_flag%type,
1592                      p_review_invoice_flag         IN okl_header_interface.review_invoice_flag%type,
1593                      p_date_signed                 IN okl_header_interface.date_signed%TYPE,
1594                      p_start_date                  IN okl_header_interface.start_date%TYPE,
1595                      p_date_approved               IN okl_header_interface.date_approved%TYPE,
1596                      p_term                        IN okl_header_interface.term%TYPE,
1597                      p_accepted_date               IN okl_header_interface.accepted_date%TYPE,
1598                      p_deal_type_code              IN okl_header_interface.deal_type_code%TYPE,
1599                      p_bill_to_address             IN okl_header_interface.bill_to_address%TYPE,
1600                      p_bill_to_address_id          IN okl_header_interface.bill_to_address_id%TYPE,
1601                      p_authoring_org_id            IN okl_header_interface.authoring_org_id%TYPE,
1602                      p_inv_organization_id         IN okl_header_interface.inventory_organization_id%TYPE,
1603                      p_customer_account_number     IN okl_header_interface.customer_account_number%TYPE,
1604                      p_customer_account_id         IN okl_header_interface.customer_account_id%TYPE,
1605                      p_eot_purchase_opt_type       IN okl_header_interface.eot_purchase_opt_type%TYPE,
1606 		     p_expected_delivery_date      IN okl_header_interface.expected_delivery_date%TYPE,
1607                      p_currency_code               IN okl_header_interface.currency_code%TYPE
1608                     )
1609   RETURN VARCHAR2 IS
1610 
1611   x_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1612   l_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1613 
1614   l_rulv_tbl   rulv_tbl_type;
1615   l_rule_count NUMBER;
1616   x_msg_count  NUMBER;
1617   x_msg_data   VARCHAR2(2000);
1618 
1619   l_cust_acct_present VARCHAR2(1) := 'N';
1620   l_bto_present       VARCHAR2(1) := 'N';
1621 
1622   l_bill_to_site_use_id OKC_K_HEADERS_B.BILL_TO_SITE_USE_ID%TYPE;
1623   l_cust_acct_id        OKC_K_HEADERS_B.CUST_ACCT_ID%TYPE;
1624   l_proc_name           VARCHAR2(35) := 'check_header_literal';
1625 
1626   BEGIN
1627 
1628     debug_message(l_proc_name);
1629 
1630     IF (UPPER(p_import_request_stage) NOT IN ( 'NEW','PASSED','COMPLETE','APPROVED','BOOKED' )) THEN
1631        okl_api.set_message(
1632                            G_APP_NAME,
1633                            G_LITERAL_MISMATCH,
1634                            'COL_NAME',
1635                            'IMPORT_REQUEST_STAGE',
1636                            'COL_VALUE',
1637                            p_import_request_stage
1638                            );
1639        x_return_status := OKL_API.G_RET_STS_ERROR;
1640     END IF;
1641 
1642     IF (p_import_request_stage <> 'NEW'
1643         AND
1644         p_date_signed IS NULL ) THEN
1645         okl_api.set_message(
1646                             G_APP_NAME,
1647                             G_MISSING_VALUE_FOR_STAGE,
1648                             'CONTRACT_NUM',
1649                             p_contract_number,
1650                             'COL_NAME',
1651                             'DATE_SIGNED',
1652                             'STAGE',
1653                             p_import_request_stage
1654                            );
1655        x_return_status := OKL_API.G_RET_STS_ERROR;
1656     END IF;
1657 
1658     IF (p_import_request_stage <> 'NEW'
1659         AND
1660         p_date_signed >= NVL(p_start_date,SYSDATE) ) THEN
1661        okl_api.set_message(
1662                            G_APP_NAME,
1663                            G_DATESIGNED_LT_START
1664                           );
1665        x_return_status := OKL_API.G_RET_STS_ERROR;
1666     END IF;
1667 
1668     IF (p_import_request_stage = 'BOOKED'
1669         AND
1670         p_date_approved IS NULL) THEN
1671         okl_api.set_message(
1672                             G_APP_NAME,
1673                             G_MISSING_VALUE_FOR_STAGE,
1674                             'CONTRACT_NUM',
1675                             p_contract_number,
1676                             'COL_NAME',
1677                             'DATE_APPROVED',
1678                             'STAGE',
1679                             p_import_request_stage
1680                            );
1681        x_return_status := OKL_API.G_RET_STS_ERROR;
1682     END IF;
1683 
1684     IF (p_import_request_stage <> 'NEW'
1685         AND
1686         p_term IS NULL ) THEN
1687         okl_api.set_message(
1688                             G_APP_NAME,
1689                             G_MISSING_VALUE_FOR_STAGE,
1690                             'CONTRACT_NUM',
1691                             p_contract_number,
1692                             'COL_NAME',
1693                             'TERM',
1694                             'STAGE',
1695                             p_import_request_stage
1696                            );
1697        x_return_status := OKL_API.G_RET_STS_ERROR;
1698     END IF;
1699 
1700     IF (p_authoring_org_id IS NULL) THEN
1701         okl_api.set_message(
1702                             G_APP_NAME,
1703                             G_MISSING_VALUE,
1704                             'CONTRACT_NUM',
1705                             p_contract_number,
1706                             'COL_NAME',
1707                             'AUTHORING_ORG_ID'
1708                            );
1709        x_return_status := OKL_API.G_RET_STS_ERROR;
1710 
1711     END IF;
1712 
1713     IF (p_inv_organization_id IS NULL) THEN
1714         okl_api.set_message(
1715                             G_APP_NAME,
1716                             G_MISSING_VALUE,
1717                             'CONTRACT_NUM',
1718                             p_contract_number,
1719                             'COL_NAME',
1720                             'INV_ORGANIZATION_ID'
1721                            );
1722        x_return_status := OKL_API.G_RET_STS_ERROR;
1723 
1724     END IF;
1725 
1726    IF (UPPER(p_import_request_stage) <> 'NEW'
1727        AND
1728        p_expected_delivery_date IS NULL) THEN
1729        okl_api.set_message(
1730                            G_APP_NAME,
1731                            G_MISSING_VALUE_FOR_STAGE,
1732                            'CONTRACT_NUM',
1733                            p_contract_number,
1734                            'COL_NAME',
1735                            'EXPECTED_DELIVERY_DATE',
1736                            'STAGE',
1737                            p_import_request_stage
1738                           );
1739         x_return_status := OKL_API.G_RET_STS_ERROR;
1740    END IF;
1741 
1742 
1743    l_return_status := validate_currency_code(p_contract_number => p_contract_number,
1744                                              p_currency_code   => p_currency_code);
1745 
1746    IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
1747       x_return_status := l_return_status;
1748    END IF;
1749 
1750    return x_return_status;
1751 
1752  END check_header_literal;
1753 
1754 
1755 ------------------------------------------------------------------------------
1756 -- PROCEDURE check_for_release_asset
1757 -- This procedure checks to see whether the asset is released or not.
1758 -- Calls:
1759 -- Called By:
1760 --  load_input_record
1761 ------------------------------------------------------------------------------
1762    PROCEDURE check_for_release_asset(
1763                                      x_return_status OUT NOCOPY VARCHAR2,
1764                                      x_msg_count     OUT NOCOPY NUMBER,
1765                                      x_msg_data      OUT NOCOPY VARCHAR2,
1766                                      p_asset_number  IN  VARCHAR2,
1767                                      p_line_number   IN  NUMBER,
1768                                      p_org_id        IN  NUMBER,
1769                                      x_release_asset OUT NOCOPY VARCHAR2,
1770                                      x_asset_id      OUT NOCOPY OKL_LA_RELEASE_ASSETS_UV.ASSET_ID%TYPE
1771                                     ) IS
1772 
1773    CURSOR release_csr (p_asset_number VARCHAR2,
1774                        p_org_id       NUMBER) IS
1775    SELECT asset_id
1776    FROM   OKL_LA_RELEASE_ASSETS_UV
1777    WHERE  asset_number    = p_asset_number
1778    AND    organization_id = p_org_id;
1779 
1780    l_proc_name VARCHAR2(35) := 'CHECK_FOR_RELEASE_ASSET';
1781    l_release_yn VARCHAR2(1) := 'N';
1782    BEGIN
1783 
1784      x_return_status := OKL_API.G_RET_STS_SUCCESS;
1785      debug_message(l_proc_name);
1786 
1787      x_asset_id   := NULL;
1788      l_release_yn := 'N';
1789      OPEN release_csr (p_asset_number,
1790                        p_org_id);
1791      FETCH release_csr INTO x_asset_id;
1792      IF release_csr%NOTFOUND THEN
1793         l_release_yn := 'N';
1794      ELSE
1795         l_release_yn := 'Y';
1796      END IF;
1797      CLOSE release_csr;
1798 
1799      debug_message('=====> Asset '||p_asset_number||'/'||p_line_number||' : Released? : '||l_release_yn);
1800      debug_message('=====> Asset ID: '||x_asset_id);
1801 
1802      x_release_asset := l_release_yn;
1803 
1804    EXCEPTION
1805     WHEN OTHERS THEN
1806       okl_api.set_message(
1807                           G_APP_NAME,
1808                           G_UNEXPECTED_ERROR,
1809                           'OKL_SQLCODE',
1810                           SQLCODE,
1811                           'OKL_SQLERRM',
1812                           SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
1813                          );
1814       x_return_status := OKL_API.G_RET_STS_ERROR;
1815 
1816    END check_for_release_asset;
1817 ------------------------------------------------------------------------------
1818 -- PROCEDURE get_release_asset_flag
1819 -- This procedure checks to see whether the contract header includes release assets.
1820 -- If Asset lines include a Release Asset, the function returns a value of 'Y'
1821 -- If Asset lines does not include Releases Assets, the function returns a value of 'N'
1822 -- If Asset lines includes mixed Assets, the function reports error
1823 -- Calls:
1824 -- Called By:
1825 --  load_input_record
1826 ------------------------------------------------------------------------------
1827    FUNCTION get_release_asset_flag(
1828                                      x_return_status    OUT NOCOPY VARCHAR2,
1829                                      x_msg_count        OUT NOCOPY NUMBER,
1830                                      x_msg_data         OUT NOCOPY VARCHAR2,
1831                                      p_contract_number  IN  Varchar2,
1832                                      p_org_id           IN  NUMBER
1833                                     ) RETURN VARCHAR2 IS
1834 
1835    CURSOR release_csr (p_asset_number VARCHAR2,
1836                        p_org_id       NUMBER) IS
1837    SELECT 'Y'
1838    FROM   OKL_LINES_INTERFACE OLI
1839    WHERE  oli.contract_number_old = p_contract_number
1840    AND    EXISTS (    SELECT fa.asset_id
1841                       FROM   FA_ADDITIONS_B FA,
1842                              OKL_ASSET_RETURNS_B OAR,
1843                              OKC_K_ITEMS   CIM_FA,
1844                              OKC_K_LINES_B CLEB_FA,
1845                              OKC_K_LINES_B CLEB_TL,
1846                              OKC_K_HEADERS_B CHRB
1847                       WHERE  cleb_tl.chr_id = chrb.id
1848                       AND    chrb.inv_organization_id = p_org_id
1849                       AND    cleb_tl.lse_id = G_FIN_LINE_LTY_ID
1850                       AND    oar.kle_id = cleb_tl.id
1851                       AND    oar.ars_code = 'RE_LEASE'
1852                       AND    cleb_fa.cle_id = cleb_tl.id
1853                       AND    cleb_fa.lse_id = G_FA_LINE_LTY_ID
1854                       AND    cleb_fa.id = cim_fa.cle_id
1855                       AND    cleb_fa.dnz_chr_id =cim_fa.dnz_chr_id
1856                       AND    cim_fa.object1_id1 = fa.asset_id
1857                       AND    cim_fa.object1_id2 ='#'
1858                       AND    fa.asset_number = oli.asset_number
1859                       AND    not exists (SELECT '1'
1860                                          FROM  okc_k_headers_b chrb_2,
1861                                                okc_statuses_b chr_sts,
1862                                                okc_k_lines_b cleb_2,
1863                                                okc_statuses_b cle_sts,
1864                                                okc_k_items cim_2
1865                                          WHERE chrb_2.id = cleb_2.dnz_chr_id
1866                                          AND   chrb_2.scs_code in ('LEASE','LOAN')
1867                                          AND   chrb_2.sts_code = chr_sts.code
1868                                          AND   chr_sts.ste_code not in ('HOLD', 'EXPIRED', 'TERMINATED', 'CANCELLED')
1869                                          AND   cleb_2.id = cim_2.cle_id
1870                                          AND   cleb_2.dnz_chr_id = cim_2.dnz_chr_id
1871                                          AND   cleb_2.sts_code = cle_sts.code
1872                                          AND   cle_sts.ste_code not in ('HOLD', 'EXPIRED', 'TERMINATED', 'CANCELLED')
1873                                          AND   cim_2.object1_id1 = to_char(fa.asset_id)
1874                                          AND   cim_2.object1_id2 = '#' and cim_2.jtot_object1_code = 'OKX_ASSET'
1875                                         )
1876 
1877                  ) ;
1878 
1879 
1880    CURSOR unrelease_csr (p_asset_number VARCHAR2,
1881                        p_org_id       NUMBER) IS
1882 
1883    SELECT 'Y'
1884    FROM   OKL_LINES_INTERFACE OLI
1885    WHERE  oli.contract_number_old = p_contract_number
1886    AND    NOT EXISTS (SELECT fa.asset_id
1887                       FROM   FA_ADDITIONS_B FA,
1888                              OKL_ASSET_RETURNS_B OAR,
1889                              OKC_K_ITEMS   CIM_FA,
1890                              OKC_K_LINES_B CLEB_FA,
1891                              OKC_K_LINES_B CLEB_TL,
1892                              OKC_K_HEADERS_B CHRB
1893                       WHERE  cleb_tl.chr_id = chrb.id
1894                       AND    chrb.inv_organization_id = p_org_id
1895                       AND    cleb_tl.lse_id = G_FIN_LINE_LTY_ID
1896                       AND    oar.kle_id = cleb_tl.id
1897                       AND    oar.ars_code = 'RE_LEASE'
1898                       AND    cleb_fa.cle_id = cleb_tl.id
1899                       AND    cleb_fa.lse_id = G_FA_LINE_LTY_ID
1900                       AND    cleb_fa.id = cim_fa.cle_id
1901                       AND    cleb_fa.dnz_chr_id =cim_fa.dnz_chr_id
1902                       AND    cim_fa.object1_id1 = fa.asset_id
1903                       AND    cim_fa.object1_id2 ='#'
1904                       AND    fa.asset_number = oli.asset_number
1905                      ) ;
1906 
1907    l_proc_name VARCHAR2(35) := 'GET_RELEASE_ASSET_FLAG';
1908    l_released_assets_exist_yn VARCHAR2(1) := 'N';
1909    l_released_assets_not_exist_yn VARCHAR2(1) := 'N';
1910    l_release_yn VARCHAR2(1) ;
1911    BEGIN
1912 
1913      x_return_status := OKL_API.G_RET_STS_SUCCESS;
1914      debug_message(l_proc_name);
1915 
1916      OPEN release_csr (p_contract_number,
1917                        p_org_id);
1918 
1919      FETCH release_csr INTO l_released_assets_exist_yn;
1920      IF release_csr%NOTFOUND THEN
1921         l_released_assets_exist_yn := 'N';
1922      ELSE
1923         l_released_assets_exist_yn := 'Y';
1924      END IF;
1925      CLOSE release_csr;
1926      debug_message ('l_released_assets_exist_yn :'|| l_released_assets_exist_yn);
1927 
1928      OPEN unrelease_csr (p_contract_number,
1929                          p_org_id);
1930 
1931      FETCH unrelease_csr INTO l_released_assets_not_exist_yn;
1932      IF unrelease_csr%NOTFOUND THEN
1933         l_released_assets_not_exist_yn := 'N';
1934      ELSE
1935         l_released_assets_not_exist_yn := 'Y';
1936      END IF;
1937      CLOSE unrelease_csr;
1938      debug_message ('l_released_assets_not_exist_yn :'|| l_released_assets_not_exist_yn);
1939 
1940 
1941      IF ((l_released_assets_exist_yn = 'Y') AND (l_released_assets_not_exist_yn = 'N')) THEN
1942             l_release_yn := 'Y';
1943      ELSIF ((l_released_assets_exist_yn = 'N') AND (l_released_assets_not_exist_yn = 'Y')) THEN
1944             l_release_yn := 'N';
1945      -- 4539003
1946      ELSIF ((l_released_assets_exist_yn = 'N') AND (l_released_assets_not_exist_yn = 'N')) THEN
1947             l_release_yn := 'N';
1948      ELSE
1949         okl_api.set_message(
1950                             G_APP_NAME,
1951                             G_MIXED_ASSET,
1952                             'CONTRACT_NUM',
1953                             p_contract_number
1954                            );
1955         x_return_status := OKL_API.G_RET_STS_ERROR;
1956      END IF;
1957      debug_message ('l_release_yn : '|| l_release_yn);
1958 	 RETURN l_release_yn;
1959 
1960    EXCEPTION
1961     WHEN OTHERS THEN
1962       IF ( release_csr%ISOPEN ) THEN
1963          CLOSE release_csr;
1964       END IF;
1965       IF ( unrelease_csr%ISOPEN ) THEN
1966          CLOSE unrelease_csr;
1967       END IF;
1968       okl_api.set_message(
1969                           G_APP_NAME,
1970                           G_UNEXPECTED_ERROR,
1971                           'OKL_SQLCODE',
1972                           SQLCODE,
1973                           'OKL_SQLERRM',
1974                           SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
1975                          );
1976       x_return_status := OKL_API.G_RET_STS_ERROR;
1977 
1978    END get_release_asset_flag;
1979 ------------------------------------------------------------------------------
1980 -- PROCEDURE check_line_literal
1981 -- It checks for literals in
1982 --   line_number, line_type, amount, inventory_item, install_site,
1983 --   asset_corporate_book, asset_category_segments, asset_location_segments,
1984 --   depreciation_method, life_in_months, fee_code, price_list_name,
1985 --   counter_group_name, usage_bill_frequency_code, base_reading_uom_code
1986 -- columns and reports error, if any
1987 -- Returns OKL_API.G_RET_STS_ERROR for any Error
1988 --         OKL_API.G_RET_STS_SUCCESS
1989 -- Calls:
1990 --  check_stream_type_code
1991 -- Called By:
1992 --  check_input_record
1993 ------------------------------------------------------------------------------
1994 
1995   PROCEDURE check_line_literal (
1996                                x_return_status             OUT NOCOPY VARCHAR2,
1997                                x_msg_count                 OUT NOCOPY NUMBER,
1998                                x_msg_data                  OUT NOCOPY VARCHAR2,
1999                                p_contract_number           IN okl_header_interface.contract_number_old%TYPE,
2000                                p_import_request_stage      IN okl_header_interface.import_request_stage%TYPE,
2001                                p_product_id                IN okl_header_interface.product_id%TYPE,
2002                                p_product_name              IN okl_header_interface.product_name%TYPE,
2003                                p_line_number               IN okl_lines_interface.line_number%TYPE,
2004                                p_line_type                 IN okl_lines_interface.line_type%TYPE,
2005                                p_amount                    IN okl_lines_interface.amount%TYPE,
2006                                p_currency_code             IN okl_lines_interface.currency_code%TYPE,
2007                                p_asset_number              IN okl_lines_interface.asset_number%TYPE,
2008                                p_inventory_item_name       IN okl_lines_interface.inventory_item_name%TYPE,
2009                                p_inventory_item_id         IN okl_lines_interface.inventory_item_id%TYPE,
2010                                p_install_site_number       IN okl_lines_interface.install_site_number%TYPE,
2011                                p_install_site_id           IN okl_lines_interface.install_site_id%TYPE,
2012                                p_asset_corporate_book      IN okl_lines_interface.asset_corporate_book%TYPE,
2013                                p_asset_category_id         IN okl_lines_interface.asset_category_id%TYPE,
2014                                p_asset_category_segment1   IN okl_lines_interface.asset_category_segment1%TYPE,
2015                                p_asset_category_segment2   IN okl_lines_interface.asset_category_segment2%TYPE,
2016                                p_asset_category_segment3   IN okl_lines_interface.asset_category_segment3%TYPE,
2017                                p_asset_category_segment4   IN okl_lines_interface.asset_category_segment4%TYPE,
2018                                p_asset_category_segment5   IN okl_lines_interface.asset_category_segment5%TYPE,
2019                                p_asset_category_segment6   IN okl_lines_interface.asset_category_segment6%TYPE,
2020                                p_asset_category_segment7   IN okl_lines_interface.asset_category_segment7%TYPE,
2021                                p_asset_location_id         IN okl_lines_interface.asset_location_id%TYPE,
2022                                p_asset_location_segment1   IN okl_lines_interface.asset_location_segment1%TYPE,
2023                                p_asset_location_segment2   IN okl_lines_interface.asset_location_segment2%TYPE,
2024                                p_asset_location_segment3   IN okl_lines_interface.asset_location_segment3%TYPE,
2025                                p_asset_location_segment4   IN okl_lines_interface.asset_location_segment4%TYPE,
2026                                p_asset_location_segment5   IN okl_lines_interface.asset_location_segment5%TYPE,
2027                                p_asset_location_segment6   IN okl_lines_interface.asset_location_segment6%TYPE,
2028                                p_asset_location_segment7   IN okl_lines_interface.asset_location_segment7%TYPE,
2029                                p_depreciation_method_id    IN okl_lines_interface.depreciation_method_id%TYPE,
2030                                p_depreciation_method_code  IN okl_lines_interface.depreciation_method_code%TYPE,
2031                                p_life_in_months            IN okl_lines_interface.life_in_months%TYPE,
2032                                p_fee_code                  IN okl_lines_interface.fee_code%TYPE,
2033                                p_stream_purpose            IN okl_lines_interface.stream_purpose_code%TYPE,
2034                                p_fee_type                  IN okl_lines_interface.fee_type%TYPE,
2035                                p_price_list_name           IN okl_lines_interface.price_list_name%TYPE,
2036                                p_price_list_id             IN okl_lines_interface.price_list_id%TYPE,
2037                                p_counter_group_name        IN okl_lines_interface.counter_group_name%TYPE,
2038                                p_counter_group_id          IN okl_lines_interface.counter_group_id%TYPE,
2039                                p_usage_bill_frequency_code IN okl_lines_interface.usage_bill_frequency_code%TYPE,
2040                                p_base_reading_uom_code     IN okl_lines_interface.base_reading_uom_code%TYPE,
2041                                p_usage_type_code           IN okl_lines_interface.usage_type_code%TYPE,
2042                                p_usage_period              IN okl_lines_interface.usage_period%TYPE,
2043                                p_usage_no_of_period        IN okl_lines_interface.usage_no_of_period%TYPE,
2044                                p_tax_cost                  IN okl_lines_interface.tax_cost%TYPE,
2045                                p_tax_book                  IN okl_lines_interface.tax_book%TYPE,
2046                                p_life_in_months_tax        IN okl_lines_interface.life_in_months_tax%TYPE,
2047                                p_deprn_method_tax          IN okl_lines_interface.deprn_method_tax%TYPE,
2048                                p_deprn_rate_tax            IN okl_lines_interface.deprn_rate_tax%TYPE,
2049                                p_in_service_date           IN okl_lines_interface.in_service_date%TYPE,
2050 			       p_link_asset_amount         IN okl_lines_interface.link_asset_amount%TYPE,
2051                                p_inv_org_id                IN okl_header_interface.inventory_organization_id%TYPE,
2052                                p_term_quote_id             IN okl_lines_interface.termination_quote_id%TYPE,
2053                                p_term_quote_number         IN okl_lines_interface.termination_quote_number%TYPE,
2054                                p_fee_purpose_code          IN okl_lines_interface.fee_purpose_code%TYPE
2055                               ) IS
2056 -- 4475344
2057 /*
2058   CURSOR srv_supp_csr(p_contract_number OKL_PARTY_ROLES_INTERFACE.CONTRACT_NUMBER_OLD%TYPE,
2059                       p_line_number     OKL_PARTY_ROLES_INTERFACE.LINE_NUMBER%TYPE) IS
2060   SELECT service_vendor_id,
2061          service_vendor_name
2062   FROM   okl_party_roles_interface
2063   WHERE  contract_number_old = p_contract_number
2064   AND    line_number         = p_line_number;
2065 */
2066   CURSOR fnd_lookup_csr(p_lookup_code FND_LOOKUPS.LOOKUP_CODE%TYPE,
2067                         p_lookup_type FND_LOOKUPS.LOOKUP_TYPE%TYPE) IS
2068   SELECT 'X'
2069   FROM   FND_LOOKUPS
2070   WHERE  lookup_code = p_lookup_code
2071   AND    lookup_type = p_lookup_type;
2072 
2073   l_supp_name     OKL_PARTY_ROLES_INTERFACE.SERVICE_VENDOR_NAME%TYPE;
2074   l_supp_id       OKL_PARTY_ROLES_INTERFACE.SERVICE_VENDOR_ID%TYPE;
2075 
2076   x_id1 okl_strmtyp_source_v.id1%TYPE;
2077   x_asset_id      OKL_LA_RELEASE_ASSETS_UV.ASSET_ID%TYPE;
2078   x_release_asset VARCHAR2(1) := 'N';
2079 
2080   halt_validation EXCEPTION;
2081   l_return_status VARCHAR2(1);
2082 
2083   l_proc_name     VARCHAR2(35) := 'check_line_literal';
2084   l_fee_name      OKL_STRMTYP_SOURCE_V.NAME%TYPE;
2085 
2086   l_exists_yn     VARCHAR2(1);
2087 
2088   BEGIN
2089     debug_message(l_proc_name);
2090 
2091     x_return_status := OKL_API.G_RET_STS_SUCCESS;
2092     debug_message('Line type: '||p_line_type);
2093 
2094     IF (p_line_type NOT IN ('ASSET','SERVICE', 'FEE', 'USAGE', 'ASSET_SUBSIDY', 'ASSET_ADDON' )) THEN
2095        okl_api.set_message(
2096                            G_APP_NAME,
2097                            G_INVALID_VALUE,
2098                            'CONTRACT_NUM',
2099                            p_contract_number||'/'||TO_CHAR(p_line_number),
2100                            'COL_NAME',
2101                            'LINE_TYPE',
2102                            'COL_VALUE',
2103                            p_line_type
2104                            );
2105 
2106        x_return_status := OKL_API.G_RET_STS_ERROR;
2107        RAISE halt_validation; -- major error, don't proceed with other validation
2108     END IF;
2109 
2110     IF (p_line_type = 'ASSET'
2111         AND
2112         p_asset_number IS NULL) THEN
2113         okl_api.set_message(
2114                             G_APP_NAME,
2115                             G_MISSING_VALUE_FOR_LINE,
2116                             'CONTRACT_NUM',
2117                             p_contract_number||'/'||TO_CHAR(p_line_number),
2118                             'COL_NAME',
2119                             'ASSET NUMBER',
2120                             'LINE',
2121                             p_line_type
2122                             );
2123 
2124         x_return_status := OKL_API.G_RET_STS_ERROR;
2125     END IF;
2126 /* 4414408
2127     check_for_release_asset(
2128                             x_return_status => l_return_status,
2129                             x_msg_count     => x_msg_count,
2130                             x_msg_data      => x_msg_data,
2131                             p_asset_number  => p_asset_number,
2132                             p_line_number   => p_line_number,
2133                             p_org_id        => p_inv_org_id,
2134                             x_release_asset => x_release_asset,
2135                             x_asset_id      => x_asset_id
2136                            );
2137 
2138     IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2139         x_return_status := OKL_API.G_RET_STS_ERROR;
2140     END IF;
2141 
2142     debug_message('------> Asset '||p_asset_number||': Released? :'||x_release_asset);
2143 
2144     IF (p_line_type = 'ASSET'
2145         AND
2146         x_release_asset = 'N'
2147         AND
2148         p_tax_book IS NOT NULL
2149         AND
2150         p_asset_corporate_book IS NULL) THEN
2151            okl_api.set_message(
2152                                 G_APP_NAME,
2153                                 G_MISSING_VALUE_FOR_LINE,
2154                                 'CONTRACT_NUM',
2155                                 p_contract_number||'/'||TO_CHAR(p_line_number),
2156                                 'COL_NAME',
2157                                 'CORPORATE BOOK',
2158                                 'LINE',
2159                                 p_line_type
2160                                 );
2161            x_return_status := OKL_API.G_RET_STS_ERROR;
2162 
2163     END IF;
2164 */
2165     IF (p_line_type = 'USAGE'
2166         AND
2167         p_asset_number IS NULL
2168         AND
2169         p_import_request_stage <> 'NEW') THEN
2170         okl_api.set_message(
2171                             G_APP_NAME,
2172                             G_MISSING_VALUE_STAGE_LINE,
2173                             'CONTRACT_NUM',
2174                             p_contract_number||'/'||TO_CHAR(p_line_number),
2175                             'COL_NAME',
2176                             'ASSET NUMBER',
2177                             'STAGE',
2178                             p_import_request_stage,
2179                             'LINE',
2180                             p_line_type
2181                             );
2182 
2183         x_return_status := OKL_API.G_RET_STS_ERROR;
2184     END IF;
2185 
2186     IF (p_line_type IN ('SERVICE', 'FEE')
2187         AND
2188         p_amount IS NULL) THEN
2189         okl_api.set_message(
2190                             G_APP_NAME,
2191                             G_MISSING_VALUE_FOR_LINE,
2192                             'CONTRACT_NUM',
2193                             p_contract_number||'/'||TO_CHAR(p_line_number),
2194                             'COL_NAME',
2195                             'AMOUNT',
2196                             'LINE',
2197                             p_line_type
2198                             );
2199 
2200         x_return_status := OKL_API.G_RET_STS_ERROR;
2201     END IF;
2202 
2203 /* 4414408
2204     IF (p_line_type = 'ASSET'
2205         AND
2206         x_release_asset = 'N'
2207         AND
2208         p_inventory_item_name IS NULL
2209         AND
2210         p_inventory_item_id IS NULL) THEN
2211         okl_api.set_message(
2212                             G_APP_NAME,
2213                             G_MISSING_VALUE_FOR_LINE,
2214                             'CONTRACT_NUM',
2215                             p_contract_number||'/'||TO_CHAR(p_line_number),
2216                             'COL_NAME',
2217                             'INVENTORY_ITEM_NAME OR INVENTORY_ITEM_ID',
2218                             'LINE',
2219                             p_line_type
2220                             );
2221 
2222         x_return_status := OKL_API.G_RET_STS_ERROR;
2223     END IF;
2224 */
2225     IF (p_line_type IN ('SERVICE','USAGE')
2226         AND
2227         p_inventory_item_name IS NULL
2228         AND
2229         p_inventory_item_id IS NULL) THEN
2230         okl_api.set_message(
2231                             G_APP_NAME,
2232                             G_MISSING_VALUE_FOR_LINE,
2233                             'CONTRACT_NUM',
2234                             p_contract_number||'/'||TO_CHAR(p_line_number),
2235                             'COL_NAME',
2236                             'INVENTORY_ITEM_NAME OR INVENTORY_ITEM_ID',
2237                             'LINE',
2238                             p_line_type
2239                             );
2240 
2241         x_return_status := OKL_API.G_RET_STS_ERROR;
2242     END IF;
2243 
2244 /* 4414408
2245     IF (p_line_type = 'ASSET'
2246         AND
2247         x_release_asset = 'N'
2248         AND
2249         p_install_site_number IS NULL
2250         AND
2251         p_install_site_id IS NULL) THEN
2252         okl_api.set_message(
2253                             G_APP_NAME,
2254                             G_MISSING_VALUE_FOR_LINE,
2255                             'CONTRACT_NUM',
2256                             p_contract_number||'/'||TO_CHAR(p_line_number),
2257                             'COL_NAME',
2258                             'INSTALL_SITE_NUMBER OR INSTALL_SITE_ID',
2259                             'LINE',
2260                             p_line_type
2261                             );
2262 
2263         x_return_status := OKL_API.G_RET_STS_ERROR;
2264     END IF;
2265 */
2266     IF (p_line_type = 'FEE') THEN
2267 
2268       IF (p_fee_code IS NULL) THEN
2269          okl_api.set_message(
2270                              G_APP_NAME,
2271                              G_MISSING_VALUE_FOR_LINE,
2272                              'CONTRACT_NUM',
2273                              p_contract_number||'/'||TO_CHAR(p_line_number),
2274                              'COL_NAME',
2275                              'FEE_CODE',
2276                              'LINE',
2277                              p_line_type
2278                              );
2279 
2280          x_return_status := OKL_API.G_RET_STS_ERROR;
2281 
2282       ELSE
2283 
2284          check_stream_type_code(
2285                                 x_return_status    => l_return_status,
2286                                 x_msg_count        => x_msg_count,
2287                                 x_msg_data         => x_msg_data,
2288                                 p_stream_type_code => p_fee_code,
2289                                 p_stream_purpose   => p_stream_purpose,
2290                                 x_id1              => x_id1,
2291                                 x_name             => l_fee_name
2292                                );
2293          IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2294             okl_api.set_message(
2295                                 G_APP_NAME,
2296                                 G_INVALID_VALUE,
2297                                 'CONTRACT_NUM',
2298                                 p_contract_number||'/'||TO_CHAR(p_line_number),
2299                                 'COL_NAME',
2300                                 'FEE_CODE, STREAM_PURPOSE_CODE',
2301                                 'COL_VALUE',
2302                                 p_fee_code||', '||p_stream_purpose
2303                               );
2304              x_return_status := OKL_API.G_RET_STS_ERROR;
2305          END IF;
2306       END IF; --fee_code not null
2307 
2308       IF (p_fee_type IS NULL) THEN
2309          okl_api.set_message(
2310                              G_APP_NAME,
2311                              G_MISSING_VALUE_FOR_LINE,
2312                              'CONTRACT_NUM',
2313                              p_contract_number||'/'||TO_CHAR(p_line_number),
2314                              'COL_NAME',
2315                              'FEE_TYPE',
2316                              'LINE',
2317                              p_line_type
2318                              );
2319 
2320          x_return_status := OKL_API.G_RET_STS_ERROR;
2321 
2322       END IF; --Fee Type
2323 
2324       IF (p_fee_type = 'ROLLOVER'
2325           AND
2326           ( p_term_quote_id IS NULL
2327             AND
2328             p_term_quote_number IS NULL)
2329          ) THEN
2330 
2331             okl_api.set_message(
2332                                 G_APP_NAME,
2333                                 G_MISSING_VALUE_FOR_LINE,
2334                                 'CONTRACT_NUM',
2335                                 p_contract_number||'/'||p_line_number,
2336                                 'COL_NAME',
2337                                 'TERMINATION_QUOTE_ID OR TERMINATION_QUOTE_NUMBER',
2338                                 'LINE',
2339                                 p_line_type
2340                                 );
2341             x_return_status := OKL_API.G_RET_STS_ERROR;
2342       END IF;
2343 
2344       IF (p_fee_purpose_code is NOT NULL) THEN
2345          OPEN fnd_lookup_csr (p_fee_purpose_code, 'OKL_FEE_PURPOSE');
2346          FETCH fnd_lookup_csr INTO l_exists_yn;
2347          IF (fnd_lookup_csr%NOTFOUND) THEN
2348             okl_api.set_message(
2349                                 G_APP_NAME,
2350                                 G_INVALID_VALUE,
2351                                 'CONTRACT_NUM',
2352                                 p_contract_number||'/'||TO_CHAR(p_line_number),
2353                                 'COL_NAME',
2354                                 'FEE_PURPOSE_CODE',
2355                                 'COL_VALUE',
2356                                 p_fee_purpose_code
2357                               );
2358              x_return_status := OKL_API.G_RET_STS_ERROR;
2359          END IF;
2360          CLOSE fnd_lookup_csr;
2361       END IF;
2362 
2363     END IF; -- fee line type
2364 
2365     IF (p_line_type = 'USAGE'
2366         AND
2367         p_price_list_name IS NULL
2368         AND
2369         p_price_list_id IS NULL) THEN
2370         okl_api.set_message(
2371                             G_APP_NAME,
2372                             G_MISSING_VALUE_FOR_LINE,
2373                             'CONTRACT_NUM',
2374                             p_contract_number||'/'||TO_CHAR(p_line_number),
2375                             'COL_NAME',
2376                             'PRICE_LIST_NAME OR PRICE_LIST_ID',
2377                             'LINE',
2378                             p_line_type
2379                             );
2380 
2381         x_return_status := OKL_API.G_RET_STS_ERROR;
2382     END IF;
2383 
2384     IF (p_line_type = 'USAGE'
2385         AND
2386         p_base_reading_uom_code IS NULL) THEN
2387         okl_api.set_message(
2388                             G_APP_NAME,
2389                             G_MISSING_VALUE_FOR_LINE,
2390                             'CONTRACT_NUM',
2391                             p_contract_number||'/'||TO_CHAR(p_line_number),
2392                             'COL_NAME',
2393                             'BASE_READING_UOM_CODE',
2394                             'LINE',
2395                             p_line_type
2396                             );
2397 
2398         x_return_status := OKL_API.G_RET_STS_ERROR;
2399     END IF;
2400 
2401     IF (p_line_type = 'USAGE'
2402         AND
2403         p_usage_type_code IS NULL) THEN
2404         okl_api.set_message(
2405                             G_APP_NAME,
2406                             G_MISSING_VALUE_FOR_LINE,
2407                             'CONTRACT_NUM',
2408                             p_contract_number||'/'||TO_CHAR(p_line_number),
2409                             'COL_NAME',
2410                             'USAGE_TYPE',
2411                             'LINE',
2412                             p_line_type
2413                             );
2414 
2415         x_return_status := OKL_API.G_RET_STS_ERROR;
2416     END IF;
2417 
2418     IF (p_line_type = 'USAGE'
2419         AND
2420         p_usage_period IS NULL) THEN
2421         okl_api.set_message(
2422                             G_APP_NAME,
2423                             G_MISSING_VALUE_FOR_LINE,
2424                             'CONTRACT_NUM',
2425                             p_contract_number||'/'||TO_CHAR(p_line_number),
2426                             'COL_NAME',
2427                             'USAGE_PERIOD',
2428                             'LINE',
2429                             p_line_type
2430                             );
2431 
2432         x_return_status := OKL_API.G_RET_STS_ERROR;
2433     END IF;
2434 
2435     IF (p_line_type = 'USAGE'
2436         AND
2437         p_usage_no_of_period IS NULL) THEN
2438         okl_api.set_message(
2439                             G_APP_NAME,
2440                             G_MISSING_VALUE_FOR_LINE,
2441                             'CONTRACT_NUM',
2442                             p_contract_number||'/'||TO_CHAR(p_line_number),
2443                             'COL_NAME',
2444                             'USAGE_NO_OF_PERIOD',
2445                             'LINE',
2446                             p_line_type
2447                             );
2448 
2449         x_return_status := OKL_API.G_RET_STS_ERROR;
2450     END IF;
2451 
2452     IF (p_line_type = 'SERVICE') THEN
2453        --
2454        -- Check for the presence of SERVICE VENDOR
2455        -- and link asset line amount
2456        --
2457        IF (p_link_asset_amount IS NULL
2458            AND
2459            p_asset_number IS NOT NULL) THEN
2460             okl_api.set_message(
2461                              G_APP_NAME,
2462                              G_MISSING_VALUE_FOR_LINE,
2463                              'CONTRACT_NUM',
2464                              p_contract_number||'/'||TO_CHAR(p_line_number),
2465                              'COL_NAME',
2466                              'LINK ASSET AMOUNT',
2467                              'LINE',
2468                              p_line_type
2469                             );
2470             x_return_status := OKL_API.G_RET_STS_ERROR;
2471         END IF;
2472 
2473 /* 4475344
2474         l_supp_name := NULL;
2475         l_supp_id   := NULL;
2476         OPEN srv_supp_csr (p_contract_number,
2477                            p_line_number);
2478         FETCH srv_supp_csr INTO l_supp_id,
2479                                 l_supp_name;
2480         CLOSE srv_supp_csr;
2481 
2482         IF (l_supp_name IS NULL
2483             AND
2484             l_supp_id IS NULL) THEN
2485            okl_api.set_message(
2486                                 G_APP_NAME,
2487                                 G_MISSING_VALUE_FOR_LINE,
2488                                 'CONTRACT_NUM',
2489                                 p_contract_number||'/'||TO_CHAR(p_line_number),
2490                                 'COL_NAME',
2491                                 'SERVICE VENDOR',
2492                                 'LINE',
2493                                 p_line_type
2494                                 );
2495 
2496            x_return_status := OKL_API.G_RET_STS_ERROR;
2497         END IF;
2498 */
2499     END IF; -- SERVICE line
2500 
2501     debug_message('return status :'||x_return_status);
2502 
2503     return;
2504 
2505   EXCEPTION
2506     WHEN halt_validation THEN
2507        x_return_status := OKL_API.G_RET_STS_ERROR;
2508 
2509   END check_line_literal;
2510 
2511 ------------------------------------------------------------------------------
2512 -- FUNCTION validate_customer
2513 -- It validates customer against database, OKX_PARTIES_V
2514 -- Returns OKL_API.G_RET_STS_ERROR for unknown customer
2515 --         OKL_API.G_RET_STS_SUCCESS for existing customer
2516 -- Also outputs ID1 for corresponding Customer
2517 -- Calls:
2518 --  None
2519 -- Called By:
2520 --  check_input_record
2521 ------------------------------------------------------------------------------
2522 
2523   FUNCTION validate_customer (p_contract_number IN  OKL_HEADER_INTERFACE.CONTRACT_NUMBER_OLD%TYPE,
2524                               p_customer_id     IN  OKX_PARTIES_V.ID1%TYPE,
2525                               p_customer_number IN  OKX_PARTIES_V.PARTY_NUMBER%TYPE,
2526                               x_id1             OUT NOCOPY OKX_PARTIES_V.ID1%TYPE)
2527   RETURN VARCHAR2 IS
2528 
2529     CURSOR customer_csr (p_customer_id     OKX_PARTIES_V.ID1%TYPE,
2530                          p_customer_number OKX_PARTIES_V.PARTY_NUMBER%TYPE) IS
2531     SELECT   id1
2532     FROM     okx_parties_v
2533     WHERE    NVL(TRUNC(end_date_active), TRUNC(SYSDATE)) >= TRUNC(SYSDATE)
2534     AND      ((id1          = p_customer_id
2535               AND p_customer_id IS NOT NULL)
2536               OR
2537              (party_number = p_customer_number
2538               AND
2539               p_customer_number IS NOT NULL));
2540 
2541   BEGIN
2542 
2543     OPEN  customer_csr(p_customer_id,
2544                        p_customer_number);
2545     FETCH customer_csr into x_id1;
2546     CLOSE customer_csr;
2547 
2548     IF (x_id1 IS NULL) THEN
2549        okl_api.set_message(
2550                            G_APP_NAME,
2551                            G_INVALID_VALUE,
2552                            'CONTRACT_NUM',
2553                            p_contract_number,
2554                            'COL_NAME',
2555                            'CUSTOMER_ID, NUMBER',
2556                            'COL_VALUE',
2557                            p_customer_id||', '||p_customer_number
2558                            );
2559        return OKL_API.G_RET_STS_ERROR;  -- Customer Not found
2560     ELSE
2561        return OKL_API.G_RET_STS_SUCCESS;
2562     END IF;
2563 
2564   END validate_customer;
2565 
2566 ------------------------------------------------------------------------------
2567 -- FUNCTION check_contract_number
2568 -- It checks for duplicate contract number in OKL.
2569 -- Returns OKL_API.G_RET_STS_ERROR for duplicate and
2570 --         OKL_API.G_RET_STS_SUCCESS for New
2571 -- Calls:
2572 --  None
2573 -- Called By:
2574 --  check_input_record
2575 ------------------------------------------------------------------------------
2576 
2577   FUNCTION check_contract_number (p_contract_number IN VARCHAR2)
2578   RETURN VARCHAR2 IS
2579 
2580     CURSOR khdr_csr (p_ontract_number OKC_K_HEADERS_V.CONTRACT_NUMBER%TYPE) IS
2581     SELECT contract_number
2582     FROM   okc_k_headers_v
2583     WHERE  contract_number = p_contract_number;
2584 
2585     x_return_status   VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
2586     l_contract_number OKC_K_HEADERS_V.CONTRACT_NUMBER%TYPE;
2587 
2588   BEGIN
2589 
2590     OPEN khdr_csr(p_contract_number);
2591     FETCH khdr_csr INTO l_contract_number;
2592     IF khdr_csr%NOTFOUND THEN
2593        x_return_status := OKL_API.G_RET_STS_SUCCESS;
2594     ELSE
2595        x_return_status := OKL_API.G_RET_STS_ERROR;
2596     END IF;
2597     CLOSE khdr_csr;
2598 
2599     IF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2600        okl_api.set_message(
2601                            G_APP_NAME,
2602                            G_DUP_VALUE,
2603                            'COL_NAME',
2604                            'CONTRACT_NUMBER_OLD',
2605                            'COL_VALUE',
2606                            p_contract_number
2607                           );
2608     END IF;
2609 
2610     return x_return_status;
2611 
2612   END check_contract_number;
2613 
2614 
2615 ------------------------------------------------------------------------------
2616 -- PROCEDURE check_payment_frequency_code
2617 -- It validates Payment Frequency Code and returns ID1 and
2618 -- stacks error, if any for further processing
2619 -- Calls:
2620 --  None
2621 -- Called By:
2622 --  check_payment_record
2623 --  create_payment_other_rules
2624 --  load_input_record
2625 ------------------------------------------------------------------------------
2626    PROCEDURE check_payment_frequency_code(
2627                                           x_return_status     OUT NOCOPY VARCHAR2,
2628                                           x_msg_count         OUT NOCOPY NUMBER,
2629                                           x_msg_data          OUT NOCOPY VARCHAR2,
2630                                           p_payment_freq_code IN  okl_payments_interface.payment_frequency_code%TYPE,
2631                                           x_id1               OUT NOCOPY okx_tuom_v.id1%TYPE,
2632                                           x_uom_code          OUT NOCOPY okx_tuom_v.uom_code%TYPE
2633                                         ) IS
2634 /*
2635    CURSOR freq_csr (p_payment_freq_code okl_payments_interface.payment_frequency_code%TYPE) IS
2636    SELECT id1,
2637           uom_code
2638    FROM   okx_tuom_v
2639    WHERE  uom_class     = 'OKL-TIME'
2640    AND    base_uom_flag = 'N'
2641    AND    name          = p_payment_freq_code;
2642 */
2643    CURSOR freq_csr (p_payment_freq_code okl_payments_interface.payment_frequency_code%TYPE) IS
2644    SELECT id1,
2645           id1
2646    FROM   okl_time_units_v
2647    WHERE  name = p_payment_freq_code;
2648 
2649    l_id1      okx_tuom_v.id1%TYPE;
2650    l_uom_code okx_tuom_v.uom_code%TYPE;
2651 
2652    BEGIN
2653 
2654       x_return_status := OKL_API.G_RET_STS_SUCCESS;
2655       OPEN freq_csr(p_payment_freq_code);
2656       FETCH freq_csr INTO l_id1,
2657                           l_uom_code;
2658       IF freq_csr%NOTFOUND THEN
2659          x_return_status := OKL_API.G_RET_STS_ERROR;
2660       END IF;
2661 
2662       x_id1      := l_id1;
2663       x_uom_code := l_uom_code;
2664       RETURN;
2665 
2666    END check_payment_frequency_code;
2667 
2668 ------------------------------------------------------------------------------
2669 -- PROCEDURE check_contract_line
2670 -- It validates Party role line number/ Terms Line number/ Payments line number against contract
2671 -- line number in OKL_LINES_INTERFACE table
2672 -- Calls:
2673 --  None
2674 -- Called By:
2675 --  check_payment_record
2676 --  check_input_record
2677 ------------------------------------------------------------------------------
2678    PROCEDURE  check_contract_line(
2679                                   x_return_status   OUT NOCOPY VARCHAR2,
2680                                   p_contract_number IN  okl_party_roles_interface.contract_number_old%TYPE,
2681                                   p_line_number     IN  okl_party_roles_interface.line_number%TYPE
2682                                  ) IS
2683 
2684    CURSOR line_csr (p_contract_number VARCHAR2,
2685                     p_line_number     NUMBER) IS
2686    SELECT 'X'
2687    FROM   okl_lines_interface
2688    WHERE  contract_number_old = p_contract_number
2689    AND    line_number         = p_line_number;
2690 
2691    l_dummy VARCHAR2(1);
2692    BEGIN
2693 
2694      x_return_status := OKL_API.G_RET_STS_SUCCESS;
2695 
2696      OPEN line_csr (p_contract_number,
2697                     p_line_number);
2698      FETCH line_csr INTO l_dummy;
2699      IF line_csr%NOTFOUND THEN
2700         x_return_status := OKL_API.G_RET_STS_ERROR;
2701      END IF;
2702      CLOSE line_csr;
2703 
2704      return;
2705    END check_contract_line;
2706 
2707 ------------------------------------------------------------------------------
2708 -- PROCEDURE check_payment_record
2709 -- It validates Payment interface Record and stacks error, if any
2710 -- for further processing
2711 -- Calls:
2712 --  None
2713 -- Called By:
2714 --  check_payment_record
2715 ------------------------------------------------------------------------------
2716    PROCEDURE check_payment_record(
2717                                  x_return_status              OUT NOCOPY VARCHAR2,
2718                                  x_msg_count                  OUT NOCOPY NUMBER,
2719                                  x_msg_data                   OUT NOCOPY VARCHAR2,
2720                                  p_contract_number_old        IN  okl_payments_interface.contract_number_old%TYPE,
2721                                  p_line_number                IN  okl_payments_interface.line_number%TYPE,
2722                                  p_asset_number               IN  okl_payments_interface.asset_number%TYPE,
2723                                  p_payment_type_code          IN  VARCHAR2,
2724                                  p_stream_purpose             IN  okl_payments_interface.stream_purpose_code%TYPE,
2725                                  p_payment_schedule_number    IN  okl_payments_interface.payment_schedule_number%TYPE,
2726                                  p_payment_frequency_code     IN  okl_payments_interface.payment_frequency_code%TYPE,
2727                                  p_arrears_flag               IN  okl_payments_interface.arrears_flag%TYPE,
2728                                  p_advance_payments           IN  okl_payments_interface.advance_payments%TYPE,
2729                                  p_payment_amount             IN  okl_payments_interface.payment_amount%TYPE,
2730                                  p_start_date                 IN  okl_payments_interface.start_date%TYPE,
2731                                  p_number_of_periods          IN  okl_payments_interface.number_of_periods%TYPE,
2732                                  p_rate                       IN  okl_payments_interface.rate%TYPE,
2733                                  p_comments                   IN  okl_payments_interface.comments%TYPE,
2734                                  p_stub_days                  IN  okl_payments_interface.stub_days%TYPE,
2735                                  p_stub_amount                IN  okl_payments_interface.stub_amount%TYPE
2736                                 ) IS
2737 
2738    x_id1          okx_tuom_v.id1%TYPE;
2739    x_id2          okl_strmtyp_source_v.id1%TYPE;
2740    x_uom_code     okx_tuom_v.uom_code%TYPE;
2741    payment_failed EXCEPTION;
2742 
2743    l_return_status VARCHAR2(1);
2744    l_proc_name     VARCHAR2(35) := 'check_payment_record';
2745    l_payment_name  OKL_STRMTYP_SOURCE_V.NAME%TYPE;
2746 
2747    BEGIN
2748 
2749      debug_message(l_proc_name);
2750 
2751 /*
2752       IF (p_asset_number IS NULL
2753           AND
2754           p_line_number IS NOT NULL) THEN
2755          okl_api.set_message(
2756                              G_APP_NAME,
2757                              G_MISSING_VALUE,
2758                              'CONTRACT_NUM',
2759                              p_contract_number_old||'/'||p_line_number,
2760                              'COL_NAME',
2761                              'ASSET_NUMBER'
2762                             );
2763          x_return_status := OKL_API.G_RET_STS_ERROR;
2764       END IF;
2765 */
2766 
2767       IF (p_payment_type_code IS NULL) THEN
2768 
2769          okl_api.set_message(
2770                              G_APP_NAME,
2771                              G_MISSING_VALUE,
2772                              'CONTRACT_NUM',
2773                              p_contract_number_old||'/'||p_line_number,
2774                              'COL_NAME',
2775                              'PAYMENT_TYPE_CODE'
2776                             );
2777          x_return_status := OKL_API.G_RET_STS_ERROR;
2778       ELSE
2779 
2780          check_stream_type_code(
2781                                  x_return_status    => l_return_status,
2782                                  x_msg_count        => x_msg_count,
2783                                  x_msg_data         => x_msg_data,
2784                                  p_stream_type_code => p_payment_type_code,
2785                                  p_stream_purpose   => p_stream_purpose,
2786                                  x_id1              => x_id2,
2787                                  x_name             => l_payment_name
2788                                 );
2789 
2790          IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2791             okl_api.set_message(
2792                                 G_APP_NAME,
2793                                 G_INVALID_VALUE,
2794                                 'CONTRACT_NUM',
2795                                 p_contract_number_old||'/'||p_line_number,
2796                                 'COL_NAME',
2797                                 'PAYMENT_TYPE_CODE, STREAM_PURPOSE_CODE',
2798                                 'COL_VALUE',
2799                                  p_payment_type_code||', '||p_stream_purpose
2800                                 );
2801              x_return_status := OKL_API.G_RET_STS_ERROR;
2802          END IF;
2803       END IF;
2804 
2805 /*
2806       IF (p_payment_amount IS NULL
2807           AND
2808           p_rate IS NULL) THEN
2809           okl_api.set_message(
2810                               G_APP_NAME,
2811                               G_MISSING_VALUE,
2812                               'CONTRACT_NUM',
2813                               p_contract_number_old||'/'||p_line_number,
2814                               'COL_NAME',
2815                               'PAYMENT_AMOUNT or RATE'
2816                              );
2817           x_return_status := OKL_API.G_RET_STS_ERROR;
2818       END IF;
2819 */
2820 
2821       IF (p_payment_frequency_code IS NULL) THEN
2822 
2823          okl_api.set_message(
2824                              G_APP_NAME,
2825                              G_MISSING_VALUE,
2826                              'CONTRACT_NUM',
2827                              p_contract_number_old||'/'||p_line_number,
2828                              'COL_NAME',
2829                              'PAYMENT_FREQUENCY_CODE'
2830                             );
2831          x_return_status := OKL_API.G_RET_STS_ERROR;
2832       ELSE
2833          check_payment_frequency_code(
2834                                       x_return_status     => l_return_status,
2835                                       x_msg_count         => x_msg_count,
2836                                       x_msg_data          => x_msg_data,
2837                                       p_payment_freq_code => p_payment_frequency_code,
2838                                       x_id1               => x_id1,
2839                                       x_uom_code          => x_uom_code
2840                                      );
2841          IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2842             okl_api.set_message(
2843                                 G_APP_NAME,
2844                                 G_INVALID_VALUE,
2845                                 'CONTRACT_NUM',
2846                                 p_contract_number_old||'/'||p_line_number,
2847                                 'COL_NAME',
2848                                 'PAYMENT_FREQUENCY_CODE',
2849                                 'COL_VALUE',
2850                                  p_payment_frequency_code
2851                                 );
2852              x_return_status := OKL_API.G_RET_STS_ERROR;
2853          END IF;
2854       END IF;
2855 
2856       IF (p_advance_payments IS NULL) THEN
2857          okl_api.set_message(
2858                              G_APP_NAME,
2859                              G_MISSING_VALUE,
2860                              'CONTRACT_NUM',
2861                              p_contract_number_old||'/'||p_line_number,
2862                              'COL_NAME',
2863                              'ADVANCE_PAYMENTS'
2864                             );
2865          x_return_status := OKL_API.G_RET_STS_ERROR;
2866       END IF;
2867 
2868       IF (p_arrears_flag <> 'Y'
2869           AND
2870           p_arrears_flag <> 'N') THEN
2871 
2872          okl_api.set_message(
2873                              G_APP_NAME,
2874                              G_INVALID_VALUE,
2875                              'CONTRACT_NUM',
2876                              p_contract_number_old||'/'||p_line_number,
2877                              'COL_NAME',
2878                              'ARREARS_FLAG',
2879                              'COL_VALUE',
2880                               p_arrears_flag
2881                              );
2882           x_return_status := OKL_API.G_RET_STS_ERROR;
2883       END IF;
2884 
2885 /*
2886       IF (p_start_date IS NULL) THEN
2887          okl_api.set_message(
2888                              G_APP_NAME,
2889                              G_MISSING_VALUE,
2890                              'CONTRACT_NUM',
2891                              p_contract_number_old||'/'||p_line_number,
2892                              'COL_NAME',
2893                              'START_DATE'
2894                             );
2895          x_return_status := OKL_API.G_RET_STS_ERROR;
2896       END IF;
2897 */
2898 
2899       IF (p_stub_days IS NOT NULL
2900           AND
2901           p_stub_amount IS NOT NULL
2902           AND
2903           p_number_of_periods IS NOT NULL
2904           AND
2905           p_payment_amount IS NOT NULL
2906          ) THEN
2907          okl_api.set_message(
2908                              G_APP_NAME,
2909                              G_STUB_PMNT_BOTH,
2910                              'CONTRACT_NUM',
2911                              p_contract_number_old||'/'||p_line_number
2912                             );
2913          x_return_status := OKL_API.G_RET_STS_ERROR;
2914       ELSIF (p_stub_days IS NULL AND p_stub_amount IS NOT NULL) THEN
2915          okl_api.set_message(
2916                              G_APP_NAME,
2917                              G_MISSING_VALUE,
2918                              'CONTRACT_NUM',
2919                              p_contract_number_old||'/'||p_line_number,
2920                              'COL_NAME',
2921                              'STUB_DAYS'
2922                             );
2923          x_return_status := OKL_API.G_RET_STS_ERROR;
2924       ELSIF (p_stub_days IS NOT NULL AND p_stub_amount IS NULL) THEN
2925          okl_api.set_message(
2926                              G_APP_NAME,
2927                              G_MISSING_VALUE,
2928                              'CONTRACT_NUM',
2929                              p_contract_number_old||'/'||p_line_number,
2930                              'COL_NAME',
2931                              'STUB_AMOUNT'
2932                             );
2933          x_return_status := OKL_API.G_RET_STS_ERROR;
2934       ELSIF (p_number_of_periods IS NOT NULL AND p_payment_amount IS NULL) THEN
2935          okl_api.set_message(
2936                              G_APP_NAME,
2937                              G_MISSING_VALUE,
2938                              'CONTRACT_NUM',
2939                              p_contract_number_old||'/'||p_line_number,
2940                              'COL_NAME',
2941                              'PAYMENT_AMOUNT'
2942                             );
2943          x_return_status := OKL_API.G_RET_STS_ERROR;
2944       ELSIF (p_number_of_periods IS NULL AND p_payment_amount IS NOT NULL) THEN
2945          okl_api.set_message(
2946                              G_APP_NAME,
2947                              G_MISSING_VALUE,
2948                              'CONTRACT_NUM',
2949                              p_contract_number_old||'/'||p_line_number,
2950                              'COL_NAME',
2951                              'NUMBER_OF_PERIODS'
2952                             );
2953          x_return_status := OKL_API.G_RET_STS_ERROR;
2954       END IF;
2955 
2956       RETURN;
2957 
2958    EXCEPTION
2959 
2960       WHEN payment_failed THEN
2961          x_return_status := OKL_API.G_RET_STS_ERROR;
2962 
2963    END check_payment_record;
2964 
2965  ------------------------------------------------------------------------------
2966  -- PROCEDURE validate_usage_freq
2967  -- It validates Usage line payment frequency code
2968  -- Calls:
2969  --  None
2970  -- Called By:
2971  ------------------------------------------------------------------------------
2972     PROCEDURE validate_usage_freq(
2973                                   x_return_status   OUT NOCOPY VARCHAR2,
2974                                   x_msg_count       OUT NOCOPY VARCHAR2,
2975                                   x_msg_data        OUT NOCOPY VARCHAR2,
2976                                   p_freq            IN  VARCHAR2,
2977                                   p_contract_number IN  VARCHAR2,
2978                                   p_line_number     IN  NUMBER
2979                                  ) IS
2980 
2981     CURSOR freq_csr (p_freq_code VARCHAR2) IS
2982     SELECT 'Y'
2983     FROM   okx_units_of_measure_v okx,
2984            okc_time_code_units_v okc
2985     WHERE  okx.uom_code     = okc.uom_code
2986     AND    okc.active_flag  = 'Y'
2987     AND    okc.tce_code NOT IN ('HOUR','MINUTE','SECOND')
2988     AND    okx.uom_code     = p_freq_code;
2989 
2990     l_found     VARCHAR2(1) := 'N';
2991     freq_failed EXCEPTION;
2992     BEGIN
2993 
2994       x_return_status := OKL_API.G_RET_STS_SUCCESS;
2995 
2996       l_found := 'N';
2997       OPEN freq_csr (p_freq);
2998       FETCH freq_csr INTO l_found;
2999       CLOSE freq_csr;
3000 
3001       IF (l_found <> 'Y') THEN
3002          okl_api.set_message(
3003                             G_APP_NAME,
3004                             G_INVALID_VALUE,
3005                             'CONTRACT_NUM',
3006                             p_contract_number||','||p_line_number,
3007                             'COL_NAME',
3008                             'USAGE_PERIOD',
3009                             'COL_VALUE',
3010                             p_freq
3011                             );
3012          RAISE freq_failed;
3013       END IF;
3014 
3015       RETURN;
3016 
3017     EXCEPTION
3018       WHEN freq_failed THEN
3019          x_return_status := OKL_API.G_RET_STS_ERROR;
3020     END validate_usage_freq;
3021 
3022 ------------------------------------------------------------------------------
3023 -- PROCEDURE Check_Input_Record
3024 --    DO NOT USE THIS PROCEDURE, BUG 4350579
3025 -- It Reads data from Interface Tables and Validates. During process of validation it
3026 -- stacks Error, if any, and returns ERROR status to calling process.
3027 -- Calls:
3028 --   check_header_literal
3029 --   validate_customer
3030 --   validate_currency_code
3031 --   check_line_literal
3032 --   check_contract_line
3033 --   check_payment_record
3034 --   update_interface_status
3035 --   report_error
3036 -- Called By:
3037 --   process_record
3038 ------------------------------------------------------------------------------
3039   PROCEDURE Check_Input_Record(
3040                             p_init_msg_list    IN VARCHAR2,
3041                             x_return_status    OUT NOCOPY VARCHAR2,
3042                             x_msg_count        OUT NOCOPY NUMBER,
3043                             x_msg_data         OUT NOCOPY VARCHAR2,
3044                             p_batch_number     IN  VARCHAR2,
3045                             p_start_date_from  IN  DATE,
3046                             p_start_date_to    IN  DATE,
3047                             p_contract_number  IN  VARCHAR2,
3048                             p_customer_number  IN  VARCHAR2,
3049                             x_total_checked    OUT NOCOPY NUMBER
3050                            ) IS
3051 
3052   l_proc_name           VARCHAR2(35)  := NULL;
3053   l_progress            VARCHAR2(3)   := NULL;
3054   l_contract_number_old okl_header_interface.contract_number_old%TYPE;
3055   l_customer_id         okx_parties_v.id1%TYPE;
3056   l_record_status       VARCHAR2(3);
3057   l_batch_status        VARCHAR2(3);
3058   x_id1                 NUMBER;
3059 
3060   l_header_template     template_h_rec_type;
3061 
3062   header_validation_failed EXCEPTION;
3063   line_validation_failed EXCEPTION;
3064 
3065   --
3066   -- Cursor to fetch Header Interface Records
3067   --
3068 
3069   CURSOR okl_header_csr (p_batch_number    VARCHAR2,
3070                          p_start_date_from DATE,
3071                          p_start_date_to   DATE,
3072                          p_contract_number VARCHAR2,
3073                          p_customer_number VARCHAR2 ) IS
3074 
3075   SELECT *
3076   FROM   okl_header_interface
3077   WHERE  (
3078           batch_number        = p_batch_number
3079           OR
3080           contract_number_old = p_contract_number
3081           OR
3082           (
3083            customer_number    = p_customer_number
3084            AND
3085            start_date         between p_start_date_from AND p_start_date_to
3086           )
3087          )
3088   AND    nvl(scheduled_worker_id,'NONE') = g_instance_number
3089   AND    status in ('NEW','ERROR'); --Process only NEW and previuosly FAILED records
3090 
3091   --
3092   -- Cursor to fetch Line Interface Records for each contract header
3093   --
3094 
3095   CURSOR okl_line_csr (p_contract_number_old okc_k_headers_v.contract_number%TYPE) IS
3096   SELECT *
3097   FROM   okl_lines_interface
3098   WHERE  contract_number_old = p_contract_number_old
3099   ORDER BY line_number;
3100 
3101   --
3102   -- Cursor to fetch Party Role Records
3103   --
3104 
3105   CURSOR okl_party_role_csr (p_contract_number okc_k_headers_v.contract_number%TYPE) IS
3106   SELECT *
3107   FROM   okl_party_roles_interface
3108   WHERE  contract_number_old = p_contract_number;
3109 
3110   --
3111   -- Cursor to fetch Terms Records
3112   --
3113 
3114   CURSOR okl_term_csr (p_contract_number okc_k_headers_v.contract_number%TYPE) IS
3115   SELECT *
3116   FROM   okl_terms_interface
3117   WHERE  contract_number_old = p_contract_number;
3118 
3119   --
3120   -- Cursor to fetch Payments Records
3121   --
3122 
3123   CURSOR okl_payment_csr (p_contract_number okc_k_headers_v.contract_number%TYPE) IS
3124   SELECT *
3125   FROM   okl_payments_interface
3126   WHERE  contract_number_old = p_contract_number;
3127 
3128 
3129   BEGIN -- Actual Procedure Starts Here
3130 
3131    -- Bug 4350579
3132    -- THIS PROCEDURE IS NOT BEING USED ANY MORE
3133    -- DO NOT CALL THIS PROCEDURE FOR IMPORT
3134    --
3135 
3136   l_proc_name     := 'CHECK_INPUT_RECORD';
3137   x_return_status := OKL_API.G_RET_STS_SUCCESS; -- individual validaiton status
3138   l_record_status := OKL_API.G_RET_STS_SUCCESS; -- record level status
3139   l_batch_status  := OKL_API.G_RET_STS_SUCCESS; -- batch level status
3140 
3141   okl_api.init_msg_list(p_init_msg_list => OKL_API.G_TRUE);
3142   l_progress      := '000';
3143 
3144   FOR okl_header_rec IN okl_header_csr (p_batch_number,
3145                                         p_start_date_from,
3146                                         p_start_date_to,
3147                                         p_contract_number,
3148                                         p_customer_number )
3149   LOOP
3150 
3151     BEGIN
3152       -- Validation Starts For each Contract
3153       --fnd_file.put_line(fnd_file.output, 'Checking... '||okl_header_rec.contract_number_old);
3154 
3155       write_to_log('Checking... '||okl_header_rec.contract_number_old);
3156 
3157       x_total_checked := nvl(x_total_checked,0) + 1;
3158 
3159       l_progress := '010';
3160       l_record_status := OKL_API.G_RET_STS_SUCCESS;
3161 
3162 
3163       l_contract_number_old := okl_header_rec.contract_number_old;
3164 
3165       -- Validate CONTRACT_NUMBER_OLD
3166       IF ( okl_header_rec.contract_number_old IS NULL) THEN
3167          okl_api.set_message(
3168                             G_APP_NAME,
3169                             G_NULL_CONTRACT
3170                             );
3171 
3172 
3173          raise header_validation_failed; -- Unable to continue further
3174 
3175 /* not required, bug 3798008
3176  *    ELSIF ( check_contract_number (l_contract_number_old) = OKL_API.G_RET_STS_ERROR ) THEN
3177  *
3178  *         raise header_validation_failed; -- Unable to continue further
3179  *
3180 */
3181       END IF;
3182 
3183 
3184       l_progress := '020';
3185       --
3186       -- Get Template Information if requested
3187       --
3188       l_header_template := NULL;
3189       IF (okl_header_rec.template_number IS NOT NULL) THEN
3190          l_header_template := get_template(
3191                                            x_return_status   => x_return_status,
3192                                            x_msg_count       => x_msg_count,
3193                                            x_msg_data        => x_msg_data,
3194                                            p_template_number => okl_header_rec.template_number
3195                                           );
3196 
3197          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3198             RAISE header_validation_failed;
3199          END IF;
3200 
3201       END IF;
3202       --
3203       -- Checks Constant literal, not needed check against table
3204       -- validate and stacks error
3205       --
3206       x_return_status := check_header_literal (
3207                            p_contract_number             => okl_header_rec.contract_number_old,
3208                            p_template_id                 => l_header_template.id,
3209                            p_application_code            => okl_header_rec.application_code,
3210                            p_contract_category           => NVL(okl_header_rec.contract_category,l_header_template.scs_code),
3211                            p_import_request_stage        => okl_header_rec.import_request_stage,
3212                            p_converted_account           => NVL(okl_header_rec.converted_account,
3213                                                                 l_header_template.converted_account_yn),
3214                            p_security_deposit_hold_flag  => okl_header_rec.security_deposit_hold_flag,
3215                            p_security_deposit_net_flag   => okl_header_rec.security_deposit_net_flag,
3216                            p_review_invoice_flag         => okl_header_rec.review_invoice_flag,
3217                            p_date_signed                 => NVL(okl_header_rec.date_signed,l_header_template.date_signed),
3218                            p_start_date                  => NVL(okl_header_rec.start_date,l_header_template.start_date),
3219                            p_date_approved               => NVL(okl_header_rec.date_approved,l_header_template.date_approved),
3220                            p_term                        => NVL(okl_header_rec.term,l_header_template.term_duration),
3221                            p_accepted_date               => NVL(okl_header_rec.accepted_date,l_header_template.accepted_date),
3222                            p_deal_type_code              => NVL(okl_header_rec.deal_type_code,l_header_template.deal_type),
3223                            p_bill_to_address             => okl_header_rec.bill_to_address,
3224                            p_bill_to_address_id          => okl_header_rec.bill_to_address_id,
3225                            p_authoring_org_id            => NVL(okl_header_rec.authoring_org_id,
3226                                                                 l_header_template.authoring_org_id),
3227 			   p_inv_organization_id         => NVL(okl_header_rec.inventory_organization_id,
3228 			                                        l_header_template.inv_organization_id),
3229                            p_customer_account_number     => okl_header_rec.customer_account_number,
3230                            p_customer_account_id         => okl_header_rec.customer_account_id,
3231                            p_eot_purchase_opt_type       => okl_header_rec.eot_purchase_opt_type,
3232                            p_expected_delivery_date      => okl_header_rec.expected_delivery_date,
3233                            p_currency_code               => NVL(okl_header_rec.currency_code,
3234                                                                   l_header_template.currency_code)
3235                           );
3236 
3237       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3238           l_record_status := OKL_API.G_RET_STS_ERROR;
3239       END IF;
3240 
3241       l_progress := '030';
3242 
3243       -- Validate CUSTOMER
3244       x_return_status := validate_customer(p_contract_number => okl_header_rec.contract_number_old,
3245                                            p_customer_id     => okl_header_rec.customer_id,
3246                                            p_customer_number => okl_header_rec.customer_number,
3247                                            x_id1             => l_customer_id);
3248 
3249       IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
3250          okl_header_rec.customer_id := l_customer_id;
3251       END IF;
3252 
3253       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3254           l_record_status := OKL_API.G_RET_STS_ERROR;
3255       END IF;
3256 
3257       l_progress := '040';
3258 
3259       -- Validate CURRENCY CODE
3260       x_return_status := validate_currency_code(p_contract_number => okl_header_rec.contract_number_old,
3261                                                 p_currency_code   => NVL(okl_header_rec.currency_code,
3262                                                                          l_header_template.currency_code));
3263 
3264       l_progress := '050';
3265       -- Call Line Cursor to get Line detail
3266 
3267       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3268           l_record_status := OKL_API.G_RET_STS_ERROR;
3269       END IF;
3270 
3271 
3272       FOR okl_line_rec IN okl_line_csr (okl_header_rec.contract_number_old)
3273       LOOP
3274         BEGIN
3275 
3276         -- Validation Starts For each Line of current header
3277 
3278         l_progress := '080';
3279 
3280         -- Validate Line Number
3281         IF (okl_line_rec.line_number IS NULL) THEN
3282            okl_api.set_message(
3283                                G_APP_NAME,
3284                                G_MISSING_VALUE,
3285                                'CONTRACT_NUM',
3286                                okl_header_rec.contract_number_old,
3287                                'COL_NAME',
3288                                'CONTRACT_LINE_NUMBER'
3289                               );
3290 
3291            x_return_status := OKL_API.G_RET_STS_ERROR;
3292 
3293            raise line_validation_failed; -- unable to continue with line validation, proceed with next line
3294 
3295         END IF;
3296 
3297         l_progress := '090';
3298         check_line_literal (
3299                             x_return_status             => x_return_status,
3300                             x_msg_count                 => x_msg_count,
3301                             x_msg_data                  => x_msg_data,
3302                             p_contract_number           => okl_header_rec.contract_number_old,
3303                             p_import_request_stage      => okl_header_rec.import_request_stage,
3304                             p_product_id                => okl_header_rec.product_id,
3305                             p_product_name              => okl_header_rec.product_name,
3306                             p_line_number               => okl_line_rec.line_number,
3307                             p_line_type                 => okl_line_rec.line_type,
3308                             p_amount                    => okl_line_rec.amount,
3309                             p_currency_code             => okl_header_rec.currency_code,
3310                             p_asset_number              => okl_line_rec.asset_number,
3311                             p_inventory_item_name       => okl_line_rec.inventory_item_name,
3312                             p_inventory_item_id         => okl_line_rec.inventory_item_id,
3313                             p_install_site_number       => okl_line_rec.install_site_number,
3314                             p_install_site_id           => okl_line_rec.install_site_id,
3315                             p_asset_corporate_book      => okl_line_rec.asset_corporate_book,
3316                             p_asset_category_id         => okl_line_rec.asset_category_id,
3317                             p_asset_category_segment1   => okl_line_rec.asset_category_segment1,
3318                             p_asset_category_segment2   => okl_line_rec.asset_category_segment2,
3319                             p_asset_category_segment3   => okl_line_rec.asset_category_segment3,
3320                             p_asset_category_segment4   => okl_line_rec.asset_category_segment4,
3321                             p_asset_category_segment5   => okl_line_rec.asset_category_segment5,
3322                             p_asset_category_segment6   => okl_line_rec.asset_category_segment6,
3323                             p_asset_category_segment7   => okl_line_rec.asset_category_segment7,
3324                             p_asset_location_id         => okl_line_rec.asset_location_id,
3325                             p_asset_location_segment1   => okl_line_rec.asset_location_segment1,
3326                             p_asset_location_segment2   => okl_line_rec.asset_location_segment2,
3327                             p_asset_location_segment3   => okl_line_rec.asset_location_segment3,
3328                             p_asset_location_segment4   => okl_line_rec.asset_location_segment4,
3329                             p_asset_location_segment5   => okl_line_rec.asset_location_segment5,
3330                             p_asset_location_segment6   => okl_line_rec.asset_location_segment6,
3331                             p_asset_location_segment7   => okl_line_rec.asset_location_segment7,
3332                             p_depreciation_method_id    => okl_line_rec.depreciation_method_id,
3333                             p_depreciation_method_code  => okl_line_rec.depreciation_method_code,
3334                             p_life_in_months            => okl_line_rec.life_in_months,
3335                             p_fee_code                  => okl_line_rec.fee_code,
3336                             p_stream_purpose            => okl_line_rec.stream_purpose_code,
3337                             p_fee_type                  => okl_line_rec.fee_type,
3338                             p_price_list_name           => okl_line_rec.price_list_name,
3339                             p_price_list_id             => okl_line_rec.price_list_id,
3340                             p_counter_group_name        => okl_line_rec.counter_group_name,
3341                             p_counter_group_id          => okl_line_rec.counter_group_id,
3342                             p_usage_bill_frequency_code => okl_line_rec.usage_bill_frequency_code,
3343                             p_base_reading_uom_code     => okl_line_rec.base_reading_uom_code,
3344                             p_usage_type_code           => okl_line_rec.usage_type_code,
3345                             p_usage_period              => okl_line_rec.usage_period,
3346                             p_usage_no_of_period        => okl_line_rec.usage_no_of_period,
3347                             p_tax_cost                  => okl_line_rec.tax_cost,
3348                             p_tax_book                  => okl_line_rec.tax_book,
3349                             p_life_in_months_tax        => okl_line_rec.life_in_months_tax,
3350                             p_deprn_method_tax          => okl_line_rec.deprn_method_tax,
3351                             p_deprn_rate_tax            => okl_line_rec.deprn_rate_tax,
3352                             p_in_service_date           => okl_line_rec.in_service_date,
3353 			    p_link_asset_amount         => okl_line_rec.link_asset_amount,
3354                             p_inv_org_id                => okl_header_rec.inventory_organization_id,
3355                             p_term_quote_id             => okl_line_rec.termination_quote_id,
3356                             p_term_quote_number         => okl_line_rec.termination_quote_number,
3357                             p_fee_purpose_code          => okl_line_rec.fee_purpose_code
3358                            );
3359 
3360 
3361         IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3362             l_record_status := OKL_API.G_RET_STS_ERROR;
3363         END IF;
3364 
3365         EXCEPTION
3366 
3367             WHEN line_validation_failed THEN
3368                  x_return_status := OKL_API.G_RET_STS_ERROR;
3369 
3370         END; -- of line begin
3371 
3372       END LOOP; -- okl_line_csr
3373 
3374       l_progress := '100';
3375       -- Final Reporting of error, if any, for this contract
3376 
3377       FOR okl_party_role_rec IN okl_party_role_csr (okl_header_rec.contract_number_old)
3378       LOOP
3379          BEGIN
3380             IF (okl_party_role_rec.line_number IS NOT NULL) THEN
3381                check_contract_line(
3382                                    x_return_status   => x_return_status,
3383                                    p_contract_number => okl_party_role_rec.contract_number_old,
3384                                    p_line_number     => okl_party_role_rec.line_number
3385                                   );
3386 
3387                IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3388                   okl_api.set_message(
3389                                       G_APP_NAME,
3390                                       G_PARTY_ROLE_LINE_ERROR,
3391                                       'CONTRACT_NUM',
3392                                       okl_party_role_rec.contract_number_old||'/'||okl_party_role_rec.line_number
3393                                      );
3394                   x_return_status := OKL_API.G_RET_STS_ERROR;
3395                END IF;
3396 
3397                IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3398                   l_record_status := OKL_API.G_RET_STS_ERROR;
3399                END IF;
3400             END IF;
3401          END;
3402 
3403       END LOOP; -- party_role
3404 
3405       l_progress := '110';
3406 
3407       --x_return_status := l_record_status;
3408 
3409       FOR okl_term_rec IN okl_term_csr (okl_header_rec.contract_number_old)
3410       LOOP
3411          BEGIN
3412             x_return_status := OKL_API.G_RET_STS_SUCCESS;
3413 
3414             IF (okl_term_rec.line_number IS NULL) THEN
3415                okl_api.set_message(
3416                                    G_APP_NAME,
3417                                    G_TERM_NO_LINE_NUMBER,
3418                                    'CONTRACT_NUM',
3419                                    okl_term_rec.contract_number_old||'/'||okl_term_rec.line_number
3420                                   );
3421                check_contract_line(
3422                                    x_return_status   => x_return_status,
3423                                    p_contract_number => okl_term_rec.contract_number_old,
3424                                    p_line_number     => okl_term_rec.line_number
3425                                   );
3426 
3427                IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3428                   okl_api.set_message(
3429                                       G_APP_NAME,
3430                                       G_TERM_LINE_ERROR,
3431                                       'LINE_NUM',
3432                                       okl_term_rec.line_number,
3433                                       'CONTRACT_NUM',
3434                                       okl_term_rec.contract_number_old||'/'||okl_term_rec.line_number
3435                                      );
3436                   x_return_status := OKL_API.G_RET_STS_ERROR;
3437                END IF;
3438 
3439             END IF;
3440 
3441             IF (x_return_status <>  OKL_API.G_RET_STS_SUCCESS) THEN
3442                l_record_status := x_return_status;
3443             END IF;
3444 
3445             IF (okl_header_rec.import_request_stage <> 'NEW'
3446                 AND
3447                 okl_term_rec.bill_to_address_id IS NULL
3448                 AND
3449                 okl_term_rec.bill_to_address IS NULL) THEN
3450 
3451                 okl_api.set_message(
3452                                     G_APP_NAME,
3453                                     G_MISSING_VALUE,
3454                                     'CONTRACT_NUM',
3455                                     okl_term_rec.contract_number_old||'/'||okl_term_rec.line_number,
3456                                    'COL_NAME',
3457                                    'BILL_TO_ADDRESS'
3458                                    );
3459 
3460                 x_return_status := OKL_API.G_RET_STS_ERROR;
3461             END IF;
3462 
3463             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3464                l_record_status := x_return_status;
3465             END IF;
3466          END;
3467 
3468       END LOOP; -- term
3469 
3470       l_progress := '120';
3471 
3472       FOR okl_payment_rec IN okl_payment_csr (okl_header_rec.contract_number_old)
3473       LOOP
3474          x_return_status := OKL_API.G_RET_STS_SUCCESS;
3475          BEGIN
3476 
3477             check_payment_record(
3478                                  x_return_status              => x_return_status,
3479                                  x_msg_count                  => x_msg_count,
3480                                  x_msg_data                   => x_msg_data,
3481                                  p_contract_number_old        => okl_payment_rec.contract_number_old,
3482                                  p_line_number                => okl_payment_rec.line_number,
3483                                  p_asset_number               => okl_payment_rec.asset_number,
3484                                  p_payment_type_code          => okl_payment_rec.payment_type_code,
3485                                  p_stream_purpose             => okl_payment_rec.stream_purpose_code,
3486                                  p_payment_schedule_number    => okl_payment_rec.payment_schedule_number,
3487                                  p_payment_frequency_code     => okl_payment_rec.payment_frequency_code,
3488                                  p_arrears_flag               => okl_payment_rec.arrears_flag,
3489                                  p_advance_payments           => okl_payment_rec.advance_payments,
3490                                  p_payment_amount             => okl_payment_rec.payment_amount,
3491                                  p_start_date                 => okl_payment_rec.start_date,
3492                                  p_number_of_periods          => okl_payment_rec.number_of_periods,
3493                                  p_rate                       => okl_payment_rec.rate,
3494                                  p_comments                   => okl_payment_rec.comments,
3495                                  p_stub_days                  => okl_payment_rec.stub_days,
3496                                  p_stub_amount                => okl_payment_rec.stub_amount
3497                                 );
3498 
3499             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3500                 l_record_status := x_return_status;
3501             END IF;
3502 
3503          END;
3504 
3505       END LOOP; -- payment
3506 
3507       l_progress := '130';
3508 
3509     EXCEPTION
3510       WHEN header_validation_failed THEN
3511 
3512 --         okl_open_interface_pvt.report_error (
3513 --                                          x_msg_count => x_msg_count,
3514 --                                          x_msg_data  => x_msg_data
3515 --                                         );
3516          x_return_status := OKL_API.G_RET_STS_ERROR;
3517          l_record_status := OKL_API.G_RET_STS_ERROR;
3518 
3519     END; -- of Header Begin
3520 
3521     IF (l_record_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3522        l_batch_status  := OKL_API.G_RET_STS_ERROR;
3523        x_return_status := OKL_API.G_RET_STS_ERROR;
3524     END IF;
3525 
3526     IF (l_record_status = OKL_API.G_RET_STS_SUCCESS) THEN
3527        Update_Interface_Status(p_contract_number     => okl_header_rec.contract_number_old,
3528                                p_new_contract_number => okl_header_rec.contract_number,
3529                                p_status              => 'ELIGIBLE',
3530                                x_return_status       => x_return_status
3531                               );
3532        COMMIT;
3533 
3534     ELSE
3535        Update_Interface_Status(p_contract_number     => okl_header_rec.contract_number_old,
3536                                p_new_contract_number => okl_header_rec.contract_number,
3537                                p_status              => 'ERROR',
3538                                x_return_status       => x_return_status
3539                               );
3540        COMMIT;
3541          x_return_status := OKL_API.G_RET_STS_ERROR;
3542     END IF;
3543 
3544 --    report_error (
3545 --                  x_msg_count => x_msg_count,
3546 --                  x_msg_data  => x_msg_data
3547 --                 );
3548 --    debug_message('========================done ');
3549 
3550   END LOOP; -- okl_header_csr
3551 
3552   IF (l_batch_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3553      x_return_status := l_batch_status; -- set final status to out variable for further processing
3554   END IF;
3555 
3556   EXCEPTION
3557     WHEN OTHERS THEN
3558       okl_api.set_message(
3559                           G_APP_NAME,
3560                           G_UNEXPECTED_ERROR,
3561                           'OKL_SQLCODE',
3562                           SQLCODE,
3563                           'OKL_SQLERRM',
3564                           SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
3565                          );
3566       x_return_status := OKL_API.G_RET_STS_ERROR;
3567 
3568       report_error (
3569                     x_msg_count => x_msg_count,
3570                     x_msg_data  => x_msg_data
3571                    );
3572 
3573   END Check_Input_Record;
3574 --*********************** check Interface **************************************
3575 
3576 --+++++++++++++++++++++++ Load Interface +++++++++++++++++++++++++++++++++++++++
3577 ------------------------------------------------------------------------------
3578 -- FUNCTION get_product_id
3579 -- It gets Product ID if any. It checks againts okl_products_v for
3580 -- esistance of product as supplied in parameters
3581 -- Calls:
3582 --  None
3583 -- Called By:
3584 --  load_input_record
3585 ------------------------------------------------------------------------------
3586 
3587   FUNCTION get_product_id (p_product_id     IN   okl_products_v.id%TYPE,
3588                            p_product_name   IN   okl_products_v.name%TYPE,
3589                            x_product_id     OUT NOCOPY  okl_products_v.id%TYPE )
3590   RETURN VARCHAR2 IS
3591 
3592   x_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
3593   l_product_id    OKL_PRODUCTS_V.ID%TYPE;
3594   l_revenue_recognition_method okl_product_parameters_v.REVENUE_RECOGNITION_METHOD%TYPE;
3595   l_interest_calculation_basis okl_product_parameters_v.INTEREST_CALCULATION_BASIS%TYPE;
3596   l_deal_type okl_product_parameters_v.DEAL_TYPE%TYPE;
3597   product_exception EXCEPTION;
3598 
3599   CURSOR product_csr(p_product_name okl_products_v.name%TYPE,
3600                      p_product_id   okl_products_v.id%TYPE) IS
3601   SELECT a.id,
3602          b.revenue_recognition_method,
3603          b.interest_calculation_basis,
3604          b.deal_type
3605   FROM   okl_products_v a,
3606          okl_product_parameters_v b
3607   WHERE  ((a.name = p_product_name
3608            AND
3609            p_product_name IS NOT NULL
3610           )
3611           OR
3612           (a.id   = p_product_id
3613            AND
3614            p_product_id IS NOT NULL
3615           )
3616          )
3617   AND    TRUNC(SYSDATE) BETWEEN NVL(a.from_date,TRUNC(SYSDATE)) AND NVL(a.to_date,TRUNC(SYSDATE))
3618   AND    A.id = B.id;
3619 
3620   BEGIN
3621 
3622      x_return_status := OKL_API.G_RET_STS_SUCCESS;
3623 
3624      OPEN product_csr(p_product_name,
3625                       p_product_id);
3626      FETCH product_csr INTO l_product_id,
3627                             l_revenue_recognition_method,
3628                             l_interest_calculation_basis,
3629                             l_deal_type;
3630 
3631      IF product_csr%NOTFOUND THEN
3632        RAISE product_exception;
3633      END IF;
3634      CLOSE product_csr;
3635      x_product_id := l_product_id;
3636      G_PRODUCT_ID := l_product_id;
3637      G_REVENUE_RECOGNITION_METHOD := l_revenue_recognition_method;
3638      G_INTEREST_CALCULATION_BASIS := l_interest_calculation_basis;
3639      G_DEAL_TYPE := l_deal_type;
3640 
3641     return x_return_status;
3642 
3643   EXCEPTION
3644 
3645     WHEN product_exception THEN
3646 
3647        IF product_csr%ISOPEN THEN
3648           CLOSE product_csr;
3649        END IF;
3650 
3651        x_return_status := OKL_API.G_RET_STS_ERROR;
3652        return x_return_status;
3653 
3654     WHEN OTHERS THEN
3655        NULL;
3656 
3657   END get_product_id;
3658 
3659 ------------------------------------------------------------------------------
3660 -- FUNCTION check_product_type
3661 -- It checks product type and returns 'Y' to out parameter
3662 -- if it is a LOAN product
3663 -- Calls:
3664 --  None
3665 -- Called By:
3666 --  load_input_record
3667 ------------------------------------------------------------------------------
3668 
3669   PROCEDURE check_product_type (
3670                                 x_return_status  OUT NOCOPY VARCHAR2,
3671                                 x_msg_count      OUT NOCOPY NUMBER,
3672                                 x_msg_data       OUT NOCOPY VARCHAR2,
3673                                 p_prod_name      IN  okl_header_interface.product_name%TYPE,
3674                                 p_prod_id        IN  okl_header_interface.product_id%TYPE,
3675                                 x_loan_yn        OUT NOCOPY VARCHAR2
3676                                ) IS
3677 
3678   l_type          VARCHAR2(1) := 'N';
3679   l_proc_name     VARCHAR2(35) := 'CHECK_PRODUCT_TYPE';
3680 
3681   --dkagrawa changed query to use view okl_prod_qlty_val_uv than product_parameters_v for performance
3682   CURSOR prod_type_csr(p_product_name okl_products_v.name%TYPE,
3683                        p_product_id   okl_products_v.id%TYPE) IS
3684   SELECT 'Y'
3685   FROM   okl_products prod,
3686          okl_prod_qlty_val_uv pqv
3687   WHERE  ((prod.name = p_product_name
3688            AND
3689            p_product_name IS NOT NULL
3690           )
3691           OR
3692           (prod.id   = p_product_id
3693            AND
3694            p_product_id IS NOT NULL
3695           )
3696          )
3697   AND    TRUNC(SYSDATE) BETWEEN NVL(prod.from_date,TRUNC(SYSDATE)) AND NVL(prod.to_date,TRUNC(SYSDATE))
3698   AND    prod.id = pqv.pdt_id
3699   AND    prod.reporting_pdt_id IS NULL
3700   AND    pqv.quality_name IN ('LEASE','INVESTOR')
3701   AND    pqv.quality_val = 'LOAN';
3702 
3703   BEGIN
3704 
3705      x_return_status := OKL_API.G_RET_STS_SUCCESS;
3706      debug_message(l_proc_name);
3707 
3708      l_type := 'N';
3709      OPEN prod_type_csr(p_prod_name,
3710                         p_prod_id);
3711      FETCH prod_type_csr INTO l_type;
3712      CLOSE prod_type_csr;
3713 
3714      x_loan_yn := l_type;
3715 
3716   EXCEPTION
3717 
3718     WHEN OTHERS THEN
3719        IF prod_type_csr%ISOPEN THEN
3720           CLOSE prod_type_csr;
3721        END IF;
3722 
3723        okl_api.set_message(
3724                            G_APP_NAME,
3725                            G_UNEXPECTED_ERROR,
3726                            'OKL_SQLCODE',
3727                            SQLCODE,
3728                            'OKL_SQLERRM',
3729                            SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
3730                            );
3731 
3732        x_return_status := OKL_API.G_RET_STS_ERROR;
3733 
3734   END check_product_type;
3735 
3736 ------------------------------------------------------------------------------
3737 -- FUNCTION get_prog_agreement_id
3738 -- It gets Program agreement ID if any.
3739 -- Calls:
3740 --  None
3741 -- Called By:
3742 --  load_input_record
3743 ------------------------------------------------------------------------------
3744 
3745   FUNCTION get_prog_agreement_id (
3746                              p_scs_code         IN  okc_k_headers_v.scs_code%TYPE,
3747                              p_agreement_number IN  okc_k_headers_v.contract_number%TYPE,
3748                              p_agreement_id     IN  okc_k_headers_v.id%TYPE,
3749                              p_auth_org_id      IN  okc_k_headers_v.authoring_org_id%TYPE,
3750                              x_agreement_id     OUT NOCOPY okc_k_headers_v.contract_number%TYPE
3751                             ) RETURN VARCHAR2 IS
3752 
3753   x_return_status        VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
3754   l_contract_id          OKC_K_HEADERS_V.ID%TYPE;
3755   agreement_exception EXCEPTION;
3756 
3757   --Fixed Bug # 5484903
3758   CURSOR contract_csr (
3759                        p_scs_code        okc_k_headers_v.scs_code%TYPE,
3760                        p_agreement_id    okc_k_headers_v.id%TYPE,
3761                        p_agreement_number okc_k_headers_v.contract_number%TYPE,
3762                        p_auth_org_id      okc_k_headers_v.authoring_org_id%TYPE
3763                       ) IS
3764   SELECT id
3765    FROM   okc_k_headers_all_b
3766   WHERE  ((contract_number = p_agreement_number
3767            AND
3768            p_agreement_number IS NOT NULL
3769           )
3770           OR
3771           (id  = p_agreement_id
3772            AND
3773            p_agreement_id IS NOT NULL
3774           )
3775          )
3776   AND    scs_code = p_scs_code
3777   AND    sts_code = 'ACTIVE'
3778   AND    authoring_org_id = p_auth_org_id;
3779 
3780   BEGIN
3781 
3782      x_return_status := OKL_API.G_RET_STS_SUCCESS;
3783 
3784      OPEN contract_csr(p_scs_code,
3785                        p_agreement_id,
3786                        p_agreement_number,
3787                        p_auth_org_id);
3788      FETCH contract_csr INTO l_contract_id;
3789      IF contract_csr%NOTFOUND THEN
3790         RAISE agreement_exception;
3791      END IF;
3792      CLOSE contract_csr;
3793 
3794      x_agreement_id := l_contract_id;
3795 
3796     return x_return_status;
3797 
3798   EXCEPTION
3799 
3800     WHEN agreement_exception THEN
3801 
3802        IF contract_csr%ISOPEN THEN
3803           CLOSE contract_csr;
3804        END IF;
3805 
3806        x_return_status := OKL_API.G_RET_STS_ERROR;
3807        return x_return_status;
3808 
3809     WHEN OTHERS THEN
3810        NULL;
3811 
3812   END get_prog_agreement_id;
3813 
3814 ------------------------------------------------------------------------------
3815 -- FUNCTION get_agreement_id
3816 -- It gets Master Lease ID if any. It checks againts okc_k_headers_v for
3817 -- esistance of master contract as supplied in parameters
3818 -- Calls:
3819 --  None
3820 -- Called By:
3821 --  load_input_record
3822 ------------------------------------------------------------------------------
3823 
3824   FUNCTION get_agreement_id (
3825                              p_scs_code         IN  okc_k_headers_v.scs_code%TYPE,
3826                              p_auth_org_id      IN  okc_k_headers_v.authoring_org_id%TYPE,
3827                              p_agreement_number IN  okc_k_headers_v.contract_number%TYPE,
3828                              p_agreement_id     IN  okc_k_headers_v.id%TYPE,
3829                              x_agreement_id     OUT NOCOPY okc_k_headers_v.contract_number%TYPE
3830                             ) RETURN VARCHAR2 IS
3831 
3832   x_return_status        VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
3833   l_contract_id          OKC_K_HEADERS_V.ID%TYPE;
3834   agreement_exception EXCEPTION;
3835   --Fixed Bug #5484903
3836   CURSOR contract_csr (
3837                        p_scs_code        okc_k_headers_v.scs_code%TYPE,
3838                        p_org_id          okc_k_headers_v.authoring_org_id%TYPE,
3839                        p_agreement_id    okc_k_headers_v.id%TYPE,
3840                        p_agreement_number okc_k_headers_v.contract_number%TYPE
3841                       ) IS
3842   SELECT id
3843   FROM   okc_k_headers_all_b
3844   WHERE  ((contract_number = p_agreement_number
3845            AND
3846            p_agreement_number IS NOT NULL
3847           )
3848           OR
3849           (id  = p_agreement_id
3850            AND
3851            p_agreement_id IS NOT NULL
3852           )
3853          )
3854   AND    authoring_org_id = p_org_id
3855   AND    scs_code = p_scs_code
3856   AND    sts_code <> 'TERMINATED';
3857 
3858   BEGIN
3859 
3860      x_return_status := OKL_API.G_RET_STS_SUCCESS;
3861 
3862      debug_message('Org: '||p_auth_org_id);
3863      debug_message('SCS: '||p_scs_code);
3864      debug_message('Agreement :'||p_agreement_id||', '||p_agreement_number||'***');
3865 
3866      OPEN contract_csr(p_scs_code,
3867                        p_auth_org_id,
3868                        p_agreement_id,
3869                        p_agreement_number);
3870      FETCH contract_csr INTO l_contract_id;
3871      IF contract_csr%NOTFOUND THEN
3872         RAISE agreement_exception;
3873      END IF;
3874      CLOSE contract_csr;
3875 
3876      x_agreement_id := l_contract_id;
3877 
3878     return x_return_status;
3879 
3880   EXCEPTION
3881 
3882     WHEN agreement_exception THEN
3883 
3884        IF contract_csr%ISOPEN THEN
3885           CLOSE contract_csr;
3886        END IF;
3887 
3888        x_return_status := OKL_API.G_RET_STS_ERROR;
3889        return x_return_status;
3890 
3891     WHEN OTHERS THEN
3892        NULL;
3893 
3894   END get_agreement_id;
3895 
3896 ------------------------------------------------------------------------------
3897 -- PROCEDURE get_vendor_id
3898 -- It gets vendor id for given vendor name
3899 -- and stacks error if any
3900 -- Calls:
3901 --  None
3902 -- Called By:
3903 --  process_party_role
3904 ------------------------------------------------------------------------------
3905   PROCEDURE get_vendor_id(
3906                           x_return_status     OUT NOCOPY VARCHAR2,
3907                           x_msg_count         OUT NOCOPY NUMBER,
3908                           x_msg_data          OUT NOCOPY VARCHAR2,
3909                           p_contract_number   IN  okl_header_interface.contract_number_old%TYPE,
3910                           p_line_number       IN  okl_lines_interface.line_number%TYPE,
3911                           x_vendor_id         OUT NOCOPY NUMBER,
3912                           p_vendor_name       IN OKX_VENDORS_V.NAME%TYPE
3913                          ) IS
3914 
3915     CURSOR vendor_csr (p_vendor_name VARCHAR2) IS
3916     SELECT id1
3917     FROM   okx_vendors_v
3918     WHERE  name = p_vendor_name;
3919 
3920     l_id         NUMBER;
3921     l_proc_name  VARCHAR2(35) := 'GET_VENDOR_ID';
3922     vendor_failed EXCEPTION;
3923 
3924     BEGIN
3925 
3926       x_return_status := OKL_API.G_RET_STS_SUCCESS;
3927 
3928       OPEN  vendor_csr(p_vendor_name);
3929       FETCH vendor_csr INTO l_id;
3930       IF vendor_csr%NOTFOUND THEN
3931          RAISE vendor_failed;
3932       END IF;
3933       CLOSE vendor_csr;
3934 
3935       x_vendor_id := l_id;
3936 
3937     EXCEPTION
3938      WHEN vendor_failed THEN
3939        CLOSE vendor_csr;
3940        okl_api.set_message(
3941                            G_APP_NAME,
3942                            G_INVALID_VALUE,
3943                            'CONTRACT_NUM',
3944                            p_contract_number||'/'||TO_CHAR(p_line_number),
3945                            'COL_NAME',
3946                            'VENDOR_NAME',
3947                            'COL_VALUE',
3948                            p_vendor_name
3949                           );
3950        x_return_status := OKL_API.G_RET_STS_ERROR;
3951 
3952 
3953      WHEN OTHERS THEN
3954        IF vendor_csr%ISOPEN THEN
3955        CLOSE vendor_csr;
3956        END IF;
3957 
3958        okl_api.set_message(
3959                            G_APP_NAME,
3960                            G_UNEXPECTED_ERROR,
3961                            'OKL_SQLCODE',
3962                            SQLCODE,
3963                            'OKL_SQLERRM',
3964                            SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
3965                            );
3966 
3967        x_return_status := OKL_API.G_RET_STS_ERROR;
3968 
3969     END get_vendor_id;
3970 
3971 ------------------------------------------------------------------------------
3972 -- PROCEDURE get_party_id
3973 -- It gets party id for given party number
3974 -- and stacks error if any
3975 -- Calls:
3976 --  None
3977 -- Called By:
3978 --  create_line_rules
3979 --  process_party_role
3980 ------------------------------------------------------------------------------
3981   PROCEDURE get_party_id(
3982                               x_return_status     OUT NOCOPY VARCHAR2,
3983                               x_msg_count         OUT NOCOPY NUMBER,
3984                               x_msg_data          OUT NOCOPY VARCHAR2,
3985                               p_contract_number   IN  okl_header_interface.contract_number_old%TYPE,
3986                               p_line_number       IN  okl_lines_interface.line_number%TYPE,
3987                               p_party_id          IN  OKX_PARTIES_V.ID1%TYPE,
3988                               p_party_number      IN  OKX_PARTIES_V.PARTY_NUMBER%TYPE,
3989                               x_party_id          OUT NOCOPY NUMBER
3990                              ) IS
3991 
3992     CURSOR party_csr (p_party_number VARCHAR2,
3993                       p_party_id     NUMBER) IS
3994     SELECT id1
3995     FROM   okx_parties_v
3996     WHERE  ((party_number = p_party_number
3997              AND
3998              p_party_number IS NOT NULL)
3999              OR
4000              (id1          = p_party_id
4001               AND
4002               p_party_id IS NOT NULL
4003              )
4004             );
4005 
4006     l_id         NUMBER;
4007     l_proc_name  VARCHAR2(35) := 'GET_PARTY_ID';
4008     party_failed EXCEPTION;
4009 
4010     BEGIN
4011 
4012       x_return_status := OKL_API.G_RET_STS_SUCCESS;
4013 
4014       OPEN  party_csr(p_party_number,
4015                       p_party_id);
4016       FETCH party_csr INTO l_id;
4017       IF party_csr%NOTFOUND THEN
4018          RAISE party_failed;
4019       END IF;
4020       CLOSE party_csr;
4021 
4022       x_party_id := l_id;
4023 
4024     EXCEPTION
4025      WHEN party_failed THEN
4026        CLOSE party_csr;
4027        okl_api.set_message(
4028                            G_APP_NAME,
4029                            G_INVALID_VALUE,
4030                            'CONTRACT_NUM',
4031                            p_contract_number||'/'||TO_CHAR(p_line_number),
4032                            'COL_NAME',
4033                            'PARTY_ID, NUMBER: ',
4034                            'COL_VALUE',
4035                            p_party_id||', '||p_party_number
4036                           );
4037        x_return_status := OKL_API.G_RET_STS_ERROR;
4038 
4039 
4040      WHEN OTHERS THEN
4041        IF party_csr%ISOPEN THEN
4042        CLOSE party_csr;
4043        END IF;
4044 
4045        okl_api.set_message(
4046                            G_APP_NAME,
4047                            G_UNEXPECTED_ERROR,
4048                            'OKL_SQLCODE',
4049                            SQLCODE,
4050                            'OKL_SQLERRM',
4051                            SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
4052                            );
4053 
4054        x_return_status := OKL_API.G_RET_STS_ERROR;
4055 
4056     END get_party_id;
4057 
4058 -- cklee start 02/23/2004
4059 ------------------------------------------------------------------------------
4060 -- PROCEDURE get_party
4061 -- It gets party id/party site id for any given combination of name, number
4062 -- and stacks error if any
4063 -- Calls:
4064 --  None
4065 -- Called By:
4066 ------------------------------------------------------------------------------
4067   PROCEDURE get_party( x_return_status           OUT NOCOPY VARCHAR2,
4068                        x_msg_count               OUT NOCOPY NUMBER,
4069                        x_msg_data                OUT NOCOPY VARCHAR2,
4070                        p_intf_party_rec          IN  intf_party_rec_type,
4071                        x_party_id                OUT NOCOPY NUMBER,
4072                        x_party_site_id           OUT NOCOPY NUMBER
4073                       ) IS
4074 
4075     CURSOR party_csr (p_party_name         VARCHAR2,
4076                       p_party_id           NUMBER,
4077                       p_party_number       VARCHAR2,
4078                       p_party_site_name    VARCHAR2,
4079                       p_party_site_id      NUMBER,
4080                       p_party_site_number  VARCHAR2,
4081                       p_category_code      VARCHAR2) IS
4082   SELECT prt.PARTY_ID,
4083          prt.PARTY_NAME,
4084          prt.PARTY_NUMBER,
4085          hps.PARTY_SITE_ID,
4086          hps.PARTY_SITE_NAME,
4087          hps.PARTY_SITE_NUMBER
4088   FROM
4089       HZ_PARTIES PRT,
4090       HZ_PARTY_SITES HPS
4091   WHERE
4092       prt.PARTY_ID          = hps.PARTY_ID
4093 --start modified by abhaxen for 6689015 on 24-Jan-2008
4094       -- Added new filters to remove full table scans
4095        AND ( prt.CATEGORY_CODE = p_category_code AND p_category_code IS NOT NULL )
4096        AND ( ( prt.PARTY_ID = p_party_id AND p_party_id IS NOT NULL )
4097        OR ( prt.PARTY_NAME = p_party_name AND p_party_name IS NOT NULL)
4098        OR ( prt.PARTY_NUMBER = p_party_number AND p_party_number IS NOT NULL ))
4099        AND ( ( hps.PARTY_SITE_ID = p_party_site_id AND p_party_site_id IS NOT NULL )
4100        OR( hps.PARTY_SITE_NUMBER = p_party_site_number AND p_party_site_number IS NOT NULL )
4101        OR( hps.PARTY_SITE_NAME = p_party_site_name AND p_party_site_name IS NOT NULL ))
4102        ;
4103 
4104 
4105 /*  AND NVL(prt.CATEGORY_CODE, G_DEFAULT_CHAR)     = NVL(p_category_code, NVL(prt.CATEGORY_CODE,G_DEFAULT_CHAR))
4106   AND NVL(prt.PARTY_ID, G_DEFAULT_NUM)           = NVL(p_party_id, NVL(prt.PARTY_ID,G_DEFAULT_NUM))
4107   AND NVL(prt.PARTY_NUMBER, G_DEFAULT_CHAR)      = NVL(p_party_number, NVL(prt.PARTY_NUMBER, G_DEFAULT_CHAR))
4108   AND NVL(prt.PARTY_NAME, G_DEFAULT_CHAR)        = NVL(p_party_name, NVL(prt.PARTY_NAME, G_DEFAULT_CHAR))
4109   AND NVL(hps.PARTY_SITE_ID, G_DEFAULT_NUM)      = NVL(p_party_site_id, NVL(hps.PARTY_SITE_ID, G_DEFAULT_NUM))
4110   AND NVL(hps.PARTY_SITE_NUMBER, G_DEFAULT_CHAR) = NVL(p_party_site_number, NVL(hps.PARTY_SITE_NUMBER, G_DEFAULT_CHAR))
4111   AND NVL(hps.PARTY_SITE_NAME, G_DEFAULT_CHAR)   = NVL(p_party_site_name, NVL(hps.PARTY_SITE_NAME, G_DEFAULT_CHAR))  ;
4112 */
4113 --end modified by abhsaxen for 6689015 on 24-Jan-2008
4114     l_proc_name  VARCHAR2(35) := 'GET_PARTY';
4115     party_failed EXCEPTION;
4116     r_party party_csr%ROWTYPE;
4117     l_count NUMBER := 0;
4118 
4119 
4120     BEGIN
4121 
4122       x_return_status := OKL_API.G_RET_STS_SUCCESS;
4123 
4124       OPEN party_csr(p_intf_party_rec.party_name,
4125                      p_intf_party_rec.party_id,
4126                      p_intf_party_rec.party_number,
4127                      p_intf_party_rec.party_site_name,
4128                      p_intf_party_rec.party_site_id,
4129                      p_intf_party_rec.party_site_number,
4130                      p_intf_party_rec.party_category_code);
4131 
4132       LOOP
4133 
4134         FETCH party_csr INTO r_party;
4135         EXIT WHEN party_csr%NOTFOUND;
4136 
4137         x_party_id := r_party.party_id;
4138         x_party_site_id := r_party.party_site_id;
4139         l_count := party_csr%ROWCOUNT;
4140 
4141       END LOOP;
4142       CLOSE party_csr;
4143 
4144       -- no row return or multiple rows return
4145       IF (l_count = 0 OR l_count > 1) THEN
4146         raise party_failed;
4147       END IF;
4148 
4149     EXCEPTION
4150      WHEN party_failed THEN
4151 
4152        IF party_csr%ISOPEN THEN
4153          CLOSE party_csr;
4154        END IF;
4155 
4156        okl_api.set_message(
4157                            G_APP_NAME,
4158                            G_INVALID_VALUE,
4159                            'CONTRACT_NUM',
4160                            p_intf_party_rec.contract_number||'/'||TO_CHAR(p_intf_party_rec.line_number),
4161                            'COL_NAME',
4162 --                           'PARTY_ID, NUMBER: ',
4163 p_intf_party_rec.intf_party_id || ', ' || p_intf_party_rec.intf_party_name || ', '
4164  || p_intf_party_rec.intf_party_number || '/' ||
4165 p_intf_party_rec.intf_party_site_id || ', ' || p_intf_party_rec.intf_party_site_name || ', '
4166  || p_intf_party_rec.intf_party_site_number || ': ',
4167                            'COL_VALUE',
4168 p_intf_party_rec.party_id || ', ' || p_intf_party_rec.party_name || ', '
4169  || p_intf_party_rec.party_number || '/' ||
4170 p_intf_party_rec.party_site_id || ', ' || p_intf_party_rec.party_site_name || ', '
4171  || p_intf_party_rec.party_site_number || ': '
4172                           );
4173        x_return_status := OKL_API.G_RET_STS_ERROR;
4174 
4175 
4176      WHEN OTHERS THEN
4177 
4178        IF party_csr%ISOPEN THEN
4179          CLOSE party_csr;
4180        END IF;
4181 
4182        okl_api.set_message(
4183                            G_APP_NAME,
4184                            G_UNEXPECTED_ERROR,
4185                            'OKL_SQLCODE',
4186                            SQLCODE,
4187                            'OKL_SQLERRM',
4188                            SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
4189                            );
4190 
4191        x_return_status := OKL_API.G_RET_STS_ERROR;
4192 
4193     END get_party;
4194 -- cklee end 02/23/2004
4195 
4196 
4197 ------------------------------------------------------------------------------
4198 -- PROCEDURE create_party_role
4199 -- It creates Party Role from Header Interface Record and retruns status to
4200 -- calling module for further processing.
4201 -- Calls:
4202 --  None
4203 -- Called By:
4204 --  load_input_record
4205 ------------------------------------------------------------------------------
4206    PROCEDURE create_party_role(
4207                               x_return_status       OUT NOCOPY VARCHAR2,
4208                               x_msg_count           OUT NOCOPY NUMBER,
4209                               x_msg_data            OUT NOCOPY VARCHAR2,
4210                               p_contract_header_id  IN  okl_k_headers_v.id%TYPE,
4211                               p_contract_number_old IN  okc_k_headers_v.orig_system_reference1%TYPE,
4212                               p_customer_id         IN  okl_header_interface.customer_id%TYPE,
4213                               p_customer_number     IN  okl_header_interface.customer_number%TYPE,
4214                               p_authoring_org_id    IN  okl_header_interface.authoring_org_id%TYPE,
4215                               x_cplv_rec            OUT NOCOPY cplv_rec_type ) IS
4216 
4217     CURSOR customer_csr (p_customer_number OKX_PARTIES_V.PARTY_NUMBER%TYPE,
4218                          p_customer_id     OKX_PARTIES_V.ID1%TYPE) IS
4219     SELECT id1
4220     FROM   okx_parties_v
4221     WHERE  ((party_number = p_customer_number
4222              AND
4223              p_customer_number IS NOT NULL
4224             )
4225             OR
4226             (id1          = p_customer_id
4227              AND
4228              p_customer_id IS NOT NULL
4229             )
4230            );
4231 
4232     l_id1              okx_parties_v.id1%TYPE;
4233     l_proc_name        VARCHAR2(35) := 'CREATE_PARTY_ROLE';
4234     party_role_failed  EXCEPTION;
4235     p_cplv_rec         cplv_rec_type;
4236     l_kplv_rec         kplv_rec_type;
4237     x_kplv_rec         kplv_rec_type;
4238 
4239    BEGIN
4240 
4241      x_return_status := OKL_API.G_RET_STS_SUCCESS;
4242 
4243 /*
4244      OPEN customer_csr(p_customer_number,
4245                        p_customer_id);
4246      FETCH customer_csr INTO l_id1;
4247      IF customer_csr%NOTFOUND THEN
4248         raise party_role_failed;
4249      END IF;
4250      CLOSE customer_csr;
4251 
4252      g_customer_id := l_id1;
4253 */
4254 
4255      -- Create LESSEE
4256      p_cplv_rec.chr_id            := p_contract_header_id;
4257      p_cplv_rec.dnz_chr_id        := p_contract_header_id;
4258      p_cplv_rec.object1_id1       := TO_CHAR(g_customer_id);
4259      --p_cplv_rec.object1_id1       := TO_CHAR(l_id1);
4260      p_cplv_rec.object1_id2       := '#';
4261      p_cplv_rec.jtot_object1_code := 'OKX_PARTY';
4262      p_cplv_rec.rle_code          := 'LESSEE';
4263 
4264      --OKL_OKC_MIGRATION_PVT.create_k_party_role( -- Contract addl field, Bug 4558486
4265      OKL_K_PARTY_ROLES_PVT.create_k_party_role(
4266                                                 p_api_version => 1.0,
4267                                                 p_init_msg_list => OKL_API.G_FALSE,
4268                                                 x_return_status => x_return_status,
4269                                                 x_msg_count     => x_msg_count,
4270                                                 x_msg_data      => x_msg_data,
4271                                                 p_cplv_rec      => p_cplv_rec,
4272                                                 p_kplv_rec      => l_kplv_rec,
4273                                                 x_cplv_rec      => x_cplv_rec,
4274                                                 x_kplv_rec      => x_kplv_rec
4275                                                );
4276 
4277      IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
4278         -- Create LESSOR
4279         p_cplv_rec.chr_id            := p_contract_header_id;
4280         p_cplv_rec.dnz_chr_id        := p_contract_header_id;
4281         p_cplv_rec.object1_id1       := TO_CHAR(p_authoring_org_id);
4282         p_cplv_rec.object1_id2       := '#';
4283         p_cplv_rec.jtot_object1_code := 'OKX_OPERUNIT';
4284         p_cplv_rec.rle_code          := 'LESSOR';
4285 
4286        -- OKL_OKC_MIGRATION_PVT.create_k_party_role( -- Contract addl field, Bug 4558486
4287         OKL_K_PARTY_ROLES_PVT.create_k_party_role(
4288                                                 p_api_version => 1.0,
4289                                                 p_init_msg_list => OKL_API.G_FALSE,
4290                                                 x_return_status => x_return_status,
4291                                                 x_msg_count     => x_msg_count,
4292                                                 x_msg_data      => x_msg_data,
4293                                                 p_cplv_rec      => p_cplv_rec,
4294                                                 p_kplv_rec      => l_kplv_rec,
4295                                                 x_cplv_rec      => x_cplv_rec,
4296                                                 x_kplv_rec      => x_kplv_rec
4297                                                );
4298      END IF;
4299 
4300      IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
4301         RAISE party_role_failed;
4302      END IF;
4303 
4304      return;
4305 
4306    EXCEPTION
4307      WHEN party_role_failed THEN
4308 
4309        IF customer_csr%ISOPEN THEN
4310           CLOSE customer_csr;
4311        END IF;
4312 
4313        okl_api.set_message(
4314                            G_APP_NAME,
4315                            G_INVALID_VALUE,
4316                            'CONTRACT_NUM',
4317                            p_contract_number_old,
4318                            'COL_NAME',
4319                            'CUSTOMER_ID, NUMBER: ',
4320                            'COL_VALUE',
4321                            p_customer_id||', '||p_customer_number
4322                           );
4323 
4324        x_return_status := OKL_API.G_RET_STS_ERROR;
4325 
4326      WHEN OTHERS THEN
4327 
4328        IF customer_csr%ISOPEN THEN
4329        CLOSE customer_csr;
4330        END IF;
4331 
4332        okl_api.set_message(
4333                            G_APP_NAME,
4334                            G_UNEXPECTED_ERROR,
4335                            'OKL_SQLCODE',
4336                            SQLCODE,
4337                            'OKL_SQLERRM',
4338                            SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
4339                            );
4340 
4341        x_return_status := OKL_API.G_RET_STS_ERROR;
4342 
4343 
4344    END create_party_role;
4345 
4346 ------------------------------------------------------------------------------
4347 -- PROCEDURE get_bill_to_address_id
4348 -- It returns Bill To Address ID from bill to address number and
4349 -- stacks Error, if any, and returns ERROR status to calling process.
4350 -- Calls:
4351 --  None
4352 -- Called By:
4353 --  create_header_rules
4354 --  process_term
4355 ------------------------------------------------------------------------------
4356 
4357    PROCEDURE get_bill_to_address_id(
4358                                     x_return_status           OUT NOCOPY VARCHAR2,
4359                                     x_msg_count               OUT NOCOPY NUMBER,
4360                                     x_msg_data                OUT NOCOPY VARCHAR2,
4361                                     p_contract_number         IN  okl_header_interface.contract_number_old%TYPE,
4362                                     p_auth_org_id             IN  okl_header_interface.authoring_org_id%TYPE,
4363                                     p_bill_to_address_id      IN  okl_header_interface.bill_to_address_id%TYPE,
4364                                     p_bill_to_address         IN  okl_header_interface.bill_to_address%TYPE,
4365                                     p_customer_account_id     IN  NUMBER,
4366                                     x_bill_to_address_id      OUT NOCOPY NUMBER
4367                                    ) IS
4368 
4369    CURSOR bill_csr (p_org_id              NUMBER,
4370                     p_bill_to_address     VARCHAR2,
4371                     p_bill_to_address_id  NUMBER,
4372                     p_customer_account_id NUMBER) IS
4373    SELECT site_use.id1
4374    FROM   okx_cust_site_uses_v site_use,
4375           hz_cust_acct_sites_all site
4376    WHERE  site.cust_acct_site_id = site_use.cust_acct_site_id
4377    AND    ((site_use.name            = p_bill_to_address
4378             AND
4379             p_bill_to_address IS NOT NULL)
4380             OR
4381             (site_use.id1            = p_bill_to_address_id
4382              AND
4383              p_bill_to_address_id IS NOT NULL
4384             )
4385            )
4386    AND    site_use.org_id                = p_org_id
4387    AND    site.org_id                    = p_org_id
4388    AND    site_use.site_use_code         = 'BILL_TO'
4389    AND    site_use.cust_account_id       = p_customer_account_id
4390    AND    site_use.b_status              = 'A'
4391    AND    site.status                    = 'A';
4392    --AND    cust_acct_site_status = 'A';
4393 
4394    l_proc_name      VARCHAR2(35) := 'GET_BILL_TO_ADDRESS_ID';
4395    l_id             okl_header_interface.bill_to_address_id%TYPE;
4396    bill_failed      EXCEPTION;
4397 
4398    BEGIN
4399 
4400       x_return_status := OKL_API.G_RET_STS_SUCCESS;
4401 
4402 
4403       OPEN  bill_csr(p_auth_org_id,
4404                      p_bill_to_address,
4405                      p_bill_to_address_id,
4406                      p_customer_account_id);
4407       FETCH bill_csr INTO l_id;
4408       IF  bill_csr%NOTFOUND THEN
4409           raise bill_failed;
4410       END IF;
4411       CLOSE bill_csr;
4412 
4413       x_bill_to_address_id := l_id;
4414 
4415       return;
4416 
4417     EXCEPTION
4418       WHEN bill_failed THEN
4419 
4420         IF (bill_csr%ISOPEN) THEN
4421           CLOSE bill_csr;
4422         END IF;
4423 
4424         okl_api.set_message(
4425                             G_APP_NAME,
4426                             G_INVALID_VALUE,
4427                             'CONTRACT_NUM',
4428                             p_contract_number,
4429                             'COL_NAME',
4430                             'BILL_TO_ADDRESS_ID, NAME',
4431                             'COL_VALUE',
4432                             p_bill_to_address_id||', '||p_bill_to_address
4433                            );
4434        x_return_status := OKL_API.G_RET_STS_ERROR;
4435 
4436       WHEN OTHERS THEN
4437         okl_api.set_message(
4438                             G_APP_NAME,
4439                             G_UNEXPECTED_ERROR,
4440                             'OKL_SQLCODE',
4441                             SQLCODE,
4442                             'OKL_SQLERRM',
4443                             SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
4444                            );
4445 
4446         x_return_status := OKL_API.G_RET_STS_ERROR;
4447 
4448 
4449    END get_bill_to_address_id;
4450 
4451 ------------------------------------------------------------------------------
4452 -- PROCEDURE get_bank_account_id
4453 -- It returns Bank account id from account Number and
4454 -- stacks Error, if any, and returns ERROR status to calling process.
4455 -- Calls:
4456 --  None
4457 -- Called By:
4458 --  create_header_rules
4459 --  process_term
4460 ------------------------------------------------------------------------------
4461 
4462    PROCEDURE get_bank_account_id(
4463                                  x_return_status           OUT NOCOPY VARCHAR2,
4464                                  x_msg_count               OUT NOCOPY NUMBER,
4465                                  x_msg_data                OUT NOCOPY VARCHAR2,
4466                                  p_contract_number         IN  okl_header_interface.contract_number_old%TYPE,
4467                                  p_auth_org_id             IN  okl_header_interface.authoring_org_id%TYPE,
4468                                  p_bank_account_id         IN  okl_header_interface.bank_account_id%TYPE,
4469                                  p_bank_account_number     IN  okl_header_interface.bank_account_number%TYPE,
4470                                  p_customer_account_id     IN  NUMBER,
4471                                  p_cust_site_id            IN  NUMBER,
4472                                  x_bank_account_id         OUT NOCOPY NUMBER
4473                                 ) IS
4474 
4475     CURSOR bank_acct_csr(p_bank_acc_number VARCHAR2,
4476                          p_bank_acc_id     NUMBER,
4477                          p_customer_acc_id NUMBER,
4478                          p_cust_site_id    NUMBER,
4479                          p_org_id          NUMBER) IS
4480     SELECT id1
4481     FROM   okx_rcpt_method_accounts_v
4482     WHERE  (
4483              (bank_account_num = p_bank_acc_number)
4484              OR
4485              (id1             = p_bank_acc_id)
4486             )
4487     AND    customer_id          = p_customer_acc_id
4488     -- udhenuko Bug#5925603 : Start
4489     --AND    customer_site_use_id =p_cust_site_id
4490     AND    ((customer_site_use_id = p_cust_site_id)
4491                or  ( customer_site_use_id IS NULL) )
4492      --Bug#5925603: End
4493     -- rbanerje Bug#5925603(Release bug 7355967) : Start
4494     -- AND    org_id               = p_org_id
4495     -- rbanerje Bug#5925603(Release bug 7355967) : End
4496     AND    TRUNC(SYSDATE) between NVL(START_DATE_ACTIVE, TRUNC(SYSDATE)) AND NVL(END_DATE_ACTIVE,TRUNC(SYSDATE))
4497     -- udhenuko Bug#5925603 : added order clause so that one used at site level will take precedence
4498     ORDER BY CUSTOMER_SITE_USE_ID;
4499     --Bug#5925603 : End
4500 
4501     l_id             OKX_RCPT_METHOD_ACCOUNTS_V.ID1%TYPE;
4502     bank_acct_failed EXCEPTION;
4503     l_proc_name      VARCHAR2(35) := 'GET_BANK_ACCOUNT_ID';
4504 
4505     BEGIN
4506 
4507       x_return_status := OKL_API.G_RET_STS_SUCCESS;
4508 
4509       OPEN  bank_acct_csr(p_bank_account_number,
4510                           p_bank_account_id,
4511                           p_customer_account_id,
4512                           p_cust_site_id,
4513                           p_auth_org_id);
4514       FETCH bank_acct_csr INTO l_id;
4515       IF  bank_acct_csr%NOTFOUND THEN
4516           raise bank_acct_failed;
4517       END IF;
4518       CLOSE bank_acct_csr;
4519 
4520       x_bank_account_id := l_id;
4521 
4522       return;
4523 
4524     EXCEPTION
4525       WHEN bank_acct_failed THEN
4526 
4527         IF (bank_acct_csr%ISOPEN) THEN
4528           CLOSE bank_acct_csr;
4529         END IF;
4530 
4531         okl_api.set_message(
4532                             G_APP_NAME,
4533                             G_INVALID_VALUE,
4534                             'CONTRACT_NUM',
4535                             p_contract_number,
4536                             'COL_NAME',
4537                             'BANK_ACCOUNT_ID, NUMBER: ',
4538                             'COL_VALUE',
4539                             p_bank_account_id||', '||p_bank_account_number
4540                            );
4541        x_return_status := OKL_API.G_RET_STS_ERROR;
4542 
4543       WHEN OTHERS THEN
4544 
4545         okl_api.set_message(
4546                             G_APP_NAME,
4547                             G_UNEXPECTED_ERROR,
4548                             'OKL_SQLCODE',
4549                             SQLCODE,
4550                             'OKL_SQLERRM',
4551                             SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
4552                            );
4553 
4554         x_return_status := OKL_API.G_RET_STS_ERROR;
4555 
4556     END get_bank_account_id;
4557 
4558 ------------------------------------------------------------------------------
4559 -- PROCEDURE get_index_id
4560 -- It returns Index Id for a given Index Name and
4561 -- stacks Error, if any, and returns ERROR status to calling process.
4562 -- Calls:
4563 --  None
4564 -- Called By:
4565 --  create_header_rules
4566 ------------------------------------------------------------------------------
4567    PROCEDURE get_index_id(
4568                           x_return_status OUT NOCOPY VARCHAR2,
4569                           p_index_name    IN  okl_header_interface.index_name%TYPE,
4570                           x_index_id      OUT NOCOPY okl_indices.id%TYPE
4571                          ) IS
4572 
4573    CURSOR index_csr (p_index_name okl_header_interface.index_name%TYPE) IS
4574    SELECT id
4575    FROM   okl_indices
4576    WHERE  name = p_index_name;
4577 
4578    l_proc_name  VARCHAR2(35) := 'GET_INDEX_ID';
4579    l_id         okl_indices.id%TYPE;
4580    index_failed EXCEPTION;
4581 
4582    BEGIN
4583       x_return_status := OKL_API.G_RET_STS_SUCCESS;
4584       OPEN index_csr (p_index_name);
4585       FETCH index_csr INTO l_id;
4586       IF index_csr%NOTFOUND THEN
4587          raise index_failed;
4588       END IF;
4589       CLOSE index_csr;
4590 
4591       x_index_id := l_id;
4592 
4593       RETURN;
4594 
4595    EXCEPTION
4596       WHEN index_failed THEN
4597          --x_return_status := OKL_API.G_RET_STS_SUCCESS;
4598          x_return_status := OKL_API.G_RET_STS_ERROR; -- Bug 5024651
4599       WHEN OTHERS THEN
4600          x_return_status := OKL_API.G_RET_STS_ERROR;
4601    END get_index_id;
4602 
4603 ------------------------------------------------------------------------------
4604 -- PROCEDURE get_payment_term
4605 -- It returns payment term id after validation and
4606 -- stacks Error, if any, and returns ERROR status to calling process.
4607 -- Calls:
4608 --  None
4609 -- Called By:
4610 ------------------------------------------------------------------------------
4611    FUNCTION get_payment_term(
4612                              x_return_status   OUT NOCOPY VARCHAR2,
4613                              p_contract_number IN  OKL_HEADER_INTERFACE.CONTRACT_NUMBER_OLD%TYPE,
4614                              p_line_number     IN  OKL_LINES_INTERFACE.LINE_NUMBER%TYPE,
4615                              p_payment_term    IN  OKL_LINES_INTERFACE.PAYMENT_TERM%TYPE,
4616                              p_payment_term_id IN  OKL_LINES_INTERFACE.PAYMENT_TERM_ID%TYPE
4617                             )
4618    RETURN NUMBER IS
4619 
4620    CURSOR term_csr (p_payment_term    VARCHAR2,
4621                     p_payment_term_id NUMBER) IS
4622    SELECT id1
4623    FROM   okx_payables_terms_v
4624    WHERE  (name = p_payment_term
4625            AND
4626            p_payment_term IS NOT NULL)
4627    OR     (id1 = p_payment_term_id
4628            AND
4629            p_payment_term_id IS NOT NULL)
4630    AND    TRUNC(SYSDATE) BETWEEN NVL(TRUNC(start_date_active),TRUNC(SYSDATE))
4631                          AND     NVL(TRUNC(end_date_active), TRUNC(SYSDATE));
4632 
4633    l_id1 OKX_PAYABLES_TERMS_V.ID1%TYPE;
4634    BEGIN
4635 
4636      x_return_status := OKL_API.G_RET_STS_SUCCESS;
4637 
4638      OPEN term_csr (p_payment_term,
4639                     p_payment_term_id);
4640      FETCH term_csr INTO l_id1;
4641      IF term_csr%NOTFOUND THEN
4642         okl_api.set_message(
4643                             G_APP_NAME,
4644                             G_INVALID_VALUE,
4645                             'CONTRACT_NUM/LINE_NUMBER',
4646                             p_contract_number||'/'||p_line_number,
4647                             'COL_NAME',
4648                             'PAYMENT_TERM OR PAYMENT_TERM_ID',
4649                             'COL_VALUE',
4650                             p_payment_term||', '||p_payment_term_id
4651                            );
4652        x_return_status := OKL_API.G_RET_STS_ERROR;
4653        RETURN NULL;
4654      END IF;
4655      CLOSE term_csr;
4656 
4657      RETURN l_id1;
4658 
4659    END get_payment_term;
4660 
4661 ------------------------------------------------------------------------------
4662 -- PROCEDURE get_vendor_paysite
4663 -- It returns vendor Pay-site info and
4664 -- stacks Error, if any, and returns ERROR status to calling process.
4665 -- Calls:
4666 --  None
4667 -- Called By:
4668 ------------------------------------------------------------------------------
4669    FUNCTION get_vendor_paysite(
4670                                x_return_status       OUT NOCOPY VARCHAR2,
4671                                p_contract_number     IN  OKL_HEADER_INTERFACE.CONTRACT_NUMBER_OLD%TYPE,
4672                                p_line_number         IN  OKL_LINES_INTERFACE.LINE_NUMBER%TYPE,
4673                                p_vendor_paysite_name IN  OKL_LINES_INTERFACE.VENDOR_PAYSITE_NAME%TYPE,
4674                                p_vendor_paysite_id   IN  OKL_LINES_INTERFACE.VENDOR_PAYSITE_ID%TYPE
4675                               )
4676    RETURN NUMBER IS
4677    CURSOR site_csr (p_name VARCHAR2,
4678                     p_id   NUMBER) IS
4679    SELECT id1
4680    FROM   okx_vendor_sites_v
4681    WHERE  (name = p_name
4682            AND
4683            p_name IS NOT NULL)
4684    OR
4685           (id1 = p_id
4686            AND
4687            p_id IS NOT NULL)
4688    AND    TRUNC(SYSDATE) BETWEEN NVL(TRUNC(start_date_active), TRUNC(SYSDATE))
4689                          AND     NVL(TRUNC(end_date_active), TRUNC(SYSDATE));
4690 
4691    l_id1 okx_vendor_sites_v.id1%TYPE;
4692    BEGIN
4693 
4694      x_return_status := OKL_API.G_RET_STS_SUCCESS;
4695 
4696      OPEN site_csr (p_vendor_paysite_name,
4697                     p_vendor_paysite_id);
4698      FETCH site_csr INTO l_id1;
4699      IF site_csr%NOTFOUND THEN
4700         okl_api.set_message(
4701                             G_APP_NAME,
4702                             G_INVALID_VALUE,
4703                             'CONTRACT_NUM/LINE_NUMBER',
4704                             p_contract_number||'/'||p_line_number,
4705                             'COL_NAME',
4706                             'VENDOR PAY SITE NAME OR VENDOR PAYSITE ID',
4707                             'COL_VALUE',
4708                             p_vendor_paysite_name||', '||p_vendor_paysite_id
4709                            );
4710        x_return_status := OKL_API.G_RET_STS_ERROR;
4711        RETURN NULL;
4712      END IF;
4713      CLOSE site_csr;
4714 
4715      RETURN l_id1;
4716 
4717    END get_vendor_paysite;
4718 
4719 ------------------------------------------------------------------------------
4720 -- PROCEDURE get_invoice_format
4721 -- It returns Invoice Format id from Format Code and
4722 -- stacks Error, if any, and returns ERROR status to calling process.
4723 -- Calls:
4724 --  None
4725 -- Called By:
4726 --  create_header_rules
4727 --  process_term
4728 ------------------------------------------------------------------------------
4729 
4730    PROCEDURE get_invoice_format_id(
4731                                    x_return_status           OUT NOCOPY VARCHAR2,
4732                                    x_msg_count               OUT NOCOPY NUMBER,
4733                                    x_msg_data                OUT NOCOPY VARCHAR2,
4734                                    p_contract_number         IN  okl_header_interface.contract_number_old%TYPE,
4735                                    p_invoice_format_id       IN  okl_header_interface.invoice_format_id%TYPE,
4736                                    p_invoice_format_code     IN  okl_header_interface.invoice_format_code%TYPE,
4737                                    x_invoice_format_id       OUT NOCOPY NUMBER,
4738                                    x_invoice_format_name     OUT NOCOPY VARCHAR2
4739                                   ) IS
4740 
4741     CURSOR inv_format_csr(p_invoice_format_code VARCHAR2,
4742                           p_invoice_format_id   NUMBER) IS
4743     SELECT id,
4744            name
4745     FROM   okl_invoice_formats_v
4746     WHERE  ((name = p_invoice_format_code
4747              AND
4748              p_invoice_format_code IS NOT NULL)
4749              OR
4750              (id   = p_invoice_format_id
4751               AND
4752               p_invoice_format_id IS NOT NULL
4753              )
4754             )
4755     AND    TRUNC(SYSDATE) between NVL(START_DATE, TRUNC(SYSDATE)) AND NVL(END_DATE,TRUNC(SYSDATE));
4756 
4757     l_id              OKL_INVOICE_FORMATS_V.ID%TYPE;
4758     l_name            OKL_INVOICE_FORMATS_V.NAME%TYPE;
4759     inv_format_failed EXCEPTION;
4760     l_proc_name       VARCHAR2(35) := 'GET_INVOICE_FORMAT_ID';
4761 
4762     BEGIN
4763 
4764       x_return_status := OKL_API.G_RET_STS_SUCCESS;
4765 
4766       OPEN  inv_format_csr(p_invoice_format_code,
4767                            p_invoice_format_id);
4768       FETCH inv_format_csr INTO l_id,
4769                                 l_name;
4770       IF  inv_format_csr%NOTFOUND THEN
4771           raise inv_format_failed;
4772       END IF;
4773       CLOSE inv_format_csr;
4774 
4775       x_invoice_format_id   := l_id;
4776       x_invoice_format_name := l_name;
4777       return;
4778 
4779     EXCEPTION
4780       WHEN inv_format_failed THEN
4781 
4782         IF (inv_format_csr%ISOPEN) THEN
4783           CLOSE inv_format_csr;
4784         END IF;
4785 
4786         okl_api.set_message(
4787                             G_APP_NAME,
4788                             G_INVALID_VALUE,
4789                             'CONTRACT_NUM',
4790                             p_contract_number,
4791                             'COL_NAME',
4792                             'INVOICE_FORMAT_ID, CODE',
4793                             'COL_VALUE',
4794                             p_invoice_format_id||', '||p_invoice_format_code
4795                            );
4796        x_return_status := OKL_API.G_RET_STS_ERROR;
4797 
4798       WHEN OTHERS THEN
4799 
4800         okl_api.set_message(
4801                             G_APP_NAME,
4802                             G_UNEXPECTED_ERROR,
4803                             'OKL_SQLCODE',
4804                             SQLCODE,
4805                             'OKL_SQLERRM',
4806                             SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
4807                            );
4808 
4809         x_return_status := OKL_API.G_RET_STS_ERROR;
4810 
4811     END get_invoice_format_id;
4812 
4813 ------------------------------------------------------------------------------
4814 -- PROCEDURE get_payment_method_id
4815 -- It returns Payment Method id from Payment Method
4816 -- stacks Error, if any, and returns ERROR status to calling process.
4817 -- Calls:
4818 --  None
4819 -- Called By:
4820 --  create_header_rules
4821 --  process_term
4822 ------------------------------------------------------------------------------
4823 
4824    PROCEDURE get_payment_method_id(
4825                                    x_return_status           OUT NOCOPY VARCHAR2,
4826                                    x_msg_count               OUT NOCOPY NUMBER,
4827                                    x_msg_data                OUT NOCOPY VARCHAR2,
4828                                    p_contract_number         IN  okl_header_interface.contract_number_old%TYPE,
4829                                    p_customer_account_id     IN  okl_header_interface.customer_account_id%TYPE,
4830                                    p_bill_to_address_id      IN  okl_header_interface.bill_to_address_id%TYPE,
4831                                    p_payment_method_id       IN  okl_header_interface.payment_method_id%TYPE,
4832                                    p_payment_method          IN  okl_header_interface.payment_method%TYPE,
4833                                    x_payment_method_id       OUT NOCOPY NUMBER
4834                                   ) IS
4835 
4836     CURSOR payment_csr(p_payment_method     VARCHAR2,
4837                        p_payment_method_id  NUMBER,
4838                        p_customer_acc_id    NUMBER,
4839                        p_bill_to_address_id NUMBER) IS
4840     SELECT id1
4841     FROM   okx_receipt_methods_v
4842     WHERE  ((name = p_payment_method
4843              AND
4844              p_payment_method IS NOT NULL)
4845              OR
4846              (id1  = p_payment_method_id
4847               AND
4848               p_payment_method_id IS NOT NULL))
4849     AND    customer_id  = p_customer_acc_id
4850     AND    (site_use_id = p_bill_to_address_id
4851             OR
4852             site_use_id IS NULL)
4853     AND    TRUNC(SYSDATE) between NVL(START_DATE_ACTIVE, TRUNC(SYSDATE)) AND NVL(END_DATE_ACTIVE,TRUNC(SYSDATE));
4854 
4855     l_id             OKX_RECEIPT_METHODS_V.ID1%TYPE;
4856     payment_failed   EXCEPTION;
4857     l_proc_name      VARCHAR2(35) := 'GET_PAYMENT_METHOD_ID';
4858 
4859     BEGIN
4860 
4861       x_return_status := OKL_API.G_RET_STS_SUCCESS;
4862 
4863       debug_message(p_payment_method||','||p_customer_account_id||', '||p_bill_to_address_id);
4864       OPEN  payment_csr(p_payment_method,
4865                         p_payment_method_id,
4866                         p_customer_account_id,
4867                         p_bill_to_address_id);
4868       FETCH payment_csr INTO l_id;
4869       IF  payment_csr%NOTFOUND THEN
4870           raise payment_failed;
4871       END IF;
4872       CLOSE payment_csr;
4873 
4874       x_payment_method_id := l_id;
4875       debug_message('PMNT ID: '||x_payment_method_id);
4876       return;
4877 
4878     EXCEPTION
4879       WHEN payment_failed THEN
4880 
4881         IF (payment_csr%ISOPEN) THEN
4882           CLOSE payment_csr;
4883         END IF;
4884 
4885         okl_api.set_message(
4886                             G_APP_NAME,
4887                             G_INVALID_VALUE,
4888                             'CONTRACT_NUM',
4889                             p_contract_number,
4890                             'COL_NAME',
4891                             'PAYMENT_METHOD, ID',
4892                             'COL_VALUE',
4893                             p_payment_method||', '||p_payment_method_id
4894                            );
4895        x_return_status := OKL_API.G_RET_STS_ERROR;
4896 
4897       WHEN OTHERS THEN
4898 
4899         okl_api.set_message(
4900                             G_APP_NAME,
4901                             G_UNEXPECTED_ERROR,
4902                             'OKL_SQLCODE',
4903                             SQLCODE,
4904                             'OKL_SQLERRM',
4905                             SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
4906                            );
4907 
4908         x_return_status := OKL_API.G_RET_STS_ERROR;
4909 
4910     END get_payment_method_id;
4911 
4912 ------------------------------------------------------------------------------
4913 -- PROCEDURE get_customer_account_id
4914 -- It returns customer account id from account Number and
4915 -- stacks Error, if any, and returns ERROR status to calling process.
4916 -- validate against customer
4917 -- Calls:
4918 --  None
4919 -- Called By:
4920 --  create_header_rules
4921 ------------------------------------------------------------------------------
4922 
4923    PROCEDURE get_customer_account_id(
4924                                      x_return_status           OUT NOCOPY VARCHAR2,
4925                                      x_msg_count               OUT NOCOPY NUMBER,
4926                                      x_msg_data                OUT NOCOPY VARCHAR2,
4927                                      p_contract_number         IN  okl_header_interface.contract_number_old%TYPE,
4928                                      p_customer_id             IN  okl_header_interface.customer_id%TYPE,
4929                                      p_customer_account_id     IN  okl_header_interface.customer_account_id%TYPE,
4930                                      p_customer_account_number IN  okl_header_interface.customer_account_number%TYPE,
4931                                      x_customer_account_id     OUT NOCOPY NUMBER
4932                                     ) IS
4933 
4934     CURSOR cust_acct_csr(p_cust_id             NUMBER,
4935                          p_cust_acc_number     VARCHAR2,
4936                          p_customer_account_id NUMBER) IS
4937     SELECT id1
4938     FROM   okx_customer_accounts_v
4939     WHERE  ((description = p_cust_acc_number
4940              AND
4941              p_cust_acc_number IS NOT NULL)
4942              OR
4943              (id1         = p_customer_account_id
4944               AND
4945               p_customer_account_id IS NOT NULL
4946              )
4947             )
4948     AND    party_id = p_cust_id
4949     AND    status = 'A';
4950 
4951     l_id             OKX_CUSTOMER_ACCOUNTS_V.ID1%TYPE;
4952     cust_acct_failed EXCEPTION;
4953     l_proc_name      VARCHAR2(35) := 'GET_CUSTOMER_ACCOUNT_ID';
4954 
4955     BEGIN
4956 
4957       x_return_status := OKL_API.G_RET_STS_SUCCESS;
4958 
4959       debug_message('Customer Account ID: '||p_customer_account_id);
4960 
4961       OPEN  cust_acct_csr(p_customer_id,
4962                           p_customer_account_number,
4963                           p_customer_account_id);
4964       FETCH cust_acct_csr INTO l_id;
4965       IF  cust_acct_csr%NOTFOUND THEN
4966           raise cust_acct_failed;
4967       END IF;
4968       CLOSE cust_acct_csr;
4969 
4970       x_customer_account_id := l_id;
4971 
4972       return;
4973 
4974     EXCEPTION
4975       WHEN cust_acct_failed THEN
4976 
4977         IF (cust_acct_csr%ISOPEN) THEN
4978           CLOSE cust_acct_csr;
4979         END IF;
4980 
4981         okl_api.set_message(
4982                             G_APP_NAME,
4983                             G_INVALID_VALUE,
4984                             'CONTRACT_NUM',
4985                             p_contract_number,
4986                             'COL_NAME',
4987                             'CUSTOMER_ACCOUNT, ID',
4988                             'COL_VALUE',
4989                             p_customer_account_number||', '||p_customer_account_id
4990                            );
4991        x_return_status := OKL_API.G_RET_STS_ERROR;
4992 
4993       WHEN OTHERS THEN
4994 
4995         okl_api.set_message(
4996                             G_APP_NAME,
4997                             G_UNEXPECTED_ERROR,
4998                             'OKL_SQLCODE',
4999                             SQLCODE,
5000                             'OKL_SQLERRM',
5001                             SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
5002                            );
5003 
5004         x_return_status := OKL_API.G_RET_STS_ERROR;
5005 
5006     END get_customer_account_id;
5007 
5008 ------------------------------------------------------------------------------
5009 -- PROCEDURE get_customer_account_id
5010 -- It returns customer account id from account Number and
5011 -- stacks Error, if any, and returns ERROR status to calling process.
5012 -- Calls:
5013 --  None
5014 -- Called By:
5015 --  create_header_rules
5016 ------------------------------------------------------------------------------
5017 
5018    PROCEDURE get_customer_account_id(
5019                                      x_return_status           OUT NOCOPY VARCHAR2,
5020                                      x_msg_count               OUT NOCOPY NUMBER,
5021                                      x_msg_data                OUT NOCOPY VARCHAR2,
5022                                      p_contract_number         IN  okl_header_interface.contract_number_old%TYPE,
5023                                      p_customer_account_id     IN  okl_header_interface.customer_account_id%TYPE,
5024                                      p_customer_account_number IN  okl_header_interface.customer_account_number%TYPE,
5025                                      x_customer_account_id     OUT NOCOPY NUMBER
5026                                     ) IS
5027 
5028     CURSOR cust_acct_csr(p_cust_acc_number     VARCHAR2,
5029                          p_customer_account_id NUMBER) IS
5030     SELECT id1
5031     FROM   okx_customer_accounts_v
5032     WHERE  ((description = p_cust_acc_number
5033              AND
5034              p_cust_acc_number IS NOT NULL)
5035              OR
5036              (id1         = p_customer_account_id
5037               AND
5038               p_customer_account_id IS NOT NULL
5039              )
5040             )
5041     AND    status = 'A';
5042 
5043     l_id             OKX_CUSTOMER_ACCOUNTS_V.ID1%TYPE;
5044     cust_acct_failed EXCEPTION;
5045     l_proc_name      VARCHAR2(35) := 'GET_CUSTOMER_ACCOUNT_ID';
5046 
5047     BEGIN
5048 
5049       x_return_status := OKL_API.G_RET_STS_SUCCESS;
5050 
5051       OPEN  cust_acct_csr(p_customer_account_number,
5052                           p_customer_account_id);
5053       FETCH cust_acct_csr INTO l_id;
5054       IF  cust_acct_csr%NOTFOUND THEN
5055           raise cust_acct_failed;
5056       END IF;
5057       CLOSE cust_acct_csr;
5058 
5059       x_customer_account_id := l_id;
5060 
5061       return;
5062 
5063     EXCEPTION
5064       WHEN cust_acct_failed THEN
5065 
5066         IF (cust_acct_csr%ISOPEN) THEN
5067           CLOSE cust_acct_csr;
5068         END IF;
5069 
5070         okl_api.set_message(
5071                             G_APP_NAME,
5072                             G_INVALID_VALUE,
5073                             'CONTRACT_NUM',
5074                             p_contract_number,
5075                             'COL_NAME',
5076                             'CUSTOMER_ACCOUNT, ID',
5077                             'COL_VALUE',
5078                             p_customer_account_number||', '||p_customer_account_id
5079                            );
5080        x_return_status := OKL_API.G_RET_STS_ERROR;
5081 
5082       WHEN OTHERS THEN
5083 
5084         okl_api.set_message(
5085                             G_APP_NAME,
5086                             G_UNEXPECTED_ERROR,
5087                             'OKL_SQLCODE',
5088                             SQLCODE,
5089                             'OKL_SQLERRM',
5090                             SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
5091                            );
5092 
5093         x_return_status := OKL_API.G_RET_STS_ERROR;
5094 
5095     END get_customer_account_id;
5096 
5097 ------------------------------------------------------------------------------
5098 -- PROCEDURE get_base_uom_id
5099 -- It returns Base Reading UOM ID from Code and
5100 -- stacks Error, if any, and returns ERROR status to calling process.
5101 -- p_rgp_id = Rule Group ID, create rule group if it is null, otherwise use it
5102 -- Calls:
5103 -- Called By:
5104 ------------------------------------------------------------------------------
5105    PROCEDURE get_base_uom_id(
5106                              x_return_status OUT NOCOPY VARCHAR2,
5107                              p_base_uom_code IN  okx_tuom_v.id1%TYPE,
5108                              x_base_uom_id   OUT NOCOPY okx_tuom_v.id1%TYPE
5109                             ) IS
5110    l_proc_name VARCHAR2(35) := 'GET_BASE_UOM_ID';
5111    CURSOR uom_csr (p_base_uom_code VARCHAR2) IS
5112    SELECT id1
5113    FROM   okx_tuom_v
5114    WHERE  uom_code = p_base_uom_code;
5115 
5116    uom_failed EXCEPTION;
5117    l_id       okx_tuom_v.id1%TYPE;
5118 
5119    BEGIN
5120       x_return_status := OKL_API.G_RET_STS_SUCCESS;
5121       OPEN uom_csr(p_base_uom_code);
5122       FETCH uom_csr INTO l_id;
5123       IF uom_csr%NOTFOUND THEN
5124          RAISE uom_failed;
5125       END IF;
5126 
5127       CLOSE uom_csr;
5128       x_base_uom_id := l_id;
5129 
5130       RETURN;
5131 
5132    EXCEPTION
5133       WHEN uom_failed THEN
5134          IF uom_csr%ISOPEN THEN
5135             CLOSE uom_csr;
5136          END IF;
5137          x_return_status := OKL_API.G_RET_STS_ERROR;
5138 
5139    END get_base_uom_id;
5140 
5141 ------------------------------------------------------------------------------
5142 -- PROCEDURE get_price_list_id
5143 -- It returns Price List ID from Name and
5144 -- stacks Error, if any, and returns ERROR status to calling process.
5145 -- p_rgp_id = Rule Group ID, create rule group if it is null, otherwise use it
5146 -- Calls:
5147 -- Called By:
5148 ------------------------------------------------------------------------------
5149    PROCEDURE get_price_list_id(
5150                                x_return_status   OUT NOCOPY VARCHAR2,
5151                                p_price_list_name IN  okx_list_headers_v.name%TYPE,
5152                                p_price_list_id   IN  okx_list_headers_v.id1%TYPE,
5153                                x_price_list_id   OUT NOCOPY okx_list_headers_v.id1%TYPE
5154                               ) IS
5155 
5156    l_proc_name VARCHAR2(35) := 'GET_PRICE_LIST_ID';
5157    CURSOR price_csr (p_price_list_name VARCHAR2,
5158                      p_price_list_id   NUMBER) IS
5159    SELECT id1
5160    FROM   okx_list_headers_v
5161    WHERE  list_type_code = 'PRL'
5162    AND    ((name = p_price_list_name
5163             AND
5164             p_price_list_name IS NOT NULL
5165            )
5166            OR
5167            (id1 = p_price_list_id
5168             AND
5169             p_price_list_id IS NOT NULL
5170            )
5171           )
5172    AND    SYSDATE BETWEEN NVL(start_date_active,SYSDATE) AND NVL(end_date_active, SYSDATE);
5173 
5174    l_id         okx_list_headers_v.id1%TYPE;
5175    price_failed EXCEPTION;
5176 
5177    BEGIN
5178       x_return_status := OKL_API.G_RET_STS_SUCCESS;
5179       OPEN price_csr(p_price_list_name,
5180                      p_price_list_id);
5181       FETCH price_csr INTO l_id;
5182       IF price_csr%NOTFOUND THEN
5183          RAISE price_failed;
5184       END IF;
5185 
5186       CLOSE price_csr;
5187       x_price_list_id := l_id;
5188 
5189       RETURN;
5190 
5191    EXCEPTION
5192       WHEN price_failed THEN
5193          IF price_csr%ISOPEN THEN
5194             CLOSE price_csr;
5195          END IF;
5196          x_return_status := OKL_API.G_RET_STS_ERROR;
5197    END get_price_list_id;
5198 
5199 ------------------------------------------------------------------------------
5200 -- PROCEDURE get_usage_item_id
5201 -- It returns USAGE ITEM ID from Number and
5202 -- stacks Error, if any, and returns ERROR status to calling process.
5203 -- p_rgp_id = Rule Group ID, create rule group if it is null, otherwise use it
5204 -- Calls:
5205 -- Called By:
5206 ------------------------------------------------------------------------------
5207    PROCEDURE get_usage_item_id(
5208                                x_return_status   OUT NOCOPY VARCHAR2,
5209                                p_usage_item_name IN  okx_system_items_v.name%TYPE,
5210                                p_usage_item_id   IN  okx_system_items_v.id1%TYPE,
5211                                p_org_id          IN  NUMBER,
5212                                x_usage_item_id   OUT NOCOPY okx_system_items_v.id1%TYPE,
5213                                x_usage_id2       OUT NOCOPY okx_system_items_v.id2%TYPE
5214                               ) IS
5215 
5216    l_proc_name VARCHAR2(35) := 'GET_USAGE_ITEM_ID';
5217    CURSOR uitem_csr (p_item_name VARCHAR2,
5218                      p_item_id   NUMBER,
5219                      p_org_id    NUMBER) IS
5220    SELECT id1,
5221           id2
5222    FROM   okx_system_items_v
5223    WHERE  usage_item_flag = 'Y'
5224    AND    organization_id = p_org_id
5225    AND    ((name = p_item_name
5226             AND
5227             p_item_name IS NOT NULL
5228            )
5229            OR
5230            (id1 = p_item_id
5231             AND
5232             p_item_id IS NOT NULL
5233            )
5234           );
5235 
5236    uitem_failed EXCEPTION;
5237    l_id1        okx_system_items_v.id1%TYPE;
5238    l_id2        okx_system_items_v.id2%TYPE;
5239 
5240    BEGIN
5241       x_return_status := OKL_API.G_RET_STS_SUCCESS;
5242       OPEN uitem_csr(p_usage_item_name,
5243                      p_usage_item_id,
5244                      p_org_id);
5245       FETCH uitem_csr INTO l_id1,
5246                            l_id2;
5247       IF uitem_csr%NOTFOUND THEN
5248          RAISE uitem_failed;
5249       END IF;
5250 
5251       CLOSE uitem_csr;
5252       x_usage_item_id := l_id1;
5253       x_usage_id2     := l_id2;
5254 
5255       RETURN;
5256 
5257    EXCEPTION
5258       WHEN uitem_failed THEN
5259          IF uitem_csr%ISOPEN THEN
5260             CLOSE uitem_csr;
5261          END IF;
5262          x_return_status := OKL_API.G_RET_STS_ERROR;
5263    END get_usage_item_id;
5264 
5265 ------------------------------------------------------------------------------
5266 -- PROCEDURE create_rule_group_and_rule
5267 -- It creates rule group ad rules 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 create_rule_group_and_rule(
5274                                        x_return_status OUT NOCOPY VARCHAR2,
5275                                        x_msg_count     OUT NOCOPY NUMBER,
5276                                        x_msg_data      OUT NOCOPY VARCHAR2,
5277                                        p_rgp_id        IN  NUMBER,
5278                                        p_rgpv_rec      IN  rgpv_rec_type,
5279                                        p_rulv_rec      IN  rulv_rec_type,
5280                                        x_rgpv_rec      OUT NOCOPY rgpv_rec_type,
5281                                        x_rulv_rec      OUT NOCOPY rulv_rec_type
5282                                       ) IS
5283 
5284    l_proc_name VARCHAR2(35) := 'CREATE_RULE_GROUP_AND_RULE';
5285    l_id        NUMBER;
5286    rg_failed   EXCEPTION;
5287    l_rulv_rec_in rulv_rec_type;
5288 
5289    BEGIN
5290 
5291       x_return_status := OKL_API.G_RET_STS_SUCCESS;
5292 
5293       -- Check for presence of RULE info, if not RETURN with SUCCESS
5294       IF (p_rulv_rec.rule_information_category IS NULL) THEN
5295          RETURN;
5296       END IF;
5297 
5298       --IF (p_rgp_id IS NULL) THEN -- create rule group
5299       --Bug# 4284166 : Added check for p_rgp_id = OKC_API.G_MISS_NUM in if statement
5300       IF (p_rgp_id IS NULL or p_rgp_id = OKC_API.G_MISS_NUM) THEN -- create rule group
5301 
5302          OKL_RULE_PUB.create_rule_group(
5303                                       p_api_version     => 1.0,
5304                                       p_init_msg_list   => OKL_API.G_FALSE,
5305                                       x_return_status   => x_return_status,
5306                                       x_msg_count       => x_msg_count,
5307                                       x_msg_data        => x_msg_data,
5308                                       p_rgpv_rec        => p_rgpv_rec,
5309                                       x_rgpv_rec        => x_rgpv_rec
5310                                      );
5311          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
5312              x_return_status := OKL_API.G_RET_STS_ERROR;
5313              raise rg_failed;
5314          END IF;
5315 
5316          l_id := x_rgpv_rec.id;
5317 
5318       ELSE
5319          l_id := p_rgp_id;
5320 
5321       END IF; --rule_group
5322 
5323       -- create rule now
5324       l_rulv_rec_in        := p_rulv_rec;
5325       l_rulv_rec_in.rgp_id := l_id;
5326 
5327       OKL_RULE_PUB.create_rule(
5328                                p_api_version     => 1.0,
5329                                p_init_msg_list   => OKL_API.G_FALSE,
5330                                x_return_status   => x_return_status,
5331                                x_msg_count       => x_msg_count,
5332                                x_msg_data        => x_msg_data,
5333                                p_rulv_rec        => l_rulv_rec_in,
5334                                x_rulv_rec        => x_rulv_rec
5335                               );
5336 
5337       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
5338           x_return_status := OKL_API.G_RET_STS_ERROR;
5339           raise rg_failed;
5340       END IF;
5341 
5342       RETURN;
5343 
5344    EXCEPTION
5345       WHEN rg_failed THEN
5346          x_return_status := OKL_API.G_RET_STS_ERROR;
5347    END create_rule_group_and_rule;
5348 
5349 ------------------------------------------------------------------------------
5350 -- PROCEDURE create_update_asset_rules
5351 -- It creates or updates rules and
5352 -- stacks Error, if any, and returns ERROR status to calling process.
5353 -- p_rgp_id = Rule Group ID, create rule group if it is null, otherwise use it
5354 -- Calls:
5355 -- Called By:
5356 ------------------------------------------------------------------------------
5357    PROCEDURE create_update_asset_rules(
5358     x_return_status                  OUT NOCOPY VARCHAR2,
5359     x_msg_count                      OUT NOCOPY NUMBER,
5360     x_msg_data                       OUT NOCOPY VARCHAR2,
5361     p_chr_id                         IN  okc_k_headers_v.id%TYPE,
5362     p_contract_number                IN  okl_header_interface.contract_number_old%TYPE,
5363     p_cle_id                         IN  okl_k_lines_v.id%TYPE,
5364     p_line_number                    IN  okc_k_lines_v.line_number%TYPE,
5365     p_line_type                      IN  okl_lines_interface.line_type%TYPE,
5366     p_inv_org_id                     IN  okl_lines_interface.inventory_organization_id%TYPE,
5367     p_sales_tax_exempt_flag          IN  okl_lines_interface.sales_tax_exempt_flag%TYPE,
5368     p_sales_tax_exempt_cert_number   IN  okl_lines_interface.sales_tax_exempt_cert_number%TYPE,
5369     p_sales_tax_override_flag        IN  okl_lines_interface.sales_tax_override_flag%TYPE,
5370     p_sales_tax_override_rate        IN  okl_lines_interface.sales_tax_override_rate%TYPE,
5371     p_st_upd_lines_from_contract     IN  okl_lines_interface.st_update_lines_from_contract%TYPE,
5372     p_st_transfer_of_title           IN  okl_lines_interface.st_transfer_of_title%TYPE,
5373     p_st_sale_and_lease_back         IN  okl_lines_interface.st_sale_and_lease_back%TYPE,
5374     p_st_purchase_of_lease           IN  okl_lines_interface.st_purchase_of_lease%TYPE,
5375     p_st_equipment_usage             IN  okl_lines_interface.st_equipment_usage%TYPE,
5376     p_st_equipment_age               IN  okl_lines_interface.st_equipment_age%TYPE,
5377     p_st_asset_upfront_tax           IN  okl_lines_interface.st_asset_upfront_tax%TYPE,
5378     p_vat_tax_exempt                 IN  okl_lines_interface.vat_tax_exempt%TYPE,
5379     p_vat_tax_exempt_cert_number     IN  okl_lines_interface.vat_tax_exempt_cert_number%TYPE,
5380     p_vat_tax_override_flag          IN  okl_lines_interface.vat_tax_override_flag%TYPE,
5381     p_vat_tax_override_rate          IN  okl_lines_interface.vat_tax_override_rate%TYPE,
5382     p_prop_tax_applicable            IN  okl_lines_interface.prop_tax_applicable%TYPE,
5383     p_prop_tax_lease_rep             IN  okl_lines_interface.prop_tax_lease_rep%TYPE,
5384     p_french_tax_code                IN  okl_lines_interface.french_tax_code%TYPE,
5385     p_french_tax_name                IN  okl_lines_interface.french_tax_name%TYPE,
5386     p_prop_tax_bill_method           IN  okl_lines_interface.prop_tax_bill_method%TYPE,
5387     p_prop_tax_as_contract_yn        IN  okl_lines_interface.prop_tax_as_contract_yn%TYPE ) IS
5388 
5389    line_rule_failed   EXCEPTION;
5390    rule_group_failed  EXCEPTION;
5391    rule_failed        EXCEPTION;
5392    l_proc_name        VARCHAR2(35) := 'CREATE_UPDATE_ASSET_RULES';
5393 
5394    x_lienholder_id    NUMBER := NULL;
5395    x_title_issuer_id  NUMBER := NULL;
5396    l_rgp_id           NUMBER;
5397    x_base_uom_id      okx_tuom_v.id1%TYPE;
5398    x_price_list_id    okx_list_headers_v.id1%TYPE;
5399    x_stream_id        okl_strmtyp_source_v.id1%TYPE;
5400    l_payment_term_id  okx_payables_terms_v.id1%TYPE;
5401    l_vendor_paysite_id okx_vendor_sites_v.id1%TYPE;
5402    l_freq_id          okl_time_units_v.id1%TYPE;
5403 
5404    -- Rule Rec
5405    x_rgpv_rec         rgpv_rec_type;
5406    l_rgpv_rec         rgpv_rec_type;
5407 
5408    l_rulv_rec         rulv_rec_type;
5409    x_rulv_rec         rulv_rec_type;
5410 
5411    lp_rulv_rec         rulv_rec_type;
5412    xp_rulv_rec         rulv_rec_type;
5413 
5414    l_progress         VARCHAR2(10) := '1.0';
5415    l_french_tax_code  OKL_FRENCH_TAX_V.CODE%TYPE;
5416 
5417    CURSOR french_tax_csr (p_tax_code okl_french_tax_v.code%TYPE,
5418                           p_tax_name okl_french_tax_v.name%TYPE) IS
5419    SELECT code
5420    FROM   okl_french_tax_v
5421    WHERE  ( code = p_tax_code
5422             AND
5423             p_tax_code IS NOT NULL)
5424    OR     ( name = p_tax_name
5425             AND
5426             p_tax_name IS NOT NULL)
5427    AND    TRUNC(SYSDATE) BETWEEN NVL(TRUNC(start_date), TRUNC(SYSDATE))
5428                              AND NVL(TRUNC(end_date), TRUNC(SYSDATE));
5429 
5430    CURSOR get_rule_group_info(p_chr_id  okc_k_headers_b.id%TYPE,
5431                               p_cle_id  okc_k_lines_v.id%TYPE) IS
5432    SELECT rgp.id
5433    FROM okc_rule_groups_v rgp
5434    WHERE rgp.dnz_chr_id = p_chr_id
5435    AND rgp.cle_id = p_cle_id
5436    AND rgp.rgd_code = 'LAASTX'
5437    AND rgp.rgp_type = 'KRG';
5438 
5439    -- 5179119
5440    CURSOR get_sales_tax_rule_info(p_chr_id  okc_k_headers_b.id%TYPE,
5441                                   p_rgp_id  okc_k_lines_v.id%TYPE) IS
5442    SELECT rule.id
5443    FROM okc_rules_v rule
5444    WHERE rule.dnz_chr_id = p_chr_id
5445    AND rule.rgp_id = p_rgp_id
5446    AND rule.rule_information_category = 'LAASTX';
5447 
5448    CURSOR get_prop_tax_rule_info(p_chr_id  okc_k_headers_b.id%TYPE,
5449                                  p_rgp_id  okc_k_lines_v.id%TYPE) IS
5450    SELECT rule.id
5451    FROM okc_rules_v rule
5452    WHERE rule.dnz_chr_id = p_chr_id
5453    AND rule.rgp_id = p_rgp_id
5454    AND rule.rule_information_category = 'LAPRTX';
5455 
5456    ln_rgp_id    OKC_RULE_GROUPS_V.ID%TYPE;
5457    ln_rule_id   OKC_RULES_V.ID%TYPE;
5458    -- 5179119
5459    l_sales_tax_rule_id   OKC_RULES_V.ID%TYPE;
5460    l_sales_tax_rule_found   BOOLEAN;
5461 
5462    lv_rec_populate_check  VARCHAR2(1) := 'N';
5463 
5464    BEGIN
5465 
5466      x_return_status := OKL_API.G_RET_STS_SUCCESS;
5467      debug_message(l_proc_name);
5468 
5469      OPEN get_rule_group_info(p_chr_id, p_cle_id);
5470      FETCH get_rule_group_info into ln_rgp_id;
5471      IF get_rule_group_info%NOTFOUND THEN
5472        RAISE rule_group_failed;
5473      END IF;
5474      CLOSE get_rule_group_info;
5475 
5476      -- Sales Tax 5179119
5477      OPEN get_sales_tax_rule_info(p_chr_id	=> p_chr_id,
5478    		  		  p_rgp_id	=> ln_rgp_id);
5479      FETCH get_sales_tax_rule_info into l_sales_tax_rule_id;
5480      IF get_sales_tax_rule_info%NOTFOUND THEN
5481        l_sales_tax_rule_found := FALSE;
5482      ELSE
5483        l_sales_tax_rule_found := TRUE;
5484      END IF;
5485      CLOSE get_sales_tax_rule_info;
5486 
5487     l_rulv_rec := NULL;
5488 
5489      -- Rule Group LAASTX
5490      IF (p_sales_tax_exempt_flag IS NOT NULL) THEN
5491        l_rulv_rec.rule_information1         := p_sales_tax_exempt_flag;
5492        l_rulv_rec.rgp_id                    := ln_rgp_id;
5493        l_rulv_rec.dnz_chr_id                := p_chr_id;
5494        l_rulv_rec.rule_information_category := 'LAASTX';
5495        l_rulv_rec.std_template_yn           := 'N';
5496        l_rulv_rec.warn_yn                   := 'N';
5497        lv_rec_populate_check := 'Y';
5498      END IF;
5499 
5500      IF (p_sales_tax_exempt_cert_number IS NOT NULL) THEN
5501        l_rulv_rec.rule_information2         := p_sales_tax_exempt_cert_number;
5502        l_rulv_rec.rgp_id                    := ln_rgp_id;
5503        l_rulv_rec.dnz_chr_id                := p_chr_id;
5504        l_rulv_rec.rule_information_category := 'LAASTX';
5505        l_rulv_rec.std_template_yn           := 'N';
5506        l_rulv_rec.warn_yn                   := 'N';
5507        lv_rec_populate_check := 'Y';
5508      END IF;
5509 
5510      IF (p_sales_tax_override_flag IS NOT NULL) THEN
5511        l_rulv_rec.rule_information3         := p_sales_tax_override_flag;
5512        l_rulv_rec.rgp_id                    := ln_rgp_id;
5513        l_rulv_rec.dnz_chr_id                := p_chr_id;
5514        l_rulv_rec.rule_information_category := 'LAASTX';
5515        l_rulv_rec.std_template_yn           := 'N';
5516        l_rulv_rec.warn_yn                   := 'N';
5517        lv_rec_populate_check := 'Y';
5518      END IF;
5519 
5520      IF (p_sales_tax_override_rate IS NOT NULL) THEN
5521        l_rulv_rec.rule_information4         := p_sales_tax_override_rate;
5522        l_rulv_rec.rgp_id                    := ln_rgp_id;
5523        l_rulv_rec.dnz_chr_id                := p_chr_id;
5524        l_rulv_rec.rule_information_category := 'LAASTX';
5525        l_rulv_rec.std_template_yn           := 'N';
5526        l_rulv_rec.warn_yn                   := 'N';
5527        lv_rec_populate_check := 'Y';
5528      END IF;
5529 
5530      IF (p_st_upd_lines_from_contract IS NOT NULL) THEN
5531        l_rulv_rec.rule_information5         := p_st_upd_lines_from_contract;
5532        l_rulv_rec.rgp_id                    := ln_rgp_id;
5533        l_rulv_rec.dnz_chr_id                := p_chr_id;
5534        l_rulv_rec.rule_information_category := 'LAASTX';
5535        l_rulv_rec.std_template_yn           := 'N';
5536        l_rulv_rec.warn_yn                   := 'N';
5537        lv_rec_populate_check := 'Y';
5538      END IF;
5539 
5540      IF (p_st_transfer_of_title IS NOT NULL) THEN
5541        l_rulv_rec.rule_information6         := p_st_transfer_of_title;
5542        l_rulv_rec.rgp_id                    := ln_rgp_id;
5543        l_rulv_rec.dnz_chr_id                := p_chr_id;
5544        l_rulv_rec.rule_information_category := 'LAASTX';
5545        l_rulv_rec.std_template_yn           := 'N';
5546        l_rulv_rec.warn_yn                   := 'N';
5547        lv_rec_populate_check := 'Y';
5548      END IF;
5549 
5550      IF (p_st_sale_and_lease_back IS NOT NULL) THEN
5551        l_rulv_rec.rule_information7         := p_st_sale_and_lease_back;
5552        l_rulv_rec.rgp_id                    := ln_rgp_id;
5553        l_rulv_rec.dnz_chr_id                := p_chr_id;
5554        l_rulv_rec.rule_information_category := 'LAASTX';
5555        l_rulv_rec.std_template_yn           := 'N';
5556        l_rulv_rec.warn_yn                   := 'N';
5557        lv_rec_populate_check := 'Y';
5558      END IF;
5559 
5560      IF (p_st_purchase_of_lease IS NOT NULL) THEN
5561        l_rulv_rec.rule_information8         := p_st_purchase_of_lease;
5562        l_rulv_rec.rgp_id                    := ln_rgp_id;
5563        l_rulv_rec.dnz_chr_id                := p_chr_id;
5564        l_rulv_rec.rule_information_category := 'LAASTX';
5565        l_rulv_rec.std_template_yn           := 'N';
5566        l_rulv_rec.warn_yn                   := 'N';
5567        lv_rec_populate_check := 'Y';
5568      END IF;
5569 
5570      IF (p_st_equipment_usage IS NOT NULL) THEN
5571        l_rulv_rec.rule_information9         := p_st_equipment_usage;
5572        l_rulv_rec.rgp_id                    := ln_rgp_id;
5573        l_rulv_rec.dnz_chr_id                := p_chr_id;
5574        l_rulv_rec.rule_information_category := 'LAASTX';
5575        l_rulv_rec.std_template_yn           := 'N';
5576        l_rulv_rec.warn_yn                   := 'N';
5577        lv_rec_populate_check := 'Y';
5578      END IF;
5579 
5580      IF (p_st_equipment_age IS NOT NULL) THEN
5581        l_rulv_rec.rule_information10        := p_st_equipment_age;
5582        l_rulv_rec.rgp_id                    := ln_rgp_id;
5583        l_rulv_rec.dnz_chr_id                := p_chr_id;
5584        l_rulv_rec.rule_information_category := 'LAASTX';
5585        l_rulv_rec.std_template_yn           := 'N';
5586        l_rulv_rec.warn_yn                   := 'N';
5587        lv_rec_populate_check := 'Y';
5588      END IF;
5589 
5590      IF (p_st_asset_upfront_tax IS NOT NULL) THEN
5591        l_rulv_rec.rule_information11        := p_st_asset_upfront_tax;
5592        l_rulv_rec.rgp_id                    := ln_rgp_id;
5593        l_rulv_rec.dnz_chr_id                := p_chr_id;
5594        l_rulv_rec.rule_information_category := 'LAASTX';
5595        l_rulv_rec.std_template_yn           := 'N';
5596        l_rulv_rec.warn_yn                   := 'N';
5597        lv_rec_populate_check := 'Y';
5598      END IF;
5599 
5600      IF (lv_rec_populate_check = 'Y') THEN
5601        IF NOT(l_sales_tax_rule_found) THEN -- 5179119
5602          OKL_RULE_PUB.create_rule(
5603                                p_api_version     => 1.0,
5604                                p_init_msg_list   => OKL_API.G_FALSE,
5605                                x_return_status   => x_return_status,
5606                                x_msg_count       => x_msg_count,
5607                                x_msg_data        => x_msg_data,
5608                                p_rulv_rec        => l_rulv_rec,
5609                                x_rulv_rec        => x_rulv_rec
5610                               );
5611        ELSE
5612          l_rulv_rec.id := l_sales_tax_rule_id;
5613          l_rulv_rec.created_by := OKC_API.G_MISS_NUM;
5614          l_rulv_rec.creation_date := OKC_API.G_MISS_DATE;
5615          OKL_RULE_PUB.update_rule(
5616                                p_api_version     => 1.0,
5617                                p_init_msg_list   => OKL_API.G_FALSE,
5618                                x_return_status   => x_return_status,
5619                                x_msg_count       => x_msg_count,
5620                                x_msg_data        => x_msg_data,
5621                                p_rulv_rec        => l_rulv_rec,
5622                                x_rulv_rec        => x_rulv_rec
5623                               );
5624        END IF;
5625        l_progress := '1.1';
5626        IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
5627          x_return_status := OKL_API.G_RET_STS_ERROR;
5628          raise line_rule_failed;
5629        END IF;
5630      END IF;
5631 
5632      l_rulv_rec := NULL;
5633      lv_rec_populate_check := 'N';
5634      IF (p_vat_tax_exempt IS NOT NULL) THEN
5635 
5636        l_rulv_rec.rule_information1         := p_vat_tax_exempt;
5637        l_rulv_rec.rgp_id                    := ln_rgp_id;
5638        l_rulv_rec.dnz_chr_id                := p_chr_id;
5639        l_rulv_rec.rule_information_category := 'LAAVTX';
5640        l_rulv_rec.std_template_yn           := 'N';
5641        l_rulv_rec.warn_yn                   := 'N';
5642        lv_rec_populate_check := 'Y';
5643      END IF;
5644 
5645      IF (p_vat_tax_exempt_cert_number IS NOT NULL) THEN
5646 
5647        l_rulv_rec.rule_information2         := p_vat_tax_exempt_cert_number;
5648        l_rulv_rec.rgp_id                    := ln_rgp_id;
5649        l_rulv_rec.dnz_chr_id                := p_chr_id;
5650        l_rulv_rec.rule_information_category := 'LAAVTX';
5651        l_rulv_rec.std_template_yn           := 'N';
5652        l_rulv_rec.warn_yn                   := 'N';
5653        lv_rec_populate_check := 'Y';
5654      END IF;
5655 
5656      IF (p_vat_tax_override_flag IS NOT NULL) THEN
5657 
5658        l_rulv_rec.rule_information3         := p_vat_tax_override_flag;
5659        l_rulv_rec.rgp_id                    := ln_rgp_id;
5660        l_rulv_rec.dnz_chr_id                := p_chr_id;
5661        l_rulv_rec.rule_information_category := 'LAAVTX';
5662        l_rulv_rec.std_template_yn           := 'N';
5663        l_rulv_rec.warn_yn                   := 'N';
5664        lv_rec_populate_check := 'Y';
5665      END IF;
5666 
5667      IF (p_vat_tax_override_rate IS NOT NULL) THEN
5668 
5669        l_rulv_rec.rule_information4         := p_vat_tax_override_rate;
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 := 'LAAVTX';
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 (lv_rec_populate_check = 'Y') THEN
5679        OKL_RULE_PUB.create_rule(
5680                                p_api_version     => 1.0,
5681                                p_init_msg_list   => OKL_API.G_FALSE,
5682                                x_return_status   => x_return_status,
5683                                x_msg_count       => x_msg_count,
5684                                x_msg_data        => x_msg_data,
5685                                p_rulv_rec        => l_rulv_rec,
5686                                x_rulv_rec        => x_rulv_rec
5687                               );
5688        l_progress := '1.2';
5689        IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
5690          x_return_status := OKL_API.G_RET_STS_ERROR;
5691          raise line_rule_failed;
5692        END IF;
5693      END IF;
5694 
5695      -- Property Tax
5696      OPEN get_prop_tax_rule_info(p_chr_id	=> p_chr_id,
5697    		  			             p_rgp_id	=> ln_rgp_id);
5698      FETCH get_prop_tax_rule_info into ln_rule_id;
5699      IF get_prop_tax_rule_info%NOTFOUND THEN
5700        RAISE rule_failed;
5701      END IF;
5702      CLOSE get_prop_tax_rule_info;
5703 
5704      IF (p_prop_tax_applicable IS NOT NULL) THEN
5705        lp_rulv_rec.id                        := ln_rule_id;
5706        lp_rulv_rec.rule_information1         := p_prop_tax_applicable;
5707        lp_rulv_rec.rule_information_category := 'LAPRTX';
5708      END IF;
5709 
5710      IF (p_prop_tax_lease_rep IS NOT NULL) THEN
5711        lp_rulv_rec.id                        := ln_rule_id;
5712        lp_rulv_rec.rule_information2         := p_prop_tax_lease_rep;
5713        lp_rulv_rec.rule_information_category := 'LAPRTX';
5714      END IF;
5715 
5716      IF (p_prop_tax_bill_method IS NOT NULL) THEN
5717        lp_rulv_rec.id                        := ln_rule_id;
5718        lp_rulv_rec.rule_information3         := p_prop_tax_bill_method;
5719        lp_rulv_rec.rule_information_category := 'LAPRTX';
5720      END IF;
5721 
5722      IF (p_prop_tax_applicable IS NOT NULL
5723          OR
5724          p_prop_tax_lease_rep IS NOT NULL
5725          OR
5726          p_prop_tax_bill_method IS NOT NULL) THEN  -- Bug# 3984890
5727          OKL_RULE_PUB.update_rule(
5728                                p_api_version     => 1.0,
5729                                p_init_msg_list   => OKL_API.G_FALSE,
5730                                x_return_status   => x_return_status,
5731                                x_msg_count       => x_msg_count,
5732                                x_msg_data        => x_msg_data,
5733                                p_rulv_rec        => lp_rulv_rec,
5734                                x_rulv_rec        => xp_rulv_rec
5735                               );
5736          l_progress := '1.3';
5737          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
5738            x_return_status := OKL_API.G_RET_STS_ERROR;
5739            raise line_rule_failed;
5740          END IF;
5741 
5742      END IF;
5743 
5744      l_rulv_rec := NULL;
5745      lv_rec_populate_check := 'N';
5746 
5747      -- 'LAASTK' Rule
5748      IF (p_prop_tax_as_contract_yn IS NOT NULL) THEN
5749        l_rulv_rec.rgp_id                    := ln_rgp_id;
5750        l_rulv_rec.dnz_chr_id                := p_chr_id;
5751        l_rulv_rec.rule_information1         := p_prop_tax_as_contract_yn;
5752        l_rulv_rec.rule_information_category := 'LAASTK';
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 (lv_rec_populate_check = 'Y') THEN
5759        OKL_RULE_PUB.create_rule(
5760                                p_api_version     => 1.0,
5761                                p_init_msg_list   => OKL_API.G_FALSE,
5762                                x_return_status   => x_return_status,
5763                                x_msg_count       => x_msg_count,
5764                                x_msg_data        => x_msg_data,
5765                                p_rulv_rec        => l_rulv_rec,
5766                                x_rulv_rec        => x_rulv_rec
5767                               );
5768        l_progress := '1.4';
5769        IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
5770          x_return_status := OKL_API.G_RET_STS_ERROR;
5771          raise line_rule_failed;
5772        END IF;
5773      END IF;
5774 
5775      l_rulv_rec := NULL;
5776      lv_rec_populate_check := 'N';
5777 
5778      IF (p_french_tax_code IS NOT NULL
5779              OR
5780          p_french_tax_name IS NOT NULL) THEN
5781 
5782        OPEN french_tax_csr (p_french_tax_code,
5783                             p_french_tax_name);
5784        FETCH french_tax_csr INTO l_french_tax_code;
5785        IF french_tax_csr%NOTFOUND THEN
5786          okl_api.set_message(
5787                                 G_APP_NAME,
5788                                 G_INVALID_VALUE,
5789                                 'CONTRACT_NUM',
5790                                 p_contract_number||'/'||p_line_number,
5791                                 'COL_NAME',
5792                                 'FRENCH_TAX_CODE, NAME',
5793                                 'COL_VALUE',
5794                                 p_french_tax_code||', '||p_french_tax_name
5795                               );
5796 
5797          raise line_rule_failed;
5798        END IF;
5799        CLOSE french_tax_csr;
5800      END IF;
5801 
5802      IF (l_french_tax_code IS NOT NULL) THEN
5803        l_rulv_rec.rgp_id                    := ln_rgp_id;
5804        l_rulv_rec.dnz_chr_id                := p_chr_id;
5805        l_rulv_rec.rule_information1         := l_french_tax_code;
5806        l_rulv_rec.rule_information_category := 'LATAXP';
5807        l_rulv_rec.std_template_yn           := 'N';
5808        l_rulv_rec.warn_yn                   := 'N';
5809        lv_rec_populate_check := 'Y';
5810      END IF;
5811 
5812      IF (lv_rec_populate_check = 'Y') THEN
5813        OKL_RULE_PUB.create_rule(
5814                                p_api_version     => 1.0,
5815                                p_init_msg_list   => OKL_API.G_FALSE,
5816                                x_return_status   => x_return_status,
5817                                x_msg_count       => x_msg_count,
5818                                x_msg_data        => x_msg_data,
5819                                p_rulv_rec        => l_rulv_rec,
5820                                x_rulv_rec        => x_rulv_rec
5821                               );
5822        l_progress := '1.5';
5823        IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
5824          x_return_status := OKL_API.G_RET_STS_ERROR;
5825          raise line_rule_failed;
5826        END IF;
5827      END IF;
5828 
5829      RETURN;
5830 
5831    EXCEPTION
5832      WHEN line_rule_failed THEN
5833        x_return_status := OKL_API.G_RET_STS_ERROR;
5834        debug_message('Line rule failed : '||l_progress);
5835 
5836      WHEN rule_group_failed THEN
5837        IF get_rule_group_info%ISOPEN THEN
5838          CLOSE get_rule_group_info;
5839        END IF;
5840        x_return_status := OKL_API.G_RET_STS_ERROR;
5841 
5842      WHEN rule_failed THEN
5843        IF get_prop_tax_rule_info%ISOPEN THEN
5844          CLOSE get_prop_tax_rule_info;
5845        END IF;
5846        x_return_status := OKL_API.G_RET_STS_ERROR;
5847 
5848      WHEN OTHERS THEN
5849        okl_api.set_message(
5850                             G_APP_NAME,
5851                             G_UNEXPECTED_ERROR,
5852                             'OKL_SQLCODE',
5853                             SQLCODE,
5854                             'OKL_SQLERRM',
5855                             SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
5856                            );
5857 
5858        x_return_status := OKL_API.G_RET_STS_ERROR;
5859        debug_message('line other : '||l_progress);
5860    END create_update_asset_rules;
5861 
5862 ------------------------------------------------------------------------------
5863 -- PROCEDURE create_line_rules
5864 -- It creates rules for line records and
5865 -- stacks Error, if any, and returns ERROR status to calling process.
5866 -- Calls:
5867 --  get_party_id
5868 -- Called By:
5869 --  load_input_record
5870 ------------------------------------------------------------------------------
5871 
5872    PROCEDURE create_line_rules(
5873                             x_return_status                  OUT NOCOPY VARCHAR2,
5874                             x_msg_count                      OUT NOCOPY NUMBER,
5875                             x_msg_data                       OUT NOCOPY VARCHAR2,
5876                             p_chr_id                         IN  okc_k_headers_v.id%TYPE,
5877                             p_contract_number                IN  okl_header_interface.contract_number_old%TYPE,
5878                             p_cle_id                         IN  okl_k_lines_v.id%TYPE,
5879                             p_line_number                    IN  okc_k_lines_v.line_number%TYPE,
5880                             p_line_type                      IN  okl_lines_interface.line_type%TYPE,
5881                             p_inv_org_id                     IN  okl_lines_interface.inventory_organization_id%TYPE,
5882                             p_sales_tax_exempt_flag          IN  okl_lines_interface.sales_tax_exempt_flag%TYPE,
5883                             p_sales_tax_exempt_cert_number   IN  okl_lines_interface.sales_tax_exempt_cert_number%TYPE,
5884                             p_sales_tax_override_flag        IN  okl_lines_interface.sales_tax_override_flag%TYPE,
5885                             p_sales_tax_override_rate        IN  okl_lines_interface.sales_tax_override_rate%TYPE,
5886                             p_st_upd_lines_from_contract     IN  okl_lines_interface.st_update_lines_from_contract%TYPE,
5887                             p_st_transfer_of_title           IN  okl_lines_interface.st_transfer_of_title%TYPE,
5888                             p_st_sale_and_lease_back         IN  okl_lines_interface.st_sale_and_lease_back%TYPE,
5889                             p_st_purchase_of_lease           IN  okl_lines_interface.st_purchase_of_lease%TYPE,
5890                             p_st_equipment_usage             IN  okl_lines_interface.st_equipment_usage%TYPE,
5891                             p_st_equipment_age               IN  okl_lines_interface.st_equipment_age%TYPE,
5892                             p_st_asset_upfront_tax           IN  okl_lines_interface.st_asset_upfront_tax%TYPE,
5893                             p_vat_tax_exempt                 IN  okl_lines_interface.vat_tax_exempt%TYPE,
5894                             p_vat_tax_exempt_cert_number     IN  okl_lines_interface.vat_tax_exempt_cert_number%TYPE,
5895                             p_vat_tax_override_flag          IN  okl_lines_interface.vat_tax_override_flag%TYPE,
5896                             p_vat_tax_override_rate          IN  okl_lines_interface.vat_tax_override_rate%TYPE,
5897                             p_lien_type                      IN  okl_lines_interface.lien_type%TYPE,
5898                             p_lien_filing_number             IN  okl_lines_interface.lien_filing_number%TYPE,
5899                             p_lien_filing_date               IN  okl_lines_interface.lien_filing_date%TYPE,
5900                             p_lien_filing_status             IN  okl_lines_interface.lien_filing_status%TYPE,
5901                             p_lienholder_id                  IN  okl_lines_interface.lienholder_id%TYPE,
5902                             p_lienholder_number              IN  okl_lines_interface.lienholder_number%TYPE,
5903                             p_filing_jurisdiction            IN  okl_lines_interface.filing_jurisdiction%TYPE,
5904                             p_filing_sub_jurisdiction        IN  okl_lines_interface.filing_sub_jurisdiction%TYPE,
5905                             p_lien_expiration_date           IN  okl_lines_interface.lien_expiration_date%TYPE,
5906                             p_lien_continuation_number       IN  okl_lines_interface.lien_continuation_number%TYPE,
5907                             p_lien_continuation_date         IN  okl_lines_interface.lien_continuation_date%TYPE,
5908                             p_title_type                     IN  okl_lines_interface.title_type%TYPE,
5909                             p_title_issuer_number            IN  okl_lines_interface.title_issuer_number%TYPE,
5910                             p_title_issuer_id                IN  okl_lines_interface.title_issuer_id%TYPE,
5911                             p_title_date                     IN  okl_lines_interface.title_date%TYPE,
5912                             p_title_number                   IN  okl_lines_interface.title_number%TYPE,
5913                             p_registration_number            IN  okl_lines_interface.registration_number%TYPE,
5914                             p_asset_registration_loc_name    IN  okl_lines_interface.asset_registration_loc_name%TYPE,
5915                             p_title_custodian_name           IN  okl_lines_interface.title_custodian_name%TYPE,
5916                             p_payee_site_name                IN  okl_lines_interface.payee_site_name%TYPE,
5917                             p_passthrough_percent            IN  okl_lines_interface.passthrough_percent%TYPE,
5918                             p_passthrough_basis_code         IN  okl_lines_interface.passthrough_basis_code%TYPE,
5919                             p_fee_code                       IN  okl_lines_interface.fee_code%TYPE,
5920                             p_stream_purpose                 IN  okl_lines_interface.stream_purpose_code%TYPE,
5921                             p_usage_item_name                IN  okl_lines_interface.usage_item_name%TYPE,
5922                             p_usage_item_id                  IN  okl_lines_interface.usage_item_id%TYPE,
5923                             p_price_list_name                IN  okl_lines_interface.price_list_name%TYPE,
5924                             p_price_list_id                  IN  okl_lines_interface.price_list_id%TYPE,
5925                             p_minimum_qty_usage              IN  okl_lines_interface.minimum_qty_usage%TYPE,
5926                             p_default_qty_usage              IN  okl_lines_interface.default_qty_usage%TYPE,
5927                             p_amcv_flag                      IN  okl_lines_interface.amcv_flag%TYPE,
5928                             p_level_flag                     IN  okl_lines_interface.level_flag%TYPE,
5929                             p_base_reading                   IN  okl_lines_interface.base_reading%TYPE,
5930                             p_base_reading_uom_code          IN  okl_lines_interface.base_reading_uom_code%TYPE,
5931                             p_usage_type_code                IN  okl_lines_interface.usage_type_code%TYPE,
5932                             p_fixed_usage_quantity           IN  okl_lines_interface.fixed_usage_quantity%TYPE,
5933                             p_usage_period                   IN  okl_lines_interface.usage_period%TYPE,
5934                             p_usage_no_of_period             IN  okl_lines_interface.usage_no_of_period%TYPE,
5935                             p_fee_no_of_period               IN  okl_lines_interface.fee_exp_no_of_periods%TYPE,
5936                             p_fee_frequency                  IN  okl_lines_interface.fee_exp_frequency%TYPE,
5937                             p_fee_amount_per_period          IN  okl_lines_interface.fee_exp_amount_per_period%TYPE,
5938                             p_prop_tax_applicable            IN  okl_lines_interface.prop_tax_applicable%TYPE,
5939                             p_prop_tax_lease_rep             IN  okl_lines_interface.prop_tax_lease_rep%TYPE,
5940                             p_french_tax_code                IN  okl_lines_interface.french_tax_code%TYPE,
5941                             p_french_tax_name                IN  okl_lines_interface.french_tax_name%TYPE,
5942 -- Added by rravikir (Fix for Bug 3947959)
5943                             p_prop_tax_bill_method           IN  okl_lines_interface.prop_tax_bill_method%TYPE,
5944                             p_prop_tax_as_contract_yn        IN  okl_lines_interface.prop_tax_as_contract_yn%TYPE
5945 -- End
5946                            ) IS
5947 
5948    line_rule_failed   EXCEPTION;
5949    l_proc_name        VARCHAR2(35) := 'CREATE_LINE_RULES';
5950 
5951    x_lienholder_id    NUMBER := NULL;
5952    x_title_issuer_id  NUMBER := NULL;
5953    l_rgp_id           NUMBER;
5954    x_usage_item_id    okx_system_items_v.id1%TYPE;
5955    x_usage_id2        okx_system_items_v.id2%TYPE;
5956    x_base_uom_id      okx_tuom_v.id1%TYPE;
5957    x_price_list_id    okx_list_headers_v.id1%TYPE;
5958    x_stream_id        okl_strmtyp_source_v.id1%TYPE;
5959    l_payment_term_id  okx_payables_terms_v.id1%TYPE;
5960    l_vendor_paysite_id okx_vendor_sites_v.id1%TYPE;
5961    l_freq_id          okl_time_units_v.id1%TYPE;
5962 
5963    CURSOR freq_csr (p_frequency VARCHAR2) IS
5964    SELECT id1
5965    FROM   okl_time_units_v
5966    WHERE  name = p_frequency
5967    AND    status = 'A'
5968    AND    TRUNC(SYSDATE) BETWEEN NVL(TRUNC(start_date_active), TRUNC(SYSDATE)) AND
5969                                  NVL(TRUNC(end_date_active), TRUNC(SYSDATE));
5970    -- Rule Rec
5971    x_rgpv_rec         rgpv_rec_type;
5972    l_rgpv_rec         rgpv_rec_type;
5973 
5974    l_rulv_rec         rulv_rec_type;
5975    x_rulv_rec         rulv_rec_type;
5976 
5977    l_progress         VARCHAR2(10) := '1.0';
5978    l_french_tax_code  OKL_FRENCH_TAX_V.CODE%TYPE;
5979 
5980    CURSOR french_tax_csr (p_tax_code okl_french_tax_v.code%TYPE,
5981                           p_tax_name okl_french_tax_v.name%TYPE) IS
5982    SELECT code
5983    FROM   okl_french_tax_v
5984    WHERE  ( code = p_tax_code
5985             AND
5986             p_tax_code IS NOT NULL)
5987    OR     ( name = p_tax_name
5988             AND
5989             p_tax_name IS NOT NULL)
5990    AND    TRUNC(SYSDATE) BETWEEN NVL(TRUNC(start_date), TRUNC(SYSDATE))
5991                              AND NVL(TRUNC(end_date), TRUNC(SYSDATE));
5992 
5993    l_ok   VARCHAR2(1) := '?';
5994    CURSOR usage_type_csr (p_usage_type VARCHAR2) IS
5995    SELECT 'Y'
5996    FROM   fnd_lookups
5997    WHERE  lookup_type = 'OKS_USAGE_TYPE'
5998    AND    TRUNC(SYSDATE) BETWEEN NVL(TRUNC(start_date_active), TRUNC(SYSDATE)) AND
5999                               NVL(TRUNC(end_date_active), TRUNC(SYSDATE));
6000 
6001    -- Added by rravikir (Fix for Bug 3947959)
6002    lv_asset_default        okl_property_tax_setups.enable_asset_default%TYPE;
6003    CURSOR get_est_prop_tax_info(p_chr_id  okc_k_headers_b.id%TYPE) IS
6004    SELECT enable_asset_default
6005    FROM okl_property_tax_setups
6006    WHERE org_id = (SELECT authoring_org_id
6007                    FROM okc_k_headers_b
6008                    WHERE id = p_chr_id);
6009    -- End
6010 
6011    l_present_yn VARCHAR2(1);
6012    l_service_name OKL_STRMTYP_SOURCE_V.NAME%TYPE;
6013 
6014    -- 5179119
6015    CURSOR get_sales_tax_rgp_info(p_chr_id  okc_k_headers_b.id%TYPE,
6016                                         p_cle_id  okc_k_lines_v.id%TYPE) IS
6017    SELECT rgp.id
6018    FROM okc_rule_groups_v rgp
6019    WHERE rgp.dnz_chr_id = p_chr_id
6020    AND rgp.cle_id = p_cle_id
6021    AND rgp.rgd_code = 'LAASTX'
6022    AND rgp.rgp_type = 'KRG';
6023 
6024    CURSOR get_sales_tax_rule_info(p_chr_id  okc_k_headers_b.id%TYPE,
6025                                   p_rgp_id  okc_k_lines_v.id%TYPE) IS
6026    SELECT rule.id
6027    FROM okc_rules_v rule
6028    WHERE rule.dnz_chr_id = p_chr_id
6029    AND rule.rgp_id = p_rgp_id
6030    AND rule.rule_information_category = 'LAASTX';
6031 
6032    l_sales_tax_rgp_id    OKC_RULE_GROUPS_V.ID%TYPE;
6033    l_sales_tax_rule_id   OKC_RULES_V.ID%TYPE;
6034    l_sales_tax_rgp_found   BOOLEAN;
6035    l_sales_tax_rule_found   BOOLEAN;
6036    l_create_rule_group      BOOLEAN;
6037    -- 5179119
6038    l_rgp_count NUMBER; --AKP
6039    l_rul_count NUMBER;
6040 
6041    BEGIN
6042       x_return_status := OKL_API.G_RET_STS_SUCCESS;
6043       --debug_message('AKP:In create_line_rules.. p_cle_id=' || p_cle_id);
6044 
6045       l_rulv_rec := NULL; -- DDEY
6046 
6047       -- Added by rravikir (Fix for Bug 3947959)
6048       OPEN get_est_prop_tax_info(p_chr_id   => p_chr_id);
6049       FETCH get_est_prop_tax_info into lv_asset_default;
6050       CLOSE get_est_prop_tax_info;
6051       -- End
6052 
6053       IF (p_line_type = 'ASSET') THEN
6054         -- Added by rravikir (Fix for Bug 3947959)
6055         IF (lv_asset_default IS NOT NULL AND lv_asset_default = 'YES') THEN
6056           create_update_asset_rules(
6057                             x_return_status                  => x_return_status,
6058                             x_msg_count                      => x_msg_count,
6059                             x_msg_data                       => x_msg_data,
6060                             p_chr_id                         => p_chr_id,
6061                             p_cle_id                         => p_cle_id,
6062                             p_contract_number                => p_contract_number,
6063                             p_line_number                    => p_line_number,
6064                             p_line_type                      => p_line_type,
6065                             p_inv_org_id                     => p_inv_org_id,
6066                             p_sales_tax_exempt_flag          => p_sales_tax_exempt_flag,
6067                             p_sales_tax_exempt_cert_number   => p_sales_tax_exempt_cert_number,
6068                             p_sales_tax_override_flag        => p_sales_tax_override_flag,
6069                             p_sales_tax_override_rate        => p_sales_tax_override_rate,
6070                             p_st_upd_lines_from_contract     => p_st_upd_lines_from_contract,
6071                             p_st_transfer_of_title           => p_st_transfer_of_title,
6072                             p_st_sale_and_lease_back         => p_st_sale_and_lease_back,
6073                             p_st_purchase_of_lease           => p_st_purchase_of_lease,
6074                             p_st_equipment_usage             => p_st_equipment_usage,
6075                             p_st_equipment_age               => p_st_equipment_age,
6076                             p_st_asset_upfront_tax           => p_st_asset_upfront_tax,
6077                             p_vat_tax_exempt                 => p_vat_tax_exempt,
6078                             p_vat_tax_exempt_cert_number     => p_vat_tax_exempt_cert_number,
6079                             p_vat_tax_override_flag          => p_vat_tax_override_flag,
6080                             p_vat_tax_override_rate          => p_vat_tax_override_rate,
6081                             p_prop_tax_applicable            => p_prop_tax_applicable,
6082                             p_prop_tax_lease_rep             => p_prop_tax_lease_rep,
6083                             p_french_tax_code                => p_french_tax_code,
6084                             p_french_tax_name                => p_french_tax_name,
6085                             p_prop_tax_bill_method           => p_prop_tax_bill_method,
6086                             p_prop_tax_as_contract_yn        => p_prop_tax_as_contract_yn);
6087           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
6088             raise line_rule_failed;
6089           END IF;
6090         ELSE
6091         -- End
6092 
6093          debug_message('***** > Else of estimated prop tax');
6094 
6095          -- 5179119
6096          OPEN get_sales_tax_rgp_info(p_chr_id, p_cle_id);
6097          FETCH get_sales_tax_rgp_info into l_sales_tax_rgp_id;
6098          IF get_sales_tax_rgp_info%NOTFOUND THEN
6099            l_sales_tax_rgp_found := FALSE;
6100          ELSE
6101            l_sales_tax_rgp_found := TRUE;
6102          END IF;
6103          CLOSE get_sales_tax_rgp_info;
6104 
6105          OPEN get_sales_tax_rule_info(p_chr_id	=> p_chr_id,
6106    		  		      p_rgp_id	=> l_sales_tax_rgp_id);
6107          FETCH get_sales_tax_rule_info into l_sales_tax_rule_id;
6108          IF get_sales_tax_rule_info%NOTFOUND THEN
6109            l_sales_tax_rule_found := FALSE;
6110          ELSE
6111            l_sales_tax_rule_found := TRUE;
6112          END IF;
6113          CLOSE get_sales_tax_rule_info;
6114 
6115          -- Rule Group LAASTX
6116          l_rgpv_rec            := NULL;
6117          l_rgp_id              := NULL;
6118          l_rgpv_rec.rgd_code   := 'LAASTX';
6119          l_rgpv_rec.chr_id     := NULL;
6120          l_rgpv_rec.dnz_chr_id := p_chr_id;
6121          l_rgpv_rec.cle_id     := p_cle_id;
6122          l_rgpv_rec.rgp_type   := 'KRG';
6123 
6124          l_create_rule_group                  := FALSE;
6125          IF (p_sales_tax_exempt_flag IS NOT NULL) THEN
6126 
6127             l_rulv_rec.rule_information1         := p_sales_tax_exempt_flag;
6128             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6129             l_rulv_rec.dnz_chr_id                := p_chr_id;
6130             l_rulv_rec.rule_information_category := 'LAASTX';
6131             l_rulv_rec.std_template_yn           := 'N';
6132             l_rulv_rec.warn_yn                   := 'N';
6133             l_create_rule_group                  := TRUE;
6134          END IF;
6135 
6136          IF (p_sales_tax_exempt_cert_number IS NOT NULL) THEN
6137 
6138              l_rulv_rec.rule_information2         := p_sales_tax_exempt_cert_number;
6139              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6140              l_rulv_rec.dnz_chr_id                := p_chr_id;
6141              l_rulv_rec.rule_information_category := 'LAASTX';
6142              l_rulv_rec.std_template_yn           := 'N';
6143              l_rulv_rec.warn_yn                   := 'N';
6144             l_create_rule_group                  := TRUE;
6145 
6146          END IF;
6147 
6148          IF (p_sales_tax_override_flag IS NOT NULL) THEN
6149 
6150              l_rulv_rec.rule_information3         := p_sales_tax_override_flag;
6151              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6152              l_rulv_rec.dnz_chr_id                := p_chr_id;
6153              l_rulv_rec.rule_information_category := 'LAASTX';
6154              l_rulv_rec.std_template_yn           := 'N';
6155              l_rulv_rec.warn_yn                   := 'N';
6156             l_create_rule_group                  := TRUE;
6157 
6158          END IF;
6159 
6160          IF (p_sales_tax_override_rate IS NOT NULL) THEN
6161 
6162              l_rulv_rec.rule_information4         := p_sales_tax_override_rate;
6163              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6164              l_rulv_rec.dnz_chr_id                := p_chr_id;
6165              l_rulv_rec.rule_information_category := 'LAASTX';
6166              l_rulv_rec.std_template_yn           := 'N';
6167              l_rulv_rec.warn_yn                   := 'N';
6168             l_create_rule_group                  := TRUE;
6169 
6170          END IF;
6171 
6172          IF (p_st_upd_lines_from_contract IS NOT NULL) THEN
6173 
6174              l_rulv_rec.rule_information5         := p_st_upd_lines_from_contract;
6175              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6176              l_rulv_rec.dnz_chr_id                := p_chr_id;
6177              l_rulv_rec.rule_information_category := 'LAASTX';
6178              l_rulv_rec.std_template_yn           := 'N';
6179              l_rulv_rec.warn_yn                   := 'N';
6180              l_create_rule_group                  := TRUE;
6181 
6182          END IF;
6183 
6184          IF (p_st_transfer_of_title IS NOT NULL) THEN
6185 
6186              l_rulv_rec.rule_information6         := p_st_transfer_of_title;
6187              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6188              l_rulv_rec.dnz_chr_id                := p_chr_id;
6189              l_rulv_rec.rule_information_category := 'LAASTX';
6190              l_rulv_rec.std_template_yn           := 'N';
6191              l_rulv_rec.warn_yn                   := 'N';
6192              l_create_rule_group                  := TRUE;
6193 
6194          END IF;
6195 
6196          IF (p_st_sale_and_lease_back IS NOT NULL) THEN
6197 
6198              l_rulv_rec.rule_information7         := p_st_sale_and_lease_back;
6199              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6200              l_rulv_rec.dnz_chr_id                := p_chr_id;
6201              l_rulv_rec.rule_information_category := 'LAASTX';
6202              l_rulv_rec.std_template_yn           := 'N';
6203              l_rulv_rec.warn_yn                   := 'N';
6204              l_create_rule_group                  := TRUE;
6205 
6206          END IF;
6207 
6208          IF (p_st_purchase_of_lease IS NOT NULL) THEN
6209 
6210              l_rulv_rec.rule_information8         := p_st_purchase_of_lease;
6211              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6212              l_rulv_rec.dnz_chr_id                := p_chr_id;
6213              l_rulv_rec.rule_information_category := 'LAASTX';
6214              l_rulv_rec.std_template_yn           := 'N';
6215              l_rulv_rec.warn_yn                   := 'N';
6216              l_create_rule_group                  := TRUE;
6217 
6218          END IF;
6219 
6220          IF (p_st_equipment_usage IS NOT NULL) THEN
6221 
6222              l_rulv_rec.rule_information9         := p_st_equipment_usage ;
6223              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6224              l_rulv_rec.dnz_chr_id                := p_chr_id;
6225              l_rulv_rec.rule_information_category := 'LAASTX';
6226              l_rulv_rec.std_template_yn           := 'N';
6227              l_rulv_rec.warn_yn                   := 'N';
6228              l_create_rule_group                  := TRUE;
6229 
6230          END IF;
6231 
6232          IF (p_st_equipment_age IS NOT NULL) THEN
6233 
6234              l_rulv_rec.rule_information10        := p_st_equipment_age;
6235              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6236              l_rulv_rec.dnz_chr_id                := p_chr_id;
6237              l_rulv_rec.rule_information_category := 'LAASTX';
6238              l_rulv_rec.std_template_yn           := 'N';
6239              l_rulv_rec.warn_yn                   := 'N';
6240              l_create_rule_group                  := TRUE;
6241 
6242          END IF;
6243 
6244          IF (p_st_asset_upfront_tax IS NOT NULL) THEN
6245 
6246              l_rulv_rec.rule_information11        := p_st_asset_upfront_tax;
6247              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6248              l_rulv_rec.dnz_chr_id                := p_chr_id;
6249              l_rulv_rec.rule_information_category := 'LAASTX';
6250              l_rulv_rec.std_template_yn           := 'N';
6251              l_rulv_rec.warn_yn                   := 'N';
6252              l_create_rule_group                  := TRUE;
6253 
6254          END IF;
6255 
6256          IF (l_create_rule_group) THEN
6257          IF NOT(l_sales_tax_rgp_found) THEN -- 5179119
6258            create_rule_group_and_rule(
6259                                  x_return_status => x_return_status,
6260                                  x_msg_count     => x_msg_count,
6261                                  x_msg_data      => x_msg_data,
6262                                  p_rgp_id        => l_rgp_id,
6263                                  p_rgpv_rec      => l_rgpv_rec,
6264                                  p_rulv_rec      => l_rulv_rec,
6265                                  x_rgpv_rec      => x_rgpv_rec,
6266                                  x_rulv_rec      => x_rulv_rec
6267                                 );
6268          ELSE
6269            l_rgp_id := l_sales_tax_rgp_id;
6270            l_rulv_rec.rgp_id := l_sales_tax_rgp_id;
6271            IF NOT(l_sales_tax_rule_found) THEN
6272              OKL_RULE_PUB.create_rule(
6273                                p_api_version     => 1.0,
6274                                p_init_msg_list   => OKL_API.G_FALSE,
6275                                x_return_status   => x_return_status,
6276                                x_msg_count       => x_msg_count,
6277                                x_msg_data        => x_msg_data,
6278                                p_rulv_rec        => l_rulv_rec,
6279                                x_rulv_rec        => x_rulv_rec
6280                               );
6281            ELSE
6282              l_rulv_rec.id := l_sales_tax_rule_id;
6283              l_rulv_rec.created_by := OKC_API.G_MISS_NUM;
6284              l_rulv_rec.creation_date := OKC_API.G_MISS_DATE;
6285              OKL_RULE_PUB.update_rule(
6286                                p_api_version     => 1.0,
6287                                p_init_msg_list   => OKL_API.G_FALSE,
6288                                x_return_status   => x_return_status,
6289                                x_msg_count       => x_msg_count,
6290                                x_msg_data        => x_msg_data,
6291                                p_rulv_rec        => l_rulv_rec,
6292                                x_rulv_rec        => x_rulv_rec
6293                               );
6294            END IF;
6295          END IF;
6296          END IF;
6297 
6298          l_progress := '1.1';
6299          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
6300              raise line_rule_failed;
6301          END IF;
6302 
6303          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
6304             l_rgp_id := x_rgpv_rec.id;
6305          END IF;
6306 
6307          l_rulv_rec := NULL;
6308          IF (p_vat_tax_exempt IS NOT NULL) THEN
6309 
6310              l_rulv_rec.rule_information1         := p_vat_tax_exempt;
6311              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6312              l_rulv_rec.dnz_chr_id                := p_chr_id;
6313              l_rulv_rec.rule_information_category := 'LAAVTX';
6314              l_rulv_rec.std_template_yn           := 'N';
6315              l_rulv_rec.warn_yn                   := 'N';
6316 
6317          END IF;
6318 
6319          IF (p_vat_tax_exempt_cert_number IS NOT NULL) THEN
6320 
6321              l_rulv_rec.rule_information2         := p_vat_tax_exempt_cert_number;
6322              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6323              l_rulv_rec.dnz_chr_id                := p_chr_id;
6324              l_rulv_rec.rule_information_category := 'LAAVTX';
6325              l_rulv_rec.std_template_yn           := 'N';
6326              l_rulv_rec.warn_yn                   := 'N';
6327 
6328          END IF;
6329 
6330          IF (p_vat_tax_override_flag IS NOT NULL) THEN
6331 
6332              l_rulv_rec.rule_information3         := p_vat_tax_override_flag;
6333              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6334              l_rulv_rec.dnz_chr_id                := p_chr_id;
6335              l_rulv_rec.rule_information_category := 'LAAVTX';
6336              l_rulv_rec.std_template_yn           := 'N';
6337              l_rulv_rec.warn_yn                   := 'N';
6338 
6339          END IF;
6340 
6341          IF (p_vat_tax_override_rate IS NOT NULL) THEN
6342 
6343              l_rulv_rec.rule_information4         := p_vat_tax_override_rate;
6344              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6345              l_rulv_rec.dnz_chr_id                := p_chr_id;
6346              l_rulv_rec.rule_information_category := 'LAAVTX';
6347              l_rulv_rec.std_template_yn           := 'N';
6348              l_rulv_rec.warn_yn                   := 'N';
6349 
6350          END IF;
6351 
6352          create_rule_group_and_rule(
6353                                  x_return_status => x_return_status,
6354                                  x_msg_count     => x_msg_count,
6355                                  x_msg_data      => x_msg_data,
6356                                  p_rgp_id        => l_rgp_id,
6357                                  p_rgpv_rec      => l_rgpv_rec,
6358                                  p_rulv_rec      => l_rulv_rec,
6359                                  x_rgpv_rec      => x_rgpv_rec,
6360                                  x_rulv_rec      => x_rulv_rec
6361                                 );
6362 
6363          l_progress := '1.2';
6364          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
6365              raise line_rule_failed;
6366          END IF;
6367 
6368          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
6369             l_rgp_id := x_rgpv_rec.id;
6370          END IF;
6371 
6372          l_rulv_rec := NULL;
6373 
6374          -- Property Tax
6375          IF (p_prop_tax_applicable IS NOT NULL) THEN
6376             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6377             l_rulv_rec.dnz_chr_id                := p_chr_id;
6378             l_rulv_rec.rule_information1         := p_prop_tax_applicable;
6379             l_rulv_rec.rule_information_category := 'LAPRTX';
6380             l_rulv_rec.std_template_yn           := 'N';
6381             l_rulv_rec.warn_yn                   := 'N';
6382          END IF;
6383 
6384          IF (p_prop_tax_lease_rep IS NOT NULL) THEN
6385             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6386             l_rulv_rec.dnz_chr_id                := p_chr_id;
6387             l_rulv_rec.rule_information2         := p_prop_tax_lease_rep;
6388             l_rulv_rec.rule_information_category := 'LAPRTX';
6389             l_rulv_rec.std_template_yn           := 'N';
6390             l_rulv_rec.warn_yn                   := 'N';
6391          END IF;
6392 
6393 -- Added by rravikir (Fix for Bug 3947959)
6394          IF (p_prop_tax_bill_method IS NOT NULL) THEN
6395             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6396             l_rulv_rec.dnz_chr_id                := p_chr_id;
6397             l_rulv_rec.rule_information3         := p_prop_tax_bill_method;
6398             l_rulv_rec.rule_information_category := 'LAPRTX';
6399             l_rulv_rec.std_template_yn           := 'N';
6400             l_rulv_rec.warn_yn                   := 'N';
6401          END IF;
6402 -- End
6403 
6404          create_rule_group_and_rule(
6405                                  x_return_status => x_return_status,
6406                                  x_msg_count     => x_msg_count,
6407                                  x_msg_data      => x_msg_data,
6408                                  p_rgp_id        => l_rgp_id,
6409                                  p_rgpv_rec      => l_rgpv_rec,
6410                                  p_rulv_rec      => l_rulv_rec,
6411                                  x_rgpv_rec      => x_rgpv_rec,
6412                                  x_rulv_rec      => x_rulv_rec
6413                                 );
6414 
6415          l_progress := '1.2';
6416          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
6417              raise line_rule_failed;
6418          END IF;
6419 
6420          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
6421             l_rgp_id := x_rgpv_rec.id;
6422          END IF;
6423 
6424          l_rulv_rec := NULL;
6425 
6426          -- Added by rravikir (Fix for Bug 3947959) (Creation of 'LAASTK' rule)
6427          IF (p_prop_tax_as_contract_yn IS NOT NULL) THEN
6428             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6429             l_rulv_rec.dnz_chr_id                := p_chr_id;
6430             l_rulv_rec.rule_information1         := p_prop_tax_as_contract_yn;
6431             l_rulv_rec.rule_information_category := 'LAASTK';
6432             l_rulv_rec.std_template_yn           := 'N';
6433             l_rulv_rec.warn_yn                   := 'N';
6434          END IF;
6435 
6436          create_rule_group_and_rule(
6437                                  x_return_status => x_return_status,
6438                                  x_msg_count     => x_msg_count,
6439                                  x_msg_data      => x_msg_data,
6440                                  p_rgp_id        => l_rgp_id,
6441                                  p_rgpv_rec      => l_rgpv_rec,
6442                                  p_rulv_rec      => l_rulv_rec,
6443                                  x_rgpv_rec      => x_rgpv_rec,
6444                                  x_rulv_rec      => x_rulv_rec
6445                                 );
6446 
6447          l_progress := '1.2';
6448          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
6449              raise line_rule_failed;
6450          END IF;
6451 
6452          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
6453             l_rgp_id := x_rgpv_rec.id;
6454          END IF;
6455 
6456          l_rulv_rec := NULL;
6457          -- End
6458 
6459          IF (p_french_tax_code IS NOT NULL
6460              OR
6461              p_french_tax_name IS NOT NULL) THEN
6462 
6463              OPEN french_tax_csr (p_french_tax_code,
6464                                   p_french_tax_name);
6465              FETCH french_tax_csr INTO l_french_tax_code;
6466              IF french_tax_csr%NOTFOUND THEN
6467                okl_api.set_message(
6468                                 G_APP_NAME,
6469                                 G_INVALID_VALUE,
6470                                 'CONTRACT_NUM',
6471                                 p_contract_number||'/'||p_line_number,
6472                                 'COL_NAME',
6473                                 'FRENCH_TAX_CODE, NAME',
6474                                 'COL_VALUE',
6475                                 p_french_tax_code||', '||p_french_tax_name
6476                               );
6477 
6478                 raise line_rule_failed;
6479              END IF;
6480 
6481              CLOSE french_tax_csr;
6482 
6483          END IF;
6484 
6485          IF (l_french_tax_code IS NOT NULL) THEN
6486              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6487              l_rulv_rec.dnz_chr_id                := p_chr_id;
6488              l_rulv_rec.rule_information1         := l_french_tax_code;
6489              l_rulv_rec.rule_information_category := 'LATAXP';
6490              l_rulv_rec.std_template_yn           := 'N';
6491              l_rulv_rec.warn_yn                   := 'N';
6492          END IF;
6493 
6494          create_rule_group_and_rule(
6495                                  x_return_status => x_return_status,
6496                                  x_msg_count     => x_msg_count,
6497                                  x_msg_data      => x_msg_data,
6498                                  p_rgp_id        => l_rgp_id,
6499                                  p_rgpv_rec      => l_rgpv_rec,
6500                                  p_rulv_rec      => l_rulv_rec,
6501                                  x_rgpv_rec      => x_rgpv_rec,
6502                                  x_rulv_rec      => x_rulv_rec
6503                                 );
6504 
6505          l_progress := '1.2';
6506          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
6507              raise line_rule_failed;
6508          END IF;
6509 
6510          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
6511             l_rgp_id := x_rgpv_rec.id;
6512          END IF;
6513         -- Added by rravikir (Fix for Bug 3947959)
6514         END IF;
6515         -- End
6516 
6517          debug_message('***** > After estimated prop tax');
6518 
6519          -- Rule Group LAAFLG
6520          l_rgpv_rec            := NULL;
6521          l_rgp_id              := NULL;
6522          l_rgpv_rec.rgd_code   := 'LAAFLG';
6523          l_rgpv_rec.chr_id     := NULL;
6524          l_rgpv_rec.dnz_chr_id := p_chr_id;
6525          l_rgpv_rec.cle_id     := p_cle_id;
6526          l_rgpv_rec.rgp_type   := 'KRG';
6527 
6528          l_rulv_rec            := NULL;
6529          IF (p_lien_type IS NOT NULL) THEN
6530             l_rulv_rec.rule_information1         := p_lien_type;
6531             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6532             l_rulv_rec.dnz_chr_id                := p_chr_id;
6533             l_rulv_rec.rule_information_category := 'LAFLLN';
6534             l_rulv_rec.std_template_yn           := 'N';
6535             l_rulv_rec.warn_yn                   := 'N';
6536          END IF;
6537 
6538          IF (p_lien_filing_number IS NOT NULL) THEN
6539             l_rulv_rec.rule_information2         := p_lien_filing_number;
6540             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6541             l_rulv_rec.dnz_chr_id                := p_chr_id;
6542             l_rulv_rec.rule_information_category := 'LAFLLN';
6543             l_rulv_rec.std_template_yn           := 'N';
6544             l_rulv_rec.warn_yn                   := 'N';
6545          END IF;
6546 
6547          IF (p_lien_filing_date IS NOT NULL) THEN
6548             l_rulv_rec.rule_information3         := TO_CHAR(p_lien_filing_date);
6549             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6550             l_rulv_rec.dnz_chr_id                := p_chr_id;
6551             l_rulv_rec.rule_information_category := 'LAFLLN';
6552             l_rulv_rec.std_template_yn           := 'N';
6553             l_rulv_rec.warn_yn                   := 'N';
6554          END IF;
6555 
6556          IF (p_lien_filing_status IS NOT NULL) THEN
6557             l_rulv_rec.rule_information4         := p_lien_filing_status;
6558             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6559             l_rulv_rec.dnz_chr_id                := p_chr_id;
6560             l_rulv_rec.rule_information_category := 'LAFLLN';
6561             l_rulv_rec.std_template_yn           := 'N';
6562             l_rulv_rec.warn_yn                   := 'N';
6563          END IF;
6564 
6565          x_lienholder_id := NULL;
6566          IF (p_lienholder_id IS NOT NULL
6567              OR
6568              p_lienholder_number IS NOT NULL) THEN
6569 
6570              get_party_id(
6571                           x_return_status     => x_return_status,
6572                           x_msg_count         => x_msg_count,
6573                           x_msg_data          => x_msg_data,
6574                           p_contract_number   => p_contract_number,
6575                           p_line_number       => p_line_number,
6576                           p_party_id          => p_lienholder_id,
6577                           p_party_number      => p_lienholder_number,
6578                           x_party_id          => x_lienholder_id
6579                          );
6580              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
6581                 raise line_rule_failed;
6582              END IF;
6583          END IF;
6584 
6585          IF (x_lienholder_id IS NOT NULL) THEN
6586             l_rulv_rec.jtot_object1_code         := 'OKX_PARTY';
6587             l_rulv_rec.object1_id1               := TO_CHAR(x_lienholder_id);
6588             l_rulv_rec.object1_id2               := '#';
6589             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6590             l_rulv_rec.dnz_chr_id                := p_chr_id;
6591             l_rulv_rec.rule_information_category := 'LAFLLN';
6592             l_rulv_rec.std_template_yn           := 'N';
6593             l_rulv_rec.warn_yn                   := 'N';
6594          END IF;
6595 
6596          IF (p_filing_jurisdiction IS NOT NULL) THEN
6597             l_rulv_rec.rule_information5         := p_filing_jurisdiction;
6598             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6599             l_rulv_rec.dnz_chr_id                := p_chr_id;
6600             l_rulv_rec.rule_information_category := 'LAFLLN';
6601             l_rulv_rec.std_template_yn           := 'N';
6602             l_rulv_rec.warn_yn                   := 'N';
6603          END IF;
6604 
6605          IF (p_filing_sub_jurisdiction IS NOT NULL) THEN
6606             l_rulv_rec.rule_information6         := p_filing_sub_jurisdiction;
6607             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6608             l_rulv_rec.dnz_chr_id                := p_chr_id;
6609             l_rulv_rec.rule_information_category := 'LAFLLN';
6610             l_rulv_rec.std_template_yn           := 'N';
6611             l_rulv_rec.warn_yn                   := 'N';
6612          END IF;
6613 
6614          IF (p_lien_expiration_date IS NOT NULL) THEN
6615             l_rulv_rec.rule_information7         := TO_CHAR(p_lien_expiration_date);
6616             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6617             l_rulv_rec.dnz_chr_id                := p_chr_id;
6618             l_rulv_rec.rule_information_category := 'LAFLLN';
6619             l_rulv_rec.std_template_yn           := 'N';
6620             l_rulv_rec.warn_yn                   := 'N';
6621 
6622          END IF;
6623 
6624          IF (p_lien_continuation_number IS NOT NULL) THEN
6625             l_rulv_rec.rule_information8         := p_lien_continuation_number;
6626             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6627             l_rulv_rec.dnz_chr_id                := p_chr_id;
6628             l_rulv_rec.rule_information_category := 'LAFLLN';
6629             l_rulv_rec.std_template_yn           := 'N';
6630             l_rulv_rec.warn_yn                   := 'N';
6631          END IF;
6632 
6633          IF (p_lien_continuation_date IS NOT NULL) THEN
6634             l_rulv_rec.rule_information9         := TO_CHAR(p_lien_continuation_date);
6635             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6636             l_rulv_rec.dnz_chr_id                := p_chr_id;
6637             l_rulv_rec.rule_information_category := 'LAFLLN';
6638             l_rulv_rec.std_template_yn           := 'N';
6639             l_rulv_rec.warn_yn                   := 'N';
6640          END IF;
6641 
6642          create_rule_group_and_rule(
6643                                  x_return_status => x_return_status,
6644                                  x_msg_count     => x_msg_count,
6645                                  x_msg_data      => x_msg_data,
6646                                  p_rgp_id        => l_rgp_id,
6647                                  p_rgpv_rec      => l_rgpv_rec,
6648                                  p_rulv_rec      => l_rulv_rec,
6649                                  x_rgpv_rec      => x_rgpv_rec,
6650                                  x_rulv_rec      => x_rulv_rec
6651                                 );
6652 
6653          l_progress := '1.3';
6654          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
6655              raise line_rule_failed;
6656          END IF;
6657 
6658          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
6659             l_rgp_id := x_rgpv_rec.id;
6660          END IF;
6661 
6662          l_rulv_rec := NULL;
6663          IF (p_title_type IS NOT NULL) THEN
6664 
6665             l_rulv_rec.rule_information1         := p_title_type;
6666             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6667             l_rulv_rec.dnz_chr_id                := p_chr_id;
6668             l_rulv_rec.rule_information_category := 'LAFLTL';
6669             l_rulv_rec.std_template_yn           := 'N';
6670             l_rulv_rec.warn_yn                   := 'N';
6671          END IF;
6672 
6673          IF (p_title_issuer_id IS NOT NULL
6674              OR
6675              p_title_issuer_number IS NOT NULL) THEN
6676             get_party_id(
6677                          x_return_status     => x_return_status,
6678                          x_msg_count         => x_msg_count,
6679                          x_msg_data          => x_msg_data,
6680                          p_contract_number   => p_contract_number,
6681                          p_line_number       => p_line_number,
6682                          p_party_id          => p_title_issuer_id,
6683                          p_party_number      => p_title_issuer_number,
6684                          x_party_id          => x_title_issuer_id
6685                         );
6686             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
6687                RAISE line_rule_failed;
6688             END IF;
6689          END IF;
6690 
6691          IF (x_title_issuer_id IS NOT NULL) THEN
6692             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6693             l_rulv_rec.dnz_chr_id                := p_chr_id;
6694             l_rulv_rec.jtot_object1_code         := 'OKX_PARTY';
6695             l_rulv_rec.object1_id1               := TO_CHAR(x_title_issuer_id);
6696             l_rulv_rec.object1_id2               := '#';
6697             l_rulv_rec.rule_information_category := 'LAFLTL';
6698             l_rulv_rec.std_template_yn           := 'N';
6699             l_rulv_rec.warn_yn                   := 'N';
6700          END IF;
6701 
6702          IF (p_title_date IS NOT NULL) THEN
6703             l_rulv_rec.rule_information2         := TO_CHAR(p_title_date);
6704             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6705             l_rulv_rec.dnz_chr_id                := p_chr_id;
6706             l_rulv_rec.rule_information_category := 'LAFLTL';
6707             l_rulv_rec.std_template_yn           := 'N';
6708             l_rulv_rec.warn_yn                   := 'N';
6709          END IF;
6710 
6711          IF (p_title_number IS NOT NULL) THEN
6712             l_rulv_rec.rule_information3         := p_title_number;
6713             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6714             l_rulv_rec.dnz_chr_id                := p_chr_id;
6715             l_rulv_rec.rule_information_category := 'LAFLTL';
6716             l_rulv_rec.std_template_yn           := 'N';
6717             l_rulv_rec.warn_yn                   := 'N';
6718          END IF;
6719 
6720          IF (p_registration_number IS NOT NULL) THEN
6721             l_rulv_rec.rule_information4         := p_registration_number;
6722             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6723             l_rulv_rec.dnz_chr_id                := p_chr_id;
6724             l_rulv_rec.rule_information_category := 'LAFLTL';
6725             l_rulv_rec.std_template_yn           := 'N';
6726             l_rulv_rec.warn_yn                   := 'N';
6727          END IF;
6728 
6729          IF (p_asset_registration_loc_name IS NOT NULL) THEN
6730             l_rulv_rec.rule_information5         := p_asset_registration_loc_name;
6731             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6732             l_rulv_rec.dnz_chr_id                := p_chr_id;
6733             l_rulv_rec.rule_information_category := 'LAFLTL';
6734             l_rulv_rec.std_template_yn           := 'N';
6735             l_rulv_rec.warn_yn                   := 'N';
6736          END IF;
6737 
6738          -- Title_Custodian ???
6739 
6740          IF (p_payee_site_name IS NOT NULL) THEN
6741             l_rulv_rec.rule_information6         := p_payee_site_name;
6742             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6743             l_rulv_rec.dnz_chr_id                := p_chr_id;
6744             l_rulv_rec.rule_information_category := 'LAFLTL';
6745             l_rulv_rec.std_template_yn           := 'N';
6746             l_rulv_rec.warn_yn                   := 'N';
6747          END IF;
6748 
6749          create_rule_group_and_rule(
6750                                  x_return_status => x_return_status,
6751                                  x_msg_count     => x_msg_count,
6752                                  x_msg_data      => x_msg_data,
6753                                  p_rgp_id        => l_rgp_id,
6754                                  p_rgpv_rec      => l_rgpv_rec,
6755                                  p_rulv_rec      => l_rulv_rec,
6756                                  x_rgpv_rec      => x_rgpv_rec,
6757                                  x_rulv_rec      => x_rulv_rec
6758                                 );
6759 
6760          l_progress := '1.4';
6761          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
6762              raise line_rule_failed;
6763          END IF;
6764 
6765          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
6766             l_rgp_id := x_rgpv_rec.id;
6767          END IF;
6768 
6769       END IF; -- line type
6770 
6771 /* taken care in process_party_role, 07/15/2002
6772       IF (p_line_type = 'SERVICE'
6773           OR
6774           p_line_type = 'FEE') THEN
6775 
6776          l_rgpv_rec            := NULL;
6777          l_rgp_id              := NULL;
6778          l_rgpv_rec.rgd_code   := 'LAPSTH';
6779          l_rgpv_rec.chr_id     := NULL;
6780          l_rgpv_rec.dnz_chr_id := p_chr_id;
6781          l_rgpv_rec.cle_id     := p_cle_id;
6782          l_rgpv_rec.rgp_type   := 'KRG';
6783 
6784          l_rulv_rec            := NULL;
6785 
6786          IF (p_passthrough_percent IS NOT NULL) THEN
6787             l_rulv_rec.rule_information1         := p_passthrough_percent;
6788             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6789             l_rulv_rec.dnz_chr_id                := p_chr_id;
6790             l_rulv_rec.rule_information_category := 'LAPTPR';
6791             l_rulv_rec.std_template_yn           := 'N';
6792             l_rulv_rec.warn_yn                   := 'N';
6793          END IF;
6794 
6795          create_rule_group_and_rule(
6796                                  x_return_status => x_return_status,
6797                                  x_msg_count     => x_msg_count,
6798                                  x_msg_data      => x_msg_data,
6799                                  p_rgp_id        => l_rgp_id,
6800                                  p_rgpv_rec      => l_rgpv_rec,
6801                                  p_rulv_rec      => l_rulv_rec,
6802                                  x_rgpv_rec      => x_rgpv_rec,
6803                                  x_rulv_rec      => x_rulv_rec
6804                                 );
6805 
6806          l_progress := '1.5';
6807          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
6808              raise line_rule_failed;
6809          END IF;
6810 
6811          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
6812             l_rgp_id := x_rgpv_rec.id;
6813          END IF;
6814 
6815          l_rulv_rec            := NULL;
6816          IF (p_passthrough_basis_code IS NOT NULL) THEN
6817             l_rulv_rec.rule_information1         := p_passthrough_basis_code;
6818             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6819             l_rulv_rec.dnz_chr_id                := p_chr_id;
6820             l_rulv_rec.rule_information_category := 'LAPTBC';
6821             l_rulv_rec.std_template_yn           := 'N';
6822             l_rulv_rec.warn_yn                   := 'N';
6823          END IF;
6824 
6825          create_rule_group_and_rule(
6826                                  x_return_status => x_return_status,
6827                                  x_msg_count     => x_msg_count,
6828                                  x_msg_data      => x_msg_data,
6829                                  p_rgp_id        => l_rgp_id,
6830                                  p_rgpv_rec      => l_rgpv_rec,
6831                                  p_rulv_rec      => l_rulv_rec,
6832                                  x_rgpv_rec      => x_rgpv_rec,
6833                                  x_rulv_rec      => x_rulv_rec
6834                                 );
6835 
6836          l_progress := '1.6';
6837          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
6838              raise line_rule_failed;
6839          END IF;
6840 
6841          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
6842             l_rgp_id := x_rgpv_rec.id;
6843          END IF;
6844 
6845 */
6846 
6847 /* Do not use it
6848          IF (p_payment_term IS NOT NULL
6849              OR
6850              p_payment_term_id IS NOT NULL) THEN
6851 
6852              l_payment_term_id := get_payment_term(
6853                                                    x_return_status   => x_return_status,
6854                                                    p_contract_number => p_contract_number,
6855                                                    p_line_number     => p_line_number,
6856                                                    p_payment_term    => p_payment_term,
6857                                                    p_payment_term_id => p_payment_term_id
6858                                                   );
6859 
6860              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
6861                 raise line_rule_failed;
6862              END IF;
6863 
6864              l_rulv_rec                           := NULL;
6865              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6866              l_rulv_rec.dnz_chr_id                := p_chr_id;
6867              l_rulv_rec.jtot_object1_code         := 'OKX_PPAYTERM';
6868              l_rulv_rec.object1_id1               := TO_CHAR(l_payment_term_id);
6869              l_rulv_rec.object1_id2               := '#';
6870              l_rulv_rec.rule_information_category := 'PTR';
6871              l_rulv_rec.std_template_yn           := 'N';
6872              l_rulv_rec.warn_yn                   := 'N';
6873 
6874              create_rule_group_and_rule(
6875                                          x_return_status => x_return_status,
6876                                          x_msg_count     => x_msg_count,
6877                                          x_msg_data      => x_msg_data,
6878                                          p_rgp_id        => l_rgp_id,
6879                                          p_rgpv_rec      => l_rgpv_rec,
6880                                          p_rulv_rec      => l_rulv_rec,
6881                                          x_rgpv_rec      => x_rgpv_rec,
6882                                          x_rulv_rec      => x_rulv_rec
6883                                         );
6884 
6885              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
6886                  raise line_rule_failed;
6887              END IF;
6888 
6889              IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
6890                 l_rgp_id := x_rgpv_rec.id;
6891              END IF;
6892          END IF;
6893 
6894          IF (p_vendor_paysite_id IS NOT NULL
6895              OR
6896              p_vendor_paysite_name IS NOT NULL) THEN
6897 
6898              l_vendor_paysite_id := get_vendor_paysite(
6899                                                    x_return_status       => x_return_status,
6900                                                    p_contract_number     => p_contract_number,
6901                                                    p_line_number         => p_line_number,
6902                                                    p_vendor_paysite_name => p_vendor_paysite_name,
6903                                                    p_vendor_paysite_id   => p_vendor_paysite_id
6904                                                   );
6905 
6906              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
6907                 raise line_rule_failed;
6908              END IF;
6909 
6910              l_rulv_rec                           := NULL;
6911              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6912              l_rulv_rec.dnz_chr_id                := p_chr_id;
6913              l_rulv_rec.jtot_object1_code         := 'OKX_PAYTO';
6914              l_rulv_rec.object1_id1               := TO_CHAR(l_vendor_paysite_id);
6915              l_rulv_rec.object1_id2               := '#';
6916              l_rulv_rec.rule_information_category := 'PTO';
6917              l_rulv_rec.std_template_yn           := 'N';
6918              l_rulv_rec.warn_yn                   := 'N';
6919 
6920              create_rule_group_and_rule(
6921                                          x_return_status => x_return_status,
6922                                          x_msg_count     => x_msg_count,
6923                                          x_msg_data      => x_msg_data,
6924                                          p_rgp_id        => l_rgp_id,
6925                                          p_rgpv_rec      => l_rgpv_rec,
6926                                          p_rulv_rec      => l_rulv_rec,
6927                                          x_rgpv_rec      => x_rgpv_rec,
6928                                          x_rulv_rec      => x_rulv_rec
6929                                         );
6930 
6931              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
6932                  raise line_rule_failed;
6933              END IF;
6934 
6935              IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
6936                 l_rgp_id := x_rgpv_rec.id;
6937              END IF;
6938          END IF;
6939      END IF; -- line type
6940 */
6941 
6942      IF (p_line_type = 'SERVICE'
6943          AND
6944          p_fee_code IS NOT NULL) THEN
6945 
6946          check_stream_type_code(
6947 	                        x_return_status    => x_return_status,
6948 	                        x_msg_count        => x_msg_count,
6949 	                        x_msg_data         => x_msg_data,
6950 	                        p_stream_type_code => p_fee_code,
6951                                 p_stream_purpose   => p_stream_purpose,
6952 	                        x_id1              => x_stream_id,
6953                                 x_name             => l_service_name
6954 	                       );
6955          l_progress := '1.61';
6956          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
6957             okl_api.set_message(
6958                                 G_APP_NAME,
6959                                 G_INVALID_VALUE,
6960                                 'CONTRACT_NUM',
6961                                 p_contract_number||'/'||p_line_number,
6962                                 'COL_NAME',
6963                                 'FEE_CODE, STREAM_PURPOSE_CODE',
6964                                 'COL_VALUE',
6965                                 p_fee_code||', '||p_stream_purpose
6966                               );
6967 
6968              raise line_rule_failed;
6969          END IF;
6970 
6971          --
6972          -- UDS 10/27
6973          -- Check whether the stream is present in template for this contract
6974          --
6975          l_present_yn := '?';
6976          l_present_yn := OKL_STREAMS_UTIL.strm_tmpt_contains_strm_type
6977                                    (p_khr_id  => p_chr_id,
6978                                     p_sty_id  => x_stream_id
6979                                    );
6980 
6981          IF (l_present_yn <> 'Y') THEN
6982             okl_api.set_message(
6983                                 G_APP_NAME,
6984                                 G_NO_STRM_TMPL,
6985                                 'CONTRACT_NUM',
6986                                 p_contract_number||'/'||p_line_number,
6987                                 'COL_NAME',
6988                                 'FEE_CODE, STREAM_PURPOSE_CODE',
6989                                 'COL_VALUE',
6990                                 p_fee_code||', '||p_stream_purpose
6991                               );
6992 
6993              raise line_rule_failed;
6994 
6995          END IF;
6996 
6997          l_rulv_rec                           := NULL;
6998          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
6999          l_rulv_rec.dnz_chr_id                := p_chr_id;
7000          l_rulv_rec.jtot_object1_code         := 'OKL_STRMTYP';
7001          l_rulv_rec.object1_id1               := TO_CHAR(x_stream_id);
7002          l_rulv_rec.object1_id2               := '#';
7003          l_rulv_rec.rule_information_category := 'LASTRM';
7004          l_rulv_rec.std_template_yn           := 'N';
7005          l_rulv_rec.warn_yn                   := 'N';
7006 
7007          create_rule_group_and_rule(
7008                                  x_return_status => x_return_status,
7009                                  x_msg_count     => x_msg_count,
7010                                  x_msg_data      => x_msg_data,
7011                                  p_rgp_id        => l_rgp_id,
7012                                  p_rgpv_rec      => l_rgpv_rec,
7013                                  p_rulv_rec      => l_rulv_rec,
7014                                  x_rgpv_rec      => x_rgpv_rec,
7015                                  x_rulv_rec      => x_rulv_rec
7016                                 );
7017 
7018          l_progress := '1.7';
7019          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
7020              raise line_rule_failed;
7021          END IF;
7022 
7023          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
7024             l_rgp_id := x_rgpv_rec.id;
7025          END IF;
7026 
7027      END IF;
7028 
7029      IF (p_line_type = 'USAGE') THEN
7030 
7031          -- NPR is not supported on 11.5.9
7032          IF (p_usage_type_code = 'NPR') THEN
7033             okl_api.set_message(
7034                                 G_APP_NAME,
7035                                 G_UNSUPPORTED_VALUE,
7036                                 'CONTRACT_NUM',
7037                                 p_contract_number||'/'||p_line_number,
7038                                 'USAGE_TYPE',
7039                                 p_usage_type_code
7040                                );
7041             RAISE line_rule_failed;
7042          END IF;
7043 
7044          l_ok := '?';
7045          OPEN usage_type_csr (p_usage_type_code);
7046          FETCH usage_type_csr INTO l_ok;
7047          CLOSE usage_type_csr;
7048 
7049          IF (l_ok <> 'Y') THEN
7050             okl_api.set_message(
7051                                 G_APP_NAME,
7052                                 G_INVALID_VALUE,
7053                                 'CONTRACT_NUM',
7054                                 p_contract_number,
7055                                 'COL_NAME',
7056                                 'USAGE_TYPE',
7057                                 'COL_VALUE',
7058                                 p_usage_type_code
7059                                );
7060             RAISE line_rule_failed;
7061          END IF;
7062 
7063          IF (p_usage_type_code IN ('VRT', 'QTY')
7064              AND
7065              (p_default_qty_usage IS NULL
7066               OR
7067               p_base_reading IS NULL)) THEN
7068             okl_api.set_message(
7069                                 G_APP_NAME,
7070                                 G_QA_USAGE_CHECK,
7071                                 'LINE_NUM',
7072                                 p_line_number,
7073                                 'USAGE_TYPE',
7074                                 p_usage_type_code
7075                                );
7076             RAISE line_rule_failed;
7077          END IF;
7078 
7079          IF (p_usage_type_code = 'FRT'
7080              AND
7081              p_fixed_usage_quantity IS NULL) THEN
7082             okl_api.set_message(
7083                                 G_APP_NAME,
7084                                 G_QA_FIXED_USAGE,
7085                                 'LINE_NUM',
7086                                 p_line_number,
7087                                 'USAGE_TYPE',
7088                                 p_usage_type_code
7089                                );
7090             RAISE line_rule_failed;
7091          END IF;
7092 
7093          l_rgpv_rec            := NULL;
7094          l_rgp_id              := NULL;
7095          l_rgpv_rec.rgd_code   := 'LAUSBB';
7096          l_rgpv_rec.chr_id     := NULL;
7097          l_rgpv_rec.dnz_chr_id := p_chr_id;
7098          l_rgpv_rec.cle_id     := p_cle_id;
7099          l_rgpv_rec.rgp_type   := 'KRG';
7100 
7101          l_rulv_rec            := NULL;
7102 
7103          IF (p_usage_item_name IS NOT NULL
7104              OR
7105              p_usage_item_id IS NOT NULL) THEN
7106 
7107             get_usage_item_id(
7108                               x_return_status   => x_return_status,
7109                               p_usage_item_name => p_usage_item_name,
7110                               p_usage_item_id   => p_usage_item_id,
7111                               p_org_id          => p_inv_org_id,
7112                               x_usage_item_id   => x_usage_item_id,
7113                               x_usage_id2       => x_usage_id2
7114                              );
7115             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
7116                okl_api.set_message(
7117                                    G_APP_NAME,
7118                                    G_INVALID_VALUE,
7119                                    'CONTRACT_NUM',
7120                                    p_contract_number,
7121                                    'COL_NAME',
7122                                    'USAGE_ITEM_NAME, ID',
7123                                    'COL_VALUE',
7124                                    p_usage_item_name||', '||p_usage_item_id
7125                                   );
7126                RAISE line_rule_failed;
7127             END IF;
7128 
7129             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7130             l_rulv_rec.dnz_chr_id                := p_chr_id;
7131             l_rulv_rec.jtot_object1_code         := 'OKX_USAGE';
7132             l_rulv_rec.object1_id1               := TO_CHAR(x_usage_item_id);
7133             l_rulv_rec.object1_id2               := TO_CHAR(x_usage_id2);
7134             l_rulv_rec.rule_information_category := 'LAUSBB';
7135             l_rulv_rec.std_template_yn           := 'N';
7136             l_rulv_rec.warn_yn                   := 'N';
7137          END IF; -- usage_item
7138 
7139          IF (p_price_list_name IS NOT NULL
7140              OR
7141              p_price_list_id IS NOT NULL) THEN
7142 
7143             get_price_list_id(
7144                               x_return_status   => x_return_status,
7145                               p_price_list_name => p_price_list_name,
7146                               p_price_list_id   => p_price_list_id,
7147                               x_price_list_id   => x_price_list_id
7148                              );
7149 
7150             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
7151                okl_api.set_message(
7152                                    G_APP_NAME,
7153                                    G_INVALID_VALUE,
7154                                    'CONTRACT_NUM',
7155                                    p_contract_number,
7156                                    'COL_NAME',
7157                                    'PRICE_LIST_NAME, ID',
7158                                    'COL_VALUE',
7159                                    p_price_list_name||', '||p_price_list_id
7160                                   );
7161                RAISE line_rule_failed;
7162             END IF;
7163             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7164             l_rulv_rec.dnz_chr_id                := p_chr_id;
7165             l_rulv_rec.jtot_object2_code         := 'OKX_PRICE';
7166             l_rulv_rec.object2_id1               := TO_CHAR(x_price_list_id);
7167             l_rulv_rec.object2_id2               := '#';
7168             l_rulv_rec.rule_information_category := 'LAUSBB';
7169             l_rulv_rec.std_template_yn           := 'N';
7170             l_rulv_rec.warn_yn                   := 'N';
7171          END IF;
7172 
7173          IF (p_minimum_qty_usage IS NOT NULL) THEN
7174 
7175             l_rulv_rec.rule_information1         := TO_CHAR(p_minimum_qty_usage);
7176             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7177             l_rulv_rec.dnz_chr_id                := p_chr_id;
7178             l_rulv_rec.rule_information_category := 'LAUSBB';
7179             l_rulv_rec.std_template_yn           := 'N';
7180             l_rulv_rec.warn_yn                   := 'N';
7181          END IF;
7182 
7183          IF (p_default_qty_usage IS NOT NULL) THEN
7184 
7185             l_rulv_rec.rule_information2         := TO_CHAR(p_default_qty_usage);
7186             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7187             l_rulv_rec.dnz_chr_id                := p_chr_id;
7188             l_rulv_rec.rule_information_category := 'LAUSBB';
7189             l_rulv_rec.std_template_yn           := 'N';
7190             l_rulv_rec.warn_yn                   := 'N';
7191          END IF;
7192 
7193          IF (p_amcv_flag IS NOT NULL) THEN
7194 
7195             l_rulv_rec.rule_information3         := p_amcv_flag;
7196             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7197             l_rulv_rec.dnz_chr_id                := p_chr_id;
7198             l_rulv_rec.rule_information_category := 'LAUSBB';
7199             l_rulv_rec.std_template_yn           := 'N';
7200             l_rulv_rec.warn_yn                   := 'N';
7201          END IF;
7202 
7203          IF (p_level_flag IS NOT NULL) THEN
7204 
7205             l_rulv_rec.rule_information4         := p_level_flag;
7206             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7207             l_rulv_rec.dnz_chr_id                := p_chr_id;
7208             l_rulv_rec.rule_information_category := 'LAUSBB';
7209             l_rulv_rec.std_template_yn           := 'N';
7210             l_rulv_rec.warn_yn                   := 'N';
7211          END IF;
7212 
7213          IF (p_base_reading IS NOT NULL) THEN
7214 
7215             l_rulv_rec.rule_information5         := TO_CHAR(p_base_reading);
7216             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7217             l_rulv_rec.dnz_chr_id                := p_chr_id;
7218             l_rulv_rec.rule_information_category := 'LAUSBB';
7219             l_rulv_rec.std_template_yn           := 'N';
7220             l_rulv_rec.warn_yn                   := 'N';
7221          END IF;
7222 
7223          IF (p_base_reading_uom_code IS NOT NULL) THEN
7224 
7225             get_base_uom_id(
7226                             x_return_status => x_return_status,
7227                             p_base_uom_code => p_base_reading_uom_code,
7228                             x_base_uom_id   => x_base_uom_id
7229                            );
7230 
7231             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
7232                okl_api.set_message(
7233                                    G_APP_NAME,
7234                                    G_INVALID_VALUE,
7235                                    'CONTRACT_NUM',
7236                                    p_contract_number,
7237                                    'COL_NAME',
7238                                    'BASE_READING_UOM_CODE',
7239                                    'COL_VALUE',
7240                                    p_base_reading_uom_code
7241                                   );
7242                RAISE line_rule_failed;
7243             END IF;
7244 
7245             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7246             l_rulv_rec.dnz_chr_id                := p_chr_id;
7247             l_rulv_rec.jtot_object3_code         := 'OKX_TUOM';
7248             l_rulv_rec.object3_id1               := x_base_uom_id;
7249             l_rulv_rec.object3_id2               := '#';
7250             l_rulv_rec.rule_information_category := 'LAUSBB';
7251             l_rulv_rec.std_template_yn           := 'N';
7252             l_rulv_rec.warn_yn                   := 'N';
7253          END IF;
7254 
7255          IF (p_usage_type_code IS NOT NULL) THEN
7256 
7257             l_rulv_rec.rule_information6         := p_usage_type_code;
7258             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7259             l_rulv_rec.dnz_chr_id                := p_chr_id;
7260             l_rulv_rec.rule_information_category := 'LAUSBB';
7261             l_rulv_rec.std_template_yn           := 'N';
7262             l_rulv_rec.warn_yn                   := 'N';
7263          END IF;
7264 
7265          IF (p_fixed_usage_quantity IS NOT NULL) THEN
7266 
7267             l_rulv_rec.rule_information7         := p_fixed_usage_quantity;
7268             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7269             l_rulv_rec.dnz_chr_id                := p_chr_id;
7270             l_rulv_rec.rule_information_category := 'LAUSBB';
7271             l_rulv_rec.std_template_yn           := 'N';
7272             l_rulv_rec.warn_yn                   := 'N';
7273          END IF;
7274 
7275          IF (p_usage_period IS NOT NULL) THEN
7276 
7277             validate_usage_freq(
7278                                 x_return_status   => x_return_status,
7279                                 x_msg_count       => x_msg_count,
7280                                 x_msg_data        => x_msg_data,
7281                                 p_freq            => p_usage_period,
7282                                 p_contract_number => p_contract_number,
7283                                 p_line_number     => p_line_number
7284                                );
7285 
7286             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
7287                 raise line_rule_failed;
7288             END IF;
7289 
7290             l_rulv_rec.rule_information8         := p_usage_period;
7291             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7292             l_rulv_rec.dnz_chr_id                := p_chr_id;
7293             l_rulv_rec.rule_information_category := 'LAUSBB';
7294             l_rulv_rec.std_template_yn           := 'N';
7295             l_rulv_rec.warn_yn                   := 'N';
7296          END IF;
7297 
7298          IF (p_usage_no_of_period IS NOT NULL) THEN
7299 
7300             l_rulv_rec.rule_information9         := p_usage_no_of_period;
7301             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7302             l_rulv_rec.dnz_chr_id                := p_chr_id;
7303             l_rulv_rec.rule_information_category := 'LAUSBB';
7304             l_rulv_rec.std_template_yn           := 'N';
7305             l_rulv_rec.warn_yn                   := 'N';
7306          END IF;
7307 
7308          create_rule_group_and_rule(
7309                                  x_return_status => x_return_status,
7310                                  x_msg_count     => x_msg_count,
7311                                  x_msg_data      => x_msg_data,
7312                                  p_rgp_id        => l_rgp_id,
7313                                  p_rgpv_rec      => l_rgpv_rec,
7314                                  p_rulv_rec      => l_rulv_rec,
7315                                  x_rgpv_rec      => x_rgpv_rec,
7316                                  x_rulv_rec      => x_rulv_rec
7317                                 );
7318 
7319          l_progress := '1.8';
7320          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
7321              raise line_rule_failed;
7322          END IF;
7323 
7324          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
7325             l_rgp_id := x_rgpv_rec.id;
7326          END IF;
7327 
7328      END IF; -- line type USAGE
7329 
7330      IF (p_line_type IN ('SERVICE', 'FEE')) THEN
7331         -- Add new rules, RECURRING EXP
7332 
7333         IF (p_fee_no_of_period IS NOT NULL
7334             AND
7335             p_fee_frequency IS NOT NULL
7336             AND
7337             p_fee_amount_per_period IS NOT NULL) THEN
7338 
7339            okl_contract_top_line_pub.validate_fee_expense_rule(
7340                                                             p_api_version         => 1.0,
7341                                                             p_init_msg_list       => OKL_API.G_FALSE,
7342                                                             x_return_status       => x_return_status,
7343                                                             x_msg_count           => x_msg_count,
7344                                                             x_msg_data            => x_msg_data,
7345                                                             p_chr_id              => p_chr_id,
7346                                                             p_line_id             => p_cle_id,
7347                                                             p_no_of_period        => p_fee_no_of_period,
7348                                                             p_frequency           => p_fee_frequency,
7349                                                             p_amount_per_period   => p_fee_amount_per_period
7350                                                            );
7351 
7352             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
7353                RAISE line_rule_failed;
7354             END IF;
7355 
7356          END IF;
7357 
7358          l_rulv_rec := NULL;
7359 
7360          -- Rule Group LAFEXP
7361          l_rgpv_rec            := NULL;
7362          l_rgp_id              := NULL;
7363          l_rgpv_rec.rgd_code   := 'LAFEXP';
7364          l_rgpv_rec.chr_id     := NULL;
7365          l_rgpv_rec.dnz_chr_id := p_chr_id;
7366          l_rgpv_rec.cle_id     := p_cle_id;
7367          l_rgpv_rec.rgp_type   := 'KRG';
7368 
7369          IF (p_fee_no_of_period IS NOT NULL) THEN
7370 
7371             l_rulv_rec.rule_information1         := p_fee_no_of_period;
7372             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7373             l_rulv_rec.dnz_chr_id                := p_chr_id;
7374             l_rulv_rec.rule_information_category := 'LAFEXP';
7375             l_rulv_rec.std_template_yn           := 'N';
7376             l_rulv_rec.warn_yn                   := 'N';
7377          END IF;
7378 /*
7379          IF (p_fee_frequency IS NOT NULL) THEN
7380 
7381             OPEN freq_csr (p_fee_frequency);
7382             FETCH freq_csr INTO l_freq_id;
7383             CLOSE freq_csr;
7384 
7385             l_rulv_rec.jtot_object1_code         := 'OKL_TUOM';
7386             l_rulv_rec.object1_id1               := l_freq_id;
7387             l_rulv_rec.object1_id2               := '#';
7388             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7389             l_rulv_rec.dnz_chr_id                := p_chr_id;
7390             l_rulv_rec.rule_information_category := 'LAFEXP';
7391             l_rulv_rec.std_template_yn           := 'N';
7392             l_rulv_rec.warn_yn                   := 'N';
7393          END IF;
7394 */
7395 
7396          IF (p_fee_amount_per_period IS NOT NULL) THEN
7397 
7398             l_rulv_rec.rule_information2         := p_fee_amount_per_period;
7399             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7400             l_rulv_rec.dnz_chr_id                := p_chr_id;
7401             l_rulv_rec.rule_information_category := 'LAFEXP';
7402             l_rulv_rec.std_template_yn           := 'N';
7403             l_rulv_rec.warn_yn                   := 'N';
7404          END IF;
7405 
7406          create_rule_group_and_rule(
7407                                     x_return_status => x_return_status,
7408                                     x_msg_count     => x_msg_count,
7409                                     x_msg_data      => x_msg_data,
7410                                     p_rgp_id        => l_rgp_id,
7411                                     p_rgpv_rec      => l_rgpv_rec,
7412                                     p_rulv_rec      => l_rulv_rec,
7413                                     x_rgpv_rec      => x_rgpv_rec,
7414                                     x_rulv_rec      => x_rulv_rec
7415                                    );
7416          l_progress := '1.2';
7417          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
7418              raise line_rule_failed;
7419          END IF;
7420 
7421          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
7422             l_rgp_id := x_rgpv_rec.id;
7423          END IF;
7424 
7425          IF (p_fee_frequency IS NOT NULL) THEN
7426 
7427             OPEN freq_csr (p_fee_frequency);
7428             FETCH freq_csr INTO l_freq_id;
7429             CLOSE freq_csr;
7430 
7431             l_rulv_rec := NULL;
7432 
7433             l_rulv_rec.jtot_object1_code         := 'OKL_TUOM';
7434             l_rulv_rec.object1_id1               := l_freq_id;
7435             l_rulv_rec.object1_id2               := '#';
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 := 'LAFREQ';
7439             l_rulv_rec.std_template_yn           := 'N';
7440             l_rulv_rec.warn_yn                   := 'N';
7441 
7442             create_rule_group_and_rule(
7443                                     x_return_status => x_return_status,
7444                                     x_msg_count     => x_msg_count,
7445                                     x_msg_data      => x_msg_data,
7446                                     p_rgp_id        => l_rgp_id,
7447                                     p_rgpv_rec      => l_rgpv_rec,
7448                                     p_rulv_rec      => l_rulv_rec,
7449                                     x_rgpv_rec      => x_rgpv_rec,
7450                                     x_rulv_rec      => x_rulv_rec
7451                                    );
7452             l_progress := '1.2';
7453             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
7454                 raise line_rule_failed;
7455             END IF;
7456 
7457             IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
7458                l_rgp_id := x_rgpv_rec.id;
7459             END IF;
7460          END IF;
7461 
7462      END IF;
7463 
7464 /*
7465      IF (p_line_type = 'ASSET') THEN
7466          -- Rule Group LAHDTX
7467 
7468          l_rgpv_rec            := NULL;
7469          l_rgp_id              := NULL;
7470          l_rgpv_rec.rgd_code   := 'LAHDTX';
7471          l_rgpv_rec.chr_id     := NULL;
7472          l_rgpv_rec.dnz_chr_id := p_chr_id;
7473          l_rgpv_rec.cle_id     := p_cle_id;
7474          l_rgpv_rec.rgp_type   := 'KRG';
7475 
7476          l_rulv_rec := NULL;
7477 
7478          IF (p_prop_tax_applicable IS NOT NULL) THEN
7479             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7480             l_rulv_rec.dnz_chr_id                := p_chr_id;
7481             l_rulv_rec.rule_information1         := p_prop_tax_applicable;
7482             l_rulv_rec.rule_information_category := 'LAPRTX';
7483             l_rulv_rec.std_template_yn           := 'N';
7484             l_rulv_rec.warn_yn                   := 'N';
7485          END IF;
7486 
7487          IF (p_prop_tax_lease_rep IS NOT NULL) THEN
7488             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
7489             l_rulv_rec.dnz_chr_id                := p_chr_id;
7490             l_rulv_rec.rule_information2         := p_prop_tax_lease_rep;
7491             l_rulv_rec.rule_information_category := 'LAPRTX';
7492             l_rulv_rec.std_template_yn           := 'N';
7493             l_rulv_rec.warn_yn                   := 'N';
7494          END IF;
7495 
7496          create_rule_group_and_rule(
7497                                     x_return_status => x_return_status,
7498                                     x_msg_count     => x_msg_count,
7499                                     x_msg_data      => x_msg_data,
7500                                     p_rgp_id        => l_rgp_id,
7501                                     p_rgpv_rec      => l_rgpv_rec,
7502                                     p_rulv_rec      => l_rulv_rec,
7503                                     x_rgpv_rec      => x_rgpv_rec,
7504                                     x_rulv_rec      => x_rulv_rec
7505                                    );
7506 
7507          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
7508              raise line_rule_failed;
7509          END IF;
7510 
7511          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
7512             l_rgp_id := x_rgpv_rec.id;
7513          END IF;
7514 
7515          l_rulv_rec := NULL;
7516 
7517      END IF;
7518 */
7519 
7520      RETURN;
7521 
7522    EXCEPTION
7523 
7524      WHEN line_rule_failed THEN
7525          x_return_status := OKL_API.G_RET_STS_ERROR;
7526          debug_message('Line rule failed : '||l_progress);
7527 
7528       WHEN OTHERS THEN
7529         okl_api.set_message(
7530                             G_APP_NAME,
7531                             G_UNEXPECTED_ERROR,
7532                             'OKL_SQLCODE',
7533                             SQLCODE,
7534                             'OKL_SQLERRM',
7535                             SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
7536                            );
7537 
7538         x_return_status := OKL_API.G_RET_STS_ERROR;
7539         debug_message('line other : '||l_progress);
7540 
7541    END create_line_rules;
7542 
7543 ------------------------------------------------------------------------------
7544 -- FUNCTION get_lien_holder
7545 -- It returns lien_holder_id from name and
7546 -- stacks Error, if any, and returns ERROR status to calling process.
7547 -- Calls:
7548 -- Called By:
7549 ------------------------------------------------------------------------------
7550    FUNCTION get_lien_holder(
7551                 x_return_status    OUT NOCOPY VARCHAR2,
7552                 p_lien_holder_name IN  okl_header_interface.lien_holder_name%TYPE,
7553                 p_lien_holder_id   IN  okl_header_interface.lien_holder_id%TYPE
7554                )
7555    RETURN VARCHAR2 IS
7556    CURSOR lien_csr (p_id   NUMBER,
7557                     p_name VARCHAR2) IS
7558    SELECT id1
7559    FROM   okx_parties_v
7560    WHERE  ((name = p_name
7561             AND
7562             p_name IS NOT NULL)
7563             OR
7564             (id1  = p_id
7565              AND
7566              p_id IS NOT NULL
7567             )
7568            );
7569 
7570    l_id   NUMBER;
7571    BEGIN
7572      x_return_status := OKL_API.G_RET_STS_SUCCESS;
7573 
7574      OPEN lien_csr (p_lien_holder_id,
7575                     p_lien_holder_name);
7576      FETCH lien_csr INTO l_id;
7577      IF lien_csr%NOTFOUND THEN
7578         x_return_status := OKL_API.G_RET_STS_ERROR;
7579         RETURN NULL;
7580      END IF;
7581 
7582      CLOSE lien_csr;
7583      RETURN TO_CHAR(l_id);
7584 
7585    END get_lien_holder;
7586 
7587 ------------------------------------------------------------------------------
7588 -- FUNCTION get_late_policy_id
7589 -- It returns late_policy_id for corresponding policy_code
7590 -- stacks Error, if any, and returns ERROR status to calling process.
7591 -- Calls:
7592 -- Called By:
7593 ------------------------------------------------------------------------------
7594    FUNCTION get_late_policy_id(
7595                    x_return_status    OUT NOCOPY VARCHAR2,
7596                    p_late_policy_code IN  okl_header_interface.late_charge_product_code%TYPE,
7597                    p_org_id           IN  NUMBER,
7598                    p_late_policy_type IN  VARCHAR2
7599                   )
7600    RETURN VARCHAR2 IS
7601    CURSOR policy_csr (p_policy_code VARCHAR2,
7602                       p_org_id      NUMBER,
7603                       p_policy_type VARCHAR2) IS
7604    SELECT id
7605    FROM   okl_late_policies_v
7606    WHERE  name = p_policy_code
7607    AND    org_id = p_org_id
7608    AND    ( late_policy_type_code = 'LCT'
7609             OR
7610             late_policy_type_code = p_policy_type );
7611 
7612    l_id   NUMBER;
7613    BEGIN
7614      x_return_status := OKL_API.G_RET_STS_SUCCESS;
7615 
7616      OPEN policy_csr (p_late_policy_code,
7617                       p_org_id,
7618                       p_late_policy_type
7619                      );
7620      FETCH policy_csr INTO l_id;
7621      IF policy_csr%NOTFOUND THEN
7622         x_return_status := OKL_API.G_RET_STS_ERROR;
7623         RETURN NULL;
7624      END IF;
7625 
7626      CLOSE policy_csr;
7627      RETURN TO_CHAR(l_id);
7628 
7629    END get_late_policy_id;
7630 
7631 ------------------------------------------------------------------------------
7632 -- PROCEDURE get_cash_appl_rule_id
7633 -- It validates and get cash application rule ID from rule name
7634 -- Calls:
7635 -- Called By:
7636 --   create_header_rule
7637 ------------------------------------------------------------------------------
7638    PROCEDURE get_cash_appl_rule_id (
7639                                     x_return_status           OUT NOCOPY VARCHAR2,
7640                                     x_msg_count               OUT NOCOPY NUMBER,
7641                                     x_msg_data                OUT NOCOPY VARCHAR2,
7642                                     p_contract_number         IN  OKL_HEADER_INTERFACE.CONTRACT_NUMBER_OLD%TYPE,
7643                                     p_org_id                  IN  OKC_K_HEADERS_V.AUTHORING_ORG_ID%TYPE,
7644                                     p_cash_appl_rule_name     IN  OKL_HEADER_INTERFACE.CASH_APPL_RULE_NAME%TYPE,
7645                                     x_cash_appl_rule_id       OUT NOCOPY OKL_BPD_ACTIVE_CSH_RLS_V.ID1%TYPE
7646                                    ) IS
7647 
7648    cursor cash_csr (p_rule_name VARCHAR2,
7649                     p_org_id    NUMBER) IS
7650    SELECT id1
7651    FROM   okl_bpd_active_csh_rls_v
7652    WHERE  name           = p_rule_name
7653    AND    org_id         = p_org_id
7654    AND    TRUNC(SYSDATE) BETWEEN NVL(TRUNC(START_DATE),TRUNC(SYSDATE)) AND
7655                                  NVL(TRUNC(END_DATE),TRUNC(SYSDATE));
7656    cash_failed EXCEPTION;
7657    l_proc_name VARCHAR2(35) := 'GET_CASH_APPL_RULE_ID';
7658 
7659    BEGIN
7660 
7661      x_return_status := OKL_API.G_RET_STS_SUCCESS;
7662      debug_message(l_proc_name);
7663 
7664      OPEN cash_csr (p_cash_appl_rule_name,
7665                     p_org_id);
7666      FETCH cash_csr INTO x_cash_appl_rule_id;
7667      IF cash_csr%NOTFOUND THEN
7668         RAISE cash_failed;
7669      END IF;
7670      CLOSE cash_csr;
7671 
7672    EXCEPTION
7673       WHEN cash_failed THEN
7674 
7675         IF (cash_csr%ISOPEN) THEN
7676           CLOSE cash_csr;
7677         END IF;
7678 
7679         okl_api.set_message(
7680                             G_APP_NAME,
7681                             G_INVALID_VALUE,
7682                             'CONTRACT_NUM',
7683                             p_contract_number,
7684                             'COL_NAME',
7685                             'CASH_APPL_RULE_NAME',
7686                             'COL_VALUE',
7687                             p_cash_appl_rule_name
7688                            );
7689        x_return_status := OKL_API.G_RET_STS_ERROR;
7690 
7691       WHEN OTHERS THEN
7692 
7693         okl_api.set_message(
7694                             G_APP_NAME,
7695                             G_UNEXPECTED_ERROR,
7696                             'OKL_SQLCODE',
7697                             SQLCODE,
7698                             'OKL_SQLERRM',
7699                             SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
7700                            );
7701 
7702         x_return_status := OKL_API.G_RET_STS_ERROR;
7703    END get_cash_appl_rule_id;
7704 
7705 function get_formula_id(p_name IN VARCHAR2,
7706                         x_return_status OUT NOCOPY VARCHAR2) RETURN NUMBER IS
7707 l_formula_id number := 0;
7708 begin
7709   x_return_status := OKC_API.G_RET_STS_SUCCESS;
7710   select id
7711   INTO   l_formula_id
7712   FROM   OKL_FORMULAE_B
7713   WHERE  NAME = p_name;
7714 
7715   return(l_formula_id);
7716   EXCEPTION WHEN OTHERS THEN
7717     x_return_status := OKC_API.G_RET_STS_ERROR;
7718     return(l_formula_id); -- 5024651
7719 end;
7720 
7721 ------------------------------------------------------------------------------
7722 -- PROCEDURE create_header_rules
7723 -- It creates rules for header record and
7724 -- stacks Error, if any, and returns ERROR status to calling process.
7725 -- Calls:
7726 --   get_customer_account_id
7727 --   get_bill_to_address_id
7728 --   get_bank_account_id
7729 --   get_invoice_format_id
7730 --   get_payment_method_id
7731 -- Called By:
7732 --   load_input_record
7733 ------------------------------------------------------------------------------
7734    PROCEDURE create_header_rules(
7735                                 x_return_status              OUT NOCOPY VARCHAR2,
7736                                 x_msg_count                  OUT NOCOPY NUMBER,
7737                                 x_msg_data                   OUT NOCOPY VARCHAR2,
7738                                 p_chr_id                     IN  OKC_K_HEADERS_V.ID%TYPE,
7739                                 p_template_id                IN  OKC_K_HEADERS_V.ID%TYPE,
7740                                 p_header_rec                 IN  intf_h_rec_type
7741                                ) IS
7742 
7743    header_rule_failed    EXCEPTION;
7744    l_proc_name           VARCHAR2(35) := 'CREATE_HEADER_RULES';
7745 
7746    x_customer_account_id OKX_CUSTOMER_ACCOUNTS_V.ID1%TYPE;
7747    x_bill_to_address_id  OKX_CUST_SITE_USES_V.ID1%TYPE;
7748    x_bank_account_id     OKX_RCPT_METHOD_ACCOUNTS_V.ID1%TYPE;
7749    x_invoice_format_id   OKL_INVOICE_FORMATS_V.ID%TYPE;
7750    x_payment_method_id   OKX_RECEIPT_METHODS_V.ID1%TYPE;
7751    x_invoice_format_name okl_invoice_formats_v.name%TYPE;
7752    x_index_id            okl_indices.id%TYPE;
7753 
7754    l_rgd_code            OKC_RULE_GROUPS_V.RGD_CODE%TYPE;
7755    l_rgp_type            OKC_RULE_GROUPS_V.RGP_TYPE%TYPE;
7756 
7757    l_chr_id              OKC_RULE_GROUPS_V.CHR_ID%TYPE;
7758    l_dnz_chr_id          OKC_RULE_GROUPS_V.DNZ_CHR_ID%TYPE;
7759    l_cle_id              OKC_RULE_GROUPS_V.CLE_ID%TYPE;
7760    l_rgp_id              OKC_RULE_GROUPS_V.ID%TYPE;
7761    l_jtot_object1_code   OKC_RULES_V.JTOT_OBJECT1_CODE%TYPE;
7762    l_object1_id1         OKC_RULES_V.OBJECT1_ID1%TYPE;
7763    l_rule_info1          OKC_RULES_V.RULE_INFORMATION1%TYPE;
7764    l_rule_info2          OKC_RULES_V.RULE_INFORMATION2%TYPE;
7765    l_rule_info_catg      OKC_RULES_V.RULE_INFORMATION_CATEGORY%TYPE;
7766    --l_rgp_id              NUMBER;
7767 
7768    -- Rule Rec
7769    x_rgpv_rec         rgpv_rec_type;
7770    l_rgpv_rec         rgpv_rec_type;
7771 
7772    l_rulv_rec         rulv_rec_type;
7773    x_rulv_rec         rulv_rec_type;
7774 
7775    l_rule_count       NUMBER := 0;
7776    l_rulv_tbl         rulv_tbl_type;
7777 
7778    CURSOR temp_role_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
7779  --Fixed # Bug 5484903
7780   SELECT object1_id1
7781    FROM   okc_k_party_roles_b
7782    WHERE  dnz_chr_id            = p_chr_id
7783    AND    chr_id                = dnz_chr_id
7784    AND    jtot_object1_code = 'OKX_PARTY'
7785    AND    rle_code          = 'LESSEE';
7786 
7787    l_customer_id NUMBER;
7788 
7789    l_rebook_limit_date VARCHAR2(100);
7790    l_security_deposit_hold_flag  VARCHAR2(450); -- same as rule segment datatype
7791    l_security_deposit_net_flag   VARCHAR2(450);
7792    l_security_deposit_date       VARCHAR2(450);
7793    l_renewal_notice_days         VARCHAR2(450);
7794    l_renewal_option              VARCHAR2(450);
7795    l_renewal_amount              VARCHAR2(450);
7796    l_late_interest_held_date     VARCHAR2(450);
7797    l_late_interest_exempt_flag   VARCHAR2(450);
7798    l_late_int_product_code       VARCHAR2(450);
7799    l_late_int_product_id         VARCHAR2(450);
7800    l_late_charge_held_until_date VARCHAR2(450);
7801    l_late_charge_product_code    VARCHAR2(450);
7802    l_late_charge_product_id      VARCHAR2(450);
7803    l_late_charge_exempt_flag     VARCHAR2(450);
7804    l_variable_rate               VARCHAR2(450);
7805    l_convert_type                VARCHAR2(450);
7806    l_conversion_method           VARCHAR2(450);
7807    l_date_of_conversion          VARCHAR2(450);
7808    l_convert_by_date             VARCHAR2(450);
7809    l_variable_method             VARCHAR2(450);
7810    l_index_name                  VARCHAR2(450);
7811    l_index_id                    VARCHAR2(450);
7812    l_base_rate                   VARCHAR2(450);
7813    l_adder                       VARCHAR2(450);
7814    l_minimum_rate                VARCHAR2(450);
7815    l_maximum_rate                VARCHAR2(450);
7816    l_tolerance                   VARCHAR2(450);
7817    l_adjustment_frequency        VARCHAR2(450);
7818    l_days_in_year                VARCHAR2(450);
7819    l_days_in_month               VARCHAR2(450);
7820    l_interest_method             VARCHAR2(450);
7821    l_interest_start_date         VARCHAR2(450);
7822    l_method_of_calculation       VARCHAR2(450);
7823    l_formula_name                VARCHAR2(450);
7824    l_factoring_date              VARCHAR2(450);
7825    l_factoring_percentage        VARCHAR2(450);
7826    l_factoring_discount_rate     VARCHAR2(450);
7827    l_evergreen_eligible_flag     VARCHAR2(450);
7828    l_bill_to_address_id          VARCHAR2(450);
7829    l_bill_to_address             VARCHAR2(450);
7830    l_reason_for_invoice_review   VARCHAR2(450);
7831    l_invoice_review_until_date   VARCHAR2(450);
7832    l_review_invoice_flag         VARCHAR2(450);
7833    l_print_lead_days             VARCHAR2(450);--hariven bug 5359935
7834    l_capitalize_flag             VARCHAR2(450);
7835    l_non_notification_flag       VARCHAR2(450);
7836    l_rvi_rate                    VARCHAR2(450);
7837    l_rvi_auto_calculate_flag     VARCHAR2(450);
7838    l_tax_withholding_flag        VARCHAR2(450);
7839    l_tax_calc_formula_name       VARCHAR2(450);
7840    l_tax_owner                   VARCHAR2(450);
7841    l_private_activity_bond_flag  VARCHAR2(450);
7842    l_floor_price_formula         VARCHAR2(450);
7843    l_remkt_sale_price_formula    VARCHAR2(450);
7844    l_repurchase_quote_option     VARCHAR2(450);
7845    l_repurchase_quote_formula    VARCHAR2(450);
7846    l_sale_price_option           VARCHAR2(450);
7847    l_sale_price_amount           VARCHAR2(450);
7848    l_sale_price_formula          VARCHAR2(450);
7849    l_sale_price_prorate          VARCHAR2(450);
7850    l_discount_rate_option        VARCHAR2(450);
7851    l_discount_rate_amount        VARCHAR2(450);
7852    l_discount_rate_formula       VARCHAR2(450);
7853    l_discount_rate_prorate       VARCHAR2(450);
7854    l_quote_fee_option            VARCHAR2(450);
7855    l_quote_fee_amount            VARCHAR2(450);
7856    l_quote_fee_formula           VARCHAR2(450);
7857    l_quote_fee_prorate           VARCHAR2(450);
7858    l_ert_purchase_opt            VARCHAR2(450);
7859    l_ert_purchase_opt_type       VARCHAR2(450);
7860    l_ert_purchase_opt_amount     VARCHAR2(450);
7861    l_ert_purchase_opt_formula    VARCHAR2(450);
7862    l_ert_purchase_opt_prorate    VARCHAR2(450);
7863    l_ert_purchase_opt_max_opt    VARCHAR2(450);
7864    l_ert_purchase_opt_max_amt    VARCHAR2(450);
7865    l_ert_purchase_opt_max_formula VARCHAR2(450);
7866    l_ert_purchase_opt_min_opt    VARCHAR2(450);
7867    l_ert_purchase_opt_min_amt    VARCHAR2(450);
7868    l_ert_purchase_opt_min_formula VARCHAR2(450);
7869    l_eot_purchase_opt            VARCHAR2(450);
7870    l_eot_purchase_opt_type       VARCHAR2(450);
7871    l_eot_purchase_opt_amount     VARCHAR2(450);
7872    l_eot_purchase_opt_formula    VARCHAR2(450);
7873    l_eot_purchase_opt_prorate    VARCHAR2(450);
7874    l_eot_purchase_opt_max_opt    VARCHAR2(450);
7875    l_eot_purchase_opt_max_amt    VARCHAR2(450);
7876    l_eot_purchase_opt_max_formula VARCHAR2(450);
7877    l_eot_purchase_opt_min_opt    VARCHAR2(450);
7878    l_eot_purchase_opt_min_amt    VARCHAR2(450);
7879    l_eot_purchase_opt_min_formula VARCHAR2(450);
7880    l_tqp_erl_term_alwd_flag       VARCHAR2(450);
7881    l_tqp_prt_term_alwd_flag       VARCHAR2(450);
7882    l_quote_effective_days          VARCHAR2(450);
7883    l_quote_eff_max_days            VARCHAR2(450);
7884    l_eot_tolerance_days            VARCHAR2(450);
7885    l_prt_termination_approval_req  VARCHAR2(450);
7886    l_prt_termination_allowed_flag  VARCHAR2(450);
7887    l_gain_loss_approval_req        VARCHAR2(450);
7888    l_gain_loss_net_quote_opt       VARCHAR2(450);
7889    l_gain_loss_net_quote_amt       VARCHAR2(450);
7890    l_gain_loss_net_quote_formula   VARCHAR2(450);
7891    l_gain_loss_tolrn_allwd         VARCHAR2(450);
7892    l_quote_approver_contract_role  VARCHAR2(450);
7893    l_quote_rcpt_contract_role      VARCHAR2(450);
7894    l_quote_crtsy_cp_cntrc_role     VARCHAR2(450);
7895    l_ert_quote_calc_term_option    VARCHAR2(450);
7896    l_ert_quote_calc_term_formula   VARCHAR2(450);
7897    l_ert_contract_oblig_opt        VARCHAR2(450);
7898    l_ert_contract_oblig_amount     VARCHAR2(450);
7899    l_ert_contract_oblig_formula    VARCHAR2(450);
7900    l_ert_contract_oblig_prorate    VARCHAR2(450);
7901    l_ert_disc_rate_opt             VARCHAR2(450);
7902    l_ert_disc_rate_amount          VARCHAR2(450);
7903    l_ert_disc_rate_formula         VARCHAR2(450);
7904    l_ert_disc_rate_prorate         VARCHAR2(450);
7905    l_ert_quote_fee_opt             VARCHAR2(450);
7906    l_ert_quote_fee_amount          VARCHAR2(450);
7907    l_ert_quote_fee_formula         VARCHAR2(450);
7908    l_ert_quote_fee_prorate         VARCHAR2(450);
7909    l_ert_return_fee_option         VARCHAR2(450);
7910    l_ert_return_fee_amount         VARCHAR2(450);
7911    l_ert_return_fee_formula        VARCHAR2(450);
7912    l_ert_return_fee_prorate        VARCHAR2(450);
7913    l_ert_roll_inctv_option         VARCHAR2(450);
7914    l_ert_roll_inctv_amount         VARCHAR2(450);
7915    l_ert_roll_inctv_formula        VARCHAR2(450);
7916    l_ert_roll_inctv_prorate        VARCHAR2(450);
7917    l_ert_secu_dep_dispo_option     VARCHAR2(450);
7918    l_ert_secu_dep_dispo_amount     VARCHAR2(450);
7919    l_ert_secu_dep_dispo_formula    VARCHAR2(450);
7920    l_ert_secu_dep_dispo_prorate    VARCHAR2(450);
7921    l_ert_term_penalty_option       VARCHAR2(450);
7922    l_ert_term_penalty_amount       VARCHAR2(450);
7923    l_ert_term_penalty_formula      VARCHAR2(450);
7924    l_ert_term_penalty_prorate      VARCHAR2(450);
7925    l_ert_term_penalty_cap_option   VARCHAR2(450);
7926    l_ert_term_penalty_cap_amount   VARCHAR2(450);
7927    l_ert_term_penalty_cap_formula  VARCHAR2(450);
7928    l_ert_est_prop_tax_option       VARCHAR2(450);
7929    l_ert_est_prop_tax_amount       VARCHAR2(450);
7930    l_ert_est_prop_tax_formula      VARCHAR2(450);
7931    l_ert_est_prop_tax_prorate      VARCHAR2(450);
7932    l_ert_contr_fees_option         VARCHAR2(450);
7933    l_ert_outstnd_bal_option        VARCHAR2(450);
7934    l_ert_serv_mant_option          VARCHAR2(450);
7935    l_eot_quote_calc_term_option    VARCHAR2(450);
7936    l_eot_quote_calc_term_formula   VARCHAR2(450);
7937    l_eot_contract_oblig_opt        VARCHAR2(450);
7938    l_eot_contract_oblig_amount     VARCHAR2(450);
7939    l_eot_contract_oblig_formula    VARCHAR2(450);
7940    l_eot_contract_oblig_prorate    VARCHAR2(450);
7941    l_eot_disc_rate_opt             VARCHAR2(450);
7942    l_eot_disc_rate_amount          VARCHAR2(450);
7943    l_eot_disc_rate_formula         VARCHAR2(450);
7944    l_eot_disc_rate_prorate         VARCHAR2(450);
7945    l_eot_quote_fee_opt             VARCHAR2(450);
7946    l_eot_quote_fee_amount          VARCHAR2(450);
7947    l_eot_quote_fee_formula         VARCHAR2(450);
7948    l_eot_quote_fee_prorate         VARCHAR2(450);
7949    l_eot_return_fee_option         VARCHAR2(450);
7950    l_eot_return_fee_amount         VARCHAR2(450);
7951    l_eot_return_fee_formula        VARCHAR2(450);
7952    l_eot_return_fee_prorate        VARCHAR2(450);
7953    l_eot_roll_inctv_option         VARCHAR2(450);
7954    l_eot_roll_inctv_amount         VARCHAR2(450);
7955    l_eot_roll_inctv_formula        VARCHAR2(450);
7956    l_eot_roll_inctv_prorate        VARCHAR2(450);
7957    l_eot_secu_dep_dispo_option     VARCHAR2(450);
7958    l_eot_secu_dep_dispo_amount     VARCHAR2(450);
7959    l_eot_secu_dep_dispo_formula    VARCHAR2(450);
7960    l_eot_secu_dep_dispo_prorate    VARCHAR2(450);
7961    l_eot_term_penalty_option       VARCHAR2(450);
7962    l_eot_term_penalty_amount       VARCHAR2(450);
7963    l_eot_term_penalty_formula      VARCHAR2(450);
7964    l_eot_term_penalty_prorate      VARCHAR2(450);
7965    l_eot_term_penalty_cap_option   VARCHAR2(450);
7966    l_eot_term_penalty_cap_amount   VARCHAR2(450);
7967    l_eot_term_penalty_cap_formula  VARCHAR2(450);
7968    l_eot_est_prop_tax_option       VARCHAR2(450);
7969    l_eot_est_prop_tax_amount       VARCHAR2(450);
7970    l_eot_est_prop_tax_formula      VARCHAR2(450);
7971    l_eot_est_prop_tax_prorate      VARCHAR2(450);
7972    l_eot_contr_fees_option         VARCHAR2(450);
7973    l_eot_outstnd_bal_option        VARCHAR2(450);
7974    l_eot_serv_mant_option          VARCHAR2(450);
7975    l_evergreen_passthru_fees       VARCHAR2(450);
7976    l_evergreen_passthru_percent    VARCHAR2(450);
7977    l_lien_type                     VARCHAR2(450);
7978    l_filing_number                 VARCHAR2(450);
7979    l_filing_date                   VARCHAR2(450);
7980    l_filing_status                 VARCHAR2(450);
7981    l_lien_holder_name              VARCHAR2(450);
7982    l_lien_holder_id                VARCHAR2(450);
7983    l_jurisdiction                  VARCHAR2(450);
7984    l_sub_jurisdiction              VARCHAR2(450);
7985    l_lien_expiration_date          VARCHAR2(450);
7986    l_lien_continuation_number      VARCHAR2(450);
7987    l_lien_continuation_date        VARCHAR2(450);
7988    l_title_type                    VARCHAR2(450);
7989    l_title_issuer_name             VARCHAR2(450);
7990    l_title_issuer_id               VARCHAR2(450);
7991    x_title_issuer_id               NUMBER;
7992    l_title_date                    VARCHAR2(450);
7993    l_title_number                  VARCHAR2(450);
7994    l_registration_number           VARCHAR2(450);
7995    l_location                      VARCHAR2(450);
7996    l_title_custodian_name          VARCHAR2(450);
7997    l_title_custodian_id            VARCHAR2(450);
7998    x_title_custodian_id            NUMBER;
7999    l_payee_site                    VARCHAR2(450);
8000    l_registration_location         VARCHAR2(450);
8001    l_reg_expiration_date           VARCHAR2(450);
8002    l_prtfl_approval_req            VARCHAR2(450);
8003    l_prtfl_assgn_group             VARCHAR2(450);
8004    l_prtfl_budget_amt_opt          VARCHAR2(450);
8005    l_prtfl_budget_fixed_amt        VARCHAR2(450);
8006    l_prtfl_budget_amt_formula      VARCHAR2(450);
8007    l_prtfl_days_from_con_expr      VARCHAR2(450);
8008    l_prtfl_strategy                VARCHAR2(450);
8009    l_prop_tax_applicable           VARCHAR2(450);
8010    l_prop_tax_lease_rep            VARCHAR2(450);
8011    l_mex_tax_sub_basic_wthld       VARCHAR2(450);
8012    l_mex_tax_calc_formula          VARCHAR2(450);
8013    l_aus_tax_stamp_duty            VARCHAR2(450);
8014 
8015 -- Added by rravikir (Fix for Bug 3947959)
8016    l_prop_tax_bill_method          VARCHAR2(35);
8017 -- End
8018 
8019    -- AKP new rules added 4067094
8020 
8021    l_gain_loss_tolrnc_allwd_amt     NUMBER;
8022    l_gain_loss_tolrnc_allwd_frml    VARCHAR2(150);
8023    l_gain_loss_tolrnc_basis         VARCHAR2(30);
8024    l_gain_loss_apprv_proc_frml      VARCHAR2(150);
8025    l_ert_absorbed_fee_frml          VARCHAR2(150);
8026    l_ert_expense_fee_frml           VARCHAR2(150);
8027    l_ert_financed_fee_frml          VARCHAR2(150);
8028    l_ert_general_fee_frml           VARCHAR2(150);
8029    l_ert_income_fee_frml            VARCHAR2(150);
8030    l_ert_misc_fee_frml              VARCHAR2(150);
8031    l_ert_passthru_fee_frml          VARCHAR2(150);
8032    l_ert_rollover_fee_frml          VARCHAR2(150);
8033    l_eot_absorbed_fee_frml          VARCHAR2(150);
8034    l_eot_expense_fee_frml           VARCHAR2(150);
8035    l_eot_financed_fee_frml          VARCHAR2(150);
8036    l_eot_general_fee_frml           VARCHAR2(150);
8037    l_eot_income_fee_frml            VARCHAR2(150);
8038    l_eot_misc_fee_frml              VARCHAR2(150);
8039    l_eot_passthru_fee_frml          VARCHAR2(150);
8040    l_eot_rollover_fee_frml          VARCHAR2(150);
8041 
8042    -- AKP new rules added 4067094
8043 
8044    l_st_upd_lines_from_contract     VARCHAR2(450);
8045    l_st_interest_disclosed          VARCHAR2(450);
8046    l_st_transfer_of_title           VARCHAR2(450);
8047    l_st_sale_and_lease_back         VARCHAR2(450);
8048    l_st_purchase_of_lease           VARCHAR2(450);
8049    l_st_equipment_usage             VARCHAR2(450);
8050    l_st_equipment_age               VARCHAR2(450);
8051    l_st_asset_upfront_tax           VARCHAR2(450);
8052    l_st_bill_stream_type_code       VARCHAR2(450);
8053    l_st_bill_stream_purpose_code    VARCHAR2(450);
8054    l_st_fin_stream_type_code        VARCHAR2(450);
8055    l_st_fin_stream_purpose_code     VARCHAR2(450);
8056    l_st_cap_stream_type_code        VARCHAR2(450);
8057    l_st_cap_stream_purpose_code     VARCHAR2(450);
8058    l_st_bill_stream_id              NUMBER;
8059    l_st_fin_stream_id               NUMBER;
8060    l_st_cap_stream_id               NUMBER;
8061 
8062    l_st_tax_schedule_applies_flag   VARCHAR2(450); -- R12 ebTax change
8063 
8064    l_id1                            OKL_STRMTYP_SOURCE_V.id1%TYPE;
8065    l_st_stream_name                 OKL_STRMTYP_SOURCE_V.name%TYPE;
8066    l_send_bill_sale                 VARCHAR2(150);
8067    l_manual_quotes_only             VARCHAR2(150);
8068    l_first_termination_date         VARCHAR2(150);
8069    l_quote_rcpt_addl_rcpt_role      VARCHAR2(30);
8070    l_quote_rcpt_alloc_ptg           NUMBER;
8071    l_quote_apprvr_adv_notice_role   VARCHAR2(30);
8072    l_quote_approver_delay_days      NUMBER;
8073    l_ert_serv_mant_frml             VARCHAR2(150);
8074    l_eot_serv_mant_frml             VARCHAR2(150);
8075 
8076 
8077 
8078    x_cash_appl_rule_id             OKL_BPD_ACTIVE_CSH_RLS_V.ID1%TYPE;
8079 
8080    l_rate_counter NUMBER := 1;
8081    l_tmpl_rate_rec krpv_rec_type;
8082    l_k_rate_tbl    krpv_tbl_type;
8083    l_no_data       BOOLEAN := TRUE;
8084    x_krpv_rec      krpv_rec_type;
8085    l_formula_id    NUMBER;
8086 
8087    l_progress         VARCHAR2(5) := '1.0';
8088 
8089    -- Bug 4655611
8090    SUBTYPE fee_types_rec_type IS OKL_MAINTAIN_FEE_PVT.fee_types_rec_type;
8091    l_fee_types_rec fee_types_rec_type;
8092    x_fee_types_rec fee_types_rec_type;
8093 
8094    l_contract_number            okc_k_headers_b.contract_number%TYPE;
8095    l_contract_start_date        okc_k_headers_b.start_date%TYPE;
8096    l_rvi_stream_type_id         okl_strmtyp_source_v.id1%TYPE;
8097 
8098    CURSOR contract_csr (p_contract_id NUMBER) is
8099    SELECT contract_number, start_date
8100    FROM   okl_k_headers_full_v
8101    WHERE  id = p_contract_id;
8102 
8103    CURSOR rvi_stream_csr (p_sty_id number, p_contract_start_date date) IS
8104    SELECT 'Y'
8105    FROM   okl_stream_types_uv STL
8106    WHERE  STL.id = p_sty_id
8107    AND    STL.start_date <= p_contract_start_date
8108    AND   (STL.end_date >= p_contract_start_date OR STL.end_date IS NULL);
8109 
8110    l_yn                         VARCHAR2(1) := 'N';
8111    l_rvi_stream_code OKL_HEADER_INTERFACE.RVI_STREAM_CODE%TYPE;
8112    l_rvi_stream_purpose_code OKL_HEADER_INTERFACE.RVI_STREAM_PURPOSE_CODE%TYPE;
8113    l_rvi_stream_name OKL_STRMTYP_SOURCE_V.NAME%TYPE;
8114 
8115    -- Bug 4655611
8116 
8117    l_eot_auto_proc_purchase_opt VARCHAR2(1);
8118 
8119    --R12B eBTax
8120    CURSOR c_tax_schedule_yn IS
8121    SELECT tax_schedule_yn
8122    FROM   okl_system_params;
8123 
8124    l_tax_schedule_yn VARCHAR2(1);
8125 
8126    BEGIN
8127 
8128       x_return_status := OKL_API.G_RET_STS_SUCCESS;
8129 
8130       --
8131       -- Always Create Re-leased asset rule
8132       -- with value = 'N'
8133       --
8134 /* Created at line creation
8135       l_rgpv_rec            := NULL;
8136       l_rgp_id              := NULL;
8137 
8138       l_rgpv_rec.rgd_code   := 'LARLES';
8139       l_rgpv_rec.chr_id     := p_chr_id;
8140       l_rgpv_rec.dnz_chr_id := p_chr_id;
8141       l_rgpv_rec.cle_id     := NULL;
8142       l_rgpv_rec.rgp_type   := 'KRG';
8143 
8144       l_rulv_rec                           := NULL;
8145 
8146       l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
8147       l_rulv_rec.dnz_chr_id                := p_chr_id;
8148       l_rulv_rec.rule_information_category := 'LARLES';
8149       l_rulv_rec.rule_information1         := 'N';
8150       l_rulv_rec.std_template_yn           := 'N';
8151       l_rulv_rec.warn_yn                   := 'N';
8152 
8153       create_rule_group_and_rule(
8154                               x_return_status => x_return_status,
8155                               x_msg_count     => x_msg_count,
8156                               x_msg_data      => x_msg_data,
8157                               p_rgp_id        => l_rgp_id,
8158                               p_rgpv_rec      => l_rgpv_rec,
8159                               p_rulv_rec      => l_rulv_rec,
8160                               x_rgpv_rec      => x_rgpv_rec,
8161                               x_rulv_rec      => x_rulv_rec
8162                              );
8163 
8164       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8165           raise header_rule_failed;
8166       END IF;
8167 
8168       debug_message('------>Rule: LARLES/LARLES processed');
8169 */
8170 
8171 /* Rule Migration
8172       IF (p_header_rec.customer_account_id IS NOT NULL
8173           OR
8174           p_header_rec.customer_account_number IS NOT NULL ) THEN
8175 
8176           get_customer_account_id(
8177                                   x_return_status           => x_return_status,
8178                                   x_msg_count               => x_msg_count,
8179                                   x_msg_data                => x_msg_data,
8180                                   p_contract_number         => p_header_rec.contract_number,
8181                                   p_customer_id             => g_customer_id,
8182                                   p_customer_account_id     => p_header_rec.customer_account_id,
8183                                   p_customer_account_number => p_header_rec.customer_account_number,
8184                                   x_customer_account_id     => x_customer_account_id
8185                                  );
8186          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8187             x_return_status := OKL_API.G_RET_STS_ERROR;
8188             raise header_rule_failed;
8189          END IF;
8190 
8191          g_customer_account_id := x_customer_account_id; -- Used to get Bill to address at Terms Interface
8192          l_progress := '1.1';
8193       ELSE
8194          IF (p_header_rec.template_number IS NOT NULL) THEN
8195 
8196             l_rule_count := 0;
8197             get_contract_rules(
8198                                x_return_status  => x_return_status,
8199                                x_msg_count      => x_msg_count,
8200                                x_msg_data       => x_msg_data,
8201                                p_chr_id         => p_template_id,
8202                                p_cle_id         => NULL,
8203                                p_rgd_code       => 'LACAN',
8204                                p_rule_code      => 'CAN',
8205                                x_rulv_tbl       => l_rulv_tbl,
8206                                x_rule_count     => l_rule_count
8207                               );
8208 
8209             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8210                RAISE header_rule_failed;
8211             END IF;
8212 
8213             IF (l_rule_count > 0) THEN
8214                x_customer_account_id := TO_NUMBER(l_rulv_tbl(1).object1_id1);
8215                g_customer_account_id := x_customer_account_id; -- Used to get Bill to address at Terms Interface
8216 
8217                get_customer_account_id(
8218                                   x_return_status           => x_return_status,
8219                                   x_msg_count               => x_msg_count,
8220                                   x_msg_data                => x_msg_data,
8221                                   p_contract_number         => p_header_rec.contract_number,
8222                                   p_customer_id             => g_customer_id,
8223                                   p_customer_account_id     => x_customer_account_id,
8224                                   p_customer_account_number => NULL,
8225                                   x_customer_account_id     => x_customer_account_id
8226                                  );
8227                 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8228                    x_return_status := OKL_API.G_RET_STS_ERROR;
8229                    raise header_rule_failed;
8230                 END IF;
8231 
8232             END IF;
8233 
8234          END IF;
8235 
8236       END IF;
8237 
8238       IF (x_customer_account_id IS NOT NULL) THEN
8239 
8240          l_rgpv_rec            := NULL;
8241          l_rgp_id              := NULL;
8242 
8243          l_rgpv_rec.rgd_code   := 'LACAN';
8244          l_rgpv_rec.chr_id     := p_chr_id;
8245          l_rgpv_rec.dnz_chr_id := p_chr_id;
8246          l_rgpv_rec.cle_id     := NULL;
8247          l_rgpv_rec.rgp_type   := 'KRG';
8248 
8249          l_rulv_rec                           := NULL;
8250 
8251          l_rulv_rec.object1_id1               := TO_CHAR(x_customer_account_id);
8252          l_rulv_rec.object1_id2               := '#';
8253          l_rulv_rec.jtot_object1_code         := 'OKX_CUSTACCT';
8254          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
8255          l_rulv_rec.dnz_chr_id                := p_chr_id;
8256          l_rulv_rec.rule_information_category := 'CAN';
8257          l_rulv_rec.std_template_yn           := 'N';
8258          l_rulv_rec.warn_yn                   := 'N';
8259 
8260          create_rule_group_and_rule(
8261                                  x_return_status => x_return_status,
8262                                  x_msg_count     => x_msg_count,
8263                                  x_msg_data      => x_msg_data,
8264                                  p_rgp_id        => l_rgp_id,
8265                                  p_rgpv_rec      => l_rgpv_rec,
8266                                  p_rulv_rec      => l_rulv_rec,
8267                                  x_rgpv_rec      => x_rgpv_rec,
8268                                  x_rulv_rec      => x_rulv_rec
8269                                 );
8270 
8271          l_progress := '1.3';
8272 
8273          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8274              raise header_rule_failed;
8275          END IF;
8276 
8277          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
8278             l_rgp_id := x_rgpv_rec.id;
8279          END IF;
8280 
8281       END IF; -- x_customer_account_id
8282 
8283       debug_message('------>Rule: LACAN/CAN processed');
8284 */
8285 
8286       IF (p_header_rec.rebook_limit_date IS NULL) THEN
8287          IF (p_header_rec.template_number IS NOT NULL) THEN
8288 
8289             get_contract_rules(
8290                                x_return_status  => x_return_status,
8291                                x_msg_count      => x_msg_count,
8292                                x_msg_data       => x_msg_data,
8293                                p_chr_id         => p_template_id,
8294                                p_cle_id         => NULL,
8295                                p_rgd_code       => 'LAREBL',
8296                                p_rule_code      => 'LAREBL',
8297                                x_rulv_tbl       => l_rulv_tbl,
8298                                x_rule_count     => l_rule_count
8299                               );
8300 
8301             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8302                RAISE header_rule_failed;
8303             END IF;
8304 
8305             IF (l_rule_count > 0) THEN
8306                l_rebook_limit_date := l_rulv_tbl(1).rule_information1;
8307             END IF;
8308          END IF;
8309       ELSE
8310          l_rebook_limit_date := get_canonical_date(p_header_rec.rebook_limit_date);
8311       END IF;
8312 
8313       IF (l_rebook_limit_date IS NOT NULL) THEN
8314 
8315          l_rgpv_rec            := NULL;
8316          l_rgp_id              := NULL;
8317          l_rgpv_rec.rgd_code   := 'LAREBL';
8318          l_rgpv_rec.chr_id     := p_chr_id;
8319          l_rgpv_rec.dnz_chr_id := p_chr_id;
8320          l_rgpv_rec.cle_id     := NULL;
8321          l_rgpv_rec.rgp_type   := 'KRG';
8322 
8323          l_rulv_rec                           := NULL;
8324 
8325          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
8326          l_rulv_rec.dnz_chr_id                := p_chr_id;
8327          l_rulv_rec.rule_information1         := l_rebook_limit_date;
8328          l_rulv_rec.rule_information_category := 'LAREBL';
8329          l_rulv_rec.std_template_yn           := 'N';
8330          l_rulv_rec.warn_yn                   := 'N';
8331 
8332 
8333          create_rule_group_and_rule(
8334                                  x_return_status => x_return_status,
8335                                  x_msg_count     => x_msg_count,
8336                                  x_msg_data      => x_msg_data,
8337                                  p_rgp_id        => l_rgp_id,
8338                                  p_rgpv_rec      => l_rgpv_rec,
8339                                  p_rulv_rec      => l_rulv_rec,
8340                                  x_rgpv_rec      => x_rgpv_rec,
8341                                  x_rulv_rec      => x_rulv_rec
8342                                 );
8343 
8344          l_progress := '1.5';
8345 
8346          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8347              raise header_rule_failed;
8348          END IF;
8349 
8350          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
8351             l_rgp_id := x_rgpv_rec.id;
8352          END IF;
8353 
8354       END IF; -- rebook limit
8355 
8356       debug_message('------>Rule: LAREBL/LAREBL processed');
8357 
8358 /* Not used currently - 05/20/2002
8359 
8360       --Rule Group LATROP
8361 
8362       l_rgpv_rec            := NULL;
8363       l_rgp_id              := NULL;
8364       l_rgpv_rec.rgd_code   := 'LATROP';
8365       l_rgpv_rec.chr_id     := p_chr_id;
8366       l_rgpv_rec.dnz_chr_id := p_chr_id;
8367       l_rgpv_rec.cle_id     := NULL;
8368       l_rgpv_rec.rgp_type   := 'KRG';
8369 
8370       l_rulv_rec            := NULL;
8371       IF (p_header_rec.end_of_term_option IS NOT NULL) THEN
8372 
8373          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
8374          l_rulv_rec.dnz_chr_id                := p_chr_id;
8375          l_rulv_rec.rule_information1         := p_header_rec.end_of_term_option;
8376          l_rulv_rec.rule_information_category := 'LAEOTR';
8377          l_rulv_rec.std_template_yn           := 'N';
8378          l_rulv_rec.warn_yn                   := 'N';
8379 
8380       END IF;
8381 
8382       IF (p_header_rec.end_of_term_amount IS NOT NULL) THEN
8383          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
8384          l_rulv_rec.dnz_chr_id                := p_chr_id;
8385          l_rulv_rec.rule_information2         := TO_CHAR(p_header_rec.end_of_term_amount);
8386          l_rulv_rec.rule_information_category := 'LAEOTR';
8387          l_rulv_rec.std_template_yn           := 'N';
8388          l_rulv_rec.warn_yn                   := 'N';
8389 
8390       END IF;
8391 
8392       create_rule_group_and_rule(
8393                                  x_return_status => x_return_status,
8394                                  x_msg_count     => x_msg_count,
8395                                  x_msg_data      => x_msg_data,
8396                                  p_rgp_id        => l_rgp_id,
8397                                  p_rgpv_rec      => l_rgpv_rec,
8398                                  p_rulv_rec      => l_rulv_rec,
8399                                  x_rgpv_rec      => x_rgpv_rec,
8400                                  x_rulv_rec      => x_rulv_rec
8401                                 );
8402 
8403       l_progress := '1.7';
8404 
8405       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8406           raise header_rule_failed;
8407       END IF;
8408 
8409       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
8410          l_rgp_id := x_rgpv_rec.id;
8411       END IF;
8412 
8413       l_rulv_rec := NULL;
8414 
8415       IF (p_header_rec.mid_term_option IS NOT NULL) THEN
8416          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
8417          l_rulv_rec.dnz_chr_id                := p_chr_id;
8418          l_rulv_rec.rule_information1         := p_header_rec.mid_term_option;
8419          l_rulv_rec.rule_information_category := 'LAMITR';
8420          l_rulv_rec.std_template_yn           := 'N';
8421          l_rulv_rec.warn_yn                   := 'N';
8422       END IF;
8423 
8424       IF (p_header_rec.mid_term_amount IS NOT NULL) THEN
8425          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
8426          l_rulv_rec.dnz_chr_id                := p_chr_id;
8427          l_rulv_rec.rule_information2         := TO_CHAR(p_header_rec.mid_term_amount);
8428          l_rulv_rec.rule_information_category := 'LAMITR';
8429          l_rulv_rec.std_template_yn           := 'N';
8430          l_rulv_rec.warn_yn                   := 'N';
8431       END IF;
8432 
8433       create_rule_group_and_rule(
8434                                  x_return_status => x_return_status,
8435                                  x_msg_count     => x_msg_count,
8436                                  x_msg_data      => x_msg_data,
8437                                  p_rgp_id        => l_rgp_id,
8438                                  p_rgpv_rec      => l_rgpv_rec,
8439                                  p_rulv_rec      => l_rulv_rec,
8440                                  x_rgpv_rec      => x_rgpv_rec,
8441                                  x_rulv_rec      => x_rulv_rec
8442                                 );
8443 
8444       l_progress := '1.8';
8445 
8446       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8447           raise header_rule_failed;
8448       END IF;
8449 
8450       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
8451          l_rgp_id := x_rgpv_rec.id;
8452       END IF;
8453 
8454 --Not used currently - 05/20/2002
8455 */
8456 
8457       -- RUle Group LASDEP
8458       l_rgpv_rec            := NULL;
8459       l_rgp_id              := NULL;
8460       l_rgpv_rec.rgd_code   := 'LASDEP';
8461       l_rgpv_rec.chr_id     := p_chr_id;
8462       l_rgpv_rec.dnz_chr_id := p_chr_id;
8463       l_rgpv_rec.cle_id     := NULL;
8464       l_rgpv_rec.rgp_type   := 'KRG';
8465 
8466       l_rulv_rec            := NULL;
8467       --l_rulv_tbl            := NULL;
8468 
8469       l_security_deposit_hold_flag := p_header_rec.security_deposit_hold_flag;
8470       l_security_deposit_net_flag  := p_header_rec.security_deposit_net_flag;
8471       l_security_deposit_date      := get_canonical_date(p_header_rec.security_deposit_date);
8472 
8473       IF (l_security_deposit_hold_flag IS NULL
8474           OR
8475           l_security_deposit_net_flag IS NULL
8476           OR
8477           l_security_deposit_date IS NULL
8478           AND
8479           p_header_rec.template_number IS NOT NULL) THEN
8480 
8481          get_contract_rules(
8482                             x_return_status  => x_return_status,
8483                             x_msg_count      => x_msg_count,
8484                             x_msg_data       => x_msg_data,
8485                             p_chr_id         => p_template_id,
8486                             p_cle_id         => NULL,
8487                             p_rgd_code       => 'LASDEP',
8488                             p_rule_code      => 'LASDEP',
8489                             x_rulv_tbl       => l_rulv_tbl,
8490                             x_rule_count     => l_rule_count
8491                            );
8492 
8493          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8494             RAISE header_rule_failed;
8495          END IF;
8496 
8497          IF (l_rule_count > 0) THEN
8498             l_security_deposit_hold_flag := NVL(l_security_deposit_hold_flag,l_rulv_tbl(1).rule_information2);
8499             l_security_deposit_net_flag  := NVL(l_security_deposit_net_flag,l_rulv_tbl(1).rule_information4);
8500             l_security_deposit_date      := NVL(l_security_deposit_date,l_rulv_tbl(1).rule_information5);
8501          END IF;
8502       END IF;
8503 
8504       IF (l_security_deposit_hold_flag IS NOT NULL ) THEN
8505          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
8506          l_rulv_rec.dnz_chr_id                := p_chr_id;
8507          l_rulv_rec.rule_information2         := l_security_deposit_hold_flag;
8508          l_rulv_rec.rule_information_category := 'LASDEP';
8509          l_rulv_rec.std_template_yn           := 'N';
8510          l_rulv_rec.warn_yn                   := 'N';
8511       END IF;
8512 
8513       IF (l_security_deposit_net_flag IS NOT NULL) THEN
8514          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
8515          l_rulv_rec.dnz_chr_id                := p_chr_id;
8516          l_rulv_rec.rule_information4         := l_security_deposit_net_flag;
8517          l_rulv_rec.rule_information_category := 'LASDEP';
8518          l_rulv_rec.std_template_yn           := 'N';
8519          l_rulv_rec.warn_yn                   := 'N';
8520       END IF;
8521 
8522       IF (l_security_deposit_date IS NOT NULL) THEN
8523          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
8524          l_rulv_rec.dnz_chr_id                := p_chr_id;
8525          l_rulv_rec.rule_information5         := l_security_deposit_date;
8526          l_rulv_rec.rule_information_category := 'LASDEP';
8527          l_rulv_rec.std_template_yn           := 'N';
8528          l_rulv_rec.warn_yn                   := 'N';
8529       END IF;
8530 
8531       create_rule_group_and_rule(
8532                                  x_return_status => x_return_status,
8533                                  x_msg_count     => x_msg_count,
8534                                  x_msg_data      => x_msg_data,
8535                                  p_rgp_id        => l_rgp_id,
8536                                  p_rgpv_rec      => l_rgpv_rec,
8537                                  p_rulv_rec      => l_rulv_rec,
8538                                  x_rgpv_rec      => x_rgpv_rec,
8539                                  x_rulv_rec      => x_rulv_rec
8540                                 );
8541 
8542       l_progress := '1.9';
8543 
8544       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8545           raise header_rule_failed;
8546       END IF;
8547 
8548       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
8549          l_rgp_id := x_rgpv_rec.id;
8550       END IF;
8551 
8552       debug_message('------>Rule: LASDEP/LASDEP processed');
8553 
8554       -- Rule Group LARNOP
8555       l_rgpv_rec            := NULL;
8556       l_rgp_id              := NULL;
8557       l_rgpv_rec.rgd_code   := 'LARNOP';
8558       l_rgpv_rec.chr_id     := p_chr_id;
8559       l_rgpv_rec.dnz_chr_id := p_chr_id;
8560       l_rgpv_rec.cle_id     := NULL;
8561       l_rgpv_rec.rgp_type   := 'KRG';
8562 
8563       l_rulv_rec            := NULL;
8564 
8565       l_renewal_notice_days := p_header_rec.renewal_notice_days;
8566       IF (l_renewal_notice_days IS NULL
8567           AND
8568           p_header_rec.template_number IS NOT NULL) THEN
8569 
8570          get_contract_rules(
8571                             x_return_status  => x_return_status,
8572                             x_msg_count      => x_msg_count,
8573                             x_msg_data       => x_msg_data,
8574                             p_chr_id         => p_template_id,
8575                             p_cle_id         => NULL,
8576                             p_rgd_code       => 'LARNOP',
8577                             p_rule_code      => 'LAREND',
8578                             x_rulv_tbl       => l_rulv_tbl,
8579                             x_rule_count     => l_rule_count
8580                            );
8581 
8582          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8583             RAISE header_rule_failed;
8584          END IF;
8585 
8586          IF (l_rule_count > 0) THEN
8587             l_renewal_notice_days := l_rulv_tbl(1).rule_information1;
8588          END IF;
8589      END IF;
8590 
8591      IF (l_renewal_notice_days IS NOT NULL) THEN
8592          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
8593          l_rulv_rec.dnz_chr_id                := p_chr_id;
8594          l_rulv_rec.rule_information1         := l_renewal_notice_days;
8595          l_rulv_rec.rule_information_category := 'LAREND';
8596          l_rulv_rec.std_template_yn           := 'N';
8597          l_rulv_rec.warn_yn                   := 'N';
8598       END IF;
8599 
8600       create_rule_group_and_rule(
8601                                  x_return_status => x_return_status,
8602                                  x_msg_count     => x_msg_count,
8603                                  x_msg_data      => x_msg_data,
8604                                  p_rgp_id        => l_rgp_id,
8605                                  p_rgpv_rec      => l_rgpv_rec,
8606                                  p_rulv_rec      => l_rulv_rec,
8607                                  x_rgpv_rec      => x_rgpv_rec,
8608                                  x_rulv_rec      => x_rulv_rec
8609                                 );
8610 
8611       l_progress := '1.10';
8612 
8613       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8614           raise header_rule_failed;
8615       END IF;
8616 
8617       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
8618          l_rgp_id := x_rgpv_rec.id;
8619       END IF;
8620 
8621       debug_message('------>Rule: LARNOP/LAREND processed');
8622       l_rulv_rec := NULL;
8623 
8624       l_renewal_option := p_header_rec.renewal_option;
8625       l_renewal_amount := TO_CHAR(p_header_rec.renewal_amount);
8626 
8627       IF (l_renewal_option IS NULL
8628           OR
8629           l_renewal_amount IS NULL
8630           AND
8631           p_header_rec.template_number IS NOT NULL) THEN
8632 
8633          get_contract_rules(
8634                             x_return_status  => x_return_status,
8635                             x_msg_count      => x_msg_count,
8636                             x_msg_data       => x_msg_data,
8637                             p_chr_id         => p_template_id,
8638                             p_cle_id         => NULL,
8639                             p_rgd_code       => 'LARNOP',
8640                             p_rule_code      => 'LARNEW',
8641                             x_rulv_tbl       => l_rulv_tbl,
8642                             x_rule_count     => l_rule_count
8643                            );
8644 
8645          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8646             RAISE header_rule_failed;
8647          END IF;
8648 
8649          IF (l_rule_count > 0) THEN
8650             l_renewal_option := NVL(l_renewal_option,l_rulv_tbl(1).rule_information1);
8651             l_renewal_amount := NVL(l_renewal_amount,l_rulv_tbl(1).rule_information2);
8652          END IF;
8653       END IF;
8654 
8655       IF (l_renewal_option IS NOT NULL) THEN
8656          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
8657          l_rulv_rec.dnz_chr_id                := p_chr_id;
8658          l_rulv_rec.rule_information1         := l_renewal_option;
8659          l_rulv_rec.rule_information_category := 'LARNEW';
8660          l_rulv_rec.std_template_yn           := 'N';
8661          l_rulv_rec.warn_yn                   := 'N';
8662       END IF;
8663 
8664       IF (l_renewal_amount IS NOT NULL) THEN
8665          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
8666          l_rulv_rec.dnz_chr_id                := p_chr_id;
8667          l_rulv_rec.rule_information2         := l_renewal_amount;
8668          l_rulv_rec.rule_information_category := 'LARNEW';
8669          l_rulv_rec.std_template_yn           := 'N';
8670          l_rulv_rec.warn_yn                   := 'N';
8671       END IF;
8672 
8673       create_rule_group_and_rule(
8674                                  x_return_status => x_return_status,
8675                                  x_msg_count     => x_msg_count,
8676                                  x_msg_data      => x_msg_data,
8677                                  p_rgp_id        => l_rgp_id,
8678                                  p_rgpv_rec      => l_rgpv_rec,
8679                                  p_rulv_rec      => l_rulv_rec,
8680                                  x_rgpv_rec      => x_rgpv_rec,
8681                                  x_rulv_rec      => x_rulv_rec
8682                                 );
8683 
8684       l_progress := '1.11';
8685 
8686       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8687           raise header_rule_failed;
8688       END IF;
8689 
8690       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
8691          l_rgp_id := x_rgpv_rec.id;
8692       END IF;
8693 
8694       debug_message('------>Rule: LARNOP/LARNEW processed');
8695       -- Rule Group LALIGR
8696 
8697       l_rgpv_rec            := NULL;
8698       l_rgp_id              := NULL;
8699       l_rgpv_rec.rgd_code   := 'LALIGR';
8700       l_rgpv_rec.chr_id     := p_chr_id;
8701       l_rgpv_rec.dnz_chr_id := p_chr_id;
8702       l_rgpv_rec.cle_id     := NULL;
8703       l_rgpv_rec.rgp_type   := 'KRG';
8704 
8705       l_rulv_rec := NULL;
8706 
8707       l_late_interest_held_date := get_canonical_date(p_header_rec.late_interest_held_until_date);
8708 
8709       IF (l_late_interest_held_date IS NULL
8710           AND
8711           p_header_rec.template_number IS NOT NULL) THEN
8712          get_contract_rules(
8713                             x_return_status  => x_return_status,
8714                             x_msg_count      => x_msg_count,
8715                             x_msg_data       => x_msg_data,
8716                             p_chr_id         => p_template_id,
8717                             p_cle_id         => NULL,
8718                             p_rgd_code       => 'LALIGR',
8719                             p_rule_code      => 'LAHUDT',
8720                             x_rulv_tbl       => l_rulv_tbl,
8721                             x_rule_count     => l_rule_count
8722                            );
8723 
8724          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8725             RAISE header_rule_failed;
8726          END IF;
8727 
8728          IF (l_rule_count > 0) THEN
8729             l_late_interest_held_date := l_rulv_tbl(1).rule_information1;
8730          END IF;
8731       END IF;
8732 
8733       IF (l_late_interest_held_date IS NOT NULL) THEN
8734          l_rulv_rec                           := NULL;
8735          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
8736          l_rulv_rec.dnz_chr_id                := p_chr_id;
8737          l_rulv_rec.rule_information1         := l_late_interest_held_date;
8738          l_rulv_rec.rule_information_category := 'LAHUDT';
8739          l_rulv_rec.std_template_yn           := 'N';
8740          l_rulv_rec.warn_yn                   := 'N';
8741       END IF;
8742 
8743       create_rule_group_and_rule(
8744                                  x_return_status => x_return_status,
8745                                  x_msg_count     => x_msg_count,
8746                                  x_msg_data      => x_msg_data,
8747                                  p_rgp_id        => l_rgp_id,
8748                                  p_rgpv_rec      => l_rgpv_rec,
8749                                  p_rulv_rec      => l_rulv_rec,
8750                                  x_rgpv_rec      => x_rgpv_rec,
8751                                  x_rulv_rec      => x_rulv_rec
8752                                 );
8753 
8754       l_progress := '1.11';
8755 
8756       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8757           raise header_rule_failed;
8758       END IF;
8759 
8760      -- IF (l_rgp_id IS NULL) THEN
8761      IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- rviriyal bug #6310553
8762          l_rgp_id := x_rgpv_rec.id;
8763       END IF;
8764 
8765       debug_message('------>Rule: LALIGR/LAHUDT processed');
8766       l_rulv_rec := NULL;  -- dedey    added for bug 4637513
8767 
8768       l_late_interest_exempt_flag := p_header_rec.late_interest_exempt_flag;
8769 
8770       IF (l_late_interest_exempt_flag IS NULL
8771           AND
8772           p_header_rec.template_number IS NOT NULL) THEN
8773          get_contract_rules(
8774                             x_return_status  => x_return_status,
8775                             x_msg_count      => x_msg_count,
8776                             x_msg_data       => x_msg_data,
8777                             p_chr_id         => p_template_id,
8778                             p_cle_id         => NULL,
8779                             p_rgd_code       => 'LALIGR',
8780                             p_rule_code      => 'LALIEX',
8781                             x_rulv_tbl       => l_rulv_tbl,
8782                             x_rule_count     => l_rule_count
8783                            );
8784 
8785          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8786             RAISE header_rule_failed;
8787          END IF;
8788 
8789          IF (l_rule_count > 0) THEN
8790             l_late_interest_exempt_flag := l_rulv_tbl(1).rule_information1;
8791          END IF;
8792       END IF;
8793 
8794       IF (l_late_interest_exempt_flag IS NOT NULL) THEN
8795          l_rulv_rec                           := NULL;
8796          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
8797          l_rulv_rec.dnz_chr_id                := p_chr_id;
8798          l_rulv_rec.rule_information1         := l_late_interest_exempt_flag;
8799          l_rulv_rec.rule_information_category := 'LALIEX';
8800          l_rulv_rec.std_template_yn           := 'N';
8801          l_rulv_rec.warn_yn                   := 'N';
8802       END IF;
8803 
8804       create_rule_group_and_rule(
8805                                  x_return_status => x_return_status,
8806                                  x_msg_count     => x_msg_count,
8807                                  x_msg_data      => x_msg_data,
8808                                  p_rgp_id        => l_rgp_id,
8809                                  p_rgpv_rec      => l_rgpv_rec,
8810                                  p_rulv_rec      => l_rulv_rec,
8811                                  x_rgpv_rec      => x_rgpv_rec,
8812                                  x_rulv_rec      => x_rulv_rec
8813                                 );
8814 
8815       l_progress := '1.11';
8816 
8817       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8818           raise header_rule_failed;
8819       END IF;
8820 
8821       --IF (l_rgp_id IS NULL) THEN
8822      IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- rviriyal bug #6310553
8823          l_rgp_id := x_rgpv_rec.id;
8824       END IF;
8825 
8826       debug_message('------>Rule: LALIGR/LALIEX processed');
8827       l_rulv_rec := NULL;   -- dedey    added for bug 4637513
8828 
8829       l_late_int_product_code := p_header_rec.late_interest_product_code;
8830       l_late_int_product_id   := NULL;
8831 
8832       IF (l_late_int_product_code IS NULL
8833           AND
8834           p_header_rec.template_number IS NOT NULL) THEN
8835          get_contract_rules(
8836                             x_return_status  => x_return_status,
8837                             x_msg_count      => x_msg_count,
8838                             x_msg_data       => x_msg_data,
8839                             p_chr_id         => p_template_id,
8840                             p_cle_id         => NULL,
8841                             p_rgd_code       => 'LALIGR',
8842                             p_rule_code      => 'LALCIN',
8843                             x_rulv_tbl       => l_rulv_tbl,
8844                             x_rule_count     => l_rule_count
8845                            );
8846 
8847          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8848             RAISE header_rule_failed;
8849          END IF;
8850 
8851          IF (l_rule_count > 0) THEN
8852             l_late_int_product_id  := l_rulv_tbl(1).rule_information1;
8853          END IF;
8854       END IF;
8855 
8856       IF (l_late_int_product_code IS NOT NULL) THEN
8857          l_late_int_product_id := get_late_policy_id(
8858                                                         x_return_status    => x_return_status,
8859                                                         p_late_policy_code => l_late_int_product_code,
8860                                                         p_org_id           => p_header_rec.authoring_org_id,
8861                                                         p_late_policy_type => 'INT'
8862                                                        );
8863 
8864          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8865              okl_api.set_message(
8866                     G_APP_NAME,
8867                     G_INVALID_VALUE,
8868                     'CONTRACT_NUM',
8869                     p_header_rec.contract_number_old,
8870                     'COL_NAME',
8871                     'LATE_INTEREST_PRODUCT_CODE',
8872                     'COL_VALUE',
8873                     l_late_int_product_code
8874                    );
8875              raise header_rule_failed;
8876          END IF;
8877 
8878       END IF;
8879 
8880       IF (l_late_int_product_id IS NOT NULL) THEN
8881          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
8882          l_rulv_rec.dnz_chr_id                := p_chr_id;
8883          l_rulv_rec.rule_information1         := l_late_int_product_id;
8884          l_rulv_rec.rule_information_category := 'LALCIN';
8885          l_rulv_rec.std_template_yn           := 'N';
8886          l_rulv_rec.warn_yn                   := 'N';
8887       END IF;
8888 
8889       create_rule_group_and_rule(
8890                                  x_return_status => x_return_status,
8891                                  x_msg_count     => x_msg_count,
8892                                  x_msg_data      => x_msg_data,
8893                                  p_rgp_id        => l_rgp_id,
8894                                  p_rgpv_rec      => l_rgpv_rec,
8895                                  p_rulv_rec      => l_rulv_rec,
8896                                  x_rgpv_rec      => x_rgpv_rec,
8897                                  x_rulv_rec      => x_rulv_rec
8898                                 );
8899       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8900           raise header_rule_failed;
8901       END IF;
8902 
8903       --IF (l_rgp_id IS NULL) THEN
8904       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- rviriyal bug #6310553
8905          l_rgp_id := x_rgpv_rec.id;
8906       END IF;
8907 
8908       debug_message('------>Rule: LALIGR/LALCIN processed');
8909 
8910       -- Rule Group LALCGR
8911       l_rgpv_rec            := NULL;
8912       l_rgp_id              := NULL;
8913       l_rgpv_rec.rgd_code   := 'LALCGR';
8914       l_rgpv_rec.chr_id     := p_chr_id;
8915       l_rgpv_rec.dnz_chr_id := p_chr_id;
8916       l_rgpv_rec.cle_id     := NULL;
8917       l_rgpv_rec.rgp_type   := 'KRG';
8918 
8919       l_rulv_rec            := NULL;
8920 
8921       l_late_charge_held_until_date := get_canonical_date(p_header_rec.late_charge_held_until_date);
8922 
8923       IF (l_late_charge_held_until_date IS NULL
8924           AND
8925           p_header_rec.template_number IS NOT NULL) THEN
8926          get_contract_rules(
8927                             x_return_status  => x_return_status,
8928                             x_msg_count      => x_msg_count,
8929                             x_msg_data       => x_msg_data,
8930                             p_chr_id         => p_template_id,
8931                             p_cle_id         => NULL,
8932                             p_rgd_code       => 'LALCGR',
8933                             p_rule_code      => 'LAHUDT',
8934                             x_rulv_tbl       => l_rulv_tbl,
8935                             x_rule_count     => l_rule_count
8936                            );
8937 
8938          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8939             RAISE header_rule_failed;
8940          END IF;
8941 
8942          IF (l_rule_count > 0) THEN
8943             l_late_charge_held_until_date := l_rulv_tbl(1).rule_information1;
8944          END IF;
8945       END IF;
8946 
8947       IF (l_late_charge_held_until_date IS NOT NULL) THEN
8948          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
8949          l_rulv_rec.dnz_chr_id                := p_chr_id;
8950          l_rulv_rec.rule_information1         := l_late_charge_held_until_date;
8951          l_rulv_rec.rule_information_category := 'LAHUDT';
8952          l_rulv_rec.std_template_yn           := 'N';
8953          l_rulv_rec.warn_yn                   := 'N';
8954       END IF;
8955 
8956       create_rule_group_and_rule(
8957                                  x_return_status => x_return_status,
8958                                  x_msg_count     => x_msg_count,
8959                                  x_msg_data      => x_msg_data,
8960                                  p_rgp_id        => l_rgp_id,
8961                                  p_rgpv_rec      => l_rgpv_rec,
8962                                  p_rulv_rec      => l_rulv_rec,
8963                                  x_rgpv_rec      => x_rgpv_rec,
8964                                  x_rulv_rec      => x_rulv_rec
8965                                 );
8966 
8967       l_progress := '1.12';
8968 
8969       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8970           raise header_rule_failed;
8971       END IF;
8972 
8973       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- Bug 5085099
8974          l_rgp_id := x_rgpv_rec.id;
8975       END IF;
8976 
8977       debug_message('------>Rule: LALCGR/LAHUDT processed');
8978       l_rulv_rec := NULL;
8979       l_late_charge_product_code := p_header_rec.late_charge_product_code;
8980       l_late_charge_product_id   := NULL;
8981 
8982       IF (l_late_charge_product_code IS NULL
8983           AND
8984           p_header_rec.template_number IS NOT NULL) THEN
8985          get_contract_rules(
8986                             x_return_status  => x_return_status,
8987                             x_msg_count      => x_msg_count,
8988                             x_msg_data       => x_msg_data,
8989                             p_chr_id         => p_template_id,
8990                             p_cle_id         => NULL,
8991                             p_rgd_code       => 'LALCGR',
8992                             p_rule_code      => 'LALCPR',
8993                             x_rulv_tbl       => l_rulv_tbl,
8994                             x_rule_count     => l_rule_count
8995                            );
8996 
8997          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
8998             RAISE header_rule_failed;
8999          END IF;
9000 
9001          IF (l_rule_count > 0) THEN
9002             l_late_charge_product_id  := l_rulv_tbl(1).rule_information1;
9003          END IF;
9004       END IF;
9005 
9006       IF (l_late_charge_product_code IS NOT NULL) THEN
9007          l_late_charge_product_id := get_late_policy_id(
9008                                                         x_return_status    => x_return_status,
9009                                                         p_late_policy_code => l_late_charge_product_code,
9010                                                         p_org_id           => p_header_rec.authoring_org_id,
9011                                                         p_late_policy_type => 'CHG'
9012                                                        );
9013          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9014              okl_api.set_message(
9015                     G_APP_NAME,
9016                     G_INVALID_VALUE,
9017                     'CONTRACT_NUM',
9018                     p_header_rec.contract_number_old,
9019                     'COL_NAME',
9020                     'LATE_CHARGE_PRODUCT_CODE',
9021                     'COL_VALUE',
9022                     l_late_charge_product_code
9023                    );
9024              raise header_rule_failed;
9025          END IF;
9026 
9027       END IF;
9028 
9029       IF (l_late_charge_product_id IS NOT NULL) THEN
9030          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9031          l_rulv_rec.dnz_chr_id                := p_chr_id;
9032          l_rulv_rec.rule_information1         := l_late_charge_product_id;
9033          l_rulv_rec.rule_information_category := 'LALCPR';
9034          l_rulv_rec.std_template_yn           := 'N';
9035          l_rulv_rec.warn_yn                   := 'N';
9036       END IF;
9037 
9038       create_rule_group_and_rule(
9039                                  x_return_status => x_return_status,
9040                                  x_msg_count     => x_msg_count,
9041                                  x_msg_data      => x_msg_data,
9042                                  p_rgp_id        => l_rgp_id,
9043                                  p_rgpv_rec      => l_rgpv_rec,
9044                                  p_rulv_rec      => l_rulv_rec,
9045                                  x_rgpv_rec      => x_rgpv_rec,
9046                                  x_rulv_rec      => x_rulv_rec
9047                                 );
9048 
9049       l_progress := '1.13';
9050 
9051       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9052           raise header_rule_failed;
9053       END IF;
9054 
9055       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- Bug 5085099
9056          l_rgp_id := x_rgpv_rec.id;
9057       END IF;
9058 
9059       debug_message('------>Rule: LALCGR/LALCPR processed');
9060 
9061       l_rulv_rec := NULL;
9062 
9063       l_late_charge_exempt_flag := p_header_rec.late_charge_exempt_flag;
9064 
9065       IF (l_late_charge_exempt_flag IS NULL
9066           AND
9067           p_header_rec.template_number IS NOT NULL) THEN
9068          get_contract_rules(
9069                             x_return_status  => x_return_status,
9070                             x_msg_count      => x_msg_count,
9071                             x_msg_data       => x_msg_data,
9072                             p_chr_id         => p_template_id,
9073                             p_cle_id         => NULL,
9074                             p_rgd_code       => 'LALCGR',
9075                             p_rule_code      => 'LALCEX',
9076                             x_rulv_tbl       => l_rulv_tbl,
9077                             x_rule_count     => l_rule_count
9078                            );
9079 
9080          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9081             RAISE header_rule_failed;
9082          END IF;
9083 
9084          IF (l_rule_count > 0) THEN
9085             l_late_charge_exempt_flag  := l_rulv_tbl(1).rule_information1;
9086          END IF;
9087       END IF;
9088 
9089       IF (l_late_charge_exempt_flag IS NOT NULL) THEN
9090          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9091          l_rulv_rec.dnz_chr_id                := p_chr_id;
9092          l_rulv_rec.rule_information1         := l_late_charge_exempt_flag;
9093          l_rulv_rec.rule_information_category := 'LALCEX';
9094          l_rulv_rec.std_template_yn           := 'N';
9095          l_rulv_rec.warn_yn                   := 'N';
9096       END IF;
9097 
9098       create_rule_group_and_rule(
9099                                  x_return_status => x_return_status,
9100                                  x_msg_count     => x_msg_count,
9101                                  x_msg_data      => x_msg_data,
9102                                  p_rgp_id        => l_rgp_id,
9103                                  p_rgpv_rec      => l_rgpv_rec,
9104                                  p_rulv_rec      => l_rulv_rec,
9105                                  x_rgpv_rec      => x_rgpv_rec,
9106                                  x_rulv_rec      => x_rulv_rec
9107                                 );
9108 
9109       l_progress := '1.14';
9110 
9111       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9112           raise header_rule_failed;
9113       END IF;
9114 
9115       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
9116          l_rgp_id := x_rgpv_rec.id;
9117       END IF;
9118 
9119       debug_message('------>Rule: LALCGR/LALCEX processed');
9120 
9121       /* -- AKP: Commented as new variable rate processing occurs OKL.H onwards
9122       --Rule Group LAIIND
9123       l_rgpv_rec            := NULL;
9124       l_rgp_id              := NULL;
9125       l_rgpv_rec.rgd_code   := 'LAIIND';
9126       l_rgpv_rec.chr_id     := p_chr_id;
9127       l_rgpv_rec.dnz_chr_id := p_chr_id;
9128       l_rgpv_rec.cle_id     := NULL;
9129       l_rgpv_rec.rgp_type   := 'KRG';
9130 
9131       l_variable_rate := p_header_rec.variable_rate;
9132 
9133       IF (l_variable_rate IS NULL
9134           AND
9135           p_header_rec.template_number IS NOT NULL) THEN
9136          get_contract_rules(
9137                             x_return_status  => x_return_status,
9138                             x_msg_count      => x_msg_count,
9139                             x_msg_data       => x_msg_data,
9140                             p_chr_id         => p_template_id,
9141                             p_cle_id         => NULL,
9142                             p_rgd_code       => 'LAIIND',
9143                             p_rule_code      => 'LAINTP',
9144                             x_rulv_tbl       => l_rulv_tbl,
9145                             x_rule_count     => l_rule_count
9146                            );
9147 
9148          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9149             RAISE header_rule_failed;
9150          END IF;
9151 
9152          IF (l_rule_count > 0) THEN
9153             l_variable_rate  := l_rulv_tbl(1).rule_information1;
9154          END IF;
9155       END IF;
9156 
9157       IF (l_variable_rate IS NOT NULL) THEN
9158 
9159          l_rulv_rec                           := NULL;
9160          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9161          l_rulv_rec.dnz_chr_id                := p_chr_id;
9162          l_rulv_rec.rule_information1         := l_variable_rate;
9163          l_rulv_rec.rule_information_category := 'LAINTP';
9164          l_rulv_rec.std_template_yn           := 'N';
9165          l_rulv_rec.warn_yn                   := 'N';
9166 
9167          create_rule_group_and_rule(
9168                                     x_return_status => x_return_status,
9169                                     x_msg_count     => x_msg_count,
9170                                     x_msg_data      => x_msg_data,
9171                                     p_rgp_id        => l_rgp_id,
9172                                     p_rgpv_rec      => l_rgpv_rec,
9173                                     p_rulv_rec      => l_rulv_rec,
9174                                     x_rgpv_rec      => x_rgpv_rec,
9175                                     x_rulv_rec      => x_rulv_rec
9176                                    );
9177 
9178          l_progress := '1.141';
9179          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9180             raise header_rule_failed;
9181          END IF;
9182 
9183          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
9184             l_rgp_id := x_rgpv_rec.id; --store rgp_id
9185          END IF;
9186 
9187       END IF; -- variable_rate
9188 
9189       debug_message('------>Rule: LAIIND/LAINTP processed');
9190       l_rulv_rec := NULL;
9191 
9192       l_convert_type       := p_header_rec.convert_type;
9193       l_conversion_method  := p_header_rec.conversion_method;
9194       l_date_of_conversion := get_canonicaL_date(p_header_rec.date_of_conversion);
9195       l_convert_by_date    := get_canonicaL_date(p_header_rec.convert_by_date);
9196 
9197       IF (l_convert_type IS NULL
9198           OR
9199           l_conversion_method IS NULL
9200           OR
9201           l_date_of_conversion IS NULL
9202           OR
9203           l_convert_by_date IS NULL
9204           AND
9205           p_header_rec.template_number IS NOT NULL) THEN
9206          get_contract_rules(
9207                             x_return_status  => x_return_status,
9208                             x_msg_count      => x_msg_count,
9209                             x_msg_data       => x_msg_data,
9210                             p_chr_id         => p_template_id,
9211                             p_cle_id         => NULL,
9212                             p_rgd_code       => 'LAIIND',
9213                             p_rule_code      => 'LAICON',
9214                             x_rulv_tbl       => l_rulv_tbl,
9215                             x_rule_count     => l_rule_count
9216                            );
9217 
9218          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9219             RAISE header_rule_failed;
9220          END IF;
9221 
9222          IF (l_rule_count > 0) THEN
9223             l_convert_type       := NVL(l_convert_type,l_rulv_tbl(1).rule_information1);
9224             l_conversion_method  := NVL(l_conversion_method,l_rulv_tbl(1).rule_information2);
9225             l_date_of_conversion := NVL(l_date_of_conversion,l_rulv_tbl(1).rule_information3);
9226             l_convert_by_date    := NVL(l_convert_by_date,l_rulv_tbl(1).rule_information4);
9227          END IF;
9228       END IF;
9229 
9230       IF (l_convert_type IS NOT NULL) THEN
9231           l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9232           l_rulv_rec.dnz_chr_id                := p_chr_id;
9233           l_rulv_rec.rule_information1         := l_convert_type;
9234           l_rulv_rec.rule_information_category := 'LAICON';
9235           l_rulv_rec.std_template_yn           := 'N';
9236           l_rulv_rec.warn_yn                   := 'N';
9237       END IF;
9238 
9239       IF (l_conversion_method IS NOT NULL) THEN
9240           l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9241           l_rulv_rec.dnz_chr_id                := p_chr_id;
9242           l_rulv_rec.rule_information2         := l_conversion_method;
9243           l_rulv_rec.rule_information_category := 'LAICON';
9244           l_rulv_rec.std_template_yn           := 'N';
9245           l_rulv_rec.warn_yn                   := 'N';
9246       END IF;
9247 
9248       IF (l_date_of_conversion IS NOT NULL) THEN
9249           l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9250           l_rulv_rec.dnz_chr_id                := p_chr_id;
9251           l_rulv_rec.rule_information3         := l_date_of_conversion;
9252           l_rulv_rec.rule_information_category := 'LAICON';
9253           l_rulv_rec.std_template_yn           := 'N';
9254           l_rulv_rec.warn_yn                   := 'N';
9255       END IF;
9256 
9257       IF (l_convert_by_date 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_information4         := l_convert_by_date;
9261           l_rulv_rec.rule_information_category := 'LAICON';
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.15';
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: LAIIND/LAICON processed');
9288       l_rulv_rec := NULL;
9289 
9290       l_variable_method      := p_header_rec.variable_method;
9291       l_index_name           := p_header_rec.index_name;
9292       l_index_id             := NULL;
9293       l_base_rate            := p_header_rec.base_rate;
9294       l_adder                := p_header_rec.adder;
9295       l_minimum_rate         := p_header_rec.minimum_rate;
9296       l_maximum_rate         := p_header_rec.maximum_rate;
9297       l_tolerance            := p_header_rec.tolerance;
9298       l_adjustment_frequency := p_header_rec.adjustment_frequency;
9299 
9300       IF (l_variable_method IS NULL
9301           OR
9302           l_index_name IS NULL
9303           OR
9304           l_base_rate IS NULL
9305           OR
9306           l_adder IS NULL
9307           OR
9308           l_minimum_rate IS NULL
9309           OR
9310           l_maximum_rate IS NULL
9311           OR
9312           l_tolerance IS NULL
9313           OR
9314           l_adjustment_frequency IS NULL
9315           AND
9316           p_header_rec.template_number IS NOT NULL) THEN
9317          get_contract_rules(
9318                             x_return_status  => x_return_status,
9319                             x_msg_count      => x_msg_count,
9320                             x_msg_data       => x_msg_data,
9321                             p_chr_id         => p_template_id,
9322                             p_cle_id         => NULL,
9323                             p_rgd_code       => 'LAIIND',
9324                             p_rule_code      => 'LAIVAR',
9325                             x_rulv_tbl       => l_rulv_tbl,
9326                             x_rule_count     => l_rule_count
9327                            );
9328 
9329          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9330             RAISE header_rule_failed;
9331          END IF;
9332 
9333          IF (l_rule_count > 0) THEN
9334             l_variable_method      := NVL(l_variable_method,l_rulv_tbl(1).rule_information1);
9335             l_index_id             := NVL(l_index_id,l_rulv_tbl(1).rule_information2);
9336             l_base_rate            := NVL(l_base_rate,l_rulv_tbl(1).rule_information3);
9337             l_adder                := NVL(l_adder,l_rulv_tbl(1).rule_information4);
9338             l_minimum_rate         := NVL(l_minimum_rate,l_rulv_tbl(1).rule_information5);
9339             l_maximum_rate         := NVL(l_maximum_rate,l_rulv_tbl(1).rule_information6);
9340             l_tolerance            := NVL(l_tolerance,l_rulv_tbl(1).rule_information7);
9341             l_adjustment_frequency := NVL(l_adjustment_frequency,l_rulv_tbl(1).rule_information8);
9342          END IF;
9343       END IF;
9344 
9345       IF (l_variable_method IS NOT NULL) THEN
9346          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9347          l_rulv_rec.dnz_chr_id                := p_chr_id;
9348          l_rulv_rec.rule_information1         := l_variable_method;
9349          l_rulv_rec.rule_information_category := 'LAIVAR';
9350          l_rulv_rec.std_template_yn           := 'N';
9351          l_rulv_rec.warn_yn                   := 'N';
9352       END IF;
9353 
9354       IF (l_index_name IS NOT NULL) THEN
9355 
9356           get_index_id(
9357                        x_return_status => x_return_status,
9358                        p_index_name    => l_index_name,
9359                        x_index_id      => x_index_id
9360                       );
9361           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9362              okl_api.set_message(
9363                                  G_APP_NAME,
9364                                  G_INVALID_VALUE,
9365                                  'CONTRACT_NUM',
9366                                  p_header_rec.contract_number_old,
9367                                  'COL_NAME',
9368                                  'INDEX_NAME',
9369                                  'COL_VALUE',
9370                                  p_header_rec.index_name
9371                                 );
9372              raise header_rule_failed;
9373           END IF;
9374           l_index_id := x_index_id;
9375       END IF;
9376 
9377       IF (l_index_id IS NOT NULL) THEN
9378           l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9379           l_rulv_rec.dnz_chr_id                := p_chr_id;
9380           l_rulv_rec.rule_information2         := TO_CHAR(x_index_id);
9381           l_rulv_rec.rule_information_category := 'LAIVAR';
9382           l_rulv_rec.std_template_yn           := 'N';
9383           l_rulv_rec.warn_yn                   := 'N';
9384       END IF;
9385 
9386       IF (l_base_rate IS NOT NULL) THEN
9387           l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9388           l_rulv_rec.dnz_chr_id                := p_chr_id;
9389           l_rulv_rec.rule_information3         := l_base_rate;
9390           l_rulv_rec.rule_information_category := 'LAIVAR';
9391           l_rulv_rec.std_template_yn           := 'N';
9392           l_rulv_rec.warn_yn                   := 'N';
9393       END IF;
9394 
9395       IF (l_adder IS NOT NULL) THEN
9396           l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9397           l_rulv_rec.dnz_chr_id                := p_chr_id;
9398           l_rulv_rec.rule_information4         := l_adder;
9399           l_rulv_rec.rule_information_category := 'LAIVAR';
9400           l_rulv_rec.std_template_yn           := 'N';
9401           l_rulv_rec.warn_yn                   := 'N';
9402       END IF;
9403 
9404       IF (l_minimum_rate IS NOT NULL) THEN
9405           l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9406           l_rulv_rec.dnz_chr_id                := p_chr_id;
9407           l_rulv_rec.rule_information5         := l_minimum_rate;
9408           l_rulv_rec.rule_information_category := 'LAIVAR';
9409           l_rulv_rec.std_template_yn           := 'N';
9410           l_rulv_rec.warn_yn                   := 'N';
9411       END IF;
9412 
9413       IF (l_maximum_rate IS NOT NULL) THEN
9414           l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9415           l_rulv_rec.dnz_chr_id                := p_chr_id;
9416           l_rulv_rec.rule_information6         := l_maximum_rate;
9417           l_rulv_rec.rule_information_category := 'LAIVAR';
9418           l_rulv_rec.std_template_yn           := 'N';
9419           l_rulv_rec.warn_yn                   := 'N';
9420       END IF;
9421 
9422       IF (l_tolerance IS NOT NULL) THEN
9423           l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9424           l_rulv_rec.dnz_chr_id                := p_chr_id;
9425           l_rulv_rec.rule_information7         := l_tolerance;
9426           l_rulv_rec.rule_information_category := 'LAIVAR';
9427           l_rulv_rec.std_template_yn           := 'N';
9428           l_rulv_rec.warn_yn                   := 'N';
9429       END IF;
9430 
9431       IF (l_adjustment_frequency IS NOT NULL) THEN
9432           l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9433           l_rulv_rec.dnz_chr_id                := p_chr_id;
9434           l_rulv_rec.rule_information8         := l_adjustment_frequency;
9435           l_rulv_rec.rule_information_category := 'LAIVAR';
9436           l_rulv_rec.std_template_yn           := 'N';
9437           l_rulv_rec.warn_yn                   := 'N';
9438       END IF;
9439       create_rule_group_and_rule(
9440                                  x_return_status => x_return_status,
9441                                  x_msg_count     => x_msg_count,
9442                                  x_msg_data      => x_msg_data,
9443                                  p_rgp_id        => l_rgp_id,
9444                                  p_rgpv_rec      => l_rgpv_rec,
9445                                  p_rulv_rec      => l_rulv_rec,
9446                                  x_rgpv_rec      => x_rgpv_rec,
9447                                  x_rulv_rec      => x_rulv_rec
9448                                 );
9449 
9450       l_progress := '1.16';
9451       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9452            x_return_status := OKL_API.G_RET_STS_ERROR;
9453            raise header_rule_failed;
9454       END IF;
9455 
9456       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
9457          l_rgp_id := x_rgpv_rec.id;
9458       END IF;
9459 
9460       debug_message('------>Rule: LAIIND/LAIVAR processed');
9461 
9462       l_days_in_year          := p_header_rec.days_in_year;
9463       l_days_in_month         := p_header_rec.days_in_month;
9464       l_interest_method       := p_header_rec.interest_method;
9465       l_interest_start_date   := get_canonicaL_date(p_header_rec.interest_start_date);
9466       l_method_of_calculation := p_header_rec.method_of_calculation;
9467 
9468       l_rulv_rec := NULL;
9469 
9470       IF (l_days_in_year IS NULL
9471           OR
9472           l_days_in_month IS NULL
9473           OR
9474           l_interest_method IS NULL
9475           OR
9476           l_interest_start_date IS NULL
9477           OR
9478           l_method_of_calculation IS NULL
9479           AND
9480           p_header_rec.template_number IS NOT NULL) THEN
9481          get_contract_rules(
9482                             x_return_status  => x_return_status,
9483                             x_msg_count      => x_msg_count,
9484                             x_msg_data       => x_msg_data,
9485                             p_chr_id         => p_template_id,
9486                             p_cle_id         => NULL,
9487                             p_rgd_code       => 'LAIIND',
9488                             p_rule_code      => 'LAICLC',
9489                             x_rulv_tbl       => l_rulv_tbl,
9490                             x_rule_count     => l_rule_count
9491                            );
9492 
9493          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9494             RAISE header_rule_failed;
9495          END IF;
9496 
9497          IF (l_rule_count > 0) THEN
9498             l_days_in_year          := NVL(l_days_in_year,l_rulv_tbl(1).rule_information1);
9499             l_days_in_month         := NVL(l_days_in_month,l_rulv_tbl(1).rule_information2);
9500             l_interest_method       := NVL(l_interest_method,l_rulv_tbl(1).rule_information3);
9501             l_interest_start_date   := NVL(l_interest_start_date,l_rulv_tbl(1).rule_information4);
9502             l_method_of_calculation := NVL(l_method_of_calculation,l_rulv_tbl(1).rule_information5);
9503          END IF;
9504       END IF;
9505       IF (l_days_in_year IS NOT NULL) THEN
9506          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9507          l_rulv_rec.dnz_chr_id                := p_chr_id;
9508          l_rulv_rec.rule_information1         := l_days_in_year;
9509          l_rulv_rec.rule_information_category := 'LAICLC';
9510          l_rulv_rec.std_template_yn           := 'N';
9511          l_rulv_rec.warn_yn                   := 'N';
9512       END IF;
9513 
9514       IF (l_days_in_month IS NOT NULL) THEN
9515          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9516          l_rulv_rec.dnz_chr_id                := p_chr_id;
9517          l_rulv_rec.rule_information2         := l_days_in_month;
9518          l_rulv_rec.rule_information_category := 'LAICLC';
9519          l_rulv_rec.std_template_yn           := 'N';
9520          l_rulv_rec.warn_yn                   := 'N';
9521       END IF;
9522 
9523       IF (l_interest_method IS NOT NULL) THEN
9524          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9525          l_rulv_rec.dnz_chr_id                := p_chr_id;
9526          l_rulv_rec.rule_information3         := l_interest_method;
9527          l_rulv_rec.rule_information_category := 'LAICLC';
9528          l_rulv_rec.std_template_yn           := 'N';
9529          l_rulv_rec.warn_yn                   := 'N';
9530       END IF;
9531 
9532       IF (l_interest_start_date IS NOT NULL) THEN
9533          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9534          l_rulv_rec.dnz_chr_id                := p_chr_id;
9535          l_rulv_rec.rule_information4         := l_interest_start_date;
9536          l_rulv_rec.rule_information_category := 'LAICLC';
9537          l_rulv_rec.std_template_yn           := 'N';
9538          l_rulv_rec.warn_yn                   := 'N';
9539       END IF;
9540 
9541       IF (l_method_of_calculation IS NOT NULL) THEN
9542          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9543          l_rulv_rec.dnz_chr_id                := p_chr_id;
9544          l_rulv_rec.rule_information5         := l_method_of_calculation;
9545          l_rulv_rec.rule_information_category := 'LAICLC';
9546          l_rulv_rec.std_template_yn           := 'N';
9547          l_rulv_rec.warn_yn                   := 'N';
9548       END IF;
9549 
9550       create_rule_group_and_rule(
9551                                  x_return_status => x_return_status,
9552                                  x_msg_count     => x_msg_count,
9553                                  x_msg_data      => x_msg_data,
9554                                  p_rgp_id        => l_rgp_id,
9555                                  p_rgpv_rec      => l_rgpv_rec,
9556                                  p_rulv_rec      => l_rulv_rec,
9557                                  x_rgpv_rec      => x_rgpv_rec,
9558                                  x_rulv_rec      => x_rulv_rec
9559                                 );
9560 
9561       l_progress := '1.17';
9562       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9563            x_return_status := OKL_API.G_RET_STS_ERROR;
9564            raise header_rule_failed;
9565       END IF;
9566 
9567       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
9568          l_rgp_id := x_rgpv_rec.id;
9569       END IF;
9570 
9571       debug_message('------>Rule: LAIIND/LAICLC processed');
9572       l_rulv_rec := NULL;
9573 
9574       l_formula_name := p_header_rec.formula_name;
9575 
9576       IF (l_formula_name IS NULL
9577           AND
9578           p_header_rec.template_number IS NOT NULL) THEN
9579          get_contract_rules(
9580                             x_return_status  => x_return_status,
9581                             x_msg_count      => x_msg_count,
9582                             x_msg_data       => x_msg_data,
9583                             p_chr_id         => p_template_id,
9584                             p_cle_id         => NULL,
9585                             p_rgd_code       => 'LAIIND',
9586                             p_rule_code      => 'LAFORM',
9587                             x_rulv_tbl       => l_rulv_tbl,
9588                             x_rule_count     => l_rule_count
9589                            );
9590 
9591          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9592             RAISE header_rule_failed;
9593          END IF;
9594 
9595          IF (l_rule_count > 0) THEN
9596             l_formula_name  := l_rulv_tbl(1).rule_information1;
9597          END IF;
9598       END IF;
9599 
9600       IF (l_formula_name IS NOT NULL) THEN
9601          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
9602          l_rulv_rec.dnz_chr_id                := p_chr_id;
9603          l_rulv_rec.rule_information1         := l_formula_name;
9604          l_rulv_rec.rule_information_category := 'LAFORM';
9605          l_rulv_rec.std_template_yn           := 'N';
9606          l_rulv_rec.warn_yn                   := 'N';
9607       END IF;
9608 
9609       create_rule_group_and_rule(
9610                                  x_return_status => x_return_status,
9611                                  x_msg_count     => x_msg_count,
9612                                  x_msg_data      => x_msg_data,
9613                                  p_rgp_id        => l_rgp_id,
9614                                  p_rgpv_rec      => l_rgpv_rec,
9615                                  p_rulv_rec      => l_rulv_rec,
9616                                  x_rgpv_rec      => x_rgpv_rec,
9617                                  x_rulv_rec      => x_rulv_rec
9618                                 );
9619 
9620       l_progress := '1.18';
9621       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9622            x_return_status := OKL_API.G_RET_STS_ERROR;
9623            raise header_rule_failed;
9624       END IF;
9625 
9626       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
9627          l_rgp_id := x_rgpv_rec.id;
9628       END IF;
9629 
9630       debug_message('------>Rule: LAIIND/LAFORM processed');
9631       */ -- AKP: Commented because new vairable rate processing in OKL.H onwards
9632 
9633       l_rate_counter := 1;
9634       IF (p_header_rec.INT_RATE_EFFECTIVE_FROM_DATE IS NOT NULL) THEN
9635         l_k_rate_tbl(l_rate_counter).KHR_ID := p_chr_id;
9636         l_k_rate_tbl(l_rate_counter).PARAMETER_TYPE_CODE := 'ACTUAL';
9637         l_k_rate_tbl(l_rate_counter).EFFECTIVE_FROM_DATE := p_header_rec.INT_RATE_EFFECTIVE_FROM_DATE;
9638 
9639         l_no_data := TRUE;
9640         IF (p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9641           --get_template_rate(p_chr_id, 'ACTUAL', l_tmpl_rate_rec, l_no_data);
9642           okl_k_rate_params_pvt.get_rate_rec(
9643             p_chr_id => p_chr_id,
9644             p_parameter_type_code => 'ACTUAL',
9645             p_effective_from_date => NULL,
9646             x_krpv_rec => l_tmpl_rate_rec,
9647             x_no_data_found => l_no_data);
9648         END IF;
9649 
9650         l_k_rate_tbl(l_rate_counter).EFFECTIVE_TO_DATE := p_header_rec.INT_RATE_EFFECTIVE_TO_DATE;
9651         IF (p_header_rec.INT_RATE_EFFECTIVE_TO_DATE IS NULL AND NOT(l_no_data) AND
9652             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9653           l_k_rate_tbl(l_rate_counter).EFFECTIVE_TO_DATE :=
9654                        l_tmpl_rate_rec.EFFECTIVE_TO_DATE;
9655         END IF;
9656 
9657         debug_message('Var Rate 1.1');
9658         IF (p_header_rec.INDEX_NAME IS NOT NULL) THEN
9659           get_index_id(
9660                        x_return_status => x_return_status,
9661                        p_index_name    => p_header_rec.INDEX_NAME,
9662                        x_index_id      => l_index_id
9663                       );
9664           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
9665              okl_api.set_message(
9666                                  G_APP_NAME,
9667                                  G_INVALID_VALUE,
9668                                  'CONTRACT_NUM',
9669                                  p_header_rec.contract_number_old,
9670                                  'COL_NAME',
9671                                  'INDEX_NAME',
9672                                  'COL_VALUE',
9673                                  p_header_rec.index_name
9674                                 );
9675              raise header_rule_failed;
9676           END IF;
9677           l_k_rate_tbl(l_rate_counter).INTEREST_INDEX_ID := l_index_id;
9678         ELSE
9679           l_k_rate_tbl(l_rate_counter).INTEREST_INDEX_ID := NULL;
9680           IF (p_header_rec.INDEX_NAME IS NULL AND NOT(l_no_data) AND
9681               p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9682             l_k_rate_tbl(l_rate_counter).INTEREST_INDEX_ID :=
9683                          l_tmpl_rate_rec.INTEREST_INDEX_ID;
9684           END IF;
9685         END IF;
9686 
9687         l_k_rate_tbl(l_rate_counter).BASE_RATE := p_header_rec.BASE_RATE;
9688         IF (p_header_rec.BASE_RATE IS NULL AND NOT(l_no_data) AND
9689             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9690           l_k_rate_tbl(l_rate_counter).BASE_RATE :=
9691                        l_tmpl_rate_rec.BASE_RATE;
9692         END IF;
9693 
9694         l_k_rate_tbl(l_rate_counter).INTEREST_START_DATE := p_header_rec.INTEREST_START_DATE;
9695         IF (p_header_rec.INTEREST_START_DATE IS NULL AND NOT(l_no_data) AND
9696             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9697           l_k_rate_tbl(l_rate_counter).INTEREST_START_DATE :=
9698                        l_tmpl_rate_rec.INTEREST_START_DATE;
9699         END IF;
9700 
9701         l_k_rate_tbl(l_rate_counter).ADDER_RATE := p_header_rec.ADDER;
9702         IF (p_header_rec.ADDER IS NULL AND NOT(l_no_data) AND
9703             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9704           l_k_rate_tbl(l_rate_counter).ADDER_RATE :=
9705                        l_tmpl_rate_rec.ADDER_RATE;
9706         END IF;
9707 
9708         l_k_rate_tbl(l_rate_counter).MINIMUM_RATE := p_header_rec.MINIMUM_RATE;
9709         IF (p_header_rec.MINIMUM_RATE IS NULL AND NOT(l_no_data) AND
9710             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9711           l_k_rate_tbl(l_rate_counter).MINIMUM_RATE :=
9712                        l_tmpl_rate_rec.MINIMUM_RATE;
9713         END IF;
9714 
9715         l_k_rate_tbl(l_rate_counter).MAXIMUM_RATE := p_header_rec.MAXIMUM_RATE;
9716         IF (p_header_rec.MAXIMUM_RATE IS NULL AND NOT(l_no_data) AND
9717             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9718           l_k_rate_tbl(l_rate_counter).MAXIMUM_RATE :=
9719                        l_tmpl_rate_rec.MAXIMUM_RATE;
9720         END IF;
9721 
9722         l_k_rate_tbl(l_rate_counter).PRINCIPAL_BASIS_CODE := p_header_rec.INT_RATE_PRINC_BASIS_CODE;
9723         IF (p_header_rec.INT_RATE_PRINC_BASIS_CODE IS NULL) THEN
9724         IF (p_header_rec.INT_RATE_PRINC_BASIS_CODE IS NULL AND NOT(l_no_data) AND
9725             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9726           l_k_rate_tbl(l_rate_counter).PRINCIPAL_BASIS_CODE :=
9727                        l_tmpl_rate_rec.PRINCIPAL_BASIS_CODE;
9728         ELSE
9729           okl_k_rate_params_pvt.default_k_rate_params(
9730              p_api_version      => 1,
9731              p_init_msg_list    => OKC_API.G_FALSE,
9732              x_return_status    => x_return_status,
9733              x_msg_count        => x_msg_count,
9734              x_msg_data         => x_msg_data,
9735              p_deal_type        => G_DEAL_TYPE,
9736              p_rev_rec_method   => G_REVENUE_RECOGNITION_METHOD,
9737              p_int_calc_basis   => G_INTEREST_CALCULATION_BASIS,
9738              p_column_name      => 'PRINCIPAL_BASIS_CODE',
9739              p_krpv_rec         => l_k_rate_tbl(l_rate_counter));
9740         END IF;
9741         END IF;
9742 
9743         l_k_rate_tbl(l_rate_counter).DAYS_IN_A_MONTH_CODE := p_header_rec.DAYS_IN_MONTH;
9744         IF (p_header_rec.DAYS_IN_MONTH IS NULL) THEN
9745         IF (p_header_rec.DAYS_IN_MONTH IS NULL AND NOT(l_no_data) AND
9746             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9747           l_k_rate_tbl(l_rate_counter).DAYS_IN_A_MONTH_CODE :=
9748                        l_tmpl_rate_rec.DAYS_IN_A_MONTH_CODE;
9749         ELSE
9750           okl_k_rate_params_pvt.default_k_rate_params(
9751              p_api_version      => 1,
9752              p_init_msg_list    => OKC_API.G_FALSE,
9753              x_return_status    => x_return_status,
9754              x_msg_count        => x_msg_count,
9755              x_msg_data         => x_msg_data,
9756              p_deal_type        => G_DEAL_TYPE,
9757              p_rev_rec_method   => G_REVENUE_RECOGNITION_METHOD,
9758              p_int_calc_basis   => G_INTEREST_CALCULATION_BASIS,
9759              p_column_name      => 'DAYS_IN_A_MONTH_CODE',
9760              p_krpv_rec         => l_k_rate_tbl(l_rate_counter));
9761         END IF;
9762         END IF;
9763 
9764         l_k_rate_tbl(l_rate_counter).DAYS_IN_A_YEAR_CODE := p_header_rec.DAYS_IN_YEAR;
9765         IF (p_header_rec.DAYS_IN_YEAR IS NULL) THEN
9766         IF (p_header_rec.DAYS_IN_YEAR IS NULL AND NOT(l_no_data) AND
9767             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9768           l_k_rate_tbl(l_rate_counter).DAYS_IN_A_YEAR_CODE :=
9769                        l_tmpl_rate_rec.DAYS_IN_A_YEAR_CODE;
9770         ELSE
9771           okl_k_rate_params_pvt.default_k_rate_params(
9772              p_api_version      => 1,
9773              p_init_msg_list    => OKC_API.G_FALSE,
9774              x_return_status    => x_return_status,
9775              x_msg_count        => x_msg_count,
9776              x_msg_data         => x_msg_data,
9777              p_deal_type        => G_DEAL_TYPE,
9778              p_rev_rec_method   => G_REVENUE_RECOGNITION_METHOD,
9779              p_int_calc_basis   => G_INTEREST_CALCULATION_BASIS,
9780              p_column_name      => 'DAYS_IN_A_YEAR_CODE',
9781              p_krpv_rec         => l_k_rate_tbl(l_rate_counter));
9782         END IF;
9783         END IF;
9784 
9785         l_k_rate_tbl(l_rate_counter).INTEREST_BASIS_CODE := p_header_rec.INT_RATE_BASIS_CODE;
9786         IF (p_header_rec.INT_RATE_BASIS_CODE IS NULL) THEN
9787         IF (p_header_rec.INT_RATE_BASIS_CODE IS NULL AND NOT(l_no_data) AND
9788             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9789           l_k_rate_tbl(l_rate_counter).INTEREST_BASIS_CODE :=
9790                        l_tmpl_rate_rec.INTEREST_BASIS_CODE;
9791         ELSE
9792           okl_k_rate_params_pvt.default_k_rate_params(
9793              p_api_version      => 1,
9794              p_init_msg_list    => OKC_API.G_FALSE,
9795              x_return_status    => x_return_status,
9796              x_msg_count        => x_msg_count,
9797              x_msg_data         => x_msg_data,
9798              p_deal_type        => G_DEAL_TYPE,
9799              p_rev_rec_method   => G_REVENUE_RECOGNITION_METHOD,
9800              p_int_calc_basis   => G_INTEREST_CALCULATION_BASIS,
9801              p_column_name      => 'INTEREST_BASIS_CODE',
9802              p_krpv_rec         => l_k_rate_tbl(l_rate_counter));
9803         END IF;
9804         END IF;
9805 
9806         l_k_rate_tbl(l_rate_counter).RATE_DELAY_CODE := p_header_rec.INT_RATE_DELAY_CODE;
9807         IF (p_header_rec.INT_RATE_DELAY_CODE IS NULL AND NOT(l_no_data) AND
9808             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9809           l_k_rate_tbl(l_rate_counter).RATE_DELAY_CODE :=
9810                        l_tmpl_rate_rec.RATE_DELAY_CODE;
9811         END IF;
9812 
9813         l_k_rate_tbl(l_rate_counter).RATE_DELAY_FREQUENCY := p_header_rec.INT_RATE_DELAY_FREQ;
9814         IF (p_header_rec.INT_RATE_DELAY_FREQ IS NULL AND NOT(l_no_data) AND
9815             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9816           l_k_rate_tbl(l_rate_counter).RATE_DELAY_FREQUENCY :=
9817                        l_tmpl_rate_rec.RATE_DELAY_FREQUENCY;
9818         END IF;
9819 
9820         l_k_rate_tbl(l_rate_counter).COMPOUNDING_FREQUENCY_CODE := p_header_rec.INT_RATE_CMPND_FREQ_CODE;
9821         IF (p_header_rec.INT_RATE_CMPND_FREQ_CODE IS NULL AND NOT(l_no_data) AND
9822             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9823           l_k_rate_tbl(l_rate_counter).COMPOUNDING_FREQUENCY_CODE :=
9824                        l_tmpl_rate_rec.COMPOUNDING_FREQUENCY_CODE;
9825         END IF;
9826 
9827         debug_message('Var Rate 1.2');
9828         IF (p_header_rec.FORMULA_NAME IS NOT NULL) THEN
9829           l_formula_id := get_formula_id(p_header_rec.FORMULA_NAME,
9830                                          x_return_status);
9831           IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
9832              --AKP: Todo: set message: Invalid formula name 5024651
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                            'FORMULA_NAME',
9840                            'COL_VALUE',
9841                            p_header_rec.FORMULA_NAME
9842                           );
9843 
9844              RAISE header_rule_failed;
9845           END IF;
9846           l_k_rate_tbl(l_rate_counter).CALCULATION_FORMULA_ID := l_formula_id;
9847         ELSE
9848           l_k_rate_tbl(l_rate_counter).CALCULATION_FORMULA_ID := NULL;
9849           IF (p_header_rec.FORMULA_NAME IS NULL AND NOT(l_no_data) AND
9850               p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9851             l_k_rate_tbl(l_rate_counter).CALCULATION_FORMULA_ID :=
9852                          l_tmpl_rate_rec.CALCULATION_FORMULA_ID;
9853           END IF;
9854         END IF;
9855 
9856         debug_message('Var Rate 1.3');
9857         l_k_rate_tbl(l_rate_counter).CATCHUP_BASIS_CODE := p_header_rec.INT_RATE_CATCHUP_BASIS_CODE;
9858         IF (p_header_rec.INT_RATE_CATCHUP_BASIS_CODE IS NULL) THEN
9859         IF (p_header_rec.INT_RATE_CATCHUP_BASIS_CODE IS NULL AND NOT(l_no_data) AND
9860             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9861           l_k_rate_tbl(l_rate_counter).CATCHUP_BASIS_CODE :=
9862                        l_tmpl_rate_rec.CATCHUP_BASIS_CODE;
9863         ELSE
9864           okl_k_rate_params_pvt.default_k_rate_params(
9865              p_api_version      => 1,
9866              p_init_msg_list    => OKC_API.G_FALSE,
9867              x_return_status    => x_return_status,
9868              x_msg_count        => x_msg_count,
9869              x_msg_data         => x_msg_data,
9870              p_deal_type        => G_DEAL_TYPE,
9871              p_rev_rec_method   => G_REVENUE_RECOGNITION_METHOD,
9872              p_int_calc_basis   => G_INTEREST_CALCULATION_BASIS,
9873              p_column_name      => 'CATCHUP_BASIS_CODE',
9874              p_krpv_rec         => l_k_rate_tbl(l_rate_counter));
9875         END IF;
9876         END IF;
9877 
9878         l_k_rate_tbl(l_rate_counter).CATCHUP_START_DATE := p_header_rec.INT_RATE_CATCHUP_START_DATE;
9879         IF (p_header_rec.INT_RATE_CATCHUP_START_DATE IS NULL AND NOT(l_no_data) AND
9880             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9881           l_k_rate_tbl(l_rate_counter).CATCHUP_START_DATE :=
9882                        l_tmpl_rate_rec.CATCHUP_START_DATE;
9883         END IF;
9884 
9885         l_k_rate_tbl(l_rate_counter).CATCHUP_SETTLEMENT_CODE := p_header_rec.INT_RATE_CAT_STLMNT_CODE;
9886         IF (p_header_rec.INT_RATE_CAT_STLMNT_CODE IS NULL AND NOT(l_no_data) AND
9887             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9888           l_k_rate_tbl(l_rate_counter).CATCHUP_SETTLEMENT_CODE :=
9889                        l_tmpl_rate_rec.CATCHUP_SETTLEMENT_CODE;
9890         END IF;
9891 
9892         l_k_rate_tbl(l_rate_counter).RATE_CHANGE_START_DATE := p_header_rec.INT_RATE_CHANGE_START_DATE;
9893         IF (p_header_rec.INT_RATE_CHANGE_START_DATE IS NULL AND NOT(l_no_data) AND
9894             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9895           l_k_rate_tbl(l_rate_counter).RATE_CHANGE_START_DATE :=
9896                        l_tmpl_rate_rec.RATE_CHANGE_START_DATE;
9897         END IF;
9898 
9899         l_k_rate_tbl(l_rate_counter).RATE_CHANGE_FREQUENCY_CODE := p_header_rec.INT_RATE_CHANGE_FREQ_CODE;
9900         IF (p_header_rec.INT_RATE_CHANGE_FREQ_CODE IS NULL) THEN
9901         IF (p_header_rec.INT_RATE_CHANGE_FREQ_CODE IS NULL AND NOT(l_no_data) AND
9902             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9903           l_k_rate_tbl(l_rate_counter).RATE_CHANGE_FREQUENCY_CODE :=
9904                        l_tmpl_rate_rec.RATE_CHANGE_FREQUENCY_CODE;
9905         ELSE
9906           okl_k_rate_params_pvt.default_k_rate_params(
9907              p_api_version      => 1,
9908              p_init_msg_list    => OKC_API.G_FALSE,
9909              x_return_status    => x_return_status,
9910              x_msg_count        => x_msg_count,
9911              x_msg_data         => x_msg_data,
9912              p_deal_type        => G_DEAL_TYPE,
9913              p_rev_rec_method   => G_REVENUE_RECOGNITION_METHOD,
9914              p_int_calc_basis   => G_INTEREST_CALCULATION_BASIS,
9915              p_column_name      => 'RATE_CHANGE_FREQUENCY_CODE',
9916              p_krpv_rec         => l_k_rate_tbl(l_rate_counter));
9917         END IF;
9918         END IF;
9919 
9920         l_k_rate_tbl(l_rate_counter).RATE_CHANGE_VALUE := p_header_rec.INT_RATE_CHANGE_VALUE;
9921         IF (p_header_rec.INT_RATE_CHANGE_VALUE IS NULL AND NOT(l_no_data) AND
9922             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9923           l_k_rate_tbl(l_rate_counter).RATE_CHANGE_VALUE :=
9924                        l_tmpl_rate_rec.RATE_CHANGE_VALUE;
9925         END IF;
9926 
9927         l_k_rate_tbl(l_rate_counter).CATCHUP_FREQUENCY_CODE := p_header_rec.INT_RATE_CAT_FREQ_CODE;
9928         IF (p_header_rec.INT_RATE_CAT_FREQ_CODE IS NULL AND NOT(l_no_data) AND
9929             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9930           l_k_rate_tbl(l_rate_counter).CATCHUP_FREQUENCY_CODE :=
9931                        l_tmpl_rate_rec.CATCHUP_FREQUENCY_CODE;
9932         END IF;
9933 
9934         l_k_rate_tbl(l_rate_counter).CONVERSION_OPTION_CODE := p_header_rec.INT_RATE_CON_OPTION_CODE;
9935         IF (p_header_rec.INT_RATE_CON_OPTION_CODE IS NULL AND NOT(l_no_data) AND
9936             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9937           l_k_rate_tbl(l_rate_counter).CONVERSION_OPTION_CODE :=
9938                        l_tmpl_rate_rec.CONVERSION_OPTION_CODE;
9939         END IF;
9940 
9941         l_k_rate_tbl(l_rate_counter).NEXT_CONVERSION_DATE := p_header_rec.INT_RATE_NEXT_CON_DATE;
9942         IF (p_header_rec.INT_RATE_NEXT_CON_DATE IS NULL AND NOT(l_no_data) AND
9943             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9944           l_k_rate_tbl(l_rate_counter).NEXT_CONVERSION_DATE :=
9945                        l_tmpl_rate_rec.NEXT_CONVERSION_DATE;
9946         END IF;
9947 
9948         l_k_rate_tbl(l_rate_counter).CONVERSION_TYPE_CODE := p_header_rec.CONVERT_TYPE;
9949         IF (p_header_rec.CONVERT_TYPE IS NULL AND NOT(l_no_data) AND
9950             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
9951           l_k_rate_tbl(l_rate_counter).CONVERSION_TYPE_CODE :=
9952                        l_tmpl_rate_rec.CONVERSION_TYPE_CODE;
9953         END IF;
9954         l_rate_counter := l_rate_counter + 1;
9955 
9956       ELSE
9957         IF (p_header_rec.INT_RATE_EFFECTIVE_FROM_DATE IS NOT NULL OR
9958             p_header_rec.INT_RATE_EFFECTIVE_TO_DATE IS NOT NULL OR
9959             p_header_rec.INDEX_NAME IS NOT NULL OR
9960             p_header_rec.BASE_RATE IS NOT NULL OR
9961             p_header_rec.INTEREST_START_DATE IS NOT NULL OR
9962             p_header_rec.ADDER IS NOT NULL OR
9963             p_header_rec.MINIMUM_RATE IS NOT NULL OR
9964             p_header_rec.MAXIMUM_RATE IS NOT NULL OR
9965             p_header_rec.INT_RATE_PRINC_BASIS_CODE IS NOT NULL OR
9966             p_header_rec.DAYS_IN_YEAR IS NOT NULL OR
9967             p_header_rec.DAYS_IN_MONTH IS NOT NULL OR
9968             p_header_rec.INT_RATE_BASIS_CODE IS NOT NULL OR
9969             p_header_rec.INT_RATE_DELAY_CODE IS NOT NULL OR
9970             p_header_rec.INT_RATE_DELAY_FREQ IS NOT NULL OR
9971             p_header_rec.INT_RATE_CMPND_FREQ_CODE IS NOT NULL OR
9972             p_header_rec.FORMULA_NAME IS NOT NULL OR
9973             p_header_rec.INT_RATE_CATCHUP_BASIS_CODE IS NOT NULL OR
9974             p_header_rec.INT_RATE_CATCHUP_START_DATE IS NOT NULL OR
9975             p_header_rec.INT_RATE_CAT_STLMNT_CODE IS NOT NULL OR
9976             p_header_rec.INT_RATE_CHANGE_START_DATE IS NOT NULL OR
9977             p_header_rec.INT_RATE_CHANGE_FREQ_CODE IS NOT NULL OR
9978             p_header_rec.INT_RATE_CHANGE_VALUE IS NOT NULL OR
9979             p_header_rec.INT_RATE_CAT_FREQ_CODE IS NOT NULL OR
9980             p_header_rec.INT_RATE_CON_OPTION_CODE IS NOT NULL OR
9981             p_header_rec.INT_RATE_NEXT_CON_DATE IS NOT NULL OR
9982             p_header_rec.CONVERT_TYPE IS NOT NULL
9983         )
9984         THEN
9985            -- Set error. Effective from date is missing
9986           OKC_API.set_message(p_app_name => G_APP_NAME,
9987                               p_msg_name => G_REQUIRED_VALUE,
9988                               p_token1 => G_COL_NAME_TOKEN,
9989                               p_token1_value => 'Effective_From_Date');
9990           x_return_status := OKC_API.G_RET_STS_ERROR;
9991           RAISE header_rule_failed;
9992         END IF;
9993 
9994       END IF;
9995 
9996       IF (p_header_rec.INT_RATE_EFFECTIVE_FROM_DATE IS NOT NULL) AND
9997            (p_header_rec.INT_RATE_EFFECTIVE_TO_DATE IS NOT NULL OR
9998             p_header_rec.INT_RATE_CON_INDEX_NAME IS NOT NULL OR
9999             p_header_rec.INT_RATE_CON_BASE_RATE IS NOT NULL OR
10000             p_header_rec.INT_RATE_CON_START_DATE IS NOT NULL OR
10001             p_header_rec.INT_RATE_CON_ADDER_RATE IS NOT NULL OR
10002             p_header_rec.INT_RATE_CON_MINIMUM_RATE IS NOT NULL OR
10003             p_header_rec.INT_RATE_CON_MAXIMUM_RATE IS NOT NULL OR
10004             p_header_rec.INT_RATE_CON_PRC_BAS_CODE IS NOT NULL OR
10005             p_header_rec.INT_RATE_CON_DAY_YER_CODE IS NOT NULL OR
10006             p_header_rec.INT_RATE_CON_DAY_MTH_CODE IS NOT NULL OR
10007             p_header_rec.INT_RATE_CON_INT_BAS_CODE IS NOT NULL OR
10008             p_header_rec.INT_RATE_CON_RATE_DELAY_CODE IS NOT NULL OR
10009             p_header_rec.INT_RATE_CON_RATE_DELAY_FREQ IS NOT NULL OR
10010             p_header_rec.INT_RATE_CON_CMPND_FREQ_CODE IS NOT NULL OR
10011             p_header_rec.INT_RATE_CON_FORMULA_NAME IS NOT NULL OR
10012             p_header_rec.INT_RATE_CON_CAT_BAS_CODE IS NOT NULL OR
10013             p_header_rec.INT_RATE_CON_CAT_START_DATE IS NOT NULL OR
10014             p_header_rec.INT_RATE_CON_CAT_STLMNT_CODE IS NOT NULL OR
10015             p_header_rec.INT_RATE_CON_CHG_START_DATE IS NOT NULL OR
10016             p_header_rec.INT_RATE_CON_CHG_FREQ_CODE IS NOT NULL OR
10017             p_header_rec.INT_RATE_CON_CHG_VALUE IS NOT NULL OR
10018             p_header_rec.INT_RATE_CON_CAT_FREQ_CODE IS NOT NULL ) THEN
10019         l_k_rate_tbl(l_rate_counter).KHR_ID := p_chr_id;
10020         l_k_rate_tbl(l_rate_counter).PARAMETER_TYPE_CODE := 'CONVERSION';
10021         l_k_rate_tbl(l_rate_counter).EFFECTIVE_FROM_DATE := p_header_rec.INT_RATE_EFFECTIVE_FROM_DATE;
10022 
10023         l_no_data := TRUE;
10024         IF (p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10025           --get_template_rate(p_chr_id, 'CONVERSION', l_tmpl_rate_rec, l_no_data);
10026           okl_k_rate_params_pvt.get_rate_rec(
10027             p_chr_id => p_chr_id,
10028             p_parameter_type_code => 'CONVERSION',
10029             p_effective_from_date => NULL,
10030             x_krpv_rec => l_tmpl_rate_rec,
10031             x_no_data_found => l_no_data);
10032         END IF;
10033 
10034         l_k_rate_tbl(l_rate_counter).EFFECTIVE_TO_DATE := p_header_rec.INT_RATE_EFFECTIVE_TO_DATE;
10035         IF (p_header_rec.INT_RATE_EFFECTIVE_TO_DATE IS NULL AND NOT(l_no_data) AND
10036             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10037           l_k_rate_tbl(l_rate_counter).EFFECTIVE_TO_DATE :=
10038                        l_tmpl_rate_rec.EFFECTIVE_TO_DATE;
10039         END IF;
10040 
10041         IF (p_header_rec.INT_RATE_CON_INDEX_NAME IS NOT NULL) THEN
10042           get_index_id(
10043                        x_return_status => x_return_status,
10044                        p_index_name    => p_header_rec.INT_RATE_CON_INDEX_NAME,
10045                        x_index_id      => x_index_id
10046                       );
10047           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10048              okl_api.set_message(
10049                                  G_APP_NAME,
10050                                  G_INVALID_VALUE,
10051                                  'CONTRACT_NUM',
10052                                  p_header_rec.contract_number_old,
10053                                  'COL_NAME',
10054                                  'INDEX_NAME_CON',
10055                                  'COL_VALUE',
10056                                  p_header_rec.int_rate_con_index_name
10057                                 );
10058              raise header_rule_failed;
10059           END IF;
10060           l_k_rate_tbl(l_rate_counter).INTEREST_INDEX_ID := l_index_id;
10061         ELSE
10062           l_k_rate_tbl(l_rate_counter).INTEREST_INDEX_ID := NULL;
10063           IF (p_header_rec.INT_RATE_CON_INDEX_NAME IS NULL AND NOT(l_no_data) AND
10064               p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10065             l_k_rate_tbl(l_rate_counter).INTEREST_INDEX_ID :=
10066                          l_tmpl_rate_rec.INTEREST_INDEX_ID;
10067           END IF;
10068         END IF;
10069 
10070         l_k_rate_tbl(l_rate_counter).BASE_RATE := p_header_rec.INT_RATE_CON_BASE_RATE;
10071         IF (p_header_rec.INT_RATE_CON_BASE_RATE IS NULL AND NOT(l_no_data) AND
10072             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10073           l_k_rate_tbl(l_rate_counter).BASE_RATE :=
10074                        l_tmpl_rate_rec.BASE_RATE;
10075         END IF;
10076 
10077         l_k_rate_tbl(l_rate_counter).INTEREST_START_DATE := p_header_rec.INT_RATE_CON_START_DATE;
10078         IF (p_header_rec.INT_RATE_CON_START_DATE IS NULL AND NOT(l_no_data) AND
10079             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10080           l_k_rate_tbl(l_rate_counter).INTEREST_START_DATE :=
10081                        l_tmpl_rate_rec.INTEREST_START_DATE;
10082         END IF;
10083 
10084         l_k_rate_tbl(l_rate_counter).ADDER_RATE := p_header_rec.INT_RATE_CON_ADDER_RATE;
10085         IF (p_header_rec.INT_RATE_CON_ADDER_RATE IS NULL AND NOT(l_no_data) AND
10086             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10087           l_k_rate_tbl(l_rate_counter).ADDER_RATE :=
10088                        l_tmpl_rate_rec.ADDER_RATE;
10089         END IF;
10090 
10091         l_k_rate_tbl(l_rate_counter).MAXIMUM_RATE := p_header_rec.INT_RATE_CON_MAXIMUM_RATE;
10092         IF (p_header_rec.INT_RATE_CON_MAXIMUM_RATE IS NULL AND NOT(l_no_data) AND
10093             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10094           l_k_rate_tbl(l_rate_counter).MAXIMUM_RATE :=
10095                        l_tmpl_rate_rec.MAXIMUM_RATE;
10096         END IF;
10097 
10098         l_k_rate_tbl(l_rate_counter).MINIMUM_RATE := p_header_rec.INT_RATE_CON_MINIMUM_RATE;
10099         IF (p_header_rec.INT_RATE_CON_MINIMUM_RATE IS NULL AND NOT(l_no_data) AND
10100             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10101           l_k_rate_tbl(l_rate_counter).MINIMUM_RATE :=
10102                        l_tmpl_rate_rec.MINIMUM_RATE;
10103         END IF;
10104 
10105         l_k_rate_tbl(l_rate_counter).PRINCIPAL_BASIS_CODE := p_header_rec.INT_RATE_CON_PRC_BAS_CODE;
10106         IF (p_header_rec.INT_RATE_CON_PRC_BAS_CODE IS NULL) THEN
10107         IF (p_header_rec.INT_RATE_CON_PRC_BAS_CODE IS NULL AND NOT(l_no_data) AND
10108             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10109           l_k_rate_tbl(l_rate_counter).PRINCIPAL_BASIS_CODE :=
10110                        l_tmpl_rate_rec.PRINCIPAL_BASIS_CODE;
10111         ELSE
10112           okl_k_rate_params_pvt.default_k_rate_params(
10113              p_api_version      => 1,
10114              p_init_msg_list    => OKC_API.G_FALSE,
10115              x_return_status    => x_return_status,
10116              x_msg_count        => x_msg_count,
10117              x_msg_data         => x_msg_data,
10118              p_deal_type        => G_DEAL_TYPE,
10119              p_rev_rec_method   => G_REVENUE_RECOGNITION_METHOD,
10120              p_int_calc_basis   => G_INTEREST_CALCULATION_BASIS,
10121              p_column_name      => 'PRINCIPAL_BASIS_CODE',
10122              p_krpv_rec         => l_k_rate_tbl(l_rate_counter));
10123         END IF;
10124         END IF;
10125 
10126         l_k_rate_tbl(l_rate_counter).DAYS_IN_A_MONTH_CODE := p_header_rec.INT_RATE_CON_DAY_MTH_CODE;
10127         IF (p_header_rec.INT_RATE_CON_DAY_MTH_CODE IS NULL) THEN
10128         IF (p_header_rec.INT_RATE_CON_DAY_MTH_CODE IS NULL AND NOT(l_no_data) AND
10129             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10130           l_k_rate_tbl(l_rate_counter).DAYS_IN_A_MONTH_CODE :=
10131                        l_tmpl_rate_rec.DAYS_IN_A_MONTH_CODE;
10132         ELSE
10133           okl_k_rate_params_pvt.default_k_rate_params(
10134              p_api_version      => 1,
10135              p_init_msg_list    => OKC_API.G_FALSE,
10136              x_return_status    => x_return_status,
10137              x_msg_count        => x_msg_count,
10138              x_msg_data         => x_msg_data,
10139              p_deal_type        => G_DEAL_TYPE,
10140              p_rev_rec_method   => G_REVENUE_RECOGNITION_METHOD,
10141              p_int_calc_basis   => G_INTEREST_CALCULATION_BASIS,
10142              p_column_name      => 'DAYS_IN_A_MONTH_CODE',
10143              p_krpv_rec         => l_k_rate_tbl(l_rate_counter));
10144         END IF;
10145         END IF;
10146 
10147         l_k_rate_tbl(l_rate_counter).DAYS_IN_A_YEAR_CODE := p_header_rec.INT_RATE_CON_DAY_YER_CODE;
10148         IF (p_header_rec.INT_RATE_CON_DAY_YER_CODE IS NULL) THEN
10149         IF (p_header_rec.INT_RATE_CON_DAY_YER_CODE IS NULL AND NOT(l_no_data) AND
10150             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10151           l_k_rate_tbl(l_rate_counter).DAYS_IN_A_YEAR_CODE :=
10152                        l_tmpl_rate_rec.DAYS_IN_A_YEAR_CODE;
10153         ELSE
10154           okl_k_rate_params_pvt.default_k_rate_params(
10155              p_api_version      => 1,
10156              p_init_msg_list    => OKC_API.G_FALSE,
10157              x_return_status    => x_return_status,
10158              x_msg_count        => x_msg_count,
10159              x_msg_data         => x_msg_data,
10160              p_deal_type        => G_DEAL_TYPE,
10161              p_rev_rec_method   => G_REVENUE_RECOGNITION_METHOD,
10162              p_int_calc_basis   => G_INTEREST_CALCULATION_BASIS,
10163              p_column_name      => 'DAYS_IN_A_YEAR_CODE',
10164              p_krpv_rec         => l_k_rate_tbl(l_rate_counter));
10165         END IF;
10166         END IF;
10167 
10168         l_k_rate_tbl(l_rate_counter).INTEREST_BASIS_CODE := p_header_rec.INT_RATE_CON_INT_BAS_CODE;
10169         IF (p_header_rec.INT_RATE_CON_INT_BAS_CODE IS NULL) THEN
10170         IF (p_header_rec.INT_RATE_CON_INT_BAS_CODE IS NULL AND NOT(l_no_data) AND
10171             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10172           l_k_rate_tbl(l_rate_counter).INTEREST_BASIS_CODE :=
10173                        l_tmpl_rate_rec.INTEREST_BASIS_CODE;
10174         ELSE
10175           okl_k_rate_params_pvt.default_k_rate_params(
10176              p_api_version      => 1,
10177              p_init_msg_list    => OKC_API.G_FALSE,
10178              x_return_status    => x_return_status,
10179              x_msg_count        => x_msg_count,
10180              x_msg_data         => x_msg_data,
10181              p_deal_type        => G_DEAL_TYPE,
10182              p_rev_rec_method   => G_REVENUE_RECOGNITION_METHOD,
10183              p_int_calc_basis   => G_INTEREST_CALCULATION_BASIS,
10184              p_column_name      => 'INTEREST_BASIS_CODE',
10185              p_krpv_rec         => l_k_rate_tbl(l_rate_counter));
10186         END IF;
10187         END IF;
10188 
10189         l_k_rate_tbl(l_rate_counter).RATE_DELAY_CODE := p_header_rec.INT_RATE_CON_RATE_DELAY_CODE;
10190         IF (p_header_rec.INT_RATE_CON_RATE_DELAY_CODE IS NULL AND NOT(l_no_data) AND
10191             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10192           l_k_rate_tbl(l_rate_counter).RATE_DELAY_CODE :=
10193                        l_tmpl_rate_rec.RATE_DELAY_CODE;
10194         END IF;
10195 
10196         l_k_rate_tbl(l_rate_counter).RATE_DELAY_FREQUENCY := p_header_rec.INT_RATE_CON_RATE_DELAY_FREQ;
10197         IF (p_header_rec.INT_RATE_CON_RATE_DELAY_FREQ IS NULL AND NOT(l_no_data) AND
10198             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10199           l_k_rate_tbl(l_rate_counter).RATE_DELAY_FREQUENCY :=
10200                        l_tmpl_rate_rec.RATE_DELAY_FREQUENCY;
10201         END IF;
10202 
10203         l_k_rate_tbl(l_rate_counter).COMPOUNDING_FREQUENCY_CODE := p_header_rec.INT_RATE_CON_CMPND_FREQ_CODE;
10204         IF (p_header_rec.INT_RATE_CON_CMPND_FREQ_CODE IS NULL AND NOT(l_no_data) AND
10205             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10206           l_k_rate_tbl(l_rate_counter).COMPOUNDING_FREQUENCY_CODE :=
10207                        l_tmpl_rate_rec.COMPOUNDING_FREQUENCY_CODE;
10208         END IF;
10209 
10210         IF (p_header_rec.INT_RATE_CON_FORMULA_NAME IS NOT NULL) THEN
10211           l_formula_id := get_formula_id(p_header_rec.INT_RATE_CON_FORMULA_NAME,
10212                                          x_return_status);
10213           IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
10214              --AKP: Todo: set message: Invalid formula name 5024651
10215              okl_api.set_message(
10216                            G_APP_NAME,
10217                            G_INVALID_VALUE,
10218                            'CONTRACT_NUM',
10219                            p_header_rec.contract_number_old,
10220                            'COL_NAME',
10221                            'FORMULA_NAME',
10222                            'COL_VALUE',
10223                            p_header_rec.INT_RATE_CON_FORMULA_NAME
10224                           );
10225 
10226              RAISE header_rule_failed;
10227           END IF;
10228           l_k_rate_tbl(l_rate_counter).CALCULATION_FORMULA_ID := l_formula_id;
10229         ELSE
10230           l_k_rate_tbl(l_rate_counter).CALCULATION_FORMULA_ID := NULL;
10231           IF (p_header_rec.INT_RATE_CON_FORMULA_NAME IS NULL AND NOT(l_no_data) AND
10232               p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10233             l_k_rate_tbl(l_rate_counter).CALCULATION_FORMULA_ID :=
10234                          l_tmpl_rate_rec.CALCULATION_FORMULA_ID;
10235           END IF;
10236         END IF;
10237 
10238 
10239         l_k_rate_tbl(l_rate_counter).CATCHUP_BASIS_CODE := p_header_rec.INT_RATE_CON_CAT_BAS_CODE;
10240         IF (p_header_rec.INT_RATE_CON_CAT_BAS_CODE IS NULL) THEN
10241         IF (p_header_rec.INT_RATE_CON_CAT_BAS_CODE 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).CATCHUP_BASIS_CODE :=
10244                        l_tmpl_rate_rec.CATCHUP_BASIS_CODE;
10245         ELSE
10246           okl_k_rate_params_pvt.default_k_rate_params(
10247              p_api_version      => 1,
10248              p_init_msg_list    => OKC_API.G_FALSE,
10249              x_return_status    => x_return_status,
10250              x_msg_count        => x_msg_count,
10251              x_msg_data         => x_msg_data,
10252              p_deal_type        => G_DEAL_TYPE,
10253              p_rev_rec_method   => G_REVENUE_RECOGNITION_METHOD,
10254              p_int_calc_basis   => G_INTEREST_CALCULATION_BASIS,
10255              p_column_name      => 'CATCHUP_BASIS_CODE',
10256              p_krpv_rec         => l_k_rate_tbl(l_rate_counter));
10257         END IF;
10258         END IF;
10259 
10260         l_k_rate_tbl(l_rate_counter).CATCHUP_START_DATE := p_header_rec.INT_RATE_CON_CAT_START_DATE;
10261         IF (p_header_rec.INT_RATE_CON_CAT_START_DATE IS NULL AND NOT(l_no_data) AND
10262             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10263           l_k_rate_tbl(l_rate_counter).CATCHUP_START_DATE :=
10264                        l_tmpl_rate_rec.CATCHUP_START_DATE;
10265         END IF;
10266 
10267         l_k_rate_tbl(l_rate_counter).CATCHUP_SETTLEMENT_CODE := p_header_rec.INT_RATE_CON_CAT_STLMNT_CODE;
10268         IF (p_header_rec.INT_RATE_CON_CAT_STLMNT_CODE IS NULL AND NOT(l_no_data) AND
10269             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10270           l_k_rate_tbl(l_rate_counter).CATCHUP_SETTLEMENT_CODE :=
10271                        l_tmpl_rate_rec.CATCHUP_SETTLEMENT_CODE;
10272         END IF;
10273 
10274         l_k_rate_tbl(l_rate_counter).RATE_CHANGE_START_DATE := p_header_rec.INT_RATE_CON_CHG_START_DATE;
10275         IF (p_header_rec.INT_RATE_CON_CHG_START_DATE IS NULL AND NOT(l_no_data) AND
10276             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10277           l_k_rate_tbl(l_rate_counter).RATE_CHANGE_START_DATE :=
10278                        l_tmpl_rate_rec.RATE_CHANGE_START_DATE;
10279         END IF;
10280 
10281         l_k_rate_tbl(l_rate_counter).RATE_CHANGE_FREQUENCY_CODE := p_header_rec.INT_RATE_CON_CHG_FREQ_CODE;
10282         IF (p_header_rec.INT_RATE_CON_CHG_FREQ_CODE IS NULL) THEN
10283         IF (p_header_rec.INT_RATE_CON_CHG_FREQ_CODE IS NULL AND NOT(l_no_data) AND
10284             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10285           l_k_rate_tbl(l_rate_counter).RATE_CHANGE_FREQUENCY_CODE :=
10286                        l_tmpl_rate_rec.RATE_CHANGE_FREQUENCY_CODE;
10287         ELSE
10288           okl_k_rate_params_pvt.default_k_rate_params(
10289              p_api_version      => 1,
10290              p_init_msg_list    => OKC_API.G_FALSE,
10291              x_return_status    => x_return_status,
10292              x_msg_count        => x_msg_count,
10293              x_msg_data         => x_msg_data,
10294              p_deal_type        => G_DEAL_TYPE,
10295              p_rev_rec_method   => G_REVENUE_RECOGNITION_METHOD,
10296              p_int_calc_basis   => G_INTEREST_CALCULATION_BASIS,
10297              p_column_name      => 'DAYS_IN_A_YEAR_CODE',
10298              p_krpv_rec         => l_k_rate_tbl(l_rate_counter));
10299         END IF;
10300         END IF;
10301 
10302         l_k_rate_tbl(l_rate_counter).RATE_CHANGE_VALUE := p_header_rec.INT_RATE_CON_CHG_VALUE;
10303         IF (p_header_rec.INT_RATE_CON_CHG_VALUE IS NULL AND NOT(l_no_data) AND
10304             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10305           l_k_rate_tbl(l_rate_counter).RATE_CHANGE_VALUE :=
10306                        l_tmpl_rate_rec.RATE_CHANGE_VALUE;
10307         END IF;
10308 
10309         l_k_rate_tbl(l_rate_counter).CATCHUP_FREQUENCY_CODE := p_header_rec.INT_RATE_CON_CAT_FREQ_CODE;
10310         IF (p_header_rec.INT_RATE_CON_CAT_FREQ_CODE IS NULL AND NOT(l_no_data) AND
10311             p_header_rec.TEMPLATE_NUMBER IS NOT NULL) THEN
10312           l_k_rate_tbl(l_rate_counter).CATCHUP_FREQUENCY_CODE :=
10313                        l_tmpl_rate_rec.CATCHUP_FREQUENCY_CODE;
10314         END IF;
10315         l_rate_counter := l_rate_counter + 1;
10316 
10317       ELSE
10318       IF (p_header_rec.INT_RATE_EFFECTIVE_TO_DATE IS NOT NULL OR
10319             p_header_rec.INT_RATE_CON_INDEX_NAME IS NOT NULL OR
10320             p_header_rec.INT_RATE_CON_BASE_RATE IS NOT NULL OR
10321             p_header_rec.INT_RATE_CON_START_DATE IS NOT NULL OR
10322             p_header_rec.INT_RATE_CON_ADDER_RATE IS NOT NULL OR
10323             p_header_rec.INT_RATE_CON_MINIMUM_RATE IS NOT NULL OR
10324             p_header_rec.INT_RATE_CON_MAXIMUM_RATE IS NOT NULL OR
10325             p_header_rec.INT_RATE_CON_PRC_BAS_CODE IS NOT NULL OR
10326             p_header_rec.INT_RATE_CON_DAY_YER_CODE IS NOT NULL OR
10327             p_header_rec.INT_RATE_CON_DAY_MTH_CODE IS NOT NULL OR
10328             p_header_rec.INT_RATE_CON_INT_BAS_CODE IS NOT NULL OR
10329             p_header_rec.INT_RATE_CON_RATE_DELAY_CODE IS NOT NULL OR
10330             p_header_rec.INT_RATE_CON_RATE_DELAY_FREQ IS NOT NULL OR
10331             p_header_rec.INT_RATE_CON_CMPND_FREQ_CODE IS NOT NULL OR
10332             p_header_rec.INT_RATE_CON_FORMULA_NAME IS NOT NULL OR
10333             p_header_rec.INT_RATE_CON_CAT_BAS_CODE IS NOT NULL OR
10334             p_header_rec.INT_RATE_CON_CAT_START_DATE IS NOT NULL OR
10335             p_header_rec.INT_RATE_CON_CAT_STLMNT_CODE IS NOT NULL OR
10336             p_header_rec.INT_RATE_CON_CHG_START_DATE IS NOT NULL OR
10337             p_header_rec.INT_RATE_CON_CHG_FREQ_CODE IS NOT NULL OR
10338             p_header_rec.INT_RATE_CON_CHG_VALUE IS NOT NULL OR
10339             p_header_rec.INT_RATE_CON_CAT_FREQ_CODE IS NOT NULL )
10340         THEN
10341            -- Set error. Effective from date is missing
10342           OKC_API.set_message(p_app_name => G_APP_NAME,
10343                               p_msg_name => G_REQUIRED_VALUE,
10344                               p_token1 => G_COL_NAME_TOKEN,
10345                               p_token1_value => 'Effective_From_Date_Con');
10346           x_return_status := OKC_API.G_RET_STS_ERROR;
10347           RAISE header_rule_failed;
10348 
10349         END IF;
10350 
10351       END IF;
10352 
10353       debug_message('l_rate_counter=' || l_rate_counter);
10354       IF (l_rate_counter > 1) THEN
10355         OKL_K_RATE_PARAMS_PVT.validate_k_rate_params(
10356                                p_api_version             => 1 ,
10357                                p_init_msg_list           => OKC_API.G_FALSE,
10358                                x_return_status           => x_return_status,
10359                                x_msg_count               => x_msg_count,
10360                                x_msg_data                => x_msg_data,
10361                                p_product_id              => G_PRODUCT_ID,
10362                                p_k_rate_tbl              => l_k_rate_tbl);
10363         IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10364            RAISE header_rule_failed;
10365         ELSE
10366           FOR krpv_rec_cnt IN l_k_rate_tbl.FIRST..l_k_rate_tbl.LAST
10367           LOOP
10368             OKL_K_RATE_PARAMS_PVT.create_k_rate_params(
10369                           p_api_version           => 1 ,
10370                           p_init_msg_list         => OKC_API.G_FALSE,
10371                           x_return_status         => x_return_status,
10372                           x_msg_count             => x_msg_count,
10373                           x_msg_data              => x_msg_data,
10374                           p_krpv_rec              => l_k_rate_tbl(krpv_rec_cnt),
10375                           x_krpv_rec              => x_krpv_rec,
10376                           p_validate_flag         => 'N');
10377             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10378                RAISE header_rule_failed;
10379             END IF;
10380           END LOOP;
10381         END IF;
10382       END IF;
10383 
10384       debug_message('Rate creation done...');
10385       -- Rule Group LAFCTG
10386       l_rgpv_rec            := NULL;
10387       l_rgp_id              := NULL;
10388       l_rgpv_rec.rgd_code   := 'LAFCTG';
10389       l_rgpv_rec.chr_id     := p_chr_id;
10390       l_rgpv_rec.dnz_chr_id := p_chr_id;
10391       l_rgpv_rec.cle_id     := NULL;
10392       l_rgpv_rec.rgp_type   := 'KRG';
10393 
10394       l_rulv_rec            := NULL;
10395 
10396       l_factoring_date          := get_canonicaL_date(p_header_rec.factoring_date);
10397       l_factoring_percentage    := p_header_rec.factoring_percentage;
10398       l_factoring_discount_rate := p_header_rec.factoring_discount_rate;
10399 
10400       IF (l_factoring_date IS NULL
10401           OR
10402           l_factoring_percentage IS NULL
10403           OR
10404           l_factoring_discount_rate IS NULL
10405           AND
10406           p_header_rec.template_number IS NOT NULL) THEN
10407          get_contract_rules(
10408                             x_return_status  => x_return_status,
10409                             x_msg_count      => x_msg_count,
10410                             x_msg_data       => x_msg_data,
10411                             p_chr_id         => p_template_id,
10412                             p_cle_id         => NULL,
10413                             p_rgd_code       => 'LAFCTG',
10414                             p_rule_code      => 'LAFCTG',
10415                             x_rulv_tbl       => l_rulv_tbl,
10416                             x_rule_count     => l_rule_count
10417                            );
10418 
10419          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10420             RAISE header_rule_failed;
10421          END IF;
10422 
10423          IF (l_rule_count > 0) THEN
10424             l_factoring_date          := NVL(l_factoring_date,l_rulv_tbl(1).rule_information1);
10425             l_factoring_percentage    := NVL(l_factoring_percentage,l_rulv_tbl(1).rule_information2);
10426             l_factoring_discount_rate := NVL(l_factoring_discount_rate,l_rulv_tbl(1).rule_information3);
10427          END IF;
10428       END IF;
10429 
10430       IF (l_factoring_date IS NOT NULL) THEN
10431          l_rulv_rec                           := NULL;
10432          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
10433          l_rulv_rec.dnz_chr_id                := p_chr_id;
10434          l_rulv_rec.rule_information1         := l_factoring_date;
10435          l_rulv_rec.rule_information_category := 'LAFCTG';
10436          l_rulv_rec.std_template_yn           := 'N';
10437          l_rulv_rec.warn_yn                   := 'N';
10438       END IF;
10439 
10440       IF (l_factoring_percentage IS NOT NULL) THEN
10441          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
10442          l_rulv_rec.dnz_chr_id                := p_chr_id;
10443          l_rulv_rec.rule_information2         := l_factoring_percentage;
10444          l_rulv_rec.rule_information_category := 'LAFCTG';
10445          l_rulv_rec.std_template_yn           := 'N';
10446          l_rulv_rec.warn_yn                   := 'N';
10447       END IF;
10448 
10449       IF (l_factoring_discount_rate IS NOT NULL) THEN
10450          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
10451          l_rulv_rec.dnz_chr_id                := p_chr_id;
10452          l_rulv_rec.rule_information3         := l_factoring_discount_rate;
10453          l_rulv_rec.rule_information_category := 'LAFCTG';
10454          l_rulv_rec.std_template_yn           := 'N';
10455          l_rulv_rec.warn_yn                   := 'N';
10456       END IF;
10457 
10458       create_rule_group_and_rule(
10459                                  x_return_status => x_return_status,
10460                                  x_msg_count     => x_msg_count,
10461                                  x_msg_data      => x_msg_data,
10462                                  p_rgp_id        => l_rgp_id,
10463                                  p_rgpv_rec      => l_rgpv_rec,
10464                                  p_rulv_rec      => l_rulv_rec,
10465                                  x_rgpv_rec      => x_rgpv_rec,
10466                                  x_rulv_rec      => x_rulv_rec
10467                                 );
10468 
10469       l_progress := '1.19';
10470       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10471            x_return_status := OKL_API.G_RET_STS_ERROR;
10472            raise header_rule_failed;
10473       END IF;
10474 
10475       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
10476          l_rgp_id := x_rgpv_rec.id;
10477       END IF;
10478 
10479       debug_message('------>Rule: LAFCTG/LAFCTG processed');
10480       -- Rule Group LAEVEL
10481       l_rgpv_rec            := NULL;
10482       l_rgp_id              := NULL;
10483       l_rgpv_rec.rgd_code   := 'LAEVEL';
10484       l_rgpv_rec.chr_id     := p_chr_id;
10485       l_rgpv_rec.dnz_chr_id := p_chr_id;
10486       l_rgpv_rec.cle_id     := NULL;
10487       l_rgpv_rec.rgp_type   := 'KRG';
10488 
10489       l_rulv_rec := NULL;
10490 
10491       l_evergreen_eligible_flag := p_header_rec.evergreen_eligible_flag;
10492 
10493       IF (l_evergreen_eligible_flag IS NULL
10494           AND p_header_rec.template_number IS NOT NULL) THEN
10495          get_contract_rules(
10496                             x_return_status  => x_return_status,
10497                             x_msg_count      => x_msg_count,
10498                             x_msg_data       => x_msg_data,
10499                             p_chr_id         => p_template_id,
10500                             p_cle_id         => NULL,
10501                             p_rgd_code       => 'LAEVEL',
10502                             p_rule_code      => 'LAEVEL',
10503                             x_rulv_tbl       => l_rulv_tbl,
10504                             x_rule_count     => l_rule_count
10505                            );
10506 
10507          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10508             RAISE header_rule_failed;
10509          END IF;
10510 
10511          IF (l_rule_count > 0) THEN
10512             l_evergreen_eligible_flag  := l_rulv_tbl(1).rule_information1;
10513          END IF;
10514       END IF;
10515 
10516       IF (l_evergreen_eligible_flag IS NOT NULL) THEN
10517          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
10518          l_rulv_rec.dnz_chr_id                := p_chr_id;
10519          l_rulv_rec.rule_information1         := l_evergreen_eligible_flag;
10520          l_rulv_rec.rule_information_category := 'LAEVEL';
10521          l_rulv_rec.std_template_yn           := 'N';
10522          l_rulv_rec.warn_yn                   := 'N';
10523       END IF;
10524 
10525       create_rule_group_and_rule(
10526                                  x_return_status => x_return_status,
10527                                  x_msg_count     => x_msg_count,
10528                                  x_msg_data      => x_msg_data,
10529                                  p_rgp_id        => l_rgp_id,
10530                                  p_rgpv_rec      => l_rgpv_rec,
10531                                  p_rulv_rec      => l_rulv_rec,
10532                                  x_rgpv_rec      => x_rgpv_rec,
10533                                  x_rulv_rec      => x_rulv_rec
10534                                 );
10535 
10536       l_progress := '1.20';
10537       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10538            x_return_status := OKL_API.G_RET_STS_ERROR;
10539            raise header_rule_failed;
10540       END IF;
10541 
10542       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
10543          l_rgp_id := x_rgpv_rec.id;
10544       END IF;
10545 
10546       debug_message('------>Rule: LAEVEL/LAEVEL processed');
10547       l_rulv_rec := NULL;
10548 
10549       l_evergreen_passthru_fees    := TO_CHAR(p_header_rec.evergreen_passthru_fees);
10550       l_evergreen_passthru_percent := TO_CHAR(p_header_rec.evergreen_passthru_percent);
10551 
10552       IF (l_evergreen_passthru_fees IS NULL
10553           OR
10554           l_evergreen_passthru_percent IS NULL
10555           AND
10556           p_header_rec.template_number IS NOT NULL) THEN
10557          get_contract_rules(
10558                             x_return_status  => x_return_status,
10559                             x_msg_count      => x_msg_count,
10560                             x_msg_data       => x_msg_data,
10561                             p_chr_id         => p_template_id,
10562                             p_cle_id         => NULL,
10563                             p_rgd_code       => 'LAEVEL',
10564                             p_rule_code      => 'LAEVPT',
10565                             x_rulv_tbl       => l_rulv_tbl,
10566                             x_rule_count     => l_rule_count
10567                            );
10568 
10569          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10570             RAISE header_rule_failed;
10571          END IF;
10572 
10573          IF (l_rule_count > 0) THEN
10574             l_evergreen_passthru_fees    := NVL(l_evergreen_passthru_fees, l_rulv_tbl(1).rule_information1);
10575             l_evergreen_passthru_percent := NVL(l_evergreen_passthru_percent, l_rulv_tbl(1).rule_information2);
10576          END IF;
10577       END IF;
10578 
10579       IF (l_evergreen_passthru_fees IS NOT NULL) THEN
10580          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
10581          l_rulv_rec.dnz_chr_id                := p_chr_id;
10582          l_rulv_rec.rule_information1         := l_evergreen_passthru_fees;
10583          l_rulv_rec.rule_information_category := 'LAEVPT';
10584          l_rulv_rec.std_template_yn           := 'N';
10585          l_rulv_rec.warn_yn                   := 'N';
10586       END IF;
10587 
10588       IF (l_evergreen_passthru_percent IS NOT NULL) THEN
10589          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
10590          l_rulv_rec.dnz_chr_id                := p_chr_id;
10591          l_rulv_rec.rule_information2         := l_evergreen_passthru_percent;
10592          l_rulv_rec.rule_information_category := 'LAEVPT';
10593          l_rulv_rec.std_template_yn           := 'N';
10594          l_rulv_rec.warn_yn                   := 'N';
10595       END IF;
10596 
10597       create_rule_group_and_rule(
10598                                  x_return_status => x_return_status,
10599                                  x_msg_count     => x_msg_count,
10600                                  x_msg_data      => x_msg_data,
10601                                  p_rgp_id        => l_rgp_id,
10602                                  p_rgpv_rec      => l_rgpv_rec,
10603                                  p_rulv_rec      => l_rulv_rec,
10604                                  x_rgpv_rec      => x_rgpv_rec,
10605                                  x_rulv_rec      => x_rulv_rec
10606                                 );
10607 
10608       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10609            x_return_status := OKL_API.G_RET_STS_ERROR;
10610            raise header_rule_failed;
10611       END IF;
10612 
10613       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
10614          l_rgp_id := x_rgpv_rec.id;
10615       END IF;
10616       debug_message('------>Rule: LAEVEL/LAEVPT processed');
10617       l_rulv_rec := NULL;
10618 
10619       l_rgpv_rec            := NULL;
10620       l_rgp_id              := NULL;
10621       l_rgpv_rec.rgd_code   := 'LABILL';
10622       l_rgpv_rec.chr_id     := p_chr_id;
10623       l_rgpv_rec.dnz_chr_id := p_chr_id;
10624       l_rgpv_rec.cle_id     := NULL;
10625       l_rgpv_rec.rgp_type   := 'KRG';
10626 
10627 /* Rule Migration
10628 
10629       x_bill_to_address_id := NULL;
10630 
10631       IF (p_header_rec.bill_to_address_id IS NOT NULL
10632           OR
10633           p_header_rec.bill_to_address IS NOT NULL) THEN
10634 
10635           get_bill_to_address_id(
10636                              x_return_status           => x_return_status,
10637                              x_msg_count               => x_msg_count,
10638                              x_msg_data                => x_msg_data,
10639                              p_contract_number         => p_header_rec.contract_number,
10640                              p_auth_org_id             => p_header_rec.authoring_org_id,
10641                              p_bill_to_address_id      => p_header_rec.bill_to_address_id,
10642                              p_bill_to_address         => p_header_rec.bill_to_address,
10643                              p_customer_account_id     => x_customer_account_id,
10644                              x_bill_to_address_id      => x_bill_to_address_id
10645                             );
10646 
10647           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10648              x_return_status := OKL_API.G_RET_STS_ERROR;
10649              raise header_rule_failed;
10650           END IF;
10651 
10652       ELSE
10653          IF (p_header_rec.template_number IS NOT NULL) THEN
10654             get_contract_rules(
10655                                x_return_status  => x_return_status,
10656                                x_msg_count      => x_msg_count,
10657                                x_msg_data       => x_msg_data,
10658                                p_chr_id         => p_template_id,
10659                                p_cle_id         => NULL,
10660                                p_rgd_code       => 'LABILL',
10661                                p_rule_code      => 'BTO',
10662                                x_rulv_tbl       => l_rulv_tbl,
10663                                x_rule_count     => l_rule_count
10664                               );
10665 
10666             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10667                RAISE header_rule_failed;
10668             END IF;
10669 
10670             IF (l_rule_count > 0) THEN
10671                x_bill_to_address_id  := TO_NUMBER(l_rulv_tbl(1).object1_id1);
10672             END IF;
10673         END IF;
10674       END IF;
10675 
10676       IF (x_bill_to_address_id IS NOT NULL) THEN
10677          l_rgpv_rec            := NULL;
10678          l_rgp_id              := NULL;
10679          l_rgpv_rec.rgd_code   := 'LABILL';
10680          l_rgpv_rec.chr_id     := p_chr_id;
10681          l_rgpv_rec.dnz_chr_id := p_chr_id;
10682          l_rgpv_rec.cle_id     := NULL;
10683          l_rgpv_rec.rgp_type   := 'KRG';
10684 
10685          l_rulv_rec                           := NULL;
10686          l_rulv_rec.jtot_object1_code         := 'OKX_BILLTO';
10687          l_rulv_rec.object1_id1               := TO_CHAR(x_bill_to_address_id);
10688          l_rulv_rec.object1_id2               := '#';
10689          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
10690          l_rulv_rec.dnz_chr_id                := p_chr_id;
10691          l_rulv_rec.rule_information_category := 'BTO';
10692          l_rulv_rec.std_template_yn           := 'N';
10693          l_rulv_rec.warn_yn                   := 'N';
10694       END IF;
10695 
10696       create_rule_group_and_rule(
10697                                  x_return_status => x_return_status,
10698                                  x_msg_count     => x_msg_count,
10699                                  x_msg_data      => x_msg_data,
10700                                  p_rgp_id        => l_rgp_id,
10701                                  p_rgpv_rec      => l_rgpv_rec,
10702                                  p_rulv_rec      => l_rulv_rec,
10703                                  x_rgpv_rec      => x_rgpv_rec,
10704                                  x_rulv_rec      => x_rulv_rec
10705                                 );
10706 
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: LABILL/BTO processed');
10717 */
10718       IF (p_header_rec.customer_id IS NOT NULL
10719           OR
10720           p_header_rec.customer_number IS NOT NULL) THEN
10721           x_return_status := validate_customer(
10722                                                p_contract_number => p_header_rec.contract_number_old,
10723                                                p_customer_id     => p_header_rec.customer_id,
10724                                                p_customer_number => p_header_rec.customer_number,
10725                                                x_id1             => l_customer_id
10726                                               );
10727          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10728               x_return_status := OKL_API.G_RET_STS_ERROR;
10729               raise header_rule_failed;
10730          END IF;
10731       ELSE
10732          -- Get customer info from template_contract
10733          OPEN temp_role_csr(p_template_id);
10734          FETCH temp_role_csr INTO l_customer_id;
10735          CLOSE temp_role_csr;
10736       END IF;
10737 
10738       x_bank_account_id := NULL;
10739       IF (p_header_rec.bank_account_id     IS NOT NULL
10740           OR
10741           p_header_rec.bank_account_number IS NOT NULL ) THEN
10742 
10743          get_bank_account_id(
10744                               x_return_status           => x_return_status,
10745                               x_msg_count               => x_msg_count,
10746                               x_msg_data                => x_msg_data,
10747                               p_contract_number         => p_header_rec.contract_number_old,
10748                               p_auth_org_id             => p_header_rec.authoring_org_id,
10749                               p_bank_account_id         => p_header_rec.bank_account_id,
10750                               p_bank_account_number     => p_header_rec.bank_account_number,
10751                               p_customer_account_id     => g_customer_account_id,
10752                               p_cust_site_id            => g_bill_to_address_id,
10753                               x_bank_account_id         => x_bank_account_id
10754                              );
10755 
10756          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10757               x_return_status := OKL_API.G_RET_STS_ERROR;
10758               raise header_rule_failed;
10759          END IF;
10760 
10761       ELSE
10762         IF (p_header_rec.template_number IS NOT NULL) THEN
10763             get_contract_rules(
10764                                x_return_status  => x_return_status,
10765                                x_msg_count      => x_msg_count,
10766                                x_msg_data       => x_msg_data,
10767                                p_chr_id         => p_template_id,
10768                                p_cle_id         => NULL,
10769                                p_rgd_code       => 'LABILL',
10770                                p_rule_code      => 'LABACC',
10771                                x_rulv_tbl       => l_rulv_tbl,
10772                                x_rule_count     => l_rule_count
10773                               );
10774 
10775             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10776                RAISE header_rule_failed;
10777             END IF;
10778 
10779             IF (l_rule_count > 0) THEN
10780                x_bank_account_id  := TO_NUMBER(l_rulv_tbl(1).object1_id1);
10781             END IF;
10782         END IF;
10783       END IF;
10784 
10785       IF (x_bank_account_id IS NOT NULL) THEN
10786          l_rulv_rec                           := NULL;
10787          l_rulv_rec.jtot_object1_code         := 'OKX_CUSTBKAC';
10788          l_rulv_rec.object1_id1               := TO_CHAR(x_bank_account_id);
10789          l_rulv_rec.object1_id2               := '#';
10790          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
10791          l_rulv_rec.dnz_chr_id                := p_chr_id;
10792          l_rulv_rec.rule_information_category := 'LABACC';
10793          l_rulv_rec.std_template_yn           := 'N';
10794          l_rulv_rec.warn_yn                   := 'N';
10795 
10796          create_rule_group_and_rule(
10797                                     x_return_status => x_return_status,
10798                                     x_msg_count     => x_msg_count,
10799                                     x_msg_data      => x_msg_data,
10800                                     p_rgp_id        => l_rgp_id,
10801                                     p_rgpv_rec      => l_rgpv_rec,
10802                                     p_rulv_rec      => l_rulv_rec,
10803                                     x_rgpv_rec      => x_rgpv_rec,
10804                                     x_rulv_rec      => x_rulv_rec
10805                                    );
10806 
10807          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10808               x_return_status := OKL_API.G_RET_STS_ERROR;
10809               raise header_rule_failed;
10810          END IF;
10811 
10812          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
10813             l_rgp_id := x_rgpv_rec.id;
10814          END IF;
10815 
10816       END IF; --bank_account_id
10817 
10818       debug_message('------>Rule: LABILL/LABACC processed');
10819       l_rulv_rec                           := NULL;
10820 
10821       l_reason_for_invoice_review := p_header_rec.reason_for_invoice_review;
10822       l_invoice_review_until_date := get_canonicaL_date(p_header_rec.invoice_review_until_date);
10823 
10824       IF (l_reason_for_invoice_review IS NULL
10825           OR
10826           l_invoice_review_until_date IS NULL
10827           AND
10828           p_header_rec.template_number IS NOT NULL) THEN
10829          get_contract_rules(
10830                             x_return_status  => x_return_status,
10831                             x_msg_count      => x_msg_count,
10832                             x_msg_data       => x_msg_data,
10833                             p_chr_id         => p_template_id,
10834                             p_cle_id         => NULL,
10835                             p_rgd_code       => 'LABILL',
10836                             p_rule_code      => 'LAINPR',
10837                             x_rulv_tbl       => l_rulv_tbl,
10838                             x_rule_count     => l_rule_count
10839                            );
10840 
10841          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10842             RAISE header_rule_failed;
10843          END IF;
10844 
10845          IF (l_rule_count > 0) THEN
10846             l_reason_for_invoice_review := NVL(l_reason_for_invoice_review,l_rulv_tbl(1).rule_information1);
10847             l_invoice_review_until_date := NVL(l_invoice_review_until_date,l_rulv_tbl(1).rule_information2);
10848          END IF;
10849       END IF;
10850 
10851       IF (l_reason_for_invoice_review IS NOT NULL) THEN
10852           l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
10853           l_rulv_rec.dnz_chr_id                := p_chr_id;
10854           l_rulv_rec.rule_information1         := l_reason_for_invoice_review;
10855           l_rulv_rec.rule_information_category := 'LAINPR';
10856           l_rulv_rec.std_template_yn           := 'N';
10857           l_rulv_rec.warn_yn                   := 'N';
10858       END IF;
10859 
10860       IF (l_invoice_review_until_date IS NOT NULL) THEN
10861           l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
10862           l_rulv_rec.dnz_chr_id                := p_chr_id;
10863           l_rulv_rec.rule_information2         := l_invoice_review_until_date;
10864           l_rulv_rec.rule_information_category := 'LAINPR';
10865           l_rulv_rec.std_template_yn           := 'N';
10866           l_rulv_rec.warn_yn                   := 'N';
10867       END IF;
10868 
10869       create_rule_group_and_rule(
10870                                  x_return_status => x_return_status,
10871                                  x_msg_count     => x_msg_count,
10872                                  x_msg_data      => x_msg_data,
10873                                  p_rgp_id        => l_rgp_id,
10874                                  p_rgpv_rec      => l_rgpv_rec,
10875                                  p_rulv_rec      => l_rulv_rec,
10876                                  x_rgpv_rec      => x_rgpv_rec,
10877                                  x_rulv_rec      => x_rulv_rec
10878                                 );
10879 
10880       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10881            x_return_status := OKL_API.G_RET_STS_ERROR;
10882            raise header_rule_failed;
10883       END IF;
10884 
10885       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
10886          l_rgp_id := x_rgpv_rec.id;
10887       END IF;
10888 
10889       debug_message('------>Rule: LABILL/LAINPR processed');
10890       x_invoice_format_id := NULL;
10891       IF (p_header_rec.invoice_format_id   IS NOT NULL
10892           OR
10893           p_header_rec.invoice_format_code IS NOT NULL ) THEN
10894          get_invoice_format_id(
10895                                x_return_status           => x_return_status,
10896                                x_msg_count               => x_msg_count,
10897                                x_msg_data                => x_msg_data,
10898                                p_contract_number         => p_header_rec.contract_number_old,
10899                                p_invoice_format_id       => p_header_rec.invoice_format_id,
10900                                p_invoice_format_code     => p_header_rec.invoice_format_code,
10901                                x_invoice_format_id       => x_invoice_format_id,
10902                                x_invoice_format_name     => x_invoice_format_name
10903                               );
10904 
10905          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10906              x_return_status := OKL_API.G_RET_STS_ERROR;
10907              raise header_rule_failed;
10908          END IF;
10909       END IF;
10910 
10911       x_cash_appl_rule_id := NULL;
10912       IF (p_header_rec.cash_appl_rule_name IS NOT NULL) THEN
10913          get_cash_appl_rule_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_org_id                  => p_header_rec.authoring_org_id,
10919                                 p_cash_appl_rule_name     => p_header_rec.cash_appl_rule_name,
10920                                 x_cash_appl_rule_id       => x_cash_appl_rule_id
10921                                );
10922 
10923          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10924              x_return_status := OKL_API.G_RET_STS_ERROR;
10925              raise header_rule_failed;
10926          END IF;
10927 
10928       END IF;
10929 
10930       IF (p_header_rec.invoice_format_id IS NULL
10931           OR
10932           p_header_rec.invoice_format_code IS NULL
10933           OR
10934           p_header_rec.cash_appl_rule_name IS NULL
10935           OR
10936           p_header_rec.review_invoice_flag IS NULL
10937 	  OR --hariven bug 5359935
10938 		  p_header_rec.print_lead_days IS NULL --hariven bug 5359935
10939           AND
10940           p_header_rec.template_number IS NOT NULL) THEN
10941 
10942             get_contract_rules(
10943                                x_return_status  => x_return_status,
10944                                x_msg_count      => x_msg_count,
10945                                x_msg_data       => x_msg_data,
10946                                p_chr_id         => p_template_id,
10947                                p_cle_id         => NULL,
10948                                p_rgd_code       => 'LABILL',
10949                                p_rule_code      => 'LAINVD',
10950                                x_rulv_tbl       => l_rulv_tbl,
10951                                x_rule_count     => l_rule_count
10952                               );
10953 
10954             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
10955                RAISE header_rule_failed;
10956             END IF;
10957 
10958             IF (l_rule_count > 0) THEN
10959                x_invoice_format_name  := l_rulv_tbl(1).rule_information1;
10960                l_review_invoice_flag  := NVL(p_header_rec.review_invoice_flag,
10961                                              l_rulv_tbl(1).rule_information4);
10962 
10963 					     l_print_lead_days      := NVL(p_header_rec.print_lead_days, --hariven bug 5359935
10964                                              l_rulv_tbl(1).rule_information3); --hariven bug 5359935
10965 
10966                x_cash_appl_rule_id    := NVL(x_cash_appl_rule_id, l_rulv_tbl(1).object1_id1);
10967             END IF;
10968       END IF;
10969 
10970       l_rulv_rec := NULL;
10971       IF (x_invoice_format_name IS NOT NULL) THEN
10972          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
10973          l_rulv_rec.dnz_chr_id                := p_chr_id;
10974          l_rulv_rec.rule_information1         := x_invoice_format_name;
10975          l_rulv_rec.rule_information_category := 'LAINVD';
10976          l_rulv_rec.std_template_yn           := 'N';
10977          l_rulv_rec.warn_yn                   := 'N';
10978       END IF;
10979 
10980       IF (NVL(l_review_invoice_flag, p_header_rec.review_invoice_flag) IS NOT NULL) THEN
10981          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
10982          l_rulv_rec.dnz_chr_id                := p_chr_id;
10983          l_rulv_rec.rule_information4         := NVL(l_review_invoice_flag, p_header_rec.review_invoice_flag);
10984          l_rulv_rec.rule_information_category := 'LAINVD';
10985          l_rulv_rec.std_template_yn           := 'N';
10986          l_rulv_rec.warn_yn                   := 'N';
10987       END IF;
10988 
10989       --hariven bug 5359935 start
10990       IF (NVL(l_print_lead_days, p_header_rec.print_lead_days) IS NOT NULL) THEN
10991          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
10992          l_rulv_rec.dnz_chr_id                := p_chr_id;
10993          l_rulv_rec.rule_information3         := NVL(l_print_lead_days, p_header_rec.print_lead_days);
10994          l_rulv_rec.rule_information_category := 'LAINVD';
10995          l_rulv_rec.std_template_yn           := 'N';
10996          l_rulv_rec.warn_yn                   := 'N';
10997       END IF;
10998      --hariven bug 5359935 End
10999 
11000       IF (x_cash_appl_rule_id IS NOT NULL) THEN
11001          l_rulv_rec.jtot_object1_code         := 'OKL_CASHAPPL';
11002          l_rulv_rec.object1_id1               := TO_CHAR(x_cash_appl_rule_id);
11003          l_rulv_rec.object1_id2               := '#';
11004          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11005          l_rulv_rec.dnz_chr_id                := p_chr_id;
11006          l_rulv_rec.rule_information_category := 'LAINVD';
11007          l_rulv_rec.std_template_yn           := 'N';
11008          l_rulv_rec.warn_yn                   := 'N';
11009       END IF;
11010 
11011       create_rule_group_and_rule(
11012                                  x_return_status => x_return_status,
11013                                  x_msg_count     => x_msg_count,
11014                                  x_msg_data      => x_msg_data,
11015                                  p_rgp_id        => l_rgp_id,
11016                                  p_rgpv_rec      => l_rgpv_rec,
11017                                  p_rulv_rec      => l_rulv_rec,
11018                                  x_rgpv_rec      => x_rgpv_rec,
11019                                  x_rulv_rec      => x_rulv_rec
11020                                 );
11021 
11022       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11023            x_return_status := OKL_API.G_RET_STS_ERROR;
11024            raise header_rule_failed;
11025       END IF;
11026 
11027       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- Bug 5085099
11028          l_rgp_id := x_rgpv_rec.id;
11029       END IF;
11030 
11031       debug_message('------>Rule: LABILL/LAINVD processed');
11032       x_payment_method_id := NULL;
11033       IF (p_header_rec.payment_method_id IS NOT NULL
11034           OR
11035           p_header_rec.payment_method IS NOT NULL) THEN
11036          get_payment_method_id(
11037                                x_return_status           => x_return_status,
11038                                x_msg_count               => x_msg_count,
11039                                x_msg_data                => x_msg_data,
11040                                p_contract_number         => p_header_rec.contract_number_old,
11041                                p_customer_account_id     => g_customer_account_id,
11042                                p_bill_to_address_id      => g_bill_to_address_id,  -- got from get_bill_to_address_id() above
11043                                p_payment_method_id       => p_header_rec.payment_method_id,
11044                                p_payment_method          => p_header_rec.payment_method,
11045                                x_payment_method_id       => x_payment_method_id
11046                               );
11047 
11048          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11049               x_return_status := OKL_API.G_RET_STS_ERROR;
11050               raise header_rule_failed;
11051          END IF;
11052 
11053       ELSE
11054          IF (p_header_rec.template_number IS NOT NULL) THEN
11055             get_contract_rules(
11056                                x_return_status  => x_return_status,
11057                                x_msg_count      => x_msg_count,
11058                                x_msg_data       => x_msg_data,
11059                                p_chr_id         => p_template_id,
11060                                p_cle_id         => NULL,
11061                                p_rgd_code       => 'LABILL',
11062                                p_rule_code      => 'LAPMTH',
11063                                x_rulv_tbl       => l_rulv_tbl,
11064                                x_rule_count     => l_rule_count
11065                               );
11066 
11067             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11068                RAISE header_rule_failed;
11069             END IF;
11070 
11071             IF (l_rule_count > 0) THEN
11072                x_payment_method_id := l_rulv_tbl(1).object1_id1;
11073             END IF;
11074          END IF;
11075       END IF;
11076       --debug_message('2PMNT ID: '||x_payment_method_id);
11077 
11078       l_rulv_rec := NULL;
11079       IF (x_payment_method_id IS NOT NULL) THEN
11080          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11081          l_rulv_rec.dnz_chr_id                := p_chr_id;
11082          l_rulv_rec.jtot_object1_code         := 'OKX_RCPTMTH';
11083          l_rulv_rec.object1_id1               := TO_CHAR(x_payment_method_id);
11084          l_rulv_rec.object1_id2               := '#';
11085          l_rulv_rec.rule_information_category := 'LAPMTH';
11086          l_rulv_rec.std_template_yn           := 'N';
11087          l_rulv_rec.warn_yn                   := 'N';
11088       END IF;
11089 
11090       create_rule_group_and_rule(
11091                                  x_return_status => x_return_status,
11092                                  x_msg_count     => x_msg_count,
11093                                  x_msg_data      => x_msg_data,
11094                                  p_rgp_id        => l_rgp_id,
11095                                  p_rgpv_rec      => l_rgpv_rec,
11096                                  p_rulv_rec      => l_rulv_rec,
11097                                  x_rgpv_rec      => x_rgpv_rec,
11098                                  x_rulv_rec      => x_rulv_rec
11099                                 );
11100 
11101       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11102            x_return_status := OKL_API.G_RET_STS_ERROR;
11103            raise header_rule_failed;
11104       END IF;
11105 
11106       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
11107          l_rgp_id := x_rgpv_rec.id;
11108       END IF;
11109 
11110       debug_message('------>Rule: LABILL/LAPMTH processed');
11111       -- Rule Group LACPLN
11112       l_rgpv_rec            := NULL;
11113       l_rgp_id              := NULL;
11114       l_rgpv_rec.rgd_code   := 'LACPLN';
11115       l_rgpv_rec.chr_id     := p_chr_id;
11116       l_rgpv_rec.dnz_chr_id := p_chr_id;
11117       l_rgpv_rec.cle_id     := NULL;
11118       l_rgpv_rec.rgp_type   := 'KRG';
11119 
11120       l_capitalize_flag := p_header_rec.capitalize_flag;
11121 
11122       IF (l_capitalize_flag IS NULL
11123           AND
11124           p_header_rec.template_number IS NOT NULL) THEN
11125          get_contract_rules(
11126                             x_return_status  => x_return_status,
11127                             x_msg_count      => x_msg_count,
11128                             x_msg_data       => x_msg_data,
11129                             p_chr_id         => p_template_id,
11130                             p_cle_id         => NULL,
11131                             p_rgd_code       => 'LACPLN',
11132                             p_rule_code      => 'LACPLN',
11133                             x_rulv_tbl       => l_rulv_tbl,
11134                             x_rule_count     => l_rule_count
11135                            );
11136 
11137          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11138             RAISE header_rule_failed;
11139          END IF;
11140 
11141          IF (l_rule_count > 0) THEN
11142             l_capitalize_flag  := l_rulv_tbl(1).rule_information1;
11143          END IF;
11144       END IF;
11145 
11146       IF (p_header_rec.capitalize_flag IS NOT NULL) THEN
11147 
11148          l_rulv_rec                           := NULL;
11149          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11150          l_rulv_rec.dnz_chr_id                := p_chr_id;
11151          l_rulv_rec.rule_information1         := p_header_rec.capitalize_flag;
11152          l_rulv_rec.rule_information_category := 'LACPLN';
11153          l_rulv_rec.std_template_yn           := 'N';
11154          l_rulv_rec.warn_yn                   := 'N';
11155 
11156          create_rule_group_and_rule(
11157                                     x_return_status => x_return_status,
11158                                     x_msg_count     => x_msg_count,
11159                                     x_msg_data      => x_msg_data,
11160                                     p_rgp_id        => l_rgp_id,
11161                                     p_rgpv_rec      => l_rgpv_rec,
11162                                     p_rulv_rec      => l_rulv_rec,
11163                                     x_rgpv_rec      => x_rgpv_rec,
11164                                     x_rulv_rec      => x_rulv_rec
11165                                    );
11166 
11167          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11168             raise header_rule_failed;
11169          END IF;
11170 
11171          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
11172             l_rgp_id := x_rgpv_rec.id;
11173          END IF;
11174 
11175       END IF; -- capitalize
11176 
11177       debug_message('------>Rule: LACPLN/LACPLN processed');
11178       -- Rule Group LANNTF
11179       l_rgpv_rec            := NULL;
11180       l_rgp_id              := NULL;
11181       l_rgpv_rec.rgd_code   := 'LANNTF';
11182       l_rgpv_rec.chr_id     := p_chr_id;
11183       l_rgpv_rec.dnz_chr_id := p_chr_id;
11184       l_rgpv_rec.cle_id     := NULL;
11185       l_rgpv_rec.rgp_type   := 'KRG';
11186 
11187       l_non_notification_flag := p_header_rec.non_notification_flag;
11188 
11189       IF (l_non_notification_flag IS NULL
11190           AND
11191           p_header_rec.template_number IS NOT NULL) THEN
11192           get_contract_rules(
11193                              x_return_status  => x_return_status,
11194                              x_msg_count      => x_msg_count,
11195                              x_msg_data       => x_msg_data,
11196                              p_chr_id         => p_template_id,
11197                              p_cle_id         => NULL,
11198                              p_rgd_code       => 'LANNTF',
11199                              p_rule_code      => 'LANNTF',
11200                              x_rulv_tbl       => l_rulv_tbl,
11201                              x_rule_count     => l_rule_count
11202                             );
11203 
11204           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11205              RAISE header_rule_failed;
11206           END IF;
11207 
11208           IF (l_rule_count > 0) THEN
11209              l_non_notification_flag  := l_rulv_tbl(1).rule_information1;
11210           END IF;
11211       END IF;
11212 
11213       IF (l_non_notification_flag IS NOT NULL) THEN
11214 
11215          l_rulv_rec                           := NULL;
11216          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11217          l_rulv_rec.dnz_chr_id                := p_chr_id;
11218          l_rulv_rec.rule_information1         := l_non_notification_flag;
11219          l_rulv_rec.rule_information_category := 'LANNTF';
11220          l_rulv_rec.std_template_yn           := 'N';
11221          l_rulv_rec.warn_yn                   := 'N';
11222 
11223          create_rule_group_and_rule(
11224                                     x_return_status => x_return_status,
11225                                     x_msg_count     => x_msg_count,
11226                                     x_msg_data      => x_msg_data,
11227                                     p_rgp_id        => l_rgp_id,
11228                                     p_rgpv_rec      => l_rgpv_rec,
11229                                     p_rulv_rec      => l_rulv_rec,
11230                                     x_rgpv_rec      => x_rgpv_rec,
11231                                     x_rulv_rec      => x_rulv_rec
11232                                    );
11233 
11234          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11235             raise header_rule_failed;
11236          END IF;
11237 
11238          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
11239             l_rgp_id := x_rgpv_rec.id;
11240          END IF;
11241 
11242       END IF; -- non_notification
11243       debug_message('------>Rule: LANNTF/LANNTF processed');
11244 
11245       -- Rule Group LARVIN -- DDD
11246       l_rgpv_rec            := NULL;
11247       l_rgp_id              := NULL;
11248       l_rgpv_rec.rgd_code   := 'LARVIN';
11249       l_rgpv_rec.chr_id     := p_chr_id;
11250       l_rgpv_rec.dnz_chr_id := p_chr_id;
11251       l_rgpv_rec.cle_id     := NULL;
11252       l_rgpv_rec.rgp_type   := 'KRG';
11253 
11254       l_rulv_rec            := NULL;
11255       l_rvi_auto_calculate_flag := p_header_rec.rvi_auto_calculate_flag;
11256 
11257       IF (l_rvi_auto_calculate_flag IS NULL
11258           AND
11259           p_header_rec.template_number IS NOT NULL) THEN
11260          get_contract_rules(
11261                             x_return_status  => x_return_status,
11262                             x_msg_count      => x_msg_count,
11263                             x_msg_data       => x_msg_data,
11264                             p_chr_id         => p_template_id,
11265                             p_cle_id         => NULL,
11266                             p_rgd_code       => 'LARVIN',
11267                             p_rule_code      => 'LARVAU',
11268                             x_rulv_tbl       => l_rulv_tbl,
11269                             x_rule_count     => l_rule_count
11270                            );
11271 
11272          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11273             RAISE header_rule_failed;
11274          END IF;
11275 
11276          IF (l_rule_count > 0) THEN
11277             l_rvi_auto_calculate_flag  := l_rulv_tbl(1).rule_information1;
11278          END IF;
11279       END IF;
11280 
11281       IF (l_rvi_auto_calculate_flag IS NOT NULL) THEN
11282 
11283          -- Bug 4655611
11284          IF (NVL(l_rvi_auto_calculate_flag,'N') = 'Y') THEN
11285            -- Validate rvi stream
11286            OPEN contract_csr(p_chr_id);
11287            FETCH contract_csr INTO l_contract_number,l_contract_start_date;
11288 
11289            IF contract_csr%NOTFOUND THEN
11290              x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
11291              CLOSE contract_csr;
11292              OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
11293                                  p_msg_name     => 'OKL_LLA_CHR_ID');
11294              RAISE header_rule_failed;
11295            END IF;
11296 
11297            CLOSE contract_csr;
11298            debug_message('After close_contract_csr...');
11299 
11300            l_rvi_stream_code := p_header_rec.RVI_STREAM_CODE;
11301            l_rvi_stream_purpose_code := p_header_rec.RVI_STREAM_PURPOSE_CODE;
11302            debug_message('l_rvi_stream_code=' || l_rvi_stream_code);
11303            debug_message('l_rvi_stream_purpose_code=' || l_rvi_stream_purpose_code);
11304            IF ((l_rvi_stream_code IS NOT NULL AND
11305                 l_rvi_stream_purpose_code IS NULL) OR
11306                (l_rvi_stream_code IS NULL AND
11307                 l_rvi_stream_purpose_code IS NOT NULL)) THEN
11308 
11309                   okl_api.set_message(
11310                                       G_APP_NAME,
11311                                       G_INVALID_VALUE,
11312                                       'CONTRACT_NUM',
11313                                       l_contract_number, --||'/'||TO_CHAR(p_line_number),
11314                                      'COL_NAME',
11315                                      'RVI_STREAM_CODE, RVI_STREAM_PURPOSE_CODE',
11316                                      'COL_VALUE',
11317                                      l_rvi_stream_code||', '||l_rvi_stream_purpose_code
11318                                     );
11319                   x_return_status := OKL_API.G_RET_STS_ERROR;
11320                   RAISE header_rule_failed;
11321 
11322            ELSIF (l_rvi_stream_code IS NOT NULL AND
11323                l_rvi_stream_purpose_code IS NOT NULL) THEN
11324               check_stream_type_code(
11325                                      x_return_status    => x_return_status,
11326                                      x_msg_count        => x_msg_count,
11327                                      x_msg_data         => x_msg_data,
11328                                      p_stream_type_code => l_rvi_stream_code,
11329                                      p_stream_purpose   => l_rvi_stream_purpose_code,
11330                                      x_id1              => l_rvi_stream_type_id,
11331                                      x_name             => l_rvi_stream_name
11332                                     );
11333               IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11334                   okl_api.set_message(
11335                                       G_APP_NAME,
11336                                       G_INVALID_VALUE,
11337                                       'CONTRACT_NUM',
11338                                       l_contract_number, --||'/'||TO_CHAR(p_line_number),
11339                                      'COL_NAME',
11340                                      'RVI_STREAM_CODE, RVI_STREAM_PURPOSE_CODE',
11341                                      'COL_VALUE',
11342                                      l_rvi_stream_code||', '||l_rvi_stream_purpose_code
11343                                     );
11344                   x_return_status := OKL_API.G_RET_STS_ERROR;
11345                   RAISE header_rule_failed;
11346               END IF;
11347 
11348               debug_message('l_rvi_stream_type_id=' || l_rvi_stream_type_id);
11349               -- Check if the stream type is ID is effective
11350               OPEN rvi_stream_csr (l_rvi_stream_type_id, l_contract_start_date);
11351               FETCH rvi_stream_csr INTO l_yn;
11352 
11353               IF rvi_stream_csr%NOTFOUND THEN
11354                  CLOSE rvi_stream_csr;
11355                  okl_api.set_message(
11356                                      G_APP_NAME,
11357                                      G_NO_STRM_TMPL,
11358                                      'CONTRACT_NUM',
11359                                      l_contract_number, --||'/'||p_line_number,
11360                                      'COL_NAME',
11361                                      'RVI_STREAM_CODE, RVI_STREAM_PURPOSE_CODE',
11362                                      'COL_VALUE',
11363                                      l_rvi_stream_code||', '||l_rvi_stream_purpose_code
11364                                    );
11365                  RAISE header_rule_failed;
11366               ELSE
11367                  CLOSE rvi_stream_csr;
11368               END IF;
11369            END IF;
11370 
11371            l_fee_types_rec.dnz_chr_id := p_chr_id;
11372            l_fee_types_rec.item_id1 := l_rvi_stream_type_id;
11373            OKL_MAINTAIN_FEE_PVT.PROCESS_RVI_STREAM(
11374                                     p_api_version   => 1.0,
11375                                     p_init_msg_list => OKL_API.G_FALSE,
11376                                     x_return_status => x_return_status,
11377                                     x_msg_count     => x_msg_count,
11378                                     x_msg_data      => x_msg_data,
11379                                     p_check_box_value => 'Y',
11380                                     p_fee_types_rec => l_fee_types_rec,
11381                                     x_fee_types_rec => x_fee_types_rec);
11382 
11383            IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11384               raise header_rule_failed;
11385            END IF;
11386 
11387 
11388            l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11389            l_rulv_rec.dnz_chr_id                := p_chr_id;
11390            l_rulv_rec.rule_information1         := l_rvi_auto_calculate_flag;
11391            l_rulv_rec.rule_information_category := 'LARVAU';
11392            l_rulv_rec.std_template_yn           := 'N';
11393            l_rulv_rec.warn_yn                   := 'N';
11394 
11395            create_rule_group_and_rule(
11396                                       x_return_status => x_return_status,
11397                                       x_msg_count     => x_msg_count,
11398                                       x_msg_data      => x_msg_data,
11399                                       p_rgp_id        => l_rgp_id,
11400                                       p_rgpv_rec      => l_rgpv_rec,
11401                                       p_rulv_rec      => l_rulv_rec,
11402                                       x_rgpv_rec      => x_rgpv_rec,
11403                                       x_rulv_rec      => x_rulv_rec
11404                                      );
11405 
11406            IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11407               raise header_rule_failed;
11408            END IF;
11409 
11410            IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
11411               l_rgp_id := x_rgpv_rec.id;
11412            END IF;
11413          END IF; -- if rvi_auto_calculate_flag = 'Y'
11414          -- Bug 4655611
11415 
11416       END IF; -- rvi_auto_calculate_flag
11417 
11418       debug_message('------>Rule: LARVIN/LARVAU processed');
11419       l_rulv_rec            := NULL;
11420 /* Removed form Rule Definition 05/22/2002
11421       IF (p_header_rec.rvi_guaranteed_amount IS NOT NULL) THEN
11422 
11423          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11424          l_rulv_rec.dnz_chr_id                := p_chr_id;
11425          l_rulv_rec.rule_information1         := TO_CHAR(p_header_rec.rvi_guaranteed_amount);
11426          l_rulv_rec.rule_information_category := 'LARVAM';
11427          l_rulv_rec.std_template_yn           := 'N';
11428          l_rulv_rec.warn_yn                   := 'N';
11429 
11430       END IF; -- rvi_guaranteed_amount
11431 
11432       IF (p_header_rec.rvi_present_guaranteed_amount IS NOT NULL) THEN
11433 
11434          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11435          l_rulv_rec.dnz_chr_id                := p_chr_id;
11436          l_rulv_rec.rule_information2         := TO_CHAR(p_header_rec.rvi_present_guaranteed_amount);
11437          l_rulv_rec.rule_information_category := 'LARVAM';
11438          l_rulv_rec.std_template_yn           := 'N';
11439          l_rulv_rec.warn_yn                   := 'N';
11440 
11441       END IF; -- rvi_guaranteed_amount
11442 
11443       IF (p_header_rec.rvi_premium_amount IS NOT NULL) THEN
11444 
11445          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11446          l_rulv_rec.dnz_chr_id                := p_chr_id;
11447          l_rulv_rec.rule_information3         := TO_CHAR(p_header_rec.rvi_premium_amount);
11448          l_rulv_rec.rule_information_category := 'LARVAM';
11449          l_rulv_rec.std_template_yn           := 'N';
11450          l_rulv_rec.warn_yn                   := 'N';
11451 
11452       END IF; -- rvi_guaranteed_amount
11453 
11454 --  Removed form Rule Definition 05/22/2002
11455 */
11456 
11457       l_rvi_rate := TO_CHAR(p_header_rec.rvi_rate);
11458 
11459       IF (l_rvi_rate IS NULL
11460           AND
11461           p_header_rec.template_number IS NOT NULL) THEN
11462          get_contract_rules(
11463                             x_return_status  => x_return_status,
11464                             x_msg_count      => x_msg_count,
11465                             x_msg_data       => x_msg_data,
11466                             p_chr_id         => p_template_id,
11467                             p_cle_id         => NULL,
11468                             p_rgd_code       => 'LARVIN',
11469                             p_rule_code      => 'LARVAM',
11470                             x_rulv_tbl       => l_rulv_tbl,
11471                             x_rule_count     => l_rule_count
11472                            );
11473 
11474          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11475             RAISE header_rule_failed;
11476          END IF;
11477 
11478          IF (l_rule_count > 0) THEN
11479             l_rvi_rate  := l_rulv_tbl(1).rule_information4;
11480          END IF;
11481       END IF;
11482 
11483       IF (l_rvi_rate IS NOT NULL) THEN
11484 
11485          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11486          l_rulv_rec.dnz_chr_id                := p_chr_id;
11487          l_rulv_rec.rule_information4         := l_rvi_rate;
11488          l_rulv_rec.rule_information_category := 'LARVAM';
11489          l_rulv_rec.std_template_yn           := 'N';
11490          l_rulv_rec.warn_yn                   := 'N';
11491 
11492       END IF; -- rvi_guaranteed_amount
11493 
11494       create_rule_group_and_rule(
11495                                  x_return_status => x_return_status,
11496                                  x_msg_count     => x_msg_count,
11497                                  x_msg_data      => x_msg_data,
11498                                  p_rgp_id        => l_rgp_id,
11499                                  p_rgpv_rec      => l_rgpv_rec,
11500                                  p_rulv_rec      => l_rulv_rec,
11501                                  x_rgpv_rec      => x_rgpv_rec,
11502                                  x_rulv_rec      => x_rulv_rec
11503                                 );
11504 
11505       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11506          raise header_rule_failed;
11507       END IF;
11508 
11509       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
11510          l_rgp_id := x_rgpv_rec.id;
11511       END IF;
11512 
11513       debug_message('------>Rule: LARVIN/LARVAM processed');
11514       -- Rule Group LAMXTX
11515       l_rgpv_rec            := NULL;
11516       l_rgp_id              := NULL;
11517       l_rgpv_rec.rgd_code   := 'LAMXTX';
11518       l_rgpv_rec.chr_id     := p_chr_id;
11519       l_rgpv_rec.dnz_chr_id := p_chr_id;
11520       l_rgpv_rec.cle_id     := NULL;
11521       l_rgpv_rec.rgp_type   := 'KRG';
11522 
11523       l_rulv_rec            := NULL;
11524       l_tax_withholding_flag := p_header_rec.tax_withholding_flag;
11525 
11526       IF (l_tax_withholding_flag IS NULL
11527           AND
11528           p_header_rec.template_number IS NOT NULL) THEN
11529          get_contract_rules(
11530                             x_return_status  => x_return_status,
11531                             x_msg_count      => x_msg_count,
11532                             x_msg_data       => x_msg_data,
11533                             p_chr_id         => p_template_id,
11534                             p_cle_id         => NULL,
11535                             p_rgd_code       => 'LAMXTX',
11536                             p_rule_code      => 'LAUKTX',
11537                             x_rulv_tbl       => l_rulv_tbl,
11538                             x_rule_count     => l_rule_count
11539                            );
11540 
11541          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11542             RAISE header_rule_failed;
11543          END IF;
11544 
11545          IF (l_rule_count > 0) THEN
11546             l_tax_withholding_flag  := l_rulv_tbl(1).rule_information1;
11547          END IF;
11548       END IF;
11549 
11550       IF (l_tax_withholding_flag IS NOT NULL) THEN
11551 
11552          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11553          l_rulv_rec.dnz_chr_id                := p_chr_id;
11554          l_rulv_rec.rule_information1         := l_tax_withholding_flag;
11555          l_rulv_rec.rule_information_category := 'LAUKTX';
11556          l_rulv_rec.std_template_yn           := 'N';
11557          l_rulv_rec.warn_yn                   := 'N';
11558 
11559          create_rule_group_and_rule(
11560                                     x_return_status => x_return_status,
11561                                     x_msg_count     => x_msg_count,
11562                                     x_msg_data      => x_msg_data,
11563                                     p_rgp_id        => l_rgp_id,
11564                                     p_rgpv_rec      => l_rgpv_rec,
11565                                     p_rulv_rec      => l_rulv_rec,
11566                                     x_rgpv_rec      => x_rgpv_rec,
11567                                     x_rulv_rec      => x_rulv_rec
11568                                    );
11569 
11570          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11571             raise header_rule_failed;
11572          END IF;
11573 
11574          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
11575             l_rgp_id := x_rgpv_rec.id;
11576          END IF;
11577 
11578       END IF; -- tax_withholding_flag
11579 
11580       debug_message('------>Rule: LAMXTX/LAUKTX processed');
11581       l_rulv_rec            := NULL;
11582 
11583       l_tax_calc_formula_name := p_header_rec.tax_calc_formula_name;
11584 
11585       IF (l_tax_calc_formula_name IS NULL
11586           AND
11587           p_header_rec.template_number IS NOT NULL) THEN
11588          get_contract_rules(
11589                             x_return_status  => x_return_status,
11590                             x_msg_count      => x_msg_count,
11591                             x_msg_data       => x_msg_data,
11592                             p_chr_id         => p_template_id,
11593                             p_cle_id         => NULL,
11594                             p_rgd_code       => 'LAMXTX',
11595                             p_rule_code      => 'LAFORM',
11596                             x_rulv_tbl       => l_rulv_tbl,
11597                             x_rule_count     => l_rule_count
11598                            );
11599 
11600          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11601             RAISE header_rule_failed;
11602          END IF;
11603 
11604          IF (l_rule_count > 0) THEN
11605             l_tax_calc_formula_name := l_rulv_tbl(1).rule_information1;
11606          END IF;
11607       END IF;
11608 
11609       IF (l_tax_calc_formula_name IS NOT NULL) THEN
11610 
11611          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11612          l_rulv_rec.dnz_chr_id                := p_chr_id;
11613          l_rulv_rec.rule_information1         := l_tax_calc_formula_name;
11614          l_rulv_rec.rule_information_category := 'LAFORM';
11615          l_rulv_rec.std_template_yn           := 'N';
11616          l_rulv_rec.warn_yn                   := 'N';
11617 
11618          create_rule_group_and_rule(
11619                                     x_return_status => x_return_status,
11620                                     x_msg_count     => x_msg_count,
11621                                     x_msg_data      => x_msg_data,
11622                                     p_rgp_id        => l_rgp_id,
11623                                     p_rgpv_rec      => l_rgpv_rec,
11624                                     p_rulv_rec      => l_rulv_rec,
11625                                     x_rgpv_rec      => x_rgpv_rec,
11626                                     x_rulv_rec      => x_rulv_rec
11627                                    );
11628 
11629          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11630             raise header_rule_failed;
11631          END IF;
11632 
11633          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
11634             l_rgp_id := x_rgpv_rec.id;
11635          END IF;
11636 
11637       END IF; -- tax_calc_formula_name
11638 
11639       debug_message('------>Rule: LAMXTX/LAFORM processed');
11640 
11641 /* Not being used since 11.5.9
11642    Tax Owner rule is getting created from Product
11643 
11644       -- Rule Group LATOWN
11645       l_rgpv_rec            := NULL;
11646       l_rgp_id              := NULL;
11647       l_rgpv_rec.rgd_code   := 'LATOWN';
11648       l_rgpv_rec.chr_id     := p_chr_id;
11649       l_rgpv_rec.dnz_chr_id := p_chr_id;
11650       l_rgpv_rec.cle_id     := NULL;
11651       l_rgpv_rec.rgp_type   := 'KRG';
11652 
11653       l_rulv_rec            := NULL;
11654 
11655       l_tax_owner := p_header_rec.tax_owner;
11656 
11657       IF (l_tax_owner IS NULL
11658           AND
11659           p_header_rec.template_number IS NOT NULL) THEN
11660          get_contract_rules(
11661                             x_return_status  => x_return_status,
11662                             x_msg_count      => x_msg_count,
11663                             x_msg_data       => x_msg_data,
11664                             p_chr_id         => p_template_id,
11665                             p_cle_id         => NULL,
11666                             p_rgd_code       => 'LATOWN',
11667                             p_rule_code      => 'LATOWN',
11668                             x_rulv_tbl       => l_rulv_tbl,
11669                             x_rule_count     => l_rule_count
11670                            );
11671 
11672          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11673             RAISE header_rule_failed;
11674          END IF;
11675 
11676          IF (l_rule_count > 0) THEN
11677             l_tax_owner  := l_rulv_tbl(1).rule_information1;
11678          END IF;
11679       END IF;
11680 
11681       IF (l_tax_owner IS NOT NULL) THEN
11682 
11683          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11684          l_rulv_rec.dnz_chr_id                := p_chr_id;
11685          l_rulv_rec.rule_information1         := l_tax_owner;
11686          l_rulv_rec.rule_information_category := 'LATOWN';
11687          l_rulv_rec.std_template_yn           := 'N';
11688          l_rulv_rec.warn_yn                   := 'N';
11689 
11690          create_rule_group_and_rule(
11691                                     x_return_status => x_return_status,
11692                                     x_msg_count     => x_msg_count,
11693                                     x_msg_data      => x_msg_data,
11694                                     p_rgp_id        => l_rgp_id,
11695                                     p_rgpv_rec      => l_rgpv_rec,
11696                                     p_rulv_rec      => l_rulv_rec,
11697                                     x_rgpv_rec      => x_rgpv_rec,
11698                                     x_rulv_rec      => x_rulv_rec
11699                                    );
11700 
11701          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11702             raise header_rule_failed;
11703          END IF;
11704 
11705          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
11706             l_rgp_id := x_rgpv_rec.id;
11707          END IF;
11708 
11709       END IF; -- tax_owner
11710 */
11711 
11712       -- Rule Group LAPACT
11713 
11714       l_rgpv_rec            := NULL;
11715       l_rgp_id              := NULL;
11716       l_rgpv_rec.rgd_code   := 'LAPACT';
11717       l_rgpv_rec.chr_id     := p_chr_id;
11718       l_rgpv_rec.dnz_chr_id := p_chr_id;
11719       l_rgpv_rec.cle_id     := NULL;
11720       l_rgpv_rec.rgp_type   := 'KRG';
11721 
11722       l_rulv_rec := NULL;
11723 
11724       l_private_activity_bond_flag := p_header_rec.private_activity_bond_flag;
11725 
11726       IF (l_private_activity_bond_flag IS NULL
11727           AND
11728           p_header_rec.template_number IS NOT NULL) THEN
11729          get_contract_rules(
11730                             x_return_status  => x_return_status,
11731                             x_msg_count      => x_msg_count,
11732                             x_msg_data       => x_msg_data,
11733                             p_chr_id         => p_template_id,
11734                             p_cle_id         => NULL,
11735                             p_rgd_code       => 'LAPACT',
11736                             p_rule_code      => 'LAPACT',
11737                             x_rulv_tbl       => l_rulv_tbl,
11738                             x_rule_count     => l_rule_count
11739                            );
11740 
11741          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11742             RAISE header_rule_failed;
11743          END IF;
11744 
11745          IF (l_rule_count > 0) THEN
11746             l_private_activity_bond_flag  := l_rulv_tbl(1).rule_information1;
11747          END IF;
11748       END IF;
11749 
11750       IF (l_private_activity_bond_flag IS NOT NULL) THEN
11751          l_rulv_rec                           := NULL;
11752          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11753          l_rulv_rec.dnz_chr_id                := p_chr_id;
11754          l_rulv_rec.rule_information1         := l_private_activity_bond_flag;
11755          l_rulv_rec.rule_information_category := 'LAPACT';
11756          l_rulv_rec.std_template_yn           := 'N';
11757          l_rulv_rec.warn_yn                   := 'N';
11758       END IF;
11759 
11760       create_rule_group_and_rule(
11761                                  x_return_status => x_return_status,
11762                                  x_msg_count     => x_msg_count,
11763                                  x_msg_data      => x_msg_data,
11764                                  p_rgp_id        => l_rgp_id,
11765                                  p_rgpv_rec      => l_rgpv_rec,
11766                                  p_rulv_rec      => l_rulv_rec,
11767                                  x_rgpv_rec      => x_rgpv_rec,
11768                                  x_rulv_rec      => x_rulv_rec
11769                                 );
11770 
11771       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11772           raise header_rule_failed;
11773       END IF;
11774 
11775 
11776       debug_message('------>Rule: LAPACT/LAPACT processed');
11777 --**************************
11778 
11779       -- Rule Group AMLARL
11780 
11781       l_rgpv_rec            := NULL;
11782       l_rgp_id              := NULL;
11783       l_rgpv_rec.rgd_code   := 'AMLARL';
11784       l_rgpv_rec.chr_id     := p_chr_id;
11785       l_rgpv_rec.dnz_chr_id := p_chr_id;
11786       l_rgpv_rec.cle_id     := NULL;
11787       l_rgpv_rec.rgp_type   := 'KRG';
11788 
11789       l_rulv_rec            := NULL;
11790 
11791       l_floor_price_formula      := p_header_rec.floor_price_formula;
11792       l_remkt_sale_price_formula := p_header_rec.remkt_sale_price_formula;
11793 
11794       --debug_message('Floor Price Formula: '|| l_floor_price_formula);
11795       IF (l_floor_price_formula IS NULL
11796           OR
11797           l_remkt_sale_price_formula IS NULL
11798           AND
11799           p_header_rec.template_number IS NOT NULL) THEN
11800          get_contract_rules(
11801                             x_return_status  => x_return_status,
11802                             x_msg_count      => x_msg_count,
11803                             x_msg_data       => x_msg_data,
11804                             p_chr_id         => p_template_id,
11805                             p_cle_id         => NULL,
11806                             p_rgd_code       => 'AMLARL',
11807                             p_rule_code      => 'AMCFPR',
11808                             x_rulv_tbl       => l_rulv_tbl,
11809                             x_rule_count     => l_rule_count
11810                            );
11811 
11812          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11813             RAISE header_rule_failed;
11814          END IF;
11815 
11816          IF (l_rule_count > 0) THEN
11817             l_floor_price_formula      := NVL(l_floor_price_formula,l_rulv_tbl(1).rule_information1);
11818             l_remkt_sale_price_formula := NVL(l_remkt_sale_price_formula,l_rulv_tbl(1).rule_information2);
11819          END IF;
11820       END IF;
11821 
11822       IF (l_floor_price_formula IS NOT NULL) THEN
11823          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11824          l_rulv_rec.dnz_chr_id                := p_chr_id;
11825          l_rulv_rec.rule_information1         := l_floor_price_formula;
11826          l_rulv_rec.rule_information_category := 'AMCFPR';
11827          l_rulv_rec.std_template_yn           := 'N';
11828          l_rulv_rec.warn_yn                   := 'N';
11829       END IF;
11830 
11831       IF (l_remkt_sale_price_formula IS NOT NULL) THEN
11832          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11833          l_rulv_rec.dnz_chr_id                := p_chr_id;
11834          l_rulv_rec.rule_information2         := l_remkt_sale_price_formula;
11835          l_rulv_rec.rule_information_category := 'AMCFPR';
11836          l_rulv_rec.std_template_yn           := 'N';
11837          l_rulv_rec.warn_yn                   := 'N';
11838       END IF;
11839 
11840       create_rule_group_and_rule(
11841                                  x_return_status => x_return_status,
11842                                  x_msg_count     => x_msg_count,
11843                                  x_msg_data      => x_msg_data,
11844                                  p_rgp_id        => l_rgp_id,
11845                                  p_rgpv_rec      => l_rgpv_rec,
11846                                  p_rulv_rec      => l_rulv_rec,
11847                                  x_rgpv_rec      => x_rgpv_rec,
11848                                  x_rulv_rec      => x_rulv_rec
11849                                 );
11850 
11851       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11852           raise header_rule_failed;
11853       END IF;
11854 
11855       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
11856          l_rgp_id := x_rgpv_rec.id;
11857       END IF;
11858 
11859       debug_message('------>Rule: AMLARL/AMCFPR processed');
11860 
11861       -- Rule Group AMREPQ
11862 
11863       l_rgpv_rec            := NULL;
11864       l_rgp_id              := NULL;
11865       l_rgpv_rec.rgd_code   := 'AMREPQ';
11866       l_rgpv_rec.chr_id     := p_chr_id;
11867       l_rgpv_rec.dnz_chr_id := p_chr_id;
11868       l_rgpv_rec.cle_id     := NULL;
11869       l_rgpv_rec.rgp_type   := 'KRG';
11870 
11871       l_rulv_rec            := NULL;
11872 
11873       l_repurchase_quote_option  := p_header_rec.repurchase_quote_option;
11874       l_repurchase_quote_formula := p_header_rec.repurchase_quote_formula;
11875 
11876       IF (l_repurchase_quote_option IS NULL
11877           OR
11878           l_repurchase_quote_formula IS NULL
11879           AND
11880           p_header_rec.template_number IS NOT NULL) THEN
11881          get_contract_rules(
11882                             x_return_status  => x_return_status,
11883                             x_msg_count      => x_msg_count,
11884                             x_msg_data       => x_msg_data,
11885                             p_chr_id         => p_template_id,
11886                             p_cle_id         => NULL,
11887                             p_rgd_code       => 'AMREPQ',
11888                             p_rule_code      => 'AMARQC',
11889                             x_rulv_tbl       => l_rulv_tbl,
11890                             x_rule_count     => l_rule_count
11891                            );
11892 
11893          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11894             RAISE header_rule_failed;
11895          END IF;
11896 
11897          IF (l_rule_count > 0) THEN
11898             l_repurchase_quote_option  := NVL(l_repurchase_quote_option,l_rulv_tbl(1).rule_information1);
11899             l_repurchase_quote_formula := NVL(l_repurchase_quote_formula,l_rulv_tbl(1).rule_information2);
11900          END IF;
11901       END IF;
11902 
11903       IF (l_repurchase_quote_option IS NOT NULL) THEN
11904          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11905          l_rulv_rec.dnz_chr_id                := p_chr_id;
11906          l_rulv_rec.rule_information1         := l_repurchase_quote_option;
11907          l_rulv_rec.rule_information_category := 'AMARQC';
11908          l_rulv_rec.std_template_yn           := 'N';
11909          l_rulv_rec.warn_yn                   := 'N';
11910       END IF;
11911 
11912       IF (l_repurchase_quote_formula IS NOT NULL) THEN
11913          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11914          l_rulv_rec.dnz_chr_id                := p_chr_id;
11915          l_rulv_rec.rule_information2         := l_repurchase_quote_formula;
11916          l_rulv_rec.rule_information_category := 'AMARQC';
11917          l_rulv_rec.std_template_yn           := 'N';
11918          l_rulv_rec.warn_yn                   := 'N';
11919       END IF;
11920 
11921       create_rule_group_and_rule(
11922                                  x_return_status => x_return_status,
11923                                  x_msg_count     => x_msg_count,
11924                                  x_msg_data      => x_msg_data,
11925                                  p_rgp_id        => l_rgp_id,
11926                                  p_rgpv_rec      => l_rgpv_rec,
11927                                  p_rulv_rec      => l_rulv_rec,
11928                                  x_rgpv_rec      => x_rgpv_rec,
11929                                  x_rulv_rec      => x_rulv_rec
11930                                 );
11931 
11932       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11933           raise header_rule_failed;
11934       END IF;
11935 
11936       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
11937          l_rgp_id := x_rgpv_rec.id;
11938       END IF;
11939       debug_message('------>Rule: AMREPQ/AMARQC processed');
11940       l_rulv_rec := NULL;
11941 
11942       l_sale_price_option  := p_header_rec.sale_price_option;
11943       l_sale_price_amount  := TO_CHAR(p_header_rec.sale_price_amount);
11944       l_sale_price_formula := p_header_rec.sale_price_formula;
11945       l_sale_price_prorate := p_header_rec.sale_price_prorate;
11946 
11947       IF (l_sale_price_option IS NULL
11948           OR
11949           l_sale_price_amount IS NULL
11950           OR
11951           l_sale_price_formula IS NULL
11952           OR
11953           l_sale_price_prorate IS NULL
11954           AND
11955           p_header_rec.template_number IS NOT NULL) THEN
11956          get_contract_rules(
11957                             x_return_status  => x_return_status,
11958                             x_msg_count      => x_msg_count,
11959                             x_msg_data       => x_msg_data,
11960                             p_chr_id         => p_template_id,
11961                             p_cle_id         => NULL,
11962                             p_rgd_code       => 'AMREPQ',
11963                             p_rule_code      => 'AMBSPR',
11964                             x_rulv_tbl       => l_rulv_tbl,
11965                             x_rule_count     => l_rule_count
11966                            );
11967 
11968          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
11969             RAISE header_rule_failed;
11970          END IF;
11971 
11972          IF (l_rule_count > 0) THEN
11973             l_sale_price_option  := NVL(l_sale_price_option,l_rulv_tbl(1).rule_information1);
11974             l_sale_price_amount  := NVL(l_sale_price_amount,l_rulv_tbl(1).rule_information2);
11975             l_sale_price_formula := NVL(l_sale_price_formula,l_rulv_tbl(1).rule_information3);
11976             l_sale_price_prorate := NVL(l_sale_price_prorate,l_rulv_tbl(1).rule_information4);
11977          END IF;
11978       END IF;
11979 
11980       IF (l_sale_price_option IS NOT NULL) THEN
11981          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11982          l_rulv_rec.dnz_chr_id                := p_chr_id;
11983          l_rulv_rec.rule_information1         := l_sale_price_option;
11984          l_rulv_rec.rule_information_category := 'AMBSPR';
11985          l_rulv_rec.std_template_yn           := 'N';
11986          l_rulv_rec.warn_yn                   := 'N';
11987       END IF;
11988 
11989       IF (l_sale_price_amount IS NOT NULL) THEN
11990          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
11991          l_rulv_rec.dnz_chr_id                := p_chr_id;
11992          l_rulv_rec.rule_information2         := l_sale_price_amount;
11993          l_rulv_rec.rule_information_category := 'AMBSPR';
11994          l_rulv_rec.std_template_yn           := 'N';
11995          l_rulv_rec.warn_yn                   := 'N';
11996       END IF;
11997 
11998       IF (l_sale_price_formula IS NOT NULL) THEN
11999          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12000          l_rulv_rec.dnz_chr_id                := p_chr_id;
12001          l_rulv_rec.rule_information3         := l_sale_price_formula;
12002          l_rulv_rec.rule_information_category := 'AMBSPR';
12003          l_rulv_rec.std_template_yn           := 'N';
12004          l_rulv_rec.warn_yn                   := 'N';
12005       END IF;
12006 
12007       IF (l_sale_price_prorate IS NOT NULL) THEN
12008          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12009          l_rulv_rec.dnz_chr_id                := p_chr_id;
12010          l_rulv_rec.rule_information4         := l_sale_price_prorate;
12011          l_rulv_rec.rule_information_category := 'AMBSPR';
12012          l_rulv_rec.std_template_yn           := 'N';
12013          l_rulv_rec.warn_yn                   := 'N';
12014       END IF;
12015 
12016       create_rule_group_and_rule(
12017                                  x_return_status => x_return_status,
12018                                  x_msg_count     => x_msg_count,
12019                                  x_msg_data      => x_msg_data,
12020                                  p_rgp_id        => l_rgp_id,
12021                                  p_rgpv_rec      => l_rgpv_rec,
12022                                  p_rulv_rec      => l_rulv_rec,
12023                                  x_rgpv_rec      => x_rgpv_rec,
12024                                  x_rulv_rec      => x_rulv_rec
12025                                 );
12026 
12027       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12028           raise header_rule_failed;
12029       END IF;
12030 
12031       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
12032          l_rgp_id := x_rgpv_rec.id;
12033       END IF;
12034 
12035       debug_message('------>Rule: AMREPQ/AMBSPR processed');
12036       l_rulv_rec := NULL;
12037 
12038       l_discount_rate_option  := p_header_rec.discount_rate_option;
12039       l_discount_rate_amount  := p_header_rec.discount_rate_amount;
12040       l_discount_rate_formula := p_header_rec.discount_rate_formula;
12041       l_discount_rate_prorate := p_header_rec.discount_rate_prorate;
12042 
12043       IF (l_discount_rate_option IS NULL
12044           OR
12045           l_discount_rate_amount IS NULL
12046           OR
12047           l_discount_rate_formula IS NULL
12048           OR
12049           l_discount_rate_prorate IS NULL
12050           AND
12051           p_header_rec.template_number IS NOT NULL) THEN
12052          get_contract_rules(
12053                             x_return_status  => x_return_status,
12054                             x_msg_count      => x_msg_count,
12055                             x_msg_data       => x_msg_data,
12056                             p_chr_id         => p_template_id,
12057                             p_cle_id         => NULL,
12058                             p_rgd_code       => 'AMREPQ',
12059                             p_rule_code      => 'AMCQDR',
12060                             x_rulv_tbl       => l_rulv_tbl,
12061                             x_rule_count     => l_rule_count
12062                            );
12063 
12064          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12065             RAISE header_rule_failed;
12066          END IF;
12067 
12068          IF (l_rule_count > 0) THEN
12069             l_discount_rate_option  := NVL(l_discount_rate_option,l_rulv_tbl(1).rule_information1);
12070             l_discount_rate_amount  := NVL(l_discount_rate_amount,l_rulv_tbl(1).rule_information2);
12071             l_discount_rate_formula := NVL(l_discount_rate_formula,l_rulv_tbl(1).rule_information3);
12072             l_discount_rate_prorate := NVL(l_discount_rate_prorate,l_rulv_tbl(1).rule_information4);
12073          END IF;
12074       END IF;
12075 
12076       IF (l_discount_rate_option IS NOT NULL) THEN
12077          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12078          l_rulv_rec.dnz_chr_id                := p_chr_id;
12079          l_rulv_rec.rule_information1         := l_discount_rate_option;
12080          l_rulv_rec.rule_information_category := 'AMCQDR';
12081          l_rulv_rec.std_template_yn           := 'N';
12082          l_rulv_rec.warn_yn                   := 'N';
12083       END IF;
12084 
12085       IF (l_discount_rate_amount IS NOT NULL) THEN
12086          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12087          l_rulv_rec.dnz_chr_id                := p_chr_id;
12088          l_rulv_rec.rule_information2         := l_discount_rate_amount;
12089          l_rulv_rec.rule_information_category := 'AMCQDR';
12090          l_rulv_rec.std_template_yn           := 'N';
12091          l_rulv_rec.warn_yn                   := 'N';
12092       END IF;
12093 
12094       IF (l_discount_rate_formula IS NOT NULL) THEN
12095          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12096          l_rulv_rec.dnz_chr_id                := p_chr_id;
12097          l_rulv_rec.rule_information3         := l_discount_rate_formula;
12098          l_rulv_rec.rule_information_category := 'AMCQDR';
12099          l_rulv_rec.std_template_yn           := 'N';
12100          l_rulv_rec.warn_yn                   := 'N';
12101       END IF;
12102 
12103       IF (l_discount_rate_prorate IS NOT NULL) THEN
12104          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12105          l_rulv_rec.dnz_chr_id                := p_chr_id;
12106          l_rulv_rec.rule_information4         := l_discount_rate_prorate;
12107          l_rulv_rec.rule_information_category := 'AMCQDR';
12108          l_rulv_rec.std_template_yn           := 'N';
12109          l_rulv_rec.warn_yn                   := 'N';
12110       END IF;
12111 
12112       create_rule_group_and_rule(
12113                                  x_return_status => x_return_status,
12114                                  x_msg_count     => x_msg_count,
12115                                  x_msg_data      => x_msg_data,
12116                                  p_rgp_id        => l_rgp_id,
12117                                  p_rgpv_rec      => l_rgpv_rec,
12118                                  p_rulv_rec      => l_rulv_rec,
12119                                  x_rgpv_rec      => x_rgpv_rec,
12120                                  x_rulv_rec      => x_rulv_rec
12121                                 );
12122 
12123       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12124           raise header_rule_failed;
12125       END IF;
12126 
12127       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
12128          l_rgp_id := x_rgpv_rec.id;
12129       END IF;
12130       debug_message('------>Rule: AMREPQ/AMCQDR processed');
12131       l_rulv_rec := NULL;
12132 
12133       l_quote_fee_option   := p_header_rec.quote_fee_option;
12134       l_quote_fee_amount   := TO_CHAR(p_header_rec.quote_fee_amount);
12135       l_quote_fee_formula  := p_header_rec.quote_fee_formula;
12136       l_quote_fee_prorate  := p_header_rec.quote_fee_prorate;
12137 
12138       IF (l_quote_fee_option IS NULL
12139           OR
12140           l_quote_fee_amount IS NULL
12141           OR
12142           l_quote_fee_formula IS NULL
12143           OR
12144           l_quote_fee_prorate IS NULL
12145           AND
12146           p_header_rec.template_number IS NOT NULL) THEN
12147          get_contract_rules(
12148                             x_return_status  => x_return_status,
12149                             x_msg_count      => x_msg_count,
12150                             x_msg_data       => x_msg_data,
12151                             p_chr_id         => p_template_id,
12152                             p_cle_id         => NULL,
12153                             p_rgd_code       => 'AMREPQ',
12154                             p_rule_code      => 'AMCQFE',
12155                             x_rulv_tbl       => l_rulv_tbl,
12156                             x_rule_count     => l_rule_count
12157                            );
12158 
12159          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12160             RAISE header_rule_failed;
12161          END IF;
12162 
12163          IF (l_rule_count > 0) THEN
12164             l_quote_fee_option  := NVL(l_quote_fee_option,l_rulv_tbl(1).rule_information1);
12165             l_quote_fee_amount  := NVL(l_quote_fee_amount,l_rulv_tbl(1).rule_information2);
12166             l_quote_fee_formula := NVL(l_quote_fee_formula,l_rulv_tbl(1).rule_information3);
12167             l_quote_fee_prorate := NVL(l_quote_fee_prorate,l_rulv_tbl(1).rule_information4);
12168          END IF;
12169       END IF;
12170 
12171       IF (l_quote_fee_option IS NOT NULL) THEN
12172          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12173          l_rulv_rec.dnz_chr_id                := p_chr_id;
12174          l_rulv_rec.rule_information1         := l_quote_fee_option;
12175          l_rulv_rec.rule_information_category := 'AMCQFE';
12176          l_rulv_rec.std_template_yn           := 'N';
12177          l_rulv_rec.warn_yn                   := 'N';
12178       END IF;
12179 
12180       IF (l_quote_fee_amount IS NOT NULL) THEN
12181          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12182          l_rulv_rec.dnz_chr_id                := p_chr_id;
12183          l_rulv_rec.rule_information2         := l_quote_fee_amount;
12184          l_rulv_rec.rule_information_category := 'AMCQFE';
12185          l_rulv_rec.std_template_yn           := 'N';
12186          l_rulv_rec.warn_yn                   := 'N';
12187       END IF;
12188 
12189       IF (l_quote_fee_formula IS NOT NULL) THEN
12190          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12191          l_rulv_rec.dnz_chr_id                := p_chr_id;
12192          l_rulv_rec.rule_information3         := l_quote_fee_formula;
12193          l_rulv_rec.rule_information_category := 'AMCQFE';
12194          l_rulv_rec.std_template_yn           := 'N';
12195          l_rulv_rec.warn_yn                   := 'N';
12196       END IF;
12197 
12198       IF (l_quote_fee_prorate IS NOT NULL) THEN
12199          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12200          l_rulv_rec.dnz_chr_id                := p_chr_id;
12201          l_rulv_rec.rule_information4         := l_quote_fee_prorate;
12202          l_rulv_rec.rule_information_category := 'AMCQFE';
12203          l_rulv_rec.std_template_yn           := 'N';
12204          l_rulv_rec.warn_yn                   := 'N';
12205       END IF;
12206 
12207       create_rule_group_and_rule(
12208                                  x_return_status => x_return_status,
12209                                  x_msg_count     => x_msg_count,
12210                                  x_msg_data      => x_msg_data,
12211                                  p_rgp_id        => l_rgp_id,
12212                                  p_rgpv_rec      => l_rgpv_rec,
12213                                  p_rulv_rec      => l_rulv_rec,
12214                                  x_rgpv_rec      => x_rgpv_rec,
12215                                  x_rulv_rec      => x_rulv_rec
12216                                 );
12217 
12218       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12219           raise header_rule_failed;
12220       END IF;
12221 
12222       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
12223          l_rgp_id := x_rgpv_rec.id;
12224       END IF;
12225 
12226       debug_message('------>Rule: AMREPQ/AMCQFE processed');
12227       -- Rule Group AMTEOC
12228 
12229       l_rgpv_rec            := NULL;
12230       l_rgp_id              := NULL;
12231       l_rgpv_rec.rgd_code   := 'AMTEOC';
12232       l_rgpv_rec.chr_id     := p_chr_id;
12233       l_rgpv_rec.dnz_chr_id := p_chr_id;
12234       l_rgpv_rec.cle_id     := NULL;
12235       l_rgpv_rec.rgp_type   := 'KRG';
12236 
12237       l_rulv_rec            := NULL;
12238 
12239       l_ert_purchase_opt              := p_header_rec.ert_purchase_opt;
12240       l_ert_purchase_opt_type         := p_header_rec.ert_purchase_opt_type;
12241       l_ert_purchase_opt_amount       := TO_CHAR(p_header_rec.ert_purchase_opt_amount);
12242       l_ert_purchase_opt_formula      := p_header_rec.ert_purchase_opt_formula;
12243       l_ert_purchase_opt_prorate      := p_header_rec.ert_purchase_opt_prorate;
12244       l_ert_purchase_opt_max_opt      := p_header_rec.ert_purchase_opt_max_opt;
12245       l_ert_purchase_opt_max_amt      := TO_CHAR(p_header_rec.ert_purchase_opt_max_amt);
12246       l_ert_purchase_opt_max_formula  := p_header_rec.ert_purchase_opt_max_formula;
12247       l_ert_purchase_opt_min_opt      := p_header_rec.ert_purchase_opt_min_opt;
12248       l_ert_purchase_opt_min_amt      := TO_CHAR(p_header_rec.ert_purchase_opt_min_amt);
12249       l_ert_purchase_opt_min_formula  := p_header_rec.ert_purchase_opt_min_formula;
12250 
12251       IF (l_ert_purchase_opt IS NULL
12252           OR
12253           l_ert_purchase_opt_type IS NULL
12254           OR
12255           l_ert_purchase_opt_amount IS NULL
12256           OR
12257           l_ert_purchase_opt_formula IS NULL
12258           OR
12259           l_ert_purchase_opt_prorate IS NULL
12260           OR
12261           l_ert_purchase_opt_max_opt IS NULL
12262           OR
12263           l_ert_purchase_opt_max_amt IS NULL
12264           OR
12265           l_ert_purchase_opt_max_formula IS NULL
12266           OR
12267           l_ert_purchase_opt_min_opt IS NULL
12268           OR
12269           l_ert_purchase_opt_min_amt IS NULL
12270           OR
12271           l_ert_purchase_opt_min_formula IS NULL
12272           AND
12273           p_header_rec.template_number IS NOT NULL) THEN
12274          get_contract_rules(
12275                             x_return_status  => x_return_status,
12276                             x_msg_count      => x_msg_count,
12277                             x_msg_data       => x_msg_data,
12278                             p_chr_id         => p_template_id,
12279                             p_cle_id         => NULL,
12280                             p_rgd_code       => 'AMTEOC',
12281                             p_rule_code      => 'AMBPOC',
12282                             x_rulv_tbl       => l_rulv_tbl,
12283                             x_rule_count     => l_rule_count
12284                            );
12285 
12286          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12287             RAISE header_rule_failed;
12288          END IF;
12289 
12290          IF (l_rule_count > 0) THEN
12291             l_ert_purchase_opt              := NVL(l_ert_purchase_opt,l_rulv_tbl(1).rule_information1);
12292             l_ert_purchase_opt_type         := NVL(l_ert_purchase_opt_type,l_rulv_tbl(1).rule_information11);
12293             l_ert_purchase_opt_amount       := NVL(l_ert_purchase_opt_amount,l_rulv_tbl(1).rule_information2);
12294             l_ert_purchase_opt_formula      := NVL(l_ert_purchase_opt_formula,l_rulv_tbl(1).rule_information3);
12295             l_ert_purchase_opt_prorate      := NVL(l_ert_purchase_opt_prorate,l_rulv_tbl(1).rule_information4);
12296             l_ert_purchase_opt_max_opt      := NVL(l_ert_purchase_opt_max_opt,l_rulv_tbl(1).rule_information5);
12297             l_ert_purchase_opt_max_amt      := NVL(l_ert_purchase_opt_max_amt,l_rulv_tbl(1).rule_information6);
12298             l_ert_purchase_opt_max_formula  := NVL(l_ert_purchase_opt_max_formula,l_rulv_tbl(1).rule_information7);
12299             l_ert_purchase_opt_min_opt      := NVL(l_ert_purchase_opt_min_opt,l_rulv_tbl(1).rule_information8);
12300             l_ert_purchase_opt_min_amt      := NVL(l_ert_purchase_opt_min_amt,l_rulv_tbl(1).rule_information9);
12301             l_ert_purchase_opt_min_formula  := NVL(l_ert_purchase_opt_min_formula,l_rulv_tbl(1).rule_information10);
12302          END IF;
12303       END IF;
12304 
12305       IF (l_ert_purchase_opt IS NOT NULL) THEN
12306          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12307          l_rulv_rec.dnz_chr_id                := p_chr_id;
12308          l_rulv_rec.rule_information1         := l_ert_purchase_opt;
12309          l_rulv_rec.rule_information_category := 'AMBPOC';
12310          l_rulv_rec.std_template_yn           := 'N';
12311          l_rulv_rec.warn_yn                   := 'N';
12312       END IF;
12313 
12314       IF (l_ert_purchase_opt_type IS NOT NULL) THEN
12315          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12316          l_rulv_rec.dnz_chr_id                := p_chr_id;
12317          l_rulv_rec.rule_information11        := l_ert_purchase_opt_type;
12318          l_rulv_rec.rule_information_category := 'AMBPOC';
12319          l_rulv_rec.std_template_yn           := 'N';
12320          l_rulv_rec.warn_yn                   := 'N';
12321       END IF;
12322 
12323       IF (l_ert_purchase_opt_amount IS NOT NULL) THEN
12324          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12325          l_rulv_rec.dnz_chr_id                := p_chr_id;
12326          l_rulv_rec.rule_information2         := l_ert_purchase_opt_amount;
12327          l_rulv_rec.rule_information_category := 'AMBPOC';
12328          l_rulv_rec.std_template_yn           := 'N';
12329          l_rulv_rec.warn_yn                   := 'N';
12330       END IF;
12331 
12332       IF (l_ert_purchase_opt_formula IS NOT NULL) THEN
12333          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12334          l_rulv_rec.dnz_chr_id                := p_chr_id;
12335          l_rulv_rec.rule_information3         := l_ert_purchase_opt_formula;
12336          l_rulv_rec.rule_information_category := 'AMBPOC';
12337          l_rulv_rec.std_template_yn           := 'N';
12338          l_rulv_rec.warn_yn                   := 'N';
12339       END IF;
12340 
12341       IF (l_ert_purchase_opt_prorate IS NOT NULL) THEN
12342          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12343          l_rulv_rec.dnz_chr_id                := p_chr_id;
12344          l_rulv_rec.rule_information4         := l_ert_purchase_opt_prorate;
12345          l_rulv_rec.rule_information_category := 'AMBPOC';
12346          l_rulv_rec.std_template_yn           := 'N';
12347          l_rulv_rec.warn_yn                   := 'N';
12348       END IF;
12349 
12350       IF (l_ert_purchase_opt_max_opt IS NOT NULL) THEN
12351          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12352          l_rulv_rec.dnz_chr_id                := p_chr_id;
12353          l_rulv_rec.rule_information5         := l_ert_purchase_opt_max_opt;
12354          l_rulv_rec.rule_information_category := 'AMBPOC';
12355          l_rulv_rec.std_template_yn           := 'N';
12356          l_rulv_rec.warn_yn                   := 'N';
12357       END IF;
12358 
12359       IF (l_ert_purchase_opt_max_amt IS NOT NULL) THEN
12360          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12361          l_rulv_rec.dnz_chr_id                := p_chr_id;
12362          l_rulv_rec.rule_information6         := l_ert_purchase_opt_max_amt;
12363          l_rulv_rec.rule_information_category := 'AMBPOC';
12364          l_rulv_rec.std_template_yn           := 'N';
12365          l_rulv_rec.warn_yn                   := 'N';
12366       END IF;
12367 
12368       IF (l_ert_purchase_opt_max_formula IS NOT NULL) THEN
12369          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12370          l_rulv_rec.dnz_chr_id                := p_chr_id;
12371          l_rulv_rec.rule_information7         := l_ert_purchase_opt_max_formula;
12372          l_rulv_rec.rule_information_category := 'AMBPOC';
12373          l_rulv_rec.std_template_yn           := 'N';
12374          l_rulv_rec.warn_yn                   := 'N';
12375       END IF;
12376 
12377       IF (l_ert_purchase_opt_min_opt IS NOT NULL) THEN
12378          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12379          l_rulv_rec.dnz_chr_id                := p_chr_id;
12380          l_rulv_rec.rule_information8         := l_ert_purchase_opt_min_opt;
12381          l_rulv_rec.rule_information_category := 'AMBPOC';
12382          l_rulv_rec.std_template_yn           := 'N';
12383          l_rulv_rec.warn_yn                   := 'N';
12384       END IF;
12385 
12386       IF (l_ert_purchase_opt_min_amt IS NOT NULL) THEN
12387          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12388          l_rulv_rec.dnz_chr_id                := p_chr_id;
12389          l_rulv_rec.rule_information9         := l_ert_purchase_opt_min_amt;
12390          l_rulv_rec.rule_information_category := 'AMBPOC';
12391          l_rulv_rec.std_template_yn           := 'N';
12392          l_rulv_rec.warn_yn                   := 'N';
12393       END IF;
12394 
12395       IF (l_ert_purchase_opt_min_formula IS NOT NULL) THEN
12396          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12397          l_rulv_rec.dnz_chr_id                := p_chr_id;
12398          l_rulv_rec.rule_information10        := l_ert_purchase_opt_min_formula;
12399          l_rulv_rec.rule_information_category := 'AMBPOC';
12400          l_rulv_rec.std_template_yn           := 'N';
12401          l_rulv_rec.warn_yn                   := 'N';
12402       END IF;
12403 
12404       create_rule_group_and_rule(
12405                                  x_return_status => x_return_status,
12406                                  x_msg_count     => x_msg_count,
12407                                  x_msg_data      => x_msg_data,
12408                                  p_rgp_id        => l_rgp_id,
12409                                  p_rgpv_rec      => l_rgpv_rec,
12410                                  p_rulv_rec      => l_rulv_rec,
12411                                  x_rgpv_rec      => x_rgpv_rec,
12412                                  x_rulv_rec      => x_rulv_rec
12413                                 );
12414 
12415       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12416           raise header_rule_failed;
12417       END IF;
12418 
12419       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
12420          l_rgp_id := x_rgpv_rec.id;
12421       END IF;
12422 
12423       debug_message('------>Rule: AMTEOC/AMBPOC processed');
12424       -- Rule Group AMTFOC
12425 
12426       l_rgpv_rec            := NULL;
12427       l_rgp_id              := NULL;
12428       l_rgpv_rec.rgd_code   := 'AMTFOC';
12429       l_rgpv_rec.chr_id     := p_chr_id;
12430       l_rgpv_rec.dnz_chr_id := p_chr_id;
12431       l_rgpv_rec.cle_id     := NULL;
12432       l_rgpv_rec.rgp_type   := 'KRG';
12433 
12434       l_rulv_rec            := NULL;
12435 
12436       l_eot_purchase_opt              := p_header_rec.eot_purchase_opt;
12437       l_eot_purchase_opt_type         := p_header_rec.eot_purchase_opt_type;
12438       l_eot_purchase_opt_amount       := TO_CHAR(p_header_rec.eot_purchase_opt_amount);
12439       l_eot_purchase_opt_formula      := p_header_rec.eot_purchase_opt_formula;
12440       l_eot_purchase_opt_prorate      := p_header_rec.eot_purchase_opt_prorate;
12441       l_eot_purchase_opt_max_opt      := p_header_rec.eot_purchase_opt_max_opt;
12442       l_eot_purchase_opt_max_amt      := TO_CHAR(p_header_rec.eot_purchase_opt_max_amt);
12443       l_eot_purchase_opt_max_formula  := p_header_rec.eot_purchase_opt_max_formula;
12444       l_eot_purchase_opt_min_opt      := p_header_rec.eot_purchase_opt_min_opt;
12445       l_eot_purchase_opt_min_amt      := TO_CHAR(p_header_rec.eot_purchase_opt_min_amt);
12446       l_eot_purchase_opt_min_formula  := p_header_rec.eot_purchase_opt_min_formula;
12447 
12448       IF (l_eot_purchase_opt IS NULL
12449           OR
12450           l_eot_purchase_opt_type IS NULL
12451           OR
12452           l_eot_purchase_opt_amount IS NULL
12453           OR
12454           l_eot_purchase_opt_formula IS NULL
12455           OR
12456           l_eot_purchase_opt_prorate IS NULL
12457           OR
12458           l_eot_purchase_opt_max_opt IS NULL
12459           OR
12460           l_eot_purchase_opt_max_amt IS NULL
12461           OR
12462           l_eot_purchase_opt_max_formula IS NULL
12463           OR
12464           l_eot_purchase_opt_min_opt IS NULL
12465           OR
12466           l_eot_purchase_opt_min_amt IS NULL
12467           OR
12468           l_eot_purchase_opt_min_formula IS NULL
12469           AND
12470           p_header_rec.template_number IS NOT NULL) THEN
12471          get_contract_rules(
12472                             x_return_status  => x_return_status,
12473                             x_msg_count      => x_msg_count,
12474                             x_msg_data       => x_msg_data,
12475                             p_chr_id         => p_template_id,
12476                             p_cle_id         => NULL,
12477                             p_rgd_code       => 'AMTFOC',
12478                             p_rule_code      => 'AMBPOC',
12479                             x_rulv_tbl       => l_rulv_tbl,
12480                             x_rule_count     => l_rule_count
12481                            );
12482 
12483          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12484             RAISE header_rule_failed;
12485          END IF;
12486 
12487          IF (l_rule_count > 0) THEN
12488             l_eot_purchase_opt              := NVL(l_eot_purchase_opt,l_rulv_tbl(1).rule_information1);
12489             l_eot_purchase_opt_type         := NVL(l_eot_purchase_opt_type,l_rulv_tbl(1).rule_information11);
12490             l_eot_purchase_opt_amount       := NVL(l_eot_purchase_opt_amount,l_rulv_tbl(1).rule_information2);
12491             l_eot_purchase_opt_formula      := NVL(l_eot_purchase_opt_formula,l_rulv_tbl(1).rule_information3);
12492             l_eot_purchase_opt_prorate      := NVL(l_eot_purchase_opt_prorate,l_rulv_tbl(1).rule_information4);
12493             l_eot_purchase_opt_max_opt      := NVL(l_eot_purchase_opt_max_opt,l_rulv_tbl(1).rule_information5);
12494             l_eot_purchase_opt_max_amt      := NVL(l_eot_purchase_opt_max_amt,l_rulv_tbl(1).rule_information6);
12495             l_eot_purchase_opt_max_formula  := NVL(l_eot_purchase_opt_max_formula,l_rulv_tbl(1).rule_information7);
12496             l_eot_purchase_opt_min_opt      := NVL(l_eot_purchase_opt_min_opt,l_rulv_tbl(1).rule_information8);
12497             l_eot_purchase_opt_min_amt      := NVL(l_eot_purchase_opt_min_amt,l_rulv_tbl(1).rule_information9);
12498             l_eot_purchase_opt_min_formula  := NVL(l_eot_purchase_opt_min_formula,l_rulv_tbl(1).rule_information10);
12499          END IF;
12500       END IF;
12501 
12502       IF (l_eot_purchase_opt IS NOT NULL) THEN
12503          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12504          l_rulv_rec.dnz_chr_id                := p_chr_id;
12505          l_rulv_rec.rule_information1         := l_eot_purchase_opt;
12506          l_rulv_rec.rule_information_category := 'AMBPOC';
12507          l_rulv_rec.std_template_yn           := 'N';
12508          l_rulv_rec.warn_yn                   := 'N';
12509       END IF;
12510 
12511       IF (l_eot_purchase_opt_type IS NOT NULL) THEN
12512          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12513          l_rulv_rec.dnz_chr_id                := p_chr_id;
12514          l_rulv_rec.rule_information11        := l_eot_purchase_opt_type;
12515          l_rulv_rec.rule_information_category := 'AMBPOC';
12516          l_rulv_rec.std_template_yn           := 'N';
12517          l_rulv_rec.warn_yn                   := 'N';
12518       END IF;
12519 
12520       IF (l_eot_purchase_opt_amount IS NOT NULL) THEN
12521          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12522          l_rulv_rec.dnz_chr_id                := p_chr_id;
12523          l_rulv_rec.rule_information2         := l_eot_purchase_opt_amount;
12524          l_rulv_rec.rule_information_category := 'AMBPOC';
12525          l_rulv_rec.std_template_yn           := 'N';
12526          l_rulv_rec.warn_yn                   := 'N';
12527       END IF;
12528 
12529       IF (l_eot_purchase_opt_formula IS NOT NULL) THEN
12530          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12531          l_rulv_rec.dnz_chr_id                := p_chr_id;
12532          l_rulv_rec.rule_information3         := l_eot_purchase_opt_formula;
12533          l_rulv_rec.rule_information_category := 'AMBPOC';
12534          l_rulv_rec.std_template_yn           := 'N';
12535          l_rulv_rec.warn_yn                   := 'N';
12536       END IF;
12537 
12538       IF (l_eot_purchase_opt_prorate IS NOT NULL) THEN
12539          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12540          l_rulv_rec.dnz_chr_id                := p_chr_id;
12541          l_rulv_rec.rule_information4         := l_eot_purchase_opt_prorate;
12542          l_rulv_rec.rule_information_category := 'AMBPOC';
12543          l_rulv_rec.std_template_yn           := 'N';
12544          l_rulv_rec.warn_yn                   := 'N';
12545       END IF;
12546 
12547       IF (l_eot_purchase_opt_max_opt IS NOT NULL) THEN
12548          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12549          l_rulv_rec.dnz_chr_id                := p_chr_id;
12550          l_rulv_rec.rule_information5         := l_eot_purchase_opt_max_opt;
12551          l_rulv_rec.rule_information_category := 'AMBPOC';
12552          l_rulv_rec.std_template_yn           := 'N';
12553          l_rulv_rec.warn_yn                   := 'N';
12554       END IF;
12555 
12556       IF (l_eot_purchase_opt_max_amt IS NOT NULL) THEN
12557          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12558          l_rulv_rec.dnz_chr_id                := p_chr_id;
12559          l_rulv_rec.rule_information6         := l_eot_purchase_opt_max_amt;
12560          l_rulv_rec.rule_information_category := 'AMBPOC';
12561          l_rulv_rec.std_template_yn           := 'N';
12562          l_rulv_rec.warn_yn                   := 'N';
12563       END IF;
12564 
12565       IF (l_eot_purchase_opt_max_formula IS NOT NULL) THEN
12566          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12567          l_rulv_rec.dnz_chr_id                := p_chr_id;
12568          l_rulv_rec.rule_information7         := l_eot_purchase_opt_max_formula;
12569          l_rulv_rec.rule_information_category := 'AMBPOC';
12570          l_rulv_rec.std_template_yn           := 'N';
12571          l_rulv_rec.warn_yn                   := 'N';
12572       END IF;
12573 
12574       IF (l_eot_purchase_opt_min_opt IS NOT NULL) THEN
12575          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12576          l_rulv_rec.dnz_chr_id                := p_chr_id;
12577          l_rulv_rec.rule_information8         := l_eot_purchase_opt_min_opt;
12578          l_rulv_rec.rule_information_category := 'AMBPOC';
12579          l_rulv_rec.std_template_yn           := 'N';
12580          l_rulv_rec.warn_yn                   := 'N';
12581       END IF;
12582 
12583       IF (l_eot_purchase_opt_min_amt IS NOT NULL) THEN
12584          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12585          l_rulv_rec.dnz_chr_id                := p_chr_id;
12586          l_rulv_rec.rule_information9         := l_eot_purchase_opt_min_amt;
12587          l_rulv_rec.rule_information_category := 'AMBPOC';
12588          l_rulv_rec.std_template_yn           := 'N';
12589          l_rulv_rec.warn_yn                   := 'N';
12590       END IF;
12591 
12592       IF (l_eot_purchase_opt_min_formula IS NOT NULL) THEN
12593          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12594          l_rulv_rec.dnz_chr_id                := p_chr_id;
12595          l_rulv_rec.rule_information10        := l_eot_purchase_opt_min_formula;
12596          l_rulv_rec.rule_information_category := 'AMBPOC';
12597          l_rulv_rec.std_template_yn           := 'N';
12598          l_rulv_rec.warn_yn                   := 'N';
12599       END IF;
12600 
12601       create_rule_group_and_rule(
12602                                  x_return_status => x_return_status,
12603                                  x_msg_count     => x_msg_count,
12604                                  x_msg_data      => x_msg_data,
12605                                  p_rgp_id        => l_rgp_id,
12606                                  p_rgpv_rec      => l_rgpv_rec,
12607                                  p_rulv_rec      => l_rulv_rec,
12608                                  x_rgpv_rec      => x_rgpv_rec,
12609                                  x_rulv_rec      => x_rulv_rec
12610                                 );
12611 
12612       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12613           raise header_rule_failed;
12614       END IF;
12615 
12616       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
12617          l_rgp_id := x_rgpv_rec.id;
12618       END IF;
12619 
12620       debug_message('------>Rule: AMTFOC/AMBPOC processed');
12621 
12622       l_rulv_rec := NULL;
12623 
12624       l_eot_auto_proc_purchase_opt := p_header_rec.eot_auto_proc_purchase_opt;
12625 
12626       IF (l_eot_auto_proc_purchase_opt IS NULL
12627           AND
12628           p_header_rec.template_number IS NOT NULL) THEN
12629          get_contract_rules(
12630                             x_return_status  => x_return_status,
12631                             x_msg_count      => x_msg_count,
12632                             x_msg_data       => x_msg_data,
12633                             p_chr_id         => p_template_id,
12634                             p_cle_id         => NULL,
12635                             p_rgd_code       => 'AMTFOC',
12636                             p_rule_code      => 'AMTINV',
12637                             x_rulv_tbl       => l_rulv_tbl,
12638                             x_rule_count     => l_rule_count
12639                            );
12640 
12641          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12642             RAISE header_rule_failed;
12643          END IF;
12644 
12645          IF (l_rule_count > 0) THEN
12646             l_eot_auto_proc_purchase_opt := NVL(l_eot_auto_proc_purchase_opt,l_rulv_tbl(1).rule_information1);
12647          END IF;
12648       END IF;
12649 
12650       IF (l_eot_auto_proc_purchase_opt IS NOT NULL) THEN
12651          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12652          l_rulv_rec.dnz_chr_id                := p_chr_id;
12653          l_rulv_rec.rule_information1         := l_eot_auto_proc_purchase_opt;
12654          l_rulv_rec.rule_information_category := 'AMTINV';
12655          l_rulv_rec.std_template_yn           := 'N';
12656          l_rulv_rec.warn_yn                   := 'N';
12657       END IF;
12658 
12659       create_rule_group_and_rule(
12660                                  x_return_status => x_return_status,
12661                                  x_msg_count     => x_msg_count,
12662                                  x_msg_data      => x_msg_data,
12663                                  p_rgp_id        => l_rgp_id,
12664                                  p_rgpv_rec      => l_rgpv_rec,
12665                                  p_rulv_rec      => l_rulv_rec,
12666                                  x_rgpv_rec      => x_rgpv_rec,
12667                                  x_rulv_rec      => x_rulv_rec
12668                                 );
12669 
12670       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12671           raise header_rule_failed;
12672       END IF;
12673 
12674       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
12675          l_rgp_id := x_rgpv_rec.id;
12676       END IF;
12677 
12678       debug_message('------>Rule: AMTFOC/AMTINV processed');
12679 
12680       -- Rule Group AMTQPR
12681 
12682       l_rgpv_rec            := NULL;
12683       l_rgp_id              := NULL;
12684       l_rgpv_rec.rgd_code   := 'AMTQPR';
12685       l_rgpv_rec.chr_id     := p_chr_id;
12686       l_rgpv_rec.dnz_chr_id := p_chr_id;
12687       l_rgpv_rec.cle_id     := NULL;
12688       l_rgpv_rec.rgp_type   := 'KRG';
12689 
12690       l_rulv_rec            := NULL;
12691 
12692 -- cklee bug# 3440442 bug# 3440442
12693      IF (NVL(p_header_rec.tqp_erl_termination_alwd_flag,'N') NOT IN ('Y','N')) THEN
12694            okl_api.set_message(
12695                                G_APP_NAME,
12696                                G_INVALID_VALUE,
12697                                'CONTRACT_NUM',
12698                                p_header_rec.contract_number_old,
12699                                'COL_NAME',
12700                                'TQP_ERL_TERMINATION_ALWD_FLAG',
12701                                'COL_VALUE',
12702                                p_header_rec.tqp_erl_termination_alwd_flag
12703                               );
12704 
12705          x_return_status := OKL_API.G_RET_STS_ERROR;
12706 
12707         raise header_rule_failed;
12708      END IF;
12709 -- cklee bug# 3440442 bug# 3440442
12710 
12711       l_tqp_erl_term_alwd_flag := p_header_rec.tqp_erl_termination_alwd_flag;
12712 
12713       IF (l_tqp_erl_term_alwd_flag IS NULL
12714           AND
12715           p_header_rec.template_number IS NOT NULL) THEN
12716          get_contract_rules(
12717                             x_return_status  => x_return_status,
12718                             x_msg_count      => x_msg_count,
12719                             x_msg_data       => x_msg_data,
12720                             p_chr_id         => p_template_id,
12721                             p_cle_id         => NULL,
12722                             p_rgd_code       => 'AMTQPR',
12723                             p_rule_code      => 'AMCTTA',
12724                             x_rulv_tbl       => l_rulv_tbl,
12725                             x_rule_count     => l_rule_count
12726                            );
12727 
12728          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12729             RAISE header_rule_failed;
12730          END IF;
12731 
12732          IF (l_rule_count > 0) THEN
12733             l_tqp_erl_term_alwd_flag := NVL(l_tqp_erl_term_alwd_flag,l_rulv_tbl(1).rule_information1);
12734          END IF;
12735       END IF;
12736 
12737       IF (l_tqp_erl_term_alwd_flag 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_information1         := l_tqp_erl_term_alwd_flag;
12741          l_rulv_rec.rule_information_category := 'AMCTTA';
12742          l_rulv_rec.std_template_yn           := 'N';
12743          l_rulv_rec.warn_yn                   := 'N';
12744       END IF;
12745 
12746       create_rule_group_and_rule(
12747                                  x_return_status => x_return_status,
12748                                  x_msg_count     => x_msg_count,
12749                                  x_msg_data      => x_msg_data,
12750                                  p_rgp_id        => l_rgp_id,
12751                                  p_rgpv_rec      => l_rgpv_rec,
12752                                  p_rulv_rec      => l_rulv_rec,
12753                                  x_rgpv_rec      => x_rgpv_rec,
12754                                  x_rulv_rec      => x_rulv_rec
12755                                 );
12756 
12757       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12758           raise header_rule_failed;
12759       END IF;
12760 
12761       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
12762          l_rgp_id := x_rgpv_rec.id;
12763       END IF;
12764       debug_message('------>Rule: AMTQPR/AMCTTA processed');
12765       l_rulv_rec := NULL;
12766 
12767       l_tqp_prt_term_alwd_flag := p_header_rec.tqp_prt_termination_alwd_flag;
12768 
12769       IF (l_tqp_prt_term_alwd_flag IS NULL
12770           AND
12771           p_header_rec.template_number IS NOT NULL) THEN
12772          get_contract_rules(
12773                             x_return_status  => x_return_status,
12774                             x_msg_count      => x_msg_count,
12775                             x_msg_data       => x_msg_data,
12776                             p_chr_id         => p_template_id,
12777                             p_cle_id         => NULL,
12778                             p_rgd_code       => 'AMTQPR',
12779                             p_rule_code      => 'AMPTQA',
12780                             x_rulv_tbl       => l_rulv_tbl,
12781                             x_rule_count     => l_rule_count
12782                            );
12783 
12784          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12785             RAISE header_rule_failed;
12786          END IF;
12787 
12788          IF (l_rule_count > 0) THEN
12789             l_tqp_prt_term_alwd_flag := NVL(l_tqp_prt_term_alwd_flag,l_rulv_tbl(1).rule_information1);
12790          END IF;
12791       END IF;
12792 
12793       IF (l_tqp_prt_term_alwd_flag IS NOT NULL) THEN
12794          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12795          l_rulv_rec.dnz_chr_id                := p_chr_id;
12796          l_rulv_rec.rule_information1         := l_tqp_prt_term_alwd_flag;
12797          l_rulv_rec.rule_information_category := 'AMPTQA';
12798          l_rulv_rec.std_template_yn           := 'N';
12799          l_rulv_rec.warn_yn                   := 'N';
12800       END IF;
12801 
12802       create_rule_group_and_rule(
12803                                  x_return_status => x_return_status,
12804                                  x_msg_count     => x_msg_count,
12805                                  x_msg_data      => x_msg_data,
12806                                  p_rgp_id        => l_rgp_id,
12807                                  p_rgpv_rec      => l_rgpv_rec,
12808                                  p_rulv_rec      => l_rulv_rec,
12809                                  x_rgpv_rec      => x_rgpv_rec,
12810                                  x_rulv_rec      => x_rulv_rec
12811                                 );
12812 
12813       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12814           raise header_rule_failed;
12815       END IF;
12816 
12817       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
12818          l_rgp_id := x_rgpv_rec.id;
12819       END IF;
12820 
12821       debug_message('------>Rule: AMTQPR/AMPTQA processed');
12822       l_rulv_rec := NULL;
12823 
12824       l_quote_effective_days   := TO_CHAR(p_header_rec.quote_effective_days);
12825       l_quote_eff_max_days     := TO_CHAR(p_header_rec.quote_eff_max_days);
12826 
12827       IF (l_quote_effective_days IS NULL
12828           OR
12829           l_quote_eff_max_days IS NULL
12830           AND
12831           p_header_rec.template_number IS NOT NULL) THEN
12832          get_contract_rules(
12833                             x_return_status  => x_return_status,
12834                             x_msg_count      => x_msg_count,
12835                             x_msg_data       => x_msg_data,
12836                             p_chr_id         => p_template_id,
12837                             p_cle_id         => NULL,
12838                             p_rgd_code       => 'AMTQPR',
12839                             p_rule_code      => 'AMQTEF',
12840                             x_rulv_tbl       => l_rulv_tbl,
12841                             x_rule_count     => l_rule_count
12842                            );
12843 
12844          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12845             RAISE header_rule_failed;
12846          END IF;
12847 
12848          IF (l_rule_count > 0) THEN
12849             l_quote_effective_days := NVL(l_quote_effective_days,l_rulv_tbl(1).rule_information1);
12850             l_quote_eff_max_days   := NVL(l_quote_eff_max_days, l_rulv_tbl(1).rule_information2);
12851          END IF;
12852       END IF;
12853 
12854       IF (l_quote_effective_days IS NOT NULL) THEN
12855          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12856          l_rulv_rec.dnz_chr_id                := p_chr_id;
12857          l_rulv_rec.rule_information1         := l_quote_effective_days;
12858          l_rulv_rec.rule_information_category := 'AMQTEF';
12859          l_rulv_rec.std_template_yn           := 'N';
12860          l_rulv_rec.warn_yn                   := 'N';
12861       END IF;
12862 
12863       IF (l_quote_eff_max_days IS NOT NULL) THEN
12864          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12865          l_rulv_rec.dnz_chr_id                := p_chr_id;
12866          l_rulv_rec.rule_information2         := l_quote_eff_max_days;
12867          l_rulv_rec.rule_information_category := 'AMQTEF';
12868          l_rulv_rec.std_template_yn           := 'N';
12869          l_rulv_rec.warn_yn                   := 'N';
12870       END IF;
12871 
12872       create_rule_group_and_rule(
12873                                  x_return_status => x_return_status,
12874                                  x_msg_count     => x_msg_count,
12875                                  x_msg_data      => x_msg_data,
12876                                  p_rgp_id        => l_rgp_id,
12877                                  p_rgpv_rec      => l_rgpv_rec,
12878                                  p_rulv_rec      => l_rulv_rec,
12879                                  x_rgpv_rec      => x_rgpv_rec,
12880                                  x_rulv_rec      => x_rulv_rec
12881                                 );
12882 
12883       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12884           raise header_rule_failed;
12885       END IF;
12886 
12887       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
12888          l_rgp_id := x_rgpv_rec.id;
12889       END IF;
12890       debug_message('------>Rule: AMTQPR/AMQTEF processed');
12891       l_rulv_rec := NULL;
12892 
12893       l_eot_tolerance_days := TO_CHAR(p_header_rec.eot_tolerance_days);
12894 
12895       IF (l_eot_tolerance_days IS NULL
12896           AND
12897           p_header_rec.template_number IS NOT NULL) THEN
12898          get_contract_rules(
12899                             x_return_status  => x_return_status,
12900                             x_msg_count      => x_msg_count,
12901                             x_msg_data       => x_msg_data,
12902                             p_chr_id         => p_template_id,
12903                             p_cle_id         => NULL,
12904                             p_rgd_code       => 'AMTQPR',
12905                             p_rule_code      => 'AMTSET',
12906                             x_rulv_tbl       => l_rulv_tbl,
12907                             x_rule_count     => l_rule_count
12908                            );
12909 
12910          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12911             RAISE header_rule_failed;
12912          END IF;
12913 
12914          IF (l_rule_count > 0) THEN
12915             l_eot_tolerance_days := NVL(l_eot_tolerance_days,l_rulv_tbl(1).rule_information1);
12916          END IF;
12917       END IF;
12918 
12919       IF (l_eot_tolerance_days IS NOT NULL) THEN
12920          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12921          l_rulv_rec.dnz_chr_id                := p_chr_id;
12922          l_rulv_rec.rule_information1         := l_eot_tolerance_days;
12923          l_rulv_rec.rule_information_category := 'AMTSET';
12924          l_rulv_rec.std_template_yn           := 'N';
12925          l_rulv_rec.warn_yn                   := 'N';
12926       END IF;
12927 
12928       create_rule_group_and_rule(
12929                                  x_return_status => x_return_status,
12930                                  x_msg_count     => x_msg_count,
12931                                  x_msg_data      => x_msg_data,
12932                                  p_rgp_id        => l_rgp_id,
12933                                  p_rgpv_rec      => l_rgpv_rec,
12934                                  p_rulv_rec      => l_rulv_rec,
12935                                  x_rgpv_rec      => x_rgpv_rec,
12936                                  x_rulv_rec      => x_rulv_rec
12937                                 );
12938 
12939       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12940           raise header_rule_failed;
12941       END IF;
12942 
12943       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
12944          l_rgp_id := x_rgpv_rec.id;
12945       END IF;
12946 
12947       debug_message('------>Rule: AMTQPR/AMTSET processed');
12948 
12949       -- Send bill of sale, manual quote, First term date
12950 
12951       l_rulv_rec := NULL;
12952 
12953       l_send_bill_sale := p_header_rec.send_bill_sale;
12954 
12955       IF (l_send_bill_sale IS NULL
12956           AND
12957           p_header_rec.template_number IS NOT NULL) THEN
12958          get_contract_rules(
12959                             x_return_status  => x_return_status,
12960                             x_msg_count      => x_msg_count,
12961                             x_msg_data       => x_msg_data,
12962                             p_chr_id         => p_template_id,
12963                             p_cle_id         => NULL,
12964                             p_rgd_code       => 'AMTQPR',
12965                             p_rule_code      => 'AMFBOS',
12966                             x_rulv_tbl       => l_rulv_tbl,
12967                             x_rule_count     => l_rule_count
12968                            );
12969 
12970          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
12971             RAISE header_rule_failed;
12972          END IF;
12973 
12974          IF (l_rule_count > 0) THEN
12975             l_send_bill_sale := NVL(l_send_bill_sale,l_rulv_tbl(1).rule_information1);
12976          END IF;
12977       END IF;
12978 
12979       IF (l_send_bill_sale IS NOT NULL) THEN
12980          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
12981          l_rulv_rec.dnz_chr_id                := p_chr_id;
12982          l_rulv_rec.rule_information1         := l_send_bill_sale;
12983          l_rulv_rec.rule_information_category := 'AMFBOS';
12984          l_rulv_rec.std_template_yn           := 'N';
12985          l_rulv_rec.warn_yn                   := 'N';
12986       END IF;
12987 
12988       create_rule_group_and_rule(
12989                                  x_return_status => x_return_status,
12990                                  x_msg_count     => x_msg_count,
12991                                  x_msg_data      => x_msg_data,
12992                                  p_rgp_id        => l_rgp_id,
12993                                  p_rgpv_rec      => l_rgpv_rec,
12994                                  p_rulv_rec      => l_rulv_rec,
12995                                  x_rgpv_rec      => x_rgpv_rec,
12996                                  x_rulv_rec      => x_rulv_rec
12997                                 );
12998 
12999       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13000           raise header_rule_failed;
13001       END IF;
13002 
13003       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
13004          l_rgp_id := x_rgpv_rec.id;
13005       END IF;
13006       debug_message('------>Rule: AMTQPR/AMFBOS processed');
13007 
13008       l_rulv_rec := NULL;
13009 
13010       l_manual_quotes_only := p_header_rec.manual_quotes_only;
13011 
13012       IF (l_manual_quotes_only IS NULL
13013           AND
13014           p_header_rec.template_number IS NOT NULL) THEN
13015          get_contract_rules(
13016                             x_return_status  => x_return_status,
13017                             x_msg_count      => x_msg_count,
13018                             x_msg_data       => x_msg_data,
13019                             p_chr_id         => p_template_id,
13020                             p_cle_id         => NULL,
13021                             p_rgd_code       => 'AMTQPR',
13022                             p_rule_code      => 'AMCMTQ',
13023                             x_rulv_tbl       => l_rulv_tbl,
13024                             x_rule_count     => l_rule_count
13025                            );
13026 
13027          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13028             RAISE header_rule_failed;
13029          END IF;
13030 
13031          IF (l_rule_count > 0) THEN
13032             l_manual_quotes_only := NVL(l_manual_quotes_only,l_rulv_tbl(1).rule_information1);
13033          END IF;
13034       END IF;
13035 
13036       IF (l_manual_quotes_only IS NOT NULL) THEN
13037          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13038          l_rulv_rec.dnz_chr_id                := p_chr_id;
13039          l_rulv_rec.rule_information1         := l_manual_quotes_only;
13040          l_rulv_rec.rule_information_category := 'AMCMTQ';
13041          l_rulv_rec.std_template_yn           := 'N';
13042          l_rulv_rec.warn_yn                   := 'N';
13043       END IF;
13044 
13045       create_rule_group_and_rule(
13046                                  x_return_status => x_return_status,
13047                                  x_msg_count     => x_msg_count,
13048                                  x_msg_data      => x_msg_data,
13049                                  p_rgp_id        => l_rgp_id,
13050                                  p_rgpv_rec      => l_rgpv_rec,
13051                                  p_rulv_rec      => l_rulv_rec,
13052                                  x_rgpv_rec      => x_rgpv_rec,
13053                                  x_rulv_rec      => x_rulv_rec
13054                                 );
13055 
13056       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13057           raise header_rule_failed;
13058       END IF;
13059 
13060       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
13061          l_rgp_id := x_rgpv_rec.id;
13062       END IF;
13063       debug_message('------>Rule: AMTQPR/AMCMTQ processed');
13064 
13065       l_rulv_rec := NULL;
13066 
13067       l_first_termination_date := get_canonical_date(p_header_rec.first_termination_date);
13068 
13069       IF (l_first_termination_date IS NULL
13070           AND
13071           p_header_rec.template_number IS NOT NULL) THEN
13072          get_contract_rules(
13073                             x_return_status  => x_return_status,
13074                             x_msg_count      => x_msg_count,
13075                             x_msg_data       => x_msg_data,
13076                             p_chr_id         => p_template_id,
13077                             p_cle_id         => NULL,
13078                             p_rgd_code       => 'AMTQPR',
13079                             p_rule_code      => 'AMDFTD',
13080                             x_rulv_tbl       => l_rulv_tbl,
13081                             x_rule_count     => l_rule_count
13082                            );
13083 
13084          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13085             RAISE header_rule_failed;
13086          END IF;
13087 
13088          IF (l_rule_count > 0) THEN
13089             l_first_termination_date := NVL(l_first_termination_date,l_rulv_tbl(1).rule_information1);
13090          END IF;
13091       END IF;
13092 
13093       IF (l_first_termination_date IS NOT NULL) THEN
13094          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13095          l_rulv_rec.dnz_chr_id                := p_chr_id;
13096          l_rulv_rec.rule_information1         := l_first_termination_date;
13097          l_rulv_rec.rule_information_category := 'AMDFTD';
13098          l_rulv_rec.std_template_yn           := 'N';
13099          l_rulv_rec.warn_yn                   := 'N';
13100       END IF;
13101 
13102       create_rule_group_and_rule(
13103                                  x_return_status => x_return_status,
13104                                  x_msg_count     => x_msg_count,
13105                                  x_msg_data      => x_msg_data,
13106                                  p_rgp_id        => l_rgp_id,
13107                                  p_rgpv_rec      => l_rgpv_rec,
13108                                  p_rulv_rec      => l_rulv_rec,
13109                                  x_rgpv_rec      => x_rgpv_rec,
13110                                  x_rulv_rec      => x_rulv_rec
13111                                 );
13112 
13113       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13114           raise header_rule_failed;
13115       END IF;
13116 
13117       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
13118          l_rgp_id := x_rgpv_rec.id;
13119       END IF;
13120       debug_message('------>Rule: AMTQPR/AMDFTD processed');
13121 
13122       -- Rule Group AMTPAR
13123 
13124       l_rgpv_rec            := NULL;
13125       l_rgp_id              := NULL;
13126       l_rgpv_rec.rgd_code   := 'AMTPAR';
13127       l_rgpv_rec.chr_id     := p_chr_id;
13128       l_rgpv_rec.dnz_chr_id := p_chr_id;
13129       l_rgpv_rec.cle_id     := NULL;
13130       l_rgpv_rec.rgp_type   := 'KRG';
13131 
13132       l_rulv_rec := NULL;
13133 
13134       l_prt_termination_approval_req := p_header_rec.prt_termination_approval_req;
13135 
13136       IF (l_prt_termination_approval_req 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       => 'AMTPAR',
13146                             p_rule_code      => 'AMAPRE',
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_prt_termination_approval_req := l_rulv_tbl(1).rule_information1;
13157          END IF;
13158       END IF;
13159 
13160       IF (l_prt_termination_approval_req IS NOT NULL) THEN
13161          l_rulv_rec                           := NULL;
13162          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13163          l_rulv_rec.dnz_chr_id                := p_chr_id;
13164          l_rulv_rec.rule_information1         := l_prt_termination_approval_req;
13165          l_rulv_rec.rule_information_category := 'AMAPRE';
13166          l_rulv_rec.std_template_yn           := 'N';
13167          l_rulv_rec.warn_yn                   := 'N';
13168       END IF;
13169 
13170       create_rule_group_and_rule(
13171                                  x_return_status => x_return_status,
13172                                  x_msg_count     => x_msg_count,
13173                                  x_msg_data      => x_msg_data,
13174                                  p_rgp_id        => l_rgp_id,
13175                                  p_rgpv_rec      => l_rgpv_rec,
13176                                  p_rulv_rec      => l_rulv_rec,
13177                                  x_rgpv_rec      => x_rgpv_rec,
13178                                  x_rulv_rec      => x_rulv_rec
13179                                 );
13180 
13181       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13182           raise header_rule_failed;
13183       END IF;
13184 
13185       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
13186          l_rgp_id := x_rgpv_rec.id;
13187       END IF;
13188       debug_message('------>Rule: AMTPAR/AMAPRE processed');
13189       l_rulv_rec := NULL;
13190 
13191       l_prt_termination_allowed_flag := p_header_rec.prt_termination_allowed_flag;
13192 
13193       IF (l_prt_termination_allowed_flag 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       => 'AMTPAR',
13203                             p_rule_code      => 'AMPTQA',
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_prt_termination_allowed_flag := l_rulv_tbl(1).rule_information1;
13214          END IF;
13215       END IF;
13216 
13217       IF (l_prt_termination_allowed_flag IS NOT NULL) THEN
13218          l_rulv_rec                           := NULL;
13219          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13220          l_rulv_rec.dnz_chr_id                := p_chr_id;
13221          l_rulv_rec.rule_information1         := l_prt_termination_allowed_flag;
13222          l_rulv_rec.rule_information_category := 'AMPTQA';
13223          l_rulv_rec.std_template_yn           := 'N';
13224          l_rulv_rec.warn_yn                   := 'N';
13225       END IF;
13226 
13227       create_rule_group_and_rule(
13228                                  x_return_status => x_return_status,
13229                                  x_msg_count     => x_msg_count,
13230                                  x_msg_data      => x_msg_data,
13231                                  p_rgp_id        => l_rgp_id,
13232                                  p_rgpv_rec      => l_rgpv_rec,
13233                                  p_rulv_rec      => l_rulv_rec,
13234                                  x_rgpv_rec      => x_rgpv_rec,
13235                                  x_rulv_rec      => x_rulv_rec
13236                                 );
13237 
13238       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13239           raise header_rule_failed;
13240       END IF;
13241 
13242       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
13243          l_rgp_id := x_rgpv_rec.id;
13244       END IF;
13245 
13246       debug_message('------>Rule: AMTPAR/AMPTQA processed');
13247       -- Rule Group AMTPAR
13248 
13249       l_rgpv_rec            := NULL;
13250       l_rgp_id              := NULL;
13251       l_rgpv_rec.rgd_code   := 'AMTGAL';
13252       l_rgpv_rec.chr_id     := p_chr_id;
13253       l_rgpv_rec.dnz_chr_id := p_chr_id;
13254       l_rgpv_rec.cle_id     := NULL;
13255       l_rgpv_rec.rgp_type   := 'KRG';
13256       l_rulv_rec := NULL;
13257 
13258 
13259       l_gain_loss_approval_req      := p_header_rec.gain_loss_approval_req;
13260 
13261       IF (l_gain_loss_approval_req IS NULL
13262           AND
13263           p_header_rec.template_number IS NOT NULL) THEN
13264 
13265          get_contract_rules(
13266                             x_return_status  => x_return_status,
13267                             x_msg_count      => x_msg_count,
13268                             x_msg_data       => x_msg_data,
13269                             p_chr_id         => p_template_id,
13270                             p_cle_id         => NULL,
13271                             p_rgd_code       => 'AMTGAL',
13272                             p_rule_code      => 'AMAPRE',
13273                             x_rulv_tbl       => l_rulv_tbl,
13274                             x_rule_count     => l_rule_count
13275                            );
13276 
13277          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13278             RAISE header_rule_failed;
13279          END IF;
13280 
13281          IF (l_rule_count > 0) THEN
13282             l_gain_loss_approval_req := l_rulv_tbl(1).rule_information1;
13283          END IF;
13284       END IF;
13285 
13286       IF (l_gain_loss_approval_req IS NOT NULL) THEN
13287          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13288          l_rulv_rec.dnz_chr_id                := p_chr_id;
13289          l_rulv_rec.rule_information1         := l_gain_loss_approval_req;
13290          l_rulv_rec.rule_information_category := 'AMAPRE';
13291          l_rulv_rec.std_template_yn           := 'N';
13292          l_rulv_rec.warn_yn                   := 'N';
13293       END IF;
13294 
13295       create_rule_group_and_rule(
13296                                  x_return_status => x_return_status,
13297                                  x_msg_count     => x_msg_count,
13298                                  x_msg_data      => x_msg_data,
13299                                  p_rgp_id        => l_rgp_id,
13300                                  p_rgpv_rec      => l_rgpv_rec,
13301                                  p_rulv_rec      => l_rulv_rec,
13302                                  x_rgpv_rec      => x_rgpv_rec,
13303                                  x_rulv_rec      => x_rulv_rec
13304                                 );
13305 
13306       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13307           raise header_rule_failed;
13308       END IF;
13309 
13310       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
13311          l_rgp_id := x_rgpv_rec.id;
13312       END IF;
13313       debug_message('------>Rule: AMTGAL/AMAPRE processed');
13314       l_rulv_rec := NULL;
13315 
13316       l_gain_loss_net_quote_opt     := p_header_rec.gain_loss_net_quote_opt;
13317       l_gain_loss_net_quote_amt     := TO_CHAR(p_header_rec.gain_loss_net_quote_amt);
13318       l_gain_loss_net_quote_formula := p_header_rec.gain_loss_net_quote_formula;
13319       l_gain_loss_tolrn_allwd       := p_header_rec.gain_loss_tolerance_allowed;
13320       l_gain_loss_tolrnc_allwd_amt  := p_header_rec.gain_loss_tolrnc_allwd_amt;
13321       l_gain_loss_tolrnc_allwd_frml := p_header_rec.gain_loss_tolrnc_allwd_frml;
13322       l_gain_loss_tolrnc_basis      := p_header_rec.gain_loss_tolrnc_basis;
13323       l_gain_loss_apprv_proc_frml   := p_header_rec.gain_loss_apprv_proc_frml;
13324 
13325       IF (l_gain_loss_net_quote_opt IS NULL
13326           OR
13327           l_gain_loss_net_quote_amt IS NULL
13328           OR
13329           l_gain_loss_net_quote_formula IS NULL
13330           OR
13331           l_gain_loss_tolrn_allwd IS NULL
13332           OR
13333           l_gain_loss_tolrnc_allwd_amt IS NULL
13334           OR
13335           l_gain_loss_tolrnc_allwd_frml IS NULL
13336           OR
13337           l_gain_loss_tolrnc_basis IS NULL
13338           OR
13339           l_gain_loss_apprv_proc_frml IS NULL
13340           AND
13341           p_header_rec.template_number IS NOT NULL) THEN
13342 
13343          get_contract_rules(
13344                             x_return_status  => x_return_status,
13345                             x_msg_count      => x_msg_count,
13346                             x_msg_data       => x_msg_data,
13347                             p_chr_id         => p_template_id,
13348                             p_cle_id         => NULL,
13349                             p_rgd_code       => 'AMTGAL',
13350                             p_rule_code      => 'AMGALO',
13351                             x_rulv_tbl       => l_rulv_tbl,
13352                             x_rule_count     => l_rule_count
13353                            );
13354 
13355          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13356             RAISE header_rule_failed;
13357          END IF;
13358 
13359          IF (l_rule_count > 0) THEN
13360             l_gain_loss_net_quote_opt     := NVL(l_gain_loss_net_quote_opt,l_rulv_tbl(1).rule_information1);
13361             l_gain_loss_net_quote_amt     := NVL(l_gain_loss_net_quote_amt,l_rulv_tbl(1).rule_information2);
13362             l_gain_loss_net_quote_formula := NVL(l_gain_loss_net_quote_formula,l_rulv_tbl(1).rule_information3);
13363             l_gain_loss_tolrn_allwd       := NVL(l_gain_loss_tolrn_allwd,l_rulv_tbl(1).rule_information7);
13364             l_gain_loss_tolrnc_allwd_amt  := NVL(l_gain_loss_tolrnc_allwd_amt,l_rulv_tbl(1).rule_information4);
13365             l_gain_loss_tolrnc_allwd_frml := NVL(l_gain_loss_tolrnc_allwd_frml,l_rulv_tbl(1).rule_information6);
13366             l_gain_loss_tolrnc_basis      := NVL(l_gain_loss_tolrnc_basis,l_rulv_tbl(1).rule_information5);
13367             l_gain_loss_apprv_proc_frml   := NVL(l_gain_loss_apprv_proc_frml,l_rulv_tbl(1).rule_information8);
13368          END IF;
13369       END IF;
13370 
13371       IF (l_gain_loss_net_quote_opt IS NOT NULL) THEN
13372          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13373          l_rulv_rec.dnz_chr_id                := p_chr_id;
13374          l_rulv_rec.rule_information1         := l_gain_loss_net_quote_opt;
13375          l_rulv_rec.rule_information_category := 'AMGALO';
13376          l_rulv_rec.std_template_yn           := 'N';
13377          l_rulv_rec.warn_yn                   := 'N';
13378       END IF;
13379 
13380       IF (l_gain_loss_net_quote_amt IS NOT NULL) THEN
13381          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13382          l_rulv_rec.dnz_chr_id                := p_chr_id;
13383          l_rulv_rec.rule_information2         := l_gain_loss_net_quote_amt;
13384          l_rulv_rec.rule_information_category := 'AMGALO';
13385          l_rulv_rec.std_template_yn           := 'N';
13386          l_rulv_rec.warn_yn                   := 'N';
13387       END IF;
13388 
13389       IF (l_gain_loss_net_quote_formula IS NOT NULL) THEN
13390          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13391          l_rulv_rec.dnz_chr_id                := p_chr_id;
13392          l_rulv_rec.rule_information3         := l_gain_loss_net_quote_formula;
13393          l_rulv_rec.rule_information_category := 'AMGALO';
13394          l_rulv_rec.std_template_yn           := 'N';
13395          l_rulv_rec.warn_yn                   := 'N';
13396       END IF;
13397 
13398       IF (l_gain_loss_tolrn_allwd IS NOT NULL) THEN
13399          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13400          l_rulv_rec.dnz_chr_id                := p_chr_id;
13401          l_rulv_rec.rule_information7         := l_gain_loss_tolrn_allwd;
13402          l_rulv_rec.rule_information_category := 'AMGALO';
13403          l_rulv_rec.std_template_yn           := 'N';
13404          l_rulv_rec.warn_yn                   := 'N';
13405       END IF;
13406 
13407       IF (l_gain_loss_tolrnc_allwd_amt IS NOT NULL) THEN
13408          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13409          l_rulv_rec.dnz_chr_id                := p_chr_id;
13410          l_rulv_rec.rule_information4         := l_gain_loss_tolrnc_allwd_amt;
13411          l_rulv_rec.rule_information_category := 'AMGALO';
13412          l_rulv_rec.std_template_yn           := 'N';
13413          l_rulv_rec.warn_yn                   := 'N';
13414       END IF;
13415 
13416       IF (l_gain_loss_tolrnc_allwd_frml IS NOT NULL) THEN
13417          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13418          l_rulv_rec.dnz_chr_id                := p_chr_id;
13419          l_rulv_rec.rule_information6         := l_gain_loss_tolrnc_allwd_frml;
13420          l_rulv_rec.rule_information_category := 'AMGALO';
13421          l_rulv_rec.std_template_yn           := 'N';
13422          l_rulv_rec.warn_yn                   := 'N';
13423       END IF;
13424 
13425       IF (l_gain_loss_tolrnc_basis IS NOT NULL) THEN
13426          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13427          l_rulv_rec.dnz_chr_id                := p_chr_id;
13428          l_rulv_rec.rule_information5         := l_gain_loss_tolrnc_basis;
13429          l_rulv_rec.rule_information_category := 'AMGALO';
13430          l_rulv_rec.std_template_yn           := 'N';
13431          l_rulv_rec.warn_yn                   := 'N';
13432       END IF;
13433 
13434       IF (l_gain_loss_apprv_proc_frml IS NOT NULL) THEN
13435          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13436          l_rulv_rec.dnz_chr_id                := p_chr_id;
13437          l_rulv_rec.rule_information8         := l_gain_loss_apprv_proc_frml;
13438          l_rulv_rec.rule_information_category := 'AMGALO';
13439          l_rulv_rec.std_template_yn           := 'N';
13440          l_rulv_rec.warn_yn                   := 'N';
13441       END IF;
13442 
13443       create_rule_group_and_rule(
13444                                  x_return_status => x_return_status,
13445                                  x_msg_count     => x_msg_count,
13446                                  x_msg_data      => x_msg_data,
13447                                  p_rgp_id        => l_rgp_id,
13448                                  p_rgpv_rec      => l_rgpv_rec,
13449                                  p_rulv_rec      => l_rulv_rec,
13450                                  x_rgpv_rec      => x_rgpv_rec,
13451                                  x_rulv_rec      => x_rulv_rec
13452                                 );
13453 
13454       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13455           raise header_rule_failed;
13456       END IF;
13457 
13458       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
13459          l_rgp_id := x_rgpv_rec.id;
13460       END IF;
13461       debug_message('------>Rule: AMTGAL/AMGALO processed');
13462 
13463       -- Rule Group AMQR1R
13464 
13465       l_rgpv_rec            := NULL;
13466       l_rgp_id              := NULL;
13467       l_rgpv_rec.rgd_code   := 'AMQR1R';
13468       l_rgpv_rec.chr_id     := p_chr_id;
13469       l_rgpv_rec.dnz_chr_id := p_chr_id;
13470       l_rgpv_rec.cle_id     := NULL;
13471       l_rgpv_rec.rgp_type   := 'KRG';
13472       l_rulv_rec := NULL;
13473 
13474       l_quote_rcpt_contract_role := p_header_rec.quote_rcpt_contract_role;
13475 
13476       IF (l_quote_rcpt_contract_role IS NULL
13477           AND
13478           p_header_rec.template_number IS NOT NULL) THEN
13479          get_contract_rules(
13480                             x_return_status  => x_return_status,
13481                             x_msg_count      => x_msg_count,
13482                             x_msg_data       => x_msg_data,
13483                             p_chr_id         => p_template_id,
13484                             p_cle_id         => NULL,
13485                             p_rgd_code       => 'AMQR1R',
13486                             p_rule_code      => 'AMLCRO',
13487                             x_rulv_tbl       => l_rulv_tbl,
13488                             x_rule_count     => l_rule_count
13489                            );
13490 
13491          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13492             RAISE header_rule_failed;
13493          END IF;
13494 
13495          IF (l_rule_count > 0) THEN
13496             l_quote_rcpt_contract_role := l_rulv_tbl(1).rule_information1;
13497          END IF;
13498       END IF;
13499 
13500       IF (l_quote_rcpt_contract_role IS NOT NULL) THEN
13501          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13502          l_rulv_rec.dnz_chr_id                := p_chr_id;
13503          l_rulv_rec.rule_information1         := l_quote_rcpt_contract_role;
13504          l_rulv_rec.rule_information_category := 'AMLCRO';
13505          l_rulv_rec.std_template_yn           := 'N';
13506          l_rulv_rec.warn_yn                   := 'N';
13507       END IF;
13508 
13509       create_rule_group_and_rule(
13510                                  x_return_status => x_return_status,
13511                                  x_msg_count     => x_msg_count,
13512                                  x_msg_data      => x_msg_data,
13513                                  p_rgp_id        => l_rgp_id,
13514                                  p_rgpv_rec      => l_rgpv_rec,
13515                                  p_rulv_rec      => l_rulv_rec,
13516                                  x_rgpv_rec      => x_rgpv_rec,
13517                                  x_rulv_rec      => x_rulv_rec
13518                                 );
13519 
13520       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13521           raise header_rule_failed;
13522       END IF;
13523 
13524       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
13525          l_rgp_id := x_rgpv_rec.id;
13526       END IF;
13527 
13528       debug_message('------>Rule: AMQR1R/AMLCRO processed');
13529 
13530       l_rulv_rec := NULL;
13531 
13532       l_quote_rcpt_addl_rcpt_role := p_header_rec.quote_rcpt_addl_rcpt_role;
13533       l_quote_rcpt_alloc_ptg      := p_header_rec.quote_rcpt_alloc_ptg;
13534 
13535       IF (( l_quote_rcpt_addl_rcpt_role IS NULL
13536             OR
13537             l_quote_rcpt_alloc_ptg IS NULL
13538           )
13539           AND
13540           p_header_rec.template_number IS NOT NULL) THEN
13541          get_contract_rules(
13542                             x_return_status  => x_return_status,
13543                             x_msg_count      => x_msg_count,
13544                             x_msg_data       => x_msg_data,
13545                             p_chr_id         => p_template_id,
13546                             p_cle_id         => NULL,
13547                             p_rgd_code       => 'AMQR1R',
13548                             p_rule_code      => 'AMLCRP',
13549                             x_rulv_tbl       => l_rulv_tbl,
13550                             x_rule_count     => l_rule_count
13551                            );
13552 
13553          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13554             RAISE header_rule_failed;
13555          END IF;
13556 
13557          IF (l_rule_count > 0) THEN
13558             l_quote_rcpt_addl_rcpt_role := NVL(l_quote_rcpt_addl_rcpt_role,l_rulv_tbl(1).rule_information1);
13559             l_quote_rcpt_alloc_ptg      := NVL(l_quote_rcpt_alloc_ptg,l_rulv_tbl(1).rule_information2);
13560          END IF;
13561       END IF;
13562 
13563       IF (l_quote_rcpt_addl_rcpt_role IS NOT NULL) THEN
13564          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13565          l_rulv_rec.dnz_chr_id                := p_chr_id;
13566          l_rulv_rec.rule_information1         := l_quote_rcpt_addl_rcpt_role;
13567          l_rulv_rec.rule_information_category := 'AMLCRP';
13568          l_rulv_rec.std_template_yn           := 'N';
13569          l_rulv_rec.warn_yn                   := 'N';
13570       END IF;
13571 
13572       IF (l_quote_rcpt_alloc_ptg IS NOT NULL) THEN
13573          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13574          l_rulv_rec.dnz_chr_id                := p_chr_id;
13575          l_rulv_rec.rule_information2         := l_quote_rcpt_alloc_ptg;
13576          l_rulv_rec.rule_information_category := 'AMLCRP';
13577          l_rulv_rec.std_template_yn           := 'N';
13578          l_rulv_rec.warn_yn                   := 'N';
13579       END IF;
13580 
13581       create_rule_group_and_rule(
13582                                  x_return_status => x_return_status,
13583                                  x_msg_count     => x_msg_count,
13584                                  x_msg_data      => x_msg_data,
13585                                  p_rgp_id        => l_rgp_id,
13586                                  p_rgpv_rec      => l_rgpv_rec,
13587                                  p_rulv_rec      => l_rulv_rec,
13588                                  x_rgpv_rec      => x_rgpv_rec,
13589                                  x_rulv_rec      => x_rulv_rec
13590                                 );
13591 
13592       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13593           raise header_rule_failed;
13594       END IF;
13595 
13596       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
13597          l_rgp_id := x_rgpv_rec.id;
13598       END IF;
13599 
13600       debug_message('------>Rule: AMQR1R/AMLCRP processed');
13601 
13602       -- Rule Group AMQR5A
13603 
13604       l_rgpv_rec            := NULL;
13605       l_rgp_id              := NULL;
13606       l_rgpv_rec.rgd_code   := 'AMQR5A';
13607       l_rgpv_rec.chr_id     := p_chr_id;
13608       l_rgpv_rec.dnz_chr_id := p_chr_id;
13609       l_rgpv_rec.cle_id     := NULL;
13610       l_rgpv_rec.rgp_type   := 'KRG';
13611       l_rulv_rec := NULL;
13612 
13613       l_quote_approver_contract_role := p_header_rec.quote_approver_contract_role;
13614 
13615       IF (l_quote_approver_contract_role IS NULL
13616           AND
13617           p_header_rec.template_number IS NOT NULL) THEN
13618          get_contract_rules(
13619                             x_return_status  => x_return_status,
13620                             x_msg_count      => x_msg_count,
13621                             x_msg_data       => x_msg_data,
13622                             p_chr_id         => p_template_id,
13623                             p_cle_id         => NULL,
13624                             p_rgd_code       => 'AMQR5A',
13625                             p_rule_code      => 'AMLCAP',
13626                             x_rulv_tbl       => l_rulv_tbl,
13627                             x_rule_count     => l_rule_count
13628                            );
13629 
13630          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13631             RAISE header_rule_failed;
13632          END IF;
13633 
13634          IF (l_rule_count > 0) THEN
13635             l_quote_approver_contract_role := l_rulv_tbl(1).rule_information1;
13636          END IF;
13637       END IF;
13638 
13639       IF (l_quote_approver_contract_role IS NOT NULL) THEN
13640          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13641          l_rulv_rec.dnz_chr_id                := p_chr_id;
13642          l_rulv_rec.rule_information1         := l_quote_approver_contract_role;
13643          l_rulv_rec.rule_information_category := 'AMLCAP';
13644          l_rulv_rec.std_template_yn           := 'N';
13645          l_rulv_rec.warn_yn                   := 'N';
13646       END IF;
13647 
13648       create_rule_group_and_rule(
13649                                  x_return_status => x_return_status,
13650                                  x_msg_count     => x_msg_count,
13651                                  x_msg_data      => x_msg_data,
13652                                  p_rgp_id        => l_rgp_id,
13653                                  p_rgpv_rec      => l_rgpv_rec,
13654                                  p_rulv_rec      => l_rulv_rec,
13655                                  x_rgpv_rec      => x_rgpv_rec,
13656                                  x_rulv_rec      => x_rulv_rec
13657                                 );
13658 
13659       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13660           raise header_rule_failed;
13661       END IF;
13662 
13663       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
13664          l_rgp_id := x_rgpv_rec.id;
13665       END IF;
13666 
13667       debug_message('------>Rule: AMQR5A/AMLCAP processed');
13668 
13669       l_quote_apprvr_adv_notice_role := p_header_rec.quote_apprvr_adv_notice_role;
13670       l_quote_approver_delay_days    := p_header_rec.quote_approver_delay_days;
13671 
13672       IF ((l_quote_apprvr_adv_notice_role IS NULL
13673            OR
13674            l_quote_approver_delay_days IS NULL
13675           )
13676           AND
13677           p_header_rec.template_number IS NOT NULL) THEN
13678          get_contract_rules(
13679                             x_return_status  => x_return_status,
13680                             x_msg_count      => x_msg_count,
13681                             x_msg_data       => x_msg_data,
13682                             p_chr_id         => p_template_id,
13683                             p_cle_id         => NULL,
13684                             p_rgd_code       => 'AMQR5A',
13685                             p_rule_code      => 'AMLCAV',
13686                             x_rulv_tbl       => l_rulv_tbl,
13687                             x_rule_count     => l_rule_count
13688                            );
13689 
13690          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13691             RAISE header_rule_failed;
13692          END IF;
13693 
13694          IF (l_rule_count > 0) THEN
13695             l_quote_apprvr_adv_notice_role := NVL(l_quote_apprvr_adv_notice_role, l_rulv_tbl(1).rule_information1);
13696             l_quote_approver_delay_days := NVL(l_quote_approver_delay_days, l_rulv_tbl(1).rule_information2);
13697          END IF;
13698       END IF;
13699 
13700       IF (l_quote_apprvr_adv_notice_role IS NOT NULL) THEN
13701          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13702          l_rulv_rec.dnz_chr_id                := p_chr_id;
13703          l_rulv_rec.rule_information1         := l_quote_apprvr_adv_notice_role;
13704          l_rulv_rec.rule_information_category := 'AMLCAV';
13705          l_rulv_rec.std_template_yn           := 'N';
13706          l_rulv_rec.warn_yn                   := 'N';
13707       END IF;
13708 
13709       IF (l_quote_approver_delay_days IS NOT NULL) THEN
13710          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13711          l_rulv_rec.dnz_chr_id                := p_chr_id;
13712          l_rulv_rec.rule_information2         := l_quote_approver_delay_days;
13713          l_rulv_rec.rule_information_category := 'AMLCAV';
13714          l_rulv_rec.std_template_yn           := 'N';
13715          l_rulv_rec.warn_yn                   := 'N';
13716       END IF;
13717 
13718       create_rule_group_and_rule(
13719                                  x_return_status => x_return_status,
13720                                  x_msg_count     => x_msg_count,
13721                                  x_msg_data      => x_msg_data,
13722                                  p_rgp_id        => l_rgp_id,
13723                                  p_rgpv_rec      => l_rgpv_rec,
13724                                  p_rulv_rec      => l_rulv_rec,
13725                                  x_rgpv_rec      => x_rgpv_rec,
13726                                  x_rulv_rec      => x_rulv_rec
13727                                 );
13728 
13729       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13730           raise header_rule_failed;
13731       END IF;
13732 
13733       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
13734          l_rgp_id := x_rgpv_rec.id;
13735       END IF;
13736 
13737       debug_message('------>Rule: AMQR5A/AMLCAV processed');
13738 
13739       -- Rule Group AMQR9F
13740 
13741       l_rgpv_rec            := NULL;
13742       l_rgp_id              := NULL;
13743       l_rgpv_rec.rgd_code   := 'AMQR9F';
13744       l_rgpv_rec.chr_id     := p_chr_id;
13745       l_rgpv_rec.dnz_chr_id := p_chr_id;
13746       l_rgpv_rec.cle_id     := NULL;
13747       l_rgpv_rec.rgp_type   := 'KRG';
13748       l_rulv_rec := NULL;
13749 
13750       l_quote_crtsy_cp_cntrc_role := p_header_rec.quote_crtsy_copy_contract_role;
13751 
13752       IF (l_quote_crtsy_cp_cntrc_role IS NULL
13753           AND
13754           p_header_rec.template_number IS NOT NULL) THEN
13755          get_contract_rules(
13756                             x_return_status  => x_return_status,
13757                             x_msg_count      => x_msg_count,
13758                             x_msg_data       => x_msg_data,
13759                             p_chr_id         => p_template_id,
13760                             p_cle_id         => NULL,
13761                             p_rgd_code       => 'AMQR9F',
13762                             p_rule_code      => 'AMLCCO',
13763                             x_rulv_tbl       => l_rulv_tbl,
13764                             x_rule_count     => l_rule_count
13765                            );
13766 
13767          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13768             RAISE header_rule_failed;
13769          END IF;
13770 
13771          IF (l_rule_count > 0) THEN
13772             l_quote_crtsy_cp_cntrc_role := l_rulv_tbl(1).rule_information1;
13773          END IF;
13774       END IF;
13775 
13776       IF (l_quote_crtsy_cp_cntrc_role IS NOT NULL) THEN
13777          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13778          l_rulv_rec.dnz_chr_id                := p_chr_id;
13779          l_rulv_rec.rule_information1         := l_quote_crtsy_cp_cntrc_role;
13780          l_rulv_rec.rule_information_category := 'AMLCCO';
13781          l_rulv_rec.std_template_yn           := 'N';
13782          l_rulv_rec.warn_yn                   := 'N';
13783       END IF;
13784 
13785       create_rule_group_and_rule(
13786                                  x_return_status => x_return_status,
13787                                  x_msg_count     => x_msg_count,
13788                                  x_msg_data      => x_msg_data,
13789                                  p_rgp_id        => l_rgp_id,
13790                                  p_rgpv_rec      => l_rgpv_rec,
13791                                  p_rulv_rec      => l_rulv_rec,
13792                                  x_rgpv_rec      => x_rgpv_rec,
13793                                  x_rulv_rec      => x_rulv_rec
13794                                 );
13795 
13796       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13797           raise header_rule_failed;
13798       END IF;
13799 
13800       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
13801          l_rgp_id := x_rgpv_rec.id;
13802       END IF;
13803 
13804       debug_message('------>Rule: AMQR9F/AMLCCO processed');
13805 
13806       -- Rule Group AMTEWC
13807 
13808       l_rgpv_rec            := NULL;
13809       l_rgp_id              := NULL;
13810       l_rgpv_rec.rgd_code   := 'AMTEWC';
13811       l_rgpv_rec.chr_id     := p_chr_id;
13812       l_rgpv_rec.dnz_chr_id := p_chr_id;
13813       l_rgpv_rec.cle_id     := NULL;
13814       l_rgpv_rec.rgp_type   := 'KRG';
13815       l_rulv_rec := NULL;
13816 
13817       l_ert_quote_calc_term_option  := p_header_rec.ert_quote_calc_term_option;
13818       l_ert_quote_calc_term_formula := p_header_rec.ert_quote_calc_term_formula;
13819 
13820       IF (l_ert_quote_calc_term_option IS NULL
13821           OR
13822           l_ert_quote_calc_term_formula IS NULL
13823           AND
13824           p_header_rec.template_number IS NOT NULL) THEN
13825          get_contract_rules(
13826                             x_return_status  => x_return_status,
13827                             x_msg_count      => x_msg_count,
13828                             x_msg_data       => x_msg_data,
13829                             p_chr_id         => p_template_id,
13830                             p_cle_id         => NULL,
13831                             p_rgd_code       => 'AMTEWC',
13832                             p_rule_code      => 'AMATQC',
13833                             x_rulv_tbl       => l_rulv_tbl,
13834                             x_rule_count     => l_rule_count
13835                            );
13836 
13837          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13838             RAISE header_rule_failed;
13839          END IF;
13840 
13841          IF (l_rule_count > 0) THEN
13842             l_ert_quote_calc_term_option  := NVL(l_ert_quote_calc_term_option,l_rulv_tbl(1).rule_information1);
13843             l_ert_quote_calc_term_formula := NVL(l_ert_quote_calc_term_formula,l_rulv_tbl(1).rule_information2);
13844          END IF;
13845       END IF;
13846 
13847       IF (l_ert_quote_calc_term_option IS NOT NULL) THEN
13848          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13849          l_rulv_rec.dnz_chr_id                := p_chr_id;
13850          l_rulv_rec.rule_information1         := l_ert_quote_calc_term_option;
13851          l_rulv_rec.rule_information_category := 'AMATQC';
13852          l_rulv_rec.std_template_yn           := 'N';
13853          l_rulv_rec.warn_yn                   := 'N';
13854       END IF;
13855 
13856       IF (l_ert_quote_calc_term_formula IS NOT NULL) THEN
13857          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13858          l_rulv_rec.dnz_chr_id                := p_chr_id;
13859          l_rulv_rec.rule_information2         := l_ert_quote_calc_term_formula;
13860          l_rulv_rec.rule_information_category := 'AMATQC';
13861          l_rulv_rec.std_template_yn           := 'N';
13862          l_rulv_rec.warn_yn                   := 'N';
13863       END IF;
13864 
13865       create_rule_group_and_rule(
13866                                  x_return_status => x_return_status,
13867                                  x_msg_count     => x_msg_count,
13868                                  x_msg_data      => x_msg_data,
13869                                  p_rgp_id        => l_rgp_id,
13870                                  p_rgpv_rec      => l_rgpv_rec,
13871                                  p_rulv_rec      => l_rulv_rec,
13872                                  x_rgpv_rec      => x_rgpv_rec,
13873                                  x_rulv_rec      => x_rulv_rec
13874                                 );
13875 
13876       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13877           raise header_rule_failed;
13878       END IF;
13879 
13880       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
13881          l_rgp_id := x_rgpv_rec.id;
13882       END IF;
13883       debug_message('------>Rule: AMTEWC/AMATQC processed');
13884       l_rulv_rec := NULL;
13885 
13886       l_ert_contract_oblig_opt      := p_header_rec.ert_contract_oblig_opt;
13887       l_ert_contract_oblig_amount   := TO_CHAR(p_header_rec.ert_contract_oblig_amount);
13888       l_ert_contract_oblig_formula  := p_header_rec.ert_contract_oblig_formula;
13889       l_ert_contract_oblig_prorate  := p_header_rec.ert_contract_oblig_prorate;
13890 
13891       IF (l_ert_contract_oblig_opt IS NULL
13892           OR
13893           l_ert_contract_oblig_amount IS NULL
13894           OR
13895           l_ert_contract_oblig_formula IS NULL
13896           OR
13897           l_ert_contract_oblig_prorate IS NULL
13898           AND
13899           p_header_rec.template_number IS NOT NULL) THEN
13900          get_contract_rules(
13901                             x_return_status  => x_return_status,
13902                             x_msg_count      => x_msg_count,
13903                             x_msg_data       => x_msg_data,
13904                             p_chr_id         => p_template_id,
13905                             p_cle_id         => NULL,
13906                             p_rgd_code       => 'AMTEWC',
13907                             p_rule_code      => 'AMBCOC',
13908                             x_rulv_tbl       => l_rulv_tbl,
13909                             x_rule_count     => l_rule_count
13910                            );
13911 
13912          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13913             RAISE header_rule_failed;
13914          END IF;
13915 
13916          IF (l_rule_count > 0) THEN
13917             l_ert_contract_oblig_opt      := NVL(l_ert_contract_oblig_opt,l_rulv_tbl(1).rule_information1);
13918             l_ert_contract_oblig_amount   := NVL(l_ert_contract_oblig_amount,l_rulv_tbl(1).rule_information2);
13919             l_ert_contract_oblig_formula  := NVL(l_ert_contract_oblig_formula,l_rulv_tbl(1).rule_information3);
13920             l_ert_contract_oblig_prorate  := NVL(l_ert_contract_oblig_prorate,l_rulv_tbl(1).rule_information4);
13921          END IF;
13922       END IF;
13923 
13924       IF (l_ert_contract_oblig_opt IS NOT NULL) THEN
13925          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13926          l_rulv_rec.dnz_chr_id                := p_chr_id;
13927          l_rulv_rec.rule_information1         := l_ert_contract_oblig_opt;
13928          l_rulv_rec.rule_information_category := 'AMBCOC';
13929          l_rulv_rec.std_template_yn           := 'N';
13930          l_rulv_rec.warn_yn                   := 'N';
13931       END IF;
13932 
13933       IF (l_ert_contract_oblig_amount IS NOT NULL) THEN
13934          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13935          l_rulv_rec.dnz_chr_id                := p_chr_id;
13936          l_rulv_rec.rule_information2         := l_ert_contract_oblig_amount;
13937          l_rulv_rec.rule_information_category := 'AMBCOC';
13938          l_rulv_rec.std_template_yn           := 'N';
13939          l_rulv_rec.warn_yn                   := 'N';
13940       END IF;
13941 
13942       IF (l_ert_contract_oblig_formula IS NOT NULL) THEN
13943          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13944          l_rulv_rec.dnz_chr_id                := p_chr_id;
13945          l_rulv_rec.rule_information3         := l_ert_contract_oblig_formula;
13946          l_rulv_rec.rule_information_category := 'AMBCOC';
13947          l_rulv_rec.std_template_yn           := 'N';
13948          l_rulv_rec.warn_yn                   := 'N';
13949       END IF;
13950 
13951       IF (l_ert_contract_oblig_prorate IS NOT NULL) THEN
13952          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
13953          l_rulv_rec.dnz_chr_id                := p_chr_id;
13954          l_rulv_rec.rule_information4         := l_ert_contract_oblig_prorate;
13955          l_rulv_rec.rule_information_category := 'AMBCOC';
13956          l_rulv_rec.std_template_yn           := 'N';
13957          l_rulv_rec.warn_yn                   := 'N';
13958       END IF;
13959 
13960       create_rule_group_and_rule(
13961                                  x_return_status => x_return_status,
13962                                  x_msg_count     => x_msg_count,
13963                                  x_msg_data      => x_msg_data,
13964                                  p_rgp_id        => l_rgp_id,
13965                                  p_rgpv_rec      => l_rgpv_rec,
13966                                  p_rulv_rec      => l_rulv_rec,
13967                                  x_rgpv_rec      => x_rgpv_rec,
13968                                  x_rulv_rec      => x_rulv_rec
13969                                 );
13970 
13971       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
13972           raise header_rule_failed;
13973       END IF;
13974 
13975       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
13976          l_rgp_id := x_rgpv_rec.id;
13977       END IF;
13978       debug_message('------>Rule: AMTEWC/AMBCOC processed');
13979       l_rulv_rec := NULL;
13980 
13981       l_ert_disc_rate_opt      := p_header_rec.ert_disc_rate_opt;
13982       l_ert_disc_rate_amount   := TO_CHAR(p_header_rec.ert_disc_rate_amount);
13983       l_ert_disc_rate_formula  := p_header_rec.ert_disc_rate_formula;
13984       l_ert_disc_rate_prorate  := p_header_rec.ert_disc_rate_prorate;
13985 
13986       IF (l_ert_disc_rate_opt IS NULL
13987           OR
13988           l_ert_disc_rate_amount IS NULL
13989           OR
13990           l_ert_disc_rate_formula IS NULL
13991           OR
13992           l_ert_disc_rate_prorate IS NULL
13993           AND
13994           p_header_rec.template_number IS NOT NULL) THEN
13995          get_contract_rules(
13996                             x_return_status  => x_return_status,
13997                             x_msg_count      => x_msg_count,
13998                             x_msg_data       => x_msg_data,
13999                             p_chr_id         => p_template_id,
14000                             p_cle_id         => NULL,
14001                             p_rgd_code       => 'AMTEWC',
14002                             p_rule_code      => 'AMCQDR',
14003                             x_rulv_tbl       => l_rulv_tbl,
14004                             x_rule_count     => l_rule_count
14005                            );
14006 
14007          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14008             RAISE header_rule_failed;
14009          END IF;
14010 
14011          IF (l_rule_count > 0) THEN
14012             l_ert_disc_rate_opt      := NVL(l_ert_disc_rate_opt,l_rulv_tbl(1).rule_information1);
14013             l_ert_disc_rate_amount   := NVL(l_ert_disc_rate_amount,l_rulv_tbl(1).rule_information2);
14014             l_ert_disc_rate_formula  := NVL(l_ert_disc_rate_formula,l_rulv_tbl(1).rule_information3);
14015             l_ert_disc_rate_prorate  := NVL(l_ert_disc_rate_prorate,l_rulv_tbl(1).rule_information4);
14016          END IF;
14017       END IF;
14018 
14019       IF (l_ert_disc_rate_opt IS NOT NULL) THEN
14020          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14021          l_rulv_rec.dnz_chr_id                := p_chr_id;
14022          l_rulv_rec.rule_information1         := l_ert_disc_rate_opt;
14023          l_rulv_rec.rule_information_category := 'AMCQDR';
14024          l_rulv_rec.std_template_yn           := 'N';
14025          l_rulv_rec.warn_yn                   := 'N';
14026       END IF;
14027 
14028       IF (l_ert_disc_rate_amount 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_information2         := l_ert_disc_rate_amount;
14032          l_rulv_rec.rule_information_category := 'AMCQDR';
14033          l_rulv_rec.std_template_yn           := 'N';
14034          l_rulv_rec.warn_yn                   := 'N';
14035       END IF;
14036 
14037       IF (l_ert_disc_rate_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_information3         := l_ert_disc_rate_formula;
14041          l_rulv_rec.rule_information_category := 'AMCQDR';
14042          l_rulv_rec.std_template_yn           := 'N';
14043          l_rulv_rec.warn_yn                   := 'N';
14044       END IF;
14045 
14046       IF (l_ert_disc_rate_prorate IS NOT NULL) THEN
14047          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14048          l_rulv_rec.dnz_chr_id                := p_chr_id;
14049          l_rulv_rec.rule_information4         := l_ert_disc_rate_prorate;
14050          l_rulv_rec.rule_information_category := 'AMCQDR';
14051          l_rulv_rec.std_template_yn           := 'N';
14052          l_rulv_rec.warn_yn                   := 'N';
14053       END IF;
14054 
14055       create_rule_group_and_rule(
14056                                  x_return_status => x_return_status,
14057                                  x_msg_count     => x_msg_count,
14058                                  x_msg_data      => x_msg_data,
14059                                  p_rgp_id        => l_rgp_id,
14060                                  p_rgpv_rec      => l_rgpv_rec,
14061                                  p_rulv_rec      => l_rulv_rec,
14062                                  x_rgpv_rec      => x_rgpv_rec,
14063                                  x_rulv_rec      => x_rulv_rec
14064                                 );
14065 
14066       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14067           raise header_rule_failed;
14068       END IF;
14069 
14070       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
14071          l_rgp_id := x_rgpv_rec.id;
14072       END IF;
14073       debug_message('------>Rule: AMTEWC/AMCQDR processed');
14074       l_rulv_rec := NULL;
14075 
14076       l_ert_quote_fee_opt      := p_header_rec.ert_quote_fee_opt;
14077       l_ert_quote_fee_amount   := TO_CHAR(p_header_rec.ert_quote_fee_amount);
14078       l_ert_quote_fee_formula  := p_header_rec.ert_quote_fee_formula;
14079       l_ert_quote_fee_prorate  := p_header_rec.ert_quote_fee_prorate;
14080 
14081       IF (l_ert_quote_fee_opt IS NULL
14082           OR
14083           l_ert_quote_fee_amount IS NULL
14084           OR
14085           l_ert_quote_fee_formula IS NULL
14086           OR
14087           l_ert_quote_fee_prorate IS NULL
14088           AND
14089           p_header_rec.template_number IS NOT NULL) THEN
14090          get_contract_rules(
14091                             x_return_status  => x_return_status,
14092                             x_msg_count      => x_msg_count,
14093                             x_msg_data       => x_msg_data,
14094                             p_chr_id         => p_template_id,
14095                             p_cle_id         => NULL,
14096                             p_rgd_code       => 'AMTEWC',
14097                             p_rule_code      => 'AMCQFE',
14098                             x_rulv_tbl       => l_rulv_tbl,
14099                             x_rule_count     => l_rule_count
14100                            );
14101 
14102          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14103             RAISE header_rule_failed;
14104          END IF;
14105 
14106          IF (l_rule_count > 0) THEN
14107             l_ert_quote_fee_opt      := NVL(l_ert_quote_fee_opt,l_rulv_tbl(1).rule_information1);
14108             l_ert_quote_fee_amount   := NVL(l_ert_quote_fee_amount,l_rulv_tbl(1).rule_information2);
14109             l_ert_quote_fee_formula  := NVL(l_ert_quote_fee_formula,l_rulv_tbl(1).rule_information3);
14110             l_ert_quote_fee_prorate  := NVL(l_ert_quote_fee_prorate,l_rulv_tbl(1).rule_information4);
14111          END IF;
14112       END IF;
14113 
14114       IF (l_ert_quote_fee_opt 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_information1         := l_ert_quote_fee_opt;
14118          l_rulv_rec.rule_information_category := 'AMCQFE';
14119          l_rulv_rec.std_template_yn           := 'N';
14120          l_rulv_rec.warn_yn                   := 'N';
14121       END IF;
14122 
14123       IF (l_ert_quote_fee_amount 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_information2         := l_ert_quote_fee_amount;
14127          l_rulv_rec.rule_information_category := 'AMCQFE';
14128          l_rulv_rec.std_template_yn           := 'N';
14129          l_rulv_rec.warn_yn                   := 'N';
14130       END IF;
14131 
14132       IF (l_ert_quote_fee_formula 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_information3         := l_ert_quote_fee_formula;
14136          l_rulv_rec.rule_information_category := 'AMCQFE';
14137          l_rulv_rec.std_template_yn           := 'N';
14138          l_rulv_rec.warn_yn                   := 'N';
14139       END IF;
14140 
14141       IF (l_ert_quote_fee_prorate IS NOT NULL) THEN
14142          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14143          l_rulv_rec.dnz_chr_id                := p_chr_id;
14144          l_rulv_rec.rule_information4         := l_ert_quote_fee_prorate;
14145          l_rulv_rec.rule_information_category := 'AMCQFE';
14146          l_rulv_rec.std_template_yn           := 'N';
14147          l_rulv_rec.warn_yn                   := 'N';
14148       END IF;
14149 
14150       create_rule_group_and_rule(
14151                                  x_return_status => x_return_status,
14152                                  x_msg_count     => x_msg_count,
14153                                  x_msg_data      => x_msg_data,
14154                                  p_rgp_id        => l_rgp_id,
14155                                  p_rgpv_rec      => l_rgpv_rec,
14156                                  p_rulv_rec      => l_rulv_rec,
14157                                  x_rgpv_rec      => x_rgpv_rec,
14158                                  x_rulv_rec      => x_rulv_rec
14159                                 );
14160 
14161       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14162           raise header_rule_failed;
14163       END IF;
14164 
14165       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
14166          l_rgp_id := x_rgpv_rec.id;
14167       END IF;
14168       debug_message('------>Rule: AMTEWC/AMCQFE processed');
14169       l_rulv_rec := NULL;
14170 
14171       l_ert_return_fee_option   := p_header_rec.ert_return_fee_option;
14172       l_ert_return_fee_amount   := TO_CHAR(p_header_rec.ert_return_fee_amount);
14173       l_ert_return_fee_formula  := p_header_rec.ert_return_fee_formula;
14174       l_ert_return_fee_prorate  := p_header_rec.ert_return_fee_prorate;
14175 
14176       IF (l_ert_return_fee_option IS NULL
14177           OR
14178           l_ert_return_fee_amount IS NULL
14179           OR
14180           l_ert_return_fee_formula IS NULL
14181           OR
14182           l_ert_return_fee_prorate IS NULL
14183           AND
14184           p_header_rec.template_number IS NOT NULL) THEN
14185          get_contract_rules(
14186                             x_return_status  => x_return_status,
14187                             x_msg_count      => x_msg_count,
14188                             x_msg_data       => x_msg_data,
14189                             p_chr_id         => p_template_id,
14190                             p_cle_id         => NULL,
14191                             p_rgd_code       => 'AMTEWC',
14192                             p_rule_code      => 'AMCRFE',
14193                             x_rulv_tbl       => l_rulv_tbl,
14194                             x_rule_count     => l_rule_count
14195                            );
14196 
14197          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14198             RAISE header_rule_failed;
14199          END IF;
14200 
14201          IF (l_rule_count > 0) THEN
14202             l_ert_return_fee_option   := NVL(l_ert_return_fee_option,l_rulv_tbl(1).rule_information1);
14203             l_ert_return_fee_amount   := NVL(l_ert_return_fee_amount,l_rulv_tbl(1).rule_information2);
14204             l_ert_return_fee_formula  := NVL(l_ert_return_fee_formula,l_rulv_tbl(1).rule_information3);
14205             l_ert_return_fee_prorate  := NVL(l_ert_return_fee_prorate,l_rulv_tbl(1).rule_information4);
14206          END IF;
14207       END IF;
14208 
14209       IF (l_ert_return_fee_option 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_informaTion1         := l_ert_return_fee_option;
14213          l_rulv_rec.rule_information_category := 'AMCRFE';
14214          l_rulv_rec.std_template_yn           := 'N';
14215          l_rulv_rec.warn_yn                   := 'N';
14216       END IF;
14217 
14218       IF (l_ert_return_fee_amount 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_information2         := l_ert_return_fee_amount;
14222          l_rulv_rec.rule_information_category := 'AMCRFE';
14223          l_rulv_rec.std_template_yn           := 'N';
14224          l_rulv_rec.warn_yn                   := 'N';
14225       END IF;
14226 
14227       IF (l_ert_return_fee_formula 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_information3         := l_ert_return_fee_formula;
14231          l_rulv_rec.rule_information_category := 'AMCRFE';
14232          l_rulv_rec.std_template_yn           := 'N';
14233          l_rulv_rec.warn_yn                   := 'N';
14234       END IF;
14235 
14236       IF (l_ert_return_fee_prorate IS NOT NULL) THEN
14237          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14238          l_rulv_rec.dnz_chr_id                := p_chr_id;
14239          l_rulv_rec.rule_information4         := l_ert_return_fee_prorate;
14240          l_rulv_rec.rule_information_category := 'AMCRFE';
14241          l_rulv_rec.std_template_yn           := 'N';
14242          l_rulv_rec.warn_yn                   := 'N';
14243       END IF;
14244 
14245       create_rule_group_and_rule(
14246                                  x_return_status => x_return_status,
14247                                  x_msg_count     => x_msg_count,
14248                                  x_msg_data      => x_msg_data,
14249                                  p_rgp_id        => l_rgp_id,
14250                                  p_rgpv_rec      => l_rgpv_rec,
14251                                  p_rulv_rec      => l_rulv_rec,
14252                                  x_rgpv_rec      => x_rgpv_rec,
14253                                  x_rulv_rec      => x_rulv_rec
14254                                 );
14255 
14256       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14257           raise header_rule_failed;
14258       END IF;
14259 
14260       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
14261          l_rgp_id := x_rgpv_rec.id;
14262       END IF;
14263       debug_message('------>Rule: AMTEWC/AMCRFE processed');
14264       l_rulv_rec := NULL;
14265 
14266       l_ert_roll_inctv_option   := p_header_rec.ert_roll_inctv_option;
14267       l_ert_roll_inctv_amount   := TO_CHAR(p_header_rec.ert_roll_inctv_amount);
14268       l_ert_roll_inctv_formula  := p_header_rec.ert_roll_inctv_formula;
14269       l_ert_roll_inctv_prorate  := p_header_rec.ert_roll_inctv_prorate;
14270 
14271       IF (l_ert_roll_inctv_option IS NULL
14272           OR
14273           l_ert_roll_inctv_amount IS NULL
14274           OR
14275           l_ert_roll_inctv_formula IS NULL
14276           OR
14277           l_ert_roll_inctv_prorate IS NULL
14278           AND
14279           p_header_rec.template_number IS NOT NULL) THEN
14280          get_contract_rules(
14281                             x_return_status  => x_return_status,
14282                             x_msg_count      => x_msg_count,
14283                             x_msg_data       => x_msg_data,
14284                             p_chr_id         => p_template_id,
14285                             p_cle_id         => NULL,
14286                             p_rgd_code       => 'AMTEWC',
14287                             p_rule_code      => 'AMCRIN',
14288                             x_rulv_tbl       => l_rulv_tbl,
14289                             x_rule_count     => l_rule_count
14290                            );
14291 
14292          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14293             RAISE header_rule_failed;
14294          END IF;
14295 
14296          IF (l_rule_count > 0) THEN
14297             l_ert_roll_inctv_option   := NVL(l_ert_roll_inctv_option,l_rulv_tbl(1).rule_information1);
14298             l_ert_roll_inctv_amount   := NVL(l_ert_roll_inctv_amount,l_rulv_tbl(1).rule_information2);
14299             l_ert_roll_inctv_formula  := NVL(l_ert_roll_inctv_formula,l_rulv_tbl(1).rule_information3);
14300             l_ert_roll_inctv_prorate  := NVL(l_ert_roll_inctv_prorate,l_rulv_tbl(1).rule_information4);
14301          END IF;
14302       END IF;
14303 
14304       IF (l_ert_roll_inctv_option 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_informaTion1         := l_ert_roll_inctv_option;
14308          l_rulv_rec.rule_information_category := 'AMCRIN';
14309          l_rulv_rec.std_template_yn           := 'N';
14310          l_rulv_rec.warn_yn                   := 'N';
14311       END IF;
14312 
14313       IF (l_ert_roll_inctv_amount 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_information2         := l_ert_roll_inctv_amount;
14317          l_rulv_rec.rule_information_category := 'AMCRIN';
14318          l_rulv_rec.std_template_yn           := 'N';
14319          l_rulv_rec.warn_yn                   := 'N';
14320       END IF;
14321 
14322       IF (l_ert_roll_inctv_formula 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_information3         := l_ert_roll_inctv_formula;
14326          l_rulv_rec.rule_information_category := 'AMCRIN';
14327          l_rulv_rec.std_template_yn           := 'N';
14328          l_rulv_rec.warn_yn                   := 'N';
14329       END IF;
14330 
14331       IF (l_ert_roll_inctv_prorate IS NOT NULL) THEN
14332          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14333          l_rulv_rec.dnz_chr_id                := p_chr_id;
14334          l_rulv_rec.rule_information4         := l_ert_roll_inctv_prorate;
14335          l_rulv_rec.rule_information_category := 'AMCRIN';
14336          l_rulv_rec.std_template_yn           := 'N';
14337          l_rulv_rec.warn_yn                   := 'N';
14338       END IF;
14339 
14340       create_rule_group_and_rule(
14341                                  x_return_status => x_return_status,
14342                                  x_msg_count     => x_msg_count,
14343                                  x_msg_data      => x_msg_data,
14344                                  p_rgp_id        => l_rgp_id,
14345                                  p_rgpv_rec      => l_rgpv_rec,
14346                                  p_rulv_rec      => l_rulv_rec,
14347                                  x_rgpv_rec      => x_rgpv_rec,
14348                                  x_rulv_rec      => x_rulv_rec
14349                                 );
14350 
14351       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14352           raise header_rule_failed;
14353       END IF;
14354 
14355       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
14356          l_rgp_id := x_rgpv_rec.id;
14357       END IF;
14358       debug_message('------>Rule: AMTEWC/AMCRIN processed');
14359       l_rulv_rec := NULL;
14360 
14361       l_ert_secu_dep_dispo_option   := p_header_rec.ert_secu_dep_dispo_option;
14362       l_ert_secu_dep_dispo_amount   := TO_CHAR(p_header_rec.ert_secu_dep_dispo_amount);
14363       l_ert_secu_dep_dispo_formula  := p_header_rec.ert_secu_dep_dispo_formula;
14364       l_ert_secu_dep_dispo_prorate  := p_header_rec.ert_secu_dep_dispo_prorate;
14365 
14366       IF (l_ert_secu_dep_dispo_option IS NULL
14367           OR
14368           l_ert_secu_dep_dispo_amount IS NULL
14369           OR
14370           l_ert_secu_dep_dispo_formula IS NULL
14371           OR
14372           l_ert_secu_dep_dispo_prorate IS NULL
14373           AND
14374           p_header_rec.template_number IS NOT NULL) THEN
14375          get_contract_rules(
14376                             x_return_status  => x_return_status,
14377                             x_msg_count      => x_msg_count,
14378                             x_msg_data       => x_msg_data,
14379                             p_chr_id         => p_template_id,
14380                             p_cle_id         => NULL,
14381                             p_rgd_code       => 'AMTEWC',
14382                             p_rule_code      => 'AMCSDD',
14383                             x_rulv_tbl       => l_rulv_tbl,
14384                             x_rule_count     => l_rule_count
14385                            );
14386 
14387          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14388             RAISE header_rule_failed;
14389          END IF;
14390 
14391          IF (l_rule_count > 0) THEN
14392             l_ert_secu_dep_dispo_option   := NVL(l_ert_secu_dep_dispo_option,l_rulv_tbl(1).rule_information1);
14393             l_ert_secu_dep_dispo_amount   := NVL(l_ert_secu_dep_dispo_amount,l_rulv_tbl(1).rule_information2);
14394             l_ert_secu_dep_dispo_formula  := NVL(l_ert_secu_dep_dispo_formula,l_rulv_tbl(1).rule_information3);
14395             l_ert_secu_dep_dispo_prorate  := NVL(l_ert_secu_dep_dispo_prorate,l_rulv_tbl(1).rule_information4);
14396          END IF;
14397       END IF;
14398 
14399       IF (l_ert_secu_dep_dispo_option 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_informaTion1         := l_ert_secu_dep_dispo_option;
14403          l_rulv_rec.rule_information_category := 'AMCSDD';
14404          l_rulv_rec.std_template_yn           := 'N';
14405          l_rulv_rec.warn_yn                   := 'N';
14406       END IF;
14407 
14408       IF (l_ert_secu_dep_dispo_amount 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_information2         := l_ert_secu_dep_dispo_amount;
14412          l_rulv_rec.rule_information_category := 'AMCSDD';
14413          l_rulv_rec.std_template_yn           := 'N';
14414          l_rulv_rec.warn_yn                   := 'N';
14415       END IF;
14416 
14417       IF (l_ert_secu_dep_dispo_formula 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_information3         := l_ert_secu_dep_dispo_formula;
14421          l_rulv_rec.rule_information_category := 'AMCSDD';
14422          l_rulv_rec.std_template_yn           := 'N';
14423          l_rulv_rec.warn_yn                   := 'N';
14424       END IF;
14425 
14426       IF (l_ert_secu_dep_dispo_prorate IS NOT NULL) THEN
14427          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14428          l_rulv_rec.dnz_chr_id                := p_chr_id;
14429          l_rulv_rec.rule_information4         := l_ert_secu_dep_dispo_prorate;
14430          l_rulv_rec.rule_information_category := 'AMCSDD';
14431          l_rulv_rec.std_template_yn           := 'N';
14432          l_rulv_rec.warn_yn                   := 'N';
14433       END IF;
14434 
14435       create_rule_group_and_rule(
14436                                  x_return_status => x_return_status,
14437                                  x_msg_count     => x_msg_count,
14438                                  x_msg_data      => x_msg_data,
14439                                  p_rgp_id        => l_rgp_id,
14440                                  p_rgpv_rec      => l_rgpv_rec,
14441                                  p_rulv_rec      => l_rulv_rec,
14442                                  x_rgpv_rec      => x_rgpv_rec,
14443                                  x_rulv_rec      => x_rulv_rec
14444                                 );
14445 
14446       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14447           raise header_rule_failed;
14448       END IF;
14449 
14450       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
14451          l_rgp_id := x_rgpv_rec.id;
14452       END IF;
14453       debug_message('------>Rule: AMTEWC/AMCSDD processed');
14454       l_rulv_rec := NULL;
14455 
14456       l_ert_term_penalty_option       := p_header_rec.ert_term_penalty_option;
14457       l_ert_term_penalty_amount       := TO_CHAR(p_header_rec.ert_term_penalty_amount);
14458       l_ert_term_penalty_formula      := p_header_rec.ert_term_penalty_formula;
14459       l_ert_term_penalty_prorate      := p_header_rec.ert_term_penalty_prorate;
14460       l_ert_term_penalty_cap_option   := p_header_rec.ert_term_penalty_cap_option;
14461       l_ert_term_penalty_cap_amount   := TO_CHAR(p_header_rec.ert_term_penalty_cap_amount);
14462       l_ert_term_penalty_cap_formula  := p_header_rec.ert_term_penalty_cap_formula;
14463 
14464       IF (l_ert_term_penalty_option IS NULL
14465           OR
14466           l_ert_term_penalty_amount IS NULL
14467           OR
14468           l_ert_term_penalty_formula IS NULL
14469           OR
14470           l_ert_term_penalty_prorate IS NULL
14471           OR
14472           l_ert_term_penalty_cap_option IS NULL
14473           OR
14474           l_ert_term_penalty_cap_amount IS NULL
14475           OR
14476           l_ert_term_penalty_cap_formula IS NULL
14477           AND
14478           p_header_rec.template_number IS NOT NULL) THEN
14479          get_contract_rules(
14480                             x_return_status  => x_return_status,
14481                             x_msg_count      => x_msg_count,
14482                             x_msg_data       => x_msg_data,
14483                             p_chr_id         => p_template_id,
14484                             p_cle_id         => NULL,
14485                             p_rgd_code       => 'AMTEWC',
14486                             p_rule_code      => 'AMCTPE',
14487                             x_rulv_tbl       => l_rulv_tbl,
14488                             x_rule_count     => l_rule_count
14489                            );
14490 
14491          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14492             RAISE header_rule_failed;
14493          END IF;
14494 
14495          IF (l_rule_count > 0) THEN
14496             l_ert_term_penalty_option       := NVL(l_ert_term_penalty_option,l_rulv_tbl(1).rule_information1);
14497             l_ert_term_penalty_amount       := NVL(l_ert_term_penalty_amount,l_rulv_tbl(1).rule_information2);
14498             l_ert_term_penalty_formula      := NVL(l_ert_term_penalty_formula,l_rulv_tbl(1).rule_information3);
14499             l_ert_term_penalty_prorate      := NVL(l_ert_term_penalty_prorate,l_rulv_tbl(1).rule_information4);
14500             l_ert_term_penalty_cap_option   := NVL(l_ert_term_penalty_cap_option,l_rulv_tbl(1).rule_information5);
14501             l_ert_term_penalty_cap_amount   := NVL(l_ert_term_penalty_cap_amount,l_rulv_tbl(1).rule_information6);
14502             l_ert_term_penalty_cap_formula  := NVL(l_ert_term_penalty_cap_formula,l_rulv_tbl(1).rule_information7);
14503          END IF;
14504       END IF;
14505 
14506       IF (l_ert_term_penalty_option IS NOT NULL) THEN
14507          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14508          l_rulv_rec.dnz_chr_id                := p_chr_id;
14509          l_rulv_rec.rule_informaTion1         := l_ert_term_penalty_option;
14510          l_rulv_rec.rule_information_category := 'AMCTPE';
14511          l_rulv_rec.std_template_yn           := 'N';
14512          l_rulv_rec.warn_yn                   := 'N';
14513       END IF;
14514 
14515       IF (l_ert_term_penalty_amount IS NOT NULL) THEN
14516          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14517          l_rulv_rec.dnz_chr_id                := p_chr_id;
14518          l_rulv_rec.rule_information2         := l_ert_term_penalty_amount;
14519          l_rulv_rec.rule_information_category := 'AMCTPE';
14520          l_rulv_rec.std_template_yn           := 'N';
14521          l_rulv_rec.warn_yn                   := 'N';
14522       END IF;
14523 
14524       IF (l_ert_term_penalty_formula IS NOT NULL) THEN
14525          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14526          l_rulv_rec.dnz_chr_id                := p_chr_id;
14527          l_rulv_rec.rule_information3         := l_ert_term_penalty_formula;
14528          l_rulv_rec.rule_information_category := 'AMCTPE';
14529          l_rulv_rec.std_template_yn           := 'N';
14530          l_rulv_rec.warn_yn                   := 'N';
14531       END IF;
14532 
14533       IF (l_ert_term_penalty_prorate IS NOT NULL) THEN
14534          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14535          l_rulv_rec.dnz_chr_id                := p_chr_id;
14536          l_rulv_rec.rule_information4         := l_ert_term_penalty_prorate;
14537          l_rulv_rec.rule_information_category := 'AMCTPE';
14538          l_rulv_rec.std_template_yn           := 'N';
14539          l_rulv_rec.warn_yn                   := 'N';
14540       END IF;
14541 
14542       IF (l_ert_term_penalty_cap_option IS NOT NULL) THEN
14543          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14544          l_rulv_rec.dnz_chr_id                := p_chr_id;
14545          l_rulv_rec.rule_informaTion5         := l_ert_term_penalty_cap_option;
14546          l_rulv_rec.rule_information_category := 'AMCTPE';
14547          l_rulv_rec.std_template_yn           := 'N';
14548          l_rulv_rec.warn_yn                   := 'N';
14549       END IF;
14550 
14551       IF (l_ert_term_penalty_cap_amount IS NOT NULL) THEN
14552          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14553          l_rulv_rec.dnz_chr_id                := p_chr_id;
14554          l_rulv_rec.rule_information6         := l_ert_term_penalty_cap_amount;
14555          l_rulv_rec.rule_information_category := 'AMCTPE';
14556          l_rulv_rec.std_template_yn           := 'N';
14557          l_rulv_rec.warn_yn                   := 'N';
14558       END IF;
14559 
14560       IF (l_ert_term_penalty_cap_formula IS NOT NULL) THEN
14561          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14562          l_rulv_rec.dnz_chr_id                := p_chr_id;
14563          l_rulv_rec.rule_information7         := l_ert_term_penalty_cap_formula;
14564          l_rulv_rec.rule_information_category := 'AMCTPE';
14565          l_rulv_rec.std_template_yn           := 'N';
14566          l_rulv_rec.warn_yn                   := 'N';
14567       END IF;
14568 
14569       create_rule_group_and_rule(
14570                                  x_return_status => x_return_status,
14571                                  x_msg_count     => x_msg_count,
14572                                  x_msg_data      => x_msg_data,
14573                                  p_rgp_id        => l_rgp_id,
14574                                  p_rgpv_rec      => l_rgpv_rec,
14575                                  p_rulv_rec      => l_rulv_rec,
14576                                  x_rgpv_rec      => x_rgpv_rec,
14577                                  x_rulv_rec      => x_rulv_rec
14578                                 );
14579 
14580       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14581           raise header_rule_failed;
14582       END IF;
14583 
14584       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
14585          l_rgp_id := x_rgpv_rec.id;
14586       END IF;
14587       debug_message('------>Rule: AMTEWC/AMCTPE processed');
14588       l_rulv_rec := NULL;
14589 
14590       l_ert_est_prop_tax_option   := p_header_rec.ert_est_prop_tax_option;
14591       l_ert_est_prop_tax_amount   := TO_CHAR(p_header_rec.ert_est_prop_tax_amount);
14592       l_ert_est_prop_tax_formula  := p_header_rec.ert_est_prop_tax_formula;
14593       l_ert_est_prop_tax_prorate  := p_header_rec.ert_est_prop_tax_prorate;
14594 
14595       IF (l_ert_est_prop_tax_option IS NULL
14596           OR
14597           l_ert_est_prop_tax_amount IS NULL
14598           OR
14599           l_ert_est_prop_tax_formula IS NULL
14600           OR
14601           l_ert_est_prop_tax_prorate IS NULL
14602           AND
14603           p_header_rec.template_number IS NOT NULL) THEN
14604          get_contract_rules(
14605                             x_return_status  => x_return_status,
14606                             x_msg_count      => x_msg_count,
14607                             x_msg_data       => x_msg_data,
14608                             p_chr_id         => p_template_id,
14609                             p_cle_id         => NULL,
14610                             p_rgd_code       => 'AMTEWC',
14611                             p_rule_code      => 'AMPRTX',
14612                             x_rulv_tbl       => l_rulv_tbl,
14613                             x_rule_count     => l_rule_count
14614                            );
14615 
14616          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14617             RAISE header_rule_failed;
14618          END IF;
14619 
14620          IF (l_rule_count > 0) THEN
14621             l_ert_est_prop_tax_option   := NVL(l_ert_est_prop_tax_option,l_rulv_tbl(1).rule_information1);
14622             l_ert_est_prop_tax_amount   := NVL(l_ert_est_prop_tax_amount,l_rulv_tbl(1).rule_information2);
14623             l_ert_est_prop_tax_formula  := NVL(l_ert_est_prop_tax_formula,l_rulv_tbl(1).rule_information3);
14624             l_ert_est_prop_tax_prorate  := NVL(l_ert_est_prop_tax_prorate,l_rulv_tbl(1).rule_information4);
14625          END IF;
14626       END IF;
14627 
14628       IF (l_ert_est_prop_tax_option IS NOT NULL) THEN
14629          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14630          l_rulv_rec.dnz_chr_id                := p_chr_id;
14631          l_rulv_rec.rule_informaTion1         := l_ert_est_prop_tax_option;
14632          l_rulv_rec.rule_information_category := 'AMPRTX';
14633          l_rulv_rec.std_template_yn           := 'N';
14634          l_rulv_rec.warn_yn                   := 'N';
14635       END IF;
14636 
14637       IF (l_ert_est_prop_tax_amount IS NOT NULL) THEN
14638          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14639          l_rulv_rec.dnz_chr_id                := p_chr_id;
14640          l_rulv_rec.rule_information2         := l_ert_est_prop_tax_amount;
14641          l_rulv_rec.rule_information_category := 'AMPRTX';
14642          l_rulv_rec.std_template_yn           := 'N';
14643          l_rulv_rec.warn_yn                   := 'N';
14644       END IF;
14645 
14646       IF (l_ert_est_prop_tax_formula IS NOT NULL) THEN
14647          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14648          l_rulv_rec.dnz_chr_id                := p_chr_id;
14649          l_rulv_rec.rule_information3         := l_ert_est_prop_tax_formula;
14650          l_rulv_rec.rule_information_category := 'AMPRTX';
14651          l_rulv_rec.std_template_yn           := 'N';
14652          l_rulv_rec.warn_yn                   := 'N';
14653       END IF;
14654 
14655       IF (l_ert_est_prop_tax_prorate IS NOT NULL) THEN
14656          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14657          l_rulv_rec.dnz_chr_id                := p_chr_id;
14658          l_rulv_rec.rule_information4         := l_ert_est_prop_tax_prorate;
14659          l_rulv_rec.rule_information_category := 'AMPRTX';
14660          l_rulv_rec.std_template_yn           := 'N';
14661          l_rulv_rec.warn_yn                   := 'N';
14662       END IF;
14663 
14664       create_rule_group_and_rule(
14665                                  x_return_status => x_return_status,
14666                                  x_msg_count     => x_msg_count,
14667                                  x_msg_data      => x_msg_data,
14668                                  p_rgp_id        => l_rgp_id,
14669                                  p_rgpv_rec      => l_rgpv_rec,
14670                                  p_rulv_rec      => l_rulv_rec,
14671                                  x_rgpv_rec      => x_rgpv_rec,
14672                                  x_rulv_rec      => x_rulv_rec
14673                                 );
14674 
14675       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14676           raise header_rule_failed;
14677       END IF;
14678 
14679       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
14680          l_rgp_id := x_rgpv_rec.id;
14681       END IF;
14682       debug_message('------>Rule: AMTEWC/AMPRTX processed');
14683       l_rulv_rec := NULL;
14684 
14685       l_ert_contr_fees_option := p_header_rec.ert_contr_fees_option;
14686 
14687       IF (l_ert_contr_fees_option IS NULL
14688           AND
14689           p_header_rec.template_number IS NOT NULL) THEN
14690          get_contract_rules(
14691                             x_return_status  => x_return_status,
14692                             x_msg_count      => x_msg_count,
14693                             x_msg_data       => x_msg_data,
14694                             p_chr_id         => p_template_id,
14695                             p_cle_id         => NULL,
14696                             p_rgd_code       => 'AMTEWC',
14697                             p_rule_code      => 'AMYFEE',
14698                             x_rulv_tbl       => l_rulv_tbl,
14699                             x_rule_count     => l_rule_count
14700                            );
14701 
14702          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14703             RAISE header_rule_failed;
14704          END IF;
14705 
14706          IF (l_rule_count > 0) THEN
14707             l_ert_contr_fees_option   := NVL(l_ert_contr_fees_option,l_rulv_tbl(1).rule_information1);
14708          END IF;
14709       END IF;
14710 
14711       IF (l_ert_contr_fees_option IS NOT NULL) THEN
14712          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14713          l_rulv_rec.dnz_chr_id                := p_chr_id;
14714          l_rulv_rec.rule_information1         := l_ert_contr_fees_option;
14715          l_rulv_rec.rule_information_category := 'AMYFEE';
14716          l_rulv_rec.std_template_yn           := 'N';
14717          l_rulv_rec.warn_yn                   := 'N';
14718       END IF;
14719 
14720       create_rule_group_and_rule(
14721                                  x_return_status => x_return_status,
14722                                  x_msg_count     => x_msg_count,
14723                                  x_msg_data      => x_msg_data,
14724                                  p_rgp_id        => l_rgp_id,
14725                                  p_rgpv_rec      => l_rgpv_rec,
14726                                  p_rulv_rec      => l_rulv_rec,
14727                                  x_rgpv_rec      => x_rgpv_rec,
14728                                  x_rulv_rec      => x_rulv_rec
14729                                 );
14730 
14731       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14732           raise header_rule_failed;
14733       END IF;
14734 
14735       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
14736          l_rgp_id := x_rgpv_rec.id;
14737       END IF;
14738       debug_message('------>Rule: AMTEWC/AMYFEE processed');
14739       l_rulv_rec := NULL;
14740 
14741       l_ert_outstnd_bal_option := p_header_rec.ert_outstnd_bal_option;
14742 
14743       IF (l_ert_outstnd_bal_option IS NULL
14744           AND
14745           p_header_rec.template_number IS NOT NULL) THEN
14746          get_contract_rules(
14747                             x_return_status  => x_return_status,
14748                             x_msg_count      => x_msg_count,
14749                             x_msg_data       => x_msg_data,
14750                             p_chr_id         => p_template_id,
14751                             p_cle_id         => NULL,
14752                             p_rgd_code       => 'AMTEWC',
14753                             p_rule_code      => 'AMYOUB',
14754                             x_rulv_tbl       => l_rulv_tbl,
14755                             x_rule_count     => l_rule_count
14756                            );
14757 
14758          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14759             RAISE header_rule_failed;
14760          END IF;
14761 
14762          IF (l_rule_count > 0) THEN
14763             l_ert_outstnd_bal_option   := l_rulv_tbl(1).rule_information1;
14764          END IF;
14765       END IF;
14766 
14767       IF (l_ert_outstnd_bal_option IS NOT NULL) THEN
14768          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14769          l_rulv_rec.dnz_chr_id                := p_chr_id;
14770          l_rulv_rec.rule_information1         := l_ert_outstnd_bal_option;
14771          l_rulv_rec.rule_information_category := 'AMYOUB';
14772          l_rulv_rec.std_template_yn           := 'N';
14773          l_rulv_rec.warn_yn                   := 'N';
14774       END IF;
14775 
14776       create_rule_group_and_rule(
14777                                  x_return_status => x_return_status,
14778                                  x_msg_count     => x_msg_count,
14779                                  x_msg_data      => x_msg_data,
14780                                  p_rgp_id        => l_rgp_id,
14781                                  p_rgpv_rec      => l_rgpv_rec,
14782                                  p_rulv_rec      => l_rulv_rec,
14783                                  x_rgpv_rec      => x_rgpv_rec,
14784                                  x_rulv_rec      => x_rulv_rec
14785                                 );
14786 
14787       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14788           raise header_rule_failed;
14789       END IF;
14790 
14791       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
14792          l_rgp_id := x_rgpv_rec.id;
14793       END IF;
14794       debug_message('------>Rule: AMTEWC/AMYOUB processed');
14795       l_rulv_rec := NULL;
14796 
14797       l_ert_serv_mant_option := p_header_rec.ert_serv_mant_option;
14798       l_ert_serv_mant_frml   := p_header_rec.ert_serv_mant_frml;
14799 
14800       IF ((l_ert_serv_mant_option IS NULL
14801            OR
14802            l_ert_serv_mant_frml IS NULL
14803           )
14804           AND
14805           p_header_rec.template_number IS NOT NULL) THEN
14806          get_contract_rules(
14807                             x_return_status  => x_return_status,
14808                             x_msg_count      => x_msg_count,
14809                             x_msg_data       => x_msg_data,
14810                             p_chr_id         => p_template_id,
14811                             p_cle_id         => NULL,
14812                             p_rgd_code       => 'AMTEWC',
14813                             p_rule_code      => 'AMYSAM',
14814                             x_rulv_tbl       => l_rulv_tbl,
14815                             x_rule_count     => l_rule_count
14816                            );
14817 
14818          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14819             RAISE header_rule_failed;
14820          END IF;
14821 
14822          IF (l_rule_count > 0) THEN
14823             l_ert_serv_mant_option   := NVL(l_ert_serv_mant_option,l_rulv_tbl(1).rule_information1);
14824             l_ert_serv_mant_frml     := NVL(l_ert_serv_mant_frml,l_rulv_tbl(1).rule_information2);
14825          END IF;
14826       END IF;
14827 
14828       IF (l_ert_serv_mant_option IS NOT NULL) THEN
14829          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14830          l_rulv_rec.dnz_chr_id                := p_chr_id;
14831          l_rulv_rec.rule_information1         := l_ert_serv_mant_option;
14832          l_rulv_rec.rule_information_category := 'AMYSAM';
14833          l_rulv_rec.std_template_yn           := 'N';
14834          l_rulv_rec.warn_yn                   := 'N';
14835       END IF;
14836 
14837       IF (l_ert_serv_mant_frml IS NOT NULL) THEN
14838          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14839          l_rulv_rec.dnz_chr_id                := p_chr_id;
14840          l_rulv_rec.rule_information2         := l_ert_serv_mant_frml;
14841          l_rulv_rec.rule_information_category := 'AMYSAM';
14842          l_rulv_rec.std_template_yn           := 'N';
14843          l_rulv_rec.warn_yn                   := 'N';
14844       END IF;
14845 
14846       create_rule_group_and_rule(
14847                                  x_return_status => x_return_status,
14848                                  x_msg_count     => x_msg_count,
14849                                  x_msg_data      => x_msg_data,
14850                                  p_rgp_id        => l_rgp_id,
14851                                  p_rgpv_rec      => l_rgpv_rec,
14852                                  p_rulv_rec      => l_rulv_rec,
14853                                  x_rgpv_rec      => x_rgpv_rec,
14854                                  x_rulv_rec      => x_rulv_rec
14855                                 );
14856 
14857       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14858           raise header_rule_failed;
14859       END IF;
14860 
14861       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
14862          l_rgp_id := x_rgpv_rec.id;
14863       END IF;
14864 
14865       debug_message('------>Rule: AMTEWC/AMYSAM processed');
14866 
14867       /**** AKP Copied from here for AMTEWC 4067094 ***/
14868       l_rulv_rec := NULL;
14869 
14870       l_ert_absorbed_fee_frml := p_header_rec.ert_absorbed_fee_frml;
14871 
14872       IF (l_ert_absorbed_fee_frml IS NULL
14873           AND
14874           p_header_rec.template_number IS NOT NULL) THEN
14875          get_contract_rules(
14876                             x_return_status  => x_return_status,
14877                             x_msg_count      => x_msg_count,
14878                             x_msg_data       => x_msg_data,
14879                             p_chr_id         => p_template_id,
14880                             p_cle_id         => NULL,
14881                             p_rgd_code       => 'AMTEWC',
14882                             p_rule_code      => 'AMAFEE',
14883                             x_rulv_tbl       => l_rulv_tbl,
14884                             x_rule_count     => l_rule_count
14885                            );
14886 
14887          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14888             RAISE header_rule_failed;
14889          END IF;
14890 
14891          IF (l_rule_count > 0) THEN
14892             l_ert_absorbed_fee_frml   := l_rulv_tbl(1).rule_information3;
14893          END IF;
14894       END IF;
14895 
14896       IF (l_ert_absorbed_fee_frml IS NOT NULL) THEN
14897          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14898          l_rulv_rec.dnz_chr_id                := p_chr_id;
14899          l_rulv_rec.rule_information3         := l_ert_absorbed_fee_frml;
14900          l_rulv_rec.rule_information_category := 'AMAFEE';
14901          l_rulv_rec.std_template_yn           := 'N';
14902          l_rulv_rec.warn_yn                   := 'N';
14903       END IF;
14904 
14905       create_rule_group_and_rule(
14906                                  x_return_status => x_return_status,
14907                                  x_msg_count     => x_msg_count,
14908                                  x_msg_data      => x_msg_data,
14909                                  p_rgp_id        => l_rgp_id,
14910                                  p_rgpv_rec      => l_rgpv_rec,
14911                                  p_rulv_rec      => l_rulv_rec,
14912                                  x_rgpv_rec      => x_rgpv_rec,
14913                                  x_rulv_rec      => x_rulv_rec
14914                                 );
14915 
14916       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14917           raise header_rule_failed;
14918       END IF;
14919 
14920       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
14921          l_rgp_id := x_rgpv_rec.id;
14922       END IF;
14923 
14924       debug_message('------>Rule: AMTEWC/AMAFEE processed');
14925 
14926       l_rulv_rec := NULL;
14927 
14928       l_ert_expense_fee_frml := p_header_rec.ert_expense_fee_frml;
14929 
14930       IF (l_ert_expense_fee_frml IS NULL
14931           AND
14932           p_header_rec.template_number IS NOT NULL) THEN
14933          get_contract_rules(
14934                             x_return_status  => x_return_status,
14935                             x_msg_count      => x_msg_count,
14936                             x_msg_data       => x_msg_data,
14937                             p_chr_id         => p_template_id,
14938                             p_cle_id         => NULL,
14939                             p_rgd_code       => 'AMTEWC',
14940                             p_rule_code      => 'AMEFEE',
14941                             x_rulv_tbl       => l_rulv_tbl,
14942                             x_rule_count     => l_rule_count
14943                            );
14944 
14945          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14946             RAISE header_rule_failed;
14947          END IF;
14948 
14949          IF (l_rule_count > 0) THEN
14950             l_ert_expense_fee_frml   := l_rulv_tbl(1).rule_information3;
14951          END IF;
14952       END IF;
14953 
14954       IF (l_ert_expense_fee_frml IS NOT NULL) THEN
14955          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
14956          l_rulv_rec.dnz_chr_id                := p_chr_id;
14957          l_rulv_rec.rule_information3         := l_ert_expense_fee_frml;
14958          l_rulv_rec.rule_information_category := 'AMEFEE';
14959          l_rulv_rec.std_template_yn           := 'N';
14960          l_rulv_rec.warn_yn                   := 'N';
14961       END IF;
14962 
14963       create_rule_group_and_rule(
14964                                  x_return_status => x_return_status,
14965                                  x_msg_count     => x_msg_count,
14966                                  x_msg_data      => x_msg_data,
14967                                  p_rgp_id        => l_rgp_id,
14968                                  p_rgpv_rec      => l_rgpv_rec,
14969                                  p_rulv_rec      => l_rulv_rec,
14970                                  x_rgpv_rec      => x_rgpv_rec,
14971                                  x_rulv_rec      => x_rulv_rec
14972                                 );
14973 
14974       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
14975           raise header_rule_failed;
14976       END IF;
14977 
14978       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
14979          l_rgp_id := x_rgpv_rec.id;
14980       END IF;
14981 
14982       debug_message('------>Rule: AMTEWC/AMEFEE processed');
14983 
14984       l_rulv_rec := NULL;
14985 
14986       l_ert_financed_fee_frml := p_header_rec.ert_financed_fee_frml;
14987 
14988       IF (l_ert_financed_fee_frml IS NULL
14989           AND
14990           p_header_rec.template_number IS NOT NULL) THEN
14991          get_contract_rules(
14992                             x_return_status  => x_return_status,
14993                             x_msg_count      => x_msg_count,
14994                             x_msg_data       => x_msg_data,
14995                             p_chr_id         => p_template_id,
14996                             p_cle_id         => NULL,
14997                             p_rgd_code       => 'AMTEWC',
14998                             p_rule_code      => 'AMFFEE',
14999                             x_rulv_tbl       => l_rulv_tbl,
15000                             x_rule_count     => l_rule_count
15001                            );
15002 
15003          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15004             RAISE header_rule_failed;
15005          END IF;
15006 
15007          IF (l_rule_count > 0) THEN
15008             l_ert_financed_fee_frml   := l_rulv_tbl(1).rule_information3;
15009          END IF;
15010       END IF;
15011 
15012       IF (l_ert_financed_fee_frml IS NOT NULL) THEN
15013          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15014          l_rulv_rec.dnz_chr_id                := p_chr_id;
15015          l_rulv_rec.rule_information3         := l_ert_financed_fee_frml;
15016          l_rulv_rec.rule_information_category := 'AMFFEE';
15017          l_rulv_rec.std_template_yn           := 'N';
15018          l_rulv_rec.warn_yn                   := 'N';
15019       END IF;
15020 
15021       create_rule_group_and_rule(
15022                                  x_return_status => x_return_status,
15023                                  x_msg_count     => x_msg_count,
15024                                  x_msg_data      => x_msg_data,
15025                                  p_rgp_id        => l_rgp_id,
15026                                  p_rgpv_rec      => l_rgpv_rec,
15027                                  p_rulv_rec      => l_rulv_rec,
15028                                  x_rgpv_rec      => x_rgpv_rec,
15029                                  x_rulv_rec      => x_rulv_rec
15030                                 );
15031 
15032       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15033           raise header_rule_failed;
15034       END IF;
15035 
15036       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
15037          l_rgp_id := x_rgpv_rec.id;
15038       END IF;
15039 
15040       debug_message('------>Rule: AMTEWC/AMFFEE processed');
15041 
15042       l_rulv_rec := NULL;
15043 
15044       l_ert_general_fee_frml := p_header_rec.ert_general_fee_frml;
15045 
15046       IF (l_ert_general_fee_frml IS NULL
15047           AND
15048           p_header_rec.template_number IS NOT NULL) THEN
15049          get_contract_rules(
15050                             x_return_status  => x_return_status,
15051                             x_msg_count      => x_msg_count,
15052                             x_msg_data       => x_msg_data,
15053                             p_chr_id         => p_template_id,
15054                             p_cle_id         => NULL,
15055                             p_rgd_code       => 'AMTEWC',
15056                             p_rule_code      => 'AMGFEE',
15057                             x_rulv_tbl       => l_rulv_tbl,
15058                             x_rule_count     => l_rule_count
15059                            );
15060 
15061          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15062             RAISE header_rule_failed;
15063          END IF;
15064 
15065          IF (l_rule_count > 0) THEN
15066             l_ert_general_fee_frml   := l_rulv_tbl(1).rule_information3;
15067          END IF;
15068       END IF;
15069 
15070       IF (l_ert_general_fee_frml IS NOT NULL) THEN
15071          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15072          l_rulv_rec.dnz_chr_id                := p_chr_id;
15073          l_rulv_rec.rule_information3         := l_ert_general_fee_frml;
15074          l_rulv_rec.rule_information_category := 'AMGFEE';
15075          l_rulv_rec.std_template_yn           := 'N';
15076          l_rulv_rec.warn_yn                   := 'N';
15077       END IF;
15078 
15079       create_rule_group_and_rule(
15080                                  x_return_status => x_return_status,
15081                                  x_msg_count     => x_msg_count,
15082                                  x_msg_data      => x_msg_data,
15083                                  p_rgp_id        => l_rgp_id,
15084                                  p_rgpv_rec      => l_rgpv_rec,
15085                                  p_rulv_rec      => l_rulv_rec,
15086                                  x_rgpv_rec      => x_rgpv_rec,
15087                                  x_rulv_rec      => x_rulv_rec
15088                                 );
15089 
15090       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15091           raise header_rule_failed;
15092       END IF;
15093 
15094       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
15095          l_rgp_id := x_rgpv_rec.id;
15096       END IF;
15097 
15098       debug_message('------>Rule: AMTEWC/AMGFEE processed');
15099 
15100       l_rulv_rec := NULL;
15101 
15102       l_ert_income_fee_frml := p_header_rec.ert_income_fee_frml;
15103 
15104       IF (l_ert_income_fee_frml IS NULL
15105           AND
15106           p_header_rec.template_number IS NOT NULL) THEN
15107          get_contract_rules(
15108                             x_return_status  => x_return_status,
15109                             x_msg_count      => x_msg_count,
15110                             x_msg_data       => x_msg_data,
15111                             p_chr_id         => p_template_id,
15112                             p_cle_id         => NULL,
15113                             p_rgd_code       => 'AMTEWC',
15114                             p_rule_code      => 'AMIFEE',
15115                             x_rulv_tbl       => l_rulv_tbl,
15116                             x_rule_count     => l_rule_count
15117                            );
15118 
15119          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15120             RAISE header_rule_failed;
15121          END IF;
15122 
15123          IF (l_rule_count > 0) THEN
15124             l_ert_income_fee_frml   := l_rulv_tbl(1).rule_information3;
15125          END IF;
15126       END IF;
15127 
15128       IF (l_ert_income_fee_frml IS NOT NULL) THEN
15129          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15130          l_rulv_rec.dnz_chr_id                := p_chr_id;
15131          l_rulv_rec.rule_information3         := l_ert_income_fee_frml;
15132          l_rulv_rec.rule_information_category := 'AMIFEE';
15133          l_rulv_rec.std_template_yn           := 'N';
15134          l_rulv_rec.warn_yn                   := 'N';
15135       END IF;
15136 
15137       create_rule_group_and_rule(
15138                                  x_return_status => x_return_status,
15139                                  x_msg_count     => x_msg_count,
15140                                  x_msg_data      => x_msg_data,
15141                                  p_rgp_id        => l_rgp_id,
15142                                  p_rgpv_rec      => l_rgpv_rec,
15143                                  p_rulv_rec      => l_rulv_rec,
15144                                  x_rgpv_rec      => x_rgpv_rec,
15145                                  x_rulv_rec      => x_rulv_rec
15146                                 );
15147 
15148       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15149           raise header_rule_failed;
15150       END IF;
15151 
15152       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
15153          l_rgp_id := x_rgpv_rec.id;
15154       END IF;
15155 
15156       debug_message('------>Rule: AMTEWC/AMIFEE processed');
15157 
15158       l_rulv_rec := NULL;
15159 
15160       l_ert_misc_fee_frml := p_header_rec.ert_misc_fee_frml;
15161 
15162       IF (l_ert_misc_fee_frml IS NULL
15163           AND
15164           p_header_rec.template_number IS NOT NULL) THEN
15165          get_contract_rules(
15166                             x_return_status  => x_return_status,
15167                             x_msg_count      => x_msg_count,
15168                             x_msg_data       => x_msg_data,
15169                             p_chr_id         => p_template_id,
15170                             p_cle_id         => NULL,
15171                             p_rgd_code       => 'AMTEWC',
15172                             p_rule_code      => 'AMMFEE',
15173                             x_rulv_tbl       => l_rulv_tbl,
15174                             x_rule_count     => l_rule_count
15175                            );
15176 
15177          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15178             RAISE header_rule_failed;
15179          END IF;
15180 
15181          IF (l_rule_count > 0) THEN
15182             l_ert_misc_fee_frml   := l_rulv_tbl(1).rule_information3;
15183          END IF;
15184       END IF;
15185 
15186       IF (l_ert_misc_fee_frml IS NOT NULL) THEN
15187          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15188          l_rulv_rec.dnz_chr_id                := p_chr_id;
15189          l_rulv_rec.rule_information3         := l_ert_misc_fee_frml;
15190          l_rulv_rec.rule_information_category := 'AMMFEE';
15191          l_rulv_rec.std_template_yn           := 'N';
15192          l_rulv_rec.warn_yn                   := 'N';
15193       END IF;
15194 
15195       create_rule_group_and_rule(
15196                                  x_return_status => x_return_status,
15197                                  x_msg_count     => x_msg_count,
15198                                  x_msg_data      => x_msg_data,
15199                                  p_rgp_id        => l_rgp_id,
15200                                  p_rgpv_rec      => l_rgpv_rec,
15201                                  p_rulv_rec      => l_rulv_rec,
15202                                  x_rgpv_rec      => x_rgpv_rec,
15203                                  x_rulv_rec      => x_rulv_rec
15204                                 );
15205 
15206       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15207           raise header_rule_failed;
15208       END IF;
15209 
15210       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
15211          l_rgp_id := x_rgpv_rec.id;
15212       END IF;
15213 
15214       debug_message('------>Rule: AMTEWC/AMMFEE processed');
15215 
15216       l_rulv_rec := NULL;
15217 
15218       l_ert_passthru_fee_frml := p_header_rec.ert_passthru_fee_frml;
15219 
15220       IF (l_ert_passthru_fee_frml IS NULL
15221           AND
15222           p_header_rec.template_number IS NOT NULL) THEN
15223          get_contract_rules(
15224                             x_return_status  => x_return_status,
15225                             x_msg_count      => x_msg_count,
15226                             x_msg_data       => x_msg_data,
15227                             p_chr_id         => p_template_id,
15228                             p_cle_id         => NULL,
15229                             p_rgd_code       => 'AMTEWC',
15230                             p_rule_code      => 'AMPFEE',
15231                             x_rulv_tbl       => l_rulv_tbl,
15232                             x_rule_count     => l_rule_count
15233                            );
15234 
15235          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15236             RAISE header_rule_failed;
15237          END IF;
15238 
15239          IF (l_rule_count > 0) THEN
15240             l_ert_passthru_fee_frml   := l_rulv_tbl(1).rule_information3;
15241          END IF;
15242       END IF;
15243 
15244       IF (l_ert_passthru_fee_frml IS NOT NULL) THEN
15245          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15246          l_rulv_rec.dnz_chr_id                := p_chr_id;
15247          l_rulv_rec.rule_information3         := l_ert_passthru_fee_frml;
15248          l_rulv_rec.rule_information_category := 'AMPFEE';
15249          l_rulv_rec.std_template_yn           := 'N';
15250          l_rulv_rec.warn_yn                   := 'N';
15251       END IF;
15252 
15253       create_rule_group_and_rule(
15254                                  x_return_status => x_return_status,
15255                                  x_msg_count     => x_msg_count,
15256                                  x_msg_data      => x_msg_data,
15257                                  p_rgp_id        => l_rgp_id,
15258                                  p_rgpv_rec      => l_rgpv_rec,
15259                                  p_rulv_rec      => l_rulv_rec,
15260                                  x_rgpv_rec      => x_rgpv_rec,
15261                                  x_rulv_rec      => x_rulv_rec
15262                                 );
15263 
15264       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15265           raise header_rule_failed;
15266       END IF;
15267 
15268       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
15269          l_rgp_id := x_rgpv_rec.id;
15270       END IF;
15271 
15272       debug_message('------>Rule: AMTEWC/AMPFEE processed');
15273 
15274       l_rulv_rec := NULL;
15275 
15276       l_ert_rollover_fee_frml := p_header_rec.ert_rollover_fee_frml;
15277 
15278       IF (l_ert_rollover_fee_frml IS NULL
15279           AND
15280           p_header_rec.template_number IS NOT NULL) THEN
15281          get_contract_rules(
15282                             x_return_status  => x_return_status,
15283                             x_msg_count      => x_msg_count,
15284                             x_msg_data       => x_msg_data,
15285                             p_chr_id         => p_template_id,
15286                             p_cle_id         => NULL,
15287                             p_rgd_code       => 'AMTEWC',
15288                             p_rule_code      => 'AMRFEE',
15289                             x_rulv_tbl       => l_rulv_tbl,
15290                             x_rule_count     => l_rule_count
15291                            );
15292 
15293          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15294             RAISE header_rule_failed;
15295          END IF;
15296 
15297          IF (l_rule_count > 0) THEN
15298             l_ert_rollover_fee_frml   := l_rulv_tbl(1).rule_information3;
15299          END IF;
15300       END IF;
15301 
15302       IF (l_ert_rollover_fee_frml IS NOT NULL) THEN
15303          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15304          l_rulv_rec.dnz_chr_id                := p_chr_id;
15305          l_rulv_rec.rule_information3         := l_ert_rollover_fee_frml;
15306          l_rulv_rec.rule_information_category := 'AMRFEE';
15307          l_rulv_rec.std_template_yn           := 'N';
15308          l_rulv_rec.warn_yn                   := 'N';
15309       END IF;
15310 
15311       create_rule_group_and_rule(
15312                                  x_return_status => x_return_status,
15313                                  x_msg_count     => x_msg_count,
15314                                  x_msg_data      => x_msg_data,
15315                                  p_rgp_id        => l_rgp_id,
15316                                  p_rgpv_rec      => l_rgpv_rec,
15317                                  p_rulv_rec      => l_rulv_rec,
15318                                  x_rgpv_rec      => x_rgpv_rec,
15319                                  x_rulv_rec      => x_rulv_rec
15320                                 );
15321 
15322       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15323           raise header_rule_failed;
15324       END IF;
15325 
15326       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
15327          l_rgp_id := x_rgpv_rec.id;
15328       END IF;
15329 
15330       debug_message('------>Rule: AMTEWC/AMRFEE processed');
15331       /**** AKP Copied to here for AMTEWC 4067094 ***/
15332 
15333       -- Rule Group AMTFWC
15334 
15335       l_rgpv_rec            := NULL;
15336       l_rgp_id              := NULL;
15337       l_rgpv_rec.rgd_code   := 'AMTFWC';
15338       l_rgpv_rec.chr_id     := p_chr_id;
15339       l_rgpv_rec.dnz_chr_id := p_chr_id;
15340       l_rgpv_rec.cle_id     := NULL;
15341       l_rgpv_rec.rgp_type   := 'KRG';
15342 
15343       l_rulv_rec := NULL;
15344 
15345       l_eot_quote_calc_term_option  := p_header_rec.eot_quote_calc_term_option;
15346       l_eot_quote_calc_term_formula := p_header_rec.eot_quote_calc_term_formula;
15347 
15348       IF (l_eot_quote_calc_term_option IS NULL
15349           OR
15350           l_eot_quote_calc_term_formula IS NULL
15351           AND
15352           p_header_rec.template_number IS NOT NULL) THEN
15353          get_contract_rules(
15354                             x_return_status  => x_return_status,
15355                             x_msg_count      => x_msg_count,
15356                             x_msg_data       => x_msg_data,
15357                             p_chr_id         => p_template_id,
15358                             p_cle_id         => NULL,
15359                             p_rgd_code       => 'AMTFWC',
15360                             p_rule_code      => 'AMATQC',
15361                             x_rulv_tbl       => l_rulv_tbl,
15362                             x_rule_count     => l_rule_count
15363                            );
15364 
15365          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15366             RAISE header_rule_failed;
15367          END IF;
15368 
15369          IF (l_rule_count > 0) THEN
15370             l_eot_quote_calc_term_option  := NVL(l_eot_quote_calc_term_option,l_rulv_tbl(1).rule_information1);
15371             l_eot_quote_calc_term_formula := NVL(l_eot_quote_calc_term_formula,l_rulv_tbl(1).rule_information2);
15372          END IF;
15373       END IF;
15374 
15375       IF (l_eot_quote_calc_term_option IS NOT NULL) THEN
15376          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15377          l_rulv_rec.dnz_chr_id                := p_chr_id;
15378          l_rulv_rec.rule_information1         := l_eot_quote_calc_term_option;
15379          l_rulv_rec.rule_information_category := 'AMATQC';
15380          l_rulv_rec.std_template_yn           := 'N';
15381          l_rulv_rec.warn_yn                   := 'N';
15382       END IF;
15383 
15384       IF (l_eot_quote_calc_term_formula IS NOT NULL) THEN
15385          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15386          l_rulv_rec.dnz_chr_id                := p_chr_id;
15387          l_rulv_rec.rule_information2         := l_eot_quote_calc_term_formula;
15388          l_rulv_rec.rule_information_category := 'AMATQC';
15389          l_rulv_rec.std_template_yn           := 'N';
15390          l_rulv_rec.warn_yn                   := 'N';
15391       END IF;
15392 
15393       create_rule_group_and_rule(
15394                                  x_return_status => x_return_status,
15395                                  x_msg_count     => x_msg_count,
15396                                  x_msg_data      => x_msg_data,
15397                                  p_rgp_id        => l_rgp_id,
15398                                  p_rgpv_rec      => l_rgpv_rec,
15399                                  p_rulv_rec      => l_rulv_rec,
15400                                  x_rgpv_rec      => x_rgpv_rec,
15401                                  x_rulv_rec      => x_rulv_rec
15402                                 );
15403 
15404       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15405           raise header_rule_failed;
15406       END IF;
15407 
15408       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
15409          l_rgp_id := x_rgpv_rec.id;
15410       END IF;
15411       debug_message('------>Rule: AMTFWC/AMATQC processed');
15412       l_rulv_rec := NULL;
15413 
15414       l_eot_contract_oblig_opt      := p_header_rec.eot_contract_oblig_opt;
15415       l_eot_contract_oblig_amount   := TO_CHAR(p_header_rec.eot_contract_oblig_amount);
15416       l_eot_contract_oblig_formula  := p_header_rec.eot_contract_oblig_formula;
15417       l_eot_contract_oblig_prorate  := p_header_rec.eot_contract_oblig_prorate;
15418 
15419       IF (l_eot_contract_oblig_opt IS NULL
15420           OR
15421           l_eot_contract_oblig_amount IS NULL
15422           OR
15423           l_eot_contract_oblig_formula IS NULL
15424           OR
15425           l_eot_contract_oblig_prorate IS NULL
15426           AND
15427           p_header_rec.template_number IS NOT NULL) THEN
15428          get_contract_rules(
15429                             x_return_status  => x_return_status,
15430                             x_msg_count      => x_msg_count,
15431                             x_msg_data       => x_msg_data,
15432                             p_chr_id         => p_template_id,
15433                             p_cle_id         => NULL,
15434                             p_rgd_code       => 'AMTFWC',
15435                             p_rule_code      => 'AMBCOC',
15436                             x_rulv_tbl       => l_rulv_tbl,
15437                             x_rule_count     => l_rule_count
15438                            );
15439 
15440          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15441             RAISE header_rule_failed;
15442          END IF;
15443 
15444          IF (l_rule_count > 0) THEN
15445             l_eot_contract_oblig_opt      := NVL(l_eot_contract_oblig_opt,l_rulv_tbl(1).rule_information1);
15446             l_eot_contract_oblig_amount   := NVL(l_eot_contract_oblig_amount,l_rulv_tbl(1).rule_information2);
15447             l_eot_contract_oblig_formula  := NVL(l_eot_contract_oblig_formula,l_rulv_tbl(1).rule_information3);
15448             l_eot_contract_oblig_prorate  := NVL(l_eot_contract_oblig_prorate,l_rulv_tbl(1).rule_information4);
15449          END IF;
15450       END IF;
15451 
15452       IF (l_eot_contract_oblig_opt IS NOT NULL) THEN
15453          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15454          l_rulv_rec.dnz_chr_id                := p_chr_id;
15455          l_rulv_rec.rule_information1         := l_eot_contract_oblig_opt;
15456          l_rulv_rec.rule_information_category := 'AMBCOC';
15457          l_rulv_rec.std_template_yn           := 'N';
15458          l_rulv_rec.warn_yn                   := 'N';
15459       END IF;
15460 
15461       IF (l_eot_contract_oblig_amount IS NOT NULL) THEN
15462          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15463          l_rulv_rec.dnz_chr_id                := p_chr_id;
15464          l_rulv_rec.rule_information2         := l_eot_contract_oblig_amount;
15465          l_rulv_rec.rule_information_category := 'AMBCOC';
15466          l_rulv_rec.std_template_yn           := 'N';
15467          l_rulv_rec.warn_yn                   := 'N';
15468       END IF;
15469 
15470       IF (l_eot_contract_oblig_formula IS NOT NULL) THEN
15471          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15472          l_rulv_rec.dnz_chr_id                := p_chr_id;
15473          l_rulv_rec.rule_information3         := l_eot_contract_oblig_formula;
15474          l_rulv_rec.rule_information_category := 'AMBCOC';
15475          l_rulv_rec.std_template_yn           := 'N';
15476          l_rulv_rec.warn_yn                   := 'N';
15477       END IF;
15478 
15479       IF (l_eot_contract_oblig_prorate IS NOT NULL) THEN
15480          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15481          l_rulv_rec.dnz_chr_id                := p_chr_id;
15482          l_rulv_rec.rule_information4         := l_eot_contract_oblig_prorate;
15483          l_rulv_rec.rule_information_category := 'AMBCOC';
15484          l_rulv_rec.std_template_yn           := 'N';
15485          l_rulv_rec.warn_yn                   := 'N';
15486       END IF;
15487 
15488       create_rule_group_and_rule(
15489                                  x_return_status => x_return_status,
15490                                  x_msg_count     => x_msg_count,
15491                                  x_msg_data      => x_msg_data,
15492                                  p_rgp_id        => l_rgp_id,
15493                                  p_rgpv_rec      => l_rgpv_rec,
15494                                  p_rulv_rec      => l_rulv_rec,
15495                                  x_rgpv_rec      => x_rgpv_rec,
15496                                  x_rulv_rec      => x_rulv_rec
15497                                 );
15498 
15499       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15500           raise header_rule_failed;
15501       END IF;
15502 
15503       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
15504          l_rgp_id := x_rgpv_rec.id;
15505       END IF;
15506       debug_message('------>Rule: AMTFWC/AMBCOC processed');
15507       l_rulv_rec := NULL;
15508 
15509       l_eot_disc_rate_opt      := p_header_rec.eot_disc_rate_opt;
15510       l_eot_disc_rate_amount   := TO_CHAR(p_header_rec.eot_disc_rate_amount);
15511       l_eot_disc_rate_formula  := p_header_rec.eot_disc_rate_formula;
15512       l_eot_disc_rate_prorate  := p_header_rec.eot_disc_rate_prorate;
15513 
15514       IF (l_eot_disc_rate_opt IS NULL
15515           OR
15516           l_eot_disc_rate_amount IS NULL
15517           OR
15518           l_eot_disc_rate_formula IS NULL
15519           OR
15520           l_eot_disc_rate_prorate IS NULL
15521           AND
15522           p_header_rec.template_number IS NOT NULL) THEN
15523          get_contract_rules(
15524                             x_return_status  => x_return_status,
15525                             x_msg_count      => x_msg_count,
15526                             x_msg_data       => x_msg_data,
15527                             p_chr_id         => p_template_id,
15528                             p_cle_id         => NULL,
15529                             p_rgd_code       => 'AMTFWC',
15530                             p_rule_code      => 'AMCQDR',
15531                             x_rulv_tbl       => l_rulv_tbl,
15532                             x_rule_count     => l_rule_count
15533                            );
15534 
15535          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15536             RAISE header_rule_failed;
15537          END IF;
15538 
15539          IF (l_rule_count > 0) THEN
15540             l_eot_disc_rate_opt      := NVL(l_eot_disc_rate_opt,l_rulv_tbl(1).rule_information1);
15541             l_eot_disc_rate_amount   := NVL(l_eot_disc_rate_amount,l_rulv_tbl(1).rule_information2);
15542             l_eot_disc_rate_formula  := NVL(l_eot_disc_rate_formula,l_rulv_tbl(1).rule_information3);
15543             l_eot_disc_rate_prorate  := NVL(l_eot_disc_rate_prorate,l_rulv_tbl(1).rule_information4);
15544          END IF;
15545       END IF;
15546 
15547       IF (l_eot_disc_rate_opt IS NOT NULL) THEN
15548          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15549          l_rulv_rec.dnz_chr_id                := p_chr_id;
15550          l_rulv_rec.rule_information1         := l_eot_disc_rate_opt;
15551          l_rulv_rec.rule_information_category := 'AMCQDR';
15552          l_rulv_rec.std_template_yn           := 'N';
15553          l_rulv_rec.warn_yn                   := 'N';
15554       END IF;
15555 
15556       IF (l_eot_disc_rate_amount 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_information2         := l_eot_disc_rate_amount;
15560          l_rulv_rec.rule_information_category := 'AMCQDR';
15561          l_rulv_rec.std_template_yn           := 'N';
15562          l_rulv_rec.warn_yn                   := 'N';
15563       END IF;
15564 
15565       IF (l_eot_disc_rate_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_information3         := l_eot_disc_rate_formula;
15569          l_rulv_rec.rule_information_category := 'AMCQDR';
15570          l_rulv_rec.std_template_yn           := 'N';
15571          l_rulv_rec.warn_yn                   := 'N';
15572       END IF;
15573 
15574       IF (l_eot_disc_rate_prorate IS NOT NULL) THEN
15575          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15576          l_rulv_rec.dnz_chr_id                := p_chr_id;
15577          l_rulv_rec.rule_information4         := l_eot_disc_rate_prorate;
15578          l_rulv_rec.rule_information_category := 'AMCQDR';
15579          l_rulv_rec.std_template_yn           := 'N';
15580          l_rulv_rec.warn_yn                   := 'N';
15581       END IF;
15582 
15583       create_rule_group_and_rule(
15584                                  x_return_status => x_return_status,
15585                                  x_msg_count     => x_msg_count,
15586                                  x_msg_data      => x_msg_data,
15587                                  p_rgp_id        => l_rgp_id,
15588                                  p_rgpv_rec      => l_rgpv_rec,
15589                                  p_rulv_rec      => l_rulv_rec,
15590                                  x_rgpv_rec      => x_rgpv_rec,
15591                                  x_rulv_rec      => x_rulv_rec
15592                                 );
15593 
15594       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15595           raise header_rule_failed;
15596       END IF;
15597 
15598       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
15599          l_rgp_id := x_rgpv_rec.id;
15600       END IF;
15601       debug_message('------>Rule: AMTFWC/AMCQDR processed');
15602       l_rulv_rec := NULL;
15603 
15604       l_eot_quote_fee_opt      := p_header_rec.eot_quote_fee_opt;
15605       l_eot_quote_fee_amount   := TO_CHAR(p_header_rec.eot_quote_fee_amount);
15606       l_eot_quote_fee_formula  := p_header_rec.eot_quote_fee_formula;
15607       l_eot_quote_fee_prorate  := p_header_rec.eot_quote_fee_prorate;
15608 
15609       IF (l_eot_quote_fee_opt IS NULL
15610           OR
15611           l_eot_quote_fee_amount IS NULL
15612           OR
15613           l_eot_quote_fee_formula IS NULL
15614           OR
15615           l_eot_quote_fee_prorate IS NULL
15616           AND
15617           p_header_rec.template_number IS NOT NULL) THEN
15618          get_contract_rules(
15619                             x_return_status  => x_return_status,
15620                             x_msg_count      => x_msg_count,
15621                             x_msg_data       => x_msg_data,
15622                             p_chr_id         => p_template_id,
15623                             p_cle_id         => NULL,
15624                             p_rgd_code       => 'AMTFWC',
15625                             p_rule_code      => 'AMCQFE',
15626                             x_rulv_tbl       => l_rulv_tbl,
15627                             x_rule_count     => l_rule_count
15628                            );
15629 
15630          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15631             RAISE header_rule_failed;
15632          END IF;
15633 
15634          IF (l_rule_count > 0) THEN
15635             l_eot_quote_fee_opt      := NVL(l_eot_quote_fee_opt,l_rulv_tbl(1).rule_information1);
15636             l_eot_quote_fee_amount   := NVL(l_eot_quote_fee_amount,l_rulv_tbl(1).rule_information2);
15637             l_eot_quote_fee_formula  := NVL(l_eot_quote_fee_formula,l_rulv_tbl(1).rule_information3);
15638             l_eot_quote_fee_prorate  := NVL(l_eot_quote_fee_prorate,l_rulv_tbl(1).rule_information4);
15639          END IF;
15640       END IF;
15641 
15642       IF (l_eot_quote_fee_opt 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_information1         := l_eot_quote_fee_opt;
15646          l_rulv_rec.rule_information_category := 'AMCQFE';
15647          l_rulv_rec.std_template_yn           := 'N';
15648          l_rulv_rec.warn_yn                   := 'N';
15649       END IF;
15650 
15651       IF (l_eot_quote_fee_amount 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_information2         := l_eot_quote_fee_amount;
15655          l_rulv_rec.rule_information_category := 'AMCQFE';
15656          l_rulv_rec.std_template_yn           := 'N';
15657          l_rulv_rec.warn_yn                   := 'N';
15658       END IF;
15659 
15660       IF (l_eot_quote_fee_formula 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_information3         := l_eot_quote_fee_formula;
15664          l_rulv_rec.rule_information_category := 'AMCQFE';
15665          l_rulv_rec.std_template_yn           := 'N';
15666          l_rulv_rec.warn_yn                   := 'N';
15667       END IF;
15668 
15669       IF (l_eot_quote_fee_prorate IS NOT NULL) THEN
15670          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15671          l_rulv_rec.dnz_chr_id                := p_chr_id;
15672          l_rulv_rec.rule_information4         := l_eot_quote_fee_prorate;
15673          l_rulv_rec.rule_information_category := 'AMCQFE';
15674          l_rulv_rec.std_template_yn           := 'N';
15675          l_rulv_rec.warn_yn                   := 'N';
15676       END IF;
15677 
15678       create_rule_group_and_rule(
15679                                  x_return_status => x_return_status,
15680                                  x_msg_count     => x_msg_count,
15681                                  x_msg_data      => x_msg_data,
15682                                  p_rgp_id        => l_rgp_id,
15683                                  p_rgpv_rec      => l_rgpv_rec,
15684                                  p_rulv_rec      => l_rulv_rec,
15685                                  x_rgpv_rec      => x_rgpv_rec,
15686                                  x_rulv_rec      => x_rulv_rec
15687                                 );
15688 
15689       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15690           raise header_rule_failed;
15691       END IF;
15692 
15693       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
15694          l_rgp_id := x_rgpv_rec.id;
15695       END IF;
15696       debug_message('------>Rule: AMTFWC/AMCQFE processed');
15697       l_rulv_rec := NULL;
15698 
15699       l_eot_return_fee_option   := p_header_rec.eot_return_fee_option;
15700       l_eot_return_fee_amount   := TO_CHAR(p_header_rec.eot_return_fee_amount);
15701       l_eot_return_fee_formula  := p_header_rec.eot_return_fee_formula;
15702       l_eot_return_fee_prorate  := p_header_rec.eot_return_fee_prorate;
15703 
15704       IF (l_eot_return_fee_option IS NULL
15705           OR
15706           l_eot_return_fee_amount IS NULL
15707           OR
15708           l_eot_return_fee_formula IS NULL
15709           OR
15710           l_eot_return_fee_prorate IS NULL
15711           AND
15712           p_header_rec.template_number IS NOT NULL) THEN
15713          get_contract_rules(
15714                             x_return_status  => x_return_status,
15715                             x_msg_count      => x_msg_count,
15716                             x_msg_data       => x_msg_data,
15717                             p_chr_id         => p_template_id,
15718                             p_cle_id         => NULL,
15719                             p_rgd_code       => 'AMTFWC',
15720                             p_rule_code      => 'AMCRFE',
15721                             x_rulv_tbl       => l_rulv_tbl,
15722                             x_rule_count     => l_rule_count
15723                            );
15724 
15725          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15726             RAISE header_rule_failed;
15727          END IF;
15728 
15729          IF (l_rule_count > 0) THEN
15730             l_eot_return_fee_option   := NVL(l_eot_return_fee_option,l_rulv_tbl(1).rule_information1);
15731             l_eot_return_fee_amount   := NVL(l_eot_return_fee_amount,l_rulv_tbl(1).rule_information2);
15732             l_eot_return_fee_formula  := NVL(l_eot_return_fee_formula,l_rulv_tbl(1).rule_information3);
15733             l_eot_return_fee_prorate  := NVL(l_eot_return_fee_prorate,l_rulv_tbl(1).rule_information4);
15734          END IF;
15735       END IF;
15736 
15737       IF (l_eot_return_fee_option 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_informaTion1         := l_eot_return_fee_option;
15741          l_rulv_rec.rule_information_category := 'AMCRFE';
15742          l_rulv_rec.std_template_yn           := 'N';
15743          l_rulv_rec.warn_yn                   := 'N';
15744       END IF;
15745 
15746       IF (l_eot_return_fee_amount 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_information2         := l_eot_return_fee_amount;
15750          l_rulv_rec.rule_information_category := 'AMCRFE';
15751          l_rulv_rec.std_template_yn           := 'N';
15752          l_rulv_rec.warn_yn                   := 'N';
15753       END IF;
15754 
15755       IF (l_eot_return_fee_formula 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_information3         := l_eot_return_fee_formula;
15759          l_rulv_rec.rule_information_category := 'AMCRFE';
15760          l_rulv_rec.std_template_yn           := 'N';
15761          l_rulv_rec.warn_yn                   := 'N';
15762       END IF;
15763 
15764       IF (l_eot_return_fee_prorate IS NOT NULL) THEN
15765          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15766          l_rulv_rec.dnz_chr_id                := p_chr_id;
15767          l_rulv_rec.rule_information4         := l_eot_return_fee_prorate;
15768          l_rulv_rec.rule_information_category := 'AMCRFE';
15769          l_rulv_rec.std_template_yn           := 'N';
15770          l_rulv_rec.warn_yn                   := 'N';
15771       END IF;
15772 
15773       create_rule_group_and_rule(
15774                                  x_return_status => x_return_status,
15775                                  x_msg_count     => x_msg_count,
15776                                  x_msg_data      => x_msg_data,
15777                                  p_rgp_id        => l_rgp_id,
15778                                  p_rgpv_rec      => l_rgpv_rec,
15779                                  p_rulv_rec      => l_rulv_rec,
15780                                  x_rgpv_rec      => x_rgpv_rec,
15781                                  x_rulv_rec      => x_rulv_rec
15782                                 );
15783 
15784       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15785           raise header_rule_failed;
15786       END IF;
15787 
15788       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
15789          l_rgp_id := x_rgpv_rec.id;
15790       END IF;
15791       debug_message('------>Rule: AMTFWC/AMCRFE processed');
15792       l_rulv_rec := NULL;
15793 
15794       l_eot_roll_inctv_option   := p_header_rec.eot_roll_inctv_option;
15795       l_eot_roll_inctv_amount   := TO_CHAR(p_header_rec.eot_roll_inctv_amount);
15796       l_eot_roll_inctv_formula  := p_header_rec.eot_roll_inctv_formula;
15797       l_eot_roll_inctv_prorate  := p_header_rec.eot_roll_inctv_prorate;
15798 
15799       IF (l_eot_roll_inctv_option IS NULL
15800           OR
15801           l_eot_roll_inctv_amount IS NULL
15802           OR
15803           l_eot_roll_inctv_formula IS NULL
15804           OR
15805           l_eot_roll_inctv_prorate IS NULL
15806           AND
15807           p_header_rec.template_number IS NOT NULL) THEN
15808          get_contract_rules(
15809                             x_return_status  => x_return_status,
15810                             x_msg_count      => x_msg_count,
15811                             x_msg_data       => x_msg_data,
15812                             p_chr_id         => p_template_id,
15813                             p_cle_id         => NULL,
15814                             p_rgd_code       => 'AMTFWC',
15815                             p_rule_code      => 'AMCRIN',
15816                             x_rulv_tbl       => l_rulv_tbl,
15817                             x_rule_count     => l_rule_count
15818                            );
15819 
15820          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15821             RAISE header_rule_failed;
15822          END IF;
15823 
15824          IF (l_rule_count > 0) THEN
15825             l_eot_roll_inctv_option   := NVL(l_eot_roll_inctv_option,l_rulv_tbl(1).rule_information1);
15826             l_eot_roll_inctv_amount   := NVL(l_eot_roll_inctv_amount,l_rulv_tbl(1).rule_information2);
15827             l_eot_roll_inctv_formula  := NVL(l_eot_roll_inctv_formula,l_rulv_tbl(1).rule_information3);
15828             l_eot_roll_inctv_prorate  := NVL(l_eot_roll_inctv_prorate,l_rulv_tbl(1).rule_information4);
15829          END IF;
15830       END IF;
15831 
15832       IF (l_eot_roll_inctv_option 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_informaTion1         := l_eot_roll_inctv_option;
15836          l_rulv_rec.rule_information_category := 'AMCRIN';
15837          l_rulv_rec.std_template_yn           := 'N';
15838          l_rulv_rec.warn_yn                   := 'N';
15839       END IF;
15840 
15841       IF (l_eot_roll_inctv_amount 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_information2         := l_eot_roll_inctv_amount;
15845          l_rulv_rec.rule_information_category := 'AMCRIN';
15846          l_rulv_rec.std_template_yn           := 'N';
15847          l_rulv_rec.warn_yn                   := 'N';
15848       END IF;
15849 
15850       IF (l_eot_roll_inctv_formula 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_information3         := l_eot_roll_inctv_formula;
15854          l_rulv_rec.rule_information_category := 'AMCRIN';
15855          l_rulv_rec.std_template_yn           := 'N';
15856          l_rulv_rec.warn_yn                   := 'N';
15857       END IF;
15858 
15859       IF (l_eot_roll_inctv_prorate IS NOT NULL) THEN
15860          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15861          l_rulv_rec.dnz_chr_id                := p_chr_id;
15862          l_rulv_rec.rule_information4         := l_eot_roll_inctv_prorate;
15863          l_rulv_rec.rule_information_category := 'AMCRIN';
15864          l_rulv_rec.std_template_yn           := 'N';
15865          l_rulv_rec.warn_yn                   := 'N';
15866       END IF;
15867 
15868       create_rule_group_and_rule(
15869                                  x_return_status => x_return_status,
15870                                  x_msg_count     => x_msg_count,
15871                                  x_msg_data      => x_msg_data,
15872                                  p_rgp_id        => l_rgp_id,
15873                                  p_rgpv_rec      => l_rgpv_rec,
15874                                  p_rulv_rec      => l_rulv_rec,
15875                                  x_rgpv_rec      => x_rgpv_rec,
15876                                  x_rulv_rec      => x_rulv_rec
15877                                 );
15878 
15879       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15880           raise header_rule_failed;
15881       END IF;
15882 
15883       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
15884          l_rgp_id := x_rgpv_rec.id;
15885       END IF;
15886       debug_message('------>Rule: AMTFWC/AMCRIN processed');
15887       l_rulv_rec := NULL;
15888 
15889       l_eot_secu_dep_dispo_option   := p_header_rec.eot_secu_dep_dispo_option;
15890       l_eot_secu_dep_dispo_amount   := TO_CHAR(p_header_rec.eot_secu_dep_dispo_amount);
15891       l_eot_secu_dep_dispo_formula  := p_header_rec.eot_secu_dep_dispo_formula;
15892       l_eot_secu_dep_dispo_prorate  := p_header_rec.eot_secu_dep_dispo_prorate;
15893 
15894       IF (l_eot_secu_dep_dispo_option IS NULL
15895           OR
15896           l_eot_secu_dep_dispo_amount IS NULL
15897           OR
15898           l_eot_secu_dep_dispo_formula IS NULL
15899           OR
15900           l_eot_secu_dep_dispo_prorate IS NULL
15901           AND
15902           p_header_rec.template_number IS NOT NULL) THEN
15903          get_contract_rules(
15904                             x_return_status  => x_return_status,
15905                             x_msg_count      => x_msg_count,
15906                             x_msg_data       => x_msg_data,
15907                             p_chr_id         => p_template_id,
15908                             p_cle_id         => NULL,
15909                             p_rgd_code       => 'AMTFWC',
15910                             p_rule_code      => 'AMCSDD',
15911                             x_rulv_tbl       => l_rulv_tbl,
15912                             x_rule_count     => l_rule_count
15913                            );
15914 
15915          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15916             RAISE header_rule_failed;
15917          END IF;
15918 
15919          IF (l_rule_count > 0) THEN
15920             l_eot_secu_dep_dispo_option   := NVL(l_eot_secu_dep_dispo_option,l_rulv_tbl(1).rule_information1);
15921             l_eot_secu_dep_dispo_amount   := NVL(l_eot_secu_dep_dispo_amount,l_rulv_tbl(1).rule_information2);
15922             l_eot_secu_dep_dispo_formula  := NVL(l_eot_secu_dep_dispo_formula,l_rulv_tbl(1).rule_information3);
15923             l_eot_secu_dep_dispo_prorate  := NVL(l_eot_secu_dep_dispo_prorate,l_rulv_tbl(1).rule_information4);
15924          END IF;
15925       END IF;
15926 
15927       IF (l_eot_secu_dep_dispo_option 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_informaTion1         := l_eot_secu_dep_dispo_option;
15931          l_rulv_rec.rule_information_category := 'AMCSDD';
15932          l_rulv_rec.std_template_yn           := 'N';
15933          l_rulv_rec.warn_yn                   := 'N';
15934       END IF;
15935 
15936       IF (l_eot_secu_dep_dispo_amount 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_information2         := l_eot_secu_dep_dispo_amount;
15940          l_rulv_rec.rule_information_category := 'AMCSDD';
15941          l_rulv_rec.std_template_yn           := 'N';
15942          l_rulv_rec.warn_yn                   := 'N';
15943       END IF;
15944 
15945       IF (l_eot_secu_dep_dispo_formula 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_information3         := l_eot_secu_dep_dispo_formula;
15949          l_rulv_rec.rule_information_category := 'AMCSDD';
15950          l_rulv_rec.std_template_yn           := 'N';
15951          l_rulv_rec.warn_yn                   := 'N';
15952       END IF;
15953 
15954       IF (l_eot_secu_dep_dispo_prorate IS NOT NULL) THEN
15955          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
15956          l_rulv_rec.dnz_chr_id                := p_chr_id;
15957          l_rulv_rec.rule_information4         := l_eot_secu_dep_dispo_prorate;
15958          l_rulv_rec.rule_information_category := 'AMCSDD';
15959          l_rulv_rec.std_template_yn           := 'N';
15960          l_rulv_rec.warn_yn                   := 'N';
15961       END IF;
15962 
15963       create_rule_group_and_rule(
15964                                  x_return_status => x_return_status,
15965                                  x_msg_count     => x_msg_count,
15966                                  x_msg_data      => x_msg_data,
15967                                  p_rgp_id        => l_rgp_id,
15968                                  p_rgpv_rec      => l_rgpv_rec,
15969                                  p_rulv_rec      => l_rulv_rec,
15970                                  x_rgpv_rec      => x_rgpv_rec,
15971                                  x_rulv_rec      => x_rulv_rec
15972                                 );
15973 
15974       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
15975           raise header_rule_failed;
15976       END IF;
15977 
15978       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
15979          l_rgp_id := x_rgpv_rec.id;
15980       END IF;
15981       debug_message('------>Rule: AMTFWC/AMCSDD processed');
15982       l_rulv_rec := NULL;
15983 
15984       l_eot_term_penalty_option       := p_header_rec.eot_term_penalty_option;
15985       l_eot_term_penalty_amount       := TO_CHAR(p_header_rec.eot_term_penalty_amount);
15986       l_eot_term_penalty_formula      := p_header_rec.eot_term_penalty_formula;
15987       l_eot_term_penalty_prorate      := p_header_rec.eot_term_penalty_prorate;
15988       l_eot_term_penalty_cap_option   := p_header_rec.eot_term_penalty_cap_option;
15989       l_eot_term_penalty_cap_amount   := TO_CHAR(p_header_rec.eot_term_penalty_cap_amount);
15990       l_eot_term_penalty_cap_formula  := p_header_rec.eot_term_penalty_cap_formula;
15991 
15992       IF (l_eot_term_penalty_option IS NULL
15993           OR
15994           l_eot_term_penalty_amount IS NULL
15995           OR
15996           l_eot_term_penalty_formula IS NULL
15997           OR
15998           l_eot_term_penalty_prorate IS NULL
15999           OR
16000           l_eot_term_penalty_cap_option IS NULL
16001           OR
16002           l_eot_term_penalty_cap_amount IS NULL
16003           OR
16004           l_eot_term_penalty_cap_formula IS NULL
16005           AND
16006           p_header_rec.template_number IS NOT NULL) THEN
16007          get_contract_rules(
16008                             x_return_status  => x_return_status,
16009                             x_msg_count      => x_msg_count,
16010                             x_msg_data       => x_msg_data,
16011                             p_chr_id         => p_template_id,
16012                             p_cle_id         => NULL,
16013                             p_rgd_code       => 'AMTFWC',
16014                             p_rule_code      => 'AMCTPE',
16015                             x_rulv_tbl       => l_rulv_tbl,
16016                             x_rule_count     => l_rule_count
16017                            );
16018 
16019          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16020             RAISE header_rule_failed;
16021          END IF;
16022 
16023          IF (l_rule_count > 0) THEN
16024             l_eot_term_penalty_option       := NVL(l_eot_term_penalty_option,l_rulv_tbl(1).rule_information1);
16025             l_eot_term_penalty_amount       := NVL(l_eot_term_penalty_amount,l_rulv_tbl(1).rule_information2);
16026             l_eot_term_penalty_formula      := NVL(l_eot_term_penalty_formula,l_rulv_tbl(1).rule_information3);
16027             l_eot_term_penalty_prorate      := NVL(l_eot_term_penalty_prorate,l_rulv_tbl(1).rule_information4);
16028             l_eot_term_penalty_cap_option   := NVL(l_eot_term_penalty_cap_option,l_rulv_tbl(1).rule_information5);
16029             l_eot_term_penalty_cap_amount   := NVL(l_eot_term_penalty_cap_amount,l_rulv_tbl(1).rule_information6);
16030             l_eot_term_penalty_cap_formula  := NVL(l_eot_term_penalty_cap_formula,l_rulv_tbl(1).rule_information7);
16031          END IF;
16032       END IF;
16033 
16034       IF (l_eot_term_penalty_option IS NOT NULL) THEN
16035          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16036          l_rulv_rec.dnz_chr_id                := p_chr_id;
16037          l_rulv_rec.rule_informaTion1         := l_eot_term_penalty_option;
16038          l_rulv_rec.rule_information_category := 'AMCTPE';
16039          l_rulv_rec.std_template_yn           := 'N';
16040          l_rulv_rec.warn_yn                   := 'N';
16041       END IF;
16042 
16043       IF (l_eot_term_penalty_amount IS NOT NULL) THEN
16044          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16045          l_rulv_rec.dnz_chr_id                := p_chr_id;
16046          l_rulv_rec.rule_information2         := l_eot_term_penalty_amount;
16047          l_rulv_rec.rule_information_category := 'AMCTPE';
16048          l_rulv_rec.std_template_yn           := 'N';
16049          l_rulv_rec.warn_yn                   := 'N';
16050       END IF;
16051 
16052       IF (l_eot_term_penalty_formula IS NOT NULL) THEN
16053          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16054          l_rulv_rec.dnz_chr_id                := p_chr_id;
16055          l_rulv_rec.rule_information3         := l_eot_term_penalty_formula;
16056          l_rulv_rec.rule_information_category := 'AMCTPE';
16057          l_rulv_rec.std_template_yn           := 'N';
16058          l_rulv_rec.warn_yn                   := 'N';
16059       END IF;
16060 
16061       IF (l_eot_term_penalty_prorate IS NOT NULL) THEN
16062          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16063          l_rulv_rec.dnz_chr_id                := p_chr_id;
16064          l_rulv_rec.rule_information4         := l_eot_term_penalty_prorate;
16065          l_rulv_rec.rule_information_category := 'AMCTPE';
16066          l_rulv_rec.std_template_yn           := 'N';
16067          l_rulv_rec.warn_yn                   := 'N';
16068       END IF;
16069 
16070       IF (l_eot_term_penalty_cap_option IS NOT NULL) THEN
16071          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16072          l_rulv_rec.dnz_chr_id                := p_chr_id;
16073          l_rulv_rec.rule_informaTion5         := l_eot_term_penalty_cap_option;
16074          l_rulv_rec.rule_information_category := 'AMCTPE';
16075          l_rulv_rec.std_template_yn           := 'N';
16076          l_rulv_rec.warn_yn                   := 'N';
16077       END IF;
16078 
16079       IF (l_eot_term_penalty_cap_amount IS NOT NULL) THEN
16080          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16081          l_rulv_rec.dnz_chr_id                := p_chr_id;
16082          l_rulv_rec.rule_information6         := l_eot_term_penalty_cap_amount;
16083          l_rulv_rec.rule_information_category := 'AMCTPE';
16084          l_rulv_rec.std_template_yn           := 'N';
16085          l_rulv_rec.warn_yn                   := 'N';
16086       END IF;
16087 
16088       IF (l_eot_term_penalty_cap_formula IS NOT NULL) THEN
16089          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16090          l_rulv_rec.dnz_chr_id                := p_chr_id;
16091          l_rulv_rec.rule_information7         := l_eot_term_penalty_cap_formula;
16092          l_rulv_rec.rule_information_category := 'AMCTPE';
16093          l_rulv_rec.std_template_yn           := 'N';
16094          l_rulv_rec.warn_yn                   := 'N';
16095       END IF;
16096 
16097       create_rule_group_and_rule(
16098                                  x_return_status => x_return_status,
16099                                  x_msg_count     => x_msg_count,
16100                                  x_msg_data      => x_msg_data,
16101                                  p_rgp_id        => l_rgp_id,
16102                                  p_rgpv_rec      => l_rgpv_rec,
16103                                  p_rulv_rec      => l_rulv_rec,
16104                                  x_rgpv_rec      => x_rgpv_rec,
16105                                  x_rulv_rec      => x_rulv_rec
16106                                 );
16107 
16108       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16109           raise header_rule_failed;
16110       END IF;
16111 
16112       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
16113          l_rgp_id := x_rgpv_rec.id;
16114       END IF;
16115       debug_message('------>Rule: AMTFWC/AMCTPE processed');
16116       l_rulv_rec := NULL;
16117 
16118       l_eot_est_prop_tax_option   := p_header_rec.eot_est_prop_tax_option;
16119       l_eot_est_prop_tax_amount   := TO_CHAR(p_header_rec.eot_est_prop_tax_amount);
16120       l_eot_est_prop_tax_formula  := p_header_rec.eot_est_prop_tax_formula;
16121       l_eot_est_prop_tax_prorate  := p_header_rec.eot_est_prop_tax_prorate;
16122 
16123       IF (l_eot_est_prop_tax_option IS NULL
16124           OR
16125           l_eot_est_prop_tax_amount IS NULL
16126           OR
16127           l_eot_est_prop_tax_formula IS NULL
16128           OR
16129           l_eot_est_prop_tax_prorate IS NULL
16130           AND
16131           p_header_rec.template_number IS NOT NULL) THEN
16132          get_contract_rules(
16133                             x_return_status  => x_return_status,
16134                             x_msg_count      => x_msg_count,
16135                             x_msg_data       => x_msg_data,
16136                             p_chr_id         => p_template_id,
16137                             p_cle_id         => NULL,
16138                             p_rgd_code       => 'AMTFWC',
16139                             p_rule_code      => 'AMPRTX',
16140                             x_rulv_tbl       => l_rulv_tbl,
16141                             x_rule_count     => l_rule_count
16142                            );
16143 
16144          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16145             RAISE header_rule_failed;
16146          END IF;
16147 
16148          IF (l_rule_count > 0) THEN
16149             l_eot_est_prop_tax_option   := NVL(l_eot_est_prop_tax_option,l_rulv_tbl(1).rule_information1);
16150             l_eot_est_prop_tax_amount   := NVL(l_eot_est_prop_tax_amount,l_rulv_tbl(1).rule_information2);
16151             l_eot_est_prop_tax_formula  := NVL(l_eot_est_prop_tax_formula,l_rulv_tbl(1).rule_information3);
16152             l_eot_est_prop_tax_prorate  := NVL(l_eot_est_prop_tax_prorate,l_rulv_tbl(1).rule_information4);
16153          END IF;
16154       END IF;
16155 
16156       IF (l_eot_est_prop_tax_option IS NOT NULL) THEN
16157          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16158          l_rulv_rec.dnz_chr_id                := p_chr_id;
16159          l_rulv_rec.rule_informaTion1         := l_eot_est_prop_tax_option;
16160          l_rulv_rec.rule_information_category := 'AMPRTX';
16161          l_rulv_rec.std_template_yn           := 'N';
16162          l_rulv_rec.warn_yn                   := 'N';
16163       END IF;
16164 
16165       IF (l_eot_est_prop_tax_amount IS NOT NULL) THEN
16166          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16167          l_rulv_rec.dnz_chr_id                := p_chr_id;
16168          l_rulv_rec.rule_information2         := l_eot_est_prop_tax_amount;
16169          l_rulv_rec.rule_information_category := 'AMPRTX';
16170          l_rulv_rec.std_template_yn           := 'N';
16171          l_rulv_rec.warn_yn                   := 'N';
16172       END IF;
16173 
16174       IF (l_eot_est_prop_tax_formula IS NOT NULL) THEN
16175          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16176          l_rulv_rec.dnz_chr_id                := p_chr_id;
16177          l_rulv_rec.rule_information3         := l_eot_est_prop_tax_formula;
16178          l_rulv_rec.rule_information_category := 'AMPRTX';
16179          l_rulv_rec.std_template_yn           := 'N';
16180          l_rulv_rec.warn_yn                   := 'N';
16181       END IF;
16182 
16183       IF (l_eot_est_prop_tax_prorate IS NOT NULL) THEN
16184          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16185          l_rulv_rec.dnz_chr_id                := p_chr_id;
16186          l_rulv_rec.rule_information4         := l_eot_est_prop_tax_prorate;
16187          l_rulv_rec.rule_information_category := 'AMPRTX';
16188          l_rulv_rec.std_template_yn           := 'N';
16189          l_rulv_rec.warn_yn                   := 'N';
16190       END IF;
16191 
16192       create_rule_group_and_rule(
16193                                  x_return_status => x_return_status,
16194                                  x_msg_count     => x_msg_count,
16195                                  x_msg_data      => x_msg_data,
16196                                  p_rgp_id        => l_rgp_id,
16197                                  p_rgpv_rec      => l_rgpv_rec,
16198                                  p_rulv_rec      => l_rulv_rec,
16199                                  x_rgpv_rec      => x_rgpv_rec,
16200                                  x_rulv_rec      => x_rulv_rec
16201                                 );
16202 
16203       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16204           raise header_rule_failed;
16205       END IF;
16206 
16207       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
16208          l_rgp_id := x_rgpv_rec.id;
16209       END IF;
16210       debug_message('------>Rule: AMTFWC/AMPRTX processed');
16211       l_rulv_rec := NULL;
16212 
16213       l_eot_contr_fees_option := p_header_rec.eot_contr_fees_option;
16214 
16215       IF (l_eot_contr_fees_option IS NULL
16216           AND
16217           p_header_rec.template_number IS NOT NULL) THEN
16218          get_contract_rules(
16219                             x_return_status  => x_return_status,
16220                             x_msg_count      => x_msg_count,
16221                             x_msg_data       => x_msg_data,
16222                             p_chr_id         => p_template_id,
16223                             p_cle_id         => NULL,
16224                             p_rgd_code       => 'AMTFWC',
16225                             p_rule_code      => 'AMYFEE',
16226                             x_rulv_tbl       => l_rulv_tbl,
16227                             x_rule_count     => l_rule_count
16228                            );
16229 
16230          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16231             RAISE header_rule_failed;
16232          END IF;
16233 
16234          IF (l_rule_count > 0) THEN
16235             l_eot_contr_fees_option   := NVL(l_eot_contr_fees_option,l_rulv_tbl(1).rule_information1);
16236          END IF;
16237       END IF;
16238 
16239       IF (l_eot_contr_fees_option IS NOT NULL) THEN
16240          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16241          l_rulv_rec.dnz_chr_id                := p_chr_id;
16242          l_rulv_rec.rule_information1         := l_eot_contr_fees_option;
16243          l_rulv_rec.rule_information_category := 'AMYFEE';
16244          l_rulv_rec.std_template_yn           := 'N';
16245          l_rulv_rec.warn_yn                   := 'N';
16246       END IF;
16247 
16248       create_rule_group_and_rule(
16249                                  x_return_status => x_return_status,
16250                                  x_msg_count     => x_msg_count,
16251                                  x_msg_data      => x_msg_data,
16252                                  p_rgp_id        => l_rgp_id,
16253                                  p_rgpv_rec      => l_rgpv_rec,
16254                                  p_rulv_rec      => l_rulv_rec,
16255                                  x_rgpv_rec      => x_rgpv_rec,
16256                                  x_rulv_rec      => x_rulv_rec
16257                                 );
16258 
16259       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16260           raise header_rule_failed;
16261       END IF;
16262 
16263       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
16264          l_rgp_id := x_rgpv_rec.id;
16265       END IF;
16266       debug_message('------>Rule: AMTFWC/AMYFEE processed');
16267       l_rulv_rec := NULL;
16268 
16269       l_eot_outstnd_bal_option := p_header_rec.eot_outstnd_bal_option;
16270 
16271       IF (l_eot_outstnd_bal_option IS NULL
16272           AND
16273           p_header_rec.template_number IS NOT NULL) THEN
16274          get_contract_rules(
16275                             x_return_status  => x_return_status,
16276                             x_msg_count      => x_msg_count,
16277                             x_msg_data       => x_msg_data,
16278                             p_chr_id         => p_template_id,
16279                             p_cle_id         => NULL,
16280                             p_rgd_code       => 'AMTFWC',
16281                             p_rule_code      => 'AMYOUB',
16282                             x_rulv_tbl       => l_rulv_tbl,
16283                             x_rule_count     => l_rule_count
16284                            );
16285 
16286          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16287             RAISE header_rule_failed;
16288          END IF;
16289 
16290          IF (l_rule_count > 0) THEN
16291             l_eot_outstnd_bal_option   := l_rulv_tbl(1).rule_information1;
16292          END IF;
16293       END IF;
16294 
16295       IF (l_eot_outstnd_bal_option IS NOT NULL) THEN
16296          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16297          l_rulv_rec.dnz_chr_id                := p_chr_id;
16298          l_rulv_rec.rule_information1         := l_eot_outstnd_bal_option;
16299          l_rulv_rec.rule_information_category := 'AMYOUB';
16300          l_rulv_rec.std_template_yn           := 'N';
16301          l_rulv_rec.warn_yn                   := 'N';
16302       END IF;
16303 
16304       create_rule_group_and_rule(
16305                                  x_return_status => x_return_status,
16306                                  x_msg_count     => x_msg_count,
16307                                  x_msg_data      => x_msg_data,
16308                                  p_rgp_id        => l_rgp_id,
16309                                  p_rgpv_rec      => l_rgpv_rec,
16310                                  p_rulv_rec      => l_rulv_rec,
16311                                  x_rgpv_rec      => x_rgpv_rec,
16312                                  x_rulv_rec      => x_rulv_rec
16313                                 );
16314 
16315       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16316           raise header_rule_failed;
16317       END IF;
16318 
16319       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
16320          l_rgp_id := x_rgpv_rec.id;
16321       END IF;
16322       debug_message('------>Rule: AMTFWC/AMYOUB processed');
16323       l_rulv_rec := NULL;
16324 
16325       l_eot_serv_mant_option := p_header_rec.eot_serv_mant_option;
16326       l_eot_serv_mant_frml   := p_header_rec.eot_serv_mant_frml;
16327 
16328       IF ((l_eot_serv_mant_option IS NULL
16329            OR
16330            l_eot_serv_mant_frml IS NULL
16331           )
16332           AND
16333           p_header_rec.template_number IS NOT NULL) THEN
16334          get_contract_rules(
16335                             x_return_status  => x_return_status,
16336                             x_msg_count      => x_msg_count,
16337                             x_msg_data       => x_msg_data,
16338                             p_chr_id         => p_template_id,
16339                             p_cle_id         => NULL,
16340                             p_rgd_code       => 'AMTFWC',
16341                             p_rule_code      => 'AMYSAM',
16342                             x_rulv_tbl       => l_rulv_tbl,
16343                             x_rule_count     => l_rule_count
16344                            );
16345 
16346          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16347             RAISE header_rule_failed;
16348          END IF;
16349 
16350          IF (l_rule_count > 0) THEN
16351             l_eot_serv_mant_option   := NVL(l_eot_serv_mant_option,l_rulv_tbl(1).rule_information1);
16352             l_eot_serv_mant_frml     := NVL(l_eot_serv_mant_frml,l_rulv_tbl(1).rule_information2);
16353          END IF;
16354       END IF;
16355 
16356       IF (l_eot_serv_mant_option IS NOT NULL) THEN
16357          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16358          l_rulv_rec.dnz_chr_id                := p_chr_id;
16359          l_rulv_rec.rule_information1         := l_eot_serv_mant_option;
16360          l_rulv_rec.rule_information_category := 'AMYSAM';
16361          l_rulv_rec.std_template_yn           := 'N';
16362          l_rulv_rec.warn_yn                   := 'N';
16363       END IF;
16364 
16365       IF (l_eot_serv_mant_frml IS NOT NULL) THEN
16366          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16367          l_rulv_rec.dnz_chr_id                := p_chr_id;
16368          l_rulv_rec.rule_information2         := l_eot_serv_mant_frml;
16369          l_rulv_rec.rule_information_category := 'AMYSAM';
16370          l_rulv_rec.std_template_yn           := 'N';
16371          l_rulv_rec.warn_yn                   := 'N';
16372       END IF;
16373 
16374       create_rule_group_and_rule(
16375                                  x_return_status => x_return_status,
16376                                  x_msg_count     => x_msg_count,
16377                                  x_msg_data      => x_msg_data,
16378                                  p_rgp_id        => l_rgp_id,
16379                                  p_rgpv_rec      => l_rgpv_rec,
16380                                  p_rulv_rec      => l_rulv_rec,
16381                                  x_rgpv_rec      => x_rgpv_rec,
16382                                  x_rulv_rec      => x_rulv_rec
16383                                 );
16384 
16385       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16386           raise header_rule_failed;
16387       END IF;
16388 
16389       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
16390          l_rgp_id := x_rgpv_rec.id;
16391       END IF;
16392 
16393       debug_message('------>Rule: AMTFWC/AMYSAM processed');
16394 
16395       /**** AKP Copied from here for AMTFWC 4067094 ***/
16396       l_rulv_rec := NULL;
16397 
16398       l_eot_absorbed_fee_frml := p_header_rec.eot_absorbed_fee_frml;
16399 
16400       IF (l_eot_absorbed_fee_frml IS NULL
16401           AND
16402           p_header_rec.template_number IS NOT NULL) THEN
16403          get_contract_rules(
16404                             x_return_status  => x_return_status,
16405                             x_msg_count      => x_msg_count,
16406                             x_msg_data       => x_msg_data,
16407                             p_chr_id         => p_template_id,
16408                             p_cle_id         => NULL,
16409                             p_rgd_code       => 'AMTFWC',
16410                             p_rule_code      => 'AMAFEE',
16411                             x_rulv_tbl       => l_rulv_tbl,
16412                             x_rule_count     => l_rule_count
16413                            );
16414 
16415          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16416             RAISE header_rule_failed;
16417          END IF;
16418 
16419          IF (l_rule_count > 0) THEN
16420             l_eot_absorbed_fee_frml   := l_rulv_tbl(1).rule_information3;
16421          END IF;
16422       END IF;
16423 
16424       IF (l_eot_absorbed_fee_frml IS NOT NULL) THEN
16425          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16426          l_rulv_rec.dnz_chr_id                := p_chr_id;
16427          l_rulv_rec.rule_information3         := l_eot_absorbed_fee_frml;
16428          l_rulv_rec.rule_information_category := 'AMAFEE';
16429          l_rulv_rec.std_template_yn           := 'N';
16430          l_rulv_rec.warn_yn                   := 'N';
16431       END IF;
16432 
16433       create_rule_group_and_rule(
16434                                  x_return_status => x_return_status,
16435                                  x_msg_count     => x_msg_count,
16436                                  x_msg_data      => x_msg_data,
16437                                  p_rgp_id        => l_rgp_id,
16438                                  p_rgpv_rec      => l_rgpv_rec,
16439                                  p_rulv_rec      => l_rulv_rec,
16440                                  x_rgpv_rec      => x_rgpv_rec,
16441                                  x_rulv_rec      => x_rulv_rec
16442                                 );
16443 
16444       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16445           raise header_rule_failed;
16446       END IF;
16447 
16448       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
16449          l_rgp_id := x_rgpv_rec.id;
16450       END IF;
16451 
16452       debug_message('------>Rule: AMTFWC/AMAFEE processed');
16453 
16454       l_rulv_rec := NULL;
16455 
16456       l_eot_expense_fee_frml := p_header_rec.eot_expense_fee_frml;
16457 
16458       IF (l_eot_expense_fee_frml IS NULL
16459           AND
16460           p_header_rec.template_number IS NOT NULL) THEN
16461          get_contract_rules(
16462                             x_return_status  => x_return_status,
16463                             x_msg_count      => x_msg_count,
16464                             x_msg_data       => x_msg_data,
16465                             p_chr_id         => p_template_id,
16466                             p_cle_id         => NULL,
16467                             p_rgd_code       => 'AMTFWC',
16468                             p_rule_code      => 'AMEFEE',
16469                             x_rulv_tbl       => l_rulv_tbl,
16470                             x_rule_count     => l_rule_count
16471                            );
16472 
16473          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16474             RAISE header_rule_failed;
16475          END IF;
16476 
16477          IF (l_rule_count > 0) THEN
16478             l_eot_expense_fee_frml   := l_rulv_tbl(1).rule_information3;
16479          END IF;
16480       END IF;
16481 
16482       IF (l_eot_expense_fee_frml IS NOT NULL) THEN
16483          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16484          l_rulv_rec.dnz_chr_id                := p_chr_id;
16485          l_rulv_rec.rule_information3         := l_eot_expense_fee_frml;
16486          l_rulv_rec.rule_information_category := 'AMEFEE';
16487          l_rulv_rec.std_template_yn           := 'N';
16488          l_rulv_rec.warn_yn                   := 'N';
16489       END IF;
16490 
16491       create_rule_group_and_rule(
16492                                  x_return_status => x_return_status,
16493                                  x_msg_count     => x_msg_count,
16494                                  x_msg_data      => x_msg_data,
16495                                  p_rgp_id        => l_rgp_id,
16496                                  p_rgpv_rec      => l_rgpv_rec,
16497                                  p_rulv_rec      => l_rulv_rec,
16498                                  x_rgpv_rec      => x_rgpv_rec,
16499                                  x_rulv_rec      => x_rulv_rec
16500                                 );
16501 
16502       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16503           raise header_rule_failed;
16504       END IF;
16505 
16506       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
16507          l_rgp_id := x_rgpv_rec.id;
16508       END IF;
16509 
16510       debug_message('------>Rule: AMTFWC/AMEFEE processed');
16511 
16512       l_rulv_rec := NULL;
16513 
16514       l_eot_financed_fee_frml := p_header_rec.eot_financed_fee_frml;
16515 
16516       IF (l_eot_financed_fee_frml IS NULL
16517           AND
16518           p_header_rec.template_number IS NOT NULL) THEN
16519          get_contract_rules(
16520                             x_return_status  => x_return_status,
16521                             x_msg_count      => x_msg_count,
16522                             x_msg_data       => x_msg_data,
16523                             p_chr_id         => p_template_id,
16524                             p_cle_id         => NULL,
16525                             p_rgd_code       => 'AMTFWC',
16526                             p_rule_code      => 'AMFFEE',
16527                             x_rulv_tbl       => l_rulv_tbl,
16528                             x_rule_count     => l_rule_count
16529                            );
16530 
16531          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16532             RAISE header_rule_failed;
16533          END IF;
16534 
16535          IF (l_rule_count > 0) THEN
16536             l_eot_financed_fee_frml   := l_rulv_tbl(1).rule_information3;
16537          END IF;
16538       END IF;
16539 
16540       IF (l_eot_financed_fee_frml IS NOT NULL) THEN
16541          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16542          l_rulv_rec.dnz_chr_id                := p_chr_id;
16543          l_rulv_rec.rule_information3         := l_eot_financed_fee_frml;
16544          l_rulv_rec.rule_information_category := 'AMFFEE';
16545          l_rulv_rec.std_template_yn           := 'N';
16546          l_rulv_rec.warn_yn                   := 'N';
16547       END IF;
16548 
16549       create_rule_group_and_rule(
16550                                  x_return_status => x_return_status,
16551                                  x_msg_count     => x_msg_count,
16552                                  x_msg_data      => x_msg_data,
16553                                  p_rgp_id        => l_rgp_id,
16554                                  p_rgpv_rec      => l_rgpv_rec,
16555                                  p_rulv_rec      => l_rulv_rec,
16556                                  x_rgpv_rec      => x_rgpv_rec,
16557                                  x_rulv_rec      => x_rulv_rec
16558                                 );
16559 
16560       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16561           raise header_rule_failed;
16562       END IF;
16563 
16564       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
16565          l_rgp_id := x_rgpv_rec.id;
16566       END IF;
16567 
16568       debug_message('------>Rule: AMTFWC/AMFFEE processed');
16569 
16570       l_rulv_rec := NULL;
16571 
16572       l_eot_general_fee_frml := p_header_rec.eot_general_fee_frml;
16573 
16574       IF (l_eot_general_fee_frml IS NULL
16575           AND
16576           p_header_rec.template_number IS NOT NULL) THEN
16577          get_contract_rules(
16578                             x_return_status  => x_return_status,
16579                             x_msg_count      => x_msg_count,
16580                             x_msg_data       => x_msg_data,
16581                             p_chr_id         => p_template_id,
16582                             p_cle_id         => NULL,
16583                             p_rgd_code       => 'AMTFWC',
16584                             p_rule_code      => 'AMGFEE',
16585                             x_rulv_tbl       => l_rulv_tbl,
16586                             x_rule_count     => l_rule_count
16587                            );
16588 
16589          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16590             RAISE header_rule_failed;
16591          END IF;
16592 
16593          IF (l_rule_count > 0) THEN
16594             l_eot_general_fee_frml   := l_rulv_tbl(1).rule_information3;
16595          END IF;
16596       END IF;
16597 
16598       IF (l_eot_general_fee_frml IS NOT NULL) THEN
16599          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16600          l_rulv_rec.dnz_chr_id                := p_chr_id;
16601          l_rulv_rec.rule_information3         := l_eot_general_fee_frml;
16602          l_rulv_rec.rule_information_category := 'AMGFEE';
16603          l_rulv_rec.std_template_yn           := 'N';
16604          l_rulv_rec.warn_yn                   := 'N';
16605       END IF;
16606 
16607       create_rule_group_and_rule(
16608                                  x_return_status => x_return_status,
16609                                  x_msg_count     => x_msg_count,
16610                                  x_msg_data      => x_msg_data,
16611                                  p_rgp_id        => l_rgp_id,
16612                                  p_rgpv_rec      => l_rgpv_rec,
16613                                  p_rulv_rec      => l_rulv_rec,
16614                                  x_rgpv_rec      => x_rgpv_rec,
16615                                  x_rulv_rec      => x_rulv_rec
16616                                 );
16617 
16618       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16619           raise header_rule_failed;
16620       END IF;
16621 
16622       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
16623          l_rgp_id := x_rgpv_rec.id;
16624       END IF;
16625 
16626       debug_message('------>Rule: AMTFWC/AMGFEE processed');
16627 
16628       l_rulv_rec := NULL;
16629 
16630       l_eot_income_fee_frml := p_header_rec.eot_income_fee_frml;
16631 
16632       IF (l_eot_income_fee_frml IS NULL
16633           AND
16634           p_header_rec.template_number IS NOT NULL) THEN
16635          get_contract_rules(
16636                             x_return_status  => x_return_status,
16637                             x_msg_count      => x_msg_count,
16638                             x_msg_data       => x_msg_data,
16639                             p_chr_id         => p_template_id,
16640                             p_cle_id         => NULL,
16641                             p_rgd_code       => 'AMTFWC',
16642                             p_rule_code      => 'AMIFEE',
16643                             x_rulv_tbl       => l_rulv_tbl,
16644                             x_rule_count     => l_rule_count
16645                            );
16646 
16647          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16648             RAISE header_rule_failed;
16649          END IF;
16650 
16651          IF (l_rule_count > 0) THEN
16652             l_eot_income_fee_frml   := l_rulv_tbl(1).rule_information3;
16653          END IF;
16654       END IF;
16655 
16656       IF (l_eot_income_fee_frml IS NOT NULL) THEN
16657          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16658          l_rulv_rec.dnz_chr_id                := p_chr_id;
16659          l_rulv_rec.rule_information3         := l_eot_income_fee_frml;
16660          l_rulv_rec.rule_information_category := 'AMIFEE';
16661          l_rulv_rec.std_template_yn           := 'N';
16662          l_rulv_rec.warn_yn                   := 'N';
16663       END IF;
16664 
16665       create_rule_group_and_rule(
16666                                  x_return_status => x_return_status,
16667                                  x_msg_count     => x_msg_count,
16668                                  x_msg_data      => x_msg_data,
16669                                  p_rgp_id        => l_rgp_id,
16670                                  p_rgpv_rec      => l_rgpv_rec,
16671                                  p_rulv_rec      => l_rulv_rec,
16672                                  x_rgpv_rec      => x_rgpv_rec,
16673                                  x_rulv_rec      => x_rulv_rec
16674                                 );
16675 
16676       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16677           raise header_rule_failed;
16678       END IF;
16679 
16680       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
16681          l_rgp_id := x_rgpv_rec.id;
16682       END IF;
16683 
16684       debug_message('------>Rule: AMTFWC/AMIFEE processed');
16685 
16686       l_rulv_rec := NULL;
16687 
16688       l_eot_misc_fee_frml := p_header_rec.eot_misc_fee_frml;
16689 
16690       IF (l_eot_misc_fee_frml IS NULL
16691           AND
16692           p_header_rec.template_number IS NOT NULL) THEN
16693          get_contract_rules(
16694                             x_return_status  => x_return_status,
16695                             x_msg_count      => x_msg_count,
16696                             x_msg_data       => x_msg_data,
16697                             p_chr_id         => p_template_id,
16698                             p_cle_id         => NULL,
16699                             p_rgd_code       => 'AMTFWC',
16700                             p_rule_code      => 'AMMFEE',
16701                             x_rulv_tbl       => l_rulv_tbl,
16702                             x_rule_count     => l_rule_count
16703                            );
16704 
16705          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16706             RAISE header_rule_failed;
16707          END IF;
16708 
16709          IF (l_rule_count > 0) THEN
16710             l_eot_misc_fee_frml   := l_rulv_tbl(1).rule_information3;
16711          END IF;
16712       END IF;
16713 
16714       IF (l_eot_misc_fee_frml IS NOT NULL) THEN
16715          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16716          l_rulv_rec.dnz_chr_id                := p_chr_id;
16717          l_rulv_rec.rule_information3         := l_eot_misc_fee_frml;
16718          l_rulv_rec.rule_information_category := 'AMMFEE';
16719          l_rulv_rec.std_template_yn           := 'N';
16720          l_rulv_rec.warn_yn                   := 'N';
16721       END IF;
16722 
16723       create_rule_group_and_rule(
16724                                  x_return_status => x_return_status,
16725                                  x_msg_count     => x_msg_count,
16726                                  x_msg_data      => x_msg_data,
16727                                  p_rgp_id        => l_rgp_id,
16728                                  p_rgpv_rec      => l_rgpv_rec,
16729                                  p_rulv_rec      => l_rulv_rec,
16730                                  x_rgpv_rec      => x_rgpv_rec,
16731                                  x_rulv_rec      => x_rulv_rec
16732                                 );
16733 
16734       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16735           raise header_rule_failed;
16736       END IF;
16737 
16738       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
16739          l_rgp_id := x_rgpv_rec.id;
16740       END IF;
16741 
16742       debug_message('------>Rule: AMTFWC/AMMFEE processed');
16743 
16744       l_rulv_rec := NULL;
16745 
16746       l_eot_passthru_fee_frml := p_header_rec.eot_passthru_fee_frml;
16747 
16748       IF (l_eot_passthru_fee_frml IS NULL
16749           AND
16750           p_header_rec.template_number IS NOT NULL) THEN
16751          get_contract_rules(
16752                             x_return_status  => x_return_status,
16753                             x_msg_count      => x_msg_count,
16754                             x_msg_data       => x_msg_data,
16755                             p_chr_id         => p_template_id,
16756                             p_cle_id         => NULL,
16757                             p_rgd_code       => 'AMTFWC',
16758                             p_rule_code      => 'AMPFEE',
16759                             x_rulv_tbl       => l_rulv_tbl,
16760                             x_rule_count     => l_rule_count
16761                            );
16762 
16763          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16764             RAISE header_rule_failed;
16765          END IF;
16766 
16767          IF (l_rule_count > 0) THEN
16768             l_eot_passthru_fee_frml   := l_rulv_tbl(1).rule_information3;
16769          END IF;
16770       END IF;
16771 
16772       IF (l_eot_passthru_fee_frml IS NOT NULL) THEN
16773          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16774          l_rulv_rec.dnz_chr_id                := p_chr_id;
16775          l_rulv_rec.rule_information3         := l_eot_passthru_fee_frml;
16776          l_rulv_rec.rule_information_category := 'AMPFEE';
16777          l_rulv_rec.std_template_yn           := 'N';
16778          l_rulv_rec.warn_yn                   := 'N';
16779       END IF;
16780 
16781       create_rule_group_and_rule(
16782                                  x_return_status => x_return_status,
16783                                  x_msg_count     => x_msg_count,
16784                                  x_msg_data      => x_msg_data,
16785                                  p_rgp_id        => l_rgp_id,
16786                                  p_rgpv_rec      => l_rgpv_rec,
16787                                  p_rulv_rec      => l_rulv_rec,
16788                                  x_rgpv_rec      => x_rgpv_rec,
16789                                  x_rulv_rec      => x_rulv_rec
16790                                 );
16791 
16792       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16793           raise header_rule_failed;
16794       END IF;
16795 
16796       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
16797          l_rgp_id := x_rgpv_rec.id;
16798       END IF;
16799 
16800       debug_message('------>Rule: AMTFWC/AMPFEE processed');
16801 
16802       l_rulv_rec := NULL;
16803 
16804       l_eot_rollover_fee_frml := p_header_rec.eot_rollover_fee_frml;
16805 
16806       IF (l_eot_rollover_fee_frml IS NULL
16807           AND
16808           p_header_rec.template_number IS NOT NULL) THEN
16809          get_contract_rules(
16810                             x_return_status  => x_return_status,
16811                             x_msg_count      => x_msg_count,
16812                             x_msg_data       => x_msg_data,
16813                             p_chr_id         => p_template_id,
16814                             p_cle_id         => NULL,
16815                             p_rgd_code       => 'AMTFWC',
16816                             p_rule_code      => 'AMRFEE',
16817                             x_rulv_tbl       => l_rulv_tbl,
16818                             x_rule_count     => l_rule_count
16819                            );
16820 
16821          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16822             RAISE header_rule_failed;
16823          END IF;
16824 
16825          IF (l_rule_count > 0) THEN
16826             l_eot_rollover_fee_frml   := l_rulv_tbl(1).rule_information3;
16827          END IF;
16828       END IF;
16829 
16830       IF (l_eot_rollover_fee_frml IS NOT NULL) THEN
16831          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16832          l_rulv_rec.dnz_chr_id                := p_chr_id;
16833          l_rulv_rec.rule_information3         := l_eot_rollover_fee_frml;
16834          l_rulv_rec.rule_information_category := 'AMRFEE';
16835          l_rulv_rec.std_template_yn           := 'N';
16836          l_rulv_rec.warn_yn                   := 'N';
16837       END IF;
16838 
16839       create_rule_group_and_rule(
16840                                  x_return_status => x_return_status,
16841                                  x_msg_count     => x_msg_count,
16842                                  x_msg_data      => x_msg_data,
16843                                  p_rgp_id        => l_rgp_id,
16844                                  p_rgpv_rec      => l_rgpv_rec,
16845                                  p_rulv_rec      => l_rulv_rec,
16846                                  x_rgpv_rec      => x_rgpv_rec,
16847                                  x_rulv_rec      => x_rulv_rec
16848                                 );
16849 
16850       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16851           raise header_rule_failed;
16852       END IF;
16853 
16854       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
16855          l_rgp_id := x_rgpv_rec.id;
16856       END IF;
16857 
16858       debug_message('------>Rule: AMTFWC/AMRFEE processed');
16859       /**** AKP Copied to here for AMTFWC 4067094 ***/
16860 
16861 /*
16862  * Adding Lien and Title Rules at contract header
16863  *
16864 */
16865       -- Rule Group LAAFLG
16866 
16867       l_rgpv_rec            := NULL;
16868       l_rgp_id              := NULL;
16869       l_rgpv_rec.rgd_code   := 'LAAFLG';
16870       l_rgpv_rec.chr_id     := p_chr_id;
16871       l_rgpv_rec.dnz_chr_id := p_chr_id;
16872       l_rgpv_rec.cle_id     := NULL;
16873       l_rgpv_rec.rgp_type   := 'KRG';
16874 
16875       l_rulv_rec := NULL;
16876 
16877       IF (p_header_rec.lien_holder_name IS NOT NULL
16878           OR
16879           p_header_rec.lien_holder_id IS NOT NULL) THEN
16880 
16881           l_lien_holder_id := get_lien_holder(
16882                                               x_return_status    => x_return_status,
16883                                               p_lien_holder_name => p_header_rec.lien_holder_name,
16884                                               p_lien_holder_id   => p_header_rec.lien_holder_id
16885                                              );
16886           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16887              okl_api.set_message(
16888                     G_APP_NAME,
16889                     G_INVALID_VALUE,
16890                     'CONTRACT_NUM',
16891                     p_header_rec.contract_number_old,
16892                     'COL_NAME',
16893                     'LIEN_HOLDER_NAME, ID',
16894                     'COL_VALUE',
16895                     p_header_rec.lien_holder_name||', '||p_header_rec.lien_holder_id
16896                    );
16897              RAISE header_rule_failed;
16898           END IF;
16899 
16900       END IF;
16901 
16902       l_lien_type                := p_header_rec.lien_type;
16903       l_filing_number            := p_header_rec.filing_number;
16904       l_filing_date              := get_canonicaL_date(p_header_rec.filing_date);
16905       l_filing_status            := p_header_rec.filing_status ;
16906       l_jurisdiction             := p_header_rec.jurisdiction ;
16907       l_sub_jurisdiction         := p_header_rec.sub_jurisdiction ;
16908       l_lien_expiration_date     := get_canonicaL_date(p_header_rec.lien_expiration_date);
16909       l_lien_continuation_number := p_header_rec.lien_continuation_number;
16910       l_lien_continuation_date   := get_canonicaL_date(p_header_rec.lien_continuation_date);
16911 
16912       IF (l_lien_type IS NULL
16913           OR
16914           l_filing_number IS NULL
16915           OR
16916           l_filing_date IS NULL
16917           OR
16918           l_filing_status IS NULL
16919           OR
16920           l_lien_holder_id IS NULL
16921           OR
16922           l_jurisdiction IS NULL
16923           OR
16924           l_sub_jurisdiction IS NULL
16925           OR
16926           l_lien_expiration_date IS NULL
16927           OR
16928           l_lien_continuation_number IS NULL
16929           OR
16930           l_lien_continuation_date IS NULL
16931           AND
16932           p_header_rec.template_number IS NOT NULL) THEN
16933 
16934          get_contract_rules(
16935                             x_return_status  => x_return_status,
16936                             x_msg_count      => x_msg_count,
16937                             x_msg_data       => x_msg_data,
16938                             p_chr_id         => p_template_id,
16939                             p_cle_id         => NULL,
16940                             p_rgd_code       => 'LAAFLG',
16941                             p_rule_code      => 'LAFLLN',
16942                             x_rulv_tbl       => l_rulv_tbl,
16943                             x_rule_count     => l_rule_count
16944                            );
16945 
16946          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
16947             RAISE header_rule_failed;
16948          END IF;
16949 
16950          IF (l_rule_count > 0) THEN
16951             l_lien_type                := NVL(l_lien_type, l_Rulv_tbl(1).rule_information1);
16952             l_filing_number            := NVL(l_filing_number, l_rulv_tbl(1).rule_information2);
16953             l_filing_date              := NVL(l_filing_date, l_rulv_tbl(1).rule_information3);
16954             l_filing_status            := NVL(l_filing_status, l_rulv_tbl(1).rule_information4);
16955             l_jurisdiction             := NVL(l_jurisdiction, l_rulv_tbl(1).rule_information5);
16956             l_sub_jurisdiction         := NVL(l_sub_jurisdiction, l_rulv_tbl(1).rule_information6);
16957             l_lien_expiration_date     := NVL(l_lien_expiration_date, l_rulv_tbl(1).rule_information7);
16958             l_lien_continuation_number := NVL(l_lien_continuation_number, l_rulv_tbl(1).rule_information8);
16959             l_lien_continuation_date   := NVL(l_lien_continuation_date, l_rulv_tbl(1).rule_information9);
16960             l_lien_holder_id           := NVL(l_lien_holder_id, l_rulv_tbl(1).object1_id1);
16961          END IF;
16962       END IF;
16963 
16964       IF (l_lien_type IS NOT NULL) THEN
16965          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16966          l_rulv_rec.dnz_chr_id                := p_chr_id;
16967          l_rulv_rec.rule_information1         := l_lien_type;
16968          l_rulv_rec.rule_information_category := 'LAFLLN';
16969          l_rulv_rec.std_template_yn           := 'N';
16970          l_rulv_rec.warn_yn                   := 'N';
16971       END IF;
16972 
16973       IF (l_filing_number IS NOT NULL) THEN
16974          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16975          l_rulv_rec.dnz_chr_id                := p_chr_id;
16976          l_rulv_rec.rule_information2         := l_filing_number;
16977          l_rulv_rec.rule_information_category := 'LAFLLN';
16978          l_rulv_rec.std_template_yn           := 'N';
16979          l_rulv_rec.warn_yn                   := 'N';
16980       END IF;
16981 
16982       IF (l_filing_date IS NOT NULL) THEN
16983          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16984          l_rulv_rec.dnz_chr_id                := p_chr_id;
16985          l_rulv_rec.rule_information3         := l_filing_date;
16986          l_rulv_rec.rule_information_category := 'LAFLLN';
16987          l_rulv_rec.std_template_yn           := 'N';
16988          l_rulv_rec.warn_yn                   := 'N';
16989       END IF;
16990 
16991       IF (l_filing_status IS NOT NULL) THEN
16992          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
16993          l_rulv_rec.dnz_chr_id                := p_chr_id;
16994          l_rulv_rec.rule_information4         := l_filing_status;
16995          l_rulv_rec.rule_information_category := 'LAFLLN';
16996          l_rulv_rec.std_template_yn           := 'N';
16997          l_rulv_rec.warn_yn                   := 'N';
16998       END IF;
16999 
17000       IF (l_jurisdiction IS NOT NULL) THEN
17001          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17002          l_rulv_rec.dnz_chr_id                := p_chr_id;
17003          l_rulv_rec.rule_information5         := l_jurisdiction;
17004          l_rulv_rec.rule_information_category := 'LAFLLN';
17005          l_rulv_rec.std_template_yn           := 'N';
17006          l_rulv_rec.warn_yn                   := 'N';
17007       END IF;
17008 
17009       IF (l_sub_jurisdiction IS NOT NULL) THEN
17010          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17011          l_rulv_rec.dnz_chr_id                := p_chr_id;
17012          l_rulv_rec.rule_information6         := l_sub_jurisdiction;
17013          l_rulv_rec.rule_information_category := 'LAFLLN';
17014          l_rulv_rec.std_template_yn           := 'N';
17015          l_rulv_rec.warn_yn                   := 'N';
17016       END IF;
17017 
17018       IF (l_lien_expiration_date IS NOT NULL) THEN
17019          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17020          l_rulv_rec.dnz_chr_id                := p_chr_id;
17021          l_rulv_rec.rule_information7         := l_lien_expiration_date;
17022          l_rulv_rec.rule_information_category := 'LAFLLN';
17023          l_rulv_rec.std_template_yn           := 'N';
17024          l_rulv_rec.warn_yn                   := 'N';
17025       END IF;
17026 
17027       IF (l_lien_continuation_number IS NOT NULL) THEN
17028          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17029          l_rulv_rec.dnz_chr_id                := p_chr_id;
17030          l_rulv_rec.rule_information8         := l_lien_continuation_number;
17031          l_rulv_rec.rule_information_category := 'LAFLLN';
17032          l_rulv_rec.std_template_yn           := 'N';
17033          l_rulv_rec.warn_yn                   := 'N';
17034       END IF;
17035 
17036       IF (l_lien_continuation_date IS NOT NULL) THEN
17037          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17038          l_rulv_rec.dnz_chr_id                := p_chr_id;
17039          l_rulv_rec.rule_information9         := l_lien_continuation_date;
17040          l_rulv_rec.rule_information_category := 'LAFLLN';
17041          l_rulv_rec.std_template_yn           := 'N';
17042          l_rulv_rec.warn_yn                   := 'N';
17043       END IF;
17044 
17045       IF (l_lien_holder_id  IS NOT NULL) THEN
17046          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17047          l_rulv_rec.dnz_chr_id                := p_chr_id;
17048          l_rulv_rec.jtot_object1_code         := 'OKX_PARTY';
17049          l_rulv_rec.object1_id1               := l_lien_holder_id;
17050          l_rulv_rec.object1_id2               := '#';
17051          l_rulv_rec.rule_information_category := 'LAFLLN';
17052          l_rulv_rec.std_template_yn           := 'N';
17053          l_rulv_rec.warn_yn                   := 'N';
17054       END IF;
17055 
17056       create_rule_group_and_rule(
17057                                  x_return_status => x_return_status,
17058                                  x_msg_count     => x_msg_count,
17059                                  x_msg_data      => x_msg_data,
17060                                  p_rgp_id        => l_rgp_id,
17061                                  p_rgpv_rec      => l_rgpv_rec,
17062                                  p_rulv_rec      => l_rulv_rec,
17063                                  x_rgpv_rec      => x_rgpv_rec,
17064                                  x_rulv_rec      => x_rulv_rec
17065                                 );
17066 
17067       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17068           raise header_rule_failed;
17069       END IF;
17070 
17071       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
17072          l_rgp_id := x_rgpv_rec.id;
17073       END IF;
17074       debug_message('------>Rule: LAAFLG/LAFLLN processed');
17075       l_rulv_rec := NULL;
17076 
17077       l_title_type               := p_header_rec.title_type ;
17078       l_title_issuer_name        := p_header_rec.title_issuer_name ;
17079       l_title_issuer_id          := p_header_rec.title_issuer_id ;
17080       l_title_date               := get_canonicaL_date(p_header_rec.title_date);
17081       l_title_number             := p_header_rec.title_number ;
17082       l_registration_number      := p_header_rec.registration_number ;
17083       l_location                 := p_header_rec.location ;
17084       l_title_custodian_name     := p_header_rec.title_custodian_name ;
17085       l_title_custodian_id       := p_header_rec.title_custodian_id ;
17086       l_payee_site               := p_header_rec.payee_site ;
17087       l_registration_location    := p_header_rec.registration_location ;
17088       l_reg_expiration_date      := get_canonicaL_date(p_header_rec.reg_expiration_date);
17089 
17090       x_title_issuer_id := NULL;
17091       IF (l_title_issuer_name IS NOT NULL
17092           OR
17093           l_title_issuer_id IS NOT NULL) THEN
17094 
17095               get_party_id(
17096                   x_return_status     => x_return_status,
17097                   x_msg_count         => x_msg_count,
17098                   x_msg_data          => x_msg_data,
17099                   p_contract_number   => p_header_rec.contract_number_old,
17100                   p_line_number       => NULL,
17101                   p_party_id          => l_title_issuer_id,
17102                   p_party_number      => l_title_issuer_name,
17103                   x_party_id          => x_title_issuer_id
17104                  );
17105 
17106              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17107                 RAISE header_rule_failed;
17108              END IF;
17109       END IF;
17110 
17111       x_title_custodian_id := NULL;
17112       IF (l_title_custodian_name IS NOT NULL
17113           OR
17114           l_title_custodian_id IS NOT NULL) THEN
17115 
17116               get_party_id(
17117                   x_return_status     => x_return_status,
17118                   x_msg_count         => x_msg_count,
17119                   x_msg_data          => x_msg_data,
17120                   p_contract_number   => p_header_rec.contract_number_old,
17121                   p_line_number       => NULL,
17122                   p_party_id          => l_title_custodian_id,
17123                   p_party_number      => l_title_custodian_name,
17124                   x_party_id          => x_title_custodian_id
17125                  );
17126 
17127              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17128                 RAISE header_rule_failed;
17129              END IF;
17130       END IF;
17131 
17132       IF (l_title_type IS NULL
17133           OR
17134           x_title_issuer_id IS NULL
17135           OR
17136           l_title_date IS NULL
17137           OR
17138           l_title_number IS NULL
17139           OR
17140           l_registration_number IS NULL
17141           OR
17142           l_location IS NULL
17143           OR
17144           x_title_custodian_id IS NULL
17145           OR
17146           l_payee_site IS NULL
17147           OR
17148           l_registration_location IS NULL
17149           OR
17150           l_reg_expiration_date IS NULL
17151           AND
17152           p_header_rec.template_number IS NOT NULL) THEN
17153          get_contract_rules(
17154                             x_return_status  => x_return_status,
17155                             x_msg_count      => x_msg_count,
17156                             x_msg_data       => x_msg_data,
17157                             p_chr_id         => p_template_id,
17158                             p_cle_id         => NULL,
17159                             p_rgd_code       => 'LAAFLG',
17160                             p_rule_code      => 'LAFLTL',
17161                             x_rulv_tbl       => l_rulv_tbl,
17162                             x_rule_count     => l_rule_count
17163                            );
17164 
17165          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17166             RAISE header_rule_failed;
17167          END IF;
17168 
17169          IF (l_rule_count > 0) THEN
17170             l_title_type               := NVL(l_title_type, l_rulv_tbl(1).rule_information1);
17171             l_title_issuer_id          := NVL(x_title_issuer_id, l_rulv_tbl(1).object1_id1);
17172             l_title_date               := NVL(l_title_date, l_rulv_tbl(1).rule_information2);
17173             l_title_number             := NVL(l_title_number, l_rulv_tbl(1).rule_information3);
17174             l_registration_number      := NVL(l_registration_number, l_rulv_tbl(1).rule_information4);
17175             l_location                 := NVL(l_location, l_rulv_tbl(1).rule_information5);
17176             l_title_custodian_id       := NVL(x_title_custodian_id, l_rulv_tbl(1).object2_id1);
17177             l_payee_site               := NVL(l_payee_site, l_rulv_tbl(1).rule_information6);
17178             l_registration_location    := NVL(l_registration_location, l_rulv_tbl(1).rule_information7);
17179             l_reg_expiration_date      := NVL(l_reg_expiration_date, l_rulv_tbl(1).rule_information8);
17180          END IF;
17181       END IF;
17182 
17183       IF (l_title_type IS NOT NULL) THEN
17184          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17185          l_rulv_rec.dnz_chr_id                := p_chr_id;
17186          l_rulv_rec.rule_information1         := l_title_type;
17187          l_rulv_rec.rule_information_category := 'LAFLTL';
17188          l_rulv_rec.std_template_yn           := 'N';
17189          l_rulv_rec.warn_yn                   := 'N';
17190       END IF;
17191 
17192       IF (l_title_date IS NOT NULL) THEN
17193          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17194          l_rulv_rec.dnz_chr_id                := p_chr_id;
17195          l_rulv_rec.rule_information2         := l_title_date;
17196          l_rulv_rec.rule_information_category := 'LAFLTL';
17197          l_rulv_rec.std_template_yn           := 'N';
17198          l_rulv_rec.warn_yn                   := 'N';
17199       END IF;
17200 
17201       IF (l_title_number IS NOT NULL) THEN
17202          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17203          l_rulv_rec.dnz_chr_id                := p_chr_id;
17204          l_rulv_rec.rule_information3         := l_title_number;
17205          l_rulv_rec.rule_information_category := 'LAFLTL';
17206          l_rulv_rec.std_template_yn           := 'N';
17207          l_rulv_rec.warn_yn                   := 'N';
17208       END IF;
17209 
17210       IF (l_registration_number IS NOT NULL) THEN
17211          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17212          l_rulv_rec.dnz_chr_id                := p_chr_id;
17213          l_rulv_rec.rule_information4         := l_registration_number;
17214          l_rulv_rec.rule_information_category := 'LAFLTL';
17215          l_rulv_rec.std_template_yn           := 'N';
17216          l_rulv_rec.warn_yn                   := 'N';
17217       END IF;
17218 
17219       IF (l_location IS NOT NULL) THEN
17220          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17221          l_rulv_rec.dnz_chr_id                := p_chr_id;
17222          l_rulv_rec.rule_information5         := l_location;
17223          l_rulv_rec.rule_information_category := 'LAFLTL';
17224          l_rulv_rec.std_template_yn           := 'N';
17225          l_rulv_rec.warn_yn                   := 'N';
17226       END IF;
17227 
17228       IF (l_payee_site IS NOT NULL) THEN
17229          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17230          l_rulv_rec.dnz_chr_id                := p_chr_id;
17231          l_rulv_rec.rule_information6         := l_payee_site;
17232          l_rulv_rec.rule_information_category := 'LAFLTL';
17233          l_rulv_rec.std_template_yn           := 'N';
17234          l_rulv_rec.warn_yn                   := 'N';
17235       END IF;
17236 
17237       IF (l_registration_location IS NOT NULL) THEN
17238          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17239          l_rulv_rec.dnz_chr_id                := p_chr_id;
17240          l_rulv_rec.rule_information7         := l_registration_location;
17241          l_rulv_rec.rule_information_category := 'LAFLTL';
17242          l_rulv_rec.std_template_yn           := 'N';
17243          l_rulv_rec.warn_yn                   := 'N';
17244       END IF;
17245 
17246       IF (l_reg_expiration_date IS NOT NULL) THEN
17247          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17248          l_rulv_rec.dnz_chr_id                := p_chr_id;
17249          l_rulv_rec.rule_information8         := l_reg_expiration_date;
17250          l_rulv_rec.rule_information_category := 'LAFLTL';
17251          l_rulv_rec.std_template_yn           := 'N';
17252          l_rulv_rec.warn_yn                   := 'N';
17253       END IF;
17254 
17255       IF (l_title_issuer_id  IS NOT NULL) THEN
17256          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17257          l_rulv_rec.dnz_chr_id                := p_chr_id;
17258          l_rulv_rec.jtot_object1_code         := 'OKX_PARTY';
17259          l_rulv_rec.object1_id1               := x_title_issuer_id;
17260          l_rulv_rec.object1_id2               := '#';
17261          l_rulv_rec.rule_information_category := 'LAFLTL';
17262          l_rulv_rec.std_template_yn           := 'N';
17263          l_rulv_rec.warn_yn                   := 'N';
17264       END IF;
17265 
17266       IF (l_title_custodian_id  IS NOT NULL) THEN
17267          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17268          l_rulv_rec.dnz_chr_id                := p_chr_id;
17269          l_rulv_rec.jtot_object1_code         := 'OKX_PARTY';
17270          l_rulv_rec.object2_id1               := x_title_custodian_id;
17271          l_rulv_rec.object2_id2               := '#';
17272          l_rulv_rec.rule_information_category := 'LAFLTL';
17273          l_rulv_rec.std_template_yn           := 'N';
17274          l_rulv_rec.warn_yn                   := 'N';
17275       END IF;
17276 
17277       create_rule_group_and_rule(
17278                                  x_return_status => x_return_status,
17279                                  x_msg_count     => x_msg_count,
17280                                  x_msg_data      => x_msg_data,
17281                                  p_rgp_id        => l_rgp_id,
17282                                  p_rgpv_rec      => l_rgpv_rec,
17283                                  p_rulv_rec      => l_rulv_rec,
17284                                  x_rgpv_rec      => x_rgpv_rec,
17285                                  x_rulv_rec      => x_rulv_rec
17286                                 );
17287 
17288       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17289           raise header_rule_failed;
17290       END IF;
17291 
17292       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
17293          l_rgp_id := x_rgpv_rec.id;
17294       END IF;
17295       debug_message('------>Rule: LAAFLG/LAFLTL processed');
17296 
17297 /*
17298  * Adding Contract Portfolio Rules at contract header
17299  *
17300 */
17301       -- Rule Group AMCOPO
17302 
17303       l_rgpv_rec            := NULL;
17304       l_rgp_id              := NULL;
17305       l_rgpv_rec.rgd_code   := 'AMCOPO';
17306       l_rgpv_rec.chr_id     := p_chr_id;
17307       l_rgpv_rec.dnz_chr_id := p_chr_id;
17308       l_rgpv_rec.cle_id     := NULL;
17309       l_rgpv_rec.rgp_type   := 'KRG';
17310 
17311       l_rulv_rec := NULL;
17312 
17313       l_prtfl_approval_req := p_header_rec.prtfl_approval_req;
17314 
17315       IF (l_prtfl_approval_req IS NULL
17316           AND
17317           p_header_rec.template_number IS NOT NULL) THEN
17318          get_contract_rules(
17319                             x_return_status  => x_return_status,
17320                             x_msg_count      => x_msg_count,
17321                             x_msg_data       => x_msg_data,
17322                             p_chr_id         => p_template_id,
17323                             p_cle_id         => NULL,
17324                             p_rgd_code       => 'AMCOPO',
17325                             p_rule_code      => 'AMAPRE',
17326                             x_rulv_tbl       => l_rulv_tbl,
17327                             x_rule_count     => l_rule_count
17328                            );
17329 
17330          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17331             RAISE header_rule_failed;
17332          END IF;
17333 
17334          IF (l_rule_count > 0) THEN
17335             l_prtfl_approval_req       := NVL(l_prtfl_approval_req, l_rulv_tbl(1).rule_information1);
17336          END IF;
17337       END IF;
17338 
17339       IF (l_prtfl_approval_req IS NOT NULL) THEN
17340          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17341          l_rulv_rec.dnz_chr_id                := p_chr_id;
17342          l_rulv_rec.rule_information1         := l_prtfl_approval_req;
17343          l_rulv_rec.rule_information_category := 'AMAPRE';
17344          l_rulv_rec.std_template_yn           := 'N';
17345          l_rulv_rec.warn_yn                   := 'N';
17346       END IF;
17347 
17348       create_rule_group_and_rule(
17349                                  x_return_status => x_return_status,
17350                                  x_msg_count     => x_msg_count,
17351                                  x_msg_data      => x_msg_data,
17352                                  p_rgp_id        => l_rgp_id,
17353                                  p_rgpv_rec      => l_rgpv_rec,
17354                                  p_rulv_rec      => l_rulv_rec,
17355                                  x_rgpv_rec      => x_rgpv_rec,
17356                                  x_rulv_rec      => x_rulv_rec
17357                                 );
17358 
17359       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17360           raise header_rule_failed;
17361       END IF;
17362 
17363       debug_message('------>Rule: AMCOPO/AMAPRE processed');
17364 
17365       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
17366          l_rgp_id := x_rgpv_rec.id;
17367       END IF;
17368       l_rulv_rec := NULL;
17369 
17370       l_prtfl_assgn_group := p_header_rec.prtfl_assgn_group;
17371 
17372       IF (l_prtfl_assgn_group IS NULL
17373           AND
17374           p_header_rec.template_number IS NOT NULL) THEN
17375          get_contract_rules(
17376                             x_return_status  => x_return_status,
17377                             x_msg_count      => x_msg_count,
17378                             x_msg_data       => x_msg_data,
17379                             p_chr_id         => p_template_id,
17380                             p_cle_id         => NULL,
17381                             p_rgd_code       => 'AMCOPO',
17382                             p_rule_code      => 'AMPRAG',
17383                             x_rulv_tbl       => l_rulv_tbl,
17384                             x_rule_count     => l_rule_count
17385                            );
17386 
17387          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17388             RAISE header_rule_failed;
17389          END IF;
17390 
17391          IF (l_rule_count > 0) THEN
17392             l_prtfl_assgn_group       := NVL(l_prtfl_assgn_group, l_rulv_tbl(1).rule_information1);
17393          END IF;
17394       END IF;
17395 
17396       IF (l_prtfl_assgn_group IS NOT NULL) THEN
17397          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17398          l_rulv_rec.dnz_chr_id                := p_chr_id;
17399          l_rulv_rec.rule_information1         := l_prtfl_assgn_group;
17400          l_rulv_rec.rule_information_category := 'AMPRAG';
17401          l_rulv_rec.std_template_yn           := 'N';
17402          l_rulv_rec.warn_yn                   := 'N';
17403       END IF;
17404 
17405       create_rule_group_and_rule(
17406                                  x_return_status => x_return_status,
17407                                  x_msg_count     => x_msg_count,
17408                                  x_msg_data      => x_msg_data,
17409                                  p_rgp_id        => l_rgp_id,
17410                                  p_rgpv_rec      => l_rgpv_rec,
17411                                  p_rulv_rec      => l_rulv_rec,
17412                                  x_rgpv_rec      => x_rgpv_rec,
17413                                  x_rulv_rec      => x_rulv_rec
17414                                 );
17415 
17416       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17417           raise header_rule_failed;
17418       END IF;
17419 
17420       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
17421          l_rgp_id := x_rgpv_rec.id;
17422       END IF;
17423       debug_message('------>Rule: AMCOPO/AMPRAG processed');
17424       l_rulv_rec := NULL;
17425 
17426       l_prtfl_budget_amt_opt     := p_header_rec.prtfl_budget_amt_opt;
17427       l_prtfl_budget_fixed_amt   := TO_CHAR(p_header_rec.prtfl_budget_fixed_amt);
17428       l_prtfl_budget_amt_formula := p_header_rec.prtfl_budget_amt_formula;
17429 
17430       IF (l_prtfl_budget_amt_opt IS NULL
17431           OR
17432           l_prtfl_budget_fixed_amt IS NULL
17433           OR
17434           l_prtfl_budget_amt_formula IS NULL
17435           AND
17436           p_header_rec.template_number IS NOT NULL) THEN
17437          get_contract_rules(
17438                             x_return_status  => x_return_status,
17439                             x_msg_count      => x_msg_count,
17440                             x_msg_data       => x_msg_data,
17441                             p_chr_id         => p_template_id,
17442                             p_cle_id         => NULL,
17443                             p_rgd_code       => 'AMCOPO',
17444                             p_rule_code      => 'AMPRBA',
17445                             x_rulv_tbl       => l_rulv_tbl,
17446                             x_rule_count     => l_rule_count
17447                            );
17448 
17449          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17450             RAISE header_rule_failed;
17451          END IF;
17452 
17453          IF (l_rule_count > 0) THEN
17454             l_prtfl_budget_amt_opt     := NVL(l_prtfl_budget_amt_opt, l_rulv_tbl(1).rule_information1);
17455             l_prtfl_budget_fixed_amt   := NVL(l_prtfl_budget_fixed_amt, l_rulv_tbl(1).rule_information2);
17456             l_prtfl_budget_amt_formula := NVL(l_prtfl_budget_amt_formula, l_rulv_tbl(1).rule_information3);
17457          END IF;
17458       END IF;
17459 
17460       IF (l_prtfl_budget_amt_opt = 'NOT_APPLICABLE') THEN -- 4912795
17461         l_prtfl_budget_fixed_amt   := NULL;
17462         l_prtfl_budget_amt_formula := NULL;
17463       END IF;
17464 
17465       IF (l_prtfl_budget_amt_opt IS NOT NULL) THEN
17466          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17467          l_rulv_rec.dnz_chr_id                := p_chr_id;
17468          l_rulv_rec.rule_information1         := l_prtfl_budget_amt_opt;
17469          l_rulv_rec.rule_information_category := 'AMPRBA';
17470          l_rulv_rec.std_template_yn           := 'N';
17471          l_rulv_rec.warn_yn                   := 'N';
17472       END IF;
17473 
17474       IF (l_prtfl_budget_fixed_amt IS NOT NULL) THEN
17475          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17476          l_rulv_rec.dnz_chr_id                := p_chr_id;
17477          l_rulv_rec.rule_information2         := l_prtfl_budget_fixed_amt;
17478          l_rulv_rec.rule_information_category := 'AMPRBA';
17479          l_rulv_rec.std_template_yn           := 'N';
17480          l_rulv_rec.warn_yn                   := 'N';
17481       END IF;
17482 
17483       IF (l_prtfl_budget_amt_formula IS NOT NULL) THEN
17484          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17485          l_rulv_rec.dnz_chr_id                := p_chr_id;
17486          l_rulv_rec.rule_information3         := l_prtfl_budget_amt_formula;
17487          l_rulv_rec.rule_information_category := 'AMPRBA';
17488          l_rulv_rec.std_template_yn           := 'N';
17489          l_rulv_rec.warn_yn                   := 'N';
17490       END IF;
17491 
17492       create_rule_group_and_rule(
17493                                  x_return_status => x_return_status,
17494                                  x_msg_count     => x_msg_count,
17495                                  x_msg_data      => x_msg_data,
17496                                  p_rgp_id        => l_rgp_id,
17497                                  p_rgpv_rec      => l_rgpv_rec,
17498                                  p_rulv_rec      => l_rulv_rec,
17499                                  x_rgpv_rec      => x_rgpv_rec,
17500                                  x_rulv_rec      => x_rulv_rec
17501                                 );
17502 
17503       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17504           raise header_rule_failed;
17505       END IF;
17506 
17507       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
17508          l_rgp_id := x_rgpv_rec.id;
17509       END IF;
17510       debug_message('------>Rule: AMCOPO/AMPRBA processed');
17511       l_rulv_rec := NULL;
17512 
17513       l_prtfl_days_from_con_expr := p_header_rec.prtfl_days_from_con_expr;
17514 
17515       IF (l_prtfl_days_from_con_expr IS NULL
17516           AND
17517           p_header_rec.template_number IS NOT NULL) THEN
17518          get_contract_rules(
17519                             x_return_status  => x_return_status,
17520                             x_msg_count      => x_msg_count,
17521                             x_msg_data       => x_msg_data,
17522                             p_chr_id         => p_template_id,
17523                             p_cle_id         => NULL,
17524                             p_rgd_code       => 'AMCOPO',
17525                             p_rule_code      => 'AMPRED',
17526                             x_rulv_tbl       => l_rulv_tbl,
17527                             x_rule_count     => l_rule_count
17528                            );
17529 
17530          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17531             RAISE header_rule_failed;
17532          END IF;
17533 
17534          IF (l_rule_count > 0) THEN
17535             l_prtfl_days_from_con_expr := NVL(l_prtfl_days_from_con_expr, l_rulv_tbl(1).rule_information1);
17536          END IF;
17537       END IF;
17538 
17539       IF (l_prtfl_days_from_con_expr IS NOT NULL) THEN
17540          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17541          l_rulv_rec.dnz_chr_id                := p_chr_id;
17542          l_rulv_rec.rule_information1         := l_prtfl_days_from_con_expr;
17543          l_rulv_rec.rule_information_category := 'AMPRED';
17544          l_rulv_rec.std_template_yn           := 'N';
17545          l_rulv_rec.warn_yn                   := 'N';
17546       END IF;
17547 
17548       create_rule_group_and_rule(
17549                                  x_return_status => x_return_status,
17550                                  x_msg_count     => x_msg_count,
17551                                  x_msg_data      => x_msg_data,
17552                                  p_rgp_id        => l_rgp_id,
17553                                  p_rgpv_rec      => l_rgpv_rec,
17554                                  p_rulv_rec      => l_rulv_rec,
17555                                  x_rgpv_rec      => x_rgpv_rec,
17556                                  x_rulv_rec      => x_rulv_rec
17557                                 );
17558 
17559       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17560           raise header_rule_failed;
17561       END IF;
17562 
17563       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
17564          l_rgp_id := x_rgpv_rec.id;
17565       END IF;
17566       l_rulv_rec := NULL;
17567 
17568       l_prtfl_strategy := p_header_rec.prtfl_strategy;
17569 
17570       IF (l_prtfl_strategy IS NULL
17571           AND
17572           p_header_rec.template_number IS NOT NULL) THEN
17573          get_contract_rules(
17574                             x_return_status  => x_return_status,
17575                             x_msg_count      => x_msg_count,
17576                             x_msg_data       => x_msg_data,
17577                             p_chr_id         => p_template_id,
17578                             p_cle_id         => NULL,
17579                             p_rgd_code       => 'AMCOPO',
17580                             p_rule_code      => 'AMPRST',
17581                             x_rulv_tbl       => l_rulv_tbl,
17582                             x_rule_count     => l_rule_count
17583                            );
17584 
17585          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17586             RAISE header_rule_failed;
17587          END IF;
17588 
17589          IF (l_rule_count > 0) THEN
17590             l_prtfl_strategy := NVL(l_prtfl_strategy, l_rulv_tbl(1).rule_information1);
17591          END IF;
17592       END IF;
17593 
17594       IF (l_prtfl_strategy IS NOT NULL) THEN
17595          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17596          l_rulv_rec.dnz_chr_id                := p_chr_id;
17597          l_rulv_rec.rule_information1         := l_prtfl_strategy;
17598          l_rulv_rec.rule_information_category := 'AMPRST';
17599          l_rulv_rec.std_template_yn           := 'N';
17600          l_rulv_rec.warn_yn                   := 'N';
17601       END IF;
17602 
17603       create_rule_group_and_rule(
17604                                  x_return_status => x_return_status,
17605                                  x_msg_count     => x_msg_count,
17606                                  x_msg_data      => x_msg_data,
17607                                  p_rgp_id        => l_rgp_id,
17608                                  p_rgpv_rec      => l_rgpv_rec,
17609                                  p_rulv_rec      => l_rulv_rec,
17610                                  x_rgpv_rec      => x_rgpv_rec,
17611                                  x_rulv_rec      => x_rulv_rec
17612                                 );
17613 
17614       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17615           raise header_rule_failed;
17616       END IF;
17617 
17618       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
17619          l_rgp_id := x_rgpv_rec.id;
17620       END IF;
17621       debug_message('------>Rule: AMCOPO/AMPRST processed');
17622       l_rulv_rec := NULL;
17623 
17624 /*
17625  * Adding Taxes and Duties rule at contract header
17626  *
17627 */
17628       -- Rule Group LAHDTX
17629 
17630       l_rgpv_rec            := NULL;
17631       l_rgp_id              := NULL;
17632       l_rgpv_rec.rgd_code   := 'LAHDTX';
17633       l_rgpv_rec.chr_id     := p_chr_id;
17634       l_rgpv_rec.dnz_chr_id := p_chr_id;
17635       l_rgpv_rec.cle_id     := NULL;
17636       l_rgpv_rec.rgp_type   := 'KRG';
17637 
17638       l_rulv_rec := NULL;
17639 
17640       l_prop_tax_applicable           := p_header_rec.prop_tax_applicable;
17641       l_prop_tax_lease_rep            := p_header_rec.prop_tax_lease_rep;
17642 -- Added by rravikir (Fix for Bug 3947959)
17643       l_prop_tax_bill_method          := p_header_rec.prop_tax_bill_method;
17644 -- End
17645 
17646       IF (l_prop_tax_applicable IS NULL
17647           OR
17648           l_prop_tax_lease_rep IS NULL
17649 -- Added by rravikir (Fix for Bug 3947959)
17650           OR
17651           l_prop_tax_bill_method IS NULL
17652 -- End
17653           AND
17654           p_header_rec.template_number IS NOT NULL) THEN
17655          get_contract_rules(
17656                             x_return_status  => x_return_status,
17657                             x_msg_count      => x_msg_count,
17658                             x_msg_data       => x_msg_data,
17659                             p_chr_id         => p_template_id,
17660                             p_cle_id         => NULL,
17661                             p_rgd_code       => 'LAHDTX',
17662                             p_rule_code      => 'LAPRTX',
17663                             x_rulv_tbl       => l_rulv_tbl,
17664                             x_rule_count     => l_rule_count
17665                            );
17666 
17667          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17668             RAISE header_rule_failed;
17669          END IF;
17670 
17671          IF (l_rule_count > 0) THEN
17672             l_prop_tax_applicable := NVL(l_prop_tax_applicable, l_rulv_tbl(1).rule_information1);
17673             l_prop_tax_lease_rep  := NVL(l_prop_tax_lease_rep, l_rulv_tbl(1).rule_information2);
17674 -- Added by rravikir (Fix for Bug 3947959)
17675             l_prop_tax_bill_method := NVL(l_prop_tax_bill_method, l_rulv_tbl(1).rule_information3);
17676 -- End
17677          END IF;
17678       END IF;
17679 
17680       IF (l_prop_tax_applicable IS NOT NULL) THEN
17681          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17682          l_rulv_rec.dnz_chr_id                := p_chr_id;
17683          l_rulv_rec.rule_information1         := l_prop_tax_applicable;
17684          l_rulv_rec.rule_information_category := 'LAPRTX';
17685          l_rulv_rec.std_template_yn           := 'N';
17686          l_rulv_rec.warn_yn                   := 'N';
17687       END IF;
17688 
17689       IF (l_prop_tax_lease_rep IS NOT NULL) THEN
17690          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17691          l_rulv_rec.dnz_chr_id                := p_chr_id;
17692          l_rulv_rec.rule_information2         := l_prop_tax_lease_rep;
17693          l_rulv_rec.rule_information_category := 'LAPRTX';
17694          l_rulv_rec.std_template_yn           := 'N';
17695          l_rulv_rec.warn_yn                   := 'N';
17696       END IF;
17697 
17698 -- Added by rravikir (Fix for Bug 3947959)
17699       IF (l_prop_tax_bill_method IS NOT NULL) THEN
17700          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17701          l_rulv_rec.dnz_chr_id                := p_chr_id;
17702          l_rulv_rec.rule_information3         := l_prop_tax_bill_method;
17703          l_rulv_rec.rule_information_category := 'LAPRTX';
17704          l_rulv_rec.std_template_yn           := 'N';
17705          l_rulv_rec.warn_yn                   := 'N';
17706       END IF;
17707 -- End
17708       create_rule_group_and_rule(
17709                                  x_return_status => x_return_status,
17710                                  x_msg_count     => x_msg_count,
17711                                  x_msg_data      => x_msg_data,
17712                                  p_rgp_id        => l_rgp_id,
17713                                  p_rgpv_rec      => l_rgpv_rec,
17714                                  p_rulv_rec      => l_rulv_rec,
17715                                  x_rgpv_rec      => x_rgpv_rec,
17716                                  x_rulv_rec      => x_rulv_rec
17717                                 );
17718 
17719       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17720           raise header_rule_failed;
17721       END IF;
17722 
17723       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
17724          l_rgp_id := x_rgpv_rec.id;
17725       END IF;
17726       debug_message('------>Rule: LAHDTX/LAPRTX processed');
17727       l_rulv_rec := NULL;
17728 
17729       l_mex_tax_sub_basic_wthld       := p_header_rec.mex_tax_sub_basic_wthld;
17730       l_mex_tax_calc_formula          := p_header_rec.mex_tax_calc_formula;
17731 
17732 
17733       IF (l_mex_tax_sub_basic_wthld IS NULL
17734           OR
17735           l_mex_tax_calc_formula IS NULL
17736           AND
17737           p_header_rec.template_number IS NOT NULL) THEN
17738          get_contract_rules(
17739                             x_return_status  => x_return_status,
17740                             x_msg_count      => x_msg_count,
17741                             x_msg_data       => x_msg_data,
17742                             p_chr_id         => p_template_id,
17743                             p_cle_id         => NULL,
17744                             p_rgd_code       => 'LAHDTX',
17745                             p_rule_code      => 'LAMETX',
17746                             x_rulv_tbl       => l_rulv_tbl,
17747                             x_rule_count     => l_rule_count
17748                            );
17749 
17750          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17751             RAISE header_rule_failed;
17752          END IF;
17753 
17754          IF (l_rule_count > 0) THEN
17755             l_mex_tax_sub_basic_wthld := NVL(l_mex_tax_sub_basic_wthld, l_rulv_tbl(1).rule_information1);
17756             l_mex_tax_calc_formula  := NVL(l_mex_tax_calc_formula, l_rulv_tbl(1).rule_information2);
17757          END IF;
17758       END IF;
17759 
17760       IF (l_mex_tax_sub_basic_wthld IS NOT NULL) THEN
17761          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17762          l_rulv_rec.dnz_chr_id                := p_chr_id;
17763          l_rulv_rec.rule_information1         := l_mex_tax_sub_basic_wthld;
17764          l_rulv_rec.rule_information_category := 'LAMETX';
17765          l_rulv_rec.std_template_yn           := 'N';
17766          l_rulv_rec.warn_yn                   := 'N';
17767       END IF;
17768 
17769       IF (l_mex_tax_calc_formula IS NOT NULL) THEN
17770          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17771          l_rulv_rec.dnz_chr_id                := p_chr_id;
17772          l_rulv_rec.rule_information2         := l_mex_tax_calc_formula;
17773          l_rulv_rec.rule_information_category := 'LAMETX';
17774          l_rulv_rec.std_template_yn           := 'N';
17775          l_rulv_rec.warn_yn                   := 'N';
17776       END IF;
17777 
17778       create_rule_group_and_rule(
17779                                  x_return_status => x_return_status,
17780                                  x_msg_count     => x_msg_count,
17781                                  x_msg_data      => x_msg_data,
17782                                  p_rgp_id        => l_rgp_id,
17783                                  p_rgpv_rec      => l_rgpv_rec,
17784                                  p_rulv_rec      => l_rulv_rec,
17785                                  x_rgpv_rec      => x_rgpv_rec,
17786                                  x_rulv_rec      => x_rulv_rec
17787                                 );
17788 
17789       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17790           raise header_rule_failed;
17791       END IF;
17792 
17793       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
17794          l_rgp_id := x_rgpv_rec.id;
17795       END IF;
17796       debug_message('------>Rule: LAHDTX/LAMETX processed');
17797       l_rulv_rec := NULL;
17798 
17799       l_aus_tax_stamp_duty            := p_header_rec.aus_tax_stamp_duty;
17800 
17801       IF (l_aus_tax_stamp_duty IS NULL
17802           AND
17803           p_header_rec.template_number IS NOT NULL) THEN
17804          get_contract_rules(
17805                             x_return_status  => x_return_status,
17806                             x_msg_count      => x_msg_count,
17807                             x_msg_data       => x_msg_data,
17808                             p_chr_id         => p_template_id,
17809                             p_cle_id         => NULL,
17810                             p_rgd_code       => 'LAHDTX',
17811                             p_rule_code      => 'LAAUTX',
17812                             x_rulv_tbl       => l_rulv_tbl,
17813                             x_rule_count     => l_rule_count
17814                            );
17815 
17816          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17817             RAISE header_rule_failed;
17818          END IF;
17819 
17820          IF (l_rule_count > 0) THEN
17821             l_aus_tax_stamp_duty := NVL(l_aus_tax_stamp_duty, l_rulv_tbl(1).rule_information1);
17822          END IF;
17823       END IF;
17824 
17825       IF (l_aus_tax_stamp_duty IS NOT NULL) THEN
17826          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17827          l_rulv_rec.dnz_chr_id                := p_chr_id;
17828          l_rulv_rec.rule_information1         := l_aus_tax_stamp_duty;
17829          l_rulv_rec.rule_information_category := 'LAAUTX';
17830          l_rulv_rec.std_template_yn           := 'N';
17831          l_rulv_rec.warn_yn                   := 'N';
17832       END IF;
17833 
17834       create_rule_group_and_rule(
17835                                  x_return_status => x_return_status,
17836                                  x_msg_count     => x_msg_count,
17837                                  x_msg_data      => x_msg_data,
17838                                  p_rgp_id        => l_rgp_id,
17839                                  p_rgpv_rec      => l_rgpv_rec,
17840                                  p_rulv_rec      => l_rulv_rec,
17841                                  x_rgpv_rec      => x_rgpv_rec,
17842                                  x_rulv_rec      => x_rulv_rec
17843                                 );
17844 
17845       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17846           raise header_rule_failed;
17847       END IF;
17848 
17849       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
17850          l_rgp_id := x_rgpv_rec.id;
17851       END IF;
17852       debug_message('------>Rule: LAHDTX/LAAUTX processed');
17853       l_rulv_rec := NULL;
17854 
17855       l_st_upd_lines_from_contract           := p_header_rec.st_update_lines_from_contract;
17856       l_st_interest_disclosed                := p_header_rec.st_interest_disclosed;
17857       l_st_transfer_of_title                 := p_header_rec.st_transfer_of_title;
17858       l_st_sale_and_lease_back               := p_header_rec.st_sale_and_lease_back;
17859       l_st_purchase_of_lease                 := p_header_rec.st_purchase_of_lease;
17860       l_st_equipment_usage                   := p_header_rec.st_equipment_usage;
17861       l_st_equipment_age                     := p_header_rec.st_equipment_age;
17862 
17863 
17864       IF (l_st_upd_lines_from_contract IS NULL
17865           OR
17866           l_st_interest_disclosed IS NULL
17867           OR
17868           l_st_transfer_of_title IS NULL
17869           OR
17870           l_st_sale_and_lease_back IS NULL
17871           OR
17872           l_st_purchase_of_lease IS NULL
17873           OR
17874           l_st_equipment_usage IS NULL
17875           OR
17876           l_st_equipment_age IS NULL
17877           AND
17878           p_header_rec.template_number IS NOT NULL) THEN
17879          get_contract_rules(
17880                             x_return_status  => x_return_status,
17881                             x_msg_count      => x_msg_count,
17882                             x_msg_data       => x_msg_data,
17883                             p_chr_id         => p_template_id,
17884                             p_cle_id         => NULL,
17885                             p_rgd_code       => 'LAHDTX',
17886                             p_rule_code      => 'LASTCL',
17887                             x_rulv_tbl       => l_rulv_tbl,
17888                             x_rule_count     => l_rule_count
17889                            );
17890 
17891          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17892             RAISE header_rule_failed;
17893          END IF;
17894 
17895          IF (l_rule_count > 0) THEN
17896             l_st_upd_lines_from_contract    := NVL(l_st_upd_lines_from_contract, l_rulv_tbl(1).rule_information1);
17897             l_st_interest_disclosed         := NVL(l_st_interest_disclosed, l_rulv_tbl(1).rule_information2);
17898             l_st_transfer_of_title          := NVL(l_st_transfer_of_title, l_rulv_tbl(1).rule_information3);
17899             l_st_sale_and_lease_back        := NVL(l_st_sale_and_lease_back, l_rulv_tbl(1).rule_information4);
17900             l_st_purchase_of_lease          := NVL(l_st_purchase_of_lease, l_rulv_tbl(1).rule_information5);
17901             l_st_equipment_usage            := NVL(l_st_equipment_usage, l_rulv_tbl(1).rule_information6);
17902             l_st_equipment_age              := NVL(l_st_equipment_age, l_rulv_tbl(1).rule_information7);
17903          END IF;
17904       END IF;
17905 
17906       IF (l_st_upd_lines_from_contract IS NOT NULL) THEN
17907          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17908          l_rulv_rec.dnz_chr_id                := p_chr_id;
17909          l_rulv_rec.rule_information1         := l_st_upd_lines_from_contract;
17910          l_rulv_rec.rule_information_category := 'LASTCL';
17911          l_rulv_rec.std_template_yn           := 'N';
17912          l_rulv_rec.warn_yn                   := 'N';
17913       END IF;
17914 
17915       IF (l_st_interest_disclosed IS NOT NULL) THEN
17916          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17917          l_rulv_rec.dnz_chr_id                := p_chr_id;
17918          l_rulv_rec.rule_information2         := l_st_interest_disclosed;
17919          l_rulv_rec.rule_information_category := 'LASTCL';
17920          l_rulv_rec.std_template_yn           := 'N';
17921          l_rulv_rec.warn_yn                   := 'N';
17922       END IF;
17923 
17924       IF (l_st_transfer_of_title IS NOT NULL) THEN
17925          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17926          l_rulv_rec.dnz_chr_id                := p_chr_id;
17927          l_rulv_rec.rule_information3         := l_st_transfer_of_title;
17928          l_rulv_rec.rule_information_category := 'LASTCL';
17929          l_rulv_rec.std_template_yn           := 'N';
17930          l_rulv_rec.warn_yn                   := 'N';
17931       END IF;
17932 
17933       IF (l_st_sale_and_lease_back IS NOT NULL) THEN
17934          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17935          l_rulv_rec.dnz_chr_id                := p_chr_id;
17936          l_rulv_rec.rule_information4         := l_st_sale_and_lease_back;
17937          l_rulv_rec.rule_information_category := 'LASTCL';
17938          l_rulv_rec.std_template_yn           := 'N';
17939          l_rulv_rec.warn_yn                   := 'N';
17940       END IF;
17941 
17942       IF (l_st_purchase_of_lease IS NOT NULL) THEN
17943          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17944          l_rulv_rec.dnz_chr_id                := p_chr_id;
17945          l_rulv_rec.rule_information5         := l_st_purchase_of_lease;
17946          l_rulv_rec.rule_information_category := 'LASTCL';
17947          l_rulv_rec.std_template_yn           := 'N';
17948          l_rulv_rec.warn_yn                   := 'N';
17949       END IF;
17950 
17951       IF (l_st_equipment_usage IS NOT NULL) THEN
17952          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17953          l_rulv_rec.dnz_chr_id                := p_chr_id;
17954          l_rulv_rec.rule_information6         := l_st_equipment_usage;
17955          l_rulv_rec.rule_information_category := 'LASTCL';
17956          l_rulv_rec.std_template_yn           := 'N';
17957          l_rulv_rec.warn_yn                   := 'N';
17958       END IF;
17959 
17960       IF (l_st_equipment_age IS NOT NULL) THEN
17961          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
17962          l_rulv_rec.dnz_chr_id                := p_chr_id;
17963          l_rulv_rec.rule_information7         := l_st_equipment_age;
17964          l_rulv_rec.rule_information_category := 'LASTCL';
17965          l_rulv_rec.std_template_yn           := 'N';
17966          l_rulv_rec.warn_yn                   := 'N';
17967       END IF;
17968 
17969       create_rule_group_and_rule(
17970                                  x_return_status => x_return_status,
17971                                  x_msg_count     => x_msg_count,
17972                                  x_msg_data      => x_msg_data,
17973                                  p_rgp_id        => l_rgp_id,
17974                                  p_rgpv_rec      => l_rgpv_rec,
17975                                  p_rulv_rec      => l_rulv_rec,
17976                                  x_rgpv_rec      => x_rgpv_rec,
17977                                  x_rulv_rec      => x_rulv_rec
17978                                 );
17979 
17980       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
17981           raise header_rule_failed;
17982       END IF;
17983 
17984       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
17985          l_rgp_id := x_rgpv_rec.id;
17986       END IF;
17987       debug_message('------>Rule: LAHDTX/LASTCL processed');
17988       l_rulv_rec := NULL;
17989 
17990       l_st_asset_upfront_tax                    := p_header_rec.st_asset_upfront_tax;
17991       l_st_bill_stream_type_code                := p_header_rec.st_bill_stream_type_code;
17992       l_st_bill_stream_purpose_code             := p_header_rec.st_bill_stream_purpose_code;
17993       l_st_bill_stream_id                       := NULL;
17994       l_st_fin_stream_type_code                 := p_header_rec.st_fin_stream_type_code;
17995       l_st_fin_stream_purpose_code              := p_header_rec.st_fin_stream_purpose_code;
17996       l_st_fin_stream_id                        := NULL;
17997       l_st_cap_stream_type_code                 := p_header_rec.st_cap_stream_type_code;
17998       l_st_cap_stream_purpose_code              := p_header_rec.st_cap_stream_purpose_code;
17999       l_st_cap_stream_id                        := NULL;
18000 
18001       --R12B ebTax change
18002       l_st_tax_schedule_applies_flag            := p_header_rec.st_tax_schedule_applies_flag;
18003 
18004       IF (l_st_bill_stream_type_code IS NOT NULL
18005           AND
18006           l_st_bill_stream_purpose_code IS NOT NULL) THEN
18007          check_stream_type_code(
18008                                 x_return_status    => x_return_status,
18009                                 x_msg_count        => x_msg_count,
18010                                 x_msg_data         => x_msg_data,
18011                                 p_stream_type_code => l_st_bill_stream_type_code,
18012                                 p_stream_purpose   => l_st_bill_stream_purpose_code,
18013                                 x_id1              => l_id1,
18014                                 x_name             => l_st_stream_name
18015                                );
18016          l_st_bill_stream_id := l_id1;
18017 
18018          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
18019             okl_api.set_message(
18020                                 G_APP_NAME,
18021                                 G_INVALID_VALUE,
18022                                 'CONTRACT_NUM',
18023                                 p_header_rec.contract_number_old,
18024                                 'COL_NAME',
18025                                 'ST_BILL_STREAM_TYPE_CODE, ST_BILL_STREAM_PURPOSE_CODE',
18026                                 'COL_VALUE',
18027                                  l_st_bill_stream_type_code||', '||l_st_bill_stream_purpose_code
18028                                 );
18029              x_return_status := OKL_API.G_RET_STS_ERROR;
18030              RAISE header_rule_failed;
18031          END IF;
18032       END IF;
18033 
18034       IF (l_st_fin_stream_type_code IS NOT NULL
18035           AND
18036           l_st_fin_stream_purpose_code IS NOT NULL) THEN
18037          check_stream_type_code(
18038                                 x_return_status    => x_return_status,
18039                                 x_msg_count        => x_msg_count,
18040                                 x_msg_data         => x_msg_data,
18041                                 p_stream_type_code => l_st_fin_stream_type_code,
18042                                 p_stream_purpose   => l_st_fin_stream_purpose_code,
18043                                 x_id1              => l_id1,
18044                                 x_name             => l_st_stream_name
18045                                );
18046          l_st_fin_stream_id := l_id1;
18047 
18048          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
18049             okl_api.set_message(
18050                                 G_APP_NAME,
18051                                 G_INVALID_VALUE,
18052                                 'CONTRACT_NUM',
18053                                 p_header_rec.contract_number_old,
18054                                 'COL_NAME',
18055                                 'ST_FIN_STREAM_TYPE_CODE, ST_FIN_STREAM_PURPOSE_CODE',
18056                                 'COL_VALUE',
18057                                  l_st_fin_stream_type_code||', '||l_st_fin_stream_purpose_code
18058                                 );
18059              x_return_status := OKL_API.G_RET_STS_ERROR;
18060              RAISE header_rule_failed;
18061          END IF;
18062       END IF;
18063 
18064       IF (l_st_cap_stream_type_code IS NOT NULL
18065           AND
18066           l_st_cap_stream_purpose_code IS NOT NULL) THEN
18067          check_stream_type_code(
18068                                 x_return_status    => x_return_status,
18069                                 x_msg_count        => x_msg_count,
18070                                 x_msg_data         => x_msg_data,
18071                                 p_stream_type_code => l_st_cap_stream_type_code,
18072                                 p_stream_purpose   => l_st_cap_stream_purpose_code,
18073                                 x_id1              => l_id1,
18074                                 x_name             => l_st_stream_name
18075                                );
18076          l_st_cap_stream_id := l_id1;
18077 
18078          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
18079             okl_api.set_message(
18080                                 G_APP_NAME,
18081                                 G_INVALID_VALUE,
18082                                 'CONTRACT_NUM',
18083                                 p_header_rec.contract_number_old,
18084                                 'COL_NAME',
18085                                 'ST_CAP_STREAM_TYPE_CODE, ST_CAP_STREAM_PURPOSE_CODE',
18086                                 'COL_VALUE',
18087                                  l_st_cap_stream_type_code||', '||l_st_cap_stream_purpose_code
18088                                 );
18089              x_return_status := OKL_API.G_RET_STS_ERROR;
18090              RAISE header_rule_failed;
18091          END IF;
18092       END IF;
18093 
18094       IF (l_st_asset_upfront_tax IS NULL
18095           OR
18096           l_st_bill_stream_ID IS NULL
18097           OR
18098           l_st_fin_stream_ID IS NULL
18099           OR
18100           l_st_cap_stream_ID IS NULL
18101           OR
18102           l_st_tax_schedule_applies_flag is NULL -- R12B ebTax change
18103           AND
18104           p_header_rec.template_number IS NOT NULL) THEN
18105 
18106          get_contract_rules(
18107                             x_return_status  => x_return_status,
18108                             x_msg_count      => x_msg_count,
18109                             x_msg_data       => x_msg_data,
18110                             p_chr_id         => p_template_id,
18111                             p_cle_id         => NULL,
18112                             p_rgd_code       => 'LAHDTX',
18113                             p_rule_code      => 'LASTPR',
18114                             x_rulv_tbl       => l_rulv_tbl,
18115                             x_rule_count     => l_rule_count
18116                            );
18117 
18118          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
18119             RAISE header_rule_failed;
18120          END IF;
18121 
18122          IF (l_rule_count > 0) THEN
18123             l_st_asset_upfront_tax          := NVL(l_st_asset_upfront_tax, l_rulv_tbl(1).rule_information1);
18124             l_st_bill_stream_id             := NVL(l_st_bill_stream_id, l_rulv_tbl(1).rule_information2);
18125             l_st_fin_stream_id              := NVL(l_st_fin_stream_id, l_rulv_tbl(1).rule_information3);
18126             l_st_cap_stream_id              := NVL(l_st_cap_stream_id, l_rulv_tbl(1).rule_information4);
18127             --R12B ebtax change
18128             l_st_tax_schedule_applies_flag  := NVL(l_st_tax_schedule_applies_flag, l_rulv_tbl(1).rule_information5);
18129          END IF;
18130       END IF;
18131 
18132       IF (l_st_asset_upfront_tax 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_information1         := l_st_asset_upfront_tax;
18136          l_rulv_rec.rule_information_category := 'LASTPR';
18137          l_rulv_rec.std_template_yn           := 'N';
18138          l_rulv_rec.warn_yn                   := 'N';
18139       END IF;
18140 
18141       IF (l_st_bill_stream_id 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_information2         := l_st_bill_stream_id;
18145          l_rulv_rec.rule_information_category := 'LASTPR';
18146          l_rulv_rec.std_template_yn           := 'N';
18147          l_rulv_rec.warn_yn                   := 'N';
18148       END IF;
18149 
18150       IF (l_st_fin_stream_id IS NOT NULL) THEN
18151          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
18152          l_rulv_rec.dnz_chr_id                := p_chr_id;
18153          l_rulv_rec.rule_information3         := l_st_fin_stream_id;
18154          l_rulv_rec.rule_information_category := 'LASTPR';
18155          l_rulv_rec.std_template_yn           := 'N';
18156          l_rulv_rec.warn_yn                   := 'N';
18157       END IF;
18158 
18159       IF (l_st_cap_stream_id IS NOT NULL) THEN
18160          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
18161          l_rulv_rec.dnz_chr_id                := p_chr_id;
18162          l_rulv_rec.rule_information4         := l_st_cap_stream_id;
18163          l_rulv_rec.rule_information_category := 'LASTPR';
18164          l_rulv_rec.std_template_yn           := 'N';
18165          l_rulv_rec.warn_yn                   := 'N';
18166       END IF;
18167 
18168       -- R12 ebtax change - START
18169 
18170       IF (l_st_tax_schedule_applies_flag IS NOT NULL) THEN
18171          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
18172          l_rulv_rec.dnz_chr_id                := p_chr_id;
18173          l_rulv_rec.rule_information5         := l_st_tax_schedule_applies_flag;
18174          l_rulv_rec.rule_information_category := 'LASTPR';
18175          l_rulv_rec.std_template_yn           := 'N';
18176          l_rulv_rec.warn_yn                   := 'N';
18177       ELSIF (l_st_tax_schedule_applies_flag IS NULL) THEN
18178 
18179          -- R12B ebTax: Fetch Tax Schedule Flag from system options
18180          -- if it was not supplied during import
18181 
18182          OPEN c_tax_schedule_yn;
18183          FETCH c_tax_schedule_yn INTO l_tax_schedule_yn;
18184          CLOSE c_tax_schedule_yn;
18185 
18186           l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
18187          l_rulv_rec.dnz_chr_id                := p_chr_id;
18188          l_rulv_rec.rule_information5         := l_tax_schedule_yn;
18189          l_rulv_rec.rule_information_category := 'LASTPR';
18190          l_rulv_rec.std_template_yn           := 'N';
18191          l_rulv_rec.warn_yn                   := 'N';
18192       END IF;
18193 
18194       -- R12 ebtax change - END
18195 
18196       create_rule_group_and_rule(
18197                                  x_return_status => x_return_status,
18198                                  x_msg_count     => x_msg_count,
18199                                  x_msg_data      => x_msg_data,
18200                                  p_rgp_id        => l_rgp_id,
18201                                  p_rgpv_rec      => l_rgpv_rec,
18202                                  p_rulv_rec      => l_rulv_rec,
18203                                  x_rgpv_rec      => x_rgpv_rec,
18204                                  x_rulv_rec      => x_rulv_rec
18205                                 );
18206 
18207       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
18208           raise header_rule_failed;
18209       END IF;
18210 
18211       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
18212          l_rgp_id := x_rgpv_rec.id;
18213       END IF;
18214       debug_message('------>Rule: LAHDTX/LASTPR processed');
18215       l_rulv_rec := NULL;
18216       return;
18217 
18218    EXCEPTION
18219 
18220      WHEN header_rule_failed THEN
18221          x_return_status := OKL_API.G_RET_STS_ERROR;
18222          debug_message('------>Error with: '||l_rgpv_rec.rgd_code);
18223          debug_message('------>Rule Catg: '|| l_rulv_rec.rule_information_category);
18224 
18225       WHEN OTHERS THEN
18226         okl_api.set_message(
18227                             G_APP_NAME,
18228                             G_UNEXPECTED_ERROR,
18229                             'OKL_SQLCODE',
18230                             SQLCODE,
18231                             'OKL_SQLERRM',
18232                             SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
18233                            );
18234 
18235         x_return_status := OKL_API.G_RET_STS_ERROR;
18236         debug_message('Others : '||l_progress);
18237 
18238    END create_header_rules;
18239 
18240 ------------------------------------------------------------------------------
18241 -- PROCEDURE create_contact
18242 -- It creates contact and
18243 -- stacks Error, if any, and returns ERROR status to calling process.
18244 -- Calls:
18245 --  None
18246 -- Called By:
18247 --  load_input_record
18248 ------------------------------------------------------------------------------
18249    PROCEDURE create_contact(
18250                             x_return_status       OUT NOCOPY VARCHAR2,
18251                             x_msg_count           OUT NOCOPY NUMBER,
18252                             x_msg_data            OUT NOCOPY VARCHAR2,
18253                             p_contract_header_id  IN  okc_k_headers_v.id%TYPE,
18254                             p_contract_number_old IN  okl_header_interface.contract_number_old%TYPE,
18255                             p_salesperson_id      IN  okl_header_interface.salesperson_id%TYPE,
18256                             p_salesperson_name    IN  okl_header_interface.salesperson_name%TYPE,
18257                             p_authoring_org_id    IN  okl_header_interface.authoring_org_id%TYPE,
18258                             p_lessor_id           IN  NUMBER
18259                            ) IS
18260 
18261    l_proc_name      VARCHAR2(35) := 'CREATE_CONTRACT';
18262    x_salesperson_id NUMBER;
18263    l_ctcv_rec       OKL_OKC_MIGRATION_PVT.ctcv_rec_type;
18264    x_ctcv_rec       OKL_OKC_MIGRATION_PVT.ctcv_rec_type;
18265    l_id             NUMBER;
18266    contact_failed   EXCEPTION;
18267 
18268    CURSOR sale_csr (p_salesrep_id   NUMBER,
18269                     p_salesrep_name VARCHAR2,
18270                     p_org_id        NUMBER) IS
18271    SELECT id1
18272    FROM   okx_salesreps_v
18273    WHERE  (( id1 = p_salesrep_id
18274              AND
18275              p_salesrep_id IS NOT NULL
18276            )
18277            OR
18278            ( name = p_salesrep_name
18279              AND
18280              p_salesrep_name IS NOT NULL
18281            )
18282           )
18283    AND    org_id = p_org_id;
18284 
18285    BEGIN
18286 
18287      IF (p_salesperson_id   IS NOT NULL
18288          OR
18289          p_salesperson_name IS NOT NULL) THEN
18290         OPEN sale_csr (p_salesperson_id,
18291                        p_salesperson_name,
18292                        p_authoring_org_id);
18293         FETCH sale_csr INTO l_id;
18294         IF sale_csr%NOTFOUND THEN
18295          okl_api.set_message(
18296                             G_APP_NAME,
18297                             G_INVALID_VALUE,
18298                             'COL_NAME',
18299                             'SALESPERSON_NAME, ID',
18300                             'COL_VALUE',
18301                             p_salesperson_name||', '||p_salesperson_id,
18302                             'CONTRACT_NUM',
18303                             p_contract_number_old
18304                            );
18305            RAISE contact_failed;
18306         END IF;
18307         CLOSE sale_csr;
18308 
18309         x_salesperson_id := l_id;
18310      END IF;
18311 
18312 
18313      IF (x_salesperson_id IS NOT NULL) THEN
18314         l_ctcv_rec.cpl_id            := p_lessor_id;
18315         l_ctcv_rec.dnz_chr_id        := p_contract_header_id;
18316         l_ctcv_rec.cro_code          := 'SALESPERSON';
18317         l_ctcv_rec.jtot_object1_code := 'OKX_SALEPERS';
18318         l_ctcv_rec.object1_id1       := x_salesperson_id;
18319         l_ctcv_rec.object1_id2       := '#';
18320 
18321         OKL_OKC_MIGRATION_PVT.create_contact(
18322                                               p_api_version   => 1.0,
18323                                               x_return_status => x_return_status,
18324                                               x_msg_count     => x_msg_count,
18325                                               x_msg_data      => x_msg_data,
18326                                               p_ctcv_rec      => l_ctcv_rec,
18327                                               x_ctcv_rec      => x_ctcv_rec);
18328         IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
18329             x_return_status := OKL_API.G_RET_STS_ERROR;
18330             raise contact_failed;
18331         END IF;
18332 
18333      END IF;
18334 
18335      return;
18336 
18337    EXCEPTION
18338      WHEN contact_failed THEN
18339          x_return_status := OKL_API.G_RET_STS_ERROR;
18340 
18341      WHEN OTHERS THEN
18342         okl_api.set_message(
18343                             G_APP_NAME,
18344                             G_UNEXPECTED_ERROR,
18345                             'OKL_SQLCODE',
18346                             SQLCODE,
18347                             'OKL_SQLERRM',
18348                             SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
18349                            );
18350 
18351         x_return_status := OKL_API.G_RET_STS_ERROR;
18352 
18353 
18354    END create_contact;
18355 
18356 ------------------------------------------------------------------------------
18357 -- PROCEDURE get_ship_to_site
18358 -- It gets Ship to site id from number and
18359 -- stacks Error, if any, and returns ERROR status to calling process.
18360 -- Calls:
18361 --  None
18362 -- Called By:
18363 --  process_party_role
18364 ------------------------------------------------------------------------------
18365    PROCEDURE get_ship_to_site(
18366                               x_return_status                OUT NOCOPY VARCHAR2,
18367                               x_msg_count                    OUT NOCOPY NUMBER,
18368                               x_msg_data                     OUT NOCOPY VARCHAR2,
18369                               p_contract_number              IN  okc_k_headers_v.contract_number%TYPE,
18370                               p_line_number                  IN  okc_k_lines_v.line_number%TYPE,
18371                               p_auth_org_id                  IN  NUMBER,
18372                               p_ship_to_site_number          IN  okx_party_site_uses_v.party_site_number%TYPE,
18373                               p_ship_to_site_id              IN  okx_party_site_uses_v.party_site_id%TYPE,
18374                               x_ship_to_site_id              OUT NOCOPY okx_party_site_uses_v.party_site_id%TYPE
18375                              ) IS
18376 
18377    CURSOR ship_csr (p_site_id      NUMBER,
18378                     p_site_number  VARCHAR2,
18379                     p_customer_id  NUMBER) IS
18380    SELECT party_site_id
18381    FROM   okx_party_site_uses_v
18382    WHERE  ((party_site_number = p_site_number
18383             AND
18384             p_site_number IS NOT NULL)
18385             OR
18386             (id1 = p_site_id
18387              AND
18388              p_site_id IS NOT NULL
18389             )
18390            )
18391    AND    site_use_type = 'SHIP_TO'
18392    AND    party_id      = p_customer_id
18393    AND    status        = 'A';
18394 
18395    CURSOR cust_ship_csr (p_party_site_id NUMBER,
18396                          p_cust_acct_id  NUMBER,
18397                          p_org_id        NUMBER) IS
18398    SELECT site_use.id1
18399    FROM   okx_cust_site_uses_v site_use,
18400           hz_cust_acct_sites_all site
18401    WHERE  site.cust_acct_site_id = site_use.cust_acct_site_id
18402    AND    site_use.party_site_id         = p_party_site_id
18403    AND    site_use.org_id                = p_org_id
18404    AND    site.org_id                    = p_org_id
18405    AND    site_use.site_use_code         = 'SHIP_TO'
18406    AND    site_use.cust_account_id       = p_cust_acct_id
18407    AND    site_use.b_status              = 'A'
18408    AND    site.status                    = 'A';
18409 
18410    l_proc_name     VARCHAR2(35) := 'GET_SHIP_TO_SITE';
18411    l_cust_site_id  NUMBER;
18412    l_party_site_id NUMBER;
18413    ship_failed     EXCEPTION;
18414 
18415    BEGIN
18416 
18417       x_return_status := OKL_API.G_RET_STS_SUCCESS;
18418       debug_message(l_proc_name);
18419       debug_message('Customer: '|| g_customer_id);
18420       debug_message('Cust Acc: '|| g_customer_account_id);
18421       debug_message('p_ship_to_site_id: '|| p_ship_to_site_id);
18422 
18423       OPEN ship_csr (p_ship_to_site_id,
18424                      p_ship_to_site_number,
18425                      g_customer_id);
18426       FETCH ship_csr INTO l_party_site_id;
18427       IF (ship_csr%NOTFOUND) THEN
18428          RAISE ship_failed;
18429       END IF;
18430       CLOSE ship_csr;
18431 
18432       debug_message('Party Site: '||l_party_site_id);
18433       debug_message('Org : '||p_auth_org_id);
18434       OPEN cust_ship_csr (l_party_site_id,
18435                           g_customer_account_id,
18436                           p_auth_org_id);
18437       FETCH cust_ship_csr INTO l_cust_site_id;
18438       IF (cust_ship_csr%NOTFOUND) THEN
18439          RAISE ship_failed;
18440       END IF;
18441       CLOSE cust_ship_csr;
18442 
18443       debug_message('Cust Site: ' || l_cust_site_id);
18444       x_ship_to_site_id := l_cust_site_id;
18445 
18446       RETURN;
18447 
18448   EXCEPTION
18449      WHEN ship_failed THEN
18450         IF (ship_csr%ISOPEN) THEN
18451            CLOSE ship_csr;
18452         END IF;
18453         IF (cust_ship_csr%ISOPEN) THEN
18454            CLOSE cust_ship_csr;
18455         END IF;
18456         okl_api.set_message(
18457                             G_APP_NAME,
18458                             G_INVALID_VALUE,
18459                             'COL_NAME',
18460                             'SHIP_TO_SITE, ID',
18461                             'COL_VALUE',
18462                             p_ship_to_site_number||', '||p_ship_to_site_id,
18463                             'CONTRACT_NUM',
18464                             p_contract_number||'/'||p_line_number
18465                            );
18466         x_return_status := OKL_API.G_RET_STS_ERROR;
18467 
18468    END get_ship_to_site;
18469 
18470 ------------------------------------------------------------------------------
18471 -- PROCEDURE get_guarantor_address
18472 -- It gets Gurarantor Address ID from given address and
18473 -- stacks Error, if any, and returns ERROR status to calling process.
18474 -- Calls:
18475 --  None
18476 -- Called By:
18477 --  process_party_role
18478 ------------------------------------------------------------------------------
18479    PROCEDURE get_guarantor_address(
18480                                    x_return_status                OUT NOCOPY VARCHAR2,
18481                                    x_msg_count                    OUT NOCOPY NUMBER,
18482                                    x_msg_data                     OUT NOCOPY VARCHAR2,
18483                                    p_contract_number              IN  okc_k_headers_v.contract_number%TYPE,
18484                                    p_line_number                  IN  okc_k_lines_v.line_number%TYPE,
18485                                    p_guarantor_site_number        IN  okl_party_roles_interface.guarantor_site_number%TYPE,
18486                                    p_guarantor_site_id            IN  okl_party_roles_interface.guarantor_site_id%TYPE,
18487                                    x_guarantor_site_id            OUT NOCOPY okl_party_roles_interface.guarantor_site_id%TYPE
18488                                   ) IS
18489 
18490    CURSOR gaddr_csr (p_site_id      NUMBER,
18491                      p_site_number  VARCHAR2) IS
18492    SELECT id1
18493    FROM   okx_party_sites_v
18494    WHERE  ( party_site_number = p_site_number
18495             AND
18496             p_site_number IS NOT NULL)
18497    OR     ( id1 = p_site_id
18498             AND
18499             p_site_id IS NOT NULL);
18500 
18501    l_id         NUMBER;
18502    gaddr_failed EXCEPTION;
18503 
18504    BEGIN
18505 
18506       x_return_status := OKL_API.G_RET_STS_SUCCESS;
18507       OPEN gaddr_csr (p_guarantor_site_id,
18508                       p_guarantor_site_number);
18509       FETCH gaddr_csr INTO l_id;
18510       IF (gaddr_csr%NOTFOUND) THEN
18511          RAISE gaddr_failed;
18512       END IF;
18513 
18514       CLOSE gaddr_csr;
18515       x_guarantor_site_id := l_id;
18516 
18517       RETURN;
18518 
18519   EXCEPTION
18520      WHEN gaddr_failed THEN
18521         IF (gaddr_csr%ISOPEN) THEN
18522            CLOSE gaddr_csr;
18523         END IF;
18524         okl_api.set_message(
18525                             G_APP_NAME,
18526                             G_INVALID_VALUE,
18527                             'COL_NAME',
18528                             'GUARANTOR_SITE, ID',
18529                             'COL_VALUE',
18530                             p_guarantor_site_number||', '||p_guarantor_site_id,
18531                             'CONTRACT_NUM',
18532                             p_contract_number||'/'||p_line_number
18533                            );
18534         x_return_status := OKL_API.G_RET_STS_ERROR;
18535 
18536    END get_guarantor_address;
18537 
18538 ------------------------------------------------------------------------------
18539 -- PROCEDURE get_rrd_id
18540 -- It gets RRD_ID for Guarantor and
18541 -- stacks Error, if any, and returns ERROR status to calling process.
18542 -- Calls:
18543 --  None
18544 -- Called By:
18545 --  process_party_role
18546 ------------------------------------------------------------------------------
18547    PROCEDURE get_rrd_id(
18548                         x_return_status OUT NOCOPY VARCHAR2,
18549                         p_rgd_code      IN  VARCHAR2,
18550                         p_rle_code      IN  VARCHAR2,
18551                         x_rrd_id        OUT NOCOPY NUMBER
18552                        ) IS
18553    CURSOR rrd_csr (p_rgd_code VARCHAR2,
18554                    p_rle_code VARCHAR2) IS
18555    SELECT rrd.id
18556    FROM   okc_rg_role_defs rrd,
18557           okc_subclass_rg_defs srd,
18558           okc_subclass_roles   srl
18559    WHERE  rrd.srd_id    = srd.id
18560    AND    rrd.sre_id    = srl.id
18561    AND    srd.scs_code  = 'LEASE'
18562    AND    srd.rgd_code  = p_rgd_code --'LAGRDT'
18563    AND    srl.scs_code  = 'LEASE'
18564    AND    srl.rle_code  = p_rle_code; --'GUARANTOR'
18565 
18566    l_id NUMBER:= NULL;
18567 
18568    BEGIN
18569 
18570       OPEN rrd_csr (p_rgd_code,
18571                     p_rle_code);
18572       FETCH rrd_csr INTO l_id;
18573       IF rrd_csr%NOTFOUND THEN
18574          x_return_status := OKL_API.G_RET_STS_ERROR;
18575       END IF;
18576       CLOSE rrd_csr;
18577 
18578       x_rrd_id := l_id;
18579       return;
18580 
18581    EXCEPTION
18582      WHEN OTHERS THEN
18583         x_return_status := OKL_API.G_RET_STS_ERROR;
18584    END get_rrd_id;
18585 
18586 
18587 
18588 ------------------------------------------------------------------------------
18589 -- PROCEDURE create_private_label
18590 -- It create party roles and rules for PRIVATE_LABEL information and
18591 -- stacks Error, if any, and returns ERROR status to calling process.
18592 -- Calls:
18593 --  None
18594 -- Called By:
18595 ------------------------------------------------------------------------------
18596    PROCEDURE create_private_label (
18597                                    x_return_status   OUT NOCOPY VARCHAR2,
18598                                    x_msg_count       OUT NOCOPY NUMBER,
18599                                    x_msg_data        OUT NOCOPY VARCHAR2,
18600                                    p_chr_id          IN  NUMBER,
18601                                    p_contract_number IN okc_k_headers_v.contract_number%TYPE,
18602                                    p_label_number    IN  VARCHAR2,
18603                                    p_label_id        IN  NUMBER,
18604                                    p_label_url       IN  VARCHAR2
18605                                   ) IS
18606 
18607    CURSOR party_csr (p_private_label_number VARCHAR2,
18608                      p_private_label_id     NUMBER) IS
18609    SELECT id1
18610    FROM   okx_parties_v
18611    WHERE  ((party_number = p_private_label_number
18612             AND
18613             p_private_label_number IS NOT NULL)
18614             OR
18615             (id1  = p_private_label_id
18616              AND
18617              p_private_label_id IS NOT NULL
18618             )
18619            );
18620 
18621    l_proc_name  VARCHAR2(35) := 'CREATE_PRIVATE_LABEL';
18622    p_cplv_rec   cplv_rec_type;
18623    x_cplv_rec   cplv_rec_type;
18624    l_rgpv_rec   rgpv_rec_type;
18625    x_rgpv_rec   rgpv_rec_type;
18626    l_rulv_rec   rulv_rec_type;
18627    x_rulv_rec   rulv_rec_type;
18628    l_rmpv_rec   rmpv_rec_type;
18629    x_rmpv_rec   rmpv_rec_type;
18630 
18631    l_rgp_id     NUMBER;
18632    x_rrd_id     NUMBER;
18633    l_id         NUMBER;
18634 
18635    party_failed EXCEPTION;
18636 
18637    l_kplv_rec   kplv_rec_type;
18638    x_kplv_rec   kplv_rec_type;
18639 
18640    BEGIN
18641 
18642       x_return_status := OKL_API.G_RET_STS_SUCCESS;
18643 
18644       IF (p_label_number IS NOT NULL
18645           OR
18646           p_label_id IS NOT NULL) THEN
18647 
18648          OPEN party_csr (p_label_number,
18649                          p_label_id);
18650          FETCH party_csr INTO l_id;
18651 
18652          IF party_csr%NOTFOUND THEN
18653             RAISE party_failed;
18654          END IF;
18655          CLOSE party_csr;
18656 
18657          p_cplv_rec                   := NULL;
18658          p_cplv_rec.chr_id            := p_chr_id;
18659          p_cplv_rec.dnz_chr_id        := p_chr_id;
18660          p_cplv_rec.cle_id            := NULL; -- always at header level
18661          p_cplv_rec.object1_id1       := TO_CHAR(l_id);
18662          p_cplv_rec.object1_id2       := '#';
18663          p_cplv_rec.jtot_object1_code := 'OKX_PARTY';
18664          p_cplv_rec.rle_code          := 'PRIVATE_LABEL';
18665 
18666          OKL_K_PARTY_ROLES_PVT.create_k_party_role(
18667                                                 p_api_version   => 1.0,
18668                                                 p_init_msg_list => OKL_API.G_FALSE,
18669                                                 x_return_status => x_return_status,
18670                                                 x_msg_count     => x_msg_count,
18671                                                 x_msg_data      => x_msg_data,
18672                                                 p_cplv_rec      => p_cplv_rec,
18673                                                 p_kplv_rec      => l_kplv_rec,
18674                                                 x_cplv_rec      => x_cplv_rec,
18675                                                 x_kplv_rec      => x_kplv_rec
18676                                                );
18677 
18678          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
18679             RAISE party_failed;
18680          END IF;
18681 
18682          l_rgpv_rec            := NULL;
18683          l_rgp_id              := NULL;
18684          l_rgpv_rec.rgd_code   := 'LALABL';
18685          l_rgpv_rec.chr_id     := p_chr_id;
18686          l_rgpv_rec.dnz_chr_id := p_chr_id;
18687          l_rgpv_rec.cle_id     := NULL; -- always at header level
18688          l_rgpv_rec.rgp_type   := 'KRG';
18689 
18690          l_rulv_rec            := NULL;
18691 
18692          IF (p_label_url IS NOT NULL) THEN
18693 
18694             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
18695             l_rulv_rec.dnz_chr_id                := p_chr_id;
18696             l_rulv_rec.rule_information1         := p_label_url;
18697             l_rulv_rec.rule_information_category := 'LALOGO';
18698             l_rulv_rec.std_template_yn           := 'N';
18699             l_rulv_rec.warn_yn                   := 'N';
18700 
18701             create_rule_group_and_rule(
18702                                        x_return_status => x_return_status,
18703                                        x_msg_count     => x_msg_count,
18704                                        x_msg_data      => x_msg_data,
18705                                        p_rgp_id        => l_rgp_id,
18706                                        p_rgpv_rec      => l_rgpv_rec,
18707                                        p_rulv_rec      => l_rulv_rec,
18708                                        x_rgpv_rec      => x_rgpv_rec,
18709                                        x_rulv_rec      => x_rulv_rec
18710                                       );
18711 
18712             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
18713                 raise party_failed;
18714             END IF;
18715 
18716             get_rrd_id(
18717                        x_return_status => x_return_status,
18718                        p_rgd_code      => 'LALABL',
18719                        p_rle_code      => 'PRIVATE_LABEL',
18720                        x_rrd_id        => x_rrd_id
18721                       );
18722             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
18723                  okl_api.set_message(
18724                                      G_APP_NAME,
18725                                      G_LABEL_SETUP_ERROR,
18726                                      'CONTRACT_NUM',
18727                                      p_contract_number
18728                                     );
18729                  x_return_status := OKL_API.G_RET_STS_ERROR;
18730                  RAISE party_failed;
18731             END IF;
18732 
18733             l_rmpv_rec.rgp_id     := x_rgpv_rec.id;
18734             l_rmpv_rec.cpl_id     := x_cplv_rec.id;
18735             l_rmpv_rec.rrd_id     := x_rrd_id;
18736             l_rmpv_rec.dnz_chr_id := p_chr_id;
18737 
18738             okl_rule_pub.create_rg_mode_pty_role(
18739                                                  p_api_version   => 1.0,
18740                                                  p_init_msg_list => OKL_API.G_FALSE,
18741                                                  x_return_status => x_return_status,
18742                                                  x_msg_count     => x_msg_count,
18743                                                  x_msg_data      => x_msg_data,
18744                                                  p_rmpv_rec      => l_rmpv_rec,
18745                                                  x_rmpv_rec      => x_rmpv_rec
18746                                                 );
18747             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
18748                 x_return_status := OKL_API.G_RET_STS_ERROR;
18749                 raise party_failed;
18750             END IF;
18751 
18752          END IF; --label_url
18753 
18754       END IF;  --private_label
18755 
18756    EXCEPTION
18757       WHEN party_failed THEN
18758          IF party_csr%ISOPEN THEN
18759             CLOSE party_csr;
18760          END IF;
18761          okl_api.set_message(
18762                              G_APP_NAME,
18763                              G_INVALID_VALUE,
18764                              'COL_NAME',
18765                              'PRIVATE_LABEL_NUMBER, ID',
18766                              'COL_VALUE',
18767                              p_label_number||', '||p_label_id,
18768                              'CONTRACT_NUM',
18769                              p_contract_number
18770                             );
18771          x_return_status := OKL_API.G_RET_STS_ERROR;
18772 
18773    END create_private_label;
18774 
18775 -- strat cklee 02/16/2004  bug# 3440442
18776 ------------------------------------------------------------------------------
18777 -- PROCEDURE validate_3rd_party_insurance
18778 -- It validate 3rd party insurence policy and
18779 -- stacks Error, if any, and returns ERROR status to calling process.
18780 -- Calls:
18781 --  None
18782 -- Called By:
18783 ------------------------------------------------------------------------------
18784 
18785    PROCEDURE validate_3rd_party_insurance (
18786                                    x_return_status   OUT NOCOPY VARCHAR2,
18787                                    x_msg_count       OUT NOCOPY NUMBER,
18788                                    x_msg_data        OUT NOCOPY VARCHAR2,
18789                                    p_intf_header     IN  intf_h_rec_type,
18790                                    x_intf_header     OUT NOCOPY intf_h_rec_type
18791                                   ) IS
18792    v_3rd_party_insurance_failed EXCEPTION;
18793 
18794   l_proc_name varchar2(150) := 'OKL_HEADER_INTERFACE: validate_3rd_party_insurance';
18795   l_progress  varchar2(150);
18796 
18797   l_intf_header intf_h_rec_type := p_intf_header;
18798 
18799   intf_party_rec intf_party_rec_type;
18800 
18801    BEGIN
18802 
18803       x_return_status := OKL_API.G_RET_STS_SUCCESS;
18804 --
18805 -- 1. validation
18806 --
18807      -- 3rd party insurace
18808      -- 1. insurance company name/site
18809       IF ((p_intf_header.insurance_company_name IS NOT NULL OR
18810            p_intf_header.insurance_company_id IS NOT NULL OR
18811            p_intf_header.insurance_company_number IS NOT NULL)
18812           AND
18813           (p_intf_header.insurance_company_site_name IS NOT NULL OR
18814            p_intf_header.insurance_company_site_id IS NOT NULL OR
18815            p_intf_header.insurance_company_site_number IS NOT NULL)) THEN
18816 
18817 
18818               intf_party_rec.contract_number       := p_intf_header.contract_number_old;
18819               intf_party_rec.line_number           := NULL;
18820               intf_party_rec.party_category_code   := G_INSURER;
18821 
18822               intf_party_rec.party_id              := p_intf_header.insurance_company_id;
18823               intf_party_rec.party_name            := p_intf_header.insurance_company_name;
18824               intf_party_rec.party_number          := p_intf_header.insurance_company_number;
18825               intf_party_rec.party_site_id         := p_intf_header.insurance_company_site_id;
18826               intf_party_rec.party_site_name       := p_intf_header.insurance_company_site_name;
18827               intf_party_rec.party_site_number     := p_intf_header.insurance_company_site_number;
18828               intf_party_rec.intf_party_id         := G_INSURANCE_COMPANY_ID;
18829               intf_party_rec.intf_party_name       := G_INSURANCE_COMPANY_NAME;
18830               intf_party_rec.intf_party_number     := G_INSURANCE_COMPANY_NUMBER;
18831               intf_party_rec.intf_party_site_id    := G_INSURANCE_COMPANY_SITE_ID;
18832               intf_party_rec.intf_party_site_name  := G_INSURANCE_COMPANY_SITE_NAME;
18833               intf_party_rec.intf_party_site_number:= G_INSURANCE_COMPANY_SITE_NUM;
18834 
18835 
18836               get_party(
18837                   x_return_status     => x_return_status,
18838                   x_msg_count         => x_msg_count,
18839                   x_msg_data          => x_msg_data,
18840                   p_intf_party_rec    => intf_party_rec,
18841                   x_party_id          => l_intf_header.insurance_company_id,
18842                   x_party_site_id     => l_intf_header.insurance_company_site_id
18843                  );
18844 
18845              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
18846                 RAISE v_3rd_party_insurance_failed;
18847              END IF;
18848       END IF;
18849       l_progress := 'validate insurance company name/site';
18850 
18851      -- 3. agent name/site
18852       IF ((p_intf_header.agent_name IS NOT NULL OR
18853            p_intf_header.agent_id IS NOT NULL OR
18854            p_intf_header.agent_number IS NOT NULL)
18855           AND
18856           (p_intf_header.agent_address_site_name IS NOT NULL OR
18857            p_intf_header.agent_address_site_id IS NOT NULL OR
18858            p_intf_header.agent_address_site_number IS NOT NULL)) THEN
18859 
18860 
18861               intf_party_rec.contract_number       := p_intf_header.contract_number_old;
18862               intf_party_rec.line_number           := NULL;
18863               intf_party_rec.party_category_code   := G_INSURANCE_AGENT;
18864 
18865               intf_party_rec.party_id              := p_intf_header.agent_id;
18866               intf_party_rec.party_name            := p_intf_header.agent_name;
18867               intf_party_rec.party_number          := p_intf_header.agent_number;
18868               intf_party_rec.party_site_id         := p_intf_header.agent_address_site_id;
18869               intf_party_rec.party_site_name       := p_intf_header.agent_address_site_name;
18870               intf_party_rec.party_site_number     := p_intf_header.agent_address_site_number;
18871               intf_party_rec.intf_party_id         := G_AGENT_ID;
18872               intf_party_rec.intf_party_name       := G_AGENT_NAME;
18873               intf_party_rec.intf_party_number     := G_AGENT_NUMBER;
18874               intf_party_rec.intf_party_site_id    := G_AGENT_ADDRESS_SITE_ID;
18875               intf_party_rec.intf_party_site_name  := G_AGENT_ADDRESS_SITE_NAME;
18876               intf_party_rec.intf_party_site_number:= G_AGENT_ADDRESS_SITE_NUMBER;
18877 
18878 
18879               get_party(
18880                   x_return_status     => x_return_status,
18881                   x_msg_count         => x_msg_count,
18882                   x_msg_data          => x_msg_data,
18883                   p_intf_party_rec    => intf_party_rec,
18884                   x_party_id          => l_intf_header.agent_id,
18885                   x_party_site_id     => l_intf_header.agent_address_site_id
18886                  );
18887 
18888              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
18889                 RAISE v_3rd_party_insurance_failed;
18890              END IF;
18891       END IF;
18892       l_progress := 'validate insurance agent name/address site';
18893 
18894 
18895       IF (NVL(p_intf_header.LESSOR_INSURED_FLAG,'N') NOT IN ('Y','N')) THEN
18896            okl_api.set_message(
18897                                G_APP_NAME,
18898                                G_INVALID_VALUE,
18899                                'CONTRACT_NUM',
18900                                p_intf_header.contract_number_old,
18901                                'COL_NAME',
18902                                'LESSOR_INSURED_FLAG',
18903                                'COL_VALUE',
18904                                p_intf_header.LESSOR_INSURED_FLAG
18905                               );
18906 
18907         x_return_status := OKL_API.G_RET_STS_ERROR;
18908 
18909         RAISE v_3rd_party_insurance_failed;
18910       END IF;
18911       l_progress := 'validate LESSOR_INSURED_FLAG';
18912 
18913       IF (NVL(p_intf_header.LESSOR_PAYEE_FLAG,'N') NOT IN ('Y','N')) THEN
18914            okl_api.set_message(
18915                                G_APP_NAME,
18916                                G_INVALID_VALUE,
18917                                'CONTRACT_NUM',
18918                                p_intf_header.contract_number_old,
18919                                'COL_NAME',
18920                                'LESSOR_PAYEE_FLAG',
18921                                'COL_VALUE',
18922                                p_intf_header.LESSOR_PAYEE_FLAG
18923                               );
18924 
18925         x_return_status := OKL_API.G_RET_STS_ERROR;
18926 
18927         RAISE v_3rd_party_insurance_failed;
18928       END IF;
18929       l_progress := 'validate LESSOR_PAYEE_FLAG';
18930 
18931       -- assign to out record
18932       x_intf_header := l_intf_header;
18933 
18934    EXCEPTION
18935       WHEN v_3rd_party_insurance_failed THEN
18936         x_return_status := OKL_API.G_RET_STS_ERROR;
18937         debug_message(l_proc_name ||': '||l_progress);
18938 
18939       WHEN OTHERS THEN
18940         x_return_status := OKL_API.G_RET_STS_ERROR;
18941         debug_message(l_proc_name ||': '||l_progress);
18942 
18943    END validate_3rd_party_insurance;
18944 
18945 ------------------------------------------------------------------------------
18946 -- PROCEDURE create_3rd_party_insurance
18947 -- It create 3rd party insurence policy and
18948 -- stacks Error, if any, and returns ERROR status to calling process.
18949 -- Calls:
18950 --  None
18951 -- Called By:
18952 ------------------------------------------------------------------------------
18953 
18954    PROCEDURE create_3rd_party_insurance (
18955                                    x_return_status   OUT NOCOPY VARCHAR2,
18956                                    x_msg_count       OUT NOCOPY NUMBER,
18957                                    x_msg_data        OUT NOCOPY VARCHAR2,
18958                                    p_intf_header     IN  intf_h_rec_type,
18959                                    p_chr_id          IN  NUMBER
18960                                   ) IS
18961    e_3rd_party_insurance_failed EXCEPTION;
18962 
18963   l_proc_name varchar2(150) := 'OKL_HEADER_INTERFACE: create_3rd_party_insurance';
18964   l_progress  varchar2(150);
18965 
18966   x_intf_header intf_h_rec_type;
18967 
18968   l_ipyv_rec okl_ipy_pvt.ipyv_rec_type;
18969   x_ipyv_rec okl_ipy_pvt.ipyv_rec_type;
18970 
18971    BEGIN
18972 
18973       x_return_status := OKL_API.G_RET_STS_SUCCESS;
18974 --
18975 -- 1. validation
18976 --
18977       validate_3rd_party_insurance(x_return_status  => x_return_status,
18978                                    x_msg_count      => x_msg_count,
18979                                    x_msg_data       => x_msg_data,
18980                                    p_intf_header    => p_intf_header,
18981                                    x_intf_header    => x_intf_header
18982                                   );
18983 
18984 
18985       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
18986         raise e_3rd_party_insurance_failed;
18987       END IF;
18988 
18989 --
18990 -- 2. create record
18991 --
18992 
18993       l_ipyv_rec.ipy_type            := 'THIRD_PARTY_POLICY';
18994       l_ipyv_rec.khr_id              := p_chr_id;
18995 
18996       l_ipyv_rec.policy_number       := x_intf_header.POLICY_NUMBER;
18997       l_ipyv_rec.date_from           := x_intf_header.POLICY_EFFECTIVE_FROM;
18998       l_ipyv_rec.date_to             := x_intf_header.POLICY_EFFECTIVE_TO;
18999       l_ipyv_rec.covered_amount      := x_intf_header.COVERED_AMOUNT;
19000       l_ipyv_rec.deductible          := x_intf_header.DEDUCTIBLE_AMOUNT;
19001       l_ipyv_rec.endorsement         := x_intf_header.ENDORSEMENT;
19002       l_ipyv_rec.name_of_insured     := x_intf_header.NAME_OF_INSURED;
19003       l_ipyv_rec.lessor_insured_yn   := x_intf_header.LESSOR_INSURED_FLAG;
19004       l_ipyv_rec.lessor_payee_yn     := x_intf_header.LESSOR_PAYEE_FLAG;
19005 
19006       l_ipyv_rec.isu_id              := x_intf_header.insurance_company_id;
19007       l_ipyv_rec.agency_site_id      := x_intf_header.insurance_company_site_id;
19008 
19009       l_ipyv_rec.int_id              := x_intf_header.agent_id;
19010       l_ipyv_rec.agent_site_id       := x_intf_header.agent_address_site_id;
19011 
19012       l_ipyv_rec.date_proof_required := x_intf_header.PROOF_DUE_DATE;
19013       l_ipyv_rec.date_proof_provided := x_intf_header.PROOF_PROVIDED_DATE;
19014 
19015       OKL_INS_POLICIES_PUB.INSERT_INS_POLICIES(
19016                                                 p_api_version   => 1.0,
19017                                                 p_init_msg_list => OKL_API.G_FALSE,
19018                                                 x_return_status => x_return_status,
19019                                                 x_msg_count     => x_msg_count,
19020                                                 x_msg_data      => x_msg_data,
19021                                                 p_ipyv_rec      => l_ipyv_rec,
19022                                                 x_ipyv_rec      => x_ipyv_rec
19023                                                );
19024 
19025       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19026         RAISE e_3rd_party_insurance_failed;
19027       END IF;
19028       l_progress := 'Create 3rd insurance record';
19029 
19030    EXCEPTION
19031       WHEN e_3rd_party_insurance_failed THEN
19032         x_return_status := OKL_API.G_RET_STS_ERROR;
19033         debug_message(l_proc_name ||': '||l_progress);
19034 
19035       WHEN OTHERS THEN
19036         x_return_status := OKL_API.G_RET_STS_ERROR;
19037         debug_message(l_proc_name ||': '||l_progress);
19038 
19039    END create_3rd_party_insurance;
19040 
19041 -- end cklee 02/16/2004 bug# 3440442
19042 ------------------------------------------------------------------------------
19043 -- PROCEDURE get_vendor_paygroup
19044 -- It returns vendor Pay-group info and
19045 -- stacks Error, if any, and returns ERROR status to calling process.
19046 -- Calls:
19047 --  None
19048 -- Called By:
19049 ------------------------------------------------------------------------------
19050    FUNCTION get_vendor_paygroup(
19051                                x_return_status       OUT NOCOPY VARCHAR2,
19052                                p_contract_number     IN  OKL_HEADER_INTERFACE.CONTRACT_NUMBER_OLD%TYPE,
19053                                p_line_number         IN  OKL_LINES_INTERFACE.LINE_NUMBER%TYPE,
19054 			       p_auth_org_id         IN  OKL_HEADER_INTERFACE.authoring_org_id%TYPE,
19055                                p_vendor_paysite_id   IN  OKL_LINES_INTERFACE.VENDOR_PAYSITE_ID%TYPE
19056                               )
19057    RETURN NUMBER IS
19058    CURSOR paygroup_csr (p_paysite_id NUMBER,
19059                          p_org_id   NUMBER) IS
19060    SELECT pay_group_lookup_code
19061    FROM   po_vendor_sites_all
19062    WHERE  vendor_site_id = p_vendor_paysite_id
19063    AND    org_id = p_auth_org_id;
19064 
19065    l_paygroup po_vendor_sites_all.pay_group_lookup_code%TYPE;
19066    BEGIN
19067 
19068      x_return_status := OKL_API.G_RET_STS_SUCCESS;
19069 
19070      OPEN paygroup_csr (p_vendor_paysite_id,
19071                          p_auth_org_id);
19072      FETCH paygroup_csr INTO l_paygroup;
19073      IF paygroup_csr%NOTFOUND THEN
19074        CLOSE paygroup_csr;
19075        RETURN NULL;
19076      ELSE
19077        CLOSE paygroup_csr;
19078        RETURN l_paygroup;
19079      END IF;
19080 
19081 
19082    END get_vendor_paygroup;
19083 
19084 ------------------------------------------------------------------------------
19085 -- PROCEDURE process_party_role
19086 -- It Process Party Role Interafce Records at Contract Line level and Header Level as well and
19087 -- stacks Error, if any, and returns ERROR status to calling process.
19088 -- Calls:
19089 --  get_vendor_id
19090 --  get_party_id
19091 --  get_rrd_id
19092 -- Called By:
19093 --  load_input_record
19094 ------------------------------------------------------------------------------
19095    PROCEDURE  process_party_role(
19096                                  x_return_status        OUT NOCOPY VARCHAR2,
19097                                  x_msg_count            OUT NOCOPY NUMBER,
19098                                  x_msg_data             OUT NOCOPY VARCHAR2,
19099                                  p_contract_number      IN  okl_header_interface.contract_number_old%TYPE,
19100                                  p_chr_id               IN  okc_k_headers_v.id%TYPE,
19101                                  p_auth_org_id          IN  okl_header_interface.authoring_org_id%TYPE,
19102                                  p_line_number          IN  okc_k_lines_v.line_number%TYPE,
19103                                  p_line_type            IN  okl_lines_interface.line_type%TYPE,
19104                                  p_fin_cle_id           IN  NUMBER,
19105                                  p_model_cle_id         IN  NUMBER,
19106                                  p_service_line_id      IN  NUMBER,
19107                                  p_fee_line_id          IN  NUMBER,
19108                                  p_usage_line_id        IN  NUMBER,
19109                                  p_asset_vendor_name    IN  okl_party_roles_interface.asset_vendor_name%TYPE,
19110                                  p_asset_vendor_id      IN  okl_party_roles_interface.asset_vendor_id%TYPE,
19111                                  p_service_vendor_name  IN  okl_party_roles_interface.service_vendor_name%TYPE,
19112                                  p_service_vendor_id    IN  okl_party_roles_interface.service_vendor_id%TYPE,
19113                                  p_fees_vendor_name     IN  okl_party_roles_interface.fees_vendor_name%TYPE,
19114                                  p_fees_vendor_id       IN  okl_party_roles_interface.fees_vendor_id%TYPE,
19115                                  p_guarantor_number     IN  okl_party_roles_interface.guarantor_number%TYPE,
19116                                  p_guarantor_id         IN  okl_party_roles_interface.guarantor_id%TYPE,
19117                                  p_dealer_name          IN  okl_party_roles_interface.dealer_name%TYPE,
19118                                  p_dealer_id            IN  okl_party_roles_interface.dealer_id%TYPE,
19119                                  p_guarantor_type       IN  okl_party_roles_interface.guarantor_type%TYPE,
19120                                  p_guarantee_type       IN  okl_party_roles_interface.guarantee_type%TYPE,
19121                                  p_guaranteed_amount    IN  okl_party_roles_interface.guaranteed_amount%TYPE,
19122                                  p_guarantee_date       IN  okl_party_roles_interface.guarantee_date%TYPE,
19123                                  p_guarantee_comment    IN  okl_party_roles_interface.guarantee_comment%TYPE,
19124                                  p_guarantor_site_number IN okl_party_roles_interface.guarantor_site_number%TYPE,
19125                                  p_guarantor_site_id     IN okl_party_roles_interface.guarantor_site_id%TYPE,
19126                                  p_payment_term          IN okl_lines_interface.payment_term%TYPE,
19127                                  p_payment_term_id       IN okl_lines_interface.payment_term_id%TYPE,
19128                                  p_vendor_paysite_id     IN okl_lines_interface.vendor_paysite_id%TYPE,
19129                                  p_vendor_paysite_name   IN okl_lines_interface.vendor_paysite_name%TYPE,
19130                                  p_vendor_payment_method IN okl_lines_interface.vendor_payment_method%TYPE,
19131                                  p_passthrough_percent      IN okl_lines_interface.passthrough_percent%TYPE,
19132                                  p_passthrough_basis_code   IN okl_lines_interface.passthrough_basis_code%TYPE,
19133                                  p_billable_vendor_id       IN okl_party_roles_interface.billable_vendor_id%TYPE,
19134                                  p_billable_vendor_name     IN okl_party_roles_interface.billable_vendor_name%TYPE,
19135                                  p_vend_as_customer_number  IN okl_party_roles_interface.vend_as_customer_number%TYPE,
19136                                  p_vend_as_customer_id      IN okl_party_roles_interface.vend_as_customer_id%TYPE,
19137                                  p_vend_as_cust_acc_id      IN okl_party_roles_interface.vend_as_customer_acc_id%TYPE,
19138                                  p_vend_as_cust_acc_number  IN okl_party_roles_interface.vend_as_customer_acc_number%TYPE,
19139                                  p_vend_bill_to_addr_id     IN okl_party_roles_interface.vend_bill_to_addr_id%TYPE,
19140                                  p_vend_bill_to_addr        IN okl_party_roles_interface.vend_bill_to_addr%TYPE,
19141                                  p_vend_payment_method_id   IN okl_party_roles_interface.vend_payment_method_id%TYPE,
19142                                  p_vend_payment_method      IN okl_party_roles_interface.vend_payment_method%TYPE,
19143                                  p_vend_bank_acc_id         IN okl_party_roles_interface.vend_bank_acc_id%TYPE,
19144                                  p_vend_bank_acc_number     IN okl_party_roles_interface.vend_bank_acc_number%TYPE,
19145                                  p_vend_invoice_format_id      IN okl_party_roles_interface.vend_invoice_format_id%TYPE,
19146                                  p_vend_invoice_format_code    IN okl_party_roles_interface.vend_invoice_format_code%TYPE,
19147                                  p_vend_review_invoice_flag    IN okl_party_roles_interface.vend_review_invoice_flag%TYPE,
19148                                  p_vend_reason_for_inv_review  IN okl_party_roles_interface.vend_reason_for_inv_review%TYPE,
19149                                  p_vend_inv_review_until_date  IN okl_party_roles_interface.vend_inv_review_until_date%TYPE,
19150                                  p_pth_base_vendor_site_code   IN okl_party_roles_interface.pth_base_vendor_site_code%TYPE,
19151                                  p_pth_base_vendor_site_id     IN okl_party_roles_interface.pth_base_vendor_site_id%TYPE,
19152                                  p_pth_base_paygroup_code      IN okl_party_roles_interface.pth_base_paygroup_code%TYPE,
19153                                  p_pth_base_pmnt_term_code     IN okl_party_roles_interface.pth_base_pmnt_term_code%TYPE,
19154                                  p_pth_base_pmnt_term_id       IN okl_party_roles_interface.pth_base_pmnt_term_id%TYPE,
19155                                  p_pth_base_pmnt_basis         IN okl_party_roles_interface.pth_base_pmnt_basis%TYPE,
19156                                  p_pth_base_pmnt_start_date    IN okl_party_roles_interface.pth_base_pmnt_start_date%TYPE,
19157                                  p_pth_base_pmnt_method_code   IN okl_party_roles_interface.pth_base_pmnt_method_code%TYPE,
19158                                  p_pth_base_pmnt_freq          IN okl_party_roles_interface.pth_base_pmnt_freq%TYPE,
19159                                  p_pth_base_pmnt_remit_days    IN okl_party_roles_interface.pth_base_pmnt_remit_days%TYPE,
19160                                  p_pth_base_disb_basis         IN okl_party_roles_interface.pth_base_disb_basis%TYPE,
19161                                  p_pth_base_disb_fixed_amount  IN okl_party_roles_interface.pth_base_disb_fixed_amount%TYPE,
19162                                  p_pth_base_disb_pct           IN okl_party_roles_interface.pth_base_disb_pct%TYPE,
19163                                  p_pth_base_proc_fee_basis     IN okl_party_roles_interface.pth_base_proc_fee_basis%TYPE,
19164                                  p_pth_base_proc_fee_fixed_amt IN okl_party_roles_interface.pth_base_proc_fee_fixed_amt%TYPE,
19165                                  p_pth_base_proc_pct           IN okl_party_roles_interface.pth_base_proc_pct%TYPE,
19166                                  p_pth_evg_vendor_site_code    IN okl_party_roles_interface.pth_evg_vendor_site_code%TYPE,
19167                                  p_pth_evg_vendor_site_id      IN okl_party_roles_interface.pth_evg_vendor_site_id%TYPE,
19168                                  p_pth_evg_paygroup_code       IN okl_party_roles_interface.pth_evg_paygroup_code%TYPE,
19169                                  p_pth_evg_pmnt_term_code      IN okl_party_roles_interface.pth_evg_pmnt_term_code%TYPE,
19170                                  p_pth_evg_pmnt_term_id        IN okl_party_roles_interface.pth_evg_pmnt_term_id%TYPE,
19171                                  p_pth_evg_pmnt_basis          IN okl_party_roles_interface.pth_evg_pmnt_basis%TYPE,
19172                                  p_pth_evg_pmnt_start_date     IN okl_party_roles_interface.pth_evg_pmnt_start_date%TYPE,
19173                                  p_pth_evg_pmnt_method_code    IN okl_party_roles_interface.pth_evg_pmnt_method_code%TYPE,
19174                                  p_pth_evg_pmnt_freq           IN okl_party_roles_interface.pth_evg_pmnt_freq%TYPE,
19175                                  p_pth_evg_pmnt_remit_days     IN okl_party_roles_interface.pth_evg_pmnt_remit_days%TYPE,
19176                                  p_pth_evg_disb_basis          IN okl_party_roles_interface.pth_evg_disb_basis%TYPE,
19177                                  p_pth_evg_disb_fixed_amount   IN okl_party_roles_interface.pth_evg_disb_fixed_amount%TYPE,
19178                                  p_pth_evg_disb_pct            IN okl_party_roles_interface.pth_evg_disb_pct%TYPE,
19179                                  p_pth_evg_proc_fee_basis      IN okl_party_roles_interface.pth_evg_proc_fee_basis%TYPE,
19180                                  p_pth_evg_proc_fee_fixed_amt  IN okl_party_roles_interface.pth_evg_proc_fee_fixed_amt%TYPE,
19181                                  p_pth_evg_proc_pct            IN okl_party_roles_interface.pth_evg_proc_pct%TYPE,
19182                                  p_attribute_category          IN okl_party_roles_interface.attribute_category%TYPE,
19183                                  p_attribute1                  IN okl_party_roles_interface.attribute1%TYPE,
19184                                  p_attribute2                  IN okl_party_roles_interface.attribute2%TYPE,
19185                                  p_attribute3                  IN okl_party_roles_interface.attribute3%TYPE,
19186                                  p_attribute4                  IN okl_party_roles_interface.attribute4%TYPE,
19187                                  p_attribute5                  IN okl_party_roles_interface.attribute5%TYPE,
19188                                  p_attribute6                  IN okl_party_roles_interface.attribute6%TYPE,
19189                                  p_attribute7                  IN okl_party_roles_interface.attribute7%TYPE,
19190                                  p_attribute8                  IN okl_party_roles_interface.attribute8%TYPE,
19191                                  p_attribute9                  IN okl_party_roles_interface.attribute9%TYPE,
19192                                  p_attribute10                 IN okl_party_roles_interface.attribute10%TYPE,
19193                                  p_attribute11                 IN okl_party_roles_interface.attribute11%TYPE,
19194                                  p_attribute12                 IN okl_party_roles_interface.attribute12%TYPE,
19195                                  p_attribute13                 IN okl_party_roles_interface.attribute13%TYPE,
19196                                  p_attribute14                 IN okl_party_roles_interface.attribute14%TYPE,
19197                                  p_attribute15                 IN okl_party_roles_interface.attribute15%TYPE
19198                                 ) IS
19199    l_proc_name         VARCHAR2(35) := 'PROCESS_PARTY_ROLE';
19200    party_role_failed   EXCEPTION;
19201    l_progress          VARCHAR2(10);
19202 
19203    p_cplv_rec          cplv_rec_type;
19204    x_cplv_rec          cplv_rec_type;
19205    l_rgpv_rec          rgpv_rec_type;
19206    x_rgpv_rec          rgpv_rec_type;
19207    l_rulv_rec          rulv_rec_type;
19208    x_rulv_rec          rulv_rec_type;
19209    l_rmpv_rec          rmpv_rec_type;
19210    x_rmpv_rec          rmpv_rec_type;
19211    l_rgp_id            NUMBER;
19212 
19213    x_asset_vendor_id   NUMBER := NULL;
19214    x_service_vendor_id NUMBER := NULL;
19215    x_fees_vendor_id    NUMBER := NULL;
19216    x_guarantor_id      NUMBER := NULL;
19217    x_rrd_id            NUMBER := NULL;
19218    x_guarantor_site_id NUMBER;
19219    x_payment_term_id1   VARCHAR2(240);
19220    x_pay_site_id1       VARCHAR2(240);
19221    x_payment_method_id1 VARCHAR2(240);
19222 
19223    CURSOR customer_csr (p_customer_number OKX_PARTIES_V.PARTY_NUMBER%TYPE,
19224                         p_customer_id     OKX_PARTIES_V.ID1%TYPE) IS
19225    SELECT id1
19226    FROM   okx_parties_v
19227    WHERE  ((party_number = p_customer_number
19228             AND
19229             p_customer_number IS NOT NULL
19230            )
19231            OR
19232            (id1          = p_customer_id
19233             AND
19234             p_customer_id IS NOT NULL
19235            )
19236           );
19237 
19238    CURSOR pmnt_basis_csr (p_payment_basis OKL_PARTY_PAYMENT_DTLS.payment_basis%TYPE) IS
19239    SELECT 'Y'
19240    FROM  FND_LOOKUPS
19241    WHERE lookup_type = 'OKL_PAYMENT_BASIS'
19242    AND   nvl(enabled_flag,'N') = 'Y'
19243    AND   sysdate between nvl(start_date_active,sysdate) and nvl(end_date_active,sysdate)
19244    AND   lookup_code = p_payment_basis;
19245 
19246    CURSOR disb_basis_csr (p_disbursement_basis OKL_PARTY_PAYMENT_DTLS.disbursement_basis%TYPE) IS
19247    SELECT 'Y'
19248    FROM  FND_LOOKUPS
19249    WHERE lookup_type = 'OKL_DISBURSE_BASIS'
19250    AND   nvl(enabled_flag,'N') = 'Y'
19251    AND   sysdate between nvl(start_date_active,sysdate) and nvl(end_date_active,sysdate)
19252    AND   lookup_code = p_disbursement_basis;
19253 
19254    CURSOR proc_fee_basis_csr (p_processing_fee_basis OKL_PARTY_PAYMENT_DTLS.disbursement_basis%TYPE) IS
19255    SELECT 'Y'
19256    FROM  FND_LOOKUPS
19257    WHERE lookup_type = 'OKL_PROC_FEE_BASIS'
19258    AND   nvl(enabled_flag,'N') = 'Y'
19259    AND   sysdate between nvl(start_date_active,sysdate) and nvl(end_date_active,sysdate)
19260    AND   lookup_code = p_processing_fee_basis;
19261 
19262    l_vend_cust_id           NUMBER;
19263    l_vend_cust_acc_id       NUMBER;
19264    x_billable_vendor_id     NUMBER;
19265    l_vend_bill_to_addr_id   NUMBER;
19266    l_vend_payment_method_id NUMBER;
19267    l_vend_bank_acc_id       NUMBER;
19268    l_vend_invoice_format_id NUMBER;
19269    l_vend_invoice_format_name VARCHAR2(450);
19270 
19271    -- pass through
19272    l_paygroup_code      po_vendor_sites_all.pay_group_lookup_code%TYPE;
19273    l_base_pmnt_dtls_rec    ppydv_rec_type;
19274    l_evg_pmnt_dtls_rec     ppydv_rec_type;
19275    l_pmnt_dtls_tbl_in      ppydv_tbl_type;
19276    l_pmnt_dtls_tbl_out     ppydv_tbl_type;
19277    l_counter               NUMBER := 0;
19278    rec_exists_yn           VARCHAR2(1);
19279 
19280    l_kplv_rec              kplv_rec_type;
19281    x_kplv_rec              kplv_rec_type;
19282 
19283    l_evg_cont_pmnt_dtls_rec  ppydv_rec_type;
19284    l_cont_pmnt_dtls_tbl_in   ppydv_tbl_type;
19285    l_cont_pmnt_dtls_tbl_out  ppydv_tbl_type;
19286    BEGIN
19287 
19288       x_return_status := OKL_API.G_RET_STS_SUCCESS;
19289       debug_message(l_proc_name);
19290 
19291       IF (p_asset_vendor_id IS NOT NULL) THEN
19292         x_asset_vendor_id := p_asset_vendor_id;
19293       ELSIF (p_asset_vendor_name IS NOT NULL) THEN
19294         get_vendor_id (
19295                        x_return_status     => x_return_status,
19296                        x_msg_count         => x_msg_count,
19297                        x_msg_data          => x_msg_data,
19298                        p_contract_number   => p_contract_number,
19299                        p_line_number       => p_line_number,
19300                        x_vendor_id         => x_asset_vendor_id,
19301                        p_vendor_name       => p_asset_vendor_name
19302                       );
19303         IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19304            RAISE party_role_failed;
19305         END IF;
19306       END IF;
19307 
19308       IF (p_billable_vendor_id IS NOT NULL
19309           OR
19310           p_billable_vendor_name IS NOT NULL) THEN
19311 
19312          IF (p_vend_as_customer_id IS NOT NULL
19313              OR
19314              p_vend_as_customer_number IS NOT NULL) THEN
19315 
19316              OPEN customer_csr(p_vend_as_customer_number,
19317                                p_vend_as_customer_id);
19318 
19319              FETCH customer_csr INTO l_vend_cust_id;
19320              IF customer_csr%NOTFOUND THEN
19321                 okl_api.set_message(
19322                              G_APP_NAME,
19323                              G_INVALID_VALUE,
19324                              'CONTRACT_NUM',
19325                              p_contract_number,
19326                              'COL_NAME',
19327                              'VENDOR AS CUSTOMER ACCOUNT',
19328                              'COL_VALUE',
19329                               p_vend_as_customer_id||', '||p_vend_as_customer_number
19330                              );
19331                  x_return_status := OKL_API.G_RET_STS_ERROR;
19332                  RAISE party_role_failed;
19333              END IF;
19334 
19335              CLOSE customer_csr;
19336          ELSE
19337              okl_api.set_message(
19338                                  G_APP_NAME,
19339                                  G_MISSING_VALUE,
19340                                  'CONTRACT_NUM',
19341                                  p_contract_number,
19342                                  'COL_NAME',
19343                                  'VENDOR AS CUSTOMER'
19344                                 );
19345               x_return_status := OKL_API.G_RET_STS_ERROR;
19346               RAISE party_role_failed;
19347          END IF; -- Vend as customer
19348 
19349          IF (p_vend_as_cust_acc_id IS NOT NULL
19350              OR
19351              p_vend_as_cust_acc_number IS NOT NULL) THEN
19352 
19353              get_customer_account_id(
19354                                   x_return_status           => x_return_status,
19355                                   x_msg_count               => x_msg_count,
19356                                   x_msg_data                => x_msg_data,
19357                                   p_contract_number         => p_contract_number,
19358                                   p_customer_id             => l_vend_cust_id,
19359                                   p_customer_account_id     => p_vend_as_cust_acc_id,
19360                                   p_customer_account_number => p_vend_as_cust_acc_number,
19361                                   x_customer_account_id     => l_vend_cust_acc_id
19362                                  );
19363 
19364              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19365                 x_return_status := OKL_API.G_RET_STS_ERROR;
19366                 raise party_role_failed;
19367              END IF;
19368 
19369              debug_message('------>l_vend_cust_acc_id : '||l_vend_cust_acc_id);
19370          ELSE
19371              okl_api.set_message(
19372                                  G_APP_NAME,
19373                                  G_MISSING_VALUE,
19374                                  'CONTRACT_NUM',
19375                                  p_contract_number,
19376                                  'COL_NAME',
19377                                  'VENDOR AS CUSTOMER ACCOUNT'
19378                                 );
19379               x_return_status := OKL_API.G_RET_STS_ERROR;
19380               RAISE party_role_failed;
19381          END IF; -- vend as cust acct
19382 
19383          IF (p_vend_bill_to_addr_id IS NOT NULL
19384              OR
19385              p_vend_bill_to_addr IS NOT NULL) THEN
19386             get_bill_to_address_id(
19387                              x_return_status           => x_return_status,
19388                              x_msg_count               => x_msg_count,
19389                              x_msg_data                => x_msg_data,
19390                              p_contract_number         => p_contract_number,
19391                              p_auth_org_id             => p_auth_org_id,
19392                              p_bill_to_address_id      => p_vend_bill_to_addr_id,
19393                              p_bill_to_address         => p_vend_bill_to_addr,
19394                              p_customer_account_id     => l_vend_cust_acc_id,
19395                              x_bill_to_address_id      => l_vend_bill_to_addr_id
19396                             );
19397 
19398             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19399                x_return_status := OKL_API.G_RET_STS_ERROR;
19400                raise party_role_failed;
19401             END IF;
19402          ELSE
19403              okl_api.set_message(
19404                                  G_APP_NAME,
19405                                  G_MISSING_VALUE,
19406                                  'CONTRACT_NUM',
19407                                  p_contract_number,
19408                                  'COL_NAME',
19409                                  'VENDOR BILL TO ADDRESS'
19410                                 );
19411               x_return_status := OKL_API.G_RET_STS_ERROR;
19412               RAISE party_role_failed;
19413          END IF; -- vend bill to addr
19414 
19415       END IF; -- billable vendor info
19416 
19417       debug_message('------>l_vend_bill_to_addr_id : '||l_vend_bill_to_addr_id);
19418       debug_message('------> Asset Vendor id: '||x_asset_vendor_id);
19419 
19420       IF (x_asset_vendor_id IS NOT NULL) THEN
19421          p_cplv_rec                   := NULL;
19422 
19423          IF (p_line_number IS NOT NULL) THEN
19424             p_cplv_rec.chr_id            := NULL;
19425             p_cplv_rec.dnz_chr_id        := p_chr_id;
19426 	    IF ((p_pth_evg_vendor_site_code is NOT NULL) OR
19427 	        (p_pth_evg_vendor_site_id is NOT NULL)) THEN
19428                 p_cplv_rec.cle_id            := p_fin_cle_id;   -- PASS THROUGH VENDOR
19429 	    ELSE
19430                 p_cplv_rec.cle_id            := p_model_cle_id; -- ASSET VENDOR
19431 	    END IF;
19432          ELSE
19433             p_cplv_rec.chr_id            := p_chr_id;
19434             p_cplv_rec.dnz_chr_id        := p_chr_id;
19435             p_cplv_rec.cle_id            := NULL;
19436 
19437             -- Contract addl field, Bug 4558486, for party role at header level and asset vendor only
19438 
19439             debug_message('Party role DFF...'||'Vendor name/id: '||p_asset_vendor_name||'/'||p_asset_vendor_id);
19440 
19441             l_kplv_rec.validate_dff_yn          := 'Y';  -- always validate DFF
19442             l_kplv_rec.attribute_category       := p_attribute_category;
19443             debug_message('attribute_category: '||l_kplv_rec.attribute_category);
19444             l_kplv_rec.attribute1               := p_attribute1;
19445             debug_message('attribute1: '||l_kplv_rec.attribute1);
19446             l_kplv_rec.attribute2               := p_attribute2;
19447             debug_message('attribute2: '||l_kplv_rec.attribute2);
19448             l_kplv_rec.attribute3               := p_attribute3;
19449             l_kplv_rec.attribute4               := p_attribute4;
19450             l_kplv_rec.attribute5               := p_attribute5;
19451             l_kplv_rec.attribute6               := p_attribute6;
19452             l_kplv_rec.attribute7               := p_attribute7;
19453             l_kplv_rec.attribute8               := p_attribute8;
19454             l_kplv_rec.attribute9               := p_attribute9;
19455             l_kplv_rec.attribute10              := p_attribute10;
19456             l_kplv_rec.attribute11              := p_attribute11;
19457             l_kplv_rec.attribute12              := p_attribute12;
19458             l_kplv_rec.attribute13              := p_attribute13;
19459             l_kplv_rec.attribute14              := p_attribute14;
19460             l_kplv_rec.attribute15              := p_attribute15;
19461             -- Contract addl field, Bug 4558486
19462 
19463          END IF;
19464 
19465          p_cplv_rec.object1_id1       := TO_CHAR(x_asset_vendor_id);
19466          p_cplv_rec.object1_id2       := '#';
19467          p_cplv_rec.jtot_object1_code := 'OKX_VENDOR';
19468          p_cplv_rec.rle_code          := 'OKL_VENDOR';
19469 
19470          p_cplv_rec.bill_to_site_use_id := l_vend_bill_to_addr_id;
19471          p_cplv_rec.cust_acct_id        := l_vend_cust_acc_id;
19472 
19473          --OKL_OKC_MIGRATION_PVT.create_k_party_role( -- Bug 4558486
19474          OKL_K_PARTY_ROLES_PVT.create_k_party_role(
19475                                                 p_api_version   => 1.0,
19476                                                 p_init_msg_list => OKL_API.G_FALSE,
19477                                                 x_return_status => x_return_status,
19478                                                 x_msg_count     => x_msg_count,
19479                                                 x_msg_data      => x_msg_data,
19480                                                 p_cplv_rec      => p_cplv_rec,
19481                                                 p_kplv_rec      => l_kplv_rec,
19482                                                 x_cplv_rec      => x_cplv_rec,
19483                                                 x_kplv_rec      => x_kplv_rec
19484                                                );
19485 
19486          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19487             RAISE party_role_failed;
19488          END IF;
19489       END IF; -- asset vendor
19490 
19491       debug_message('------>Asset vendor processed');
19492 
19493       -- Evergreen Passthru at header
19494       IF (g_evg_cont_pmnt_hdr.id IS NOT NULL) THEN
19495         NULL;
19496       END IF;
19497 
19498       -- Evergreen Passthru at header
19499 
19500       IF (p_line_type = 'SERVICE') THEN
19501       IF (p_service_vendor_id IS NOT NULL) THEN
19502           x_service_vendor_id := p_service_vendor_id;
19503       ELSIF (p_service_vendor_name IS NOT NULL) THEN
19504           get_vendor_id (
19505                        x_return_status     => x_return_status,
19506                        x_msg_count         => x_msg_count,
19507                        x_msg_data          => x_msg_data,
19508                        p_contract_number   => p_contract_number,
19509                        p_line_number       => p_line_number,
19510                        x_vendor_id         => x_service_vendor_id,
19511                        p_vendor_name       => p_service_vendor_name
19512                       );
19513            IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19514               RAISE party_role_failed;
19515            END IF;
19516       END IF;
19517 
19518       IF (x_service_vendor_id IS NOT NULL) THEN
19519            p_cplv_rec                   := NULL;
19520            l_kplv_rec                   := NULL;
19521 
19522            IF (p_line_number IS NOT NULL) THEN
19523               p_cplv_rec.chr_id            := NULL;
19524               p_cplv_rec.dnz_chr_id        := p_chr_id;
19525               p_cplv_rec.cle_id            := p_service_line_id;
19526            ELSE
19527               p_cplv_rec.chr_id            := p_chr_id;
19528               p_cplv_rec.dnz_chr_id        := p_chr_id;
19529               p_cplv_rec.cle_id            := NULL;
19530            END IF;
19531            p_cplv_rec.object1_id1       := TO_CHAR(x_service_vendor_id);
19532            p_cplv_rec.object1_id2       := '#';
19533            p_cplv_rec.jtot_object1_code := 'OKX_VENDOR';
19534            p_cplv_rec.rle_code          := 'OKL_VENDOR';
19535 
19536            p_cplv_rec.bill_to_site_use_id := l_vend_bill_to_addr_id;
19537            p_cplv_rec.cust_acct_id        := l_vend_cust_acc_id;
19538 
19539            OKL_K_PARTY_ROLES_PVT.create_k_party_role(
19540                                                 p_api_version   => 1.0,
19541                                                 p_init_msg_list => OKL_API.G_FALSE,
19542                                                 x_return_status => x_return_status,
19543                                                 x_msg_count     => x_msg_count,
19544                                                 x_msg_data      => x_msg_data,
19545                                                 p_cplv_rec      => p_cplv_rec,
19546                                                 p_kplv_rec      => l_kplv_rec,
19547                                                 x_cplv_rec      => x_cplv_rec,
19548                                                 x_kplv_rec      => x_kplv_rec
19549                                                );
19550 
19551            IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19552                RAISE party_role_failed;
19553            END IF;
19554 
19555            debug_message('------>Party Roles Created');
19556 
19557 /* Passthru is moved to OKL table,do not need rule group LAPSTH
19558 
19559            okl_contract_top_line_pub.validate_passthru_rule(
19560                                   p_api_version         => 1.0,
19561                                   p_init_msg_list       => OKL_API.G_FALSE,
19562                                   x_return_status       => x_return_status,
19563                                   x_msg_count           => x_msg_count,
19564                                   x_msg_data            => x_msg_data,
19565                                   p_line_id             => p_service_line_id,
19566                                   p_vendor_id           => x_service_vendor_id,
19567                                   p_payment_term        => p_payment_term,
19568                                   p_payment_term_id     => p_payment_term_id,
19569                                   p_pay_to_site         => p_vendor_paysite_name,
19570                                   p_pay_to_site_id      => p_vendor_paysite_id,
19571                                   p_payment_method_code => p_vendor_payment_method,
19572                                   x_payment_term_id1    => x_payment_term_id1,
19573                                   x_pay_site_id1        => x_pay_site_id1,
19574                                   x_payment_method_id1  => x_payment_method_id1
19575                                  );
19576 
19577             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19578                RAISE party_role_failed;
19579             END IF;
19580          -- Rule Group LAPSTH
19581          l_rgpv_rec            := NULL;
19582          l_rgp_id              := NULL;
19583          l_rgpv_rec.rgd_code   := 'LAPSTH';
19584          l_rgpv_rec.chr_id     := NULL;
19585          l_rgpv_rec.dnz_chr_id := p_chr_id;
19586          l_rgpv_rec.cle_id     := p_service_line_id;
19587          l_rgpv_rec.rgp_type   := 'KRG';
19588 
19589          l_rulv_rec := NULL;
19590 
19591          --debug_message('Term: '||x_payment_term_id1);
19592 
19593          IF (x_payment_term_id1 IS NOT NULL) THEN
19594 
19595             l_rulv_rec.jtot_object1_code         := 'OKX_PPAYTERM';
19596             l_rulv_rec.object1_id1               := x_payment_term_id1;
19597             l_rulv_rec.object1_id2               := '#';
19598             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
19599             l_rulv_rec.dnz_chr_id                := p_chr_id;
19600             l_rulv_rec.rule_information_category := 'LAPTR';
19601             l_rulv_rec.std_template_yn           := 'N';
19602             l_rulv_rec.warn_yn                   := 'N';
19603          END IF;
19604 
19605          create_rule_group_and_rule(
19606                                     x_return_status => x_return_status,
19607                                     x_msg_count     => x_msg_count,
19608                                     x_msg_data      => x_msg_data,
19609                                     p_rgp_id        => l_rgp_id,
19610                                     p_rgpv_rec      => l_rgpv_rec,
19611                                     p_rulv_rec      => l_rulv_rec,
19612                                     x_rgpv_rec      => x_rgpv_rec,
19613                                     x_rulv_rec      => x_rulv_rec
19614                                    );
19615          l_progress := '1.2';
19616          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19617              raise party_role_failed;
19618          END IF;
19619 
19620          debug_message('------>Rule: LAPSTH/LAPTR processed');
19621 
19622          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
19623             l_rgp_id := x_rgpv_rec.id;
19624          END IF;
19625 
19626          l_rulv_rec := NULL;
19627          --debug_message('Site: '||x_pay_site_id1);
19628          IF (x_pay_site_id1 IS NOT NULL) THEN
19629 
19630             l_rulv_rec.jtot_object1_code         := 'OKX_PAYTO';
19631             l_rulv_rec.object1_id1               := x_pay_site_id1;
19632             l_rulv_rec.object1_id2               := '#';
19633             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
19634             l_rulv_rec.dnz_chr_id                := p_chr_id;
19635             l_rulv_rec.rule_information_category := 'LAPTO';
19636             l_rulv_rec.std_template_yn           := 'N';
19637             l_rulv_rec.warn_yn                   := 'N';
19638          END IF;
19639 
19640          create_rule_group_and_rule(
19641                                     x_return_status => x_return_status,
19642                                     x_msg_count     => x_msg_count,
19643                                     x_msg_data      => x_msg_data,
19644                                     p_rgp_id        => l_rgp_id,
19645                                     p_rgpv_rec      => l_rgpv_rec,
19646                                     p_rulv_rec      => l_rulv_rec,
19647                                     x_rgpv_rec      => x_rgpv_rec,
19648                                     x_rulv_rec      => x_rulv_rec
19649                                    );
19650          l_progress := '1.2';
19651          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19652              raise party_role_failed;
19653          END IF;
19654 
19655          debug_message('------>Rule: LAPSTH/LAPTO processed');
19656          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
19657             l_rgp_id := x_rgpv_rec.id;
19658          END IF;
19659 
19660          l_rulv_rec := NULL;
19661          --debug_message('Pay method: '||x_payment_method_id1);
19662          IF (x_payment_method_id1 IS NOT NULL) THEN
19663 
19664 
19665             --l_rulv_rec.jtot_object1_code         := 'OKX_PPAYTERM';
19666             --l_rulv_rec.object1_id1               := x_payment_method_id1;
19667             --l_rulv_rec.object1_id2               := '#';
19668 
19669             l_rulv_rec.rule_information1         := x_payment_method_id1;
19670             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
19671             l_rulv_rec.dnz_chr_id                := p_chr_id;
19672             l_rulv_rec.rule_information_category := 'LAVPMT';
19673             l_rulv_rec.std_template_yn           := 'N';
19674             l_rulv_rec.warn_yn                   := 'N';
19675          END IF;
19676 
19677          create_rule_group_and_rule(
19678                                     x_return_status => x_return_status,
19679                                     x_msg_count     => x_msg_count,
19680                                     x_msg_data      => x_msg_data,
19681                                     p_rgp_id        => l_rgp_id,
19682                                     p_rgpv_rec      => l_rgpv_rec,
19683                                     p_rulv_rec      => l_rulv_rec,
19684                                     x_rgpv_rec      => x_rgpv_rec,
19685                                     x_rulv_rec      => x_rulv_rec
19686                                    );
19687          l_progress := '1.2';
19688          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19689              raise party_role_failed;
19690          END IF;
19691 
19692          debug_message('------>Rule: LAPSTH/LAVPMT processed');
19693          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
19694             l_rgp_id := x_rgpv_rec.id;
19695          END IF;
19696 
19697          l_rulv_rec := NULL;
19698 
19699          IF (p_passthrough_percent IS NOT NULL) THEN
19700             l_rulv_rec.rule_information1         := p_passthrough_percent;
19701             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
19702             l_rulv_rec.dnz_chr_id                := p_chr_id;
19703             l_rulv_rec.rule_information_category := 'LAPTPR';
19704             l_rulv_rec.std_template_yn           := 'N';
19705             l_rulv_rec.warn_yn                   := 'N';
19706          END IF;
19707 
19708          create_rule_group_and_rule(
19709                                  x_return_status => x_return_status,
19710                                  x_msg_count     => x_msg_count,
19711                                  x_msg_data      => x_msg_data,
19712                                  p_rgp_id        => l_rgp_id,
19713                                  p_rgpv_rec      => l_rgpv_rec,
19714                                  p_rulv_rec      => l_rulv_rec,
19715                                  x_rgpv_rec      => x_rgpv_rec,
19716                                  x_rulv_rec      => x_rulv_rec
19717                                 );
19718 
19719          l_progress := '1.5';
19720          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19721              raise party_role_failed;
19722          END IF;
19723 
19724          debug_message('------>Rule: LAPSTH/LAPTRP processed');
19725 
19726          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
19727             l_rgp_id := x_rgpv_rec.id;
19728          END IF;
19729 
19730          l_rulv_rec            := NULL;
19731          IF (p_passthrough_basis_code IS NOT NULL) THEN
19732             l_rulv_rec.rule_information1         := p_passthrough_basis_code;
19733             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
19734             l_rulv_rec.dnz_chr_id                := p_chr_id;
19735             l_rulv_rec.rule_information_category := 'LAPTBC';
19736             l_rulv_rec.std_template_yn           := 'N';
19737             l_rulv_rec.warn_yn                   := 'N';
19738          END IF;
19739 
19740          create_rule_group_and_rule(
19741                                  x_return_status => x_return_status,
19742                                  x_msg_count     => x_msg_count,
19743                                  x_msg_data      => x_msg_data,
19744                                  p_rgp_id        => l_rgp_id,
19745                                  p_rgpv_rec      => l_rgpv_rec,
19746                                  p_rulv_rec      => l_rulv_rec,
19747                                  x_rgpv_rec      => x_rgpv_rec,
19748                                  x_rulv_rec      => x_rulv_rec
19749                                 );
19750 
19751          l_progress := '1.6';
19752          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19753              raise party_role_failed;
19754          END IF;
19755 
19756          debug_message('------>Rule: LAPSTH/LAPTBC processed');
19757          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
19758             l_rgp_id := x_rgpv_rec.id;
19759          END IF;
19760 */
19761       END IF; -- service vendor
19762 
19763       END IF;
19764 
19765       --debug_message('Fees vendor: '||p_fees_vendor_name);
19766       --debug_message('Line Type: '|| p_line_type);
19767 
19768       IF (p_line_type = 'FEE') THEN
19769          --debug_message('Inside FEE line type');
19770       IF (p_fees_vendor_id IS NOT NULL) THEN
19771            x_fees_vendor_id := p_fees_vendor_id;
19772       ELSIF (p_fees_vendor_name IS NOT NULL) THEN
19773            get_vendor_id (
19774                        x_return_status     => x_return_status,
19775                        x_msg_count         => x_msg_count,
19776                        x_msg_data          => x_msg_data,
19777                        p_contract_number   => p_contract_number,
19778                        p_line_number       => p_line_number,
19779                        x_vendor_id         => x_fees_vendor_id,
19780                        p_vendor_name       => p_fees_vendor_name
19781                       );
19782            IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19783               RAISE party_role_failed;
19784            END IF;
19785       END IF;
19786 
19787       debug_message('------>FEE Vendor ID: '||x_fees_vendor_id);
19788       IF (x_fees_vendor_id IS NOT NULL) THEN
19789 
19790            p_cplv_rec                   := NULL;
19791            l_kplv_rec                   := NULL;
19792 
19793            IF (p_line_number IS NOT NULL) THEN
19794               p_cplv_rec.chr_id            := NULL;
19795               p_cplv_rec.dnz_chr_id        := p_chr_id;
19796               p_cplv_rec.cle_id            := p_fee_line_id;
19797            ELSE
19798               p_cplv_rec.chr_id            := p_chr_id;
19799               p_cplv_rec.dnz_chr_id        := p_chr_id;
19800               p_cplv_rec.cle_id            := NULL;
19801            END IF;
19802            p_cplv_rec.object1_id1       := TO_CHAR(x_fees_vendor_id);
19803            p_cplv_rec.object1_id2       := '#';
19804            p_cplv_rec.jtot_object1_code := 'OKX_VENDOR';
19805            p_cplv_rec.rle_code          := 'OKL_VENDOR';
19806 
19807            p_cplv_rec.bill_to_site_use_id := l_vend_bill_to_addr_id;
19808            p_cplv_rec.cust_acct_id        := l_vend_cust_acc_id;
19809 
19810            OKL_K_PARTY_ROLES_PVT.create_k_party_role(
19811                                                 p_api_version   => 1.0,
19812                                                 p_init_msg_list => OKL_API.G_FALSE,
19813                                                 x_return_status => x_return_status,
19814                                                 x_msg_count     => x_msg_count,
19815                                                 x_msg_data      => x_msg_data,
19816                                                 p_cplv_rec      => p_cplv_rec,
19817                                                 p_kplv_rec      => l_kplv_rec,
19818                                                 x_cplv_rec      => x_cplv_rec,
19819                                                 x_kplv_rec      => x_kplv_rec
19820                                                );
19821 
19822            IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19823                RAISE party_role_failed;
19824            END IF;
19825 
19826            debug_message('------>Fee Vendor Processed');
19827 
19828 /* Passthru is moved to OKL table,do not need rule group LAPSTH
19829 
19830            okl_contract_top_line_pub.validate_passthru_rule(
19831                                   p_api_version         => 1.0,
19832                                   p_init_msg_list       => OKL_API.G_FALSE,
19833                                   x_return_status       => x_return_status,
19834                                   x_msg_count           => x_msg_count,
19835                                   x_msg_data            => x_msg_data,
19836                                   p_line_id             => p_fee_line_id,
19837                                   p_vendor_id           => x_fees_vendor_id,
19838                                   p_payment_term        => p_payment_term,
19839                                   p_payment_term_id     => p_payment_term_id,
19840                                   p_pay_to_site         => p_vendor_paysite_name,
19841                                   p_pay_to_site_id      => p_vendor_paysite_id,
19842                                   p_payment_method_code => p_vendor_payment_method,
19843                                   x_payment_term_id1    => x_payment_term_id1,
19844                                   x_pay_site_id1        => x_pay_site_id1,
19845                                   x_payment_method_id1  => x_payment_method_id1
19846                                  );
19847 
19848             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19849                RAISE party_role_failed;
19850             END IF;
19851 
19852          -- Rule Group LAPSTH
19853          l_rgpv_rec            := NULL;
19854          l_rgp_id              := NULL;
19855          l_rgpv_rec.rgd_code   := 'LAPSTH';
19856          l_rgpv_rec.chr_id     := NULL;
19857          l_rgpv_rec.dnz_chr_id := p_chr_id;
19858          l_rgpv_rec.cle_id     := p_fee_line_id;
19859          l_rgpv_rec.rgp_type   := 'KRG';
19860 
19861          l_rulv_rec := NULL;
19862 
19863          --debug_message('Term: '||x_payment_term_id1);
19864 
19865          IF (x_payment_term_id1 IS NOT NULL) THEN
19866 
19867             l_rulv_rec.jtot_object1_code         := 'OKX_PPAYTERM';
19868             l_rulv_rec.object1_id1               := x_payment_term_id1;
19869             l_rulv_rec.object1_id2               := '#';
19870             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
19871             l_rulv_rec.dnz_chr_id                := p_chr_id;
19872             l_rulv_rec.rule_information_category := 'LAPTR';
19873             l_rulv_rec.std_template_yn           := 'N';
19874             l_rulv_rec.warn_yn                   := 'N';
19875          END IF;
19876 
19877          create_rule_group_and_rule(
19878                                     x_return_status => x_return_status,
19879                                     x_msg_count     => x_msg_count,
19880                                     x_msg_data      => x_msg_data,
19881                                     p_rgp_id        => l_rgp_id,
19882                                     p_rgpv_rec      => l_rgpv_rec,
19883                                     p_rulv_rec      => l_rulv_rec,
19884                                     x_rgpv_rec      => x_rgpv_rec,
19885                                     x_rulv_rec      => x_rulv_rec
19886                                    );
19887          l_progress := '1.2';
19888          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19889              raise party_role_failed;
19890          END IF;
19891 
19892          debug_message('------>Fee Rule: LAPSTH/LAPTR processed');
19893          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
19894             l_rgp_id := x_rgpv_rec.id;
19895          END IF;
19896          l_rulv_rec := NULL;
19897          --debug_message('Site: '||x_pay_site_id1);
19898          IF (x_pay_site_id1 IS NOT NULL) THEN
19899 
19900             l_rulv_rec.jtot_object1_code         := 'OKX_PAYTO';
19901             l_rulv_rec.object1_id1               := x_pay_site_id1;
19902             l_rulv_rec.object1_id2               := '#';
19903             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
19904             l_rulv_rec.dnz_chr_id                := p_chr_id;
19905             l_rulv_rec.rule_information_category := 'LAPTO';
19906             l_rulv_rec.std_template_yn           := 'N';
19907             l_rulv_rec.warn_yn                   := 'N';
19908          END IF;
19909 
19910          create_rule_group_and_rule(
19911                                     x_return_status => x_return_status,
19912                                     x_msg_count     => x_msg_count,
19913                                     x_msg_data      => x_msg_data,
19914                                     p_rgp_id        => l_rgp_id,
19915                                     p_rgpv_rec      => l_rgpv_rec,
19916                                     p_rulv_rec      => l_rulv_rec,
19917                                     x_rgpv_rec      => x_rgpv_rec,
19918                                     x_rulv_rec      => x_rulv_rec
19919                                    );
19920          l_progress := '1.2';
19921          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19922              raise party_role_failed;
19923          END IF;
19924 
19925          debug_message('------>Fee Rule: LAPSTH/LAPTO processed');
19926          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
19927             l_rgp_id := x_rgpv_rec.id;
19928          END IF;
19929 
19930          l_rulv_rec := NULL;
19931          --debug_message('Pay method: '||x_payment_method_id1);
19932          IF (x_payment_method_id1 IS NOT NULL) THEN
19933 
19934 
19935             --l_rulv_rec.jtot_object1_code         := 'OKX_PPAYTERM';
19936             --l_rulv_rec.object1_id1               := x_payment_method_id1;
19937             --l_rulv_rec.object1_id2               := '#';
19938 
19939             l_rulv_rec.rule_information1         := x_payment_method_id1;
19940             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
19941             l_rulv_rec.dnz_chr_id                := p_chr_id;
19942             l_rulv_rec.rule_information_category := 'LAVPMT';
19943             l_rulv_rec.std_template_yn           := 'N';
19944             l_rulv_rec.warn_yn                   := 'N';
19945          END IF;
19946 
19947          create_rule_group_and_rule(
19948                                     x_return_status => x_return_status,
19949                                     x_msg_count     => x_msg_count,
19950                                     x_msg_data      => x_msg_data,
19951                                     p_rgp_id        => l_rgp_id,
19952                                     p_rgpv_rec      => l_rgpv_rec,
19953                                     p_rulv_rec      => l_rulv_rec,
19954                                     x_rgpv_rec      => x_rgpv_rec,
19955                                     x_rulv_rec      => x_rulv_rec
19956                                    );
19957          l_progress := '1.2';
19958          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19959              raise party_role_failed;
19960          END IF;
19961 
19962          debug_message('------>Fee Rule: LAPSTH/LAVPMT processed');
19963          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
19964             l_rgp_id := x_rgpv_rec.id;
19965          END IF;
19966 
19967          l_rulv_rec := NULL;
19968 
19969          IF (p_passthrough_percent IS NOT NULL) THEN
19970             l_rulv_rec.rule_information1         := p_passthrough_percent;
19971             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
19972             l_rulv_rec.dnz_chr_id                := p_chr_id;
19973             l_rulv_rec.rule_information_category := 'LAPTPR';
19974             l_rulv_rec.std_template_yn           := 'N';
19975             l_rulv_rec.warn_yn                   := 'N';
19976          END IF;
19977 
19978          create_rule_group_and_rule(
19979                                  x_return_status => x_return_status,
19980                                  x_msg_count     => x_msg_count,
19981                                  x_msg_data      => x_msg_data,
19982                                  p_rgp_id        => l_rgp_id,
19983                                  p_rgpv_rec      => l_rgpv_rec,
19984                                  p_rulv_rec      => l_rulv_rec,
19985                                  x_rgpv_rec      => x_rgpv_rec,
19986                                  x_rulv_rec      => x_rulv_rec
19987                                 );
19988 
19989          l_progress := '1.5';
19990          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
19991              raise party_role_failed;
19992          END IF;
19993 
19994          debug_message('------>Fee Rule: LAPSTH/LAPTPR processed');
19995          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
19996             l_rgp_id := x_rgpv_rec.id;
19997          END IF;
19998 
19999          l_rulv_rec            := NULL;
20000          IF (p_passthrough_basis_code IS NOT NULL) THEN
20001             l_rulv_rec.rule_information1         := p_passthrough_basis_code;
20002             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20003             l_rulv_rec.dnz_chr_id                := p_chr_id;
20004             l_rulv_rec.rule_information_category := 'LAPTBC';
20005             l_rulv_rec.std_template_yn           := 'N';
20006             l_rulv_rec.warn_yn                   := 'N';
20007          END IF;
20008 
20009          create_rule_group_and_rule(
20010                                  x_return_status => x_return_status,
20011                                  x_msg_count     => x_msg_count,
20012                                  x_msg_data      => x_msg_data,
20013                                  p_rgp_id        => l_rgp_id,
20014                                  p_rgpv_rec      => l_rgpv_rec,
20015                                  p_rulv_rec      => l_rulv_rec,
20016                                  x_rgpv_rec      => x_rgpv_rec,
20017                                  x_rulv_rec      => x_rulv_rec
20018                                 );
20019 
20020          l_progress := '1.6';
20021          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20022              raise party_role_failed;
20023          END IF;
20024 
20025          debug_message('------>Fee Rule: LAPSTH/LAPTBC processed');
20026          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
20027             l_rgp_id := x_rgpv_rec.id;
20028          END IF;
20029 */
20030       END IF; -- Fees vendor
20031       END IF;
20032 
20033       x_guarantor_id := NULL;
20034       IF (p_guarantor_id IS NOT NULl
20035           OR
20036           p_guarantor_number IS NOT NULL) THEN
20037          get_party_id(
20038                       x_return_status     => x_return_status,
20039                       x_msg_count         => x_msg_count,
20040                       x_msg_data          => x_msg_data,
20041                       p_contract_number   => p_contract_number,
20042                       p_line_number       => p_line_number,
20043                       p_party_id          => p_guarantor_id,
20044                       p_party_number      => p_guarantor_number,
20045                       x_party_id          => x_guarantor_id
20046                      );
20047          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20048             RAISE party_role_failed;
20049          END IF;
20050       END IF;
20051 
20052       debug_message('------>Guarantor id: '||x_guarantor_id);
20053 
20054       IF (x_guarantor_id IS NOT NULL) THEN
20055 
20056          -- Contract addl field, Bug 4558486, for party role at header level and asset vendor only
20057 
20058          debug_message('Guarantor DFF...'||x_guarantor_id);
20059 
20060          l_kplv_rec.validate_dff_yn          := 'Y';  -- always validate DFF
20061          l_kplv_rec.attribute_category       := p_attribute_category;
20062          debug_message('attribute_category: '||l_kplv_rec.attribute_category);
20063          l_kplv_rec.attribute1               := p_attribute1;
20064          debug_message('attribute1: '||l_kplv_rec.attribute1);
20065          l_kplv_rec.attribute2               := p_attribute2;
20066          debug_message('attribute2: '||l_kplv_rec.attribute2);
20067          l_kplv_rec.attribute3               := p_attribute3;
20068          l_kplv_rec.attribute4               := p_attribute4;
20069          l_kplv_rec.attribute5               := p_attribute5;
20070          l_kplv_rec.attribute6               := p_attribute6;
20071          l_kplv_rec.attribute7               := p_attribute7;
20072          l_kplv_rec.attribute8               := p_attribute8;
20073          l_kplv_rec.attribute9               := p_attribute9;
20074          l_kplv_rec.attribute10              := p_attribute10;
20075          l_kplv_rec.attribute11              := p_attribute11;
20076          l_kplv_rec.attribute12              := p_attribute12;
20077          l_kplv_rec.attribute13              := p_attribute13;
20078          l_kplv_rec.attribute14              := p_attribute14;
20079          l_kplv_rec.attribute15              := p_attribute15;
20080          -- Contract addl field, Bug 4558486
20081 
20082          p_cplv_rec                   := NULL;
20083          p_cplv_rec.chr_id            := p_chr_id;
20084          p_cplv_rec.dnz_chr_id        := p_chr_id;
20085          p_cplv_rec.cle_id            := NULL; -- always at header level
20086          p_cplv_rec.object1_id1       := TO_CHAR(x_guarantor_id);
20087          p_cplv_rec.object1_id2       := '#';
20088          p_cplv_rec.jtot_object1_code := 'OKX_PARTY';
20089          p_cplv_rec.rle_code          := 'GUARANTOR';
20090 
20091          OKL_K_PARTY_ROLES_PVT.create_k_party_role(
20092                                                 p_api_version   => 1.0,
20093                                                 p_init_msg_list => OKL_API.G_FALSE,
20094                                                 x_return_status => x_return_status,
20095                                                 x_msg_count     => x_msg_count,
20096                                                 x_msg_data      => x_msg_data,
20097                                                 p_cplv_rec      => p_cplv_rec,
20098                                                 p_kplv_rec      => l_kplv_rec,
20099                                                 x_cplv_rec      => x_cplv_rec,
20100                                                 x_kplv_rec      => x_kplv_rec
20101                                                );
20102 
20103          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20104             RAISE party_role_failed;
20105          END IF;
20106 
20107          l_rgpv_rec            := NULL;
20108          l_rgp_id              := NULL;
20109          l_rgpv_rec.rgd_code   := 'LAGRDT';
20110          l_rgpv_rec.chr_id     := p_chr_id;
20111          l_rgpv_rec.dnz_chr_id := p_chr_id;
20112          l_rgpv_rec.cle_id     := NULL; -- always at header level
20113          l_rgpv_rec.rgp_type   := 'KRG';
20114 
20115          l_rulv_rec            := NULL;
20116          IF (p_guarantor_type IS NOT NULL) THEN
20117 
20118             l_progress := 'P1.2';
20119 
20120             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20121             l_rulv_rec.dnz_chr_id                := p_chr_id;
20122             l_rulv_rec.rule_information1         := p_guarantor_type;
20123             l_rulv_rec.rule_information_category := 'LAGRNP';
20124             l_rulv_rec.std_template_yn           := 'N';
20125             l_rulv_rec.warn_yn                   := 'N';
20126          END IF;
20127 
20128          IF (p_guarantor_site_number IS NOT NULL
20129              OR
20130              p_guarantor_site_id IS NOT NULL
20131             ) THEN
20132             get_guarantor_address(
20133                                   x_return_status                => x_return_status,
20134                                   x_msg_count                    => x_msg_count,
20135                                   x_msg_data                     => x_msg_data,
20136                                   p_contract_number              => p_contract_number,
20137                                   p_line_number                  => p_line_number,
20138                                   p_guarantor_site_number        => p_guarantor_site_number,
20139                                   p_guarantor_site_id            => p_guarantor_site_id,
20140                                   x_guarantor_site_id            => x_guarantor_site_id
20141                                  );
20142 
20143             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20144                RAISE party_role_failed;
20145             END IF;
20146 
20147             l_rulv_rec.jtot_object1_code         := 'OKL_PARTYSITE'; -- Bug 5024651 'OKX_PARTSITE';
20148             l_rulv_rec.object1_id1               := TO_CHAR(x_guarantor_site_id);
20149             l_rulv_rec.object1_id2               := '#';
20150             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20151             l_rulv_rec.dnz_chr_id                := p_chr_id;
20152             l_rulv_rec.rule_information_category := 'LAGRNP';
20153             l_rulv_rec.std_template_yn           := 'N';
20154             l_rulv_rec.warn_yn                   := 'N';
20155 
20156          END IF;
20157 
20158          create_rule_group_and_rule(
20159                                  x_return_status => x_return_status,
20160                                  x_msg_count     => x_msg_count,
20161                                  x_msg_data      => x_msg_data,
20162                                  p_rgp_id        => l_rgp_id,
20163                                  p_rgpv_rec      => l_rgpv_rec,
20164                                  p_rulv_rec      => l_rulv_rec,
20165                                  x_rgpv_rec      => x_rgpv_rec,
20166                                  x_rulv_rec      => x_rulv_rec
20167                                 );
20168 
20169          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20170              raise party_role_failed;
20171          END IF;
20172 
20173          debug_message('------>Fee Rule: LAGRDT/LAGRNP processed');
20174          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
20175             l_rgp_id := x_rgpv_rec.id;
20176          END IF;
20177 
20178          IF (p_guarantor_type IS NOT NULL) THEN
20179 
20180             l_progress := 'P1.4';
20181             get_rrd_id(
20182                         x_return_status => x_return_status,
20183                         p_rgd_code      => 'LAGRDT',
20184                         p_rle_code      => 'GUARANTOR',
20185                         x_rrd_id        => x_rrd_id
20186                        );
20187             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20188                  okl_api.set_message(
20189                                      G_APP_NAME,
20190                                      G_GUARANTOR_SETUP_ERROR,
20191                                      'CONTRACT_NUM',
20192                                      p_contract_number
20193                                     );
20194                  x_return_status := OKL_API.G_RET_STS_ERROR;
20195                  RAISE party_role_failed;
20196             END IF;
20197 
20198             l_rmpv_rec.rgp_id     := x_rgpv_rec.id;
20199             l_rmpv_rec.cpl_id     := x_cplv_rec.id;
20200             l_rmpv_rec.rrd_id     := x_rrd_id;
20201             l_rmpv_rec.dnz_chr_id := p_chr_id;
20202 
20203             okl_rule_pub.create_rg_mode_pty_role(
20204                                                    p_api_version   => 1.0,
20205                                                    p_init_msg_list => OKL_API.G_FALSE,
20206                                                    x_return_status => x_return_status,
20207                                                    x_msg_count     => x_msg_count,
20208                                                    x_msg_data      => x_msg_data,
20209                                                    p_rmpv_rec      => l_rmpv_rec,
20210                                                    x_rmpv_rec      => x_rmpv_rec
20211                                                   );
20212             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20213                 x_return_status := OKL_API.G_RET_STS_ERROR;
20214                 raise party_role_failed;
20215             END IF;
20216 
20217             debug_message('------>Guaraontor type processed');
20218 
20219          END IF; -- guarantor_type
20220 
20221          l_rulv_rec := NULL;
20222          IF (p_guarantee_type IS NOT NULL) THEN
20223 
20224              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20225              l_rulv_rec.dnz_chr_id                := p_chr_id;
20226              l_rulv_rec.rule_information1         := p_guarantee_type;
20227              l_rulv_rec.rule_information_category := 'LAGRNT';
20228              l_rulv_rec.std_template_yn           := 'N';
20229              l_rulv_rec.warn_yn                   := 'N';
20230 
20231          END IF; -- guarantee_type
20232 
20233          IF (p_guaranteed_amount IS NOT NULL) THEN
20234 
20235              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20236              l_rulv_rec.dnz_chr_id                := p_chr_id;
20237              l_rulv_rec.rule_information2         := TO_CHAR(p_guaranteed_amount);
20238              l_rulv_rec.rule_information_category := 'LAGRNT';
20239              l_rulv_rec.std_template_yn           := 'N';
20240              l_rulv_rec.warn_yn                   := 'N';
20241          END IF; -- guaranteed_amount
20242 
20243          IF (p_guarantee_date IS NOT NULL) THEN
20244 
20245              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20246              l_rulv_rec.dnz_chr_id                := p_chr_id;
20247              l_rulv_rec.rule_information3         := get_canonicaL_date(p_guarantee_date);
20248              l_rulv_rec.rule_information_category := 'LAGRNT';
20249              l_rulv_rec.std_template_yn           := 'N';
20250              l_rulv_rec.warn_yn                   := 'N';
20251 
20252          END IF; -- guarantee_date
20253 
20254          IF (p_guarantee_comment IS NOT NULL) THEN
20255 
20256              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20257              l_rulv_rec.dnz_chr_id                := p_chr_id;
20258              l_rulv_rec.rule_information4         := p_guarantee_comment;
20259              l_rulv_rec.rule_information_category := 'LAGRNT';
20260              l_rulv_rec.std_template_yn           := 'N';
20261              l_rulv_rec.warn_yn                   := 'N';
20262 
20263          END IF; -- guarantee_comment
20264 
20265          create_rule_group_and_rule(
20266                                  x_return_status => x_return_status,
20267                                  x_msg_count     => x_msg_count,
20268                                  x_msg_data      => x_msg_data,
20269                                  p_rgp_id        => l_rgp_id,
20270                                  p_rgpv_rec      => l_rgpv_rec,
20271                                  p_rulv_rec      => l_rulv_rec,
20272                                  x_rgpv_rec      => x_rgpv_rec,
20273                                  x_rulv_rec      => x_rulv_rec
20274                                 );
20275 
20276          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20277              raise party_role_failed;
20278          END IF;
20279 
20280          debug_message('------>Rule: LAGRDT/LAGRNT processed');
20281 
20282          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
20283             l_rgp_id := x_rgpv_rec.id;
20284          END IF;
20285 
20286       END IF; -- guarantor_id
20287 
20288       -- Create Vendor Billing info, if any
20289       IF (p_billable_vendor_id IS NOT NULL) THEN
20290           x_billable_vendor_id := p_billable_vendor_id;
20291       ELSIF
20292           (p_billable_vendor_name IS NOT NULL) THEN
20293         get_vendor_id (
20294                        x_return_status     => x_return_status,
20295                        x_msg_count         => x_msg_count,
20296                        x_msg_data          => x_msg_data,
20297                        p_contract_number   => p_contract_number,
20298                        p_line_number       => p_line_number,
20299                        x_vendor_id         => x_billable_vendor_id,
20300                        p_vendor_name       => p_billable_vendor_name
20301                       );
20302         IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20303            RAISE party_role_failed;
20304         END IF;
20305       END IF;
20306 
20307       debug_message('------>Billable Vendor id: '||x_billable_vendor_id);
20308 
20309       IF (x_billable_vendor_id IS NOT NULL) THEN
20310 
20311          -- Create billing detail
20312          IF (x_billable_vendor_id <> x_asset_vendor_id) THEN
20313              okl_api.set_message(
20314                              G_APP_NAME,
20315                              G_BILL_VENDOR_INVALID,
20316                              'CONTRACT_NUM',
20317                              p_contract_number,
20318                              'VENDOR',
20319                              p_billable_vendor_id||', '||p_billable_vendor_name
20320                              );
20321               x_return_status := OKL_API.G_RET_STS_ERROR;
20322               RAISE party_role_failed;
20323          END IF;
20324 
20325          l_rgpv_rec            := NULL;
20326          l_rgp_id              := NULL;
20327          l_rgpv_rec.rgd_code   := 'LAVENB';
20328          l_rgpv_rec.chr_id     := p_chr_id;
20329          l_rgpv_rec.dnz_chr_id := p_chr_id;
20330          l_rgpv_rec.cle_id     := NULL; -- always at header level
20331          l_rgpv_rec.rgp_type   := 'KRG';
20332 
20333          l_rulv_rec            := NULL;
20334 
20335 /* Check above , Rule migration impact
20336          IF (p_vend_as_customer_id IS NOT NULL
20337              OR
20338              p_vend_as_customer_number IS NOT NULL) THEN
20339 
20340              OPEN customer_csr(p_vend_as_customer_number,
20341                                p_vend_as_customer_id);
20342 
20343              FETCH customer_csr INTO l_vend_cust_id;
20344              IF customer_csr%NOTFOUND THEN
20345                 okl_api.set_message(
20346                              G_APP_NAME,
20347                              G_INVALID_VALUE,
20348                              'CONTRACT_NUM',
20349                              p_contract_number,
20350                              'COL_NAME',
20351                              'VENDOR AS CUSTOMER ACCOUNT',
20352                              'COL_VALUE',
20353                               p_vend_as_customer_id||', '||p_vend_as_customer_number
20354                              );
20355                  x_return_status := OKL_API.G_RET_STS_ERROR;
20356                  RAISE party_role_failed;
20357              END IF;
20358 
20359              CLOSE customer_csr;
20360 */
20361           IF (l_vend_cust_id IS NOT NULL) THEN
20362 
20363              l_rulv_rec.jtot_object1_code         := 'OKX_PARTY';
20364              l_rulv_rec.object1_id1               := TO_CHAR(l_vend_cust_id);
20365              l_rulv_rec.object1_id2               := '#';
20366              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20367              l_rulv_rec.dnz_chr_id                := p_chr_id;
20368              l_rulv_rec.rule_information_category := 'LAVENC';
20369              l_rulv_rec.std_template_yn           := 'N';
20370              l_rulv_rec.warn_yn                   := 'N';
20371 
20372              create_rule_group_and_rule(
20373                                  x_return_status => x_return_status,
20374                                  x_msg_count     => x_msg_count,
20375                                  x_msg_data      => x_msg_data,
20376                                  p_rgp_id        => l_rgp_id,
20377                                  p_rgpv_rec      => l_rgpv_rec,
20378                                  p_rulv_rec      => l_rulv_rec,
20379                                  x_rgpv_rec      => x_rgpv_rec,
20380                                  x_rulv_rec      => x_rulv_rec
20381                                 );
20382 
20383              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20384                  raise party_role_failed;
20385              END IF;
20386 
20387              IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
20388                 l_rgp_id := x_rgpv_rec.id;
20389              END IF;
20390              l_rulv_rec := NULL;
20391 
20392          ELSE
20393              okl_api.set_message(
20394                                  G_APP_NAME,
20395                                  G_MISSING_VALUE,
20396                                  'CONTRACT_NUM',
20397                                  p_contract_number,
20398                                  'COL_NAME',
20399                                  'VENDOR AS CUSTOMER'
20400                                 );
20401               x_return_status := OKL_API.G_RET_STS_ERROR;
20402               RAISE party_role_failed;
20403          END IF;
20404 
20405 /* Rule Migration
20406          IF (p_vend_as_cust_acc_id IS NOT NULL
20407              OR
20408              p_vend_as_cust_acc_number IS NOT NULL) THEN
20409 
20410              get_customer_account_id(
20411                                   x_return_status           => x_return_status,
20412                                   x_msg_count               => x_msg_count,
20413                                   x_msg_data                => x_msg_data,
20414                                   p_contract_number         => p_contract_number,
20415                                   p_customer_id             => l_vend_cust_id,
20416                                   p_customer_account_id     => p_vend_as_cust_acc_id,
20417                                   p_customer_account_number => p_vend_as_cust_acc_number,
20418                                   x_customer_account_id     => l_vend_cust_acc_id
20419                                  );
20420 
20421              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20422                 x_return_status := OKL_API.G_RET_STS_ERROR;
20423                 raise party_role_failed;
20424              END IF;
20425 
20426              debug_message('------>l_vend_cust_acc_id : '||l_vend_cust_acc_id);
20427 
20428              l_rulv_rec.jtot_object1_code         := 'OKX_CUSTACCT';
20429              l_rulv_rec.object1_id1               := TO_CHAR(l_vend_cust_acc_id);
20430              l_rulv_rec.object1_id2               := '#';
20431              l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20432              l_rulv_rec.dnz_chr_id                := p_chr_id;
20433              l_rulv_rec.rule_information_category := 'CAN';
20434              l_rulv_rec.std_template_yn           := 'N';
20435              l_rulv_rec.warn_yn                   := 'N';
20436 
20437              create_rule_group_and_rule(
20438                                  x_return_status => x_return_status,
20439                                  x_msg_count     => x_msg_count,
20440                                  x_msg_data      => x_msg_data,
20441                                  p_rgp_id        => l_rgp_id,
20442                                  p_rgpv_rec      => l_rgpv_rec,
20443                                  p_rulv_rec      => l_rulv_rec,
20444                                  x_rgpv_rec      => x_rgpv_rec,
20445                                  x_rulv_rec      => x_rulv_rec
20446                                 );
20447 
20448              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20449                  raise party_role_failed;
20450              END IF;
20451 
20452              IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
20453                 l_rgp_id := x_rgpv_rec.id;
20454              END IF;
20455              l_rulv_rec := NULL;
20456          ELSE
20457              okl_api.set_message(
20458                                  G_APP_NAME,
20459                                  G_MISSING_VALUE,
20460                                  'CONTRACT_NUM',
20461                                  p_contract_number,
20462                                  'COL_NAME',
20463                                  'VENDOR AS CUSTOMER ACCOUNT'
20464                                 );
20465               x_return_status := OKL_API.G_RET_STS_ERROR;
20466               RAISE party_role_failed;
20467          END IF;
20468 */
20469 
20470 /* Rule Migration
20471          IF (p_vend_bill_to_addr_id IS NOT NULL
20472              OR
20473              p_vend_bill_to_addr IS NOT NULL) THEN
20474             get_bill_to_address_id(
20475                              x_return_status           => x_return_status,
20476                              x_msg_count               => x_msg_count,
20477                              x_msg_data                => x_msg_data,
20478                              p_contract_number         => p_contract_number,
20479                              p_auth_org_id             => p_auth_org_id,
20480                              p_bill_to_address_id      => p_vend_bill_to_addr_id,
20481                              p_bill_to_address         => p_vend_bill_to_addr,
20482                              p_customer_account_id     => l_vend_cust_acc_id,
20483                              x_bill_to_address_id      => l_vend_bill_to_addr_id
20484                             );
20485 
20486             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20487                x_return_status := OKL_API.G_RET_STS_ERROR;
20488                raise party_role_failed;
20489             END IF;
20490 
20491             debug_message('------>l_vend_bill_to_addr_id : '||l_vend_bill_to_addr_id);
20492             l_rulv_rec.jtot_object1_code         := 'OKX_BILLTO';
20493             l_rulv_rec.object1_id1               := TO_CHAR(l_vend_bill_to_addr_id);
20494             l_rulv_rec.object1_id2               := '#';
20495             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20496             l_rulv_rec.dnz_chr_id                := p_chr_id;
20497             l_rulv_rec.rule_information_category := 'BTO';
20498             l_rulv_rec.std_template_yn           := 'N';
20499             l_rulv_rec.warn_yn                   := 'N';
20500 
20501             create_rule_group_and_rule(
20502                                  x_return_status => x_return_status,
20503                                  x_msg_count     => x_msg_count,
20504                                  x_msg_data      => x_msg_data,
20505                                  p_rgp_id        => l_rgp_id,
20506                                  p_rgpv_rec      => l_rgpv_rec,
20507                                  p_rulv_rec      => l_rulv_rec,
20508                                  x_rgpv_rec      => x_rgpv_rec,
20509                                  x_rulv_rec      => x_rulv_rec
20510                                 );
20511 
20512             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20513                 raise party_role_failed;
20514             END IF;
20515 
20516             IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
20517                l_rgp_id := x_rgpv_rec.id;
20518             END IF;
20519             l_rulv_rec := NULL;
20520          ELSE
20521              okl_api.set_message(
20522                                  G_APP_NAME,
20523                                  G_MISSING_VALUE,
20524                                  'CONTRACT_NUM',
20525                                  p_contract_number,
20526                                  'COL_NAME',
20527                                  'VENDOR BILL TO ADDRESS'
20528                                 );
20529               x_return_status := OKL_API.G_RET_STS_ERROR;
20530               RAISE party_role_failed;
20531          END IF;
20532 */
20533 
20534          IF (p_vend_payment_method_id IS NOT NULL
20535              OR
20536              p_vend_payment_method IS NOT NULL) THEN
20537              get_payment_method_id(
20538                                x_return_status           => x_return_status,
20539                                x_msg_count               => x_msg_count,
20540                                x_msg_data                => x_msg_data,
20541                                p_contract_number         => p_contract_number,
20542                                p_customer_account_id     => l_vend_cust_acc_id,
20543                                p_bill_to_address_id      => l_vend_bilL_to_addr_id,
20544                                p_payment_method_id       => p_vend_payment_method_id,
20545                                p_payment_method          => p_vend_payment_method,
20546                                x_payment_method_id       => l_vend_payment_method_id
20547                               );
20548 
20549              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20550                   x_return_status := OKL_API.G_RET_STS_ERROR;
20551                   raise party_role_failed;
20552              END IF;
20553 
20554              IF (l_vend_payment_method_id IS NOT NULL) THEN
20555                 l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20556                 l_rulv_rec.dnz_chr_id                := p_chr_id;
20557                 l_rulv_rec.jtot_object1_code         := 'OKX_RCPTMTH';
20558                 l_rulv_rec.object1_id1               := TO_CHAR(l_vend_payment_method_id);
20559                 l_rulv_rec.object1_id2               := '#';
20560                 l_rulv_rec.rule_information_category := 'LAPMTH';
20561                 l_rulv_rec.std_template_yn           := 'N';
20562                 l_rulv_rec.warn_yn                   := 'N';
20563              END IF;
20564 
20565              --debug_message('Payment Method: '||l_vend_payment_method_id);
20566 
20567              create_rule_group_and_rule(
20568                                         x_return_status => x_return_status,
20569                                         x_msg_count     => x_msg_count,
20570                                         x_msg_data      => x_msg_data,
20571                                         p_rgp_id        => l_rgp_id,
20572                                         p_rgpv_rec      => l_rgpv_rec,
20573                                         p_rulv_rec      => l_rulv_rec,
20574                                         x_rgpv_rec      => x_rgpv_rec,
20575                                         x_rulv_rec      => x_rulv_rec
20576                                        );
20577 
20578              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20579                   x_return_status := OKL_API.G_RET_STS_ERROR;
20580                   raise party_role_failed;
20581              END IF;
20582 
20583              IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
20584                 l_rgp_id := x_rgpv_rec.id;
20585              END IF;
20586 
20587              l_rulv_rec := NULL;
20588 
20589          END IF;
20590 
20591          IF (p_vend_bank_acc_id IS NOT NULL
20592              OR
20593              p_vend_bank_acc_number IS NOT NULL) THEN
20594             get_bank_account_id(
20595                                 x_return_status           => x_return_status,
20596                                 x_msg_count               => x_msg_count,
20597                                 x_msg_data                => x_msg_data,
20598                                 p_contract_number         => p_contract_number,
20599                                 p_auth_org_id             => p_auth_org_id,
20600                                 p_bank_account_id         => p_vend_bank_acc_id,
20601                                 p_bank_account_number     => p_vend_bank_acc_number,
20602                                 p_customer_account_id     => l_vend_cust_acc_id,
20603                                 p_cust_site_id            => l_vend_bill_to_addr_id,
20604                                 x_bank_account_id         => l_vend_bank_acc_id
20605                                );
20606             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20607                 x_return_status := OKL_API.G_RET_STS_ERROR;
20608                 raise party_role_failed;
20609             END IF;
20610 
20611             IF (l_vend_bank_acc_id IS NOT NULL) THEN
20612                 l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20613                 l_rulv_rec.dnz_chr_id                := p_chr_id;
20614                 l_rulv_rec.jtot_object1_code         := 'OKX_CUSTBKAC';
20615                 l_rulv_rec.object1_id1               := TO_CHAR(l_vend_bank_acc_id);
20616                 l_rulv_rec.object1_id2               := '#';
20617                 l_rulv_rec.rule_information_category := 'LABACC';
20618                 l_rulv_rec.std_template_yn           := 'N';
20619                 l_rulv_rec.warn_yn                   := 'N';
20620              END IF;
20621 
20622              debug_message('Bank Acc: '|| l_vend_bank_acc_id);
20623 
20624              create_rule_group_and_rule(
20625                                         x_return_status => x_return_status,
20626                                         x_msg_count     => x_msg_count,
20627                                         x_msg_data      => x_msg_data,
20628                                         p_rgp_id        => l_rgp_id,
20629                                         p_rgpv_rec      => l_rgpv_rec,
20630                                         p_rulv_rec      => l_rulv_rec,
20631                                         x_rgpv_rec      => x_rgpv_rec,
20632                                         x_rulv_rec      => x_rulv_rec
20633                                        );
20634 
20635              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20636                   x_return_status := OKL_API.G_RET_STS_ERROR;
20637                   raise party_role_failed;
20638              END IF;
20639 
20640              IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
20641                 l_rgp_id := x_rgpv_rec.id;
20642              END IF;
20643              l_rulv_rec := NULL;
20644 
20645           END IF; -- vend_bank_account
20646 
20647           IF (p_vend_invoice_format_id IS NOT NULL
20648               OR
20649               p_vend_invoice_format_code IS NOT NULL) THEN
20650               get_invoice_format_id(
20651                             x_return_status           => x_return_status,
20652                             x_msg_count               => x_msg_count,
20653                             x_msg_data                => x_msg_data,
20654                             p_contract_number         => p_contract_number,
20655                             p_invoice_format_id       => p_vend_invoice_format_id,
20656                             p_invoice_format_code     => p_vend_invoice_format_code,
20657                             x_invoice_format_id       => l_vend_invoice_format_id,
20658                             x_invoice_format_name     => l_vend_invoice_format_name
20659                            );
20660 
20661               IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20662                   x_return_status := OKL_API.G_RET_STS_ERROR;
20663                   raise party_role_failed;
20664               END IF;
20665 
20666               debug_message('Invoice Format: '||l_vend_invoice_format_name);
20667 
20668               IF (l_vend_invoice_format_name IS NOT NULL) THEN
20669                  l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20670                  l_rulv_rec.dnz_chr_id                := p_chr_id;
20671                  l_rulv_rec.rule_information1         := l_vend_invoice_format_name;
20672                  l_rulv_rec.rule_information_category := 'LAINVD';
20673                  l_rulv_rec.std_template_yn           := 'N';
20674                  l_rulv_rec.warn_yn                   := 'N';
20675               END IF;
20676           END IF;
20677 
20678           IF (p_vend_review_invoice_flag IS NOT NULL) THEN
20679               l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20680               l_rulv_rec.dnz_chr_id                := p_chr_id;
20681               l_rulv_rec.rule_information4         := p_vend_review_invoice_flag;
20682               l_rulv_rec.rule_information_category := 'LAINVD';
20683               l_rulv_rec.std_template_yn           := 'N';
20684               l_rulv_rec.warn_yn                   := 'N';
20685           END IF;
20686 
20687           create_rule_group_and_rule(
20688                                      x_return_status => x_return_status,
20689                                      x_msg_count     => x_msg_count,
20690                                      x_msg_data      => x_msg_data,
20691                                      p_rgp_id        => l_rgp_id,
20692                                      p_rgpv_rec      => l_rgpv_rec,
20693                                      p_rulv_rec      => l_rulv_rec,
20694                                      x_rgpv_rec      => x_rgpv_rec,
20695                                      x_rulv_rec      => x_rulv_rec
20696                                     );
20697 
20698           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20699                x_return_status := OKL_API.G_RET_STS_ERROR;
20700                raise party_role_failed;
20701           END IF;
20702 
20703           IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
20704              l_rgp_id := x_rgpv_rec.id;
20705           END IF;
20706           l_rulv_rec := NULL;
20707 
20708          IF (p_vend_reason_for_inv_review IS NOT NULL) THEN
20709             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20710             l_rulv_rec.dnz_chr_id                := p_chr_id;
20711             l_rulv_rec.rule_information1         := p_vend_reason_for_inv_review;
20712             l_rulv_rec.rule_information_category := 'LAINPR';
20713             l_rulv_rec.std_template_yn           := 'N';
20714             l_rulv_rec.warn_yn                   := 'N';
20715          END IF;
20716 
20717          IF (p_vend_inv_review_until_date IS NOT NULL) THEN
20718             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
20719             l_rulv_rec.dnz_chr_id                := p_chr_id;
20720             l_rulv_rec.rule_information2         := get_canonical_date(p_vend_inv_review_until_date);
20721             l_rulv_rec.rule_information_category := 'LAINPR';
20722             l_rulv_rec.std_template_yn           := 'N';
20723             l_rulv_rec.warn_yn                   := 'N';
20724          END IF;
20725 
20726          create_rule_group_and_rule(
20727                                     x_return_status => x_return_status,
20728                                     x_msg_count     => x_msg_count,
20729                                     x_msg_data      => x_msg_data,
20730                                     p_rgp_id        => l_rgp_id,
20731                                     p_rgpv_rec      => l_rgpv_rec,
20732                                     p_rulv_rec      => l_rulv_rec,
20733                                     x_rgpv_rec      => x_rgpv_rec,
20734                                     x_rulv_rec      => x_rulv_rec
20735                                    );
20736 
20737          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20738               x_return_status := OKL_API.G_RET_STS_ERROR;
20739               raise party_role_failed;
20740          END IF;
20741 
20742          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
20743             l_rgp_id := x_rgpv_rec.id;
20744          END IF;
20745          l_rulv_rec := NULL;
20746 
20747          IF (l_rgp_id IS NOT NULL) THEN
20748             get_rrd_id(
20749                         x_return_status => x_return_status,
20750                         p_rgd_code      => 'LAVENB',
20751                         p_rle_code      => 'OKL_VENDOR',
20752                         x_rrd_id        => x_rrd_id
20753                        );
20754             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20755                  okl_api.set_message(
20756                                      G_APP_NAME,
20757                                      G_GUARANTOR_SETUP_ERROR,
20758                                      'CONTRACT_NUM',
20759                                      p_contract_number
20760                                     );
20761                  x_return_status := OKL_API.G_RET_STS_ERROR;
20762                  RAISE party_role_failed;
20763             END IF;
20764 
20765             p_cplv_rec                   := NULL;
20766             p_cplv_rec.chr_id            := p_chr_id;
20767             p_cplv_rec.dnz_chr_id        := p_chr_id;
20768             p_cplv_rec.cle_id            := NULL; -- always at header level
20769             p_cplv_rec.object1_id1       := TO_CHAR(x_billable_vendor_id);
20770             p_cplv_rec.object1_id2       := '#';
20771             p_cplv_rec.jtot_object1_code := 'OKX_PARTY';
20772             p_cplv_rec.rle_code          := 'OKL_VENDOR';
20773 
20774             p_cplv_rec.bill_to_site_use_id := l_vend_bill_to_addr_id;
20775             p_cplv_rec.cust_acct_id        := l_vend_cust_acc_id;
20776 
20777             debug_message('------>Vendor Bill to :'||l_vend_bill_to_addr_id);
20778             debug_message('------>Vendor Cust Acct :'||l_vend_cust_acc_id);
20779 
20780             l_rmpv_rec.rgp_id     := l_rgp_id;
20781             l_rmpv_rec.cpl_id     := x_cplv_rec.id;
20782             l_rmpv_rec.rrd_id     := x_rrd_id;
20783             l_rmpv_rec.dnz_chr_id := p_chr_id;
20784 
20785             okl_rule_pub.create_rg_mode_pty_role(
20786                                                    p_api_version   => 1.0,
20787                                                    p_init_msg_list => OKL_API.G_FALSE,
20788                                                    x_return_status => x_return_status,
20789                                                    x_msg_count     => x_msg_count,
20790                                                    x_msg_data      => x_msg_data,
20791                                                    p_rmpv_rec      => l_rmpv_rec,
20792                                                    x_rmpv_rec      => x_rmpv_rec
20793                                                   );
20794             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20795                 x_return_status := OKL_API.G_RET_STS_ERROR;
20796                 raise party_role_failed;
20797             END IF;
20798          END IF;
20799       END IF; -- Billable Vendor process
20800 
20801 
20802       -- Assume that the existence of pay thru is driven by vendor pay site information
20803       IF (p_line_number is NOT NULL) THEN
20804          debug_message ('Processing passthrough for line number : '||p_line_number);
20805       IF (g_base_pmnt_hdr.id IS NOT NULL) THEN
20806            IF (p_line_type in  ('SERVICE', 'FEE')) THEN
20807 	       IF ((p_pth_base_vendor_site_code IS NOT NULL) OR
20808                    (p_pth_base_vendor_site_id IS NOT NULL)) THEN
20809 
20810 		      IF (p_line_type = 'SERVICE') THEN
20811                          l_base_pmnt_dtls_rec.vendor_id := x_service_vendor_id;
20812 		      ELSIF (p_line_type = 'FEE') THEN
20813                          l_base_pmnt_dtls_rec.vendor_id := x_fees_vendor_id;
20814 		      END IF;
20815                       l_base_pmnt_dtls_rec.cpl_id := x_cplv_rec.id;
20816 	              l_base_pmnt_dtls_rec.pay_site_id := get_vendor_paysite( x_return_status       => x_return_status,
20817 	                                                                 p_contract_number     => p_contract_number,
20818 			                                                 p_line_number         => p_line_number,
20819 			                                                 p_vendor_paysite_name => p_pth_base_vendor_site_code,
20820 			                                                 p_vendor_paysite_id   => p_pth_base_vendor_site_id
20821                                                                        );
20822                       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20823                           raise party_role_failed;
20824                       END IF;
20825 
20826 		      IF (p_pth_base_pmnt_term_code is NOT NULL OR
20827 		          p_pth_base_pmnt_term_id IS NOT NULL ) THEN
20828                           l_base_pmnt_dtls_rec.payment_term_id := get_payment_term(
20829                                                                 x_return_status   => x_return_status,
20830                                                                 p_contract_number => p_contract_number,
20831                                                                 p_line_number     => p_line_number,
20832                                                                 p_payment_term    => p_pth_base_pmnt_term_code,
20833                                                                 p_payment_term_id => p_pth_base_pmnt_term_id
20834                                                                );
20835 
20836                           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20837                               raise party_role_failed;
20838                           END IF;
20839 
20840                       ELSE
20841                           okl_api.set_message(
20842                                               G_APP_NAME,
20843                                               G_MISSING_VALUE,
20844                                               'CONTRACT_NUM',
20845                                               p_contract_number,
20846                                               'COL_NAME',
20847                                               'PASSTHROUGH PAYMENT TERM'
20848                                               );
20849                       END IF;
20850                       l_paygroup_code := NULL;
20851 		      IF (p_pth_base_paygroup_code IS NULL) THEN
20852                           l_paygroup_code := get_vendor_paygroup(
20853                                                                 x_return_status   => x_return_status,
20854                                                                 p_contract_number => p_contract_number,
20855                                                                 p_line_number     => p_line_number,
20856                                                                 p_auth_org_id     => p_auth_org_id,
20857                                                                 p_vendor_paysite_id => p_pth_base_vendor_site_id
20858                                                                );
20859 
20860                           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
20861                               raise party_role_failed;
20862                           END IF;
20863 
20864 			  IF (l_paygroup_code IS NOT NULL) THEN
20865                              l_base_pmnt_dtls_rec.pay_group_code := l_paygroup_code;
20866 			  ELSE
20867 			     okl_api.set_message(
20868                                                  G_APP_NAME,
20869                                                  G_MISSING_VALUE_FOR_LINE,
20870                                                  'CONTRACT_NUM',
20871                                                  p_contract_number||'/'||TO_CHAR(p_line_number),
20872                                                  'COL_NAME',
20873                                                  'PTH_BASE_PAYGROUP_CODE',
20874                                                  'LINE',
20875                                                  p_line_type
20876                                                 );
20877 			     raise party_role_failed;
20878                           END IF;
20879 
20880 
20881                       ELSE
20882                           l_base_pmnt_dtls_rec.pay_group_code := p_pth_base_paygroup_code;
20883                       END IF;
20884 
20885                       IF (p_pth_base_pmnt_basis is NULL) THEN
20886                          l_base_pmnt_dtls_rec.payment_basis := 'PROCESS_DATE';
20887                       ELSE
20888                          OPEN  pmnt_basis_csr(p_pth_base_pmnt_basis);
20889                          FETCH pmnt_basis_csr INTO rec_exists_yn;
20890                          IF (pmnt_basis_csr%NOTFOUND) THEN
20891                             okl_api.set_message(
20892                                                 G_APP_NAME,
20893                                                 G_INVALID_VALUE,
20894                                                 'CONTRACT_NUM',
20895                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
20896                                                 'COL_NAME',
20897                                                 'PTH_BASE_PMNT_BASIS',
20898                                                 'COL_VALUE',
20899                                                 p_pth_base_pmnt_basis
20900                                                );
20901                             CLOSE pmnt_basis_csr;
20902                             raise party_role_failed;
20903                          ELSE
20904                             l_base_pmnt_dtls_rec.payment_basis := p_pth_base_pmnt_basis;
20905 			    CLOSE pmnt_basis_csr;
20906                          END IF;
20907                       END IF;
20908 
20909 		      IF ((p_pth_base_pmnt_basis = 'SCHEDULED') AND
20910                            (p_pth_base_pmnt_start_date IS NULL)) THEN
20911         	          okl_api.set_message(
20912                                               G_APP_NAME,
20913                                               G_MISSING_VALUE_FOR_LINE,
20914                                               'CONTRACT_NUM',
20915                                               p_contract_number||'/'||TO_CHAR(p_line_number),
20916                                               'COL_NAME',
20917                                               'PTH_BASE_PMNT_START_DATE',
20918                                               'LINE',
20919                                               p_line_type
20920                                              );
20921 			  raise party_role_failed;
20922                       ELSE
20923 		         l_base_pmnt_dtls_rec.payment_start_date := p_pth_base_pmnt_start_date;
20924                       END IF;
20925 
20926 		      IF ((p_pth_base_pmnt_basis = 'SCHEDULED') AND
20927                            (p_pth_base_pmnt_freq IS NULL)) THEN
20928         	          okl_api.set_message(
20929                                               G_APP_NAME,
20930                                               G_MISSING_VALUE_FOR_LINE,
20931                                               'CONTRACT_NUM',
20932                                               p_contract_number||'/'||TO_CHAR(p_line_number),
20933                                               'COL_NAME',
20934                                               'PTH_BASE_PMNT_FREQ',
20935                                               'LINE',
20936                                               p_line_type
20937                                              );
20938 			  raise party_role_failed;
20939                       ELSE
20940 		         l_base_pmnt_dtls_rec.payment_frequency := p_pth_base_pmnt_freq;
20941                       END IF;
20942                       l_base_pmnt_dtls_rec.payment_hdr_id := g_base_pmnt_hdr.id;
20943 		      l_base_pmnt_dtls_rec.payment_method_code := p_pth_base_pmnt_method_code;
20944 
20945 		      IF ((p_pth_base_pmnt_basis = 'PROCESS_DATE') AND
20946                            (p_pth_base_pmnt_remit_days IS NULL)) THEN
20947         	          okl_api.set_message(
20948                                               G_APP_NAME,
20949                                               G_MISSING_VALUE_FOR_LINE,
20950                                               'CONTRACT_NUM',
20951                                               p_contract_number||'/'||TO_CHAR(p_line_number),
20952                                               'COL_NAME',
20953                                               'PTH_BASE_PMNT_REMIT_DAYS',
20954                                               'LINE',
20955                                               p_line_type
20956                                              );
20957 			  raise party_role_failed;
20958                       ELSE
20959 		         l_base_pmnt_dtls_rec.remit_days := p_pth_base_pmnt_remit_days;
20960                       END IF;
20961 
20962                       IF (p_pth_base_disb_basis is NOT NULL) THEN
20963                          OPEN  disb_basis_csr(p_pth_base_disb_basis);
20964                          FETCH disb_basis_csr INTO rec_exists_yn;
20965                          IF (disb_basis_csr%NOTFOUND) THEN
20966                             okl_api.set_message(
20967                                                 G_APP_NAME,
20968                                                 G_INVALID_VALUE,
20969                                                 'CONTRACT_NUM',
20970                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
20971                                                 'COL_NAME',
20972                                                 'PTH_BASE_DISB_BASIS',
20973                                                 'COL_VALUE',
20974                                                 p_pth_base_disb_basis
20975                                                );
20976                             CLOSE disb_basis_csr;
20977                             raise party_role_failed;
20978                          ELSE
20979                             l_base_pmnt_dtls_rec.disbursement_basis := p_pth_base_disb_basis;
20980                             CLOSE disb_basis_csr;
20981                          END IF;
20982                       ELSE
20983                             okl_api.set_message(
20984                                                 G_APP_NAME,
20985                                                 G_MISSING_VALUE_FOR_LINE,
20986                                                 'CONTRACT_NUM',
20987                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
20988                                                 'COL_NAME',
20989                                                 'PTH_BASE_DISB_BASIS',
20990                                                 'LINE',
20991                                                 p_line_type
20992                                                );
20993                       END IF;
20994 
20995                       IF ((p_pth_base_disb_basis = 'AMOUNT')) THEN
20996                          IF (p_pth_base_disb_fixed_amount IS NULL) THEN
20997         	            okl_api.set_message(
20998                                                 G_APP_NAME,
20999                                                 G_MISSING_VALUE_FOR_LINE,
21000                                                 'CONTRACT_NUM',
21001                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21002                                                 'COL_NAME',
21003                                                 'PTH_BASE_DISB_FIXED_AMOUNT',
21004                                                 'LINE',
21005                                                 p_line_type
21006                                                );
21007 			    raise party_role_failed;
21008                          ELSE
21009 		         l_base_pmnt_dtls_rec.disbursement_fixed_amount := p_pth_base_disb_fixed_amount;
21010                          END IF;
21011 		      END IF;
21012 
21013 		      IF ((p_pth_base_disb_basis = 'PERCENT')) THEN
21014                          IF (p_pth_base_disb_pct IS NULL) THEN
21015         	            okl_api.set_message(
21016                                                 G_APP_NAME,
21017                                                 G_MISSING_VALUE_FOR_LINE,
21018                                                 'CONTRACT_NUM',
21019                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21020                                                 'COL_NAME',
21021                                                 'PTH_BASE_DISB_PCT',
21022                                                 'LINE',
21023                                                 p_line_type
21024                                                );
21025 			    raise party_role_failed;
21026                          ELSE
21027 		         l_base_pmnt_dtls_rec.disbursement_percent := p_pth_base_disb_pct;
21028                          END IF;
21029 		      END IF;
21030 
21031                       IF (p_pth_base_proc_fee_basis is NOT NULL) THEN
21032                          OPEN  proc_fee_basis_csr(p_pth_base_proc_fee_basis);
21033                          FETCH proc_fee_basis_csr INTO rec_exists_yn;
21034                          IF (proc_fee_basis_csr%NOTFOUND) THEN
21035                             okl_api.set_message(
21036                                                 G_APP_NAME,
21037                                                 G_INVALID_VALUE,
21038                                                 'CONTRACT_NUM',
21039                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21040                                                 'COL_NAME',
21041                                                 'PTH_BASE_PROC_FEE_BASIS',
21042                                                 'COL_VALUE',
21043                                                 p_pth_base_proc_fee_basis
21044                                                );
21045                             CLOSE proc_fee_basis_csr;
21046                             raise party_role_failed;
21047                          ELSE
21048                             l_base_pmnt_dtls_rec.processing_fee_basis := p_pth_base_proc_fee_basis;
21049                             CLOSE proc_fee_basis_csr;
21050                          END IF;
21051                       END IF;
21052 
21053 		      IF ((p_pth_base_proc_fee_basis = 'AMOUNT')) THEN
21054                          IF (p_pth_base_proc_fee_fixed_amt IS NULL) THEN
21055         	            okl_api.set_message(
21056                                                 G_APP_NAME,
21057                                                 G_MISSING_VALUE_FOR_LINE,
21058                                                 'CONTRACT_NUM',
21059                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21060                                                 'COL_NAME',
21061                                                 'PTH_BASE_PROC_FEE_FIXED_AMT',
21062                                                 'LINE',
21063                                                 p_line_type
21064                                                );
21065 			    raise party_role_failed;
21066                          ELSE
21067 		         l_base_pmnt_dtls_rec.processing_fee_fixed_amount := p_pth_base_proc_fee_fixed_amt;
21068                          END IF;
21069 		      END IF;
21070 
21071 		      IF ((p_pth_base_proc_fee_basis = 'PERCENT')) THEN
21072                          IF (p_pth_base_proc_pct IS NULL) THEN
21073         	            okl_api.set_message(
21074                                                 G_APP_NAME,
21075                                                 G_MISSING_VALUE_FOR_LINE,
21076                                                 'CONTRACT_NUM',
21077                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21078                                                 'COL_NAME',
21079                                                 'PTH_BASE_PROC_PCT',
21080                                                 'LINE',
21081                                                 p_line_type
21082                                                );
21083 			    raise party_role_failed;
21084                          ELSE
21085 		         l_base_pmnt_dtls_rec.processing_fee_percent := p_pth_base_proc_pct;
21086                          END IF;
21087 		      END IF;
21088                       l_counter := l_counter + 1;
21089                       l_pmnt_dtls_tbl_in(l_counter) := l_base_pmnt_dtls_rec;
21090 
21091                END IF;
21092       END IF;
21093       END IF;
21094 
21095 
21096       IF (g_evg_pmnt_hdr.id IS NOT NULL) THEN
21097            IF (p_line_type in  ('ASSET', 'SERVICE', 'FEE')) THEN
21098 	       IF ((p_pth_evg_vendor_site_code IS NOT NULL) OR
21099                    (p_pth_evg_vendor_site_id IS NOT NULL)) THEN
21100 		      IF (p_line_type = 'ASSET') THEN
21101                          l_evg_pmnt_dtls_rec.vendor_id := x_asset_vendor_id;
21102 		      ELSIF (p_line_type = 'SERVICE') THEN
21103                          l_evg_pmnt_dtls_rec.vendor_id := x_service_vendor_id;
21104 		      ELSE
21105                          l_evg_pmnt_dtls_rec.vendor_id := x_fees_vendor_id;
21106 		      END IF;
21107                       l_evg_pmnt_dtls_rec.cpl_id := x_cplv_rec.id;
21108 	              l_evg_pmnt_dtls_rec.pay_site_id := get_vendor_paysite( x_return_status       => x_return_status,
21109 	                                                                 p_contract_number     => p_contract_number,
21110 			                                                 p_line_number         => p_line_number,
21111 			                                                 p_vendor_paysite_name => p_pth_evg_vendor_site_code,
21112 			                                                 p_vendor_paysite_id   => p_pth_evg_vendor_site_id
21113                                                                        );
21114                       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
21115                           raise party_role_failed;
21116                       END IF;
21117 
21118 		      IF (p_pth_evg_pmnt_term_code is NOT NULL OR
21119 		          p_pth_evg_pmnt_term_id IS NOT NULL ) THEN
21120                           l_evg_pmnt_dtls_rec.payment_term_id := get_payment_term(
21121                                                                 x_return_status   => x_return_status,
21122                                                                 p_contract_number => p_contract_number,
21123                                                                 p_line_number     => p_line_number,
21124                                                                 p_payment_term    => p_pth_evg_pmnt_term_code,
21125                                                                 p_payment_term_id => p_pth_evg_pmnt_term_id
21126                                                                );
21127 
21128                           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
21129                               raise party_role_failed;
21130                           END IF;
21131 
21132                       ELSE
21133                           okl_api.set_message(
21134                                               G_APP_NAME,
21135                                               G_MISSING_VALUE,
21136                                               'CONTRACT_NUM',
21137                                               p_contract_number,
21138                                               'COL_NAME',
21139                                               'PTH_EVG_PMNT_TERM_CODE'
21140                                               );
21141                       END IF;
21142                       l_paygroup_code := NULL;
21143 		      IF (p_pth_evg_paygroup_code IS NULL) THEN
21144                           l_paygroup_code := get_vendor_paygroup(
21145                                                                 x_return_status   => x_return_status,
21146                                                                 p_contract_number => p_contract_number,
21147                                                                 p_line_number     => p_line_number,
21148                                                                 p_auth_org_id     => p_auth_org_id,
21149                                                                 p_vendor_paysite_id => p_pth_evg_vendor_site_id
21150                                                                );
21151 
21152                           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
21153                               raise party_role_failed;
21154                           END IF;
21155 
21156 			  IF (l_paygroup_code IS NOT NULL) THEN
21157                              l_evg_pmnt_dtls_rec.pay_group_code := l_paygroup_code;
21158 			  ELSE
21159 			     okl_api.set_message(
21160                                                  G_APP_NAME,
21161                                                  G_MISSING_VALUE_FOR_LINE,
21162                                                  'CONTRACT_NUM',
21163                                                  p_contract_number||'/'||TO_CHAR(p_line_number),
21164                                                  'COL_NAME',
21165                                                  'PTH_EVG_PAYGROUP_CODE',
21166                                                  'LINE',
21167                                                  p_line_type
21168                                                 );
21169 			     raise party_role_failed;
21170                           END IF;
21171                       ELSE
21172                           l_evg_pmnt_dtls_rec.pay_group_code := p_pth_evg_paygroup_code;
21173                       END IF;
21174                       IF (p_pth_evg_pmnt_basis is NULL) THEN
21175                          l_evg_pmnt_dtls_rec.payment_basis := 'PROCESS_DATE';
21176                       ELSE
21177                          OPEN  pmnt_basis_csr(p_pth_evg_pmnt_basis);
21178                          FETCH pmnt_basis_csr INTO rec_exists_yn;
21179                          IF (pmnt_basis_csr%NOTFOUND) THEN
21180                             okl_api.set_message(
21181                                                 G_APP_NAME,
21182                                                 G_INVALID_VALUE,
21183                                                 'CONTRACT_NUM',
21184                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21185                                                 'COL_NAME',
21186                                                 'PTH_EVG_PMNT_BASIS',
21187                                                 'COL_VALUE',
21188                                                 p_pth_evg_pmnt_basis
21189                                                );
21190                             CLOSE pmnt_basis_csr;
21191                             raise party_role_failed;
21192                          ELSE
21193                             l_evg_pmnt_dtls_rec.payment_basis := p_pth_evg_pmnt_basis;
21194                             CLOSE pmnt_basis_csr;
21195                          END IF;
21196                       END IF;
21197                       l_evg_pmnt_dtls_rec.payment_hdr_id := g_evg_pmnt_hdr.id;
21198 		      l_evg_pmnt_dtls_rec.payment_method_code := p_pth_evg_pmnt_method_code;
21199 
21200 		      IF ((p_pth_evg_pmnt_basis = 'PROCESS_DATE') AND
21201                            (p_pth_evg_pmnt_remit_days IS NULL)) THEN
21202         	          okl_api.set_message(
21203                                               G_APP_NAME,
21204                                               G_MISSING_VALUE_FOR_LINE,
21205                                               'CONTRACT_NUM',
21206                                               p_contract_number||'/'||TO_CHAR(p_line_number),
21207                                               'COL_NAME',
21208                                               'PTH_EVG_PMNT_REMIT_DAYS',
21209                                               'LINE',
21210                                               p_line_type
21211                                              );
21212 			  raise party_role_failed;
21213                       ELSE
21214 		         l_evg_pmnt_dtls_rec.remit_days := p_pth_evg_pmnt_remit_days;
21215                       END IF;
21216                       IF (p_pth_evg_disb_basis is NOT NULL) THEN
21217                          OPEN  disb_basis_csr(p_pth_evg_disb_basis);
21218                          FETCH disb_basis_csr INTO rec_exists_yn;
21219                          IF (disb_basis_csr%NOTFOUND) THEN
21220                             okl_api.set_message(
21221                                                 G_APP_NAME,
21222                                                 G_INVALID_VALUE,
21223                                                 'CONTRACT_NUM',
21224                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21225                                                 'COL_NAME',
21226                                                 'PTH_EVG_DISB_BASIS',
21227                                                 'COL_VALUE',
21228                                                 p_pth_evg_disb_basis
21229                                                );
21230                             CLOSE disb_basis_csr;
21231                             raise party_role_failed;
21232                          ELSE
21233                             l_evg_pmnt_dtls_rec.disbursement_basis := p_pth_evg_disb_basis;
21234                             CLOSE disb_basis_csr;
21235                          END IF;
21236                       ELSE
21237                             okl_api.set_message(
21238                                                 G_APP_NAME,
21239                                                 G_MISSING_VALUE_FOR_LINE,
21240                                                 'CONTRACT_NUM',
21241                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21242                                                 'COL_NAME',
21243                                                 'PTH_EVG_DISB_BASIS',
21244                                                 'LINE',
21245                                                 p_line_type
21246                                                );
21247                       END IF;
21248 		      IF ((p_pth_evg_disb_basis = 'AMOUNT')) THEN
21249                          IF (p_pth_evg_disb_fixed_amount IS NULL) THEN
21250         	            okl_api.set_message(
21251                                                 G_APP_NAME,
21252                                                 G_MISSING_VALUE_FOR_LINE,
21253                                                 'CONTRACT_NUM',
21254                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21255                                                 'COL_NAME',
21256                                                 'PTH_EVG_DISB_FIXED_AMOUNT',
21257                                                 'LINE',
21258                                                 p_line_type
21259                                                );
21260 			    raise party_role_failed;
21261                          ELSE
21262 		         l_evg_pmnt_dtls_rec.disbursement_fixed_amount := p_pth_evg_disb_fixed_amount;
21263                          END IF;
21264 		      END IF;
21265 		      IF ((p_pth_evg_disb_basis = 'PERCENT')) THEN
21266                          IF (p_pth_evg_disb_pct IS NULL) THEN
21267         	            okl_api.set_message(
21268                                                 G_APP_NAME,
21269                                                 G_MISSING_VALUE_FOR_LINE,
21270                                                 'CONTRACT_NUM',
21271                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21272                                                 'COL_NAME',
21273                                                 'PTH_EVG_DISB_PCT',
21274                                                 'LINE',
21275                                                 p_line_type
21276                                                );
21277 			    raise party_role_failed;
21278                          ELSE
21279 		         l_evg_pmnt_dtls_rec.disbursement_percent := p_pth_evg_disb_pct;
21280                          END IF;
21281 		      END IF;
21282 
21283                       IF (p_pth_evg_proc_fee_basis is NOT NULL) THEN
21284                          OPEN  proc_fee_basis_csr(p_pth_evg_proc_fee_basis);
21285                          FETCH proc_fee_basis_csr INTO rec_exists_yn;
21286                          IF (proc_fee_basis_csr%NOTFOUND) THEN
21287                             okl_api.set_message(
21288                                                 G_APP_NAME,
21289                                                 G_INVALID_VALUE,
21290                                                 'CONTRACT_NUM',
21291                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21292                                                 'COL_NAME',
21293                                                 'PTH_EVG_PROC_FEE_BASIS',
21294                                                 'COL_VALUE',
21295                                                 p_pth_evg_proc_fee_basis
21296                                                );
21297                             CLOSE proc_fee_basis_csr;
21298                             raise party_role_failed;
21299                          ELSE
21300                             l_evg_pmnt_dtls_rec.processing_fee_basis := p_pth_evg_proc_fee_basis;
21301                             CLOSE proc_fee_basis_csr;
21302                          END IF;
21303                       END IF;
21304 		      IF ((p_pth_evg_proc_fee_basis = 'AMOUNT')) THEN
21305                          IF (p_pth_evg_proc_fee_fixed_amt IS NULL) THEN
21306         	            okl_api.set_message(
21307                                                 G_APP_NAME,
21308                                                 G_MISSING_VALUE_FOR_LINE,
21309                                                 'CONTRACT_NUM',
21310                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21311                                                 'COL_NAME',
21312                                                 'PTH_EVG_PROC_FEE_FIXED_AMT',
21313                                                 'LINE',
21314                                                 p_line_type
21315                                                );
21316 			    raise party_role_failed;
21317                          ELSE
21318 		         l_evg_pmnt_dtls_rec.processing_fee_fixed_amount := p_pth_evg_proc_fee_fixed_amt;
21319                          END IF;
21320 		      END IF;
21321 
21322 		      IF ((p_pth_evg_proc_fee_basis = 'PERCENT')) THEN
21323                          IF (p_pth_evg_proc_pct IS NULL) THEN
21324         	            okl_api.set_message(
21325                                                 G_APP_NAME,
21326                                                 G_MISSING_VALUE_FOR_LINE,
21327                                                 'CONTRACT_NUM',
21328                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21329                                                 'COL_NAME',
21330                                                 'PTH_EVG_PROC_PCT',
21331                                                 'LINE',
21332                                                 p_line_type
21333                                                );
21334 			    raise party_role_failed;
21335                          ELSE
21336 		         l_evg_pmnt_dtls_rec.processing_fee_percent := p_pth_evg_proc_pct;
21337                          END IF;
21338 		      END IF;
21339                l_counter := l_counter + 1;
21340                l_pmnt_dtls_tbl_in(l_counter) := l_evg_pmnt_dtls_rec;
21341 
21342                END IF;
21343       END IF;
21344       END IF;
21345       END IF;
21346       debug_message ('No. of records in payment dtls table : '||l_pmnt_dtls_tbl_in.count);
21347 
21348       IF (l_pmnt_dtls_tbl_in.COUNT > 0) THEN
21349          okl_party_payments_pvt.create_party_payment_dtls(
21350                                                          p_api_version    => 1.0,
21351                                                          x_return_status  => x_return_status,
21352                                                          x_msg_count      => x_msg_count,
21353                                                          x_msg_data       => x_msg_data,
21354                                                          p_ppydv_tbl       => l_pmnt_dtls_tbl_in,
21355                                                          x_ppydv_tbl       => l_pmnt_dtls_tbl_out
21356 						        );
21357 
21358          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
21359             x_return_status := OKL_API.G_RET_STS_ERROR;
21360             RAISE party_role_failed;
21361          END IF;
21362       END IF;
21363 
21364       -- Create evergreen payment dtls if header exists
21365       debug_message('Create evergreen payment dtls if header exists');
21366       debug_message('Cont Evg pmnt hdr id: '||g_evg_cont_pmnt_hdr.id);
21367       l_evg_cont_pmnt_dtls_rec := NULL;
21368       IF (g_evg_cont_pmnt_hdr.id IS NOT NULL) THEN
21369            IF (p_line_number IS NULL) THEN -- header only
21370 	       IF ((p_pth_evg_vendor_site_code IS NOT NULL) OR
21371                    (p_pth_evg_vendor_site_id IS NOT NULL)) THEN
21372                       l_evg_cont_pmnt_dtls_rec.vendor_id := x_asset_vendor_id;
21373                       l_evg_cont_pmnt_dtls_rec.cpl_id := x_cplv_rec.id;
21374 	              l_evg_cont_pmnt_dtls_rec.pay_site_id := get_vendor_paysite( x_return_status       => x_return_status,
21375 	                                                                 p_contract_number     => p_contract_number,
21376 			                                                 p_line_number         => p_line_number,
21377 			                                                 p_vendor_paysite_name => p_pth_evg_vendor_site_code,
21378 			                                                 p_vendor_paysite_id   => p_pth_evg_vendor_site_id
21379                                                                        );
21380                       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
21381                           raise party_role_failed;
21382                       END IF;
21383 
21384 		      IF (p_pth_evg_pmnt_term_code is NOT NULL OR
21385 		          p_pth_evg_pmnt_term_id IS NOT NULL ) THEN
21386                           l_evg_cont_pmnt_dtls_rec.payment_term_id := get_payment_term(
21387                                                                 x_return_status   => x_return_status,
21388                                                                 p_contract_number => p_contract_number,
21389                                                                 p_line_number     => p_line_number,
21390                                                                 p_payment_term    => p_pth_evg_pmnt_term_code,
21391                                                                 p_payment_term_id => p_pth_evg_pmnt_term_id
21392                                                                );
21393 
21394                           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
21395                               raise party_role_failed;
21396                           END IF;
21397 
21398                       ELSE
21399                           okl_api.set_message(
21400                                               G_APP_NAME,
21401                                               G_MISSING_VALUE,
21402                                               'CONTRACT_NUM',
21403                                               p_contract_number,
21404                                               'COL_NAME',
21405                                               'PTH_EVG_PMNT_TERM_CODE'
21406                                               );
21407                       END IF;
21408                       l_paygroup_code := NULL;
21409 		      IF (p_pth_evg_paygroup_code IS NULL) THEN
21410                           l_paygroup_code := get_vendor_paygroup(
21411                                                                 x_return_status   => x_return_status,
21412                                                                 p_contract_number => p_contract_number,
21413                                                                 p_line_number     => p_line_number,
21414                                                                 p_auth_org_id     => p_auth_org_id,
21415                                                                 p_vendor_paysite_id => p_pth_evg_vendor_site_id
21416                                                                );
21417 
21418                           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
21419                               raise party_role_failed;
21420                           END IF;
21421 
21422 			  IF (l_paygroup_code IS NOT NULL) THEN
21423                              l_evg_cont_pmnt_dtls_rec.pay_group_code := l_paygroup_code;
21424 			  ELSE
21425 			     okl_api.set_message(
21426                                                  G_APP_NAME,
21427                                                  G_MISSING_VALUE_FOR_LINE,
21428                                                  'CONTRACT_NUM',
21429                                                  p_contract_number||'/'||TO_CHAR(p_line_number),
21430                                                  'COL_NAME',
21431                                                  'PTH_EVG_PAYGROUP_CODE',
21432                                                  'LINE',
21433                                                  p_line_type
21434                                                 );
21435 			     raise party_role_failed;
21436                           END IF;
21437                       ELSE
21438                           l_evg_cont_pmnt_dtls_rec.pay_group_code := p_pth_evg_paygroup_code;
21439                       END IF;
21440                       IF (p_pth_evg_pmnt_basis is NULL) THEN
21441                          l_evg_cont_pmnt_dtls_rec.payment_basis := 'PROCESS_DATE';
21442                       ELSE
21443                          OPEN  pmnt_basis_csr(p_pth_evg_pmnt_basis);
21444                          FETCH pmnt_basis_csr INTO rec_exists_yn;
21445                          IF (pmnt_basis_csr%NOTFOUND) THEN
21446                             okl_api.set_message(
21447                                                 G_APP_NAME,
21448                                                 G_INVALID_VALUE,
21449                                                 'CONTRACT_NUM',
21450                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21451                                                 'COL_NAME',
21452                                                 'PTH_EVG_PMNT_BASIS',
21453                                                 'COL_VALUE',
21454                                                 p_pth_evg_pmnt_basis
21455                                                );
21456                             CLOSE pmnt_basis_csr;
21457                             raise party_role_failed;
21458                          ELSE
21459                             l_evg_cont_pmnt_dtls_rec.payment_basis := p_pth_evg_pmnt_basis;
21460                             CLOSE pmnt_basis_csr;
21461                          END IF;
21462                       END IF;
21463                       l_evg_cont_pmnt_dtls_rec.payment_hdr_id := g_evg_cont_pmnt_hdr.id;
21464 		      l_evg_cont_pmnt_dtls_rec.payment_method_code := p_pth_evg_pmnt_method_code;
21465 
21466 		      IF ((p_pth_evg_pmnt_basis = 'PROCESS_DATE') AND
21467                            (p_pth_evg_pmnt_remit_days IS NULL)) THEN
21468         	          okl_api.set_message(
21469                                               G_APP_NAME,
21470                                               G_MISSING_VALUE_FOR_LINE,
21471                                               'CONTRACT_NUM',
21472                                               p_contract_number||'/'||TO_CHAR(p_line_number),
21473                                               'COL_NAME',
21474                                               'PTH_EVG_PMNT_REMIT_DAYS',
21475                                               'LINE',
21476                                               p_line_type
21477                                              );
21478 			  raise party_role_failed;
21479                       ELSE
21480 		         l_evg_cont_pmnt_dtls_rec.remit_days := p_pth_evg_pmnt_remit_days;
21481                       END IF;
21482                       IF (p_pth_evg_disb_basis is NOT NULL) THEN
21483                          OPEN  disb_basis_csr(p_pth_evg_disb_basis);
21484                          FETCH disb_basis_csr INTO rec_exists_yn;
21485                          IF (disb_basis_csr%NOTFOUND) THEN
21486                             okl_api.set_message(
21487                                                 G_APP_NAME,
21488                                                 G_INVALID_VALUE,
21489                                                 'CONTRACT_NUM',
21490                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21491                                                 'COL_NAME',
21492                                                 'PTH_EVG_DISB_BASIS',
21493                                                 'COL_VALUE',
21494                                                 p_pth_evg_disb_basis
21495                                                );
21496                             CLOSE disb_basis_csr;
21497                             raise party_role_failed;
21498                          ELSE
21499                             l_evg_cont_pmnt_dtls_rec.disbursement_basis := p_pth_evg_disb_basis;
21500                             CLOSE disb_basis_csr;
21501                          END IF;
21502                       ELSE
21503                             okl_api.set_message(
21504                                                 G_APP_NAME,
21505                                                 G_MISSING_VALUE_FOR_LINE,
21506                                                 'CONTRACT_NUM',
21507                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21508                                                 'COL_NAME',
21509                                                 'PTH_EVG_DISB_BASIS',
21510                                                 'LINE',
21511                                                 p_line_type
21512                                                );
21513                       END IF;
21514 		      IF ((p_pth_evg_disb_basis = 'AMOUNT')) THEN
21515                          IF (p_pth_evg_disb_fixed_amount IS NULL) THEN
21516         	            okl_api.set_message(
21517                                                 G_APP_NAME,
21518                                                 G_MISSING_VALUE_FOR_LINE,
21519                                                 'CONTRACT_NUM',
21520                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21521                                                 'COL_NAME',
21522                                                 'PTH_EVG_DISB_FIXED_AMOUNT',
21523                                                 'LINE',
21524                                                 p_line_type
21525                                                );
21526 			    raise party_role_failed;
21527                          ELSE
21528 		         l_evg_cont_pmnt_dtls_rec.disbursement_fixed_amount := p_pth_evg_disb_fixed_amount;
21529                          END IF;
21530 		      END IF;
21531 		      IF ((p_pth_evg_disb_basis = 'PERCENT')) THEN
21532                          IF (p_pth_evg_disb_pct IS NULL) THEN
21533         	            okl_api.set_message(
21534                                                 G_APP_NAME,
21535                                                 G_MISSING_VALUE_FOR_LINE,
21536                                                 'CONTRACT_NUM',
21537                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21538                                                 'COL_NAME',
21539                                                 'PTH_EVG_DISB_PCT',
21540                                                 'LINE',
21541                                                 p_line_type
21542                                                );
21543 			    raise party_role_failed;
21544                          ELSE
21545 		         l_evg_cont_pmnt_dtls_rec.disbursement_percent := p_pth_evg_disb_pct;
21546                          END IF;
21547 		      END IF;
21548 
21549                       IF (p_pth_evg_proc_fee_basis is NOT NULL) THEN
21550                          OPEN  proc_fee_basis_csr(p_pth_evg_proc_fee_basis);
21551                          FETCH proc_fee_basis_csr INTO rec_exists_yn;
21552                          IF (proc_fee_basis_csr%NOTFOUND) THEN
21553                             okl_api.set_message(
21554                                                 G_APP_NAME,
21555                                                 G_INVALID_VALUE,
21556                                                 'CONTRACT_NUM',
21557                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21558                                                 'COL_NAME',
21559                                                 'PTH_EVG_PROC_FEE_BASIS',
21560                                                 'COL_VALUE',
21561                                                 p_pth_evg_proc_fee_basis
21562                                                );
21563                             CLOSE proc_fee_basis_csr;
21564                             raise party_role_failed;
21565                          ELSE
21566                             l_evg_cont_pmnt_dtls_rec.processing_fee_basis := p_pth_evg_proc_fee_basis;
21567                             CLOSE proc_fee_basis_csr;
21568                          END IF;
21569                       END IF;
21570 		      IF ((p_pth_evg_proc_fee_basis = 'AMOUNT')) THEN
21571                          IF (p_pth_evg_proc_fee_fixed_amt IS NULL) THEN
21572         	            okl_api.set_message(
21573                                                 G_APP_NAME,
21574                                                 G_MISSING_VALUE_FOR_LINE,
21575                                                 'CONTRACT_NUM',
21576                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21577                                                 'COL_NAME',
21578                                                 'PTH_EVG_PROC_FEE_FIXED_AMT',
21579                                                 'LINE',
21580                                                 p_line_type
21581                                                );
21582 			    raise party_role_failed;
21583                          ELSE
21584 		         l_evg_cont_pmnt_dtls_rec.processing_fee_fixed_amount := p_pth_evg_proc_fee_fixed_amt;
21585                          END IF;
21586 		      END IF;
21587 
21588 		      IF ((p_pth_evg_proc_fee_basis = 'PERCENT')) THEN
21589                          IF (p_pth_evg_proc_pct IS NULL) THEN
21590         	            okl_api.set_message(
21591                                                 G_APP_NAME,
21592                                                 G_MISSING_VALUE_FOR_LINE,
21593                                                 'CONTRACT_NUM',
21594                                                 p_contract_number||'/'||TO_CHAR(p_line_number),
21595                                                 'COL_NAME',
21596                                                 'PTH_EVG_PROC_PCT',
21597                                                 'LINE',
21598                                                 p_line_type
21599                                                );
21600 			    raise party_role_failed;
21601                          ELSE
21602 		         l_evg_cont_pmnt_dtls_rec.processing_fee_percent := p_pth_evg_proc_pct;
21603                          END IF;
21604 		      END IF;
21605                       l_counter := l_counter + 1;
21606                       l_cont_pmnt_dtls_tbl_in(l_counter) := l_evg_cont_pmnt_dtls_rec;
21607 
21608                END IF; -- vendor_site_code is not null
21609            END IF; -- p_line_number is null
21610       END IF; -- g_evg_cont_pmnt_hdr.id is not null
21611 
21612       debug_message ('No. of records in payment dtls table : '||l_cont_pmnt_dtls_tbl_in.count);
21613 
21614       IF (l_cont_pmnt_dtls_tbl_in.COUNT > 0) THEN
21615          okl_party_payments_pvt.create_party_payment_dtls(
21616                                                          p_api_version    => 1.0,
21617                                                          x_return_status  => x_return_status,
21618                                                          x_msg_count      => x_msg_count,
21619                                                          x_msg_data       => x_msg_data,
21620                                                          p_ppydv_tbl       => l_cont_pmnt_dtls_tbl_in,
21621                                                          x_ppydv_tbl       => l_cont_pmnt_dtls_tbl_out
21622 						        );
21623 
21624          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
21625             x_return_status := OKL_API.G_RET_STS_ERROR;
21626             RAISE party_role_failed;
21627          END IF;
21628       END IF;
21629       debug_message('Contract evergreen dtls end.');
21630       -- Create evergreen payment dtls if header exists
21631 
21632       debug_message('------>Party role done');
21633       return;
21634 
21635    EXCEPTION
21636 
21637      WHEN party_role_failed THEN
21638         x_return_status := OKL_API.G_RET_STS_ERROR;
21639         debug_message(l_proc_name ||': '||l_progress);
21640 
21641      WHEN OTHERS THEN
21642        debug_message(l_proc_name ||': '||l_progress);
21643 
21644   END process_party_role;
21645 
21646 ------------------------------------------------------------------------------
21647 -- PROCEDURE process_term
21648 -- It Process Terms Interafce Records at Contract Line level and Header Level as well and
21649 -- stacks Error, if any, and returns ERROR status to calling process.
21650 -- Calls:
21651 --  get_bill_to_address_id
21652 --  get_bank_account_id
21653 --  get_invoice_format_id
21654 --  get_payment_method_id
21655 -- Called By:
21656 --  load_input_record
21657 ------------------------------------------------------------------------------
21658    PROCEDURE process_term(
21659                           x_return_status             OUT NOCOPY VARCHAR2,
21660                           x_msg_count                 OUT NOCOPY NUMBER,
21661                           x_msg_data                  OUT NOCOPY VARCHAR2,
21662                           p_contract_number           IN  okc_k_headers_v.contract_number%TYPE,
21663                           p_chr_id                    IN  okc_k_headers_v.id%TYPE,
21664                           p_auth_org_id               IN  okl_header_interface.authoring_org_id%TYPE,
21665                           p_line_number               IN  okc_k_lines_v.line_number%TYPE,
21666                           p_line_type                 IN  okl_lines_interface.line_type%TYPE,
21667                           p_cle_id                    IN  okc_k_lines_v.id%TYPE,
21668                           p_bill_to_address_id        IN  okl_terms_interface.bill_to_address_id%TYPE,
21669                           p_bill_to_address           IN  okl_terms_interface.bill_to_address%TYPE,
21670                           p_bank_account_id           IN  okl_terms_interface.bank_account_id%TYPE,
21671                           p_bank_account_number       IN  okl_terms_interface.bank_account_number%TYPE,
21672                           p_reason_for_invoice_review IN  okl_terms_interface.reason_for_invoice_review%TYPE,
21673                           p_invoice_review_until_date IN  okl_terms_interface.invoice_review_until_date%TYPE,
21674                           p_invoice_format_id         IN  okl_terms_interface.invoice_format_id%TYPE,
21675                           p_invoice_format_code       IN  okl_terms_interface.invoice_format_code%TYPE,
21676                           p_review_invoice_flag       IN  okl_terms_interface.review_invoice_flag%TYPE,
21677                           p_payment_method_id         IN  okl_terms_interface.payment_method_id%TYPE,
21678                           p_payment_method            IN  okl_terms_interface.payment_method%TYPE,
21679                           p_prescribed_asset_flag     IN  okl_terms_interface.prescribed_asset_flag%TYPE,
21680                           p_cash_appl_rule_name       IN  okl_terms_interface.cash_appl_rule_name%TYPE
21681                          ) IS
21682 
21683    l_proc_name VARCHAR2(35) := 'PROCESS_TERM';
21684    term_failed EXCEPTION;
21685 
21686    -- Rule Rec
21687    x_rgpv_rec         rgpv_rec_type;
21688    l_rgpv_rec         rgpv_rec_type;
21689 
21690    l_rulv_rec         rulv_rec_type;
21691    x_rulv_rec         rulv_rec_type;
21692 
21693    l_clev_rec         clev_rec_type;
21694    x_clev_rec         clev_rec_type;
21695    l_klev_rec         klev_rec_type;
21696    x_klev_rec         klev_rec_type;
21697 
21698    x_bank_account_id    NUMBER := NULL;
21699    x_bill_to_address_id NUMBER := NULL;
21700    x_invoice_format_id  NUMBER := NULL;
21701    x_payment_method_id  NUMBER := NULL;
21702    x_invoice_format_name okl_invoice_formats_v.name%TYPE;
21703    l_rgp_id              NUMBER;
21704 
21705    x_cash_appl_rule_id  OKL_BPD_ACTIVE_CSH_RLS_V.ID1%TYPE;
21706    BEGIN
21707 
21708      x_return_status := OKL_API.G_RET_STS_SUCCESS;
21709      debug_message(l_proc_name);
21710 
21711      IF (p_line_type = 'ASSET') THEN
21712 
21713          l_rgpv_rec            := NULL;
21714          l_rgp_id              := NULL;
21715          l_rgpv_rec.rgd_code   := 'LABILL';
21716          l_rgpv_rec.chr_id     := NULL;
21717          l_rgpv_rec.dnz_chr_id := p_chr_id;
21718          l_rgpv_rec.cle_id     := p_cle_id;
21719          l_rgpv_rec.rgp_type   := 'KRG';
21720 
21721      debug_message('------>Cust Acct: '||g_customer_account_id);
21722 
21723      IF (g_customer_account_id IS NOT NULL) THEN -- customer account is provided at header interface
21724         get_bill_to_address_id(
21725                                x_return_status           => x_return_status,
21726                                x_msg_count               => x_msg_count,
21727                                x_msg_data                => x_msg_data,
21728                                p_contract_number         => p_contract_number,
21729                                p_auth_org_id             => p_auth_org_id,
21730                                p_bill_to_address_id      => p_bill_to_address_id,
21731                                p_bill_to_address         => p_bill_to_address,
21732                                p_customer_account_id     => g_customer_account_id,
21733                                x_bill_to_address_id      => x_bill_to_address_id
21734                               );
21735 
21736         IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
21737             x_return_status := OKL_API.G_RET_STS_ERROR;
21738             raise term_failed;
21739         END IF;
21740 
21741      END IF; --g_customer_account_id
21742 
21743      l_rulv_rec := NULL;
21744 
21745 -- cklee bug# 3440442 bug# 3440442
21746        debug_message('------>prescribed_asset_flag: '||p_prescribed_asset_flag);
21747        IF (p_prescribed_asset_flag IS NOT NULL) THEN
21748 
21749          IF (NVL(p_prescribed_asset_flag,'N') NOT IN ('Y','N')) THEN
21750             okl_api.set_message(
21751                                G_APP_NAME,
21752                                G_INVALID_VALUE,
21753                                'CONTRACT_NUM',
21754                                p_contract_number,
21755                                'COL_NAME',
21756                                'PRESCRIBED_ASSET_FLAG',
21757                                'COL_VALUE',
21758                                p_prescribed_asset_flag
21759                               );
21760 
21761             x_return_status := OKL_API.G_RET_STS_ERROR;
21762             raise term_failed;
21763 
21764          END IF;
21765 
21766          -- Update prescribed_asset_flag
21767          l_clev_rec.id                    := p_cle_id;
21768 --         l_clev_rec.dnz_chr_id            := p_chr_id;
21769          l_klev_rec.prescribed_asset_yn := p_prescribed_asset_flag;
21770 
21771          okl_contract_pub.update_contract_line(
21772                                   p_api_version     => 1.0,
21773                                   p_init_msg_list   => OKL_API.G_FALSE,
21774                                   x_return_status   => x_return_status,
21775                                   x_msg_count       => x_msg_count,
21776                                   x_msg_data        => x_msg_data,
21777                                   p_clev_rec        => l_clev_rec,
21778                                   p_klev_rec        => l_klev_rec,
21779                                   x_clev_rec        => x_clev_rec,
21780                                   x_klev_rec        => x_klev_rec
21781                                  );
21782 
21783          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
21784              x_return_status := OKL_API.G_RET_STS_ERROR;
21785              raise term_failed;
21786          END IF;
21787 
21788        debug_message('------>prescribed_asset_flag updated: '||x_klev_rec.prescribed_asset_yn);
21789        END IF;
21790 -- cklee bug# 3440442 bug# 3440442
21791 
21792 
21793      debug_message('------>Bill to ID: '||x_bill_to_address_id);
21794 
21795      IF (x_bill_to_address_id IS NOT NULL) THEN
21796 
21797          -- Update asset line with BTO information
21798          l_clev_rec.id                  := p_cle_id;
21799          --l_clev_rec.dnz_chr_id          := p_chr_id;
21800          l_clev_rec.bill_to_site_use_id := x_bill_to_address_id;
21801 
21802          okl_contract_pub.update_contract_line(
21803                                   p_api_version     => 1.0,
21804                                   p_init_msg_list   => OKL_API.G_FALSE,
21805                                   x_return_status   => x_return_status,
21806                                   x_msg_count       => x_msg_count,
21807                                   x_msg_data        => x_msg_data,
21808                                   p_clev_rec        => l_clev_rec,
21809                                   p_klev_rec        => l_klev_rec,
21810                                   x_clev_rec        => x_clev_rec,
21811                                   x_klev_rec        => x_klev_rec
21812                                  );
21813 
21814          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
21815              x_return_status := OKL_API.G_RET_STS_ERROR;
21816              raise term_failed;
21817          END IF;
21818 
21819          debug_message('------>Bill to updated: '||x_clev_rec.bill_to_site_use_id);
21820 
21821 /* Rule Migration
21822 
21823          l_rulv_rec.jtot_object1_code         := 'OKX_BILLTO';
21824          l_rulv_rec.object1_id1               := TO_CHAR(x_bill_to_address_id);
21825          l_rulv_rec.object1_id2               := '#';
21826          l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
21827          l_rulv_rec.dnz_chr_id                := p_chr_id;
21828          l_rulv_rec.rule_information_category := 'BTO';
21829          l_rulv_rec.std_template_yn           := 'N';
21830          l_rulv_rec.warn_yn                   := 'N';
21831 
21832          create_rule_group_and_rule(
21833                                  x_return_status => x_return_status,
21834                                  x_msg_count     => x_msg_count,
21835                                  x_msg_data      => x_msg_data,
21836                                  p_rgp_id        => l_rgp_id,
21837                                  p_rgpv_rec      => l_rgpv_rec,
21838                                  p_rulv_rec      => l_rulv_rec,
21839                                  x_rgpv_rec      => x_rgpv_rec,
21840                                  x_rulv_rec      => x_rulv_rec
21841                                 );
21842 
21843          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
21844              raise term_failed;
21845          END IF;
21846 
21847          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
21848             l_rgp_id := x_rgpv_rec.id;
21849          END IF;
21850 */
21851          IF (p_bank_account_id IS NOT NULL
21852              OR
21853              p_bank_account_number IS NOT NULL) THEN
21854             get_bank_account_id(
21855                                 x_return_status           => x_return_status,
21856                                 x_msg_count               => x_msg_count,
21857                                 x_msg_data                => x_msg_data,
21858                                 p_contract_number         => p_contract_number,
21859                                 p_auth_org_id             => p_auth_org_id,
21860                                 p_bank_account_id         => p_bank_account_id,
21861                                 p_bank_account_number     => p_bank_account_number,
21862                                 p_customer_account_id     => g_customer_account_id,
21863                                 p_cust_site_id            => x_bill_to_address_id,
21864                                 x_bank_account_id         => x_bank_account_id
21865                                );
21866             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
21867                 x_return_status := OKL_API.G_RET_STS_ERROR;
21868                 raise term_failed;
21869             END IF;
21870          END IF;
21871 
21872          l_rulv_rec := NULL;
21873          IF (x_bank_account_id IS NOT NULL) THEN
21874 
21875             l_rulv_rec.jtot_object1_code         := 'OKX_CUSTBKAC';
21876             l_rulv_rec.object1_id1               := TO_CHAR(x_bank_account_id);
21877             l_rulv_rec.object1_id2               := '#';
21878             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
21879             l_rulv_rec.dnz_chr_id                := p_chr_id;
21880             l_rulv_rec.rule_information_category := 'LABACC';
21881             l_rulv_rec.std_template_yn           := 'N';
21882             l_rulv_rec.warn_yn                   := 'N';
21883 
21884             create_rule_group_and_rule(
21885                                        x_return_status => x_return_status,
21886                                        x_msg_count     => x_msg_count,
21887                                        x_msg_data      => x_msg_data,
21888                                        p_rgp_id        => l_rgp_id,
21889                                        p_rgpv_rec      => l_rgpv_rec,
21890                                        p_rulv_rec      => l_rulv_rec,
21891                                        x_rgpv_rec      => x_rgpv_rec,
21892                                        x_rulv_rec      => x_rulv_rec
21893                                       );
21894 
21895             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
21896                raise term_failed;
21897             END IF;
21898 
21899             IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
21900                l_rgp_id := x_rgpv_rec.id;
21901             END IF;
21902 
21903          END IF; --bank_account
21904 
21905          IF (p_reason_for_invoice_review IS NOT NULL) THEN -- Bug# 3650522
21906             OKL_API.SET_MESSAGE(
21907                                 G_APP_NAME,
21908                                 G_VALUE_NOT_ALLOWED,
21909                                 'CONTRACT_NUM',
21910                                 p_contract_number,
21911                                 'LINE_NUM',
21912                                 p_line_number,
21913                                 'COL_NAME',
21914                                 'REASON_FOR_INVOICE_REVIEW'
21915                                );
21916 
21917             x_return_status := OKL_API.G_RET_STS_ERROR;
21918 
21919          END IF;
21920 
21921          IF (p_invoice_review_until_date IS NOT NULL) THEN -- Bug# 3650522
21922             OKL_API.SET_MESSAGE(
21923                                 G_APP_NAME,
21924                                 G_VALUE_NOT_ALLOWED,
21925                                 'CONTRACT_NUM',
21926                                 p_contract_number,
21927                                 'LINE_NUM',
21928                                 p_line_number,
21929                                 'COL_NAME',
21930                                 'INVOICE_REVIEW_UNTIL_DATE'
21931                                );
21932 
21933             x_return_status := OKL_API.G_RET_STS_ERROR;
21934 
21935          END IF;
21936 
21937 /* not required, Bug# 3650522
21938          debug_message('------>Before review invoice');
21939          l_rulv_rec := NULL;
21940          IF (p_reason_for_invoice_review IS NOT NULL) THEN
21941 
21942             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
21943             l_rulv_rec.dnz_chr_id                := p_chr_id;
21944             l_rulv_rec.rule_information1         := p_reason_for_invoice_review;
21945             l_rulv_rec.rule_information_category := 'LAINPR';
21946             l_rulv_rec.std_template_yn           := 'N';
21947             l_rulv_rec.warn_yn                   := 'N';
21948 
21949          END IF; --reason for invoice review
21950 
21951          IF (p_invoice_review_until_date IS NOT NULL) THEN
21952 
21953             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
21954             l_rulv_rec.dnz_chr_id                := p_chr_id;
21955             l_rulv_rec.rule_information2         := get_canonical_date(p_invoice_review_until_date);
21956             l_rulv_rec.rule_information_category := 'LAINPR';
21957             l_rulv_rec.std_template_yn           := 'N';
21958             l_rulv_rec.warn_yn                   := 'N';
21959 
21960          END IF; -- invoice review until date
21961 
21962          create_rule_group_and_rule(
21963                                     x_return_status => x_return_status,
21964                                     x_msg_count     => x_msg_count,
21965                                     x_msg_data      => x_msg_data,
21966                                     p_rgp_id        => l_rgp_id,
21967                                     p_rgpv_rec      => l_rgpv_rec,
21968                                     p_rulv_rec      => l_rulv_rec,
21969                                     x_rgpv_rec      => x_rgpv_rec,
21970                                     x_rulv_rec      => x_rulv_rec
21971                                    );
21972 
21973          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
21974             raise term_failed;
21975          END IF;
21976 */
21977 /* Bug# 4284166 : not required
21978 
21979          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
21980             l_rgp_id := x_rgpv_rec.id;
21981          END IF;
21982 */
21983 
21984          IF (p_invoice_format_id IS NOT NULL
21985              OR
21986              p_invoice_format_code IS NOT NULL) THEN -- Bug# 3650522
21987             OKL_API.SET_MESSAGE(
21988                                 G_APP_NAME,
21989                                 G_VALUE_NOT_ALLOWED,
21990                                 'CONTRACT_NUM',
21991                                 p_contract_number,
21992                                 'LINE_NUM',
21993                                 p_line_number,
21994                                 'COL_NAME',
21995                                 'INVOICE_FORMAT_ID/_CODE'
21996                                );
21997 
21998             x_return_status := OKL_API.G_RET_STS_ERROR;
21999 
22000          END IF;
22001 
22002 /* not required, Bug# 3650522
22003          debug_message('------>Before invoice format');
22004 
22005          IF (p_invoice_format_id IS NOT NULL
22006              OR
22007              p_invoice_format_code IS NOT NULL) THEN
22008              get_invoice_format_id(
22009                                  x_return_status           => x_return_status,
22010                                  x_msg_count               => x_msg_count,
22011                                  x_msg_data                => x_msg_data,
22012                                  p_contract_number         => p_contract_number,
22013                                  p_invoice_format_id       => p_invoice_format_id,
22014                                  p_invoice_format_code     => p_invoice_format_code,
22015                                  x_invoice_format_id       => x_invoice_format_id,
22016                                  x_invoice_format_name     => x_invoice_format_name
22017                                 );
22018 
22019             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
22020                x_return_status := OKL_API.G_RET_STS_ERROR;
22021                raise term_failed;
22022             END IF;
22023          END IF;
22024 
22025          debug_message('------>Invoice format ID: '||x_invoice_format_id);
22026 */
22027 
22028          IF (p_cash_appl_rule_name IS NOT NULL) THEN -- Bug# 3650522
22029             OKL_API.SET_MESSAGE(
22030                                 G_APP_NAME,
22031                                 G_VALUE_NOT_ALLOWED,
22032                                 'CONTRACT_NUM',
22033                                 p_contract_number,
22034                                 'LINE_NUM',
22035                                 p_line_number,
22036                                 'COL_NAME',
22037                                 'CASH_APPL_RULE_NAME'
22038                                );
22039 
22040             x_return_status := OKL_API.G_RET_STS_ERROR;
22041 
22042          END IF;
22043 
22044          IF (p_review_invoice_flag IS NOT NULL) THEN -- Bug# 3650522
22045             OKL_API.SET_MESSAGE(
22046                                 G_APP_NAME,
22047                                 G_VALUE_NOT_ALLOWED,
22048                                 'CONTRACT_NUM',
22049                                 p_contract_number,
22050                                 'LINE_NUM',
22051                                 p_line_number,
22052                                 'COL_NAME',
22053                                 'REVIEW_INVOICE_FLAG'
22054                                );
22055 
22056             x_return_status := OKL_API.G_RET_STS_ERROR;
22057 
22058          END IF;
22059 
22060 /* Not required, Bug# 3650522
22061          IF (p_cash_appl_rule_name IS NOT NULL) THEN
22062              get_cash_appl_rule_id (
22063                                     x_return_status           => x_return_status,
22064                                     x_msg_count               => x_msg_count,
22065                                     x_msg_data                => x_msg_data,
22066                                     p_contract_number         => p_contract_number||'/'||p_line_number,
22067                                     p_org_id                  => p_auth_org_id,
22068                                     p_cash_appl_rule_name     => p_cash_appl_rule_name,
22069                                     x_cash_appl_rule_id       => x_cash_appl_rule_id
22070                                    );
22071 
22072              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
22073                  x_return_status := OKL_API.G_RET_STS_ERROR;
22074                  raise term_failed;
22075              END IF;
22076          END IF;
22077 
22078          l_rulv_rec := NULL;
22079 
22080          IF (x_cash_appl_rule_id IS NOT NULL) THEN
22081             l_rulv_rec.jtot_object1_code         := 'OKL_CASHAPPL';
22082             l_rulv_rec.object1_id1               := TO_CHAR(x_cash_appl_rule_id);
22083             l_rulv_rec.object1_id2               := '#';
22084             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
22085             l_rulv_rec.dnz_chr_id                := p_chr_id;
22086             l_rulv_rec.rule_information_category := 'LAINVD';
22087             l_rulv_rec.std_template_yn           := 'N';
22088             l_rulv_rec.warn_yn                   := 'N';
22089          END IF;
22090 
22091          IF (x_invoice_format_id IS NOT NULL) THEN
22092 
22093             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
22094             l_rulv_rec.dnz_chr_id                := p_chr_id;
22095             --l_rulv_rec.rule_information4         := TO_CHAR(x_invoice_format_id);
22096             l_rulv_rec.rule_information1         := x_invoice_format_name; --TO_CHAR(x_invoice_format_id);
22097             l_rulv_rec.rule_information_category := 'LAINVD';
22098             l_rulv_rec.std_template_yn           := 'N';
22099             l_rulv_rec.warn_yn                   := 'N';
22100 
22101          END IF; -- invoice format id
22102 
22103          IF (p_review_invoice_flag IS NOT NULL) THEN
22104 
22105             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
22106             l_rulv_rec.dnz_chr_id                := p_chr_id;
22107             --l_rulv_rec.rule_information1         := p_review_invoice_flag;
22108             l_rulv_rec.rule_information4         := NVL(p_review_invoice_flag, 'N');
22109             l_rulv_rec.rule_information_category := 'LAINVD';
22110             l_rulv_rec.std_template_yn           := 'N';
22111             l_rulv_rec.warn_yn                   := 'N';
22112 
22113          END IF; -- reveiew invoice flag
22114 
22115          create_rule_group_and_rule(
22116                                  x_return_status => x_return_status,
22117                                  x_msg_count     => x_msg_count,
22118                                  x_msg_data      => x_msg_data,
22119                                  p_rgp_id        => l_rgp_id,
22120                                  p_rgpv_rec      => l_rgpv_rec,
22121                                  p_rulv_rec      => l_rulv_rec,
22122                                  x_rgpv_rec      => x_rgpv_rec,
22123                                  x_rulv_rec      => x_rulv_rec
22124                                 );
22125 
22126          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
22127              raise term_failed;
22128          END IF;
22129 */
22130 /* Bug# 4284166 : not required
22131 
22132          IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
22133             l_rgp_id := x_rgpv_rec.id;
22134          END IF;
22135 */
22136          --
22137          -- status set to error if the following billing parameters are
22138          -- populated.
22139          --  1. Cash Application Rule
22140          --  2. Invoice Format
22141          --  3. Review Invoice
22142          --  4. Reason for Review
22143          --  5. Review until Date
22144          --
22145          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN -- Bug# 3650522
22146             RAISE term_failed;
22147          END IF;
22148 
22149          debug_message('------>Before Payment Method');
22150          IF (p_payment_method_id IS NOT NULL
22151              OR
22152              p_payment_method IS NOT NULL) THEN
22153             get_payment_method_id(
22154                                   x_return_status           => x_return_status,
22155                                   x_msg_count               => x_msg_count,
22156                                   x_msg_data                => x_msg_data,
22157                                   p_contract_number         => p_contract_number,
22158                                   p_customer_account_id     => g_customer_account_id,
22159                                   p_bill_to_address_id      => x_bill_to_address_id, -- got from get_bill_to_address_id() above
22160                                   p_payment_method_id       => p_payment_method_id,
22161                                   p_payment_method          => p_payment_method,
22162                                   x_payment_method_id       => x_payment_method_id
22163                                  );
22164 
22165             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
22166                 x_return_status := OKL_API.G_RET_STS_ERROR;
22167                 raise term_failed;
22168             END IF;
22169          END IF;
22170 
22171          l_rulv_rec := NULL;
22172          IF (x_payment_method_id IS NOT NULL) THEN
22173 
22174             l_rulv_rec.rgp_id                    := x_rgpv_rec.id;
22175             l_rulv_rec.dnz_chr_id                := p_chr_id;
22176             l_rulv_rec.jtot_object1_code         := 'OKX_RCPTMTH';
22177             l_rulv_rec.object1_id1               := TO_CHAR(x_payment_method_id);
22178             l_rulv_rec.object1_id2               := '#';
22179             l_rulv_rec.rule_information_category := 'LAPMTH';
22180             l_rulv_rec.std_template_yn           := 'N';
22181             l_rulv_rec.warn_yn                   := 'N';
22182 
22183             create_rule_group_and_rule(
22184                                        x_return_status => x_return_status,
22185                                        x_msg_count     => x_msg_count,
22186                                        x_msg_data      => x_msg_data,
22187                                        p_rgp_id        => l_rgp_id,
22188                                        p_rgpv_rec      => l_rgpv_rec,
22189                                        p_rulv_rec      => l_rulv_rec,
22190                                        x_rgpv_rec      => x_rgpv_rec,
22191                                        x_rulv_rec      => x_rulv_rec
22192                                       );
22193 
22194             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
22195                 raise term_failed;
22196             END IF;
22197 
22198             IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136
22199                l_rgp_id := x_rgpv_rec.id;
22200             END IF;
22201 
22202          END IF; -- payment method id
22203 
22204          debug_message('------>After payment method');
22205       END IF; -- bill_to_address
22206       END IF; -- Line type
22207 
22208       return;
22209 
22210    EXCEPTION
22211 
22212       WHEN term_failed THEN
22213         x_return_status := OKL_API.G_RET_STS_ERROR;
22214 
22215    END process_term;
22216 
22217 ------------------------------------------------------------------------------
22218 -- PROCEDURE create_payment_rule_group
22219 -- It creates Rule Group and Rule related to Payments and
22220 -- stacks Error, if any, and returns ERROR status to calling process.
22221 -- Calls:
22222 --  check_stream_type_code
22223 -- Called By:
22224 --  load_input_record
22225 ------------------------------------------------------------------------------
22226    PROCEDURE create_payment_rule_group(
22227                                        x_return_status     OUT NOCOPY VARCHAR2,
22228                                        x_msg_count         OUT NOCOPY NUMBER,
22229                                        x_msg_data          OUT NOCOPY VARCHAR2,
22230                                        p_contract_number   IN  okl_header_interface.contract_number_old%TYPE,
22231                                        p_line_number       IN  okl_lines_interface.line_number%TYPE,
22232                                        p_payment_type_code IN  VARCHAR2,
22233                                        p_stream_purpose    IN  okl_payments_interface.stream_purpose_code%TYPE,
22234                                        p_chr_id            IN  NUMBER,
22235                                        p_cle_id            IN  NUMBER,
22236                                        p_rg_id             IN  NUMBER,
22237                                        x_rgp_id            OUT NOCOPY NUMBER,
22238                                        x_slh_rulv_rec      OUT NOCOPY rulv_rec_type
22239                                       ) IS
22240    l_proc_name     VARCHAR2(35) := 'CREATE_PAYMENT_RULE_GROUP';
22241    x_id1           okl_strmtyp_source_v.id1%TYPE;
22242    pay_rule_failed EXCEPTION;
22243 
22244    l_rulv_rec      rulv_rec_type;
22245    l_rgpv_rec      rgpv_rec_type;
22246    x_rgpv_rec      rgpv_rec_type;
22247 
22248    l_present_yn VARCHAR2(1);
22249    l_payment_stream_name OKL_STRMTYP_SOURCE_V.NAME%TYPE;
22250 
22251    --Bug# 6112766:Start
22252    CURSOR get_rule_group_info(p_chr_id  okc_k_headers_b.id%TYPE,
22253                               p_cle_id  okc_k_lines_v.id%TYPE) IS
22254    SELECT rgp.id
22255    FROM okc_rule_groups_b rgp
22256    WHERE rgp.dnz_chr_id = p_chr_id
22257    AND rgp.cle_id = p_cle_id
22258    AND rgp.rgd_code = 'LALEVL'
22259    AND rgp.rgp_type = 'KRG';
22260    ln_rgp_id    OKC_RULE_GROUPS_V.ID%TYPE;
22261 
22262    rule_group_failed  EXCEPTION;
22263    l_rgp_id  OKC_RULE_GROUPS_V.ID%TYPE;
22264 
22265 --Bug# 6112766: End
22266 
22267    BEGIN
22268 
22269       x_return_status := OKL_API.G_RET_STS_SUCCESS;
22270 
22271       debug_message('------>create_payment_rule_group'); --cklee
22272 
22273       check_stream_type_code(
22274                               x_return_status    => x_return_status,
22275                               x_msg_count        => x_msg_count,
22276                               x_msg_data         => x_msg_data,
22277                               p_stream_type_code => p_payment_type_code,
22278                               p_stream_purpose   => p_stream_purpose,
22279                               x_id1              => x_id1,
22280                               x_name             => l_payment_stream_name
22281                              );
22282 
22283       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
22284          okl_api.set_message(
22285                              G_APP_NAME,
22286                              G_INVALID_VALUE,
22287                              'CONTRACT_NUM',
22288                              p_contract_number||'/'||p_line_number,
22289                              'COL_NAME',
22290                              'PAYMENT_TYPE_CODE, STREAM_PURPOSE_CODE',
22291                              'COL_VALUE',
22292                               p_payment_type_code||', '||p_stream_purpose
22293                              );
22294           x_return_status := OKL_API.G_RET_STS_ERROR;
22295           RAISE pay_rule_failed;
22296       END IF;
22297 
22298       --
22299       -- UDS 10/27
22300       -- Check whether the stream is present in template for this contract
22301       --
22302       l_present_yn := '?';
22303       l_present_yn := OKL_STREAMS_UTIL.strm_tmpt_contains_strm_type
22304                                    (p_khr_id  => p_chr_id,
22305                                     p_sty_id  => x_id1
22306                                    );
22307 
22308       IF (l_present_yn <> 'Y') THEN
22309          okl_api.set_message(
22310                              G_APP_NAME,
22311                              G_NO_STRM_TMPL,
22312                              'CONTRACT_NUM',
22313                              p_contract_number||'/'||p_line_number,
22314                              'COL_NAME',
22315                              'PAYMENT_TYPE_CODE, STREAM_PURPOSE_CODE',
22316                              'COL_VALUE',
22317                              p_payment_type_code||', '||p_stream_purpose
22318                            );
22319 
22320           raise pay_rule_failed;
22321 
22322       END IF;
22323 --Bug# 6112766
22324         l_rgp_id :=p_rg_id;
22325       --check for the property tax code
22326       IF ((p_stream_purpose IN ('DOWN_PAYMENT', 'ESTIMATED_PROPERTY_TAX'))
22327                   AND (l_rgp_id IS NULL)) THEN
22328         OPEN get_rule_group_info(p_chr_id, p_cle_id);
22329          FETCH get_rule_group_info into l_rgp_id;
22330          IF get_rule_group_info%NOTFOUND THEN
22331 --start:| 04-Jun-08 cklee Fixed bug: 7152082                                         |
22332 --         RAISE rule_group_failed; -- cklee
22333            l_rgp_id := NULL;
22334 --end:| 04-Jun-08 cklee Fixed bug: 7152082                                         |
22335          END IF;
22336          CLOSE get_rule_group_info;
22337       END IF;
22338       --Bug# 6112766: End
22339 --      IF (p_rg_id IS NULL) THEN
22340       IF (l_rgp_id IS NULL OR l_rgp_id = OKC_API.G_MISS_NUM) THEN -- cklee bug #7429136  --Bug# 6112766
22341          IF (p_line_number IS NOT NULL) THEN -- line level rule group
22342             l_rgpv_rec            := NULL;
22343             l_rgpv_rec.rgd_code   := 'LALEVL';
22344             l_rgpv_rec.chr_id     := NULL;
22345             l_rgpv_rec.dnz_chr_id := p_chr_id;
22346             l_rgpv_rec.cle_id     := p_cle_id;
22347             l_rgpv_rec.rgp_type   := 'KRG';
22348          ELSE -- header level rule group
22349             l_rgpv_rec            := NULL;
22350             l_rgpv_rec.rgd_code   := 'LALEVL';
22351             l_rgpv_rec.chr_id     := p_chr_id;
22352             l_rgpv_rec.dnz_chr_id := p_chr_id;
22353             l_rgpv_rec.cle_id     := NULL;
22354             l_rgpv_rec.rgp_type   := 'KRG';
22355          END IF;
22356 
22357          OKL_RULE_PUB.create_rule_group(
22358                                      p_api_version     => 1.0,
22359                                      p_init_msg_list   => OKL_API.G_FALSE,
22360                                      x_return_status   => x_return_status,
22361                                      x_msg_count       => x_msg_count,
22362                                      x_msg_data        => x_msg_data,
22363                                      p_rgpv_rec        => l_rgpv_rec,
22364                                      x_rgpv_rec        => x_rgpv_rec
22365                                    );
22366          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
22367              raise pay_rule_failed;
22368          END IF;
22369 
22370          x_rgp_id := x_rgpv_rec.id;
22371       ELSE
22372       --Bug# 6112766 :Start
22373        -- x_rgp_id := p_rg_id;
22374          x_rgp_id := l_rgp_id;
22375       --Bug# 6112766: End
22376       END IF;
22377 
22378       l_rulv_rec                           := NULL;
22379       l_rulv_rec.jtot_object1_code         := 'OKL_STRMTYP';
22380       l_rulv_rec.object1_id1               := TO_CHAR(x_id1);
22381       l_rulv_rec.object1_id2               := '#';
22382       l_rulv_rec.rgp_id                    := x_rgp_id;
22383       l_rulv_rec.dnz_chr_id                := p_chr_id;
22384       l_rulv_rec.rule_information_category := 'LASLH';
22385       l_rulv_rec.std_template_yn           := 'N';
22386       l_rulv_rec.warn_yn                   := 'N';
22387 
22388       OKL_RULE_PUB.create_rule(
22389                                p_api_version     => 1.0,
22390                                p_init_msg_list   => OKL_API.G_FALSE,
22391                                x_return_status   => x_return_status,
22392                                x_msg_count       => x_msg_count,
22393                                x_msg_data        => x_msg_data,
22394                                p_rulv_rec        => l_rulv_rec,
22395                                x_rulv_rec        => x_slh_rulv_rec
22396                               );
22397 
22398       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
22399          x_return_status := OKL_API.G_RET_STS_ERROR;
22400          raise pay_rule_failed;
22401       END IF;
22402 
22403       RETURN;
22404 
22405    EXCEPTION
22406       --Bug# 6112766 :Start
22407      WHEN rule_group_failed THEN
22408        IF get_rule_group_info%ISOPEN THEN
22409          CLOSE get_rule_group_info;
22410        END IF;
22411        x_return_status := OKL_API.G_RET_STS_ERROR;
22412      --Bug# 6112766: End
22413      WHEN pay_rule_failed THEN
22414         x_return_status := OKL_API.G_RET_STS_ERROR;
22415    END create_payment_rule_group;
22416 
22417 
22418 ------------------------------------------------------------------------------
22419 -- PROCEDURE create_payment_other_rules
22420 -- It creates some more rules for payment under rule group created by procedure: create_payment_rule_group and
22421 -- stacks Error, if any, and returns ERROR status to calling process.
22422 -- Calls:
22423 --  check_payment_frequency_code
22424 -- Called By:
22425 --  load_input_record
22426 ------------------------------------------------------------------------------
22427    PROCEDURE create_payment_other_rules(
22428                                         x_return_status      OUT NOCOPY VARCHAR2,
22429                                         x_msg_count          OUT NOCOPY NUMBER,
22430                                         x_msg_data           OUT NOCOPY VARCHAR2,
22431                                         p_contract_number    IN  okl_header_interface.contract_number_old%TYPE,
22432                                         p_line_number        IN  okl_lines_interface.line_number%TYPE,
22433                                         p_payment_sch_number IN  okl_payments_interface.payment_schedule_number%TYPE,
22434                                         p_payment_freq_code  IN  okl_payments_interface.payment_frequency_code%TYPE,
22435                                         p_arrears_flag       IN  okl_payments_interface.arrears_flag%TYPE,
22436                                         p_advance_payments   IN  okl_payments_interface.advance_payments%TYPE,
22437                                         p_payment_amount     IN  okl_payments_interface.payment_amount%TYPE,
22438                                         p_start_date         IN  okl_payments_interface.start_date%TYPE,
22439                                         p_number_of_periods  IN  okl_payments_interface.number_of_periods%TYPE,
22440                                         p_rate               IN  okl_payments_interface.rate%TYPE,
22441                                         p_comments           IN  okl_payments_interface.comments%TYPE,
22442                                         p_stub_days          IN  okl_payments_interface.stub_days%TYPE,
22443                                         p_stub_amount        IN  okl_payments_interface.stub_amount%TYPE,
22444                                         p_slh_rulv_rec       IN  rulv_rec_type,
22445                                         p_chr_id             IN  NUMBER,
22446                                         p_cle_id             IN  NUMBER,
22447                                         p_rgp_id             IN  NUMBER
22448                                        ) IS
22449 
22450    l_proc_name      VARCHAR2(35) := 'CREATE_PAYMENT_OTHER_RULES';
22451    x_id1            okx_tuom_v.ID1%TYPE;
22452    x_uom_code       okx_tuom_v.uom_code%TYPE;
22453    pay_other_failed EXCEPTION;
22454 
22455    l_rulv_rec       rulv_rec_type;
22456    x_rulv_rec       rulv_rec_type;
22457 
22458    l_rulv_tbl       rulv_tbl_type;
22459    x_rulv_tbl       rulv_tbl_type;
22460 
22461    BEGIN
22462 
22463       x_return_status := OKL_API.G_RET_STS_ERROR;
22464 
22465       l_rulv_rec                           := NULL;
22466       l_rulv_rec.rgp_id                    := p_rgp_id;
22467       l_rulv_rec.dnz_chr_id                := p_chr_id;
22468       l_rulv_rec.rule_information1         := TO_CHAR(p_payment_sch_number);
22469       l_rulv_rec.rule_information_category := 'LASLL';
22470       l_rulv_rec.std_template_yn           := 'N';
22471       l_rulv_rec.warn_yn                   := 'N';
22472 
22473       check_payment_frequency_code(
22474                                    x_return_status     => x_return_status,
22475                                    x_msg_count         => x_msg_count,
22476                                    x_msg_data          => x_msg_data,
22477                                    p_payment_freq_code => p_payment_freq_code,
22478                                    x_id1               => x_id1,
22479                                    x_uom_code          => x_uom_code
22480                                   );
22481       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
22482          okl_api.set_message(
22483                              G_APP_NAME,
22484                              G_INVALID_VALUE,
22485                              'CONTRACT_NUM',
22486                              p_contract_number||'/'||p_line_number,
22487                              'COL_NAME',
22488                              'PAYMENT_FREQUENCY_CODE',
22489                              'COL_VALUE',
22490                               p_payment_freq_code
22491                              );
22492          x_return_status := OKL_API.G_RET_STS_ERROR;
22493          RAISE pay_other_failed;
22494       END IF;
22495 
22496       l_rulv_rec.jtot_object1_code         := 'OKL_TUOM';
22497       l_rulv_rec.object1_id1               := x_id1;
22498       l_rulv_rec.object1_id2               := '#';
22499 
22500       l_rulv_rec.rule_information10        := p_arrears_flag;
22501       l_rulv_rec.rule_information5         := TO_CHAR(p_advance_payments);
22502 
22503       IF (p_payment_amount IS NULL) THEN
22504          l_rulv_rec.rule_information6      := TO_CHAR(p_rate * p_number_of_periods);
22505       ELSE
22506          l_rulv_rec.rule_information6      := TO_CHAR(p_payment_amount);
22507       END IF;
22508 
22509       -- l_rulv_rec.rule_information2         := get_canonicaL_date(p_start_date);
22510       l_rulv_rec.rule_information2         := NULL; -- for stub logic
22511       l_rulv_rec.rule_information3         := TO_CHAR(p_number_of_periods);
22512 
22513       IF (p_comments IS NOT NULL) THEN
22514          l_rulv_rec.rule_information9      := p_comments;
22515       END IF;
22516 
22517       l_rulv_rec.rule_information7         := p_stub_days;
22518       l_rulv_rec.rule_information8         := p_stub_amount;
22519 
22520       -- link with SLH
22521       l_rulv_rec.jtot_object2_code         := 'OKL_STRMHDR';
22522       l_rulv_rec.object2_id1               := p_slh_rulv_rec.id;
22523       l_rulv_rec.object2_id2               := '#';
22524 
22525 /* Not needed now
22526       --
22527       -- populate rulv_tbl structure and call
22528       -- new payment stub routine to create LASLLs
22529       --
22530       l_rulv_tbl(1).rgp_id                    := l_rulv_rec.rgp_id;
22531       l_rulv_tbl(1).dnz_chr_id                := l_rulv_rec.dnz_chr_id;
22532       l_rulv_tbl(1).rule_information1         := l_rulv_rec.rule_information1;
22533       l_rulv_tbl(1).rule_information_category := l_rulv_rec.rule_information_category;
22534       l_rulv_tbl(1).std_template_yn           := l_rulv_rec.std_template_yn;
22535       l_rulv_tbl(1).warn_yn                   := l_rulv_rec.warn_yn;
22536       l_rulv_tbl(1).jtot_object1_code         := l_rulv_rec.jtot_object1_code;
22537       l_rulv_tbl(1).object1_id1               := l_rulv_rec.object1_id1;
22538       l_rulv_tbl(1).object1_id2               := l_rulv_rec.object1_id2;
22539 
22540       l_rulv_tbl(1).rule_information10        := l_rulv_rec.rule_information10;
22541       l_rulv_tbl(1).rule_information5         := l_rulv_rec.rule_information5;
22542       l_rulv_tbl(1).rule_information6         := l_rulv_rec.rule_information6;
22543       l_rulv_tbl(1).rule_information2         := l_rulv_rec.rule_information2;
22544       l_rulv_tbl(1).rule_information3         := l_rulv_rec.rule_information3;
22545       l_rulv_tbl(1).rule_information9         := l_rulv_rec.rule_information9;
22546 
22547       l_rulv_tbl(1).rule_information7         := l_rulv_rec.rule_information7;
22548       l_rulv_tbl(1).rule_information8         := l_rulv_rec.rule_information8;
22549 
22550       l_rulv_tbl(1).jtot_object2_code         := l_rulv_rec.jtot_object2_code;
22551       l_rulv_tbl(1).object2_id1               := l_rulv_rec.object2_id1;
22552       l_rulv_tbl(1).object2_id2               := l_rulv_rec.object2_id2;
22553 
22554       okl_la_payments_pvt_1.create_rule(
22555                                         p_api_version      => 1.0,
22556                                         p_init_msg_list    => OKL_API.G_FALSE,
22557                                         x_return_status    => x_return_status,
22558                                         x_msg_count        => x_msg_count,
22559                                         x_msg_data         => x_msg_data,
22560                                         p_rulv_tbl         => l_rulv_tbl,
22561                                         x_rulv_tbl         => x_rulv_tbl
22562                                        );
22563 
22564       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
22565          x_return_status := OKL_API.G_RET_STS_ERROR;
22566          RAISE pay_other_failed;
22567       END IF;
22568 */
22569 
22570       OKL_RULE_PUB.create_rule(
22571                                p_api_version     => 1.0,
22572                                p_init_msg_list   => OKL_API.G_FALSE,
22573                                x_return_status   => x_return_status,
22574                                x_msg_count       => x_msg_count,
22575                                x_msg_data        => x_msg_data,
22576                                p_rulv_rec        => l_rulv_rec,
22577                                x_rulv_rec        => x_rulv_rec
22578                               );
22579 
22580       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
22581          x_return_status := OKL_API.G_RET_STS_ERROR;
22582          RAISE pay_other_failed;
22583       END IF;
22584 
22585       -- Now calculate payment start date
22586       OKL_LA_PAYMENTS_PVT.calculate_details(
22587                                             p_api_version      => 1.0,
22588                                             p_init_msg_list    => OKL_API.G_FALSE,
22589                                             x_return_status    => x_return_status,
22590                                             x_msg_count        => x_msg_count,
22591                                             x_msg_data         => x_msg_data,
22592                                             p_chr_id           => p_chr_id,
22593                                             p_rgp_id           => p_rgp_id,
22594                                             p_slh_id           => p_slh_rulv_rec.id,
22595                                             structure          => NULL,
22596                                             frequency          => NULL,
22597                                             arrears            => NULL,
22598                                             -- Bug# 6438785
22599                                             p_validate_date_yn => 'N'
22600                                            );
22601 
22602       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
22603          x_return_status := OKL_API.G_RET_STS_ERROR;
22604          RAISE pay_other_failed;
22605       END IF;
22606 
22607       RETURN;
22608 
22609    EXCEPTION
22610       WHEN pay_other_failed THEN
22611         x_return_status := OKL_API.G_RET_STS_ERROR;
22612 
22613    END create_payment_other_rules;
22614 
22615 ------------------------------------------------------------------------------
22616 -- PROCEDURE get_inventory_org_item_id
22617 -- It retrives Inventory Organization and Item Id and
22618 -- stacks Error, if any, and returns ERROR status to calling process.
22619 -- Calls:
22620 --  None
22621 -- Called By:
22622 --  process_other_line
22623 --  load_input_record
22624 ------------------------------------------------------------------------------
22625    PROCEDURE get_inventory_org_item_id(
22626                                       x_return_status       OUT NOCOPY VARCHAR2,
22627                                       x_msg_count           OUT NOCOPY NUMBER,
22628                                       x_msg_data            OUT NOCOPY VARCHAR2,
22629                                       p_contract_number     IN  okl_header_interface.contract_number_old%TYPE,
22630                                       p_line_number         IN  okl_lines_interface.line_number%TYPE,
22631                                       p_line_type           IN  okl_lines_interface.line_type%TYPE,
22632                                       p_inventory_org_id    IN  okl_header_interface.inventory_organization_id%TYPE,
22633                                       p_inventory_item_id   IN  okl_lines_interface.inventory_item_id%TYPE,
22634                                       p_inventory_item_name IN  okl_lines_interface.inventory_item_name%TYPE,
22635                                       x_inventory_org_id    OUT NOCOPY NUMBER,
22636                                       x_inventory_item_id   OUT NOCOPY NUMBER
22637                                      ) IS
22638    l_proc_name    VARCHAR2(35) := 'GET_INVENTORY_ORG_ITEM_ID';
22639    inv_org_failed EXCEPTION;
22640    l_org_id       NUMBER;
22641    l_item_id      NUMBER;
22642 
22643    CURSOR org_csr (p_inventory_org_id NUMBER) IS
22644    SELECT organization_id
22645    FROM   hr_all_organization_units
22646    WHERE  organization_id = p_inventory_org_id
22647    AND    SYSDATE BETWEEN NVL(date_from, SYSDATE) AND NVL(date_to, SYSDATE);
22648 
22649    /*
22650    CURSOR org_csr (p_inventory_org_name VARCHAR2,
22651                    p_inventory_org_id   NUMBER) IS
22652    SELECT organization_id
22653    FROM   hr_all_organization_units
22654    WHERE  ((name = p_inventory_org_name
22655             AND
22656             p_inventory_org_name IS NOT NULL)
22657             OR
22658             (organization_id = p_inventory_org_id
22659              AND
22660              p_inventory_org_id IS NOT NULL
22661             )
22662            )
22663    AND    SYSDATE BETWEEN NVL(date_from, SYSDATE) AND NVL(date_to, SYSDATE);
22664    */
22665    CURSOR item_csr (p_inventory_org_id    NUMBER,
22666                     p_inventory_item_id   NUMBER,
22667                     p_inventory_item_name VARCHAR2) IS
22668    SELECT inventory_item_id
22669    FROM   mtl_system_items
22670    WHERE  ((segment1        = p_inventory_item_name
22671             AND
22672             p_inventory_item_name IS NOT NULL)
22673             OR
22674             (inventory_item_id = p_inventory_item_id
22675              AND
22676              p_inventory_item_id IS NOT NULL
22677             )
22678            )
22679    AND    organization_id = p_inventory_org_id
22680    AND    SYSDATE BETWEEN NVL(start_date_active, SYSDATE) AND NVL(end_date_active, SYSDATE);
22681 
22682    CURSOR service_item_csr (p_inventory_org_id    NUMBER,
22683                             p_inventory_item_id   NUMBER,
22684                             p_inventory_item_name VARCHAR2) IS
22685    SELECT id1
22686    FROM   okx_system_items_v
22687    WHERE  ((name = p_inventory_item_name
22688             AND
22689             p_inventory_item_name IS NOT NULL)
22690             OR
22691             (id1 = p_inventory_item_id
22692              AND
22693              p_inventory_item_id IS NOT NULL
22694             )
22695            )
22696    AND    service_item_flag    = 'Y'
22697    AND    vendor_warranty_flag = 'N'
22698    AND    organization_id      = p_inventory_org_id
22699    AND    SYSDATE BETWEEN NVL(start_date_active, SYSDATE) AND NVL(end_date_active, SYSDATE);
22700 
22701    BEGIN
22702 
22703      x_return_status := OKL_API.G_RET_STS_SUCCESS;
22704 
22705      OPEN org_csr(p_inventory_org_id);
22706      FETCH org_csr INTO l_org_id;
22707 
22708      IF org_csr%NOTFOUND THEN
22709         okl_api.set_message(
22710                             G_APP_NAME,
22711                             G_INVALID_VALUE,
22712                             'CONTRACT_NUM',
22713                             p_contract_number,
22714                             'COL_NAME',
22715                             'INVENTORY_ORGANIZATION_ID',
22716                             'COL_VALUE',
22717                             p_inventory_org_id
22718                            );
22719         RAISE inv_org_failed;
22720      END IF;
22721      CLOSE org_csr;
22722      x_inventory_org_id := l_org_id;
22723 
22724      IF (p_line_type = 'ASSET') or (p_line_type = 'ASSET_ADDON') THEN
22725         OPEN item_csr (x_inventory_org_id,
22726                        p_inventory_item_id,
22727                        p_inventory_item_name);
22728         FETCH item_csr into l_item_id;
22729         IF item_csr%NOTFOUND THEN
22730            okl_api.set_message(
22731                                G_APP_NAME,
22732                                G_INVALID_VALUE,
22733                                'CONTRACT_NUM',
22734                                p_contract_number||'/'||p_line_number,
22735                                'COL_NAME',
22736                                'INVENTORY_ITEM_ID, NAME: ',
22737                                'COL_VALUE',
22738                                p_inventory_item_id||', '||p_inventory_item_name
22739                               );
22740            RAISE inv_org_failed;
22741         END IF;
22742         CLOSE item_csr;
22743       ELSIF (p_line_type = 'SERVICE') THEN
22744          OPEN service_item_csr (x_inventory_org_id,
22745                                 p_inventory_item_id,
22746                                 p_inventory_item_name);
22747          FETCH service_item_csr into l_item_id;
22748          IF service_item_csr%NOTFOUND THEN
22749             okl_api.set_message(
22750                                 G_APP_NAME,
22751                                 G_INVALID_VALUE,
22752                                 'CONTRACT_NUM',
22753                                 p_contract_number||'/'||p_line_number,
22754                                 'COL_NAME',
22755                                 'INVENTORY_ITEM_ID, NAME: ',
22756                                 'COL_VALUE',
22757                                 p_inventory_item_id||', '||p_inventory_item_name
22758                                );
22759             RAISE inv_org_failed;
22760          END IF;
22761          CLOSE service_item_csr;
22762      END IF; --line type
22763      x_inventory_item_id := l_item_id;
22764 
22765      return;
22766 
22767    EXCEPTION
22768 
22769       WHEN inv_org_failed THEN
22770          IF org_csr%ISOPEN THEN
22771             CLOSE org_csr;
22772          END IF;
22773          IF item_csr%ISOPEN THEN
22774             CLOSE item_csr;
22775          END IF;
22776          IF service_item_csr%ISOPEN THEN
22777             CLOSE service_item_csr;
22778          END IF;
22779          x_return_status := OKL_API.G_RET_STS_ERROR;
22780 
22781       WHEN OTHERS THEN
22782          okl_api.set_message(
22783                              G_APP_NAME,
22784                              G_UNEXPECTED_ERROR,
22785                              'OKL_SQLCODE',
22786                              SQLCODE,
22787                              'OKL_SQLERRM',
22788                              SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
22789                             );
22790          x_return_status := OKL_API.G_RET_STS_ERROR;
22791 
22792    END get_inventory_org_item_id;
22793 
22794 ------------------------------------------------------------------------------
22795 -- PROCEDURE get_asset_id
22796 -- It retrives Asset ID for given asset number and
22797 -- stacks Error, if any, and returns ERROR status to calling process.
22798 -- Calls:
22799 --  None
22800 -- Called By:
22801 --  load_input_record
22802 ------------------------------------------------------------------------------
22803    PROCEDURE get_asset_id(
22804                           x_return_status   OUT NOCOPY VARCHAR2,
22805                           x_msg_count       OUT NOCOPY NUMBER,
22806                           x_msg_data        OUT NOCOPY VARCHAR2,
22807                           p_contract_number IN  okl_header_interface.contract_number_old%TYPE,
22808                           p_line_number     IN  okl_lines_interface.line_number%TYPE,
22809                           p_asset_number    IN  okl_lines_interface.asset_number%TYPE,
22810                           x_id1             OUT NOCOPY okx_assets_v.id1%TYPE,
22811                           x_id2             OUT NOCOPY okx_assets_v.id2%TYPE
22812                          ) IS
22813 
22814    l_proc_name  VARCHAR2(35) := 'GET_ASSET_ID';
22815    asset_failed EXCEPTION;
22816    l_id1        okx_assets_v.id1%TYPE;
22817    l_id2        okx_assets_v.id2%TYPE;
22818 
22819    CURSOR asset_csr (p_asset_number VARCHAR2) IS
22820    SELECT id1,
22821           id2
22822    FROM   okx_assets_v
22823    WHERE  asset_number = p_asset_number
22824    AND    SYSDATE BETWEEN NVL(start_date_active, SYSDATE) AND NVL(end_date_active, SYSDATE);
22825 
22826    BEGIN
22827      x_return_status := OKL_API.G_RET_STS_SUCCESS;
22828 
22829      OPEN asset_csr (p_asset_number);
22830      FETCH asset_csr INTO l_id1,
22831                           l_id2;
22832      IF asset_csr%NOTFOUND THEN
22833         okl_api.set_message(
22834                             G_APP_NAME,
22835                             G_INVALID_VALUE,
22836                             'CONTRACT_NUM',
22837                             p_contract_number||'/'||p_line_number,
22838                             'COL_NAME',
22839                             'ASSET_NUMBER',
22840                             'COL_VALUE',
22841                             p_asset_number
22842                            );
22843            RAISE asset_failed;
22844      END IF;
22845 
22846      CLOSE asset_csr;
22847 
22848      x_id1 := l_id1;
22849      x_id2 := l_id2;
22850 
22851      return;
22852 
22853    EXCEPTION
22854      WHEN asset_failed THEN
22855 
22856         IF asset_csr%ISOPEN THEN
22857            CLOSE asset_csr;
22858         END IF;
22859 
22860         x_return_status := OKL_API.G_RET_STS_ERROR;
22861 
22862    END get_asset_id;
22863 
22864 ------------------------------------------------------------------------------
22865 -- PROCEDURE get_asset_key_id
22866 -- It retrives ASSET_KEY segments
22867 -- Calls:
22868 --  None
22869 -- Called By:
22870 --  load_input_record
22871 ------------------------------------------------------------------------------
22872 
22873    PROCEDURE get_asset_key_id(
22874                         x_return_status   OUT NOCOPY VARCHAR2,
22875                         x_msg_count       OUT NOCOPY NUMBER,
22876                         x_msg_data        OUT NOCOPY VARCHAR2,
22877                         p_contract_number IN  okc_k_headers_v.contract_number%TYPE,
22878                         p_line_number     IN  okc_k_lines_v.line_number%TYPE,
22879                         p_comb_id         IN  NUMBER,
22880                         p_segment1        IN  VARCHAR2,
22881                         p_segment2        IN  VARCHAR2,
22882                         p_segment3        IN  VARCHAR2,
22883                         p_segment4        IN  VARCHAR2,
22884                         p_segment5        IN  VARCHAR2,
22885                         p_segment6        IN  VARCHAR2,
22886                         p_segment7        IN  VARCHAR2,
22887                         p_segment8        IN  VARCHAR2,
22888                         p_segment9        IN  VARCHAR2,
22889                         p_segment10       IN  VARCHAR2,
22890                         x_comb_id         OUT NOCOPY NUMBER
22891                        ) IS
22892 
22893    CURSOR flex_asset_key_csr (p_segment1 VARCHAR2,
22894                               p_segment2 VARCHAR2,
22895                               p_segment3 VARCHAR2,
22896                               p_segment4 VARCHAR2,
22897                               p_segment5 VARCHAR2,
22898                               p_segment6 VARCHAR2,
22899                               p_segment7 VARCHAR2,
22900                               p_segment8 VARCHAR2,
22901                               p_segment9 VARCHAR2,
22902                               p_segment10 VARCHAR2 ) IS
22903    SELECT code_combination_id
22904    FROM   fa_asset_keywords
22905    WHERE  (segment1 = p_segment1
22906            OR
22907            p_segment1 IS NULL)
22908    AND    (segment2 = p_segment2
22909            OR
22910            p_segment2 IS NULL)
22911    AND    (segment2 = p_segment2
22912            OR
22913            p_segment2 IS NULL)
22914    AND    (segment3 = p_segment3
22915            OR
22916            p_segment3 IS NULL)
22917    AND    (segment4 = p_segment4
22918            OR
22919            p_segment4 IS NULL)
22920    AND    (segment5 = p_segment5
22921            OR
22922            p_segment5 IS NULL)
22923    AND    (segment6 = p_segment6
22924            OR
22925            p_segment6 IS NULL)
22926    AND    (segment7 = p_segment7
22927            OR
22928            p_segment7 IS NULL)
22929    AND    (segment8 = p_segment8
22930            OR
22931            p_segment8 IS NULL)
22932    AND    (segment9 = p_segment9
22933            OR
22934            p_segment9 IS NULL)
22935    AND    (segment10 = p_segment10
22936            OR
22937            p_segment10 IS NULL)
22938    AND    enabled_flag <> 'N'
22939    AND    TRUNC(SYSDATE) BETWEEN NVL(TRUNC(start_date_active), TRUNC(SYSDATE)) AND NVL(TRUNC(end_date_active), TRUNC(SYSDATE));
22940 
22941    l_id NUMBER;
22942    asset_key_failed EXCEPTION;
22943    l_proc_name      VARCHAR2(35) := 'GET_ASSET_KEY_ID';
22944 
22945   BEGIN
22946 
22947      x_return_status := OKL_API.G_RET_STS_SUCCESS;
22948      debug_message(l_proc_name);
22949 
22950      IF (p_comb_id IS NOT NULL) THEN
22951         x_comb_id := p_comb_id;
22952      ELSIF (p_segment1 IS NOT NULL
22953             OR
22954             p_segment2 IS NOT NULL
22955             OR
22956             p_segment3 IS NOT NULL
22957             OR
22958             p_segment4 IS NOT NULL
22959             OR
22960             p_segment5 IS NOT NULL
22961             OR
22962             p_segment6 IS NOT NULL
22963             OR
22964             p_segment7 IS NOT NULL
22965             OR
22966             p_segment8 IS NOT NULL
22967             OR
22968             p_segment9 IS NOT NULL
22969             OR
22970             p_segment10 IS NOT NULL) THEN
22971 
22972            debug_message('Asset key segment1: '||p_segment1);
22973            OPEN flex_asset_key_csr(
22974                              p_segment1,
22975                              p_segment2,
22976                              p_segment3,
22977                              p_segment4,
22978                              p_segment5,
22979                              p_segment6,
22980                              p_segment7,
22981                              p_segment8,
22982                              p_segment9,
22983                              p_segment10);
22984             FETCH flex_asset_key_csr INTO l_id;
22985             IF flex_asset_key_csr%NOTFOUND THEN
22986                raise asset_key_failed;
22987             END IF;
22988             x_comb_id := l_id;
22989      END IF;
22990 
22991    EXCEPTION
22992       WHEN asset_key_failed THEN
22993         IF flex_asset_key_csr%ISOPEN THEN
22994            CLOSE flex_asset_key_csr;
22995         END IF;
22996 
22997         okl_api.set_message(
22998                             G_APP_NAME,
22999                             G_INVALID_COMBINATION,
23000                             'CONTRACT_NUM',
23001                             p_contract_number||'/'||p_line_number,
23002                             'COMB_TYPE',
23003                             'ASSET_KEY'
23004                            );
23005         x_return_status := OKL_API.G_RET_STS_ERROR;
23006 
23007       WHEN OTHERS THEN
23008          okl_api.set_message(
23009                              G_APP_NAME,
23010                              G_UNEXPECTED_ERROR,
23011                              'OKL_SQLCODE',
23012                              SQLCODE,
23013                              'OKL_SQLERRM',
23014                              SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
23015                             );
23016          x_return_status := OKL_API.G_RET_STS_ERROR;
23017 
23018   END get_asset_key_id;
23019 
23020 ------------------------------------------------------------------------------
23021 -- PROCEDURE get_flexid
23022 -- It retrives Flex Value ID from Segments value for ASSET_CATEGORY and ASSET_LOCATION and
23023 -- stacks Error, if any, and returns ERROR status to calling process.
23024 -- Calls:
23025 --  None
23026 -- Called By:
23027 --  load_input_record
23028 ------------------------------------------------------------------------------
23029 
23030    PROCEDURE get_flexid(
23031                         x_return_status   OUT NOCOPY VARCHAR2,
23032                         x_msg_count       OUT NOCOPY NUMBER,
23033                         x_msg_data        OUT NOCOPY VARCHAR2,
23034                         p_contract_number IN  okc_k_headers_v.contract_number%TYPE,
23035                         p_line_number     IN  okc_k_lines_v.line_number%TYPE,
23036                         p_type            IN  VARCHAR2,
23037                         p_comb_id         IN  NUMBER,
23038                         p_segment1        IN  VARCHAR2,
23039                         p_segment2        IN  VARCHAR2,
23040                         p_segment3        IN  VARCHAR2,
23041                         p_segment4        IN  VARCHAR2,
23042                         p_segment5        IN  VARCHAR2,
23043                         p_segment6        IN  VARCHAR2,
23044                         p_segment7        IN  VARCHAR2,
23045                         x_comb_id         OUT NOCOPY NUMBER
23046                        ) IS
23047    CURSOR flex_cat_csr (p_segment1 VARCHAR2,
23048                         p_segment2 VARCHAR2,
23049                         p_segment3 VARCHAR2,
23050                         p_segment4 VARCHAR2,
23051                         p_segment5 VARCHAR2,
23052                         p_segment6 VARCHAR2,
23053                         p_segment7 VARCHAR2 ) IS
23054    SELECT category_id
23055    FROM   FA_CATEGORIES_B
23056    WHERE  (segment1 = NVL(p_segment1,'NULL') OR segment1 IS NULL)
23057    AND    (segment2 = NVL(p_segment2,'NULL') OR segment2 is NULL)
23058    AND    (segment3 = NVL(p_segment3,'NULL') OR segment3 IS NULL)
23059    AND    (segment4 = NVL(p_segment4,'NULL') OR segment4 IS NULL)
23060    AND    (segment5 = NVL(p_segment5,'NULL') OR segment5 IS NULL)
23061    AND    (segment6 = NVL(p_segment6,'NULL') OR segment6 IS NULL)
23062    AND    (segment7 = NVL(p_segment7,'NULL') OR segment7 IS NULL)
23063    AND    enabled_flag <> 'N'
23064    AND    SYSDATE BETWEEN NVL(start_date_active, SYSDATE) AND NVL(end_date_active, SYSDATE);
23065 
23066    CURSOR flex_loc_csr (p_segment1 VARCHAR2,
23067                         p_segment2 VARCHAR2,
23068                         p_segment3 VARCHAR2,
23069                         p_segment4 VARCHAR2,
23070                         p_segment5 VARCHAR2,
23071                         p_segment6 VARCHAR2,
23072                         p_segment7 VARCHAR2 ) IS
23073    SELECT location_id
23074    FROM   okx_ast_locs_v
23075    WHERE  (segment1 = NVL(P_segment1,'NULL') OR segment1 IS NULL)
23076    AND    (segment2 = NVL(p_segment2,'NULL') OR segment2 is NULL)
23077    AND    (segment3 = NVL(p_segment3,'NULL') OR segment3 IS NULL)
23078    AND    (segment4 = NVL(p_segment4,'NULL') OR segment4 IS NULL)
23079    AND    (segment5 = NVL(p_segment5,'NULL') OR segment5 IS NULL)
23080    AND    (segment6 = NVL(p_segment6,'NULL') OR segment6 IS NULL)
23081    AND    (segment7 = NVL(p_segment7,'NULL') OR segment7 IS NULL)
23082    AND    enabled_flag <> 'N'
23083    AND    SYSDATE BETWEEN NVL(start_date_active, SYSDATE) AND NVL(end_date_active, SYSDATE);
23084 
23085    l_id        NUMBER;
23086    flex_failed EXCEPTION;
23087 
23088    BEGIN
23089 
23090      x_return_status := OKL_API.G_RET_STS_SUCCESS;
23091 
23092      IF (p_comb_id IS NOT NULL) THEN
23093         x_comb_id := p_comb_id;
23094      ELSIF (p_segment1 IS NOT NULL
23095             OR
23096             p_segment2 IS NOT NULL
23097             OR
23098             p_segment3 IS NOT NULL
23099             OR
23100             p_segment4 IS NOT NULL
23101             OR
23102             p_segment5 IS NOT NULL
23103             OR
23104             p_segment6 IS NOT NULL
23105             OR
23106             p_segment7 IS NOT NULL) THEN
23107         IF (p_type = 'ASSET_CATEGORY') THEN
23108            OPEN flex_cat_csr(
23109                              p_segment1,
23110                              p_segment2,
23111                              p_segment3,
23112                              p_segment4,
23113                              p_segment5,
23114                              p_segment6,
23115                              p_segment7);
23116             FETCH flex_cat_csr INTO l_id;
23117             IF flex_cat_csr%NOTFOUND THEN
23118                raise flex_failed;
23119             END IF;
23120             x_comb_id := l_id;
23121          ELSIF (p_type = 'ASSET_LOCATION') THEN
23122            OPEN flex_loc_csr(
23123                              p_segment1,
23124                              p_segment2,
23125                              p_segment3,
23126                              p_segment4,
23127                              p_segment5,
23128                              p_segment6,
23129                              p_segment7);
23130             FETCH flex_loc_csr INTO l_id;
23131             IF flex_loc_csr%NOTFOUND THEN
23132                raise flex_failed;
23133             END IF;
23134             x_comb_id := l_id;
23135          END IF;
23136      END IF;
23137 
23138      RETURN;
23139    EXCEPTION
23140       WHEN flex_failed THEN
23141         IF flex_cat_csr%ISOPEN THEN
23142            CLOSE flex_cat_csr;
23143         ELSIF flex_loc_csr%ISOPEN THEN
23144            CLOSE flex_loc_csr;
23145         END IF;
23146 
23147         okl_api.set_message(
23148                             G_APP_NAME,
23149                             G_INVALID_COMBINATION,
23150                             'CONTRACT_NUM',
23151                             p_contract_number||'/'||p_line_number,
23152                             'COMB_TYPE',
23153                             p_type
23154                            );
23155         x_return_status := OKL_API.G_RET_STS_ERROR;
23156 
23157      WHEN OTHERS THEN
23158         x_return_status := OKL_API.G_RET_STS_ERROR;
23159 
23160    END get_flexid;
23161 
23162 ------------------------------------------------------------------------------
23163 -- PROCEDURE get_install_site_id
23164 -- It retrives Install Site Id from Install Site Name and
23165 -- stacks Error, if any, and returns ERROR status to calling process.
23166 -- Calls:
23167 --  None
23168 -- Called By:
23169 --  load_input_record
23170 ------------------------------------------------------------------------------
23171    PROCEDURE get_install_site_id(
23172                                  x_return_status       OUT NOCOPY VARCHAR2,
23173                                  x_msg_count           OUT NOCOPY NUMBER,
23174                                  x_msg_data            OUT NOCOPY VARCHAR2,
23175                                  p_contract_number     IN  okl_header_interface.contract_number_old%TYPE,
23176                                  p_line_number         IN  okl_lines_interface.line_number%TYPE,
23177                                  p_install_site_id     IN  okl_lines_interface.install_site_id%TYPE,
23178                                  p_install_site_number IN  okl_lines_interface.install_site_number%TYPE,
23179                                  x_install_site_id     OUT NOCOPY okl_lines_interface.install_site_id%TYPE
23180                                 ) IS
23181    l_proc_name    VARCHAR2(35) := 'GET_INSTALL_SITE_ID';
23182    install_failed EXCEPTION;
23183    l_id1          okx_party_site_uses_v.id1%TYPE;
23184 
23185    CURSOR install_csr (p_install_site_name okx_party_site_uses_v.name%TYPE,
23186                        p_install_site_id   okx_party_site_uses_v.id1%TYPE) IS
23187    SELECT id1
23188    FROM   okx_party_site_uses_v
23189    WHERE  ((party_site_number = p_install_site_name
23190             AND
23191             p_install_site_number IS NOT NULL)
23192             OR
23193             (id1  = p_install_site_id
23194              AND
23195              p_install_site_id IS NOT NULL
23196             )
23197            )
23198    AND    site_use_type = 'INSTALL_AT'
23199    AND    party_id      = g_customer_id
23200    AND    status        = 'A';
23201 
23202    BEGIN
23203       x_return_status := OKL_API.G_RET_STS_SUCCESS;
23204 
23205       OPEN install_csr (p_install_site_number,
23206                         p_install_site_id);
23207       FETCH install_csr INTO l_id1;
23208 
23209       IF install_csr%NOTFOUND THEN
23210          RAISE install_failed;
23211       END IF;
23212 
23213       CLOSE install_csr;
23214       x_install_site_id := l_id1;
23215 
23216    EXCEPTION
23217      WHEN install_failed THEN
23218         IF install_csr%ISOPEN THEN
23219            CLOSE install_csr;
23220         END IF;
23221         okl_api.set_message(
23222                             G_APP_NAME,
23223                             G_INVALID_VALUE,
23224                             'CONTRACT_NUM',
23225                             p_contract_number||'/'||p_line_number,
23226                             'COL_NAME',
23227                             'INSTALL_SITE_ID, NAME: ',
23228                             'COL_VALUE',
23229                             p_install_site_id||', '||p_install_site_number
23230                            );
23231         x_return_status := OKL_API.G_RET_STS_ERROR;
23232 
23233    END get_install_site_id;
23234 
23235 ------------------------------------------------------------------------------
23236 -- PROCEDURE get_lse_id
23237 -- It retrives Line Style id for Contract Lines and
23238 -- stacks Error, if any, and returns ERROR status to calling process.
23239 -- Calls:
23240 -- Called By:
23241 --  process_other_line
23242 --  load_input_record
23243 ------------------------------------------------------------------------------
23244    PROCEDURE get_lse_id(
23245                         x_return_status     OUT NOCOPY VARCHAR2,
23246                         x_msg_count         OUT NOCOPY NUMBER,
23247                         x_msg_data          OUT NOCOPY VARCHAR2,
23248                         p_contract_number   IN  okl_header_interface.contract_number_old%TYPE,
23249                         p_line_number       IN  okl_lines_interface.line_number%TYPE,
23250                         p_lty_code          IN  VARCHAR2,
23251                         p_top_line_lty_code IN  VARCHAR2,
23252                         x_lse_id            OUT NOCOPY NUMBER
23253                        ) IS
23254 
23255    l_proc_name VARCHAR2(35) := 'GET_LSE_ID';
23256    lse_failed  EXCEPTION;
23257    l_id        NUMBER;
23258 
23259    CURSOR top_lse_csr (p_lty_code VARCHAR2) IS
23260    SELECT id
23261    FROM   OKC_LINE_STYLES_B ols,
23262           okc_subclass_top_line ostl
23263    WHERE  LTY_CODE      = p_lty_code
23264    AND    ostl.scs_code = 'LEASE'
23265    AND    ols.id        = ostl.lse_id;
23266 
23267    CURSOR sub_lse_csr (p_lty_code          VARCHAR2,
23268                        p_top_line_lty_code VARCHAR2) IS
23269    SELECT ols2.id
23270    FROM   okc_line_styles_v ols1,
23271           okc_line_styles_v ols2,
23272           okc_subclass_top_line ostl
23273    WHERE  ostl.scs_code      = 'LEASE'
23274    AND    ostl.lse_id        = ols1.id
23275    AND    ols1.lty_code      = p_top_line_lty_code
23276    AND    ols2.lty_code      = p_lty_code
23277    AND    ols2.lse_parent_id = ostl.lse_id;
23278 
23279    BEGIN
23280 
23281      x_return_status := OKL_API.G_RET_STS_SUCCESS;
23282 
23283      IF (p_top_line_lty_code IS NULL) THEN
23284         OPEN top_lse_csr(p_lty_code);
23285         FETCH top_lse_csr INTO l_id;
23286         IF top_lse_csr%NOTFOUND THEN
23287            okl_api.set_message(
23288                                G_APP_NAME,
23289                                G_INVALID_LTY_CODE,
23290                                'LTY_CODE',
23291                                p_lty_code,
23292                                'CONTRACT_NUM',
23293                                p_contract_number||'/'||p_line_number
23294                               );
23295            RAISE lse_failed;
23296         END IF;
23297         CLOSE top_lse_csr;
23298 
23299         x_lse_id := l_id;
23300      ELSE
23301         OPEN sub_lse_csr(p_lty_code,
23302                          p_top_line_lty_code);
23303         FETCH sub_lse_csr INTO l_id;
23304         IF sub_lse_csr%NOTFOUND THEN
23305            okl_api.set_message(
23306                                G_APP_NAME,
23307                                G_INVALID_LTY_CODE,
23308                                'LTY_CODE',
23309                                p_lty_code,
23310                                'CONTRACT_NUM',
23311                                p_contract_number||'/'||p_line_number
23312                               );
23313            RAISE lse_failed;
23314         END IF;
23315         CLOSE sub_lse_csr;
23316 
23317         x_lse_id := l_id;
23318      END IF;
23319 
23320      return;
23321 
23322    EXCEPTION
23323      WHEN lse_failed THEN
23324         IF top_lse_csr%ISOPEN THEN
23325            CLOSE top_lse_csr;
23326         END IF;
23327         IF sub_lse_csr%ISOPEN THEN
23328            CLOSE sub_lse_csr;
23329         END IF;
23330         x_return_status := OKL_API.G_RET_STS_ERROR;
23331    END get_lse_id;
23332 
23333 ------------------------------------------------------------------------------
23334 -- PROCEDURE validate_real_est
23335 -- It validates real estate record if applicable and
23336 -- stacks Error, if any, and returns ERROR status to calling process.
23337 -- Calls:
23338 -- Called By:
23339 --  process_other_line
23340 --  load_input_record
23341 ------------------------------------------------------------------------------
23342    PROCEDURE validate_real_est(
23343                         x_return_status     OUT NOCOPY VARCHAR2,
23344                         x_msg_count         OUT NOCOPY NUMBER,
23345                         x_msg_data          OUT NOCOPY VARCHAR2,
23346                         p_intf_line         IN  OKL_LINES_INTERFACE%ROWTYPE
23347                        ) IS
23348 
23349    l_proc_name VARCHAR2(150) := 'OKL_LINES_INTERFACE: validate_real_est';
23350    l_progress  varchar2(150);
23351    l_dummy number;
23352    l_prc boolean := false;
23353 
23354    validate_real_est_failed  EXCEPTION;
23355 
23356   cursor c_prc (p_prc_code VARCHAR2) is
23357     select 1
23358   from fnd_lookups lok
23359   where lok.lookup_type = 'OKL_PROPERTY_CLASS_OPTIONS'
23360   and lok.lookup_code = p_prc_code;
23361 
23362 
23363    BEGIN
23364 
23365      x_return_status := OKL_API.G_RET_STS_SUCCESS;
23366 
23367      -- real estate required columns check
23368      IF ((p_intf_line.real_est_init_direct_cost IS NOT NULL or
23369           p_intf_line.real_est_refinance_amt IS NOT NULL or
23370           p_intf_line.real_est_net_footage_rentable IS NOT NULL or
23371           p_intf_line.real_est_gross_footage IS NOT NULL or
23372           p_intf_line.real_est_property_class_code IS NOT NULL)
23373           AND
23374          NOT(p_intf_line.real_est_init_direct_cost IS NOT NULL and
23375            p_intf_line.real_est_refinance_amt IS NOT NULL and
23376            p_intf_line.real_est_net_footage_rentable IS NOT NULL and
23377            p_intf_line.real_est_property_class_code IS NOT NULL and
23378            p_intf_line.real_est_gross_footage IS NOT NULL)) THEN
23379 
23380 
23381         okl_api.set_message(
23382                             G_APP_NAME,
23383                             G_MISSING_VALUE_FOR_LINE,
23384                             'CONTRACT_NUM',
23385                             p_intf_line.contract_number_old||'/'||TO_CHAR(p_intf_line.line_number),
23386                             'COL_NAME',
23387 --
23388                             'REAL_EST_INIT_DIRECT_COST OR '||
23389                             'REAL_EST_REFINANCE_AMT OR '||
23390                             'REAL_EST_GROSS_FOOTAGE OR '||
23391                             'REAL_EST_NET_FOOTAGE_RENTABLE OR '||
23392                             'REAL_EST_PROPERTY_CLASS_CODE',
23393 --
23394                             'LINE',
23395                             p_intf_line.line_type
23396                             );
23397 
23398          raise validate_real_est_failed;
23399 
23400      END IF;
23401      l_progress := 'Check required columns for real estate';
23402 
23403      IF (p_intf_line.real_est_property_class_code IS NOT NULL) THEN
23404 
23405        OPEN c_prc(p_intf_line.real_est_property_class_code);
23406        FETCH c_prc INTO l_dummy;
23407        l_prc := c_prc%NOTFOUND;
23408        CLOSE c_prc;
23409 
23410        IF (l_prc) THEN
23411 
23412            okl_api.set_message(
23413                                G_APP_NAME,
23414                                G_INVALID_VALUE,
23415                                'CONTRACT_NUM',
23416                                p_intf_line.contract_number_old,
23417                                'COL_NAME',
23418                                'REAL_EST_PROPERTY_CLASS_CODE',
23419                                'COL_VALUE',
23420                                p_intf_line.REAL_EST_PROPERTY_CLASS_CODE
23421                               );
23422 
23423          raise validate_real_est_failed;
23424        END IF;
23425      END IF;
23426      l_progress := 'Check property class code';
23427 
23428      return;
23429 
23430    EXCEPTION
23431      WHEN validate_real_est_failed THEN
23432         x_return_status := OKL_API.G_RET_STS_ERROR;
23433         debug_message(l_proc_name ||': '||l_progress);
23434      WHEN OTHERS THEN
23435         x_return_status := OKL_API.G_RET_STS_ERROR;
23436         debug_message(l_proc_name ||': '||l_progress);
23437 
23438    END validate_real_est;
23439 
23440 ------------------------------------------------------------------------------
23441 -- PROCEDURE get_link_asset_id
23442 -- It gets line id for Financial Asset Line (TOP) corrsponding to ASSET_NUMBER provided and
23443 -- stacks Error, if any, and returns ERROR status to calling process.
23444 -- Calls:
23445 --  None
23446 -- Called By:
23447 --  process_other_line
23448 ------------------------------------------------------------------------------
23449    PROCEDURE get_link_asset_id(
23450                                x_return_status   OUT NOCOPY VARCHAR2,
23451                                x_msg_count       OUT NOCOPY NUMBER,
23452                                x_msg_data        OUT NOCOPY VARCHAR2,
23453                                p_asset_number    IN  okl_lines_interface.asset_number%TYPE,
23454                                p_contract_number IN  okc_k_headers_v.contract_number%TYPE,
23455                                p_chr_id          IN  okc_k_headers_v.id%TYPE,
23456                                p_line_number     IN  okc_k_lines_v.line_number%TYPE,
23457                                x_asset_line_id   OUT NOCOPY okc_k_lines_v.id%TYPE
23458                              ) IS
23459 
23460    l_proc_name VARCHAR2(35) := 'GET_LINK_ASSET_ID';
23461    fin_failed  EXCEPTION;
23462    l_line_id   okc_k_lines_v.id%TYPE;
23463 
23464    CURSOR fin_csr (p_chr_id       NUMBER,
23465                    p_asset_number VARCHAR2) IS
23466    SELECT id
23467    FROM   okc_k_lines_v
23468    WHERE  name = p_asset_number
23469    AND    chr_id = p_chr_id
23470    AND    lse_id = (
23471                     SELECT id
23472                     FROM   okc_line_styles_v
23473                     WHERE  lty_code = 'FREE_FORM1' -- to determine TOP line
23474                    );
23475    BEGIN
23476       x_return_status := OKL_API.G_RET_STS_SUCCESS;
23477       OPEN fin_csr (p_chr_id,
23478                     p_asset_number);
23479       FETCH fin_csr INTO l_line_id;
23480 
23481       IF fin_csr%NOTFOUND THEN
23482         okl_api.set_message(
23483                             G_APP_NAME,
23484                             G_FIN_ASSET_ERROR,
23485                             'CONTRACT_NUM',
23486                             p_contract_number,
23487                             'LINE_NUM',
23488                             p_line_number,
23489                             'ASSET_NUM',
23490                             p_asset_number
23491                            );
23492          raise fin_failed;
23493       END IF;
23494 
23495       CLOSE fin_csr;
23496 
23497       x_asset_line_id := l_line_id;
23498       --debug_message('ID: '||x_asset_line_id);
23499       RETURN;
23500 
23501    EXCEPTION
23502       WHEN fin_failed THEN
23503          IF fin_csr%ISOPEN THEN
23504             CLOSE fin_csr;
23505          END IF;
23506          x_return_status := OKL_API.G_RET_STS_ERROR;
23507 
23508       WHEN OTHERS THEN
23509          okl_api.set_message(
23510                              G_APP_NAME,
23511                              G_UNEXPECTED_ERROR,
23512                              'OKL_SQLCODE',
23513                              SQLCODE,
23514                              'OKL_SQLERRM',
23515                              SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
23516                             );
23517          x_return_status := OKL_API.G_RET_STS_ERROR;
23518    END get_link_asset_id;
23519 
23520 ------------------------------------------------------------------------------
23521 -- PROCEDURE validate_usage_other_line
23522 -- It validates association between Usage Line Item and Inventory Item at Model Line and
23523 -- stacks Error, if any, and returns ERROR status to calling process.
23524 -- Calls:
23525 -- Called By:
23526 ------------------------------------------------------------------------------
23527    PROCEDURE  validate_usage_item_assoc(
23528                                         x_return_status   OUT NOCOPY VARCHAR2,
23529                                         x_msg_count       OUT NOCOPY NUMBER,
23530                                         x_msg_data        OUT NOCOPY VARCHAR2,
23531                                         p_contract_number IN  VARCHAR2,
23532                                         p_line_number     IN  NUMBER,
23533                                         p_asset_line_id   IN  NUMBER,
23534                                         p_usage_item_id   IN  okl_lines_interface.usage_item_id%TYPE,
23535                                         p_usage_item_name IN  VARCHAR2,
23536                                         p_inv_org_id      IN  NUMBER
23537                                        ) IS
23538    l_proc_name VARCHAR2(35) := 'VALIDATE_USAGE_ITEM_ASSOC';
23539    CURSOR assoc_csr (p_usage_item_id NUMBER,
23540                      p_asset_line_id NUMBER) IS
23541    SELECT 'Y'
23542    FROM   okc_k_items_v item,
23543           okl_k_lines_full_v model,
23544           okc_line_styles_v style,
23545           cs_counters cc,
23546           cs_ctr_associations assoc
23547    WHERE  model.lse_id           = style.id
23548    AND    model.id               = item.cle_id
23549    AND    model.cle_id           = p_asset_line_id
23550    AND    style.lty_code         = 'ITEM'
23551    AND    cc.counter_group_id    = assoc.counter_group_id
23552    AND    cc.usage_item_id       = p_usage_item_id
23553    AND    assoc.source_object_id = item.object1_id1;
23554 
23555    assoc_failed    EXCEPTION;
23556    l_dummy         VARCHAR2(1);
23557    BEGIN
23558 
23559       debug_message(l_proc_name);
23560       x_return_status := OKL_API.G_RET_STS_SUCCESS;
23561 
23562       l_dummy := 'N';
23563       OPEN assoc_csr(p_usage_item_id,
23564                      p_asset_line_id);
23565       FETCH assoc_csr INTO l_dummy;
23566       IF (assoc_csr%NOTFOUND
23567           OR
23568           l_dummy = 'N')  THEN
23569          okl_api.set_message(
23570                              G_APP_NAME,
23571                              G_INVALID_USAGE_ITEM_ASSOC,
23572                              'CONTRACT_NUM',
23573                              p_contract_number||'/'||p_line_number,
23574                              'USAGE_ITEM',
23575                              p_usage_item_name||', '||p_usage_item_id
23576                             );
23577          RAISE assoc_failed;
23578       END IF;
23579       CLOSE assoc_csr;
23580 
23581       RETURN;
23582 
23583    EXCEPTION
23584       WHEN assoc_failed THEN
23585          IF assoc_csr%ISOPEN THEN
23586             CLOSE assoc_csr;
23587          END IF;
23588          x_return_status := OKL_API.G_RET_STS_ERROR;
23589    END validate_usage_item_assoc;
23590 
23591 ------------------------------------------------------------------------------
23592 -- PROCEDURE validate_term_quote
23593 -- It validates termination quote used for Rollover fee line and returns
23594 -- quote ID to caller and
23595 -- stacks Error, if any, and returns ERROR status to calling process.
23596 -- Calls:
23597 -- Called By:
23598 ------------------------------------------------------------------------------
23599    PROCEDURE validate_term_quote(
23600                                  x_return_status     OUT NOCOPY VARCHAR2,
23601                                  x_msg_count         OUT NOCOPY NUMBER,
23602                                  x_msg_data          OUT NOCOPY VARCHAR2,
23603                                  p_chr_id            IN  NUMBER,
23604                                  p_contract_number   IN  VARCHAR2,
23605                                  p_line_number       IN  NUMBER,
23606                                  p_term_quote_id     IN  okl_lines_interface.termination_quote_id%TYPE,
23607                                  p_term_quote_number IN  okl_lines_interface.termination_quote_number%TYPE,
23608                                  x_term_quote_id     OUT NOCOPY okl_lines_interface.termination_quote_id%TYPE
23609                                 ) IS
23610 
23611   l_proc_name   VARCHAR2(35) := 'VALIDATE_TERM_QUOTE';
23612   l_quote_id    NUMBER;
23613   quote_failed  EXCEPTION;
23614 
23615   CURSOR qte_csr (p_qte_number VARCHAR2) IS
23616   SELECT id
23617   FROM   okl_trx_quotes_b
23618   WHERE  quote_number = p_qte_number;
23619 
23620   BEGIN
23621 
23622     x_return_status := OKL_API.G_RET_STS_SUCCESS;
23623 
23624     IF (p_term_quote_number IS NOT NULL) THEN
23625        OPEN qte_csr (p_term_quote_number);
23626        FETCH qte_csr INTO l_quote_id;
23627        IF (qte_csr%NOTFOUND) THEN
23628             okl_api.set_message(
23629                                 G_APP_NAME,
23630                                 G_INVALID_VALUE,
23631                                 'CONTRACT_NUM',
23632                                 p_contract_number||'/'||p_line_number,
23633                                 'COL_NAME',
23634                                 'TERMINATION_QUOTE_NUMBER',
23635                                 'COL_VALUE',
23636                                 p_term_quote_number
23637                                );
23638 
23639             RAISE quote_failed;
23640        END IF;
23641        CLOSE qte_csr;
23642     ELSE
23643        l_quote_id := p_term_quote_id;
23644     END IF;
23645 
23646     -- validate quote
23647     okl_maintain_fee_pvt.validate_rollover_feeLine(
23648             p_api_version     => 1.0,
23649             p_init_msg_list   => OKL_API.G_FALSE,
23650             x_return_status   => x_return_status,
23651             x_msg_count       => x_msg_count,
23652             x_msg_data        => x_msg_data,
23653             p_chr_id          => p_chr_id,
23654             p_qte_id          => l_quote_id
23655             --p_for_qa_check    => 'T'
23656            );
23657 
23658     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
23659        RAISE quote_failed;
23660     END IF;
23661 
23662     x_term_quote_id := l_quote_id;
23663 
23664     RETURN;
23665 
23666   EXCEPTION
23667     WHEN quote_failed THEN
23668       x_return_status := OKL_API.G_RET_STS_ERROR;
23669       IF (qte_csr%ISOPEN) THEN
23670          CLOSE qte_csr;
23671       END IF;
23672 
23673   END validate_term_quote;
23674 
23675 ------------------------------------------------------------------------------
23676 -- PROCEDURE create_party_payment_hdr
23677 -- This procedure creates payment headers for pass throughs associated with Asset, Serive, and Fee lines
23678 -- stacks Error, if any, and returns ERROR status to calling process.
23679 -- Calls:
23680 --
23681 -- Called By:
23682 --
23683 ------------------------------------------------------------------------------
23684    PROCEDURE create_party_payment_hdr(
23685                                         x_return_status                OUT NOCOPY VARCHAR2,
23686                                         x_msg_count                    OUT NOCOPY NUMBER,
23687                                         x_msg_data                     OUT NOCOPY VARCHAR2,
23688                                         p_contract_id                  IN  okc_k_headers_b.id%TYPE,
23689                                         p_line_id                      IN  okc_k_lines_b.id%TYPE,
23690                                         p_line_type                    IN  okl_lines_interface.line_type%TYPE,
23691                                         p_pth_start_date               IN  okl_party_payment_hdr.passthru_start_date%TYPE,
23692                                         p_pth_base_payout_basis        IN  okl_party_payment_hdr.payout_basis%TYPE,
23693                                         p_pth_base_stream_code         IN  okl_lines_interface.pth_base_stream_code%TYPE,
23694                                         p_pth_base_stream_purpose_code IN  okl_lines_interface.pth_base_stream_purpose_code%TYPE,
23695                                         p_pth_evg_payout_basis         IN  okl_party_payment_hdr.payout_basis%TYPE,
23696                                         p_pth_payout_basis_formula     IN  okl_party_payment_hdr.payout_basis_formula%TYPE,
23697                                         p_pth_evg_stream_code          IN  okl_lines_interface.pth_evg_stream_code%TYPE,
23698                                         p_pth_evg_stream_purpose_code  IN  okl_lines_interface.pth_evg_stream_purpose_code%TYPE,
23699                                         x_party_pmnt_hdr_tbl           OUT NOCOPY okl_party_payments_pvt.pphv_tbl_type
23700                                        ) IS
23701 
23702    l_proc_name                  VARCHAR2(35) := 'CREATE_PARTY_PAYMENT_HDR';
23703    l_return_status              VARCHAR2(1);
23704    l_base_stream_type_id         okl_strmtyp_source_v.id1%TYPE;
23705    l_evg_stream_type_id         okl_strmtyp_source_v.id1%TYPE;
23706    l_yn                         VARCHAR2(1) := 'N';
23707    l_base_pmnt_hdr              pphv_rec_type := NULL;
23708    l_evg_pmnt_hdr               pphv_rec_type := NULL;
23709    l_pmnt_hdr_tbl_in            pphv_tbl_type;
23710    l_pmnt_hdr_tbl_out           pphv_tbl_type;
23711    l_counter                    NUMBER := 0;
23712    l_contract_number            okc_k_headers_b.contract_number%TYPE;
23713    l_contract_start_date        okc_k_headers_b.start_date%TYPE;
23714    party_pmnt_header_failed     EXCEPTION;
23715    l_stream_name                OKL_STRMTYP_SOURCE_V.NAME%TYPE;
23716 
23717    CURSOR contract_csr (p_contract_id NUMBER) is
23718    SELECT contract_number, start_date
23719    FROM   okl_k_headers_full_v
23720    WHERE  id = p_contract_id;
23721 
23722    CURSOR passthru_stream_csr (p_sty_id number, p_contract_start_date date) IS
23723    SELECT 'Y'
23724    FROM   okl_stream_types_uv STL
23725    WHERE  STL.id = p_sty_id
23726    AND    STL.start_date <= p_contract_start_date
23727    AND   (STL.end_date >= p_contract_start_date OR STL.end_date IS NULL);
23728 
23729    BEGIN
23730 
23731       x_return_status := OKL_API.G_RET_STS_SUCCESS;
23732 
23733       OPEN contract_csr(p_contract_id);
23734       FETCH contract_csr INTO l_contract_number,l_contract_start_date;
23735 
23736       IF contract_csr%NOTFOUND THEN
23737           x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
23738           CLOSE contract_csr;
23739           OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
23740                               p_msg_name     => G_LLA_CHR_ID);
23741           RAISE party_pmnt_header_failed;
23742       END IF;
23743 
23744       CLOSE contract_csr;
23745 
23746       IF (p_pth_base_stream_code IS NOT NULL AND
23747           p_pth_base_stream_purpose_code IS NOT NULL) THEN
23748          -- Derive the stream type ID
23749          check_stream_type_code(
23750                                 x_return_status    => l_return_status,
23751                                 x_msg_count        => x_msg_count,
23752                                 x_msg_data         => x_msg_data,
23753                                 p_stream_type_code => p_pth_base_stream_code,
23754                                 p_stream_purpose   => p_pth_base_stream_purpose_code,
23755                                 x_id1              => l_base_stream_type_id,
23756                                 x_name             => l_stream_name
23757                                );
23758          IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
23759              okl_api.set_message(
23760                                  G_APP_NAME,
23761                                  G_INVALID_VALUE,
23762                                  'CONTRACT_NUM',
23763                                  l_contract_number, --||'/'||TO_CHAR(p_line_number),
23764                                 'COL_NAME',
23765                                 'PTH_BASE_STREAM_CODE, PTH_BASE_STREAM_PURPOSE_CODE',
23766                                 'COL_VALUE',
23767                                 p_pth_base_stream_code||', '||p_pth_base_stream_purpose_code
23768                                );
23769              x_return_status := OKL_API.G_RET_STS_ERROR;
23770              RAISE party_pmnt_header_failed;
23771          END IF;
23772 
23773          -- Check if the stream type is ID is effective
23774          OPEN passthru_stream_csr (l_base_stream_type_id, l_contract_start_date);
23775          FETCH passthru_stream_csr INTO l_yn;
23776 
23777          IF passthru_stream_csr%NOTFOUND THEN
23778             CLOSE passthru_stream_csr;
23779             okl_api.set_message(
23780                                 G_APP_NAME,
23781                                 G_NO_STRM_TMPL,
23782                                 'CONTRACT_NUM',
23783                                 l_contract_number, --||'/'||p_line_number,
23784                                 'COL_NAME',
23785                                 'PTH_BASE_STREAM_CODE, PTH_BASE_STREAM_PURPOSE_CODE',
23786                                 'COL_VALUE',
23787                                 p_pth_base_stream_code||', '||p_pth_base_stream_purpose_code
23788                               );
23789             RAISE party_pmnt_header_failed;
23790          ELSE
23791             CLOSE passthru_stream_csr;
23792          END IF;
23793       END IF;
23794 
23795       IF (p_pth_evg_stream_code IS NOT NULL AND
23796           p_pth_evg_stream_purpose_code IS NOT NULL) THEN
23797           -- Derive the stream type ID
23798          check_stream_type_code(
23799                                 x_return_status    => l_return_status,
23800                                 x_msg_count        => x_msg_count,
23801                                 x_msg_data         => x_msg_data,
23802                                 p_stream_type_code => p_pth_evg_stream_code,
23803                                 p_stream_purpose   => p_pth_evg_stream_purpose_code,
23804                                 x_id1              => l_evg_stream_type_id,
23805                                 x_name             => l_stream_name
23806                                );
23807          IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
23808              okl_api.set_message(
23809                                  G_APP_NAME,
23810                                  G_INVALID_VALUE,
23811                                  'CONTRACT_NUM',
23812                                  l_contract_number, --||'/'||TO_CHAR(p_line_number),
23813                                 'COL_NAME',
23814                                 'PTH_EVG_STREAM_CODE, PTH_EVG_STREAM_PURPOSE_CODE',
23815                                 'COL_VALUE',
23816                                 p_pth_evg_stream_code||', '||p_pth_evg_stream_purpose_code
23817                                );
23818              x_return_status := OKL_API.G_RET_STS_ERROR;
23819              RAISE party_pmnt_header_failed;
23820          END IF;
23821 
23822          -- Check if the stream type is ID is effective
23823          OPEN passthru_stream_csr (l_evg_stream_type_id, l_contract_start_date);
23824          FETCH passthru_stream_csr INTO l_yn;
23825 
23826          IF passthru_stream_csr%NOTFOUND THEN
23827             CLOSE passthru_stream_csr;
23828             okl_api.set_message(
23829                                 G_APP_NAME,
23830                                 G_NO_STRM_TMPL,
23831                                 'CONTRACT_NUM',
23832                                 l_contract_number, --||'/'||p_line_number,
23833                                 'COL_NAME',
23834                                 'PTH_EVG_STREAM_CODE, PTH_EVG_STREAM_PURPOSE_CODE',
23835                                 'COL_VALUE',
23836                                 p_pth_evg_stream_code||', '||p_pth_evg_stream_purpose_code
23837                               );
23838             RAISE party_pmnt_header_failed;
23839          ELSE
23840             CLOSE passthru_stream_csr;
23841          END IF;
23842       END IF;
23843 
23844       IF ((p_line_type = 'ASSET') AND (p_pth_evg_payout_basis IS NOT NULL)) THEN
23845           l_evg_pmnt_hdr.dnz_chr_id              := p_contract_id;
23846           l_evg_pmnt_hdr.cle_id                  := p_line_id;
23847           l_evg_pmnt_hdr.payout_basis            := p_pth_evg_payout_basis;
23848           l_evg_pmnt_hdr.payout_basis_formula    := p_pth_payout_basis_formula;
23849           l_evg_pmnt_hdr.passthru_term           := 'EVERGREEN';
23850           l_evg_pmnt_hdr.passthru_stream_type_id := l_evg_stream_type_id;
23851 
23852       ELSIF (p_line_type in ('SERVICE','FEE'))  THEN
23853          IF (p_pth_base_payout_basis IS NOT NULL) THEN
23854              l_base_pmnt_hdr.passthru_start_date     := p_pth_start_date;
23855              l_base_pmnt_hdr.dnz_chr_id              := p_contract_id;
23856              l_base_pmnt_hdr.cle_id                  := p_line_id;
23857              l_base_pmnt_hdr.payout_basis            := p_pth_base_payout_basis;
23858              l_base_pmnt_hdr.passthru_term           := 'BASE';
23859              l_base_pmnt_hdr.passthru_stream_type_id := l_base_stream_type_id;
23860 	 END IF;
23861 
23862          IF (p_pth_evg_payout_basis IS NOT NULL) THEN
23863             l_evg_pmnt_hdr.dnz_chr_id              := p_contract_id;
23864             l_evg_pmnt_hdr.cle_id                  := p_line_id;
23865             l_evg_pmnt_hdr.payout_basis            := p_pth_evg_payout_basis;
23866             l_evg_pmnt_hdr.payout_basis_formula    := p_pth_payout_basis_formula;
23867             l_evg_pmnt_hdr.passthru_term           := 'EVERGREEN';
23868             l_evg_pmnt_hdr.passthru_stream_type_id := l_evg_stream_type_id;
23869 
23870 	 END IF;
23871 
23872       ELSIF (p_line_type IS NULL) THEN -- Evergreen pth at contract header
23873             l_evg_pmnt_hdr.dnz_chr_id              := p_contract_id;
23874             l_evg_pmnt_hdr.cle_id                  := NULL;
23875             l_evg_pmnt_hdr.payout_basis            := p_pth_evg_payout_basis;
23876             l_evg_pmnt_hdr.payout_basis_formula    := p_pth_payout_basis_formula;
23877             l_evg_pmnt_hdr.passthru_term           := 'EVERGREEN';
23878             l_evg_pmnt_hdr.passthru_stream_type_id := l_evg_stream_type_id;
23879       END IF;
23880 
23881       IF (l_base_pmnt_hdr.dnz_chr_id IS NOT NULL) THEN
23882          l_counter := l_counter + 1;
23883          l_pmnt_hdr_tbl_in(l_counter) := l_base_pmnt_hdr;
23884       END IF;
23885 
23886       IF (l_evg_pmnt_hdr.dnz_chr_id IS NOT NULL) THEN
23887          l_counter := l_counter + 1;
23888          l_pmnt_hdr_tbl_in(l_counter) := l_evg_pmnt_hdr;
23889       END IF;
23890 
23891       IF (l_pmnt_hdr_tbl_in.COUNT > 0) THEN
23892          okl_party_payments_pvt.create_party_payment_hdr(
23893                                                          p_api_version    => 1.0,
23894                                                          x_return_status  => x_return_status,
23895                                                          x_msg_count      => x_msg_count,
23896                                                          x_msg_data       => x_msg_data,
23897                                                          p_pphv_tbl       => l_pmnt_hdr_tbl_in,
23898                                                          x_pphv_tbl       => l_pmnt_hdr_tbl_out
23899 						        );
23900 	  x_party_pmnt_hdr_tbl := l_pmnt_hdr_tbl_out;
23901 
23902          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
23903             x_return_status := OKL_API.G_RET_STS_ERROR;
23904             RAISE party_pmnt_header_failed;
23905          END IF;
23906       END IF;
23907 
23908       RETURN;
23909 
23910    EXCEPTION
23911       WHEN party_pmnt_header_failed THEN
23912         x_return_status := OKL_API.G_RET_STS_ERROR;
23913 
23914    END create_party_payment_hdr;
23915 
23916 ------------------------------------------------------------------------------
23917 -- PROCEDURE process_other_line
23918 -- It process SERVICE, FEE lines and calls API to create reecord in respective tables and
23919 -- stacks Error, if any, and returns ERROR status to calling process.
23920 -- Calls:
23921 --  get_link_asset_id
23922 --  get_lse_id
23923 --  get_inventory_org_item_id
23924 -- Called By:
23925 --  load_input_record
23926 ------------------------------------------------------------------------------
23927    PROCEDURE process_other_line(
23928                                   x_return_status     OUT NOCOPY VARCHAR2,
23929                                   x_msg_count         OUT NOCOPY NUMBER,
23930                                   x_msg_data          OUT NOCOPY VARCHAR2,
23931                                   p_contract_number   IN  okl_header_interface.contract_number_old%TYPE,
23932                                   p_chr_id            IN  okc_k_headers_v.id%TYPE,
23933                                   p_line_number       IN  okl_lines_interface.line_number%TYPE,
23934                                   p_line_type         IN  okl_lines_interface.line_type%TYPE,
23935                                   p_line_type_prev    IN  okl_lines_interface.line_type%TYPE,
23936                                   p_inv_item_id       IN  okl_lines_interface.inventory_item_id%TYPE,
23937                                   p_inv_org_id        IN  okl_header_interface.inventory_organization_id%TYPE,
23938                                   p_line_amount       IN  okl_lines_interface.amount%TYPE,
23939                                   p_link_asset_amount IN  okl_lines_interface.link_asset_amount%TYPE,
23940                                   p_init_direct_cost  IN  okl_lines_interface.initial_direct_cost%TYPE,
23941                                   p_fee_code          IN  okl_lines_interface.fee_code%TYPE,
23942                                   p_stream_purpose    IN  okl_lines_interface.stream_purpose_code%TYPE,
23943                                   p_fee_type          IN  okl_lines_interface.fee_type%TYPE,
23944                                   p_asset_number      IN  okl_lines_interface.asset_number%TYPE,
23945                                   p_currency_code     IN  okl_lines_interface.currency_code%TYPE,
23946                                   p_usage_item_name   IN  okl_lines_interface.usage_item_name%TYPE,
23947                                   p_usage_item_id     IN  okl_lines_interface.usage_item_id%TYPE,
23948                                   p_header_start_date IN  DATE,
23949                                   p_header_end_date   IN  DATE,
23950                                   p_line_start_date   IN  DATE,
23951                                   p_line_end_date     IN  DATE,
23952                                   p_inv_item_id_prev  IN  okl_lines_interface.inventory_item_id%TYPE,
23953                                   p_term_quote_id     IN  OKL_LINES_INTERFACE.TERMINATION_QUOTE_ID%TYPE,
23954                                   p_term_quote_number IN  OKL_LINES_INTERFACE.TERMINATION_QUOTE_NUMBER%TYPE,
23955                                   x_inv_item_id_prev  OUT NOCOPY okl_lines_interface.inventory_item_id%TYPE,
23956                                   p_cle_id            IN  okl_k_lines_v.id%TYPE,
23957                                   x_cle_id            OUT NOCOPY okc_k_lines_v.id%TYPE,
23958                                   x_sub_cle_id        OUT NOCOPY okc_k_lines_v.id%TYPE,       -- Bug# 3110115
23959                                   p_new_line_flag     IN  okl_lines_interface.explicit_new_line_flag%TYPE,
23960                                   p_pth_base_payout_basis        IN okl_lines_interface.pth_base_payout_basis%TYPE,
23961                                   p_pth_base_stream_code         IN okl_lines_interface.pth_base_stream_code%TYPE,
23962                                   p_pth_base_stream_purpose_code IN okl_lines_interface.pth_base_stream_purpose_code%TYPE,
23963                                   p_pth_start_date               IN okl_lines_interface.pth_start_date%TYPE,
23964                                   p_pth_evg_payout_basis         IN okl_lines_interface.pth_evg_payout_basis%TYPE,
23965                                   p_pth_payout_basis_formula     IN okl_lines_interface.pth_payout_basis_formula%TYPE,
23966                                   p_pth_evg_stream_code          IN okl_lines_interface.pth_evg_stream_code%TYPE,
23967                                   p_pth_evg_stream_purpose_code  IN okl_lines_interface.pth_evg_stream_purpose_code%TYPE,
23968                                   p_fee_purpose_code             IN okl_lines_interface.fee_purpose_code%TYPE
23969                                  ) IS
23970    l_proc_name     VARCHAR2(35) := 'PROCESS_OTHER_LINE';
23971    x_lse_id        okc_line_styles_v.id%TYPE;
23972    x_inv_org_id    NUMBER;
23973    x_inv_item_id   NUMBER;
23974    x_asset_line_id okc_k_lines_v.id%TYPE;
23975    l_lty_code      okc_line_styles_v.lty_code%TYPE;
23976    l_link_lty_code okc_line_styles_v.lty_code%TYPE;
23977    l_link_top_code VARCHAR2(35);
23978    x_stream_type_id NUMBER;
23979    x_usage_item_id NUMBER;
23980    x_usage_id2     NUMBER;
23981 
23982    p_klev_rec      klev_rec_type;
23983    p_clev_rec      clev_rec_type;
23984    x_klev_rec      klev_rec_type;
23985    x_clev_rec      clev_rec_type;
23986 
23987    l_klev_rec      klev_rec_type;
23988    l_clev_rec      clev_rec_type;
23989    l_capital_amount okl_k_lines.capital_amount%type;
23990 
23991    p_cimv_rec      okl_okc_migration_pvt.cimv_rec_type;
23992    x_cimv_rec      okl_okc_migration_pvt.cimv_rec_type;
23993 
23994    service_failed  EXCEPTION;
23995    l_progress      VARCHAR2(10) := '100.1';
23996 
23997    l_fee_types_rec fee_types_rec_type;
23998    x_fee_types_rec fee_types_rec_type;
23999 
24000    x_term_quote_id NUMBER;
24001 
24002    CURSOR fee_vendor_csr (p_contract_number OKL_HEADER_INTERFACE.CONTRACT_NUMBER_OLD%TYPE,
24003                           p_line_number     OKL_LINES_INTERFACE.LINE_NUMBER%TYPE) IS
24004    SELECT fees_vendor_name,
24005           fees_vendor_id
24006    FROM   okl_party_roles_interface
24007    WHERE  contract_number_old = p_contract_number
24008    AND    line_number         = p_line_number;
24009 
24010    CURSOR capital_amount(p_line_id OKL_K_LINES.ID%TYPE)
24011    IS
24012              SELECT nvl(capital_amount , 0)
24013              from   okl_k_lines
24014              where id = p_line_id;
24015 
24016    CURSOR service_item_csr (p_inv_item_id OKX_SYSTEM_ITEMS_V.ID1%TYPE,
24017                             p_inv_org_id  OKX_SYSTEM_ITEMS_V.ID2%TYPE) IS
24018    SELECT name
24019    FROM   okx_system_items_v
24020    WHERE  id1 = p_inv_item_id
24021    AND    id2 = p_inv_org_id;
24022 
24023    l_fee_vendor_name OKL_PARTY_ROLES_INTERFACE.FEES_VENDOR_NAME%TYPE;
24024    l_fee_vendor_id   OKL_PARTY_ROLES_INTERFACE.FEES_VENDOR_ID%TYPE;
24025 
24026    l_service_item_name OKX_SYSTEM_ITEMS_V.NAME%TYPE;
24027 
24028    -- passthrough
24029    x_party_pmnt_hdr_tbl_out pphv_tbl_type;
24030    l_counter                NUMBER;
24031    -- passthrough
24032 
24033    l_stream_name           OKL_STRMTYP_SOURCE_V.NAME%TYPE;
24034 
24035    BEGIN
24036 
24037       x_return_status := OKL_API.G_RET_STS_SUCCESS;
24038       p_klev_rec := NULL;
24039       p_clev_rec := NULL;
24040 
24041       -- Set line_type based parameters
24042 
24043       IF (p_line_type = 'SERVICE') THEN             -- SERVICE line
24044          l_lty_code      := 'SOLD_SERVICE';
24045          l_link_lty_code := 'LINK_SERV_ASSET';
24046          l_link_top_code := 'OKX_SERVICE';
24047       ELSIF (p_line_type = 'FEE') THEN              -- FEE line
24048          l_lty_code      := 'FEE';
24049          l_link_lty_code := 'LINK_FEE_ASSET';
24050          l_link_top_code := 'OKL_STRMTYP';
24051       ELSIF (p_line_type = 'USAGE') THEN            -- USAGE line
24052          l_lty_code      := 'USAGE';
24053          l_link_lty_code := 'LINK_USAGE_ASSET';
24054          l_link_top_code := NULL; --'OKL_USAGE';
24055       END IF;
24056 
24057       l_progress := '100.2';
24058       x_inv_item_id := p_inv_item_id;
24059       x_inv_org_id  := p_inv_org_id;
24060 
24061       IF (p_line_type = 'FEE') THEN
24062 
24063          check_stream_type_code(
24064                                 x_return_status    => x_return_status,
24065                                 x_msg_count        => x_msg_count,
24066                                 x_msg_data         => x_msg_data,
24067                                 p_stream_type_code => p_fee_code,
24068                                 p_stream_purpose   => p_stream_purpose,
24069                                 x_id1              => x_stream_type_id,
24070                                 x_name             => l_stream_name
24071                                );
24072          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24073              x_return_status := OKL_API.G_RET_STS_ERROR;
24074              RAISE service_failed;
24075          END IF;
24076 
24077 
24078          --
24079          -- UDS 10/27
24080          -- Check whether the stream is present in template for this contract
24081          --
24082 
24083          x_inv_item_id := x_stream_type_id;
24084 
24085 /* Added on check_line_literal
24086          validate_fee_type(
24087                            x_return_status   => x_return_status,
24088                            p_fee_type        => p_fee_type
24089                           );
24090 
24091          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24092             okl_api.set_message(
24093                                 G_APP_NAME,
24094                                 G_INVALID_VALUE,
24095                                 'CONTRACT_NUM',
24096                                 p_contract_number,
24097                                 'COL_NAME',
24098                                 'FEE_TYPE',
24099                                 'COL_VALUE',
24100                                 p_fee_type
24101                                );
24102             RAISE service_failed;
24103          END IF;
24104 */
24105 
24106       ELSIF (p_line_type = 'USAGE') THEN
24107          get_usage_item_id(
24108                            x_return_status   => x_return_status,
24109                            p_usage_item_name => p_usage_item_name,
24110                            p_usage_item_id   => p_usage_item_id,
24111                            p_org_id          => p_inv_org_id,
24112                            x_usage_item_id   => x_usage_item_id,
24113                            x_usage_id2       => x_usage_id2
24114                           );
24115          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24116             okl_api.set_message(
24117                                 G_APP_NAME,
24118                                 G_INVALID_VALUE,
24119                                 'CONTRACT_NUM',
24120                                 p_contract_number,
24121                                 'COL_NAME',
24122                                 'USAGE_ITEM_NAME, ID',
24123                                 'COL_VALUE',
24124                                 p_usage_item_name||', '||p_usage_item_id
24125                                );
24126             RAISE service_failed;
24127          END IF;
24128 
24129          x_inv_item_id := x_usage_item_id;
24130       END IF;
24131 
24132       l_progress := '100.3';
24133 
24134       debug_message('------>Line number: '||p_line_number);
24135       debug_message('------>Prev Line type: '||p_line_type_prev);
24136       debug_message('------>Curr Line type: '||p_line_type);
24137       debug_message('------>Prec Item id  : '||p_inv_item_id_prev);
24138       debug_message('------>Curr Item id  : '||x_inv_item_id);
24139       -- Dont' create Top Line for same Item and Line type, create link_asset line only
24140       -- Bug 4092764: creaet top line if explicit_new_line_flag = 'Y'
24141       --
24142       -- Check for validity of the same flag
24143       -- If item and/or line type does not match
24144       -- but explicit_new_line_flag = 'N'
24145       -- raise error
24146 
24147       IF ( (p_inv_item_id_prev <> x_inv_item_id
24148             OR
24149             p_line_type_prev <> p_line_type)
24150            AND
24151            p_new_line_flag = 'N') THEN
24152             okl_api.set_message(
24153                                 G_APP_NAME,
24154                                 G_INVALID_NEW_LINE_REQ,
24155                                 'CONTRACT_NUM',
24156                                 p_contract_number,
24157                                 'LINE_TYPE',
24158                                 p_line_type||'/'||p_line_number,
24159                                 'NEW_LINE_FLAG',
24160                                 p_new_line_flag
24161                                );
24162             RAISE service_failed;
24163       END IF;
24164 
24165       IF (p_inv_item_id_prev <> x_inv_item_id
24166           OR
24167           p_line_type_prev <> p_line_type
24168           OR
24169           NVL(p_new_line_flag, 'N') = 'Y'
24170          ) THEN -- for same inventory item create link asset line only
24171 
24172       --create a blank TOP line
24173 
24174         get_lse_id(
24175                    x_return_status   => x_return_status,
24176                    x_msg_count       => x_msg_count,
24177                    x_msg_data        => x_msg_data,
24178                    p_contract_number => p_contract_number,
24179                    p_line_number     => p_line_number,
24180                    p_lty_code        => l_lty_code,
24181                    p_top_line_lty_code => NULL,
24182                    x_lse_id          => x_lse_id
24183                    );
24184          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24185             x_return_status := OKL_API.G_RET_STS_ERROR;
24186             RAISE service_failed;
24187          END IF;
24188          p_clev_rec.chr_id              := p_chr_id;
24189          p_clev_rec.dnz_chr_id          := p_chr_id;
24190          p_clev_rec.lse_id              := x_lse_id;
24191          p_clev_rec.line_number         := p_line_number;
24192          p_clev_rec.sts_code            := 'NEW';
24193          p_clev_rec.exception_yn        := 'N';
24194          p_clev_rec.display_sequence    := 1;
24195          p_clev_rec.currency_code       := p_currency_code;
24196          p_klev_rec.amount              := p_line_amount;
24197          p_klev_rec.initial_direct_cost := p_init_direct_cost;
24198          p_klev_rec.fee_type            := p_fee_type;
24199 
24200          --
24201          -- Populate capital amount for CAPITALIZED FEE line
24202          -- Bug 3449762
24203          --
24204          IF ( p_line_type = 'FEE'
24205               AND
24206               p_fee_type = 'CAPITALIZED' ) THEN
24207               p_klev_rec.capital_amount := p_line_amount;
24208          END IF; -- capitalized fee
24209 
24210          IF ( p_line_type = 'FEE'
24211               AND
24212               p_klev_rec.initial_direct_cost IS NOT NULL
24213               AND
24214               p_klev_rec.initial_direct_cost > p_klev_rec.amount) THEN
24215 
24216             OKL_API.SET_MESSAGE(
24217                                 G_APP_NAME,
24218                                 G_INIT_DIRC_COST,
24219                                 'CONTRACT_NUM',
24220                                 p_contract_number,
24221                                 'LINE_NUM',
24222                                 p_line_number
24223                                );
24224 
24225             x_return_status := OKL_API.G_RET_STS_ERROR;
24226             RAISE service_failed;
24227 
24228          END IF;
24229 
24230          p_clev_rec.start_date := NVL(p_line_start_date, p_header_start_date);
24231          p_clev_rec.end_date   := NVL(p_line_end_date,p_header_end_date);
24232 
24233 /*
24234          --
24235          -- Rollover Fee line validation
24236          --
24237          IF (p_line_type = 'FEE'
24238              AND
24239              p_fee_type = 'ROLLOVER') THEN
24240 
24241              validate_term_quote(
24242                                  x_return_status     => x_return_status,
24243                                  x_msg_count         => x_msg_count,
24244                                  x_msg_data          => x_msg_data,
24245                                  p_chr_id            => p_chr_id,
24246                                  p_contract_number   => p_contract_number,
24247                                  p_line_number       => p_line_number,
24248                                  p_term_quote_id     => p_term_quote_id,
24249                                  p_term_quote_number => p_term_quote_number,
24250                                  x_term_quote_id     => x_term_quote_id
24251                                 );
24252 
24253              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24254                 x_return_status := OKL_API.G_RET_STS_ERROR;
24255                 RAISE service_failed;
24256              END IF;
24257 
24258              p_klev_rec.qte_id := x_term_quote_id;
24259 
24260          END IF; -- end Rollover
24261 */
24262          -- service name
24263          IF (p_line_type = 'SERVICE') THEN
24264               l_service_item_name := NULL;
24265 
24266               OPEN service_item_csr(p_inv_item_id,
24267                                     p_inv_org_id);
24268               FETCH service_item_csr INTO l_service_item_name;
24269               CLOSE service_item_csr;
24270 
24271               p_clev_rec.name := l_service_item_name;
24272          ELSIF (p_line_type = 'FEE') THEN
24273               p_klev_rec.fee_purpose_code := p_fee_purpose_code;
24274               p_clev_rec.name := l_stream_name;
24275          END IF;
24276          -- Fee type validation
24277          IF (p_line_type = 'FEE') THEN
24278 
24279 
24280               debug_message('------>Validate Fee TYpe');
24281 
24282               l_fee_types_rec.dnz_chr_id          := p_chr_id;
24283               l_fee_types_rec.fee_type            := p_fee_type;
24284               l_fee_types_rec.item_id1            := x_inv_item_id;
24285               l_fee_types_rec.item_id2            := '#';
24286               l_fee_types_rec.effective_from      := p_clev_rec.start_date;
24287               l_fee_types_rec.effective_to        := p_clev_rec.end_date;
24288               l_fee_types_rec.amount              := p_line_amount;
24289               l_fee_types_rec.initial_direct_cost := p_init_direct_cost;
24290 
24291               l_fee_vendor_name := NULL;
24292               l_fee_vendor_id   := NULL;
24293 
24294               OPEN fee_vendor_csr(p_contract_number,
24295                                   p_line_number);
24296               FETCH fee_vendor_csr INTO l_fee_vendor_name,
24297                                         l_fee_vendor_id;
24298               CLOSE fee_vendor_csr;
24299 
24300               IF (l_fee_vendor_name IS NOT NULL) THEN
24301 
24302                   get_vendor_id (
24303                        x_return_status     => x_return_status,
24304                        x_msg_count         => x_msg_count,
24305                        x_msg_data          => x_msg_data,
24306                        p_contract_number   => p_contract_number,
24307                        p_line_number       => p_line_number,
24308                        x_vendor_id         => l_fee_vendor_id,
24309                        p_vendor_name       => l_fee_vendor_name
24310                       );
24311 
24312                   IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24313                      RAISE service_failed;
24314                   END IF;
24315               END IF;
24316 
24317               l_fee_types_rec.party_id1 := l_fee_vendor_id;
24318               l_fee_types_rec.party_id2 := '#';
24319 
24320               l_fee_types_rec.roll_qt   := p_term_quote_number;
24321               l_fee_types_rec.qte_id    := p_term_quote_id;
24322 
24323               okl_maintain_fee_pvt.validate_fee_type(
24324                         p_api_version    => 1.0,
24325                         p_init_msg_list  => OKL_API.G_FALSE,
24326                         x_return_status  => x_return_status,
24327                         x_msg_count      => x_msg_count,
24328                         x_msg_data       => x_msg_data,
24329                         p_fee_types_rec  => l_fee_types_rec,
24330                         x_fee_types_rec  => x_fee_types_rec
24331                        );
24332 
24333               IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24334                  RAISE service_failed;
24335               END IF;
24336 
24337               debug_message('=====> Qte ID: '||x_fee_types_rec.qte_id);
24338               p_klev_rec.qte_id := x_fee_types_rec.qte_id;
24339 
24340          END IF; -- fee type validation
24341 
24342          okl_contract_pub.create_contract_line(
24343                                                p_api_version   => 1.0,
24344                                                p_init_msg_list => OKL_API.G_FALSE,
24345                                                x_return_status => x_return_status,
24346                                                x_msg_count     => x_msg_count,
24347                                                x_msg_data      => x_msg_data,
24348                                                p_clev_rec      => p_clev_rec,
24349                                                p_klev_rec      => p_klev_rec,
24350                                                x_clev_rec      => x_clev_rec,
24351                                                x_klev_rec      => x_klev_rec
24352                                               );
24353 
24354          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24355             x_return_status := OKL_API.G_RET_STS_ERROR;
24356             RAISE service_failed;
24357          END IF;
24358 
24359          x_cle_id := x_clev_rec.id;
24360       l_progress := '100.4';
24361 
24362          -- create item line to link TOP line, created above, to MTL_SYSTEM_ITEMS
24363 
24364          p_cimv_rec                   := NULL;
24365          p_cimv_rec.cle_id            := x_cle_id;
24366          p_cimv_rec.chr_id            := p_chr_id;
24367          p_cimv_rec.dnz_chr_id        := p_chr_id;
24368 
24369          IF (p_line_type = 'USAGE') THEN
24370             p_cimv_rec.object1_id1       := NULL;
24371             p_cimv_rec.object1_id2       := NULL;
24372             p_cimv_rec.jtot_object1_code := NULL;
24373          ELSIF (p_line_type = 'FEE') THEN
24374             p_cimv_rec.object1_id1       := x_stream_type_id;
24375             p_cimv_rec.object1_id2       := '#';
24376             p_cimv_rec.jtot_object1_code := l_link_top_code;
24377          ELSE
24378             p_cimv_rec.object1_id1       := x_inv_item_id;
24379             p_cimv_rec.object1_id2       := x_inv_org_id;
24380             p_cimv_rec.jtot_object1_code := l_link_top_code;
24381          END IF;
24382 
24383          p_cimv_rec.exception_yn := 'N';
24384 
24385          OKL_OKC_MIGRATION_PVT.create_contract_item(
24386                                                     p_api_version   => 1.0,
24387                                                     p_init_msg_list => OKL_API.G_FALSE,
24388                                                     x_return_status => x_return_status,
24389                                                     x_msg_count     => x_msg_count,
24390                                                     x_msg_data	 => x_msg_data,
24391                                                     p_cimv_rec	 => p_cimv_rec,
24392                                                     x_cimv_rec	 => x_cimv_rec
24393                                                    );
24394       l_progress := '100.5';
24395          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24396              x_return_status := OKL_API.G_RET_STS_ERROR;
24397              RAISE service_failed;
24398          END IF;
24399 
24400          debug_message('Top line created for line# : '|| p_line_number);
24401          -- passthrough
24402          IF ((p_pth_base_payout_basis is NOT NULL) OR (p_pth_evg_payout_basis is NOT NULL)) THEN
24403 	    IF ((p_line_type = 'SERVICE') OR
24404 	        ((p_line_type = 'FEE') AND (p_fee_type = 'PASSTHROUGH'))) THEN
24405                debug_message('------>Create party payment starts for SERVICE / FEE : ' || p_line_type || '/'|| p_line_number);
24406                create_party_payment_hdr(
24407                                         x_return_status                   => x_return_status,
24408                                         x_msg_count                       => x_msg_count,
24409                                         x_msg_data                        => x_msg_data,
24410                                         p_contract_id                     => x_clev_rec.dnz_chr_id,
24411                                         p_line_id                         => x_clev_rec.id,
24412                                         p_line_type                       => p_line_type,
24413                                         p_pth_start_date                  => p_pth_start_date,
24414                                         p_pth_base_payout_basis           => p_pth_base_payout_basis,
24415                                         p_pth_base_stream_code            => p_pth_base_stream_code,
24416                                         p_pth_base_stream_purpose_code    => p_pth_base_stream_purpose_code,
24417                                         p_pth_evg_payout_basis            => p_pth_evg_payout_basis,
24418                                         p_pth_payout_basis_formula        => p_pth_payout_basis_formula,
24419                                         p_pth_evg_stream_code             => p_pth_evg_stream_code,
24420                                         p_pth_evg_stream_purpose_code     => p_pth_evg_stream_purpose_code,
24421                                         x_party_pmnt_hdr_tbl              => x_party_pmnt_hdr_tbl_out
24422                                        );
24423                debug_message('------>Create party payment ends '||x_return_status);
24424                IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24425                   x_return_status := OKL_API.G_RET_STS_ERROR;
24426                   RAISE service_failed;
24427                END IF;
24428          END IF;
24429 	    IF (x_party_pmnt_hdr_tbl_out.COUNT > 0 )THEN
24430 	       l_counter := x_party_pmnt_hdr_tbl_out.FIRST;
24431 	       LOOP
24432                   IF (x_party_pmnt_hdr_tbl_out(l_counter).passthru_term = 'BASE') THEN
24433 		     g_base_pmnt_hdr := x_party_pmnt_hdr_tbl_out(l_counter);
24434 		  ELSIF (x_party_pmnt_hdr_tbl_out(l_counter).passthru_term = 'EVERGREEN') THEN
24435 		     g_evg_pmnt_hdr := x_party_pmnt_hdr_tbl_out(l_counter);
24436 		  END IF;
24437 	       EXIT WHEN (l_counter = x_party_pmnt_hdr_tbl_out.LAST);
24438                l_counter := x_party_pmnt_hdr_tbl_out.NEXT(l_counter);
24439 	       END LOOP;
24440             END IF;
24441 	 END IF;
24442      ELSE
24443          x_cle_id := p_cle_id; -- use previous TOP line ID
24444      END IF; --inv_item_id
24445 
24446 
24447      IF (p_asset_number IS NOT NULL) THEN
24448 
24449       -- create link asset line only in case asset link is present
24450       -- and link it to blank TOP line
24451       get_lse_id(
24452                 x_return_status   => x_return_status,
24453                 x_msg_count       => x_msg_count,
24454                 x_msg_data        => x_msg_data,
24455                 p_contract_number => p_contract_number,
24456                 p_line_number     => p_line_number,
24457                 p_lty_code        => l_link_lty_code,
24458                 p_top_line_lty_code => l_lty_code,
24459                 x_lse_id          => x_lse_id
24460                );
24461       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24462         x_return_status := OKL_API.G_RET_STS_ERROR;
24463         RAISE service_failed;
24464       END IF;
24465 
24466       p_clev_rec.cle_id           := x_cle_id;
24467       p_clev_rec.chr_id           := NULL;
24468       p_clev_rec.dnz_chr_id       := p_chr_id;
24469       p_clev_rec.lse_id           := x_lse_id;
24470       p_clev_rec.line_number      := p_line_number;
24471       p_clev_rec.name             := p_asset_number;
24472       p_clev_rec.sts_code         := 'NEW';
24473       p_clev_rec.exception_yn     := 'N';
24474       p_clev_rec.display_sequence := 1;
24475 /*
24476       IF(p_line_start_date IS NULL) THEN
24477          p_clev_rec.start_date := p_line_start_date;
24478       ELSE
24479          p_clev_rec.start_date := p_header_start_date;
24480       END IF;
24481 */
24482       p_clev_rec.start_date := NVL(p_line_start_date, p_header_start_date);
24483       p_clev_rec.end_date   := NVL(p_line_end_date,p_header_end_date);
24484       p_clev_rec.currency_code    := p_currency_code;
24485 
24486       --Bug 4688098
24487       -- p_klev_rec.capital_amount            := p_link_asset_amount;
24488       IF ( p_line_type = 'FEE' AND  p_fee_type = 'CAPITALIZED' )
24489 	 OR ( p_line_type = 'SERVICE')
24490 	  THEN
24491          p_klev_rec.capital_amount            := p_link_asset_amount;
24492       ELSE
24493        p_klev_rec.amount :=p_link_asset_amount;
24494       END IF ;
24495       --Bug 4688098 : end
24496 
24497 
24498       okl_contract_pub.create_contract_line(
24499                                             p_api_version   => 1.0,
24500                                             p_init_msg_list => OKL_API.G_FALSE,
24501                                             x_return_status => x_return_status,
24502                                             x_msg_count     => x_msg_count,
24503                                             x_msg_data      => x_msg_data,
24504                                             p_clev_rec      => p_clev_rec,
24505                                             p_klev_rec      => p_klev_rec,
24506                                             x_clev_rec      => x_clev_rec,
24507                                             x_klev_rec      => x_klev_rec
24508                                            );
24509       l_progress := '100.6';
24510 
24511       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24512          x_return_status := OKL_API.G_RET_STS_ERROR;
24513          RAISE service_failed;
24514       END IF;
24515 
24516       x_sub_cle_id := x_clev_rec.id; -- ID of the sub-line, Bug# 3110115
24517 
24518       --link this line to financial asset line
24519       get_link_asset_id(
24520                         x_return_status   => x_return_status,
24521                         x_msg_count       => x_msg_count,
24522                         x_msg_data        => x_msg_data,
24523                         p_asset_number    => p_asset_number,
24524                         p_contract_number => p_contract_number,
24525                         p_chr_id          => p_chr_id,
24526                         p_line_number     => p_line_number,
24527                         x_asset_line_id   => x_asset_line_id
24528                        );
24529 
24530       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24531          x_return_status := OKL_API.G_RET_STS_ERROR;
24532          RAISE service_failed;
24533       END IF;
24534 
24535       --
24536       -- Validate Usage Item here
24537       -- check for association between Usage Item and Inventory Item for USAGE line
24538       --
24539       IF (p_line_type = 'USAGE') THEN
24540          validate_usage_item_assoc(
24541                                    x_return_status   => x_return_status,
24542                                    x_msg_count       => x_msg_count,
24543                                    x_msg_data        => x_msg_data,
24544                                    p_contract_number => p_contract_number,
24545                                    p_line_number     => p_line_number,
24546                                    p_asset_line_id   => x_asset_line_id,
24547                                    p_usage_item_name => p_usage_item_name,
24548                                    p_usage_item_id   => x_usage_item_id,
24549                                    p_inv_org_id      => x_inv_org_id
24550                                   );
24551       l_progress := '100.7';
24552          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24553             RAISE  service_failed;
24554          END IF;
24555       END IF;
24556 
24557       p_cimv_rec                   := NULL;
24558       p_cimv_rec.cle_id            := x_clev_rec.id;
24559       p_cimv_rec.chr_id            := p_chr_id;
24560       p_cimv_rec.dnz_chr_id        := p_chr_id;
24561       p_cimv_rec.object1_id1       := x_asset_line_id;
24562       p_cimv_rec.object1_id2       := '#';
24563       p_cimv_rec.jtot_object1_code := 'OKX_COVASST';
24564       p_cimv_rec.exception_yn      := 'N';
24565 
24566       okl_okc_migration_pvt.create_contract_item(
24567                                                  p_api_version   => 1.0,
24568                                                  p_init_msg_list => OKL_API.G_FALSE,
24569                                                  x_return_status => x_return_status,
24570                                                  x_msg_count     => x_msg_count,
24571                                                  x_msg_data	 => x_msg_data,
24572                                                  p_cimv_rec	 => p_cimv_rec,
24573                                                  x_cimv_rec	 => x_cimv_rec
24574                                                 );
24575       l_progress := '100.8';
24576       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24577           x_return_status := OKL_API.G_RET_STS_ERROR;
24578           RAISE service_failed;
24579       END IF;
24580 
24581       -- Bug 4190051 Start
24582 
24583          IF ( p_line_type = 'FEE' AND p_fee_type = 'CAPITALIZED' ) THEN
24584            null; -- Update asset x_asset_line_id with p_link_asset_amount
24585            l_clev_rec.id                  := x_asset_line_id;
24586            l_klev_rec.id                  := x_asset_line_id;
24587 
24588            OPEN  capital_amount(x_asset_line_id);
24589            FETCH capital_amount into l_capital_amount;
24590            CLOSE capital_amount;
24591 
24592            /*begin
24593              select nvl(capital_amount , 0)
24594              into   l_capital_amount
24595              from   okl_k_lines
24596              where id = x_asset_line_id;
24597            end;*/
24598            l_klev_rec.capital_amount := p_link_asset_amount + l_capital_amount;
24599 
24600            okl_contract_pub.update_contract_line
24601                            (p_api_version    => 1.0,
24602                             p_init_msg_list => OKL_API.G_FALSE,
24603                             x_return_status  => x_return_status,
24604                             x_msg_count      => x_msg_count,
24605                             x_msg_data       => x_msg_data,
24606                             p_clev_rec       => l_clev_rec,
24607                             p_klev_rec       => l_klev_rec,
24608                             x_clev_rec       => x_clev_rec,
24609                             x_klev_rec       => x_klev_rec);
24610            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
24611              RAISE OKL_API.G_EXCEPTION_ERROR;
24612            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
24613              RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
24614            END IF;
24615 
24616          END IF; -- capitalized fee
24617 
24618       -- Bug 4190051 Finish
24619 
24620       END IF; -- p_asset_number IS NOT NULL
24621 
24622       IF (p_line_type = 'FEE') THEN
24623          x_inv_item_id_prev := x_stream_type_id; -- to keep login in-line with SERVICE and USAGE line
24624       ELSIF (p_line_type = 'USAGE') THEN
24625          x_inv_item_id_prev := x_usage_item_id;
24626       ELSE
24627          x_inv_item_id_prev := x_inv_item_id; --copy current inventory item id to _prev
24628       END IF;
24629 
24630       RETURN;
24631 
24632    EXCEPTION
24633       WHEN service_failed THEN
24634          x_return_status := OKL_API.G_RET_STS_ERROR;
24635 
24636       WHEN OTHERS THEN
24637          debug_message(l_progress);
24638 
24639          okl_api.set_message(
24640                              G_APP_NAME,
24641                              G_UNEXPECTED_ERROR,
24642                              'OKL_SQLCODE',
24643                              SQLCODE,
24644                              'OKL_SQLERRM',
24645                              SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
24646                             );
24647          x_return_status := OKL_API.G_RET_STS_ERROR;
24648 
24649    END process_other_line;
24650 
24651 ------------------------------------------------------------------------------
24652 -- PROCEDURE get_qcl_id
24653 -- It returns qcl_id for QA checker to run
24654 -- Calls:
24655 -- Called By:
24656 ------------------------------------------------------------------------------
24657 
24658    PROCEDURE get_qcl_id(
24659                         x_return_status OUT NOCOPY VARCHAR2,
24660                         p_qcl_name      IN  VARCHAR2,
24661                         x_qcl_id        OUT NOCOPY NUMBER) IS
24662 
24663    CURSOR qcl_csr (p_qcL_name VARCHAR2) IS
24664    SELECT id
24665    FROM   okc_qa_check_lists_v
24666    WHERE  name = p_qcl_name;
24667 
24668    l_id   NUMBER;
24669 
24670    BEGIN
24671 
24672       x_return_status := OKL_API.G_RET_STS_SUCCESS;
24673 
24674       OPEN qcl_csr(p_qcl_name);
24675       FETCH qcl_csr INTO l_id;
24676       CLOSE qcl_csr;
24677 
24678       x_qcl_id := l_id;
24679 
24680    END get_qcl_id;
24681 
24682 ------------------------------------------------------------------------------
24683 -- PROCEDURE validate_credit_line
24684 -- It validates credit line against customer and customer account of the
24685 -- contract to be imported
24686 -- Calls:
24687 -- Called By:
24688 ------------------------------------------------------------------------------
24689    PROCEDURE validate_credit_line(
24690                               x_return_status           OUT NOCOPY VARCHAR2,
24691                               x_msg_count               OUT NOCOPY NUMBER,
24692                               x_msg_data                OUT NOCOPY VARCHAR2,
24693                               p_contract_number         IN  OKC_K_HEADERS_V.CONTRACT_NUMBER%TYPE,
24694                               p_template_id             IN  NUMBER,
24695                               p_credit_line_id          IN  NUMBER,
24696                               p_customer_id             IN  OKL_HEADER_INTERFACE.CUSTOMER_ID%TYPE,
24697                               p_customer_number         IN  OKL_HEADER_INTERFACE.CUSTOMER_NUMBER%TYPE,
24698                               p_customer_account_id     IN  OKL_HEADER_INTERFACE.CUSTOMER_ACCOUNT_ID%TYPE,
24699                               p_customer_account_number IN  OKL_HEADER_INTERFACE.CUSTOMER_ACCOUNT_NUMBER%TYPE,
24700                               p_start_date              IN  OKL_HEADER_INTERFACE.START_DATE%TYPE,
24701                               p_template_start_date     IN  OKL_HEADER_INTERFACE.START_DATE%TYPE
24702                              ) IS
24703 
24704    CURSOR customer_csr (p_customer_number OKX_PARTIES_V.PARTY_NUMBER%TYPE,
24705                         p_customer_id     OKX_PARTIES_V.ID1%TYPE) IS
24706    SELECT id1
24707    FROM   okx_parties_v
24708    WHERE  ((party_number = p_customer_number
24709             AND
24710             p_customer_number IS NOT NULL
24711            )
24712            OR
24713            (id1          = p_customer_id
24714             AND
24715             p_customer_id IS NOT NULL
24716            )
24717           );
24718 
24719    CURSOR temp_st_dt_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
24720    SELECT start_date
24721    FROM   okc_k_headers_v
24722    WHERE  id = p_chr_id;
24723 
24724    CURSOR temp_cust_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
24725    --Fixed Bug # 5484903
24726    SELECT object1_id1
24727    FROM   okc_k_party_roles_b
24728    WHERE  dnz_chr_id  = p_chr_id
24729       AND    chr_id          = dnz_chr_id
24730       AND    jtot_object1_code = 'OKX_PARTY'
24731       AND    rle_code          = 'LESSEE' ;
24732 
24733    CURSOR temp_cust_acc_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
24734    SELECT cust_acct_id
24735    FROM   okc_k_headers_b
24736    WHERE  id = p_chr_id;
24737 
24738    CURSOR credit_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE,
24739                       p_main_start_date OKC_K_HEADERS_V.START_DATE%TYPE) IS
24740    SELECT 'Y'
24741    FROM   okc_k_headers_v
24742    WHERE  id       = p_chr_id
24743    AND    end_date >= p_main_start_date;
24744 
24745    l_customer_id                OKX_PARTIES_V.ID1%TYPE;
24746    l_customer_account_id        OKX_CUSTOMER_ACCOUNTS_V.ID1%TYPE;
24747    l_credit_customer_id         OKX_PARTIES_V.ID1%TYPE;
24748    l_credit_customer_account_id OKX_CUSTOMER_ACCOUNTS_V.ID1%TYPE;
24749    l_rule_count                 NUMBER;
24750    l_rulv_tbl                   rulv_tbl_type;
24751    l_ok                         VARCHAR2(1) := '?';
24752 
24753    credit_line_failed EXCEPTION;
24754 
24755    BEGIN
24756 
24757       x_return_status := OKL_API.G_RET_STS_SUCCESS;
24758 /* 4414408
24759       IF (p_customer_id IS NULL
24760           AND
24761           p_customer_number IS NULL) THEN
24762 
24763           -- get from template
24764 
24765           l_customer_id := NULL;
24766           OPEN temp_cust_csr(p_template_id);
24767           FETCH temp_cust_csr INTO l_customer_id;
24768           CLOSE temp_cust_csr;
24769 
24770       ELSE
24771           l_customer_id := NULL;
24772           OPEN customer_csr (p_customer_number,
24773                              p_customer_id);
24774           FETCH customer_csr INTO l_customer_id;
24775           CLOSE customer_csr;
24776 
24777       END IF;
24778 */
24779       l_customer_id := p_customer_id;
24780       debug_message('----->customer: '||l_customer_id);
24781 
24782 /* 4414408
24783       IF (p_customer_account_id IS NULL
24784           AND
24785           p_customer_account_number IS NULL) THEN
24786 
24787           -- get from template
24788 
24789           l_rule_count          := 0;
24790           l_customer_account_id := NULL;
24791 
24792 -- Rule Migration
24793 --          get_contract_rules(
24794 --                             x_return_status  => x_return_status,
24795 --                             x_msg_count      => x_msg_count,
24796 --                             x_msg_data       => x_msg_data,
24797 --                             p_chr_id         => p_template_id,
24798 --                             p_cle_id         => NULL,
24799 --                             p_rgd_code       => 'LACAN',
24800 --                             p_rule_code      => 'CAN',
24801 --                             x_rulv_tbl       => l_rulv_tbl,
24802 --                             x_rule_count     => l_rule_count
24803 --                            );
24804 
24805 --          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24806 --             RAISE credit_line_failed;
24807 --          END IF;
24808 
24809 --          IF (l_rule_count > 0) THEN
24810 --             l_customer_account_id := TO_NUMBER(l_rulv_tbl(1).object1_id1);
24811 --          END IF;
24812 
24813 
24814       ELSE
24815           get_customer_account_id(
24816                            x_return_status           => x_return_status,
24817                            x_msg_count               => x_msg_count,
24818                            x_msg_data                => x_msg_data,
24819                            p_contract_number         => p_contract_number,
24820                            p_customer_account_id     => p_customer_account_id,
24821                            p_customer_account_number => p_customer_account_number,
24822                            x_customer_account_id     => l_customer_account_id
24823                           );
24824 
24825           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24826              x_return_status := OKL_API.G_RET_STS_ERROR;
24827              RAISE credit_line_failed;
24828           END IF;
24829       END IF;
24830 */
24831       l_customer_account_id := p_customer_account_id;
24832       debug_message('----->customer Acc: '||l_customer_account_id);
24833       --
24834       -- get customer_id and customer_account_id
24835       -- for credit line contract
24836       --
24837 
24838       l_credit_customer_id := NULL;
24839       OPEN temp_cust_csr(p_credit_line_id);
24840       FETCH temp_cust_csr INTO l_credit_customer_id;
24841       CLOSE temp_cust_csr;
24842 
24843       l_rule_count          := 0;
24844       l_credit_customer_account_id := NULL;
24845 
24846       OPEN temp_cust_acc_csr (p_credit_line_id);
24847       FETCH temp_cust_acc_csr INTO l_credit_customer_account_id;
24848       CLOSE temp_cust_acc_csr;
24849 
24850 /* Rule migration
24851       get_contract_rules(
24852                          x_return_status  => x_return_status,
24853                          x_msg_count      => x_msg_count,
24854                          x_msg_data       => x_msg_data,
24855                          p_chr_id         => p_credit_line_id,
24856                          p_cle_id         => NULL,
24857                          p_rgd_code       => 'LACAN',
24858                          p_rule_code      => 'CAN',
24859                          x_rulv_tbl       => l_rulv_tbl,
24860                          x_rule_count     => l_rule_count
24861                         );
24862 
24863       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
24864          RAISE credit_line_failed;
24865       END IF;
24866 
24867       IF (l_rule_count > 0) THEN
24868          l_credit_customer_account_id := TO_NUMBER(l_rulv_tbl(1).object1_id1);
24869       END IF;
24870 */
24871 
24872       debug_message('----->Credit customer: '||l_credit_customer_id||', '||l_credit_customer_account_id);
24873 
24874       IF (l_customer_id <> NVL(l_credit_customer_id, -1)
24875           OR
24876           l_customer_account_id <> NVL(l_credit_customer_account_id, -1)) THEN
24877           RAISE credit_line_failed;
24878       END IF;
24879 
24880       -- check for end_date on credit line contract
24881       l_ok := '?';
24882       OPEN credit_csr (p_credit_line_id,
24883                        nvl(p_start_date,p_template_start_date));
24884       FETCH credit_csr INTO l_ok;
24885       CLOSE credit_csr;
24886 
24887       debug_message('Flag: '||l_ok);
24888 
24889       IF (l_ok <> 'Y') THEN
24890           RAISE credit_line_failed;
24891       END IF;
24892 
24893    EXCEPTION
24894       WHEN credit_line_failed THEN
24895          x_return_status := OKL_API.G_RET_STS_ERROR;
24896    END validate_credit_line;
24897 
24898 ------------------------------------------------------------------------------
24899 -- PROCEDURE contract_after_yield
24900 -- Call this process after SuperTrump returns with yield. Call this process
24901 -- from OKL_LA_STREAM_PVT.UPDATE_CONTRACT_YIELD for every contract
24902 -- Calls:
24903 -- Called By:
24904 ------------------------------------------------------------------------------
24905    PROCEDURE contract_after_yield(
24906                                   p_api_version   IN NUMBER,
24907                                   p_init_msg_list IN VARCHAR2,
24908                                   x_return_status OUT NOCOPY VARCHAR2,
24909                                   x_msg_count     OUT NOCOPY NUMBER,
24910                                   x_msg_data      OUT NOCOPY VARCHAR2,
24911                                   p_chr_id        IN  OKC_K_HEADERS_V.ID%TYPE
24912                                  ) IS
24913 
24914    l_api_name    VARCHAR2(35)    := 'contract_after_yield';
24915    l_proc_name   VARCHAR2(35)    := 'CONTRACT_AFTER_YIELD';
24916    l_api_version NUMBER          := 1.0;
24917 
24918    after_yield_failed EXCEPTION;
24919 
24920    CURSOR contract_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
24921    SELECT contract_number,
24922           orig_system_reference1
24923    FROM   okc_k_headers_v
24924    WHERE  id                      = p_chr_id
24925    AND    orig_system_source_code = 'OKL_IMPORT';
24926 
24927    CURSOR stage_csr (p_contract_number OKC_K_HEADERS_V.CONTRACT_NUMBER%TYPE) IS
24928    SELECT import_request_stage
24929    FROM   okl_header_interface
24930    WHERE  contract_number = p_contract_number
24931    AND    status          = 'INTERFACED';
24932 
24933    l_contract_number OKC_K_HEADERS_V.CONTRACT_NUMBER%TYPE;
24934    l_orig_contract   OKC_K_HEADERS_V.ORIG_SYSTEM_REFERENCE1%TYPE;
24935    l_import_stage    OKC_K_HEADERS_V.STS_CODE%TYPE;
24936    BEGIN
24937 
24938      x_return_status := OKL_API.G_RET_STS_SUCCESS;
24939      debug_message(l_proc_name);
24940      x_return_status := OKL_API.START_ACTIVITY(
24941                                                 p_api_name      => l_api_name,
24942                                                 p_pkg_name      => G_PKG_NAME,
24943                                                 p_init_msg_list => p_init_msg_list,
24944                                                 l_api_version   => l_api_version,
24945                                                 p_api_version   => p_api_version,
24946                                                 p_api_type      => G_API_TYPE,
24947                                                 x_return_status => x_return_status);
24948 
24949       -- check if activity started successfully
24950      IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
24951        raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
24952      ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
24953        raise OKL_API.G_EXCEPTION_ERROR;
24954      END IF;
24955 
24956      l_contract_number := '?';
24957      OPEN contract_csr (p_chr_id);
24958      FETCH contract_csr INTO l_contract_number,
24959                              l_orig_contract;
24960      IF contract_csr%NOTFOUND THEN
24961         RAISE after_yield_failed;
24962      END IF;
24963      CLOSE contract_csr;
24964 
24965      l_import_stage := '?';
24966      IF (l_contract_number <> '?') THEN
24967        OPEN stage_csr(l_contract_number);
24968        FETCH stage_csr INTO l_import_stage;
24969        CLOSE stage_csr;
24970      END IF;
24971 
24972      IF (l_import_stage IN ('COMPLETE','APPROVED', 'BOOKED')) THEN
24973 
24974         IF (l_import_stage = 'COMPLETE') THEN
24975            --
24976            -- Generate Journal Entries
24977            --
24978            debug_message('Calling : okl_contract_book_pub.generate_journal_entries');
24979            okl_contract_book_pub.generate_journal_entries(
24980                        p_api_version      => p_api_version,
24981                        p_init_msg_list    => p_init_msg_list,
24982                        p_commit           => Okl_Api.G_FALSE,
24983                        p_contract_id      => p_chr_id,
24984                        p_transaction_type => 'Booking',
24985                        p_draft_yn         => Okc_Api.G_TRUE,
24986                        x_return_status    => x_return_status,
24987                        x_msg_count        => x_msg_count,
24988                        x_msg_data         => x_msg_data
24989                      );
24990 /*
24991  --
24992  Do not want to handle and throw exception
24993  which might cause Yield Generation to go for toss
24994  --
24995 */
24996            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
24997               RAISE after_yield_failed;
24998            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
24999               RAISE after_yield_failed;
25000            END IF;
25001 
25002        ELSIF (l_import_stage = 'APPROVED') THEN
25003            --
25004            -- Generate Journal Entries
25005            --
25006            debug_message('Calling : okl_contract_book_pub.generate_journal_entries');
25007            okl_contract_book_pub.generate_journal_entries(
25008                        p_api_version      => p_api_version,
25009                        p_init_msg_list    => p_init_msg_list,
25010                        p_commit           => Okl_Api.G_FALSE,
25011                        p_contract_id      => p_chr_id,
25012                        p_transaction_type => 'Booking',
25013                        p_draft_yn         => Okc_Api.G_TRUE,
25014                        x_return_status    => x_return_status,
25015                        x_msg_count        => x_msg_count,
25016                        x_msg_data         => x_msg_data
25017                      );
25018 
25019            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
25020               RAISE after_yield_failed;
25021            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
25022               RAISE after_yield_failed;
25023            END IF;
25024 
25025            --Bug# 2566822 : AME/WF integration in approval process
25026            --debug_message('Calling : okl_contract_book_pub.submit_for_approval');
25027            debug_message('Calling : okl_contract_book_pvt.approve_contract');
25028            --
25029            -- Submit for Approval
25030            --
25031            --Bug# 2566822 : AME/WF integration in approval process
25032            --okl_contract_book_pub.submit_for_approval(
25033            okl_contract_book_pvt.approve_contract(
25034              p_api_version     => p_api_version,
25035              p_init_msg_list   => p_init_msg_list,
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_chr_id
25040             );
25041 
25042            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
25043               RAISE after_yield_failed;
25044            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
25045               RAISE after_yield_failed;
25046            END IF;
25047 
25048        ELSIF (l_import_stage = 'BOOKED') THEN
25049            --
25050            -- Generate Journal Entries
25051            --
25052            debug_message('Calling : okl_contract_book_pub.generate_journal_entries');
25053 
25054            okl_contract_book_pub.generate_journal_entries(
25055                        p_api_version      => p_api_version,
25056                        p_init_msg_list    => p_init_msg_list,
25057                        p_commit           => Okl_Api.G_FALSE,
25058                        p_contract_id      => p_chr_id,
25059                        p_transaction_type => 'Booking',
25060                        p_draft_yn         => Okc_Api.G_TRUE,
25061                        x_return_status    => x_return_status,
25062                        x_msg_count        => x_msg_count,
25063                        x_msg_data         => x_msg_data
25064                      );
25065 
25066            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
25067               RAISE after_yield_failed;
25068            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
25069               RAISE after_yield_failed;
25070            END IF;
25071 
25072 
25073            --Bug# 2566822 : AME/WF integration in approval process
25074            --debug_message('Calling : okl_contract_book_pub.submit_for_approval');
25075            debug_message('Calling : okl_contract_book_pvt.approve_contract');
25076            --
25077            -- Submit for Approval
25078            --
25079            --Bug# 2566822 : AME/WF integration in approval process
25080            --okl_contract_book_pub.submit_for_approval(
25081            okl_contract_book_pvt.approve_contract(
25082              p_api_version     => p_api_version,
25083              p_init_msg_list   => p_init_msg_list,
25084              x_return_status   => x_return_status,
25085              x_msg_count       => x_msg_count,
25086              x_msg_data        => x_msg_data,
25087              p_chr_id          => p_chr_id
25088             );
25089 
25090            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
25091               RAISE after_yield_failed;
25092            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
25093               RAISE after_yield_failed;
25094            END IF;
25095 
25096 
25097            debug_message('Calling : okl_contract_book_pub.activate_contract');
25098            okl_contract_book_pub.activate_contract(
25099              p_api_version     => p_api_version,
25100              p_init_msg_list   => p_init_msg_list,
25101              x_return_status   => x_return_status,
25102              x_msg_count       => x_msg_count,
25103              x_msg_data        => x_msg_data,
25104              p_chr_id          => p_chr_id
25105             );
25106 
25107            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
25108               RAISE after_yield_failed;
25109            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
25110               RAISE after_yield_failed;
25111            END IF;
25112 
25113            -- R12B Authoring OA Migration
25114            -- Update the status of the Submit Contract task to Complete
25115            OKL_BOOK_CONTROLLER_PVT.update_book_controller_trx(
25116              p_api_version        => p_api_version,
25117              p_init_msg_list      => p_init_msg_list,
25118              x_return_status      => x_return_status,
25119              x_msg_count          => x_msg_count,
25120              x_msg_data           => x_msg_data,
25121              p_khr_id             => p_chr_id ,
25122              p_prog_short_name    => OKL_BOOK_CONTROLLER_PVT.G_SUBMIT_CONTRACT,
25123              p_progress_status    => OKL_BOOK_CONTROLLER_PVT.G_PROG_STS_COMPLETE);
25124 
25125            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
25126              RAISE after_yield_failed;
25127            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
25128              RAISE after_yield_failed;
25129            END IF;
25130 
25131        END IF; -- import_stage
25132 
25133      END IF;
25134 
25135      Update_Interface_Status(
25136                              p_contract_number     => l_orig_contract,
25137                              p_new_contract_number => l_contract_number,
25138                              p_status              => 'FINAL',
25139                              x_return_status       => x_return_status
25140                             );
25141 
25142      IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
25143         RAISE after_yield_failed;
25144      END IF;
25145 
25146      OKL_API.END_ACTIVITY(x_msg_count   => x_msg_count,
25147                           x_msg_data    => x_msg_data);
25148 
25149 
25150      RETURN;
25151 
25152    EXCEPTION
25153        when after_yield_failed THEN
25154           IF contract_csr%ISOPEN THEN
25155               CLOSE contract_csr;
25156           END IF;
25157           x_return_status := OKL_API.G_RET_STS_SUCCESS; -- to allow Yield process to complete SUCCESSFULLY
25158 
25159        when OKL_API.G_EXCEPTION_ERROR then
25160           x_return_status := OKL_API.HANDLE_EXCEPTIONS(
25161                          p_api_name  => l_api_name,
25162                          p_pkg_name  => G_PKG_NAME,
25163                          p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
25164                          x_msg_count => x_msg_count,
25165                          x_msg_data  => x_msg_data,
25166                          p_api_type  => G_API_TYPE);
25167 
25168 
25169        when OKL_API.G_EXCEPTION_UNEXPECTED_ERROR then
25170           x_return_status := OKL_API.HANDLE_EXCEPTIONS(
25171                          p_api_name  => l_api_name,
25172                          p_pkg_name  => G_PKG_NAME,
25173                          p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
25174                          x_msg_count => x_msg_count,
25175                          x_msg_data  => x_msg_data,
25176                          p_api_type  => G_API_TYPE);
25177 
25178        when OTHERS then
25179           x_return_status := OKL_API.HANDLE_EXCEPTIONS(
25180                          p_api_name  => l_api_name,
25181                          p_pkg_name  => G_PKG_NAME,
25182                          p_exc_name  => 'OTHERS',
25183                          x_msg_count => x_msg_count,
25184                          x_msg_data  => x_msg_data,
25185                          p_api_type  => G_API_TYPE);
25186 
25187    END contract_after_yield;
25188 
25189 ------------------------------------------------------------------------------
25190 -- PROCEDURE contract_further_process
25191 -- It process contract beyond status 'NEW'. It calls QA Checker and finally submits
25192 -- request to generate streams and
25193 -- stacks Error, if any, and returns ERROR status to calling process.
25194 -- Calls:
25195 -- Called By:
25196 --  process_record
25197 ------------------------------------------------------------------------------
25198   PROCEDURE contract_further_process(
25199                                      p_init_msg_list    IN  VARCHAR2,
25200                                      x_return_status    OUT NOCOPY VARCHAR2,
25201                                      x_msg_count        OUT NOCOPY NUMBER,
25202                                      x_msg_data         OUT NOCOPY VARCHAR2,
25203                                      p_chr_id           IN  OKC_K_HEADERS_V.ID%TYPE,
25204                                      p_import_stage     IN  VARCHAR2
25205                                     ) IS
25206   l_api_name             VARCHAR2(35)    := 'create_rebook_contract';
25207   l_proc_name            VARCHAR2(35)    := 'CREATE_REBOOK_CONTRACT';
25208   l_api_version          CONSTANT NUMBER := 1;
25209   l_qa_check_status      VARCHAR2(1)     := 'S';
25210 
25211   l_qcl_id               NUMBER;
25212   l_msg_tbl              Okl_Qa_Check_Pub.msg_tbl_type;
25213   x_trx_number           NUMBER;
25214   x_trx_status           VARCHAR2(100);
25215 
25216   -- R12B Authoring OA Migration
25217   l_upfront_tax_status   VARCHAR2(1)     := 'S';
25218 
25219   BEGIN
25220 
25221      x_return_status := OKL_API.G_RET_STS_SUCCESS;
25222 
25223      IF (p_import_stage IN ('PASSED','COMPLETE','APPROVED','BOOKED')) THEN
25224 /* 4414408
25225          get_qcl_id(
25226                     x_return_status => x_return_status,
25227                     p_qcl_name      => 'OKL LA QA CHECK LIST',
25228                     x_qcl_id        => l_qcl_id);
25229 
25230          debug_message('ID : '||l_qcl_id);
25231          IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
25232 */
25233             --fnd_file.put_line(fnd_file.output, 'Running QA Checker...');
25234             debug_message('ID : '||g_qcl_id);
25235             write_to_log('Running QA Checker...');
25236             okl_contract_book_pub.execute_qa_check_list(
25237                                                         p_api_version    => 1.0,
25238                                                         p_init_msg_list  => OKL_API.G_FALSE,
25239                                                         x_return_status  => x_return_status,
25240                                                         x_msg_count      => x_msg_count,
25241                                                         x_msg_data       => x_msg_data,
25242                                                         p_qcl_id         => g_qcl_id, -- 4414408
25243                                                         p_chr_id         => p_chr_id,
25244                                                         x_msg_tbl        => l_msg_tbl
25245                                                        );
25246 
25247             FOR i IN 1..l_msg_tbl.LAST
25248             LOOP
25249                IF (l_msg_tbl(i).error_status <> 'S') THEN
25250 
25251                   write_to_log('Name        : '||l_msg_tbl(i).name);
25252                   write_to_log('Description : '||l_msg_tbl(i).description);
25253                   write_to_log('Error Status: '||l_msg_tbl(i).error_status);
25254                   write_to_log('Data        : '||l_msg_tbl(i).data);
25255 
25256                END IF;
25257 
25258                IF (l_msg_tbl(i).error_status = 'E') THEN
25259                   l_qa_check_status := 'E';
25260                END IF;
25261             END LOOP;
25262 
25263             debug_message('After 1st Qa Checker '|| l_qa_check_status);
25264             commit;
25265 
25266 --         END IF; -- Success
25267 
25268            -- R12B Authoring OA Migration
25269            -- Call API to calculate upfront tax if QA check is complete
25270            IF  (l_qa_check_status = 'S') THEN
25271 
25272              OKL_CONTRACT_BOOK_PVT.calculate_upfront_tax(
25273                p_api_version      =>  1.0,
25274                p_init_msg_list    =>  OKL_API.G_FALSE,
25275                x_return_status    =>  x_return_status,
25276                x_msg_count        =>  x_msg_count,
25277                x_msg_data         =>  x_msg_data,
25278                p_chr_id           =>  p_chr_id,
25279                x_process_status   =>  l_upfront_tax_status);
25280 
25281              IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
25282                commit;
25283              ELSE
25284                report_error(x_msg_count, x_msg_data);
25285                rollback;
25286                l_upfront_tax_status := 'E';
25287              END IF;
25288 
25289            END IF;
25290 
25291       END IF; -- Import Stage
25292 
25293       debug_message('QA Error Status: '||l_qa_check_status);
25294 
25295       IF (p_import_stage IN ('COMPLETE', 'APPROVED', 'BOOKED')) THEN
25296             -- R12B Authoring OA Migration
25297             -- If Upfront Tax is complete, then call API to generate streams
25298             IF (l_upfront_tax_status = 'S') THEN
25299             --IF (l_qa_check_status = 'S') THEN
25300 
25301                --fnd_file.put_line(fnd_file.output, 'Submitting Request to generate Streams....');
25302                write_to_log('Submitting Request to generate Streams....');
25303 
25304                --OKL_GENERATE_STREAMS_PUB.GENERATE_STREAMS(
25305                OKL_LA_STREAM_PUB.GEN_INTR_EXTR_STREAM (
25306                                                          p_api_version         => 1.0,
25307                                                          p_init_msg_list       => OKL_API.G_FALSE,
25308                                                          p_khr_id              => p_chr_id,
25309                                                          p_generation_ctx_code => 'AUTH',
25310                                                          x_trx_number          => x_trx_number,
25311                                                          x_trx_status          => x_trx_status,
25312                                                          x_return_status       => x_return_status,
25313                                                          x_msg_count           => x_msg_count,
25314                                                          x_msg_data            => x_msg_data
25315                                                         );
25316 
25317                IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
25318                  commit; -- required for stream generation
25319                  --fnd_file.put_line(fnd_file.output,'Req ID: '||x_trx_number);
25320                  write_to_log('Req ID: '||x_trx_number);
25321                ELSE
25322                  report_error(
25323                               x_msg_count, x_msg_data);
25324                  rollback;
25325                END IF;
25326             END IF; -- upfront tax status
25327         END IF; -- import_stage
25328 
25329     RETURN;
25330 
25331   EXCEPTION
25332     WHEN OTHERS THEN
25333 
25334       okl_api.set_message(
25335                           G_APP_NAME,
25336                           G_UNEXPECTED_ERROR,
25337                           'OKL_SQLCODE',
25338                           SQLCODE,
25339                           'OKL_SQLERRM',
25340                           SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
25341                          );
25342       x_return_status := OKL_API.G_RET_STS_ERROR;
25343 
25344       report_error (
25345                     x_msg_count => x_msg_count,
25346                     x_msg_data  => x_msg_data
25347                    );
25348 
25349   END contract_further_process;
25350 
25351   PROCEDURE get_tal_id(
25352                        x_return_status OUT NOCOPY VARCHAR2,
25353                        p_fa_line_id    IN  NUMBER,
25354                        x_tal_id        OUT NOCOPY NUMBER
25355                       ) IS
25356 
25357   CURSOR tal_csr (p_id NUMBER) IS
25358   SELECT id
25359   FROM   okl_txl_assets_v
25360   WHERE  kle_id = p_id;
25361 
25362   tal_failed EXCEPTION;
25363   l_id   NUMBER;
25364 
25365   BEGIN
25366     x_return_status := OKL_API.G_RET_STS_SUCCESS;
25367     OPEN tal_csr(p_fa_line_id);
25368     FETCH tal_csr INTO l_id;
25369     IF tal_csr%NOTFOUND THEN
25370        RAISE tal_failed;
25371     END IF;
25372     CLOSE tal_csr;
25373     x_tal_id := l_id;
25374     RETURN;
25375   EXCEPTION
25376     WHEN tal_failed THEN
25377        IF tal_csr%ISOPEN THEN
25378          CLOSE tal_csr;
25379        END IF;
25380        okl_api.set_message(
25381                            G_APP_NAME,
25382                            G_OKL_TXD_ID
25383                           );
25384        x_return_status := OKL_API.G_RET_STS_ERROR;
25385   END get_tal_id;
25386 
25387 ------------------------------------------------------------------------------
25388 -- PROCEDURE populate_header_rec
25389 -- It checks template contract and interface data to populate final header record and
25390 -- stacks Error, if any, and returns ERROR status to calling process.
25391 -- Calls:
25392 --
25393 -- Called By:
25394 --
25395 ------------------------------------------------------------------------------
25396   PROCEDURE populate_header_rec(
25397                           x_return_status  OUT NOCOPY VARCHAR2,
25398                           x_msg_count      OUT NOCOPY NUMBER,
25399                           x_msg_data       OUT NOCOPY VARCHAR2,
25400                           p_temp_header    IN  template_h_rec_type,
25401                           p_intf_header    IN  intf_h_rec_type,
25402                           x_chrv_rec       OUT NOCOPY chrv_rec_type,
25403                           x_khrv_rec       OUT NOCOPY khrv_rec_type
25404                          ) IS
25405   l_proc_name            VARCHAR2(35)  := 'POPULATE_HEADER_REC';
25406 --  l_qcl_id               NUMBER;
25407   x_program_agreement_id OKC_K_HEADERS_V.ID%TYPE;
25408   x_product_id           NUMBER;
25409 
25410     CURSOR customer_csr (p_customer_number OKX_PARTIES_V.PARTY_NUMBER%TYPE,
25411                          p_customer_id     OKX_PARTIES_V.ID1%TYPE) IS
25412     SELECT id1
25413     FROM   okx_parties_v
25414     WHERE  ((party_number = p_customer_number
25415              AND
25416              p_customer_number IS NOT NULL
25417             )
25418             OR
25419             (id1          = p_customer_id
25420              AND
25421              p_customer_id IS NOT NULL
25422             )
25423            );
25424 
25425   l_id1                  OKX_PARTIES_V.ID1%TYPE;
25426   x_customer_account_id  NUMBER;
25427   x_bill_to_address_id   NUMBER;
25428   pop_header_failed      EXCEPTION;
25429 
25430   BEGIN
25431 
25432      -- Bug 4350579 start
25433      -- Validation from check
25434      --
25435      x_return_status := check_header_literal (
25436                            p_contract_number             => p_intf_header.contract_number_old,
25437                            p_template_id                 => p_temp_header.id,
25438                            p_application_code            => p_intf_header.application_code,
25439                            p_contract_category           => NVL(p_intf_header.contract_category,p_temp_header.scs_code),
25440                            p_import_request_stage        => p_intf_header.import_request_stage,
25441                            p_converted_account           => NVL(p_intf_header.converted_account,
25442                                                                 p_temp_header.converted_account_yn),
25443                            p_security_deposit_hold_flag  => p_intf_header.security_deposit_hold_flag,
25444                            p_security_deposit_net_flag   => p_intf_header.security_deposit_net_flag,
25445                            p_review_invoice_flag         => p_intf_header.review_invoice_flag,
25446                            p_date_signed                 => NVL(p_intf_header.date_signed,p_temp_header.date_signed),
25447                            p_start_date                  => NVL(p_intf_header.start_date,p_temp_header.start_date),
25448                            p_date_approved               => NVL(p_intf_header.date_approved,p_temp_header.date_approved),
25449                            p_term                        => NVL(p_intf_header.term,p_temp_header.term_duration),
25450                            p_accepted_date               => NVL(p_intf_header.accepted_date,p_temp_header.accepted_date),
25451                            p_deal_type_code              => NVL(p_intf_header.deal_type_code,p_temp_header.deal_type),
25452                            p_bill_to_address             => p_intf_header.bill_to_address,
25453                            p_bill_to_address_id          => p_intf_header.bill_to_address_id,
25454                            p_authoring_org_id            => NVL(p_intf_header.authoring_org_id,
25455                                                                 p_temp_header.authoring_org_id),
25456 			   p_inv_organization_id         => NVL(p_intf_header.inventory_organization_id,
25457 			                                        p_temp_header.inv_organization_id),
25458                            p_customer_account_number     => p_intf_header.customer_account_number,
25459                            p_customer_account_id         => p_intf_header.customer_account_id,
25460                            p_eot_purchase_opt_type       => p_intf_header.eot_purchase_opt_type,
25461                            p_expected_delivery_date      => p_intf_header.expected_delivery_date,
25462                            p_currency_code               => NVL(p_intf_header.currency_code,
25463                                                                 p_temp_header.currency_code)
25464                           );
25465 
25466      IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
25467         x_return_status := OKL_API.G_RET_STS_ERROR;
25468         RAISE pop_header_failed;
25469      END IF;
25470 
25471 
25472      -- Bug 4350579 end
25473 
25474      x_chrv_rec.sts_code                := 'NEW';
25475      x_chrv_rec.scs_code                := NVL(p_intf_header.contract_category, p_temp_header.scs_code);
25476      x_chrv_rec.contract_number         := p_intf_header.contract_number;
25477      x_chrv_rec.currency_code           := NVL(p_intf_header.currency_code, p_temp_header.currency_code);
25478      x_chrv_rec.cust_po_number          := NVL(p_intf_header.customer_po_number, p_temp_header.cust_po_number);
25479      x_chrv_rec.short_description       := NVL(p_intf_header.contract_description, p_temp_header.short_description);
25480      x_chrv_rec.description             := NVL(p_intf_header.contract_description, p_temp_header.description);
25481      x_chrv_rec.date_approved           := NVL(p_intf_header.date_approved, p_temp_header.date_approved);
25482      x_chrv_rec.archived_yn             := 'N';
25483      x_chrv_rec.deleted_yn              := 'N';
25484      x_chrv_rec.cust_po_number_req_yn   := 'N';
25485      x_chrv_rec.pre_pay_req_yn          := 'N';
25486      x_chrv_rec.template_yn             := 'N';
25487      x_chrv_rec.chr_type                := 'CYA';
25488      x_chrv_rec.date_signed             := NVL(p_intf_header.date_signed, p_temp_header.date_signed);
25489      x_chrv_rec.start_date              := NVL(p_intf_header.start_date, NVL(p_temp_header.start_date, SYSDATE));
25490      -- Added by asahoo for Bug#5416376
25491      x_chrv_rec.end_date                := OKL_LLA_UTIL_PVT.calculate_end_date(nvl(x_chrv_rec.start_date, SYSDATE),
25492                                                       nvl(p_intf_header.term,NVL(p_temp_header.term_duration, 0)));
25493      x_chrv_rec.authoring_org_id        := NVL(p_intf_header.authoring_org_id, p_temp_header.authoring_org_id);
25494      x_chrv_rec.inv_organization_id     := NVL(p_intf_header.inventory_organization_id, p_temp_header.inv_organization_id);
25495      x_chrv_rec.buy_or_sell             := 'S';
25496      x_chrv_rec.issue_or_receive        := 'I';
25497      x_chrv_rec.orig_system_source_code := 'OKL_IMPORT'; -- p_intf_header.contract_source; Only one source for 1st release
25498      x_chrv_rec.orig_system_reference1  := p_intf_header.contract_number_old;
25499 
25500      -- Validated customer
25501      l_id1 := NULL;
25502      OPEN customer_csr (p_intf_header.customer_number,
25503                         p_intf_header.customer_id);
25504      FETCH customer_csr INTO l_id1;
25505      CLOSE customer_csr;
25506 
25507      IF (l_id1 IS NOT NULL) THEN
25508         g_customer_id := l_id1;
25509      ELSE
25510        okl_api.set_message(
25511                            G_APP_NAME,
25512                            G_INVALID_VALUE,
25513                            'CONTRACT_NUM',
25514                            p_intf_header.contract_number_old,
25515                            'COL_NAME',
25516                            'CUSTOMER_ID, NUMBER: ',
25517                            'COL_VALUE',
25518                            p_intf_header.customer_id||', '||p_intf_header.customer_number
25519                           );
25520 
25521        x_return_status := OKL_API.G_RET_STS_ERROR;
25522        RAISE pop_header_failed;
25523      END IF;
25524 
25525      x_customer_account_id := NULL;
25526      IF (p_intf_header.customer_account_id IS NOT NULL
25527          OR
25528          p_intf_header.customer_account_number IS NOT NULL) THEN
25529           get_customer_account_id(
25530                                   x_return_status           => x_return_status,
25531                                   x_msg_count               => x_msg_count,
25532                                   x_msg_data                => x_msg_data,
25533                                   p_contract_number         => p_intf_header.contract_number_old,
25534                                   p_customer_id             => g_customer_id,
25535                                   p_customer_account_id     => p_intf_header.customer_account_id,
25536                                   p_customer_account_number => p_intf_header.customer_account_number,
25537                                   x_customer_account_id     => x_customer_account_id
25538                                  );
25539           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
25540              x_return_status := OKL_API.G_RET_STS_ERROR;
25541              RAISE pop_header_failed;
25542           END IF;
25543      ELSIF (p_intf_header.template_number IS NOT NULL) THEN
25544          x_customer_account_id := p_temp_header.cust_acct_id;
25545      END IF;
25546 
25547      IF (x_customer_account_id IS NULL
25548          AND
25549          p_intf_header.import_request_stage <> 'NEW') THEN
25550         okl_api.set_message(
25551                             G_APP_NAME,
25552                             G_MISSING_VALUE_FOR_STAGE,
25553                             'CONTRACT_NUM',
25554                             p_intf_header.contract_number_old,
25555                             'COL_NAME',
25556                             'CUSTOMER_ACCOUNT',
25557                             'STAGE',
25558                             p_intf_header.import_request_stage
25559                            );
25560        x_return_status := OKL_API.G_RET_STS_ERROR;
25561        RAISE pop_header_failed;
25562      END IF;
25563 
25564      x_chrv_rec.cust_acct_id            := x_customer_account_id;
25565      g_customer_account_id              := x_customer_account_id;
25566 
25567      x_bill_to_address_id := NULL;
25568      IF (p_intf_header.bill_to_address_id IS NOT NULL
25569          OR
25570          p_intf_header.bill_to_address IS NOT NULL) THEN
25571           get_bill_to_address_id(
25572                              x_return_status           => x_return_status,
25573                              x_msg_count               => x_msg_count,
25574                              x_msg_data                => x_msg_data,
25575                              p_contract_number         => p_intf_header.contract_number,
25576                              p_auth_org_id             => p_intf_header.authoring_org_id,
25577                              p_bill_to_address_id      => p_intf_header.bill_to_address_id,
25578                              p_bill_to_address         => p_intf_header.bill_to_address,
25579                              p_customer_account_id     => x_customer_account_id,
25580                              x_bill_to_address_id      => x_bill_to_address_id
25581                             );
25582           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
25583              x_return_status := OKL_API.G_RET_STS_ERROR;
25584              RAISE pop_header_failed;
25585           END IF;
25586 
25587      ELSIF (p_intf_header.template_number IS NOT NULL) THEN
25588          x_bill_to_address_id := p_temp_header.bill_to_site_use_id;
25589      END IF;
25590 
25591      IF (x_bill_to_address_id IS NULL
25592          AND
25593          p_intf_header.import_request_stage <> 'NEW') THEN
25594         okl_api.set_message(
25595                             G_APP_NAME,
25596                             G_MISSING_VALUE_FOR_STAGE,
25597                             'CONTRACT_NUM',
25598                             p_intf_header.contract_number_old,
25599                             'COL_NAME',
25600                             'BILL_TO_ADDRESS',
25601                             'STAGE',
25602                             p_intf_header.import_request_stage
25603                            );
25604          x_return_status := OKL_API.G_RET_STS_ERROR;
25605          RAISE pop_header_failed;
25606      END IF;
25607 
25608      g_bill_to_address_id               := x_bill_to_address_id;
25609      x_chrv_rec.bill_to_site_use_id     := x_bill_to_address_id;
25610 
25611 /* 4414408
25612      get_qcl_id(
25613                  x_return_status => x_return_status,
25614                  p_qcl_name      => 'OKL LA QA CHECK LIST',
25615                  x_qcl_id        => l_qcl_id
25616                 );
25617 */
25618 
25619      x_chrv_rec.qcl_id                  := g_qcl_id;
25620 
25621      --
25622      -- Bug 3990456
25623      -- For template import populate
25624      -- orig_system_id1 and template_used columns
25625      --
25626      IF (p_temp_header.id IS NOT NULL) THEN
25627         x_chrv_rec.orig_system_id1 := p_temp_header.id;
25628         x_chrv_rec.template_used   := p_temp_header.contract_number;
25629      END IF;
25630 
25631      IF (NVL(p_intf_header.program_agreement_id,p_temp_header.khr_id) IS NOT NULL
25632          OR
25633          p_intf_header.program_agreement_number IS NOT NULL) THEN
25634 
25635          x_return_status := get_prog_agreement_id(
25636                                              p_scs_code         => 'PROGRAM',
25637                                              p_agreement_number => p_intf_header.program_agreement_number,
25638                                              p_agreement_id     => NVL(p_intf_header.program_agreement_id,
25639                                                                        p_temp_header.khr_id),
25640                                              p_auth_org_id      => x_chrv_rec.authoring_org_id,
25641                                              x_agreement_id     => x_program_agreement_id
25642                                             );
25643 
25644          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
25645              okl_api.set_message(
25646                                  G_APP_NAME,
25647                                  G_INVALID_VALUE,
25648                                  'CONTRACT_NUM',
25649                                  p_intf_header.contract_number_old,
25650                                  'COL_NAME',
25651                                  'PROGRAM_AGREEMENT_ID, NUMBER: ',
25652                                  'COL_VALUE',
25653                                  p_intf_header.program_agreement_id||', '||p_intf_header.program_agreement_number
25654                                 );
25655             RAISE pop_header_failed;
25656          END IF;
25657          x_khrv_rec.khr_id := x_program_agreement_id;
25658      ELSE
25659          x_khrv_rec.khr_id := p_temp_header.khr_id;
25660      END IF;
25661 
25662      IF (p_intf_header.product_id IS NOT NULL
25663          OR
25664          p_intf_header.product_name IS NOT NULL) THEN
25665         x_return_status := get_product_id(p_product_id     => p_intf_header.product_id,
25666                                            p_product_name   => p_intf_header.product_name,
25667                                            x_product_id     => x_product_id );
25668 
25669         IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
25670               okl_api.set_message(
25671                                   G_APP_NAME,
25672                                   G_INVALID_VALUE,
25673                                   'CONTRACT_NUM',
25674                                   p_intf_header.contract_number_old,
25675                                   'COL_NAME',
25676                                   'PRODUCT_ID, NAME: ',
25677                                   'COL_VALUE',
25678                                   p_intf_header.product_id||', '||p_intf_header.product_name
25679                                  );
25680 
25681             x_return_status := OKL_API.G_RET_STS_ERROR;
25682 
25683            RAISE pop_header_failed;
25684         END IF;
25685         x_khrv_rec.pdt_id := x_product_id;
25686      ELSE
25687         x_khrv_rec.pdt_id := p_temp_header.pdt_id;
25688      END IF;
25689 
25690      IF (NVL(p_intf_header.assignable_yn,'N') NOT IN ('Y','N')) THEN
25691            okl_api.set_message(
25692                                G_APP_NAME,
25693                                G_INVALID_VALUE,
25694                                'CONTRACT_NUM',
25695                                p_intf_header.contract_number_old,
25696                                'COL_NAME',
25697                                'ASSIGNABLE_YN',
25698                                'COL_VALUE',
25699                                p_intf_header.assignable_yn
25700                               );
25701 
25702          x_return_status := OKL_API.G_RET_STS_ERROR;
25703 
25704         RAISE pop_header_failed;
25705      END IF;
25706 
25707 -- start cklee bug# 3440442
25708      IF (NVL(p_intf_header.prefunding_eligible_flag,'N') NOT IN ('Y','N')) THEN
25709            okl_api.set_message(
25710                                G_APP_NAME,
25711                                G_INVALID_VALUE,
25712                                'CONTRACT_NUM',
25713                                p_intf_header.contract_number_old,
25714                                'COL_NAME',
25715                                'PREFUNDING_ELIGIBLE_FLAG',
25716                                'COL_VALUE',
25717                                p_intf_header.prefunding_eligible_flag
25718                               );
25719 
25720          x_return_status := OKL_API.G_RET_STS_ERROR;
25721 
25722         RAISE pop_header_failed;
25723      END IF;
25724 -- end cklee bug# 3440442
25725 
25726      x_khrv_rec.amd_code                 := NVL(p_intf_header.acceptance_method_code, p_temp_header.amd_code);
25727      x_khrv_rec.converted_account_yn     := NVL(p_intf_header.converted_account, p_temp_header.converted_account_yn);
25728 
25729 /* Not used since 11.5.9, Product is defaulting deal_type_code
25730      x_khrv_rec.deal_type                := NVL(p_intf_header.deal_type_code, p_temp_header.deal_type);
25731 */
25732      x_khrv_rec.expected_delivery_date   := NVL(p_intf_header.expected_delivery_date, p_temp_header.expected_delivery_date);
25733      x_khrv_rec.accepted_date            := NVL(p_intf_header.accepted_date, p_temp_header.accepted_date);
25734      x_khrv_rec.term_duration            := NVL(p_intf_header.term, p_temp_header.term_duration);
25735      x_khrv_rec.currency_conversion_type := NVL(p_intf_header.currency_conversion_type,
25736                                                         p_temp_header.currency_conversion_type);
25737      x_khrv_rec.currency_conversion_rate := NVL(p_intf_header.currency_conversion_rate,
25738                                                         p_temp_header.currency_conversion_rate);
25739      x_khrv_rec.currency_conversion_date := NVL(p_intf_header.currency_conversion_date,
25740                                                         p_temp_header.currency_conversion_date);
25741      x_khrv_rec.assignable_yn            := NVL(p_intf_header.assignable_yn,p_temp_header.assignable_yn);
25742      x_khrv_rec.prefunding_eligible_yn   := NVL(p_intf_header.prefunding_eligible_flag,p_temp_header.prefunding_eligible_yn);
25743      x_khrv_rec.credit_act_yn            := NVL(p_intf_header.consumer_credit_act_deal_flag,
25744                                                         p_temp_header.credit_act_yn); -- dedey for bug 4637590
25745 
25746      -- Contract addl field, Bug 4558486
25747 
25748      debug_message('Contract DFF...');
25749 
25750      x_khrv_rec.validate_dff_yn          := 'Y';  -- always validate DFF
25751      x_khrv_rec.attribute_category       := NVL(p_intf_header.attribute_category,
25752                                                  p_temp_header.attribute_category);
25753      debug_message('attribute_category: '||x_khrv_rec.attribute_category);
25754      x_khrv_rec.attribute1               := NVL(p_intf_header.attribute1,
25755                                                  p_temp_header.attribute1);
25756      debug_message('attribute1: '||x_khrv_rec.attribute1);
25757      x_khrv_rec.attribute2               := NVL(p_intf_header.attribute2,
25758                                                  p_temp_header.attribute2);
25759      debug_message('attribute2: '||x_khrv_rec.attribute2);
25760      x_khrv_rec.attribute3               := NVL(p_intf_header.attribute3,
25761                                                  p_temp_header.attribute3);
25762      x_khrv_rec.attribute4               := NVL(p_intf_header.attribute4,
25763                                                  p_temp_header.attribute4);
25764      x_khrv_rec.attribute5               := NVL(p_intf_header.attribute5,
25765                                                  p_temp_header.attribute5);
25766      x_khrv_rec.attribute6               := NVL(p_intf_header.attribute6,
25767                                                  p_temp_header.attribute6);
25768      x_khrv_rec.attribute7               := NVL(p_intf_header.attribute7,
25769                                                  p_temp_header.attribute7);
25770      x_khrv_rec.attribute8               := NVL(p_intf_header.attribute8,
25771                                                  p_temp_header.attribute8);
25772      x_khrv_rec.attribute9               := NVL(p_intf_header.attribute9,
25773                                                  p_temp_header.attribute9);
25774      x_khrv_rec.attribute10              := NVL(p_intf_header.attribute10,
25775                                                  p_temp_header.attribute10);
25776      x_khrv_rec.attribute11              := NVL(p_intf_header.attribute11,
25777                                                  p_temp_header.attribute11);
25778      x_khrv_rec.attribute12              := NVL(p_intf_header.attribute12,
25779                                                  p_temp_header.attribute12);
25780      x_khrv_rec.attribute13              := NVL(p_intf_header.attribute13,
25781                                                  p_temp_header.attribute13);
25782      x_khrv_rec.attribute14              := NVL(p_intf_header.attribute14,
25783                                                  p_temp_header.attribute14);
25784      x_khrv_rec.attribute15              := NVL(p_intf_header.attribute15,
25785                                                  p_temp_header.attribute15);
25786      -- Contract addl field, Bug 4558486
25787 
25788 
25789     RETURN;
25790 
25791   EXCEPTION
25792     WHEN pop_header_failed THEN
25793       NULL; -- caller will handle appropriate exception
25794   END populate_header_rec;
25795 
25796 ------------------------------------------------------------------------------
25797 -- PROCEDURE check_payment_level
25798 -- This procedure determines payment level for SERVICE and FEE lines.
25799 -- If asset_number column is populated at SERVICE and FEE lines, payment
25800 -- will be attached to sub-line level.
25801 --
25802 -- If asset_number column is not populated at SERVICE and FEE lines, payment
25803 -- will be attached to top-line level.
25804 --
25805 -- Calls:
25806 -- Called By:
25807 --  load_input_record
25808 ------------------------------------------------------------------------------
25809   PROCEDURE  check_payment_level(
25810                                  x_return_status   OUT NOCOPY VARCHAR2,
25811                                  x_msg_count       OUT NOCOPY VARCHAR2,
25812                                  x_msg_data        OUT NOCOPY VARCHAR2,
25813                                  p_contract_number IN  OKL_HEADER_INTERFACE.CONTRACT_NUMBER_OLD%TYPE,
25814                                  p_line_number     IN  OKL_LINES_INTERFACE.LINE_NUMBER%TYPE,
25815                                  x_payment_level   OUT NOCOPY VARCHAR2
25816                                 ) IS
25817 
25818   l_proc_name VARCHAR2(35) := 'CHECK_PAYMENT_LEVEL';
25819 
25820   CURSOR line_csr (p_cont_number OKL_HEADER_INTERFACE.CONTRACT_NUMBER_OLD%TYPE,
25821                    p_line        OKL_LINES_INTERFACE.LINE_NUMBER%TYPE) IS
25822   SELECT line_type,
25823          asset_number
25824   FROM   okl_lines_interface
25825   WHERE  contract_number_old = p_cont_number
25826   AND    line_number         = p_line;
25827 
25828   l_line_type    OKL_LINES_INTERFACE.LINE_TYPE%TYPE;
25829   l_asset_number OKL_LINES_INTERFACE.ASSET_NUMBER%TYPE;
25830 
25831   BEGIN
25832     x_return_status := OKL_API.G_RET_STS_SUCCESS;
25833     debug_message(l_proc_name);
25834 
25835     x_payment_level := 'TOP'; -- default
25836 
25837     l_line_type    := NULL;
25838     l_asset_number := NULL;
25839 
25840     OPEN line_csr (p_contract_number,
25841                    p_line_number);
25842     FETCH line_csr INTO l_line_type,
25843                         l_asset_number;
25844     CLOSE line_csr;
25845 
25846     IF (l_line_type IN ('SERVICE', 'FEE')) THEN
25847        IF (l_asset_number IS NOT NULL) THEN
25848            x_payment_level := 'SUB';
25849        ELSE
25850            x_payment_level := 'TOP';
25851        END IF;
25852     ELSE
25853        x_payment_level := 'TOP'; -- For other lines attach payment at TOP level only
25854     END IF;
25855 
25856   EXCEPTION
25857     WHEN OTHERS THEN
25858       okl_api.set_message(
25859                           G_APP_NAME,
25860                           G_UNEXPECTED_ERROR,
25861                           'OKL_SQLCODE',
25862                           SQLCODE,
25863                           'OKL_SQLERRM',
25864                           SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
25865                          );
25866       x_return_status := OKL_API.G_RET_STS_ERROR;
25867 
25868   END check_payment_level;
25869 
25870 
25871 ------------------------------------------------------------------------------
25872 -- PROCEDURE create_lessee_as_vendor
25873 -- This procedure creates lessee as vendor and attach pay site to it
25874 -- Calls:
25875 -- Called By:
25876 --  load_input_record
25877 ------------------------------------------------------------------------------
25878    PROCEDURE create_lessee_as_vendor(
25879                                     x_return_status      OUT NOCOPY VARCHAR2,
25880                                     x_msg_count          OUT NOCOPY NUMBER,
25881                                     x_msg_data           OUT NOCOPY VARCHAR2,
25882                                     p_chr_id             IN  NUMBER,
25883                                     p_contract_num       IN  VARCHAR2,
25884                                     p_cpl_id             IN  NUMBER,
25885                                     p_lessee_vendor_id   IN  NUMBER,
25886                                     p_lessee_vendor_name IN  VARCHAR2,
25887                                     p_lessee_site_id     IN  NUMBER,
25888                                     p_lessee_site_code   IN  VARCHAR2,
25889                                     p_authoring_org_id   IN  NUMBER
25890                                    ) IS
25891 
25892   l_proc_name VARCHAR2(35) := 'CREATE_LESSEE_AS_VENDOR';
25893   CURSOR vendor_csr (p_vendor_id NUMBER,
25894                      p_vendor_name VARCHAR2) IS
25895   SELECT vendor_id
25896   FROM   po_vendors
25897   WHERE  ( (vendor_id = p_vendor_id
25898             AND
25899             p_vendor_id IS NOT NULL
25900            )
25901            OR (
25902                vendor_name = p_vendor_name
25903                AND
25904                p_vendor_name IS NOT NULL
25905               )
25906          );
25907 
25908   CURSOR vendor_site_csr (p_vendor_id   NUMBER,
25909                           p_site_id     NUMBER,
25910                           p_site_code   VARCHAR2,
25911                           p_auth_org_id NUMBER) IS
25912   select vendor_site_id
25913   from   po_vendor_sites_all
25914   where  ( (vendor_site_id = p_site_id
25915             AND
25916             p_site_id IS NOT NULL)
25917             OR
25918             (vendor_site_code = p_site_code
25919              AND
25920              p_site_code IS NOT NULL)
25921           )
25922   and     org_id    = p_auth_org_id
25923   and     vendor_id = p_vendor_id;
25924 
25925   l_vendor_id      po_vendors.vendor_id%TYPE;
25926   l_vendor_site_id po_vendor_sites_all.vendor_site_id%TYPE;
25927   l_ppydv_rec      ppydv_rec_type;
25928   x_ppydv_rec      ppydv_rec_type;
25929 
25930   lessee_failed    EXCEPTION;
25931 
25932   BEGIN
25933 
25934     x_return_status := OKL_API.G_RET_STS_SUCCESS;
25935     debug_message(l_proc_name);
25936 
25937     debug_message('------>Vendor: '||p_lessee_vendor_id||', '||p_lessee_vendor_name);
25938     debug_message('------>Vendor Site: '||p_lessee_site_id||', '||p_lessee_site_code);
25939 
25940     IF (p_lessee_vendor_id IS NOT NULL
25941         OR
25942         p_lessee_vendor_name IS NOT NULL) THEN
25943 
25944        -- Check vendor
25945        OPEN vendor_csr (p_lessee_vendor_id,
25946                           p_lessee_vendor_name);
25947        FETCH vendor_csr INTO l_vendor_id;
25948        IF vendor_csr%NOTFOUND THEN
25949             okl_api.set_message(
25950                                 G_APP_NAME,
25951                                 G_INVALID_VALUE,
25952                                 'CONTRACT_NUM',
25953                                 p_contract_num,
25954                                 'COL_NAME',
25955                                 'LESSEE_AS_VENDOR_ID OR LESSEE_AS_VENDOR_NAME',
25956                                 'COL_VALUE',
25957                                 p_lessee_vendor_id||', '||p_lessee_vendor_name
25958                                );
25959           RAISE lessee_failed;
25960        END IF;
25961        CLOSE vendor_csr;
25962 
25963        debug_message('------> Vendor valid');
25964        -- Check vendor Pay site
25965        OPEN vendor_site_csr(l_vendor_id,
25966                             p_lessee_site_id,
25967                             p_lessee_site_code,
25968                             p_authoring_org_id);
25969 
25970        FETCH vendor_site_csr INTO l_vendor_site_id;
25971        IF vendor_site_csr%NOTFOUND THEN
25972           okl_api.set_message(
25973                               G_APP_NAME,
25974                               G_INVALID_VALUE,
25975                               'CONTRACT_NUM',
25976                               p_contract_num,
25977                               'COL_NAME',
25978                               'LESSEE_AS_VENDOR_SITE_ID OR LESSEE_AS_VENDOR_SITE_CODE',
25979                               'COL_VALUE',
25980                                p_lessee_site_id||', '||p_lessee_site_code
25981                             );
25982           RAISE lessee_failed;
25983        END IF;
25984        CLOSE vendor_site_csr;
25985        debug_message('------> Vendor site valid');
25986 
25987        -- create lessee as vendor here
25988        l_ppydv_rec.cpl_id      := p_cpl_id;
25989        l_ppydv_rec.vendor_id   := l_vendor_id;
25990        l_ppydv_rec.pay_site_id := l_vendor_site_id;
25991 
25992        debug_message('------> Before creation of lessee as vendor');
25993        okl_lessee_as_vendor_pvt.create_lessee_as_vendor(
25994                                                         p_api_version    => 1.0,
25995                                                         p_init_msg_list  => OKL_API.G_FALSE,
25996                                                         x_return_status  => x_return_status,
25997                                                         x_msg_count      => x_msg_count,
25998                                                         x_msg_data       => x_msg_data,
25999                                                         p_chr_id         => p_chr_id,
26000                                                         p_ppydv_rec      => l_ppydv_rec,
26001                                                         x_ppydv_rec      => x_ppydv_rec
26002                                                        );
26003 
26004        IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
26005           RAISE lessee_failed;
26006        END IF;
26007        debug_message('------> After creation of lessee as vendor '||x_return_status);
26008 
26009     END IF; -- vendor_id NOT NULL
26010 
26011   EXCEPTION
26012     WHEN lessee_failed THEN
26013        IF vendor_csr%ISOPEN THEN
26014          CLOSE vendor_csr;
26015        END IF;
26016        IF vendor_site_csr%ISOPEN THEN
26017          CLOSE vendor_site_csr;
26018        END IF;
26019        x_return_status := OKL_API.G_RET_STS_ERROR;
26020 
26021     WHEN OTHERS THEN
26022       okl_api.set_message(
26023                           G_APP_NAME,
26024                           G_UNEXPECTED_ERROR,
26025                           'OKL_SQLCODE',
26026                           SQLCODE,
26027                           'OKL_SQLERRM',
26028                           SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
26029                          );
26030       x_return_status := OKL_API.G_RET_STS_ERROR;
26031 
26032   END create_lessee_as_vendor;
26033 
26034 ------------------------------------------------------------------------------
26035 -- PROCEDURE get_txd_id
26036 -- This procedure gets okl_txd_assets_b.id, required to update in case of
26037 -- released asset import with mutiple tax books.
26038 -- Calls:
26039 -- Called By:
26040 --  load_input_record
26041 ------------------------------------------------------------------------------
26042    PROCEDURE get_txd_id (
26043                          x_return_status   OUT NOCOPY VARCHAR2,
26044                          x_msg_count       OUT NOCOPY NUMBER,
26045                          x_msg_data        OUT NOCOPY VARCHAR2,
26046                          p_contract_number IN  VARCHAR2,
26047                          p_tal_id          IN  NUMBER,
26048                          p_tax_book        IN  VARCHAR2,
26049                          x_txd_id          OUT NOCOPY OKL_TXD_ASSETS_B.ID%TYPE
26050                         ) IS
26051 
26052    CURSOR txd_csr (p_tal_id   NUMBER,
26053                    p_tax_book VARCHAR2) IS
26054    SELECT id
26055    FROM   okl_txd_assets_b
26056    WHERE  tal_id = p_tal_id
26057    AND    tax_book = p_tax_book;
26058 
26059    l_proc_name VARCHAR2(35) := 'GET_TXD_ID';
26060    BEGIN
26061 
26062      x_return_status := OKL_API.G_RET_STS_SUCCESS;
26063      debug_message(l_proc_name);
26064 
26065      OPEN txd_csr (p_tal_id,
26066                    p_tax_book);
26067      FETCH txd_csr INTO x_txd_id;
26068      IF (txd_csr%NOTFOUND) THEN
26069          okl_api.set_message(
26070                              G_APP_NAME,
26071                              G_INVALID_VALUE,
26072                              'CONTRACT_NUM',
26073                              p_contract_number,
26074                              'COL_NAME',
26075                              'TAX_BOOK',
26076                              'COL_VALUE',
26077                              p_tax_book
26078                             );
26079 
26080         x_return_status := OKL_API.G_RET_STS_ERROR;
26081      END IF;
26082      CLOSE txd_csr;
26083 
26084    EXCEPTION
26085 
26086      WHEN OTHERS THEN
26087 
26088       okl_api.set_message(
26089                           G_APP_NAME,
26090                           G_UNEXPECTED_ERROR,
26091                           'OKL_SQLCODE',
26092                           SQLCODE,
26093                           'OKL_SQLERRM',
26094                           SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
26095                          );
26096       x_return_status := OKL_API.G_RET_STS_ERROR;
26097    END get_txd_id;
26098 
26099 ------------------------------------------------------------------------------
26100 -- PROCEDURE create_release_asset_rule
26101 -- This procedure creates release asset rule at contract header
26102 -- Calls:
26103 -- Called By:
26104 --  load_input_record
26105 ------------------------------------------------------------------------------
26106    PROCEDURE create_release_asset_rule(
26107                                        x_return_status      OUT NOCOPY VARCHAR2,
26108                                        x_msg_count          OUT NOCOPY NUMBER,
26109                                        x_msg_data           OUT NOCOPY VARCHAR2,
26110                                        p_chr_id             IN NUMBER,
26111                                        p_release_asset_flag IN VARCHAR2
26112                                       ) IS
26113 
26114    l_proc_name VARCHAR2(35) := 'CREATE_RELEASE_ASSET_RULE';
26115 
26116    l_rgpv_rec rgpv_rec_type;
26117    x_rgpv_rec rgpv_rec_type;
26118 
26119    l_rulv_rec rulv_rec_type;
26120    x_rulv_rec rulv_rec_type;
26121 
26122    l_rgp_id   NUMBER := NULL;
26123    rel_rule_failed EXCEPTION;
26124 
26125    BEGIN
26126 
26127       x_return_status := OKL_API.G_RET_STS_SUCCESS;
26128       debug_message(l_proc_name);
26129 
26130       l_rgpv_rec            := NULL;
26131       l_rgp_id              := NULL;
26132 
26133       l_rgpv_rec.rgd_code   := 'LARLES';
26134       l_rgpv_rec.chr_id     := p_chr_id;
26135       l_rgpv_rec.dnz_chr_id := p_chr_id;
26136       l_rgpv_rec.cle_id     := NULL;
26137       l_rgpv_rec.rgp_type   := 'KRG';
26138 
26139       l_rulv_rec                           := NULL;
26140 
26141       l_rulv_rec.dnz_chr_id                := p_chr_id;
26142       l_rulv_rec.rule_information_category := 'LARLES';
26143       l_rulv_rec.rule_information1         := p_release_asset_flag;
26144       l_rulv_rec.std_template_yn           := 'N';
26145       l_rulv_rec.warn_yn                   := 'N';
26146 
26147       create_rule_group_and_rule(
26148                               x_return_status => x_return_status,
26149                               x_msg_count     => x_msg_count,
26150                               x_msg_data      => x_msg_data,
26151                               p_rgp_id        => l_rgp_id,
26152                               p_rgpv_rec      => l_rgpv_rec,
26153                               p_rulv_rec      => l_rulv_rec,
26154                               x_rgpv_rec      => x_rgpv_rec,
26155                               x_rulv_rec      => x_rulv_rec
26156                              );
26157 
26158       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
26159           raise rel_rule_failed;
26160       END IF;
26161 
26162       debug_message('------>Rule: LARLES/LARLES processed');
26163 
26164    EXCEPTION
26165 
26166      WHEN rel_rule_failed THEN
26167         x_return_status := OKL_API.G_RET_STS_ERROR;
26168 
26169     WHEN OTHERS THEN
26170       okl_api.set_message(
26171                           G_APP_NAME,
26172                           G_UNEXPECTED_ERROR,
26173                           'OKL_SQLCODE',
26174                           SQLCODE,
26175                           'OKL_SQLERRM',
26176                           SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
26177                          );
26178       x_return_status := OKL_API.G_RET_STS_ERROR;
26179    END create_release_asset_rule;
26180 
26181 ------------------------------------------------------------------------------
26182 -- PROCEDURE process_release_asset
26183 -- This procedure creates asset line using released asset
26184 -- Calls:
26185 -- Called By:
26186 --  load_input_record
26187 ------------------------------------------------------------------------------
26188 
26189    PROCEDURE process_release_asset(
26190                                    x_return_status      OUT NOCOPY VARCHAR2,
26191                                    x_msg_count          OUT NOCOPY NUMBER,
26192                                    x_msg_data           OUT NOCOPY VARCHAR2,
26193                                    p_chr_id             IN VARCHAR2,
26194                                    p_contract_number    IN VARCHAR2,
26195                                    p_asset_number       IN VARCHAR2,
26196                                    p_asset_id           IN OKL_LA_RELEASE_ASSETS_UV.ASSET_ID%TYPE,
26197                                    p_line_number        IN NUMBER,
26198                                    p_install_site_id    IN okl_lines_interface.install_site_id%TYPE,
26199                                    p_install_site_num   IN okl_lines_interface.install_site_number%TYPE,
26200                                    p_unit_price         IN okl_lines_interface.original_cost%TYPE,
26201                                    p_deprn_method       IN okl_lines_interface.depreciation_method_code%TYPE,
26202                                    p_life_in_months     IN okl_lines_interface.life_in_months%TYPE,
26203                                    p_deprn_rate         IN okl_lines_interface.depreciation_rate%TYPE,
26204                                    p_asset_location_id  IN okl_lines_interface.asset_location_id%TYPE,
26205                                    p_asset_loc_segment1 IN okl_lines_interface.asset_location_segment1%TYPE,
26206                                    p_asset_loc_segment2 IN okl_lines_interface.asset_location_segment2%TYPE,
26207                                    p_asset_loc_segment3 IN okl_lines_interface.asset_location_segment3%TYPE,
26208                                    p_asset_loc_segment4 IN okl_lines_interface.asset_location_segment4%TYPE,
26209                                    p_asset_loc_segment5 IN okl_lines_interface.asset_location_segment5%TYPE,
26210                                    p_asset_loc_segment6 IN okl_lines_interface.asset_location_segment6%TYPE,
26211                                    p_asset_loc_segment7 IN okl_lines_interface.asset_location_segment7%TYPE,
26212                                    p_salvage_value      IN okl_lines_interface.salvage_value%TYPE,
26213                                    p_salvage_ptg        IN okl_lines_interface.salvage_value_percent%TYPE,
26214                                    p_residual_grnty_amt IN okl_lines_interface.residual_amount_guarantee%TYPE,
26215                                    p_residual_code      IN okl_lines_interface.guarantor_type_code%TYPE,
26216                                    p_residual_ptg       IN okl_lines_interface.residual_percent%TYPE,
26217                                    p_residual_amt       IN okl_lines_interface.residual_amount%TYPE,
26218                                    p_tax_book           IN okl_lines_interface.tax_book%TYPE,
26219                                    p_tax_deprn          IN okl_lines_interface.deprn_method_tax%TYPE,
26220                                    p_tax_life_in_mnth   IN okl_lines_interface.life_in_months_tax%TYPE,
26221                                    p_tax_deprn_rate     IN okl_lines_interface.deprn_rate_tax%TYPE,
26222                                    p_pth_base_payout_basis        IN okl_lines_interface.pth_base_payout_basis%TYPE,
26223                                    p_pth_base_stream_code         IN okl_lines_interface.pth_base_stream_code%TYPE,
26224                                    p_pth_base_stream_purpose_code IN okl_lines_interface.pth_base_stream_purpose_code%TYPE,
26225                                    p_pth_start_date               IN okl_lines_interface.pth_start_date%TYPE,
26226                                    p_pth_evg_payout_basis         IN okl_lines_interface.pth_evg_payout_basis%TYPE,
26227                                    p_pth_payout_basis_formula     IN okl_lines_interface.pth_payout_basis_formula%TYPE,
26228                                    p_pth_evg_stream_code          IN okl_lines_interface.pth_evg_stream_code%TYPE,
26229                                    p_pth_evg_stream_purpose_code  IN okl_lines_interface.pth_evg_stream_purpose_code%TYPE,
26230                                    p_attribute_category           IN okl_lines_interface.attribute_category%TYPE,
26231                                    p_attribute1                   IN okl_lines_interface.attribute1%TYPE,
26232                                    p_attribute2                   IN okl_lines_interface.attribute2%TYPE,
26233                                    p_attribute3                   IN okl_lines_interface.attribute3%TYPE,
26234                                    p_attribute4                   IN okl_lines_interface.attribute4%TYPE,
26235                                    p_attribute5                   IN okl_lines_interface.attribute5%TYPE,
26236                                    p_attribute6                   IN okl_lines_interface.attribute6%TYPE,
26237                                    p_attribute7                   IN okl_lines_interface.attribute7%TYPE,
26238                                    p_attribute8                   IN okl_lines_interface.attribute8%TYPE,
26239                                    p_attribute9                   IN okl_lines_interface.attribute9%TYPE,
26240                                    p_attribute10                  IN okl_lines_interface.attribute10%TYPE,
26241                                    p_attribute11                  IN okl_lines_interface.attribute11%TYPE,
26242                                    p_attribute12                  IN okl_lines_interface.attribute12%TYPE,
26243                                    p_attribute13                  IN okl_lines_interface.attribute13%TYPE,
26244                                    p_attribute14                  IN okl_lines_interface.attribute14%TYPE,
26245                                    p_attribute15                  IN okl_lines_interface.attribute15%TYPE,
26246                                    x_clev_fin_rec                 OUT NOCOPY clev_rec_type,
26247                                    x_clev_model_rec               OUT NOCOPY clev_rec_type,
26248                                    x_clev_fa_rec                  OUT NOCOPY clev_rec_type,
26249                                    x_clev_ib_rec                  OUT NOCOPY clev_rec_type
26250                                   ) IS
26251 
26252    l_proc_name VARCHAR2(35) := 'PROCESS_RELEASE_ASSET';
26253    release_failed EXCEPTION;
26254 
26255    l_clev_fin_rec clev_rec_type;
26256    l_klev_fin_rec klev_rec_type;
26257    l_clev_fa_rec  clev_rec_type;
26258    l_cimv_fa_rec  cimv_rec_type;
26259    l_talv_fa_rec  talv_rec_type;
26260    l_itiv_ib_tbl  itiv_tbl_type;
26261    l_cimv_model_rec cimv_rec_type;
26262    x_lse_id       NUMBER;
26263    x_comb_id      NUMBER;
26264    x_install_site_id NUMBER;
26265 
26266    x_txd_id       NUMBER;
26267    l_tal_id       NUMBER;
26268 
26269    l_adpv_rec     adpv_rec_type;
26270    x_adpv_rec     adpv_rec_type;
26271 
26272    x_party_pmnt_hdr_tbl_out pphv_tbl_type;
26273    l_counter                NUMBER;
26274 
26275    BEGIN
26276 
26277      x_return_status := OKL_API.G_RET_STS_SUCCESS;
26278      debug_message(l_proc_name);
26279 
26280      debug_message('------> Contract id: '||p_chr_id);
26281      debug_message('------> Asset id: '||p_asset_id);
26282 
26283      debug_message('------> Residual : '||p_residual_ptg||'/'||p_residual_amt);
26284      debug_message('------> Unit Price : '||p_unit_price);
26285      l_cimv_fa_rec.object1_id1 := p_asset_id;
26286      l_cimv_fa_rec.object1_id2 := '#';
26287      l_clev_fin_rec.dnz_chr_id := p_chr_id;
26288 
26289      IF (p_unit_price IS NOT NULL) THEN
26290          l_clev_fin_rec.price_unit       := p_unit_price;
26291          l_talv_fa_rec.original_cost     := p_unit_price;
26292      END IF;
26293 
26294      IF (p_residual_grnty_amt IS NOT NULL) THEN
26295          l_klev_fin_rec.residual_grnty_amount     := p_residual_grnty_amt;
26296      END IF;
26297 
26298      IF (p_residual_ptg IS NOT NULL) THEN
26299         l_klev_fin_rec.residual_percentage       := p_residual_ptg;
26300      END IF;
26301 
26302      IF (p_residual_amt IS NOT NULL) THEN
26303         l_klev_fin_rec.residual_value            := p_residual_amt;
26304      END IF;
26305      l_klev_fin_rec.residual_code             := NVL(p_residual_code,'NONE');
26306 
26307      IF (p_deprn_method IS NOT NULL) THEN
26308         l_talv_fa_rec.deprn_method               := p_deprn_method;
26309      END IF;
26310 
26311      IF (p_life_in_months IS NOT NULL) THEN
26312         l_talv_fa_rec.life_in_months             := p_life_in_months;
26313      END IF;
26314 
26315      IF (p_deprn_rate IS NOT NULL) THEN
26316         l_talv_fa_rec.deprn_rate                 := p_deprn_rate;
26317      END IF;
26318 
26319      IF (p_salvage_value IS NOT NULL) THEN
26320         l_talv_fa_rec.salvage_value              := p_salvage_value;
26321      END IF;
26322 
26323      IF (p_salvage_value IS NOT NULL) THEN
26324         l_talv_fa_rec.percent_salvage_value      := p_salvage_ptg;
26325      END IF;
26326 
26327      x_comb_id := NULL;
26328      get_flexid(
26329                 x_return_status   => x_return_status,
26330                 x_msg_count       => x_msg_count,
26331                 x_msg_data        => x_msg_data,
26332                 p_type            => 'ASSET_LOCATION',
26333                 p_contract_number => p_contract_number,
26334                 p_line_number     => p_line_number,
26335                 p_comb_id         => p_asset_location_id,
26336                 p_segment1        => p_asset_loc_segment1,
26337                 p_segment2        => p_asset_loc_segment2,
26338                 p_segment3        => p_asset_loc_segment3,
26339                 p_segment4        => p_asset_loc_segment4,
26340                 p_segment5        => p_asset_loc_segment5,
26341                 p_segment6        => p_asset_loc_segment6,
26342                 p_segment7        => p_asset_loc_segment7,
26343                 x_comb_id         => x_comb_id
26344                );
26345      IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
26346         x_return_status := OKL_API.G_RET_STS_ERROR;
26347         RAISE release_failed;
26348      END IF;
26349 
26350      IF (x_comb_id IS NOT NULL) THEN
26351         l_talv_fa_rec.fa_location_id        := x_comb_id;
26352      END IF;
26353 
26354      IF (p_install_site_id IS NOT NULL
26355          OR
26356          p_install_site_num IS NOT NULL) THEN
26357         get_install_site_id(
26358                             x_return_status       => x_return_status,
26359                             x_msg_count           => x_msg_count,
26360                             x_msg_data            => x_msg_data,
26361                             p_contract_number     => p_contract_number,
26362                             p_line_number         => p_line_number,
26363                             p_install_site_id     => p_install_site_id,
26364                             p_install_site_number => p_install_site_num,
26365                             x_install_site_id     => x_install_site_id
26366                            );
26367 
26368         IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
26369            x_return_status := OKL_API.G_RET_STS_ERROR;
26370            RAISE release_failed;
26371         END IF;
26372         l_itiv_ib_tbl(1).object_id1_new := x_install_site_id;
26373      END IF;
26374 
26375      -- Contract addl field, Bug 4558486
26376 
26377      debug_message('Contract release Asset line DFF...'||'Line#: '||p_line_number);
26378 
26379      l_klev_fin_rec.validate_dff_yn          := 'Y';  -- always validate DFF
26380      l_klev_fin_rec.attribute_category       := p_attribute_category;
26381      debug_message('attribute_category: '||l_klev_fin_rec.attribute_category);
26382      l_klev_fin_rec.attribute1               := p_attribute1;
26383      debug_message('attribute1: '||l_klev_fin_rec.attribute1);
26384      l_klev_fin_rec.attribute2               := p_attribute2;
26385      debug_message('attribute2: '||l_klev_fin_rec.attribute2);
26386      l_klev_fin_rec.attribute3               := p_attribute3;
26387      l_klev_fin_rec.attribute4               := p_attribute4;
26388      l_klev_fin_rec.attribute5               := p_attribute5;
26389      l_klev_fin_rec.attribute6               := p_attribute6;
26390      l_klev_fin_rec.attribute7               := p_attribute7;
26391      l_klev_fin_rec.attribute8               := p_attribute8;
26392      l_klev_fin_rec.attribute9               := p_attribute9;
26393      l_klev_fin_rec.attribute10              := p_attribute10;
26394      l_klev_fin_rec.attribute11              := p_attribute11;
26395      l_klev_fin_rec.attribute12              := p_attribute12;
26396      l_klev_fin_rec.attribute13              := p_attribute13;
26397      l_klev_fin_rec.attribute14              := p_attribute14;
26398      l_klev_fin_rec.attribute15              := p_attribute15;
26399      -- Contract addl field, Bug 4558486
26400 
26401      debug_message('======>Before calling create_all_line');
26402      okl_create_kle_pvt.Create_all_line(
26403                                         p_api_version    => 1.0,
26404                                         p_init_msg_list  => OKL_API.G_FALSE,
26405                                         x_return_status  => x_return_status,
26406                                         x_msg_count      => x_msg_count,
26407                                         x_msg_data       => x_msg_data,
26408                                         p_new_yn         => 'N',
26409                                         p_asset_number   => NULL, --p_asset_number,
26410                                         p_clev_fin_rec   => l_clev_fin_rec,
26411                                         p_klev_fin_rec   => l_klev_fin_rec,
26412                                         p_cimv_model_rec => l_cimv_model_rec,
26413                                         p_clev_fa_rec    => l_clev_fa_rec,
26414                                         p_cimv_fa_rec    => l_cimv_fa_rec,
26415                                         p_talv_fa_rec    => l_talv_fa_rec,
26416                                         p_itiv_ib_tbl    => l_itiv_ib_tbl,
26417                                         x_clev_fin_rec   => x_clev_fin_rec,
26418                                         x_clev_model_rec => x_clev_model_rec,
26419                                         x_clev_fa_rec    => x_clev_fa_rec,
26420                                         x_clev_ib_rec    => x_clev_ib_rec
26421                                        );
26422 
26423      debug_message('======>After calling create_all_line '||x_return_status);
26424 
26425      IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
26426         x_return_status := OKL_API.G_RET_STS_ERROR;
26427         RAISE release_failed;
26428      END IF;
26429 
26430      debug_message('------> clev_fin_rec.id: '||x_clev_fin_rec.id);
26431      debug_message('------> clev_model_rec.id: '||x_clev_model_rec.id);
26432      debug_message('------> clev_fa_rec.id: '||x_clev_fa_rec.id);
26433      debug_message('------> clev_ib_rec.id: '||x_clev_ib_rec.id);
26434 
26435      debug_message('------>Line created');
26436 
26437      IF (p_pth_evg_payout_basis is NOT NULL) THEN
26438         debug_message('------>Create party payment starts for Released Asset: '||p_asset_number || '/ '|| p_line_number);
26439         create_party_payment_hdr(
26440                                  x_return_status                   => x_return_status,
26441                                  x_msg_count                       => x_msg_count,
26442                                  x_msg_data                        => x_msg_data,
26443                                  p_contract_id                     => x_clev_fin_rec.dnz_chr_id,
26444                                  p_line_id                         => x_clev_fin_rec.id,
26445                                  p_line_type                       => 'ASSET',
26446                                  p_pth_start_date                  => p_pth_start_date,
26447                                  p_pth_base_payout_basis           => p_pth_base_payout_basis,
26448                                  p_pth_base_stream_code            => p_pth_base_stream_code,
26449                                  p_pth_base_stream_purpose_code    => p_pth_base_stream_purpose_code,
26450                                  p_pth_evg_payout_basis            => p_pth_evg_payout_basis,
26451                                  p_pth_payout_basis_formula        => p_pth_payout_basis_formula,
26452                                  p_pth_evg_stream_code             => p_pth_evg_stream_code,
26453                                  p_pth_evg_stream_purpose_code     => p_pth_evg_stream_purpose_code,
26454                                  x_party_pmnt_hdr_tbl              => x_party_pmnt_hdr_tbl_out
26455                                 );
26456 
26457         debug_message('------>Create party payment ends '||x_return_status);
26458         IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
26459            x_return_status := OKL_API.G_RET_STS_ERROR;
26460            RAISE release_failed;
26461         END IF;
26462 	IF (x_party_pmnt_hdr_tbl_out.COUNT > 0 )THEN
26463 	   l_counter := x_party_pmnt_hdr_tbl_out.FIRST;
26464 	   LOOP
26465               IF (x_party_pmnt_hdr_tbl_out(l_counter).passthru_term = 'BASE') THEN
26466  	         g_base_pmnt_hdr := x_party_pmnt_hdr_tbl_out(l_counter);
26467 	      ELSIF (x_party_pmnt_hdr_tbl_out(l_counter).passthru_term = 'EVERGREEN') THEN
26468 		 g_evg_pmnt_hdr := x_party_pmnt_hdr_tbl_out(l_counter);
26469 	      END IF;
26470 	   EXIT WHEN (l_counter = x_party_pmnt_hdr_tbl_out.LAST);
26471               l_counter := x_party_pmnt_hdr_tbl_out.NEXT(l_counter);
26472 	   END LOOP;
26473         END IF;
26474      END IF;
26475 
26476      -- Update TXD record for tax book, only if tax book is present
26477      IF (p_tax_book IS NOT NULL) THEN
26478         get_tal_id(
26479                    x_return_status => x_return_status,
26480                    p_fa_line_id    => x_clev_fa_rec.id,
26481                    x_tal_id        => l_tal_id);
26482 
26483         IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
26484            x_return_status := OKL_API.G_RET_STS_ERROR;
26485            RAISE release_failed;
26486         END IF;
26487 
26488         debug_message('------> tal_id : '||l_tal_id);
26489 
26490         get_txd_id (
26491                     x_return_status   => x_return_status,
26492                     x_msg_count       => x_msg_count,
26493                     x_msg_data        => x_msg_data,
26494                     p_contract_number => p_contract_number,
26495                     p_tal_id          => l_tal_id,
26496                     p_tax_book        => p_tax_book,
26497                     x_txd_id          => x_txd_id
26498                    );
26499 
26500         IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
26501            x_return_status := OKL_API.G_RET_STS_ERROR;
26502            RAISE release_failed;
26503         END IF;
26504 
26505         l_adpv_rec.id                 := x_txd_id;
26506         l_adpv_rec.asset_number       := p_asset_number;
26507         l_adpv_rec.tal_id             := l_tal_id;
26508 
26509         IF (p_tax_deprn IS NOT NULL) THEN
26510            l_adpv_rec.deprn_method_tax   := p_tax_deprn;
26511         END IF;
26512 
26513         IF (p_tax_deprn_rate IS NOT NULL) THEN
26514            l_adpv_rec.deprn_rate_tax     := p_tax_deprn_rate;
26515         END IF;
26516 
26517         IF (p_tax_life_in_mnth IS NOT NULL) THEN
26518            l_adpv_rec.life_in_months_tax := p_tax_life_in_mnth;
26519         END IF;
26520 
26521         okl_txd_assets_pub.update_txd_asset_def(
26522                                                 p_api_version     => 1.0,
26523                                                 p_init_msg_list   => OKL_API.G_FALSE,
26524                                                 x_return_status   => x_return_status,
26525                                                 x_msg_count       => x_msg_count,
26526                                                 x_msg_data        => x_msg_data,
26527                                                 p_adpv_rec        => l_adpv_rec,
26528                                                 x_adpv_rec        => x_adpv_rec
26529                                                );
26530 
26531         IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
26532             x_return_status := OKL_API.G_RET_STS_ERROR;
26533             RAISE release_failed;
26534         END IF;
26535 
26536         debug_message('------>TXD Line Updated');
26537 
26538      END IF; -- p_asset_number not null
26539 
26540    EXCEPTION
26541 
26542     WHEN release_failed THEN
26543        x_return_status := OKL_API.G_RET_STS_ERROR;
26544 
26545     WHEN OTHERS THEN
26546       okl_api.set_message(
26547                           G_APP_NAME,
26548                           G_UNEXPECTED_ERROR,
26549                           'OKL_SQLCODE',
26550                           SQLCODE,
26551                           'OKL_SQLERRM',
26552                           SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
26553                          );
26554       x_return_status := OKL_API.G_RET_STS_ERROR;
26555 
26556    END process_release_asset;
26557 
26558 ------------------------------------------------------------------------------
26559 -- PROCEDURE process_addon
26560 -- This procedure processes and creates addon line for each asset.
26561 -- Calls:
26562 -- Called By:
26563 --  load_input_record
26564 ------------------------------------------------------------------------------
26565 
26566    PROCEDURE process_addon(
26567                              x_return_status OUT NOCOPY VARCHAR2,
26568                              x_msg_count     OUT NOCOPY NUMBER,
26569                              x_msg_data      OUT NOCOPY VARCHAR2,
26570                              p_auth_org_id   IN  NUMBER,
26571                              p_contract_num  IN  VARCHAR2,
26572                              p_chr_id        IN  NUMBER,
26573                              p_fa_cle_id     IN  NUMBER,
26574                              p_asset_num     IN  VARCHAR2,
26575                              p_model_line_id IN  NUMBER,
26576                              p_number_of_items IN  NUMBER
26577                             ) IS
26578 
26579    subtype clev_tbl_type is OKL_CREATE_KLE_PUB.clev_tbl_type;
26580    subtype klev_tbl_type is OKL_CREATE_KLE_PUB.klev_tbl_type;
26581    subtype cimv_tbl_type is OKL_CREATE_KLE_PUB.cimv_tbl_type;
26582 
26583    -- Not needed these following three lines : AKP
26584    /*subtype clev_rec_type is OKL_CREATE_KLE_PUB.clev_rec_type;
26585    subtype klev_rec_type is OKL_CREATE_KLE_PUB.klev_rec_type;
26586    subtype cimv_rec_type is OKL_CREATE_KLE_PUB.cimv_rec_type; */
26587 
26588    l_clev_tbl clev_tbl_type;
26589    l_klev_tbl klev_tbl_type;
26590    l_cimv_tbl cimv_tbl_type;
26591 
26592    x_clev_tbl clev_tbl_type;
26593    x_klev_tbl klev_tbl_type;
26594    x_cimv_tbl cimv_tbl_type;
26595 
26596    l_clev_rec clev_rec_type;
26597    l_klev_rec klev_rec_type;
26598    x_fin_clev_rec clev_rec_type;
26599    x_fin_klev_rec klev_rec_type;
26600    l_cimv_rec cimv_rec_type;
26601 
26602    l_proc_name VARCHAR2(35):= 'PROCESS_ADDON';
26603    addon_failed EXCEPTION;
26604 
26605    x_inventory_org_id    NUMBER;
26606    x_inventory_item_id   NUMBER;
26607 
26608    x_asset_vendor_id NUMBER;
26609    p_cplv_rec cplv_rec_type;
26610    x_cplv_rec cplv_rec_type;
26611    l_kplv_rec         kplv_rec_type;
26612    x_kplv_rec         kplv_rec_type;
26613 
26614    x_ship_to_site_id okx_party_site_uses_v.id1%TYPE;
26615    p_sidv_rec sidv_rec_type;
26616    x_sidv_rec sidv_rec_type;
26617 
26618    CURSOR addon_csr (p_contract_number VARCHAR2,
26619                      p_asset_number VARCHAR2) IS
26620    SELECT *
26621    FROM   okl_lines_interface
26622    WHERE  line_type = 'ASSET_ADDON'
26623    AND    contract_number_old = p_contract_number
26624    AND    asset_number = p_asset_number;
26625 
26626    CURSOR okl_party_csr (p_contract_number_old VARCHAR2,
26627                         p_line_number         NUMBER) IS
26628    SELECT *
26629    FROM   okl_party_roles_interface
26630    WHERE  contract_number_old = p_contract_number_old
26631    AND    ( (line_number        = p_line_number
26632             AND
26633             p_line_number IS NOT NULL
26634             )
26635             OR
26636             (line_number   IS NULL
26637              AND
26638              p_line_number IS NULL
26639             )
26640           );
26641 
26642 BEGIN
26643 
26644   x_return_status := OKL_API.G_RET_STS_SUCCESS;
26645   debug_message(l_proc_name);
26646 
26647   FOR addon_rec IN addon_csr (p_contract_num,
26648                               p_asset_num)
26649   LOOP
26650     debug_message('Processing Addon line number: '||addon_rec.line_number);
26651     -- validate addon
26652 
26653     -- Get Item and Organization Info, for All line type
26654     IF (addon_rec.inventory_item_id IS NOT NULL
26655               OR
26656         addon_rec.inventory_item_name IS NOT NULL) THEN
26657       get_inventory_org_item_id(
26658                     x_return_status       => x_return_status,
26659                     x_msg_count           => x_msg_count,
26660                     x_msg_data            => x_msg_data,
26661                     p_contract_number     => p_contract_num,
26662                     p_line_number         => addon_rec.line_number,
26663                     p_line_type           => addon_rec.line_type,
26664                     p_inventory_org_id    => p_auth_org_id,
26665                     p_inventory_item_id   => addon_rec.inventory_item_id,
26666                     p_inventory_item_name => addon_rec.inventory_item_name,
26667                     x_inventory_org_id    => x_inventory_org_id,
26668                     x_inventory_item_id   => x_inventory_item_id
26669                  );
26670 
26671       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
26672         x_return_status := OKL_API.G_RET_STS_ERROR;
26673         RAISE addon_failed;
26674       END IF;
26675 
26676       -- Populate records and call create addon api
26677       l_clev_rec.cle_id := p_model_line_id;
26678       l_clev_rec.dnz_chr_id := p_chr_id;
26679       l_clev_rec.comments := addon_rec.DESCRIPTION;
26680       l_clev_rec.price_unit := addon_rec.ORIGINAL_COST;
26681       l_clev_rec.exception_yn := 'N';
26682 
26683       l_klev_rec.MANUFACTURER_NAME := addon_rec.MAKE;
26684       l_klev_rec.MODEL_NUMBER := addon_rec.MODEL;
26685       l_klev_rec.YEAR_OF_MANUFACTURE := addon_rec.YEAR_OF_MANUFACTURE;
26686 
26687       l_cimv_rec.object1_id1 := x_inventory_item_id;
26688       l_cimv_rec.object1_id2 := x_inventory_org_id;
26689       l_cimv_rec.exception_yn := 'N';
26690       l_cimv_rec.number_of_items := p_number_of_items;
26691 
26692       l_clev_tbl(1) := l_clev_rec;
26693       l_klev_tbl(1) := l_klev_rec;
26694       l_cimv_tbl(1) := l_cimv_rec;
26695 
26696       okl_create_kle_pub.create_add_on_line(
26697           p_api_version => 1,
26698           p_init_msg_list => OKC_API.G_FALSE,
26699           x_return_status => x_return_status,
26700           x_msg_count    => x_msg_count,
26701           x_msg_data     => x_msg_data,
26702           p_new_yn       => 'Y',
26703           p_asset_number => p_asset_num,
26704           p_clev_tbl     => l_clev_tbl,
26705           p_klev_tbl     => l_klev_tbl,
26706           p_cimv_tbl     => l_cimv_tbl,
26707           x_clev_tbl     => x_clev_tbl,
26708           x_klev_tbl     => x_klev_tbl,
26709           x_fin_clev_rec => x_fin_clev_rec,
26710           x_fin_klev_rec => x_fin_klev_rec,
26711           x_cimv_tbl     => x_cimv_tbl);
26712 
26713       debug_message('x_clev_tbl(1).id=' || x_clev_tbl(1).ID);
26714       --debug_message('x_klev_tbl(1).id=' || x_klev_tbl(1).ID);
26715       --debug_message('x_fin_clev_tbl(1).id=' || x_fin_clev_tbl(1).ID);
26716       --debug_message('x_fin_klev_tbl(1).id=' || x_fin_klev_tbl(1).ID);
26717       --debug_message('x_cimv_tbl(1).id=' || x_cimv_tbl(1).ID);
26718 
26719       debug_message('After create_add_on_line: x_return_status=' || x_return_status);
26720       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
26721         RAISE addon_failed;
26722       END IF;
26723 
26724       -- Do process party role
26725       FOR okl_party_rec IN okl_party_csr(p_contract_num, addon_rec.line_number)
26726       LOOP
26727         IF (okl_party_rec.ASSET_VENDOR_ID IS NOT NULL) THEN
26728           x_asset_vendor_id := okl_party_rec.ASSET_VENDOR_ID;
26729         ELSE
26730           get_vendor_id (
26731                        x_return_status     => x_return_status,
26732                        x_msg_count         => x_msg_count,
26733                        x_msg_data          => x_msg_data,
26734                        p_contract_number   => p_contract_num,
26735                        p_line_number       => addon_rec.line_number,
26736                        x_vendor_id         => x_asset_vendor_id,
26737                        p_vendor_name       => okl_party_rec.ASSET_VENDOR_NAME
26738                       );
26739           debug_message('Addon:x_asset_vendor_id=' || x_asset_vendor_id);
26740           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
26741              RAISE addon_failed;
26742           END IF;
26743         END IF;
26744 
26745         IF (x_asset_vendor_id IS NOT NULL) THEN
26746           p_cplv_rec := NULL;
26747           p_cplv_rec.chr_id := NULL;
26748           p_cplv_rec.dnz_chr_id := p_chr_id;
26749           p_cplv_rec.cle_id := x_clev_tbl(1).ID;
26750           p_cplv_rec.object1_id1       := TO_CHAR(x_asset_vendor_id);
26751           p_cplv_rec.object1_id2       := '#';
26752           p_cplv_rec.jtot_object1_code := 'OKX_VENDOR';
26753           p_cplv_rec.rle_code          := 'OKL_VENDOR';
26754           OKL_K_PARTY_ROLES_PVT.create_k_party_role(
26755                                   p_api_version   => 1.0,
26756                                   p_init_msg_list => OKL_API.G_FALSE,
26757                                   x_return_status => x_return_status,
26758                                   x_msg_count     => x_msg_count,
26759                                   x_msg_data      => x_msg_data,
26760                                   p_cplv_rec      => p_cplv_rec,
26761                                   p_kplv_rec      => l_kplv_rec,
26762                                   x_cplv_rec      => x_cplv_rec,
26763                                   x_kplv_rec      => x_kplv_rec
26764                                 );
26765 
26766          debug_message('x_cplv_rec.id=' || x_cplv_rec.ID);
26767          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
26768             RAISE addon_failed;
26769          END IF;
26770 
26771         END IF;
26772 
26773       END LOOP; -- okl_party_csr
26774 
26775       -- Do create supp invoice details
26776       IF (x_asset_vendor_id is NOT NULL) THEN
26777         debug_message('x_clev_tbl(1).ID=' || x_clev_tbl(1).ID);
26778         debug_message('p_fa_cle_id=' || p_fa_cle_id);
26779         p_sidv_rec.cle_id                := x_clev_tbl(1).id;
26780         p_sidv_rec.fa_cle_id             := p_fa_cle_id;
26781         p_sidv_rec.invoice_number        := addon_rec.vendor_invoice_number;
26782         p_sidv_rec.date_invoiced         := addon_rec.vendor_invoice_date;
26783         IF (addon_rec.ship_to_site_id IS NOT NULL
26784                 OR
26785             addon_rec.ship_to_site_number IS NOT NULL) THEN
26786           get_ship_to_site(
26787                            x_return_status       => x_return_status,
26788                            x_msg_count           => x_msg_count,
26789                            x_msg_data            => x_msg_data,
26790                            p_contract_number     => p_contract_num,
26791                            p_line_number         => addon_rec.line_number,
26792                            p_auth_org_id         => p_auth_org_id,
26793                            p_ship_to_site_number => addon_rec.ship_to_site_number,
26794                            p_ship_to_site_id     => addon_rec.ship_to_site_id,
26795                            x_ship_to_site_id     => x_ship_to_site_id
26796                          );
26797           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
26798             RAISE addon_failed;
26799             x_return_status := OKL_API.G_RET_STS_ERROR;
26800           END IF;
26801 
26802           debug_message('x_ship_to_site_id=' || x_ship_to_site_id);
26803           p_sidv_rec.shipping_address_id1  := x_ship_to_site_id;
26804           p_sidv_rec.shipping_address_id2  := '#';
26805           p_sidv_rec.shipping_address_code := 'OKX_CUSTSITE';
26806         END IF;
26807 
26808         okl_supp_invoice_dtls_pub.create_sup_inv_dtls(
26809                        p_api_version => 1.0,
26810                        x_return_status => x_return_status,
26811                        x_msg_count     => x_msg_count,
26812                        x_msg_data      => x_msg_data,
26813                        p_sidv_rec      => p_sidv_rec,
26814                        x_sidv_rec      => x_sidv_rec
26815                      );
26816         IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
26817           x_return_status := OKL_API.G_RET_STS_ERROR;
26818           RAISE addon_failed;
26819         END IF;
26820       ELSE
26821         IF (addon_rec.vendor_invoice_number IS NOT NULL OR
26822             addon_rec.vendor_invoice_date IS NOT NULL OR
26823             addon_rec.ship_to_site_id IS NOT NULL OR
26824             addon_rec.ship_to_site_number IS NOT NULL) THEN
26825            okl_api.set_message(
26826                                G_APP_NAME,
26827                                G_MISSING_VALUE_FOR_LINE,
26828                                'CONTRACT_NUM',
26829                                p_contract_num, --||'/'||addon_rec.line_number,
26830                                'COL_NAME',
26831                                'ADDON:ASSET_VENDOR_ID, ADDON:ASSET_VENDOR_NAME',
26832                                'LINE',
26833                                'Line Number ' || addon_rec.line_number || ' in party_roles_interface'
26834                               );
26835            RAISE addon_failed;
26836         END IF;
26837       END IF;
26838 
26839 
26840       -- Done processing. Now delete the tables.
26841       l_clev_tbl.delete;
26842       l_klev_tbl.delete;
26843       l_cimv_tbl.delete;
26844 
26845     END IF;
26846 
26847 
26848   END LOOP;
26849 
26850    EXCEPTION
26851       WHEN addon_failed THEN
26852          x_return_status := OKL_API.G_RET_STS_ERROR;
26853 
26854 END process_addon;
26855 
26856 ------------------------------------------------------------------------------
26857 -- PROCEDURE process_subsidy
26858 -- This procedure processes and creates subsidy line for each asset.
26859 -- Calls:
26860 -- Called By:
26861 --  load_input_record
26862 ------------------------------------------------------------------------------
26863    PROCEDURE process_subsidy(
26864                              x_return_status OUT NOCOPY VARCHAR2,
26865                              x_msg_count     OUT NOCOPY NUMBER,
26866                              x_msg_data      OUT NOCOPY VARCHAR2,
26867                              p_auth_org_id   IN  NUMBER,
26868                              p_contract_num  IN  VARCHAR2,
26869                              p_chr_id        IN  NUMBER,
26870                              p_asset_line_id IN  NUMBER,
26871                              p_asset_num     IN  VARCHAR2
26872                             ) IS
26873    l_proc_name VARCHAR2(35):= 'PROCESS_SUBSIDY';
26874    subsidy_failed EXCEPTION;
26875 
26876    CURSOR subsidy_csr (p_contract_number VARCHAR2,
26877                        p_asset_number VARCHAR2) IS
26878    SELECT *
26879    FROM   okl_lines_interface
26880    WHERE  line_type = 'ASSET_SUBSIDY'
26881    AND    contract_number_old = p_contract_number
26882    AND    asset_number = p_asset_number;
26883 
26884    l_subsidy_id okl_subsidies_b.id%TYPE;
26885    l_vendor_id  okl_subsidies_b.vendor_id%TYPE;
26886    l_paysite_id NUMBER;
26887    l_payterm_id NUMBER;
26888 
26889    l_asb_rec    okl_asset_subsidy_pvt.asb_rec_type;
26890    x_asb_rec    okl_asset_subsidy_pvt.asb_rec_type;
26891 
26892    l_srfvv_rec  okl_subsidy_rfnd_dtls_pvt.srfvv_rec_type;
26893    x_srfvv_rec  okl_subsidy_rfnd_dtls_pvt.srfvv_rec_type;
26894 
26895    CURSOR vendor_csr (p_name VARCHAR2) IS
26896    SELECT vendor_id
26897    FROM   po_vendors
26898    WHERE  vendor_name = p_name;
26899 
26900    CURSOR sub_id_csr (p_name okl_subsidies_b.name%TYPE,
26901                       p_org  NUMBER) IS
26902    SELECT id
26903    FROM   okl_subsidies_b
26904    WHERE  name   = p_name
26905    AND    org_id = p_org;
26906 
26907    CURSOR paysite_csr (p_code po_vendor_sites_all.vendor_site_code%TYPE,
26908                        p_ven_id NUMBER,
26909                        p_org  NUMBER) IS
26910    SELECT vendor_site_id
26911    FROM   po_vendor_sites_all
26912    WHERE  vendor_site_code = p_code
26913    AND    vendor_id        = p_ven_id
26914    AND    org_id           = p_org;
26915 
26916    CURSOR payterm_csr (p_name okx_payables_terms_v.name%TYPE) IS
26917    SELECT id1
26918    FROM   okx_payables_terms_v
26919    WHERE  NAME   = p_name
26920    AND    status = 'A';
26921 
26922    BEGIN
26923       x_return_status := OKL_API.G_RET_STS_SUCCESS;
26924       debug_message(l_proc_name);
26925 
26926       FOR subsidy_rec IN subsidy_csr (p_contract_num,
26927                                       p_asset_num)
26928       LOOP
26929         debug_message('Processing Subsidy line number: '||subsidy_rec.line_number);
26930         -- validate subsidy
26931         IF (subsidy_rec.subsidy_id IS NOT NULL) THEN
26932            l_subsidy_id := subsidy_rec.subsidy_id;
26933         ELSIF (subsidy_rec.subsidy_name IS NOT NULL) THEN
26934            OPEN sub_id_csr (subsidy_rec.subsidy_name,
26935                             p_auth_org_id);
26936            FETCH sub_id_csr INTO l_subsidy_id;
26937            IF sub_id_csr%NOTFOUND THEN
26938               -- Error
26939               okl_api.set_message(
26940                                   G_APP_NAME,
26941                                   G_INVALID_VALUE,
26942                                   'CONTRACT_NUM',
26943                                   p_contract_num||'/'||subsidy_rec.line_number,
26944                                   'COL_NAME',
26945                                   'SUBSIDY_NAME',
26946                                   'COL_VALUE',
26947                                   subsidy_rec.subsidy_name
26948                                  );
26949               RAISE subsidy_failed;
26950            END IF;
26951            CLOSE sub_id_csr;
26952         ELSE
26953            okl_api.set_message(
26954                                G_APP_NAME,
26955                                G_MISSING_VALUE_FOR_LINE,
26956                                'CONTRACT_NUM',
26957                                p_contract_num||'/'||subsidy_rec.line_number,
26958                                'COL_NAME',
26959                                'SUBSIDY_ID, NAME'
26960                               );
26961            RAISE subsidy_failed;
26962         END IF;
26963 
26964         -- validate vendor
26965         IF (subsidy_rec.subsidy_party_id IS NOT NULL) THEN
26966            l_vendor_id := subsidy_rec.subsidy_party_id;
26967         ELSIF (subsidy_rec.subsidy_party_name IS NOT NULL) THEN
26968            OPEN vendor_csr (subsidy_rec.subsidy_party_name);
26969            FETCH vendor_csr INTO l_vendor_id;
26970            IF vendor_csr%NOTFOUND THEN
26971               okl_api.set_message(
26972                                   G_APP_NAME,
26973                                   G_INVALID_VALUE,
26974                                   'CONTRACT_NUM',
26975                                   p_contract_num||'/'||subsidy_rec.line_number,
26976                                   'COL_NAME',
26977                                   'SUBSIDY_PARTY_ID, NAME',
26978                                   'COL_VALUE',
26979                                   subsidy_rec.subsidy_party_id||', '||subsidy_rec.subsidy_party_name
26980                                  );
26981               RAISE subsidy_failed;
26982            END IF;
26983            CLOSE vendor_csr;
26984         ELSE
26985            l_vendor_id := NULL;
26986         END IF;
26987 
26988         l_asb_rec.subsidy_id               := l_subsidy_id;
26989         l_asb_rec.subsidy_override_amount  := subsidy_rec.subsidy_override_amount;
26990         l_asb_rec.dnz_chr_id               := p_chr_id;
26991         l_asb_rec.asset_cle_id             := p_asset_line_id;
26992         l_asb_rec.vendor_id                := l_vendor_id;
26993 
26994         debug_message('Subsidy: '||l_asb_rec.subsidy_id);
26995         debug_message('Override: '||l_asb_rec.subsidy_override_amount);
26996         debug_message('asset_cle_id: '||l_asb_rec.asset_cle_id);
26997         debug_message('vendor: '||l_asb_rec.vendor_id);
26998 
26999         okl_asset_subsidy_pvt.create_asset_subsidy(
27000                     p_api_version    => 1.0,
27001                     p_init_msg_list  => OKL_API.G_FALSE,
27002                     x_return_status  => x_return_status,
27003                     x_msg_count      => x_msg_count,
27004                     x_msg_data       => x_msg_data,
27005                     p_asb_rec        => l_asb_rec,
27006                     x_asb_rec        => x_asb_rec
27007                    );
27008 
27009         debug_message('okl_asset_subsidy_pvt.create_asset_subsidy: '||x_return_status);
27010 
27011         IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
27012            RAISE subsidy_failed;
27013         END IF;
27014 
27015         -- refund detail if any
27016         IF (subsidy_rec.subsidy_refnd_paysite_id IS NOT NULL
27017             OR
27018             subsidy_rec.subsidy_refnd_paysite_code IS NOT NULL
27019             OR
27020             subsidy_rec.subsidy_refnd_payterm_id IS NOT NULL
27021             OR
27022             subsidy_rec.subsidy_refnd_payterm_name IS NOT NULL
27023             OR
27024             subsidy_rec.subsidy_refnd_paymethod_code IS NOT NULL) THEN
27025 
27026            IF (subsidy_rec.subsidy_refnd_paysite_id IS NOT NULL) THEN
27027                l_paysite_id := subsidy_rec.subsidy_refnd_paysite_id;
27028            ELSIF (subsidy_rec.subsidy_refnd_paysite_code IS NOT NULL) THEN
27029               -- get pay site id
27030               OPEN paysite_csr(subsidy_rec.subsidy_refnd_paysite_code,
27031                                l_vendor_id,
27032                                p_auth_org_id);
27033               FETCH paysite_csr INTO l_paysite_id;
27034               IF paysite_csr%NOTFOUND THEN
27035                 -- error
27036                 okl_api.set_message(
27037                                     G_APP_NAME,
27038                                     G_INVALID_VALUE,
27039                                     'CONTRACT_NUM',
27040                                     p_contract_num||'/'||subsidy_rec.line_number,
27041                                     'COL_NAME',
27042                                     'SUBSIDY_REFND_PAYSITE_ID, CODE',
27043                                     'COL_VALUE',
27044                                      subsidy_rec.subsidy_refnd_paysite_id||', '||subsidy_rec.subsidy_refnd_paysite_code
27045                                    );
27046                 RAISE subsidy_failed;
27047               END IF;
27048               CLOSE paysite_csr;
27049            ELSE
27050               okl_api.set_message(
27051                                   G_APP_NAME,
27052                                   G_MISSING_VALUE_FOR_LINE,
27053                                   'CONTRACT_NUM',
27054                                   p_contract_num||'/'||subsidy_rec.line_number,
27055                                   'COL_NAME',
27056                                   'SUBSIDY_REFND_PAYSITE_ID/CODE'
27057                                  );
27058               RAISE subsidy_failed;
27059            END IF;
27060 
27061            IF (subsidy_rec.subsidy_refnd_payterm_id IS NOT NULL) THEN
27062                l_payterm_id := subsidy_rec.subsidy_refnd_payterm_id;
27063            ELSIF (subsidy_rec.subsidy_refnd_payterm_name IS NOT NULL) THEN
27064                -- get payterm id
27065               OPEN payterm_csr(subsidy_rec.subsidy_refnd_payterm_name);
27066               FETCH payterm_csr INTO l_payterm_id;
27067               IF payterm_csr%NOTFOUND THEN
27068                 -- error
27069                 okl_api.set_message(
27070                                     G_APP_NAME,
27071                                     G_INVALID_VALUE,
27072                                     'CONTRACT_NUM',
27073                                     p_contract_num||'/'||subsidy_rec.line_number,
27074                                     'COL_NAME',
27075                                     'SUBSIDY_REFND_PAYTERM_ID, NAME',
27076                                     'COL_VALUE',
27077                                      subsidy_rec.subsidy_refnd_payterm_id||', '||subsidy_rec.subsidy_refnd_payterm_name
27078                                    );
27079                 RAISE subsidy_failed;
27080               END IF;
27081               CLOSE payterm_csr;
27082            ELSE
27083               okl_api.set_message(
27084                                   G_APP_NAME,
27085                                   G_MISSING_VALUE_FOR_LINE,
27086                                   'CONTRACT_NUM',
27087                                   p_contract_num||'/'||subsidy_rec.line_number,
27088                                   'COL_NAME',
27089                                   'SUBSIDY_REFND_PAYTERM_ID/NAME'
27090                                  );
27091               RAISE subsidy_failed;
27092            END IF;
27093 
27094            l_srfvv_rec.cpl_id              := x_asb_rec.cpl_id;
27095            l_srfvv_rec.vendor_id           := l_vendor_id;
27096            l_srfvv_rec.pay_site_id         := l_paysite_id;
27097            l_srfvv_rec.payment_term_id     := l_payterm_id;
27098            l_srfvv_rec.payment_method_code := subsidy_rec.subsidy_refnd_paymethod_code;
27099            l_srfvv_rec.pay_group_code      := subsidy_rec.subsidy_refnd_paygroup_code;
27100 
27101            debug_message('l_srfvv_rec.cpl_id: '||l_srfvv_rec.cpl_id);
27102            debug_message('l_srfvv_rec.vendor_id: '||l_srfvv_rec.vendor_id);
27103            debug_message('l_srfvv_rec.pay_site_id: '||l_srfvv_rec.pay_site_id);
27104            debug_message('l_srfvv_rec.payment_term_id: '||l_srfvv_rec.payment_term_id);
27105            debug_message('l_srfvv_rec.payment_method_code: '||l_srfvv_rec.payment_method_code);
27106            debug_message('l_srfvv_rec.pay_group_code: '||l_srfvv_rec.pay_group_code);
27107 
27108            okl_subsidy_rfnd_dtls_pvt.create_refund_dtls(
27109                      p_api_version    => 1.0,
27110                      p_init_msg_list  => OKL_API.G_FALSE,
27111                      x_return_status  => x_return_status,
27112                      x_msg_count      => x_msg_count,
27113                      x_msg_data       => x_msg_data,
27114                      p_srfvv_rec      => l_srfvv_rec,
27115                      x_srfvv_rec      => x_srfvv_rec
27116                     );
27117 
27118            debug_message('okl_subsidy_rfnd_dtls_pvt.create_refund_dtls: '||x_return_status);
27119            IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
27120               RAISE subsidy_failed;
27121            END IF;
27122 
27123         END IF; -- refund detail
27124 
27125       END LOOP; --subsidy_rec
27126 
27127    EXCEPTION
27128       WHEN subsidy_failed THEN
27129          x_return_status := OKL_API.G_RET_STS_ERROR;
27130    END process_subsidy;
27131 
27132 ------------------------------------------------------------------------------
27133 -- PROCEDURE check_and_delete
27134 -- This procedure deletes contracts from OLM and
27135 -- stacks Error, if any, and returns ERROR status to calling process.
27136 -- Calls:
27137 ------------------------------------------------------------------------------
27138 
27139    PROCEDURE check_and_delete(
27140                        x_return_status   OUT NOCOPY VARCHAR2,
27141                        x_msg_count       OUT NOCOPY NUMBER,
27142                        x_msg_data        OUT NOCOPY VARCHAR2,
27143                        p_contract_number IN  varchar2,
27144                        p_delete_before_import_yn IN  varchar2 -- akp_delete
27145                       ) IS
27146 
27147     l_proc_name VARCHAR2(35) := 'CHECK_AND_DELETE';
27148     l_contract_id okc_k_headers_b.id%type;
27149 
27150     cursor get_contract_id(p_contract_no varchar2) is
27151       select id
27152       from okc_k_headers_b
27153       where  contract_number = p_contract_no;
27154 
27155     -- udhenuko Bug#5666768 Start
27156     l_ipyv_rec okl_ipy_pvt.ipyv_rec_type;
27157     l_ins_id    okl_ins_policies_b.id%TYPE;
27158     cursor get_ins_id_csr(p_khr_id in number) is
27159     select id
27160     from okl_ins_policies_b where khr_id=p_khr_id;
27161     --Bug#5666768 end
27162 
27163     BEGIN
27164        x_return_status := OKL_API.G_RET_STS_SUCCESS;
27165        debug_message(l_proc_name);
27166 
27167        if (p_contract_number is null) then
27168          return;
27169        end if;
27170 
27171        if (upper(nvl(p_delete_before_import_yn, 'N')) <> 'Y') then
27172          return;
27173        end if;
27174 
27175        debug_message('Contract ' || p_contract_number || ' picked up for delete...');
27176        open get_contract_id(p_contract_number);
27177        fetch get_contract_id into l_contract_id;
27178        if get_contract_id%notfound then
27179          close get_contract_id;
27180          debug_message('Contract ' || p_contract_number || ' not found in OLM for delete...');
27181          return;
27182        else
27183          close get_contract_id;
27184 
27185          -- Call Delete API
27186          okl_contract_pub.delete_contract(
27187           p_api_version   => 1.0,
27188           p_init_msg_list => OKL_API.G_FALSE,
27189           x_return_status => x_return_status,
27190           x_msg_count     => x_msg_count,
27191           x_msg_data      => x_msg_data,
27192           p_contract_id   => l_contract_id );
27193          IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
27194            debug_message('Contract ' || p_contract_number || ' deleted from OLM...');
27195          ELSE
27196            debug_message('Error during delete contract ' || p_contract_number );
27197          END IF;
27198 
27199        --Bug#5666768 - Start. Invoke the TAPI
27200          open get_ins_id_csr(l_contract_id);
27201          fetch get_ins_id_csr into l_ins_id;
27202          if get_ins_id_csr%notfound then
27203             close get_ins_id_csr;
27204        	    debug_message('Insurance Policy for Contract ' || p_contract_number || ' not found..');
27205             return;
27206 	 end if;
27207          close get_ins_id_csr;
27208          l_ipyv_rec.id:=l_ins_id;
27209          OKL_INS_POLICIES_PUB.delete_ins_policies(p_api_version   => 1.0,
27210                                                   p_init_msg_list => OKL_API.G_FALSE,
27211                                                   x_return_status => x_return_status,
27212                                                   x_msg_count     => x_msg_count,
27213                                                   x_msg_data      => x_msg_data,
27214                                                   p_ipyv_rec      => l_ipyv_rec);
27215          IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
27216            debug_message('Contract ' || p_contract_number || ' deleted from OLM after delete_ins_policies...');
27217          ELSE
27218            debug_message('Error during  OKL_INS_POLICIES_PUB.delete_ins_policies ' || p_contract_number );
27219          END IF;
27220        end if;
27221        --Bug#5666768 end
27222 
27223     END check_and_delete;
27224 
27225 ------------------------------------------------------------------------------
27226 -- PROCEDURE Load_Input_Record
27227 -- It Reads data from Interface Tables and Validates. During process of validation it
27228 -- stacks Error, if any, and returns ERROR status to calling process.
27229 -- Calls:
27230 --  get_agreement_id
27231 --  get_product_id
27232 --  create_party_role
27233 --  create_contact
27234 --  create_header_rules
27235 --  get_lse_id
27236 --  get_inventory_org_item_id
27237 --  get_asset_id
27238 --  get_install_site_id
27239 --  process_other_line
27240 --  create_line_rules
27241 --  process_party_role
27242 --  process_term
27243 --  create_payment_rule_group
27244 --  check_payment_frequency_code
27245 --  create_payment_other_rules
27246 --  report_error
27247 --  update_interface_status
27248 -- Called By:
27249 --  process_record
27250 ------------------------------------------------------------------------------
27251   PROCEDURE Load_Input_Record(
27252                             p_init_msg_list    IN VARCHAR2,
27253                             x_return_status    OUT NOCOPY VARCHAR2,
27254                             x_msg_count        OUT NOCOPY NUMBER,
27255                             x_msg_data         OUT NOCOPY VARCHAR2,
27256                             p_batch_number     IN  VARCHAR2,
27257                             p_start_date_from  IN  DATE,
27258                             p_start_date_to    IN  DATE,
27259                             p_contract_number  IN  VARCHAR2,
27260                             p_customer_number  IN  VARCHAR2,
27261                             x_total_loaded     OUT NOCOPY NUMBER
27262                            ) IS
27263 
27264   -- local variables
27265   l_proc_name           VARCHAR2(35)  := 'LOAD_INPUT_RECORD';
27266   l_progress            VARCHAR2(3)   := NULL;
27267   x_master_lease_id     OKC_K_HEADERS_V.ID%TYPE;
27268   x_customer_account_id NUMBER;
27269   x_inventory_org_id    NUMBER;
27270   x_inventory_item_id   NUMBER;
27271   x_lse_id              NUMBER;
27272   x_id1                 okx_assets_v.id1%TYPE;
27273   x_id2                 okx_assets_v.id2%TYPE;
27274   l_no_of_lines         NUMBER;
27275   l_ib_line_count       NUMBER;
27276 --  l_new_yn              VARCHAR2(1);
27277   x_comb_id             NUMBER;
27278   x_rgp_id              NUMBER;
27279   l_contract_number_old_prev okl_header_interface.contract_number_old%TYPE;
27280   l_line_number_prev    okl_lines_interface.line_number%TYPE;
27281   l_asset_number_prev   okl_payments_interface.asset_number%TYPE;
27282   l_payment_type_code_prev   okl_payments_interface.payment_type_code%TYPE;
27283   l_pmnt_sch_num_prev   NUMBER;
27284   l_start_date_prev     DATE;
27285   l_number_of_periods_prev NUMBER;
27286   x_pmnt_freq_id        okx_tuom_v.id1%TYPE;
27287   x_uom_code            okx_tuom_v.uom_code%TYPE;
27288   l_mult_factor         NUMBER;
27289   l_current_start_date  DATE;
27290   x_install_site_id     okx_party_site_uses_v.id1%TYPE;
27291   l_rule_create_flag    VARCHAR2(1) := 'Y';
27292 
27293   x_inv_item_id_prev    NUMBER;
27294   p_inv_item_id_prev    NUMBER;
27295   p_line_type_prev      VARCHAR2(35);
27296   x_ship_to_site_id     okx_party_site_uses_v.id1%TYPE;
27297   l_rg_id               NUMBER;
27298 
27299   x_cle_id              okc_k_lines_v.id%TYPE;
27300   p_cle_id              okc_k_lines_v.id%TYPE;
27301 
27302   -- Header Rec
27303   p_chrv_rec        chrv_rec_type;
27304   p_khrv_rec        khrv_rec_type;
27305   x_chrv_rec        chrv_rec_type;
27306   x_khrv_rec        khrv_rec_type;
27307 
27308   l_chrv_rec        chrv_rec_type;
27309   l_khrv_rec        khrv_rec_type;
27310 
27311   l_gvev_rec        gvev_rec_type;
27312   x_gvev_rec        gvev_rec_type;
27313 
27314   -- Party Role Rec
27315   p_cplv_rec        cplv_rec_type;
27316   x_cplv_rec        cplv_rec_type;
27317 
27318   -- Lines Rec
27319   p_clev_fin_rec   clev_rec_type;
27320   p_klev_fin_rec   klev_rec_type;
27321   p_cimv_model_rec cimv_rec_type;
27322   p_clev_fa_rec    clev_rec_type;
27323   p_cimv_fa_rec    cimv_rec_type;
27324   p_talv_fa_rec    talv_rec_type;
27325   p_itiv_ib_tbl    itiv_tbl_type;
27326   p_sidv_rec       sidv_rec_type;
27327   x_sidv_rec       sidv_rec_type;
27328 
27329   x_clev_fin_rec   clev_rec_type;
27330   x_clev_model_rec clev_rec_type;
27331   x_clev_fa_rec    clev_rec_type;
27332   x_clev_ib_rec    clev_rec_type;
27333 
27334   l_talv_rec       tlpv_rec_type;
27335   x_talv_rec       tlpv_rec_type;
27336 
27337   x_slh_rulv_rec   rulv_rec_type;
27338 
27339   l_adpv_rec      adpv_rec_type;
27340   x_adpv_rec      adpv_rec_type;
27341   l_tal_id        NUMBER;
27342 
27343   l_msg_tbl       Okl_Qa_Check_Pub.msg_tbl_type;
27344 
27345   l_intf_h_rec      intf_h_rec_type;
27346   okl_header_rec    intf_h_rec_type; --cklee
27347 
27348   l_header_template template_h_rec_type; -- Header template record
27349 
27350   l_service_line_id        OKC_K_LINES_V.ID%TYPE;
27351   l_fee_line_id            OKC_K_LINES_V.ID%TYPE;
27352   l_usage_line_id          OKC_K_LINES_V.ID%TYPE;
27353 
27354   x_update_status          VARCHAR2(1);
27355   header_validation_failed EXCEPTION;
27356   line_validation_failed   EXCEPTION;
27357   load_failed              EXCEPTION;
27358     CURSOR le_entity(p_org_id NUMBER ,
27359 	p_legal_entity NUMBER) IS
27360   select 1 from
27361   xle_le_ou_ledger_v
27362   where OPERATING_UNIT_ID=p_org_id
27363   and LEGAL_ENTITY_ID=p_legal_entity; -- cusrsor to get LE for  an OU
27364 
27365 
27366   CURSOR proc_cob_csr (p_batch_number    VARCHAR2,
27367                        p_start_date_from DATE,
27368                        p_start_date_to   DATE,
27369                        p_contract_number VARCHAR2,
27370                        p_customer_number VARCHAR2 ) IS
27371 
27372   SELECT       BATCH_NUMBER
27373       ,TEMPLATE_NUMBER
27374      ,STATUS
27375      ,CREATED_BY
27376      ,DATE_CREATED
27377      ,DATE_CREATED_IN_OKL
27378      ,APPLICATION_CODE
27379      ,CONTRACT_CATEGORY
27380      ,CONTRACT_NUMBER_OLD
27381      ,CONTRACT_SOURCE
27382      ,CONTRACT_NUMBER
27383      ,CUSTOMER_NUMBER
27384      ,CUSTOMER_ID
27385      ,CUSTOMER_ACCOUNT_NUMBER
27386      ,CUSTOMER_ACCOUNT_ID
27387      ,START_DATE
27388      ,IMPORT_REQUEST_STAGE
27389      ,CURRENCY_CODE
27390      ,CUSTOMER_PO_NUMBER
27391      ,DATE_SIGNED
27392      ,DATE_APPROVED
27393      ,ACCEPTANCE_METHOD_CODE
27394      ,CONSUMER_CREDIT_ACT_DEAL_FLAG
27395      ,TERM
27396      ,CONVERTED_ACCOUNT
27397      ,ACCEPTED_DATE
27398      ,DEAL_TYPE_CODE
27399      ,EXPECTED_DELIVERY_DATE
27400      ,CONTRACT_DESCRIPTION
27401      ,SALESPERSON_NAME
27402      ,SALESPERSON_ID
27403      ,PRIVATE_LABEL_NUMBER
27404      ,PRIVATE_LABEL_ID
27405      ,PRIVATE_LABEL_URL
27406      ,PROGRAM_AGREEMENT_NUMBER
27407      ,PROGRAM_AGREEMENT_ID
27408      ,PROGRAM_VENDOR_NAME
27409      ,PROGRAM_VENDOR_ID
27410      ,MASTER_LEASE_AGREEMENT_NUMBER
27411      ,MASTER_LEASE_AGREEMENT_ID
27412      ,PRODUCT_NAME
27413      ,PRODUCT_ID
27414      ,CALCULATE_RESIDUAL_INSURANCE
27415      ,REBOOK_LIMIT_DATE
27416      ,IMPORT_REQUEST_ID
27417      ,END_OF_TERM_OPTION
27418      ,END_OF_TERM_AMOUNT
27419      ,MID_TERM_OPTION
27420      ,MID_TERM_AMOUNT
27421      ,SECURITY_DEPOSIT_HOLD_FLAG
27422      ,SECURITY_DEPOSIT_NET_FLAG
27423      ,SECURITY_DEPOSIT_DATE
27424      ,RENEWAL_NOTICE_DAYS
27425      ,RENEWAL_OPTION
27426      ,RENEWAL_AMOUNT
27427      ,LATE_INTEREST_HELD_UNTIL_DATE
27428      ,LATE_INTEREST_EXEMPT_FLAG
27429      ,LATE_INTEREST_PRODUCT_CODE
27430      ,LATE_CHARGE_HELD_UNTIL_DATE
27431      ,LATE_CHARGE_PRODUCT_CODE
27432      ,LATE_CHARGE_EXEMPT_FLAG
27433      ,VARIABLE_RATE
27434      ,CONVERT_TYPE
27435      ,CONVERSION_METHOD
27436      ,DATE_OF_CONVERSION
27437      ,CONVERT_BY_DATE
27438      ,VARIABLE_METHOD
27439      ,INDEX_NAME
27440      ,BASE_RATE
27441      ,ADDER
27442      ,MINIMUM_RATE
27443      ,MAXIMUM_RATE
27444      ,TOLERANCE
27445      ,ADJUSTMENT_FREQUENCY
27446      ,DAYS_IN_YEAR
27447      ,DAYS_IN_MONTH
27448      ,INTEREST_METHOD
27449      ,INTEREST_START_DATE
27450      ,METHOD_OF_CALCULATION
27451      ,FORMULA_NAME
27452      ,CAPITALIZE_FLAG
27453      ,NON_NOTIFICATION_FLAG
27454      ,TAX_WITHHOLDING_FLAG
27455      ,TAX_CALC_FORMULA_NAME
27456      ,TAX_OWNER
27457      ,FACTORING_DATE
27458      ,FACTORING_PERCENTAGE
27459      ,FACTORING_DISCOUNT_RATE
27460      ,EVERGREEN_ELIGIBLE_FLAG
27461      ,BILL_TO_ADDRESS_ID
27462      ,BILL_TO_ADDRESS
27463      ,BANK_ACCOUNT_ID
27464      ,BANK_ACCOUNT_NUMBER
27465      ,REASON_FOR_INVOICE_REVIEW
27466      ,INVOICE_REVIEW_UNTIL_DATE
27467      ,INVOICE_FORMAT_ID
27468      ,INVOICE_FORMAT_CODE
27469      ,PRINT_LEAD_DAYS   --hariven bug 5359935
27470      ,REVIEW_INVOICE_FLAG
27471      ,PAYMENT_METHOD_ID
27472      ,PAYMENT_METHOD
27473      ,AUTHORING_ORG_ID
27474      ,INVENTORY_ORGANIZATION_ID
27475      ,POLICY_NUMBER
27476      ,POLICY_EFFECTIVE_FROM
27477      ,POLICY_EFFECTIVE_TO
27478      ,COVERED_AMOUNT
27479      ,DEDUCTIBLE_AMOUNT
27480      ,ENDORSEMENT
27481      ,NAME_OF_INSURED
27482      ,LESSOR_INSURED_FLAG
27483      ,LESSOR_PAYEE_FLAG
27484      ,INSURANCE_COMPANY_NAME
27485      ,INSURANCE_COMPANY_ID
27486      ,INSURANCE_COMPANY_SITE_NAME
27487      ,INSURANCE_COMPANY_SITE_ID
27488      ,AGENT_NAME
27489      ,AGENT_ID
27490      ,AGENT_ADDRESS_SITE_NAME
27491      ,AGENT_ADDRESS_SITE_ID
27492      ,PROOF_DUE_DATE
27493      ,PROOF_PROVIDED_DATE
27494      ,PREFUNDING_ELIGIBLE_FLAG
27495      ,PRIVATE_ACTIVITY_BOND_FLAG
27496      ,RVI_AUTO_CALCULATE_FLAG
27497      ,RVI_GUARANTEED_AMOUNT
27498      ,RVI_PRESENT_GUARANTEED_AMOUNT
27499      ,RVI_PREMIUM_AMOUNT
27500      ,RVI_RATE
27501      ,FLOOR_PRICE_FORMULA
27502      ,REMKT_SALE_PRICE_FORMULA
27503      ,REPURCHASE_QUOTE_OPTION
27504      ,REPURCHASE_QUOTE_FORMULA
27505      ,SALE_PRICE_OPTION
27506      ,SALE_PRICE_AMOUNT
27507      ,SALE_PRICE_FORMULA
27508      ,SALE_PRICE_PRORATE
27509      ,DISCOUNT_RATE_OPTION
27510      ,DISCOUNT_RATE_AMOUNT
27511      ,DISCOUNT_RATE_FORMULA
27512      ,DISCOUNT_RATE_PRORATE
27513      ,QUOTE_FEE_OPTION
27514      ,QUOTE_FEE_AMOUNT
27515      ,QUOTE_FEE_FORMULA
27516      ,QUOTE_FEE_PRORATE
27517      ,ERT_PURCHASE_OPT
27518      ,ERT_PURCHASE_OPT_TYPE
27519      ,ERT_PURCHASE_OPT_AMOUNT
27520      ,ERT_PURCHASE_OPT_FORMULA
27521      ,ERT_PURCHASE_OPT_PRORATE
27522      ,ERT_PURCHASE_OPT_MAX_OPT
27523      ,ERT_PURCHASE_OPT_MAX_AMT
27524      ,ERT_PURCHASE_OPT_MAX_FORMULA
27525      ,ERT_PURCHASE_OPT_MIN_OPT
27526      ,ERT_PURCHASE_OPT_MIN_AMT
27527      ,ERT_PURCHASE_OPT_MIN_FORMULA
27528      ,EOT_PURCHASE_OPT
27529      ,EOT_PURCHASE_OPT_TYPE
27530      ,EOT_PURCHASE_OPT_AMOUNT
27531      ,EOT_PURCHASE_OPT_FORMULA
27532      ,EOT_PURCHASE_OPT_PRORATE
27533      ,EOT_PURCHASE_OPT_MAX_OPT
27534      ,EOT_PURCHASE_OPT_MAX_AMT
27535      ,EOT_PURCHASE_OPT_MAX_FORMULA
27536      ,EOT_PURCHASE_OPT_MIN_OPT
27537      ,EOT_PURCHASE_OPT_MIN_AMT
27538      ,EOT_PURCHASE_OPT_MIN_FORMULA
27539      ,TQP_ERL_TERMINATION_ALWD_FLAG
27540      ,TQP_PRT_TERMINATION_ALWD_FLAG
27541      ,QUOTE_EFFECTIVE_DAYS
27542      ,QUOTE_EFF_MAX_DAYS
27543      ,EOT_TOLERANCE_DAYS
27544      ,PRT_TERMINATION_APPROVAL_REQ
27545      ,PRT_TERMINATION_ALLOWED_FLAG
27546      ,GAIN_LOSS_APPROVAL_REQ
27547      ,GAIN_LOSS_NET_QUOTE_OPT
27548      ,GAIN_LOSS_NET_QUOTE_AMT
27549      ,GAIN_LOSS_NET_QUOTE_FORMULA
27550      ,GAIN_LOSS_TOLERANCE_ALLOWED
27551      ,QUOTE_RCPT_CONTRACT_ROLE
27552      ,QUOTE_APPROVER_CONTRACT_ROLE
27553      ,QUOTE_CRTSY_COPY_CONTRACT_ROLE
27554      ,ERT_QUOTE_CALC_TERM_OPTION
27555      ,ERT_QUOTE_CALC_TERM_FORMULA
27556      ,ERT_CONTRACT_OBLIG_OPT
27557      ,ERT_CONTRACT_OBLIG_AMOUNT
27558      ,ERT_CONTRACT_OBLIG_FORMULA
27559      ,ERT_CONTRACT_OBLIG_PRORATE
27560      ,ERT_DISC_RATE_OPT
27561      ,ERT_DISC_RATE_AMOUNT
27562      ,ERT_DISC_RATE_FORMULA
27563      ,ERT_DISC_RATE_PRORATE
27564      ,ERT_QUOTE_FEE_OPT
27565      ,ERT_QUOTE_FEE_AMOUNT
27566      ,ERT_QUOTE_FEE_FORMULA
27567      ,ERT_QUOTE_FEE_PRORATE
27568      ,ERT_RETURN_FEE_OPTION
27569      ,ERT_RETURN_FEE_AMOUNT
27570      ,ERT_RETURN_FEE_FORMULA
27571      ,ERT_RETURN_FEE_PRORATE
27572      ,ERT_ROLL_INCTV_OPTION
27573      ,ERT_ROLL_INCTV_AMOUNT
27574      ,ERT_ROLL_INCTV_FORMULA
27575      ,ERT_ROLL_INCTV_PRORATE
27576      ,ERT_SECU_DEP_DISPO_OPTION
27577      ,ERT_SECU_DEP_DISPO_AMOUNT
27578      ,ERT_SECU_DEP_DISPO_FORMULA
27579      ,ERT_SECU_DEP_DISPO_PRORATE
27580      ,ERT_TERM_PENALTY_OPTION
27581      ,ERT_TERM_PENALTY_AMOUNT
27582      ,ERT_TERM_PENALTY_FORMULA
27583      ,ERT_TERM_PENALTY_PRORATE
27584      ,ERT_TERM_PENALTY_CAP_OPTION
27585      ,ERT_TERM_PENALTY_CAP_AMOUNT
27586      ,ERT_TERM_PENALTY_CAP_FORMULA
27587      ,ERT_EST_PROP_TAX_OPTION
27588      ,ERT_EST_PROP_TAX_AMOUNT
27589      ,ERT_EST_PROP_TAX_FORMULA
27590      ,ERT_EST_PROP_TAX_PRORATE
27591      ,ERT_CONTR_FEES_OPTION
27592      ,ERT_OUTSTND_BAL_OPTION
27593      ,ERT_SERV_MANT_OPTION
27594      ,EOT_QUOTE_CALC_TERM_OPTION
27595      ,EOT_QUOTE_CALC_TERM_FORMULA
27596      ,EOT_CONTRACT_OBLIG_OPT
27597      ,EOT_CONTRACT_OBLIG_AMOUNT
27598      ,EOT_CONTRACT_OBLIG_FORMULA
27599      ,EOT_CONTRACT_OBLIG_PRORATE
27600      ,EOT_DISC_RATE_OPT
27601      ,EOT_DISC_RATE_AMOUNT
27602      ,EOT_DISC_RATE_FORMULA
27603      ,EOT_DISC_RATE_PRORATE
27604      ,EOT_QUOTE_FEE_OPT
27605      ,EOT_QUOTE_FEE_AMOUNT
27606      ,EOT_QUOTE_FEE_FORMULA
27607      ,EOT_QUOTE_FEE_PRORATE
27608      ,EOT_RETURN_FEE_OPTION
27609      ,EOT_RETURN_FEE_AMOUNT
27610      ,EOT_RETURN_FEE_FORMULA
27611      ,EOT_RETURN_FEE_PRORATE
27612      ,EOT_ROLL_INCTV_OPTION
27613      ,EOT_ROLL_INCTV_AMOUNT
27614      ,EOT_ROLL_INCTV_FORMULA
27615      ,EOT_ROLL_INCTV_PRORATE
27616      ,EOT_SECU_DEP_DISPO_OPTION
27617      ,EOT_SECU_DEP_DISPO_AMOUNT
27618      ,EOT_SECU_DEP_DISPO_FORMULA
27619      ,EOT_SECU_DEP_DISPO_PRORATE
27620      ,EOT_TERM_PENALTY_OPTION
27621      ,EOT_TERM_PENALTY_AMOUNT
27622      ,EOT_TERM_PENALTY_FORMULA
27623      ,EOT_TERM_PENALTY_PRORATE
27624      ,EOT_TERM_PENALTY_CAP_OPTION
27625      ,EOT_TERM_PENALTY_CAP_AMOUNT
27626      ,EOT_TERM_PENALTY_CAP_FORMULA
27627      ,EOT_EST_PROP_TAX_OPTION
27628      ,EOT_EST_PROP_TAX_AMOUNT
27629      ,EOT_EST_PROP_TAX_FORMULA
27630      ,EOT_EST_PROP_TAX_PRORATE
27631      ,EOT_CONTR_FEES_OPTION
27632      ,EOT_OUTSTND_BAL_OPTION
27633      ,EOT_SERV_MANT_OPTION
27634      ,EVERGREEN_PASSTHRU_FEES
27635      ,EVERGREEN_PASSTHRU_PERCENT
27636      ,LIEN_TYPE
27637      ,FILING_NUMBER
27638      ,FILING_DATE
27639      ,FILING_STATUS
27640      ,LIEN_HOLDER_NAME
27641      ,LIEN_HOLDER_ID
27642      ,JURISDICTION
27643      ,SUB_JURISDICTION
27644      ,LIEN_EXPIRATION_DATE
27645      ,LIEN_CONTINUATION_NUMBER
27646      ,LIEN_CONTINUATION_DATE
27647      ,TITLE_TYPE
27648      ,TITLE_ISSUER_NAME
27649      ,TITLE_ISSUER_ID
27650      ,TITLE_DATE
27651      ,TITLE_NUMBER
27652      ,REGISTRATION_NUMBER
27653      ,LOCATION
27654      ,TITLE_CUSTODIAN_NAME
27655      ,TITLE_CUSTODIAN_ID
27656      ,PAYEE_SITE
27657      ,REGISTRATION_LOCATION
27658      ,REG_EXPIRATION_DATE
27659      ,CREDIT_LINE_ID
27660      ,CREDIT_LINE_NUMBER
27661      ,PRTFL_APPROVAL_REQ
27662      ,PRTFL_ASSGN_GROUP
27663      ,PRTFL_BUDGET_AMT_OPT
27664      ,PRTFL_BUDGET_FIXED_AMT
27665      ,PRTFL_BUDGET_AMT_FORMULA
27666      ,PRTFL_DAYS_FROM_CON_EXPR
27667      ,PRTFL_STRATEGY
27668      ,PROP_TAX_APPLICABLE
27669      ,PROP_TAX_LEASE_REP
27670      ,MEX_TAX_SUB_BASIC_WTHLD
27671      ,MEX_TAX_CALC_FORMULA
27672      ,AUS_TAX_STAMP_DUTY
27673      ,CURRENCY_CONVERSION_TYPE
27674      ,CURRENCY_CONVERSION_RATE
27675      ,CURRENCY_CONVERSION_DATE
27676      ,ASSIGNABLE_YN
27677      ,LESSEE_VENDOR_ID
27678      ,LESSEE_VENDOR_NAME
27679      ,LESSEE_VENDOR_SITE_ID
27680      ,LESSEE_VENDOR_SITE_CODE
27681      ,INSURANCE_COMPANY_NUMBER
27682      ,INSURANCE_COMPANY_SITE_NUMBER
27683      ,AGENT_NUMBER
27684      ,AGENT_ADDRESS_SITE_NUMBER
27685      ,CASH_APPL_RULE_NAME
27686      ,PROP_TAX_BILL_METHOD
27687      ,GAIN_LOSS_TOLRNC_ALLWD_AMT
27688      ,GAIN_LOSS_TOLRNC_ALLWD_FRML
27689      ,GAIN_LOSS_TOLRNC_BASIS
27690      ,GAIN_LOSS_APPRV_PROC_FRML
27691      ,ERT_ABSORBED_FEE_FRML
27692      ,ERT_EXPENSE_FEE_FRML
27693      ,ERT_FINANCED_FEE_FRML
27694      ,ERT_GENERAL_FEE_FRML
27695      ,ERT_INCOME_FEE_FRML
27696      ,ERT_MISC_FEE_FRML
27697      ,ERT_PASSTHRU_FEE_FRML
27698      ,ERT_ROLLOVER_FEE_FRML
27699      ,EOT_ABSORBED_FEE_FRML
27700      ,EOT_EXPENSE_FEE_FRML
27701      ,EOT_FINANCED_FEE_FRML
27702      ,EOT_GENERAL_FEE_FRML
27703      ,EOT_INCOME_FEE_FRML
27704      ,EOT_MISC_FEE_FRML
27705      ,EOT_PASSTHRU_FEE_FRML
27706      ,EOT_ROLLOVER_FEE_FRML
27707      ,DELETE_BEFORE_IMPORT_YN
27708      ,ST_UPDATE_LINES_FROM_CONTRACT
27709      ,ST_INTEREST_DISCLOSED
27710      ,ST_TRANSFER_OF_TITLE
27711      ,ST_SALE_AND_LEASE_BACK
27712      ,ST_PURCHASE_OF_LEASE
27713      ,ST_EQUIPMENT_USAGE
27714      ,ST_EQUIPMENT_AGE
27715      ,ST_ASSET_UPFRONT_TAX
27716      ,ST_BILL_STREAM_TYPE_CODE
27717      ,ST_BILL_STREAM_PURPOSE_CODE
27718      ,ST_FIN_STREAM_TYPE_CODE
27719      ,ST_FIN_STREAM_PURPOSE_CODE
27720      ,ST_CAP_STREAM_TYPE_CODE
27721      ,ST_CAP_STREAM_PURPOSE_CODE
27722      ,ST_TAX_SCHEDULE_APPLIES_FLAG
27723   FROM   okl_header_interface
27724   WHERE  (
27725           batch_number        = p_batch_number
27726           OR
27727           contract_number_old = p_contract_number
27728           OR
27729           (
27730            customer_number    = p_customer_number
27731            AND
27732            start_date         between p_start_date_from AND p_start_date_to
27733           )
27734          )
27735   AND    nvl(scheduled_worker_id,'NONE') = g_instance_number
27736   AND    status = 'INTERFACED'
27737   AND    import_request_stage <> 'NEW' ; --Process INTERFACED contract upto import_request_stage
27738 
27739   --
27740   -- Cursor to fetch Header Interface Records
27741   --
27742 
27743   CURSOR okl_header_csr (p_batch_number    VARCHAR2,
27744                          p_start_date_from DATE,
27745                          p_start_date_to   DATE,
27746                          p_contract_number VARCHAR2,
27747                          p_customer_number VARCHAR2 ) IS
27748 
27749   SELECT
27750       BATCH_NUMBER
27751      ,TEMPLATE_NUMBER
27752      ,STATUS
27753      ,CREATED_BY
27754      ,DATE_CREATED
27755      ,DATE_CREATED_IN_OKL
27756      ,APPLICATION_CODE
27757      ,CONTRACT_CATEGORY
27758      ,CONTRACT_NUMBER_OLD
27759      ,CONTRACT_SOURCE
27760      ,CONTRACT_NUMBER
27761      ,CUSTOMER_NUMBER
27762      ,CUSTOMER_ID
27763      ,CUSTOMER_ACCOUNT_NUMBER
27764      ,CUSTOMER_ACCOUNT_ID
27765      ,START_DATE
27766      ,IMPORT_REQUEST_STAGE
27767      ,CURRENCY_CODE
27768      ,CUSTOMER_PO_NUMBER
27769      ,DATE_SIGNED
27770      ,DATE_APPROVED
27771      ,ACCEPTANCE_METHOD_CODE
27772      ,CONSUMER_CREDIT_ACT_DEAL_FLAG
27773      ,TERM
27774      ,CONVERTED_ACCOUNT
27775      ,ACCEPTED_DATE
27776      ,DEAL_TYPE_CODE
27777      ,EXPECTED_DELIVERY_DATE
27778      ,CONTRACT_DESCRIPTION
27779      ,SALESPERSON_NAME
27780      ,SALESPERSON_ID
27781      ,PRIVATE_LABEL_NUMBER
27782      ,PRIVATE_LABEL_ID
27783      ,PRIVATE_LABEL_URL
27784      ,PROGRAM_AGREEMENT_NUMBER
27785      ,PROGRAM_AGREEMENT_ID
27786      ,PROGRAM_VENDOR_NAME
27787      ,PROGRAM_VENDOR_ID
27788      ,MASTER_LEASE_AGREEMENT_NUMBER
27789      ,MASTER_LEASE_AGREEMENT_ID
27790      ,PRODUCT_NAME
27791      ,PRODUCT_ID
27792      ,CALCULATE_RESIDUAL_INSURANCE
27793      ,REBOOK_LIMIT_DATE
27794      ,IMPORT_REQUEST_ID
27795      ,END_OF_TERM_OPTION
27796      ,END_OF_TERM_AMOUNT
27797      ,MID_TERM_OPTION
27798      ,MID_TERM_AMOUNT
27799      ,SECURITY_DEPOSIT_HOLD_FLAG
27800      ,SECURITY_DEPOSIT_NET_FLAG
27801      ,SECURITY_DEPOSIT_DATE
27802      ,RENEWAL_NOTICE_DAYS
27803      ,RENEWAL_OPTION
27804      ,RENEWAL_AMOUNT
27805      ,LATE_INTEREST_HELD_UNTIL_DATE
27806      ,LATE_INTEREST_EXEMPT_FLAG
27807      ,LATE_INTEREST_PRODUCT_CODE
27808      ,LATE_CHARGE_HELD_UNTIL_DATE
27809      ,LATE_CHARGE_PRODUCT_CODE
27810      ,LATE_CHARGE_EXEMPT_FLAG
27811      ,VARIABLE_RATE
27812      ,CONVERT_TYPE
27813      ,CONVERSION_METHOD
27814      ,DATE_OF_CONVERSION
27815      ,CONVERT_BY_DATE
27816      ,VARIABLE_METHOD
27817      ,INDEX_NAME
27818      ,BASE_RATE
27819      ,ADDER
27820      ,MINIMUM_RATE
27821      ,MAXIMUM_RATE
27822      ,TOLERANCE
27823      ,ADJUSTMENT_FREQUENCY
27824      ,DAYS_IN_YEAR
27825      ,DAYS_IN_MONTH
27826      ,INTEREST_METHOD
27827      ,INTEREST_START_DATE
27828      ,METHOD_OF_CALCULATION
27829      ,FORMULA_NAME
27830      ,CAPITALIZE_FLAG
27831      ,NON_NOTIFICATION_FLAG
27832      ,TAX_WITHHOLDING_FLAG
27833      ,TAX_CALC_FORMULA_NAME
27834      ,TAX_OWNER
27835      ,FACTORING_DATE
27836      ,FACTORING_PERCENTAGE
27837      ,FACTORING_DISCOUNT_RATE
27838      ,EVERGREEN_ELIGIBLE_FLAG
27839      ,BILL_TO_ADDRESS_ID
27840      ,BILL_TO_ADDRESS
27841      ,BANK_ACCOUNT_ID
27842      ,BANK_ACCOUNT_NUMBER
27843      ,REASON_FOR_INVOICE_REVIEW
27844      ,INVOICE_REVIEW_UNTIL_DATE
27845      ,INVOICE_FORMAT_ID
27846      ,INVOICE_FORMAT_CODE
27847      ,PRINT_LEAD_DAYS --hariven bug 5359935
27848      ,REVIEW_INVOICE_FLAG
27849      ,PAYMENT_METHOD_ID
27850      ,PAYMENT_METHOD
27851      ,AUTHORING_ORG_ID
27852      ,INVENTORY_ORGANIZATION_ID
27853      ,POLICY_NUMBER
27854      ,POLICY_EFFECTIVE_FROM
27855      ,POLICY_EFFECTIVE_TO
27856      ,COVERED_AMOUNT
27857      ,DEDUCTIBLE_AMOUNT
27858      ,ENDORSEMENT
27859      ,NAME_OF_INSURED
27860      ,LESSOR_INSURED_FLAG
27861      ,LESSOR_PAYEE_FLAG
27862      ,INSURANCE_COMPANY_NAME
27863      ,INSURANCE_COMPANY_ID
27864      ,INSURANCE_COMPANY_SITE_NAME
27865      ,INSURANCE_COMPANY_SITE_ID
27866      ,AGENT_NAME
27867      ,AGENT_ID
27868      ,AGENT_ADDRESS_SITE_NAME
27869      ,AGENT_ADDRESS_SITE_ID
27870      ,PROOF_DUE_DATE
27871      ,PROOF_PROVIDED_DATE
27872      ,PREFUNDING_ELIGIBLE_FLAG
27873      ,PRIVATE_ACTIVITY_BOND_FLAG
27874      ,RVI_AUTO_CALCULATE_FLAG
27875      ,RVI_GUARANTEED_AMOUNT
27876      ,RVI_PRESENT_GUARANTEED_AMOUNT
27877      ,RVI_PREMIUM_AMOUNT
27878      ,RVI_RATE
27879      ,FLOOR_PRICE_FORMULA
27880      ,REMKT_SALE_PRICE_FORMULA
27881      ,REPURCHASE_QUOTE_OPTION
27882      ,REPURCHASE_QUOTE_FORMULA
27883      ,SALE_PRICE_OPTION
27884      ,SALE_PRICE_AMOUNT
27885      ,SALE_PRICE_FORMULA
27886      ,SALE_PRICE_PRORATE
27887      ,DISCOUNT_RATE_OPTION
27888      ,DISCOUNT_RATE_AMOUNT
27889      ,DISCOUNT_RATE_FORMULA
27890      ,DISCOUNT_RATE_PRORATE
27891      ,QUOTE_FEE_OPTION
27892      ,QUOTE_FEE_AMOUNT
27893      ,QUOTE_FEE_FORMULA
27894      ,QUOTE_FEE_PRORATE
27895      ,ERT_PURCHASE_OPT
27896      ,ERT_PURCHASE_OPT_TYPE
27897      ,ERT_PURCHASE_OPT_AMOUNT
27898      ,ERT_PURCHASE_OPT_FORMULA
27899      ,ERT_PURCHASE_OPT_PRORATE
27900      ,ERT_PURCHASE_OPT_MAX_OPT
27901      ,ERT_PURCHASE_OPT_MAX_AMT
27902      ,ERT_PURCHASE_OPT_MAX_FORMULA
27903      ,ERT_PURCHASE_OPT_MIN_OPT
27904      ,ERT_PURCHASE_OPT_MIN_AMT
27905      ,ERT_PURCHASE_OPT_MIN_FORMULA
27906      ,EOT_PURCHASE_OPT
27907      ,EOT_PURCHASE_OPT_TYPE
27908      ,EOT_PURCHASE_OPT_AMOUNT
27909      ,EOT_PURCHASE_OPT_FORMULA
27910      ,EOT_PURCHASE_OPT_PRORATE
27911      ,EOT_PURCHASE_OPT_MAX_OPT
27912      ,EOT_PURCHASE_OPT_MAX_AMT
27913      ,EOT_PURCHASE_OPT_MAX_FORMULA
27914      ,EOT_PURCHASE_OPT_MIN_OPT
27915      ,EOT_PURCHASE_OPT_MIN_AMT
27916      ,EOT_PURCHASE_OPT_MIN_FORMULA
27917      ,TQP_ERL_TERMINATION_ALWD_FLAG
27918      ,TQP_PRT_TERMINATION_ALWD_FLAG
27919      ,QUOTE_EFFECTIVE_DAYS
27920      ,QUOTE_EFF_MAX_DAYS
27921      ,EOT_TOLERANCE_DAYS
27922      ,PRT_TERMINATION_APPROVAL_REQ
27923      ,PRT_TERMINATION_ALLOWED_FLAG
27924      ,GAIN_LOSS_APPROVAL_REQ
27925      ,GAIN_LOSS_NET_QUOTE_OPT
27926      ,GAIN_LOSS_NET_QUOTE_AMT
27927      ,GAIN_LOSS_NET_QUOTE_FORMULA
27928      ,GAIN_LOSS_TOLERANCE_ALLOWED
27929      ,QUOTE_RCPT_CONTRACT_ROLE
27930      ,QUOTE_APPROVER_CONTRACT_ROLE
27931      ,QUOTE_CRTSY_COPY_CONTRACT_ROLE
27932      ,ERT_QUOTE_CALC_TERM_OPTION
27933      ,ERT_QUOTE_CALC_TERM_FORMULA
27934      ,ERT_CONTRACT_OBLIG_OPT
27935      ,ERT_CONTRACT_OBLIG_AMOUNT
27936      ,ERT_CONTRACT_OBLIG_FORMULA
27937      ,ERT_CONTRACT_OBLIG_PRORATE
27938      ,ERT_DISC_RATE_OPT
27939      ,ERT_DISC_RATE_AMOUNT
27940      ,ERT_DISC_RATE_FORMULA
27941      ,ERT_DISC_RATE_PRORATE
27942      ,ERT_QUOTE_FEE_OPT
27943      ,ERT_QUOTE_FEE_AMOUNT
27944      ,ERT_QUOTE_FEE_FORMULA
27945      ,ERT_QUOTE_FEE_PRORATE
27946      ,ERT_RETURN_FEE_OPTION
27947      ,ERT_RETURN_FEE_AMOUNT
27948      ,ERT_RETURN_FEE_FORMULA
27949      ,ERT_RETURN_FEE_PRORATE
27950      ,ERT_ROLL_INCTV_OPTION
27951      ,ERT_ROLL_INCTV_AMOUNT
27952      ,ERT_ROLL_INCTV_FORMULA
27953      ,ERT_ROLL_INCTV_PRORATE
27954      ,ERT_SECU_DEP_DISPO_OPTION
27955      ,ERT_SECU_DEP_DISPO_AMOUNT
27956      ,ERT_SECU_DEP_DISPO_FORMULA
27957      ,ERT_SECU_DEP_DISPO_PRORATE
27958      ,ERT_TERM_PENALTY_OPTION
27959      ,ERT_TERM_PENALTY_AMOUNT
27960      ,ERT_TERM_PENALTY_FORMULA
27961      ,ERT_TERM_PENALTY_PRORATE
27962      ,ERT_TERM_PENALTY_CAP_OPTION
27963      ,ERT_TERM_PENALTY_CAP_AMOUNT
27964      ,ERT_TERM_PENALTY_CAP_FORMULA
27965      ,ERT_EST_PROP_TAX_OPTION
27966      ,ERT_EST_PROP_TAX_AMOUNT
27967      ,ERT_EST_PROP_TAX_FORMULA
27968      ,ERT_EST_PROP_TAX_PRORATE
27969      ,ERT_CONTR_FEES_OPTION
27970      ,ERT_OUTSTND_BAL_OPTION
27971      ,ERT_SERV_MANT_OPTION
27972      ,EOT_QUOTE_CALC_TERM_OPTION
27973      ,EOT_QUOTE_CALC_TERM_FORMULA
27974      ,EOT_CONTRACT_OBLIG_OPT
27975      ,EOT_CONTRACT_OBLIG_AMOUNT
27976      ,EOT_CONTRACT_OBLIG_FORMULA
27977      ,EOT_CONTRACT_OBLIG_PRORATE
27978      ,EOT_DISC_RATE_OPT
27979      ,EOT_DISC_RATE_AMOUNT
27980      ,EOT_DISC_RATE_FORMULA
27981      ,EOT_DISC_RATE_PRORATE
27982      ,EOT_QUOTE_FEE_OPT
27983      ,EOT_QUOTE_FEE_AMOUNT
27984      ,EOT_QUOTE_FEE_FORMULA
27985      ,EOT_QUOTE_FEE_PRORATE
27986      ,EOT_RETURN_FEE_OPTION
27987      ,EOT_RETURN_FEE_AMOUNT
27988      ,EOT_RETURN_FEE_FORMULA
27989      ,EOT_RETURN_FEE_PRORATE
27990      ,EOT_ROLL_INCTV_OPTION
27991      ,EOT_ROLL_INCTV_AMOUNT
27992      ,EOT_ROLL_INCTV_FORMULA
27993      ,EOT_ROLL_INCTV_PRORATE
27994      ,EOT_SECU_DEP_DISPO_OPTION
27995      ,EOT_SECU_DEP_DISPO_AMOUNT
27996      ,EOT_SECU_DEP_DISPO_FORMULA
27997      ,EOT_SECU_DEP_DISPO_PRORATE
27998      ,EOT_TERM_PENALTY_OPTION
27999      ,EOT_TERM_PENALTY_AMOUNT
28000      ,EOT_TERM_PENALTY_FORMULA
28001      ,EOT_TERM_PENALTY_PRORATE
28002      ,EOT_TERM_PENALTY_CAP_OPTION
28003      ,EOT_TERM_PENALTY_CAP_AMOUNT
28004      ,EOT_TERM_PENALTY_CAP_FORMULA
28005      ,EOT_EST_PROP_TAX_OPTION
28006      ,EOT_EST_PROP_TAX_AMOUNT
28007      ,EOT_EST_PROP_TAX_FORMULA
28008      ,EOT_EST_PROP_TAX_PRORATE
28009      ,EOT_CONTR_FEES_OPTION
28010      ,EOT_OUTSTND_BAL_OPTION
28011      ,EOT_SERV_MANT_OPTION
28012      ,EVERGREEN_PASSTHRU_FEES
28013      ,EVERGREEN_PASSTHRU_PERCENT
28014      ,LIEN_TYPE
28015      ,FILING_NUMBER
28016      ,FILING_DATE
28017      ,FILING_STATUS
28018      ,LIEN_HOLDER_NAME
28019      ,LIEN_HOLDER_ID
28020      ,JURISDICTION
28021      ,SUB_JURISDICTION
28022      ,LIEN_EXPIRATION_DATE
28023      ,LIEN_CONTINUATION_NUMBER
28024      ,LIEN_CONTINUATION_DATE
28025      ,TITLE_TYPE
28026      ,TITLE_ISSUER_NAME
28027      ,TITLE_ISSUER_ID
28028      ,TITLE_DATE
28029      ,TITLE_NUMBER
28030      ,REGISTRATION_NUMBER
28031      ,LOCATION
28032      ,TITLE_CUSTODIAN_NAME
28033      ,TITLE_CUSTODIAN_ID
28034      ,PAYEE_SITE
28035      ,REGISTRATION_LOCATION
28036      ,REG_EXPIRATION_DATE
28037      ,CREDIT_LINE_ID
28038      ,CREDIT_LINE_NUMBER
28039      ,PRTFL_APPROVAL_REQ
28040      ,PRTFL_ASSGN_GROUP
28041      ,PRTFL_BUDGET_AMT_OPT
28042      ,PRTFL_BUDGET_FIXED_AMT
28043      ,PRTFL_BUDGET_AMT_FORMULA
28044      ,PRTFL_DAYS_FROM_CON_EXPR
28045      ,PRTFL_STRATEGY
28046      ,PROP_TAX_APPLICABLE
28047      ,PROP_TAX_LEASE_REP
28048      ,MEX_TAX_SUB_BASIC_WTHLD
28049      ,MEX_TAX_CALC_FORMULA
28050      ,AUS_TAX_STAMP_DUTY
28051      ,CURRENCY_CONVERSION_TYPE
28052      ,CURRENCY_CONVERSION_RATE
28053      ,CURRENCY_CONVERSION_DATE
28054      ,ASSIGNABLE_YN
28055      ,LESSEE_VENDOR_ID
28056      ,LESSEE_VENDOR_NAME
28057      ,LESSEE_VENDOR_SITE_ID
28058      ,LESSEE_VENDOR_SITE_CODE
28059      ,INSURANCE_COMPANY_NUMBER
28060      ,INSURANCE_COMPANY_SITE_NUMBER
28061      ,AGENT_NUMBER
28062      ,AGENT_ADDRESS_SITE_NUMBER
28063      ,CASH_APPL_RULE_NAME
28064      ,PROP_TAX_BILL_METHOD
28065      ,GAIN_LOSS_TOLRNC_ALLWD_AMT
28066      ,GAIN_LOSS_TOLRNC_ALLWD_FRML
28067      ,GAIN_LOSS_TOLRNC_BASIS
28068      ,GAIN_LOSS_APPRV_PROC_FRML
28069      ,ERT_ABSORBED_FEE_FRML
28070      ,ERT_EXPENSE_FEE_FRML
28071      ,ERT_FINANCED_FEE_FRML
28072      ,ERT_GENERAL_FEE_FRML
28073      ,ERT_INCOME_FEE_FRML
28074      ,ERT_MISC_FEE_FRML
28075      ,ERT_PASSTHRU_FEE_FRML
28076      ,ERT_ROLLOVER_FEE_FRML
28077      ,EOT_ABSORBED_FEE_FRML
28078      ,EOT_EXPENSE_FEE_FRML
28079      ,EOT_FINANCED_FEE_FRML
28080      ,EOT_GENERAL_FEE_FRML
28081      ,EOT_INCOME_FEE_FRML
28082      ,EOT_MISC_FEE_FRML
28083      ,EOT_PASSTHRU_FEE_FRML
28084      ,EOT_ROLLOVER_FEE_FRML
28085      ,DELETE_BEFORE_IMPORT_YN -- akp_delete
28086      ,ST_UPDATE_LINES_FROM_CONTRACT
28087      ,ST_INTEREST_DISCLOSED
28088      ,ST_TRANSFER_OF_TITLE
28089      ,ST_SALE_AND_LEASE_BACK
28090      ,ST_PURCHASE_OF_LEASE
28091      ,ST_EQUIPMENT_USAGE
28092      ,ST_EQUIPMENT_AGE
28093      ,ST_ASSET_UPFRONT_TAX
28094      ,ST_BILL_STREAM_TYPE_CODE
28095      ,ST_BILL_STREAM_PURPOSE_CODE
28096      ,ST_FIN_STREAM_TYPE_CODE
28097      ,ST_FIN_STREAM_PURPOSE_CODE
28098      ,ST_CAP_STREAM_TYPE_CODE
28099      ,ST_CAP_STREAM_PURPOSE_CODE
28100      ,INT_RATE_EFFECTIVE_FROM_DATE
28101      ,INT_RATE_EFFECTIVE_TO_DATE
28102      ,INT_RATE_PRINC_BASIS_CODE
28103      ,INT_RATE_BASIS_CODE
28104      ,INT_RATE_DELAY_CODE
28105      ,INT_RATE_DELAY_FREQ
28106      ,INT_RATE_CMPND_FREQ_CODE
28107      ,INT_RATE_CATCHUP_BASIS_CODE
28108      ,INT_RATE_CATCHUP_START_DATE
28109      ,INT_RATE_CAT_STLMNT_CODE
28110      ,INT_RATE_CHANGE_START_DATE
28111      ,INT_RATE_CHANGE_FREQ_CODE
28112      ,INT_RATE_CHANGE_VALUE
28113      ,INT_RATE_CON_OPTION_CODE
28114      ,INT_RATE_NEXT_CON_DATE
28115      ,INT_RATE_CON_INDEX_NAME
28116      ,INT_RATE_CON_BASE_RATE
28117      ,INT_RATE_CON_START_DATE
28118      ,INT_RATE_CON_ADDER_RATE
28119      ,INT_RATE_CON_MAXIMUM_RATE
28120      ,INT_RATE_CON_MINIMUM_RATE
28121      ,INT_RATE_CON_PRC_BAS_CODE
28122      ,INT_RATE_CON_DAY_MTH_CODE
28123      ,INT_RATE_CON_DAY_YER_CODE
28124      ,INT_RATE_CON_INT_BAS_CODE
28125      ,INT_RATE_CON_RATE_DELAY_CODE
28126      ,INT_RATE_CON_RATE_DELAY_FREQ
28127      ,INT_RATE_CON_CMPND_FREQ_CODE
28128      ,INT_RATE_CON_FORMULA_NAME
28129      ,INT_RATE_CON_CAT_BAS_CODE
28130      ,INT_RATE_CON_CAT_START_DATE
28131      ,INT_RATE_CON_CAT_STLMNT_CODE
28132      ,INT_RATE_CON_CHG_START_DATE
28133      ,INT_RATE_CON_CHG_FREQ_CODE
28134      ,INT_RATE_CON_CHG_VALUE
28135      ,INT_RATE_CAT_FREQ_CODE
28136      ,INT_RATE_CON_CAT_FREQ_CODE
28137      ,RVI_STREAM_CODE
28138      ,RVI_STREAM_PURPOSE_CODE
28139      ,ATTRIBUTE_CATEGORY
28140      ,ATTRIBUTE1
28141      ,ATTRIBUTE2
28142      ,ATTRIBUTE3
28143      ,ATTRIBUTE4
28144      ,ATTRIBUTE5
28145      ,ATTRIBUTE6
28146      ,ATTRIBUTE7
28147      ,ATTRIBUTE8
28148      ,ATTRIBUTE9
28149      ,ATTRIBUTE10
28150      ,ATTRIBUTE11
28151      ,ATTRIBUTE12
28152      ,ATTRIBUTE13
28153      ,ATTRIBUTE14
28154      ,ATTRIBUTE15
28155      ,EOT_AUTO_PROC_PURCHASE_OPT
28156      ,PTH_EVG_PAYOUT_BASIS
28157      ,PTH_PAYOUT_BASIS_FORMULA
28158      ,PTH_EVG_STREAM_CODE
28159      ,PTH_EVG_STREAM_PURPOSE_CODE
28160      ,SEND_BILL_SALE
28161      ,MANUAL_QUOTES_ONLY
28162      ,FIRST_TERMINATION_DATE
28163      ,QUOTE_RCPT_ADDL_RCPT_ROLE
28164      ,QUOTE_RCPT_ALLOC_PTG
28165      ,QUOTE_APPRVR_ADV_NOTICE_ROLE
28166      ,QUOTE_APPROVER_DELAY_DAYS
28167      ,ERT_SERV_MANT_FRML
28168      ,EOT_SERV_MANT_FRML
28169      --Added by dpsingh for LE Uptake
28170      ,LEGAL_ENTITY_ID
28171      ,ST_TAX_SCHEDULE_APPLIES_FLAG
28172    FROM   okl_header_interface
28173    WHERE  (
28174           batch_number        = p_batch_number
28175           OR
28176           contract_number_old = p_contract_number
28177           OR
28178           (
28179            customer_number    = p_customer_number
28180            AND
28181            start_date         between p_start_date_from AND p_start_date_to
28182           )
28183          )
28184   AND    nvl(scheduled_worker_id, 'NONE') = g_instance_number
28185   AND    status            in ('NEW', 'ERROR')  -- Bug 4350579
28186   AND    application_code  = 'OKL'    -- Bug 4350579
28187   AND    contract_category = 'LEASE'; -- Bug 4350579
28188   --AND    status in ('ELIGIBLE'); --Process only ELIGIBLE (i.e. validated) record
28189 
28190   --
28191   -- Cursor to fetch Line Interface Records for each contract header
28192   --
28193 
28194   CURSOR okl_line_csr (p_contract_number_old VARCHAR2) IS
28195   SELECT *
28196   FROM   okl_lines_interface
28197   WHERE  contract_number_old = p_contract_number_old
28198   AND    serial_number       IS NULL                 -- indicates TOP line
28199   AND    line_type           <> 'ASSET_SUBSIDY'      -- this line_type is being processed in process_subsidy()
28200   AND    line_type           <> 'ASSET_ADDON'      -- this line_type is being processed in process_addon()
28201   ORDER BY
28202          line_type,
28203          line_number;
28204 
28205   CURSOR okl_ib_csr (p_contract_number_old VARCHAR2,
28206                      p_line_number         NUMBER) IS
28207   SELECT serial_number
28208   FROM   okl_lines_interface
28209   WHERE  contract_number_old = p_contract_number_old
28210   AND    serial_number       IS NOT NULL
28211   AND    line_number         = p_line_number;
28212 
28213   --
28214   -- Cursor to fetch Party roles interface Records for each contract header/Line
28215   --
28216   CURSOR okl_party_csr (p_contract_number_old VARCHAR2,
28217                         p_line_number         NUMBER) IS
28218   SELECT *
28219   FROM   okl_party_roles_interface
28220   WHERE  contract_number_old = p_contract_number_old
28221   AND    ( (line_number        = p_line_number
28222             AND
28223             p_line_number IS NOT NULL
28224             )
28225             OR
28226             (line_number   IS NULL
28227              AND
28228              p_line_number IS NULL
28229             )
28230           );
28231 
28232   --
28233   -- Cursor to fetch Terms interface Records for each contract header/Line
28234   --
28235   CURSOR okl_term_csr (p_contract_number_old VARCHAR2,
28236                        p_line_number         NUMBER) IS
28237   SELECT *
28238   FROM   okl_terms_interface
28239   WHERE  contract_number_old = p_contract_number_old
28240   AND    ( line_number       = p_line_number
28241            AND
28242            p_line_number IS NOT NULL
28243          );
28244 
28245 
28246   --
28247   -- Cursor to fetch Payment interface Records for each contract header/Line
28248   --
28249   CURSOR okl_payment_csr (p_contract_number_old VARCHAR2,
28250                           p_line_number         NUMBER) IS
28251   SELECT *
28252   FROM   okl_payments_interface
28253   WHERE  contract_number_old = p_contract_number_old
28254   AND    payment_type_code <> 'RENT'  -- Bug 5155206
28255   AND    ( (line_number      = p_line_number
28256             AND
28257             p_line_number IS NOT NULL
28258             )
28259             OR
28260             (line_number   IS NULL
28261              AND
28262              p_line_number IS NULL
28263             )
28264           )
28265   ORDER BY
28266          contract_number_old,
28267          line_number,
28268          --asset_number,
28269          payment_type_code,
28270          payment_schedule_number,
28271          start_date;
28272 
28273 
28274   CURSOR temp_role_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
28275   --Fixed Bug # 5484903
28276    SELECT object1_id1
28277    FROM   okc_k_party_roles_b
28278    WHERE  dnz_chr_id            = p_chr_id
28279      AND    chr_id                = dnz_chr_id
28280      AND    jtot_object1_code = 'OKX_PARTY'
28281      AND    rle_code          = 'LESSEE';
28282 
28283   l_customer_id     okc_k_party_roles_v.object1_id1%TYPE;
28284   l_customer_number okl_header_interface.customer_number%TYPE;
28285 
28286   CURSOR temp_sales_csr(p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
28287   SELECT sales.object1_id1
28288   FROM   okc_contacts_v sales,
28289          okc_k_party_roles_v party
28290   WHERE  sales.cpl_id   = party.id
28291   AND    party.rle_code = 'LESSOR'
28292   AND    party.chr_id   = p_chr_id
28293   AND    party.dnz_chr_id = p_chr_id        -- Bug# 3862650
28294   AND    sales.role     = 'Salesperson';
28295 
28296   l_salesperson_id   okc_contacts_v.object1_id1%TYPE;
28297   l_salesperson_name okl_header_interface.salesperson_name%TYPE;
28298 
28299   CURSOR temp_aggr_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE,
28300                         p_scs_code OKC_K_HEADERS_V.SCS_CODE%TYPE) IS
28301   SELECT head.id
28302   FROM   okc_k_headers_v head,
28303          okc_governances gov
28304   WHERE  head.id         = gov.chr_id_referred
28305   AND    head.scs_code   = p_scs_code --'MASTER_LEASE'
28306   AND    gov.dnz_chr_id  = p_chr_id;
28307 
28308   CURSOR txl_csr (p_khr_id NUMBER,
28309                   p_kle_id NUMBER) IS
28310   SELECT id
28311   FROM   okl_txl_assets_b
28312   WHERE  dnz_khr_id = p_khr_id
28313   AND    kle_id     = p_kle_id;
28314 
28315   CURSOR deal_csr (p_chr_id OKC_K_HEADERS_B.ID%TYPE) IS
28316   SELECT 'Y' loan_revolving
28317   FROM   okl_k_headers
28318   WHERE  deal_type = 'LOAN-REVOLVING'
28319   AND    id        = p_chr_id;
28320 
28321   CURSOR c_asset (p_asset_number OKL_LA_RELEASE_ASSETS_UV.ASSET_NUMBER%TYPE) IS
28322   SELECT asset_id
28323   FROM   FA_ADDITIONS_B
28324   WHERE  asset_number = p_asset_number;
28325 
28326   l_master_lease_aggr_id NUMBER;
28327   l_credit_line_id       NUMBER;
28328   x_credit_line_id       NUMBER;
28329 
28330   x_sub_cle_id           OKC_K_LINES_V.ID%TYPE;
28331   l_payment_level        VARCHAR2(3);
28332   l_pmnt_line_id         OKC_K_LINES_V.ID%TYPE;
28333 
28334   l_loan_yn              VARCHAR2(1) := 'N';
28335   l_prev_corp_book    VARCHAR2(15) := 'NULL';
28336   l_prev_asset_number VARCHAR2(15) := 'NULL';
28337   l_prev_tax_book     VARCHAR2(15) := 'NULL';
28338 
28339   x_release_asset     VARCHAR2(1) := 'N';
28340   x_asset_id          OKL_LA_RELEASE_ASSETS_UV.ASSET_ID%TYPE;
28341   x_txd_id            OKL_TXD_ASSETS_B.ID%TYPE;
28342 
28343   x_party_pmnt_hdr_tbl_out   pphv_tbl_type;
28344   l_counter                  NUMBER;
28345 
28346   x_evg_cont_pmnt_hdr_out    pphv_tbl_type;
28347 
28348  -- Bug 5155206
28349   /*Cursor to fetch Payment interface Records for each contract header/Line of
28350     type RENT only */
28351   CURSOR okl_payment_rent_csr (p_contract_number_old VARCHAR2,
28352                           p_line_number         NUMBER) IS
28353   SELECT *
28354   FROM   okl_payments_interface
28355   WHERE  contract_number_old = p_contract_number_old
28356   AND    payment_type_code = 'RENT'
28357   AND    ( (line_number      = p_line_number
28358             AND
28359             p_line_number IS NOT NULL
28360             )
28361             OR
28362             (line_number   IS NULL
28363              AND
28364              p_line_number IS NULL
28365             )
28366           )
28367   ORDER BY
28368          contract_number_old,
28369          line_number,
28370          --asset_number,
28371          payment_schedule_number,
28372          start_date;
28373  -- Bug 5155206
28374    --Added by dpsingh for LE Uptake
28375    l_exists                      NUMBER(1):=0;
28376    item_not_found_error    EXCEPTION;
28377 
28378      -- hariven - Bug#5393374 - Added - Start
28379   -- Procedure to raise Business Event - "oracle.apps.okl.la.lease_contract.imported"
28380   PROCEDURE raise_business_event(
28381                                  p_chr_id        IN         NUMBER
28382                                , x_return_status OUT NOCOPY VARCHAR2
28383                                  ) IS
28384     l_parameter_list           wf_parameter_list_t;
28385   BEGIN
28386     x_return_status := OKL_API.G_RET_STS_SUCCESS;
28387     wf_event.AddParameterToList(G_WF_ITM_CONTRACT_ID,p_chr_id,l_parameter_list);
28388 
28389     OKL_WF_PVT.raise_event (p_api_version    => 1.0,
28390                             p_init_msg_list  => p_init_msg_list,
28391                             x_return_status  => x_return_status,
28392                             x_msg_count      => x_msg_count,
28393                             x_msg_data       => x_msg_data,
28394                             p_event_name     => G_WF_EVT_KHR_IMPORTED,
28395                             p_parameters     => l_parameter_list);
28396 
28397   EXCEPTION
28398     WHEN OTHERS THEN
28399        x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
28400        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
28401   END raise_business_event;
28402   -- hariven - Bug#5393374 - Added - End
28403 
28404   BEGIN -- Actual Procedure Starts Here
28405 
28406   l_proc_name     := 'LOAD_INPUT_RECORD';
28407   x_return_status := OKL_API.G_RET_STS_SUCCESS; -- Assume Success at begining
28408   --okl_api.init_msg_list(p_init_msg_list => OKL_API.G_TRUE);
28409 
28410   l_progress      := '000';
28411 
28412   --okl_context.set_okc_org_context(204,204);
28413   -- 4374085
28414   get_qcl_id(
28415              x_return_status => x_return_status,
28416              p_qcl_name      => 'OKL LA QA CHECK LIST',
28417              x_qcl_id        => g_qcl_id
28418             );
28419 
28420   debug_message('Load... Started');
28421 
28422   FOR okl_header_rec IN okl_header_csr (p_batch_number,
28423                                         p_start_date_from,
28424                                         p_start_date_to,
28425                                         p_contract_number,
28426                                         p_customer_number )
28427   LOOP
28428 
28429 
28430     BEGIN --1
28431       -- Populates Header Record before calling APIs
28432       --fnd_file.put_line(fnd_file.output, 'Loading... '||okl_header_rec.contract_number_old);
28433       okl_api.init_msg_list(p_init_msg_list => OKL_API.G_TRUE);
28434 
28435       debug_message(l_proc_name);
28436       debug_message('');
28437 
28438       debug_message('Calling check_and_delete ' || to_char(sysdate,'HH24:MI:SS'));
28439       -- Check to delete contract from OLM before loading
28440       check_and_delete(
28441                        x_return_status   => x_return_status,
28442                        x_msg_count       => x_msg_count,
28443                        x_msg_data        => x_msg_data,
28444                        p_contract_number        => okl_header_rec.contract_number,
28445                        p_delete_before_import_yn => okl_header_rec.delete_before_import_yn -- akp_delete
28446                       );
28447       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
28448          RAISE load_failed;
28449       END IF;
28450       debug_message('check_and_delete done ' || to_char(sysdate,'HH24:MI:SS'));
28451 
28452       write_to_log('Loading... '||okl_header_rec.contract_number_old);
28453       debug_message('Loading... '||okl_header_rec.contract_number_old);
28454 
28455       g_release_asset_flag := 'N'; -- global variable to check released asset
28456 
28457       --
28458       -- Get Template Information if requested
28459       --
28460 
28461       IF (okl_header_rec.template_number IS NOT NULL) THEN
28462          l_header_template := get_template(
28463                                            x_return_status   => x_return_status,
28464                                            x_msg_count       => x_msg_count,
28465                                            x_msg_data        => x_msg_data,
28466                                            p_template_number => okl_header_rec.template_number
28467                                           );
28468 
28469          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
28470             RAISE load_failed;
28471          END IF;
28472 
28473       debug_message('--->Template information retrieved');
28474       END IF;
28475 
28476 -- comment out. cklee      l_intf_h_rec := okl_header_rec;
28477 
28478 --      debug_message('--->Template information retrieved');
28479       -- It checks template and interface record and prepare final header rec
28480       populate_header_rec(
28481                           x_return_status  => x_return_status,
28482                           x_msg_count      => x_msg_count,
28483                           x_msg_data       => x_msg_data,
28484                           p_temp_header    => l_header_template,
28485                           p_intf_header    => okl_header_rec,--comment out. cklee l_intf_h_rec,
28486                           x_chrv_rec       => l_chrv_rec,
28487                           x_khrv_rec       => l_khrv_rec
28488                          );
28489 
28490       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
28491           RAISE load_failed;
28492       END IF;
28493 
28494       -- Call API to create Contract Header
28495       debug_message('--->Header record populated');
28496 
28497       l_progress := '010';
28498 
28499      --Added by dpsingh for LE Uptake
28500     IF (okl_header_rec.legal_entity_id IS NOT NULL) AND
28501         (okl_header_rec.legal_entity_id <> Okl_Api.G_MISS_NUM) THEN
28502 
28503             -- l_exists  := OKL_LEGAL_ENTITY_UTIL.check_le_id_exists(okl_header_rec.legal_entity_id) ;
28504        OPEN  le_entity(NVL(okl_header_rec.authoring_org_id,l_header_template.authoring_org_id),okl_header_rec.legal_entity_id);
28505        FETCH  le_entity INTO l_exists;
28506 
28507       CLOSE  le_entity;
28508            IF (l_exists <>1 ) THEN
28509            debug_message('--->Legal entity is not valid for operating unit');
28510               Okc_Api.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'LEGAL_ENTITY_ID');
28511               RAISE item_not_found_error;
28512            END IF;
28513       END IF;
28514       l_khrv_rec.legal_entity_id := okl_header_rec.legal_entity_id ;
28515       -- Call Header API to create header
28516       okl_contract_pub.create_contract_header(
28517                                               p_api_version   => 1.0,
28518                                               p_init_msg_list => OKL_API.G_FALSE,
28519                                               x_return_status => x_return_status,
28520                                               x_msg_count     => x_msg_count,
28521                                               x_msg_data      => x_msg_data,
28522                                               p_chrv_rec      => l_chrv_rec,
28523                                               p_khrv_rec      => l_khrv_rec,
28524                                               x_chrv_rec      => x_chrv_rec,
28525                                               x_khrv_rec      => x_khrv_rec
28526                                              );
28527       l_progress := '050';
28528 
28529       debug_message('Contract header call ends...'||x_return_status);
28530       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
28531 
28532            x_return_status := OKL_API.G_RET_STS_ERROR;
28533 
28534          RAISE load_failed;
28535       END IF;
28536 
28537       debug_message('--->Contract Header Created');
28538       debug_message('--->Evergreen passthru at contract header - Start');
28539 
28540       g_evg_cont_pmnt_hdr := NULL;
28541 
28542       IF (okl_header_rec.pth_evg_payout_basis IS NOT NULL) THEN
28543 
28544           create_party_payment_hdr(
28545                                    x_return_status                   => x_return_status,
28546                                    x_msg_count                       => x_msg_count,
28547                                    x_msg_data                        => x_msg_data,
28548                                    p_contract_id                     => x_chrv_rec.id,
28549                                    p_line_id                         => NULL,
28550                                    p_line_type                       => NULL,
28551                                    p_pth_start_date                  => NULL,
28552                                    p_pth_base_payout_basis           => NULL,
28553                                    p_pth_base_stream_code            => NULL,
28554                                    p_pth_base_stream_purpose_code    => NULL,
28555                                    p_pth_evg_payout_basis            => okl_header_rec.pth_evg_payout_basis,
28556                                    p_pth_payout_basis_formula        => okl_header_rec.pth_payout_basis_formula,
28557                                    p_pth_evg_stream_code             => okl_header_rec.pth_evg_stream_code,
28558                                    p_pth_evg_stream_purpose_code     => okl_header_rec.pth_evg_stream_purpose_code,
28559                                    x_party_pmnt_hdr_tbl              => x_evg_cont_pmnt_hdr_out
28560                                   );
28561           debug_message('------>Create evergreen at contract header ends'||x_return_status);
28562           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
28563              x_return_status := OKL_API.G_RET_STS_ERROR;
28564              RAISE load_failed;
28565           END IF;
28566 
28567           debug_message('x_evg_cont_pmnt_hdr_out.count: '||x_evg_cont_pmnt_hdr_out.COUNT);
28568 
28569           IF (x_evg_cont_pmnt_hdr_out.COUNT > 0) THEN
28570              g_evg_cont_pmnt_hdr := x_evg_cont_pmnt_hdr_out(1); --only 1 evg record at contract header
28571           END IF;
28572       END IF;
28573       debug_message('--->Evergreen passthru at contract header - End');
28574 
28575       l_master_lease_aggr_id := NULL;
28576 
28577       IF (okl_header_rec.master_lease_agreement_id IS NOT NULL
28578           OR
28579           okl_header_rec.master_lease_agreement_number IS NOT NULL) THEN
28580 
28581             x_return_status := get_agreement_id(
28582                                                  p_scs_code            => 'MASTER_LEASE',
28583                                                  p_auth_org_id         => l_chrv_rec.authoring_org_id,
28584                                                  p_agreement_number    => okl_header_rec.master_lease_agreement_number,
28585                                                  p_agreement_id        => okl_header_rec.master_lease_agreement_id,
28586                                                  x_agreement_id        => x_master_lease_id
28587                                                 );
28588 
28589             l_master_lease_aggr_id := x_master_lease_id;
28590 
28591             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
28592                okl_api.set_message(
28593                                    G_APP_NAME,
28594                                    G_INVALID_VALUE,
28595                                    'CONTRACT_NUM',
28596                                    okl_header_rec.contract_number_old,
28597                                    'COL_NAME',
28598                                    'MASTER_LEASE_AGREEMENT_ID, NUMBER: ',
28599                                    'COL_VALUE',
28600                                    okl_header_rec.master_lease_agreement_id||', '||okl_header_rec.master_lease_agreement_number
28601                                   );
28602                RAISE load_failed;
28603             END IF;
28604       ELSE
28605         IF (okl_header_rec.template_number IS NOT NULL) THEN
28606 
28607             l_master_lease_aggr_id     := NULL;
28608 
28609             OPEN temp_aggr_csr (l_header_template.id,
28610                                 'MASTER_LEASE');
28611             FETCH temp_aggr_csr INTO l_master_lease_aggr_id;
28612             CLOSE temp_aggr_csr;
28613 
28614         END IF;
28615 
28616       END IF;
28617 
28618       IF (l_master_lease_aggr_id IS NOT NULL) THEN
28619 
28620          l_gvev_rec.dnz_chr_id      := x_chrv_rec.id;
28621          l_gvev_rec.chr_id          := x_chrv_rec.id;
28622          l_gvev_rec.chr_id_referred := l_master_lease_aggr_id;
28623          l_gvev_rec.cle_id          := NULL;
28624          l_gvev_rec.copied_only_yn  := 'Y';
28625 
28626          okl_okc_migration_pvt.create_governance(
28627                                                  p_api_version                  => 1.0,
28628                                                  p_init_msg_list                => OKL_API.G_FALSE,
28629                                                  x_return_status                => x_return_status,
28630                                                  x_msg_count                    => x_msg_count,
28631                                                  x_msg_data                     => x_msg_data,
28632                                                  p_gvev_rec                     => l_gvev_rec,
28633                                                  x_gvev_rec                     => x_gvev_rec
28634                                                 );
28635          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
28636             RAISE load_failed;
28637          END IF;
28638 
28639          debug_message('--->Master Lease agreement created');
28640       END IF;
28641 
28642       -- Process credit line, if any
28643       l_credit_line_id := NULL;
28644       IF (okl_header_rec.credit_line_id IS NOT NULL
28645           OR
28646           okl_header_rec.credit_line_number IS NOT NULL) THEN
28647 
28648           x_return_status := get_agreement_id(
28649                                               p_scs_code            => 'CREDITLINE_CONTRACT',
28650                                               p_auth_org_id         => l_chrv_rec.authoring_org_id,
28651                                               p_agreement_number    => okl_header_rec.credit_line_number,
28652                                               p_agreement_id        => okl_header_rec.credit_line_id,
28653                                               x_agreement_id        => x_credit_line_id
28654                                              );
28655 
28656             l_credit_line_id := x_credit_line_id;
28657 
28658             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
28659                okl_api.set_message(
28660                                    G_APP_NAME,
28661                                    G_INVALID_VALUE,
28662                                    'CONTRACT_NUM',
28663                                    okl_header_rec.contract_number_old,
28664                                    'COL_NAME',
28665                                    'CREDIT LINE ID, NUMBER: ',
28666                                    'COL_VALUE',
28667                                    okl_header_rec.credit_line_id||', '||okl_header_rec.credit_line_number
28668                                   );
28669                RAISE load_failed;
28670             END IF;
28671       ELSE
28672          IF (okl_header_rec.template_number IS NOT NULL) THEN
28673             l_credit_line_id     := NULL;
28674 
28675             OPEN temp_aggr_csr (l_header_template.id,
28676                                 'CREDITLINE_CONTRACT');
28677             FETCH temp_aggr_csr INTO l_credit_line_id;
28678             CLOSE temp_aggr_csr;
28679 
28680          END IF;
28681       END IF;
28682 
28683       IF (l_credit_line_id IS NOT NULL) THEN
28684 
28685          --
28686          -- Validated Credit Line contract against
28687          -- customer number and customer account number
28688          -- of the imported contract
28689          --
28690          validate_credit_line(
28691                               x_return_status           => x_return_status,
28692                               x_msg_count               => x_msg_count,
28693                               x_msg_data                => x_msg_data,
28694                               p_contract_number         => okl_header_rec.contract_number_old,
28695                               p_template_id             => l_header_template.id,
28696                               p_credit_line_id          => l_credit_line_id,
28697                               p_customer_id             => g_customer_id,  -- 4414408
28698                               p_customer_number         => okl_header_rec.customer_number,
28699                               p_customer_account_id     => x_chrv_rec.cust_acct_id, -- 4414408
28700                               p_customer_account_number => okl_header_rec.customer_account_number,
28701                               p_start_date              => x_chrv_rec.start_date, -- 4414408
28702                               p_template_start_date     => l_header_template.start_date
28703                              );
28704          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
28705              okl_api.set_message(
28706                                  G_APP_NAME,
28707                                  G_INVALID_VALUE,
28708                                  'CONTRACT_NUM',
28709                                  okl_header_rec.contract_number_old,
28710                                  'COL_NAME',
28711                                  'CREDIT LINE ID, NUMBER: ',
28712                                  'COL_VALUE',
28713                                  okl_header_rec.credit_line_id||', '||okl_header_rec.credit_line_number
28714                                 );
28715              RAISE load_failed;
28716          END IF;
28717 
28718          l_gvev_rec := NULL;
28719          l_gvev_rec.dnz_chr_id      := x_chrv_rec.id;
28720          l_gvev_rec.chr_id          := x_chrv_rec.id;
28721          l_gvev_rec.chr_id_referred := l_credit_line_id;
28722          l_gvev_rec.cle_id          := NULL;
28723          l_gvev_rec.copied_only_yn  := 'Y';
28724 
28725          okl_okc_migration_pvt.create_governance(
28726                                                  p_api_version                  => 1.0,
28727                                                  p_init_msg_list                => OKL_API.G_FALSE,
28728                                                  x_return_status                => x_return_status,
28729                                                  x_msg_count                    => x_msg_count,
28730                                                  x_msg_data                     => x_msg_data,
28731                                                  p_gvev_rec                     => l_gvev_rec,
28732                                                  x_gvev_rec                     => x_gvev_rec
28733                                                 );
28734          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
28735             RAISE load_failed;
28736          END IF;
28737          debug_message('--->Credit line created');
28738       END IF;
28739       -- end of credit line
28740 
28741       -- Call Party Role API to create Party Roles, LESSEE and LESSOR
28742 
28743       l_customer_id     := okl_header_rec.customer_id;
28744       l_customer_number := okl_header_rec.customer_number;
28745 
28746       IF (okl_header_rec.template_number IS NOT NULL) THEN
28747          IF (l_customer_id IS NULL
28748              AND
28749              l_customer_number IS NULL) THEN
28750              --
28751              -- Get it from Template Contract
28752              --
28753              l_customer_id := NULL;
28754              OPEN temp_role_csr (l_header_template.id);
28755              FETCH temp_role_csr INTO l_customer_id;
28756              CLOSE temp_role_csr;
28757 
28758              l_customer_number := NULL; -- ID is good enough
28759          END IF;
28760       END IF;
28761 
28762       l_progress := '060';
28763       create_party_role( x_return_status       => x_return_status,
28764                          x_msg_count           => x_msg_count,
28765                          x_msg_data            => x_msg_data,
28766                          p_contract_header_id  => x_khrv_rec.id,
28767                          p_contract_number_old => x_chrv_rec.orig_system_reference1,
28768                          p_customer_id         => l_customer_id,
28769                          p_customer_number     => l_customer_number,
28770                          p_authoring_org_id    => NVL(okl_header_rec.authoring_org_id,l_header_template.authoring_org_id),
28771                          x_cplv_rec            => x_cplv_rec );
28772 
28773       l_progress := '070';
28774 
28775       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
28776          x_return_status := OKL_API.G_RET_STS_ERROR;
28777          raise load_failed;
28778       END IF;
28779 
28780       debug_message('--->Party Role created');
28781       l_progress := '080';
28782 
28783       --
28784       -- create lessee as vendor if product is loan revolving
28785       --
28786       FOR deal_rec IN deal_csr (x_khrv_rec.id)
28787       LOOP
28788          IF (deal_rec.loan_revolving = 'Y') THEN
28789             debug_message('-----> create_lessee_as_vendor()');
28790 
28791             create_lessee_as_vendor(
28792                                     x_return_status      => x_return_status,
28793                                     x_msg_count          => x_msg_count,
28794                                     x_msg_data           => x_msg_data,
28795                                     p_chr_id             => x_khrv_rec.id,
28796                                     p_contract_num       => okl_header_rec.contract_number_old,
28797                                     p_cpl_id             => x_cplv_rec.id,
28798                                     p_lessee_vendor_id   => okl_header_rec.lessee_vendor_id,
28799                                     p_lessee_vendor_name => okl_header_rec.lessee_vendor_name,
28800                                     p_lessee_site_id     => okl_header_rec.lessee_vendor_site_id,
28801                                     p_lessee_site_code   => okl_header_rec.lessee_vendor_site_code,
28802                                     p_authoring_org_id   => NVL(okl_header_rec.authoring_org_id,l_header_template.authoring_org_id)
28803                                    );
28804 
28805             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
28806                x_return_status := OKL_API.G_RET_STS_ERROR;
28807                raise load_failed;
28808             END IF;
28809 
28810             debug_message('--->Lessee as Vendor Created');
28811          END IF;
28812       END LOOP;
28813 
28814       -- Create Contact for Sales Rep...???
28815 
28816       l_salesperson_id   := okl_header_rec.salesperson_id;
28817       l_salesperson_name := okl_header_rec.salesperson_name;
28818 
28819       IF (okl_header_rec.template_number IS NOT NULL) THEN
28820          IF (l_salesperson_id IS NULL
28821              AND
28822              l_salesperson_name IS NULL) THEN
28823 
28824             l_salesperson_id   := NULL;
28825             l_salesperson_name := NULL;
28826 
28827             OPEN temp_sales_csr(l_header_template.id);
28828             FETCH temp_sales_csr INTO l_salesperson_id;
28829             CLOSE temp_sales_csr;
28830 
28831          END IF;
28832       END IF;
28833 
28834       create_contact(
28835                      x_return_status       => x_return_status,
28836                      x_msg_count           => x_msg_count,
28837                      x_msg_data            => x_msg_data,
28838                      p_contract_header_id  => x_khrv_rec.id,
28839                      p_contract_number_old => okl_header_rec.contract_number_old,
28840                      p_salesperson_id      => l_salesperson_id,
28841                      p_salesperson_name    => l_salesperson_name,
28842                      p_authoring_org_id    => NVL(okl_header_rec.authoring_org_id,l_header_template.authoring_org_id),
28843                      p_lessor_id           => x_cplv_rec.id
28844                     );
28845 
28846       debug_message('--->Contact created');
28847       l_progress := '081';
28848 
28849       debug_message('--->Header rule creation started');
28850       create_header_rules(
28851                           x_return_status                  => x_return_status,
28852                           x_msg_count                      => x_msg_count,
28853                           x_msg_data                       => x_msg_data,
28854                           p_chr_id                         => x_chrv_rec.id,
28855                           p_template_id                    => l_header_template.id,
28856                           p_header_rec                     => okl_header_rec --comment out. ckleel_intf_h_rec
28857                           --p_header_rec                     => l_intf_h_rec
28858                          );
28859 
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       debug_message('--->Header rule creation complete');
28865 
28866       -- Create private Label party
28867       create_private_label(
28868                            x_return_status   => x_return_status,
28869                            x_msg_count       => x_msg_count,
28870                            x_msg_data        => x_msg_data,
28871                            p_chr_id          => x_chrv_rec.id,
28872                            p_contract_number => okl_header_rec.contract_number_old,
28873                            p_label_number    => okl_header_rec.private_label_number,
28874                            p_label_id        => okl_header_rec.private_label_id,
28875                            p_label_url       => okl_header_rec.private_label_url
28876                           );
28877 
28878       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
28879          x_return_status := OKL_API.G_RET_STS_ERROR;
28880          raise load_failed;
28881       END IF;
28882       debug_message('--->Private label created');
28883 
28884       --
28885       -- Copy program agreement rules, if present,  to contract
28886       --
28887       --debug_message('PROG: id: '||x_khrv_rec.khr_id);
28888       --debug_message('PROG: source: '||x_khrv_rec.khr_id);
28889       --debug_message('PROG: dest: '||x_chrv_rec.id);
28890       --debug_message('PROG: org: '||x_chrv_rec.authoring_org_id);
28891       --debug_message('PROG: inv org: '||x_chrv_rec.inv_organization_id);
28892 
28893       IF (x_khrv_rec.khr_id IS NOT NULL) THEN
28894          okl_deal_create_pub.copy_rules(
28895                                         p_api_version    => 1.0,
28896                                         p_init_msg_list  => OKL_API.G_FALSE,
28897                                         x_return_status  => x_return_status,
28898                                         x_msg_count      => x_msg_count,
28899                                         x_msg_data       => x_msg_data,
28900                                         p_source_id      => x_khrv_rec.khr_id,
28901                                         p_dest_id        => x_chrv_rec.id, -- imported Contract ID
28902                                         p_org_id         => x_chrv_rec.authoring_org_id,
28903                                         p_organization_id => x_chrv_rec.inv_organization_id
28904                                        );
28905 
28906          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
28907             x_return_status := OKL_API.G_RET_STS_ERROR;
28908             raise load_failed;
28909          END IF;
28910 
28911       debug_message('--->Program agreement copied');
28912 
28913       END IF;
28914 
28915 --      debug_message('--->Program agreement copied');
28916 
28917 -- start cklee 02/13/2003 bug# 3440442
28918       -- create 3rd party insurance
28919       -- 1. x_khrv_rec.id indicates contract deatils record exists
28920       -- 2. okl_header_rec.policy_number is a PK for 3rd party insurance policy
28921 
28922       IF (x_chrv_rec.id IS NOT NULL and
28923           okl_header_rec.policy_number IS NOT NULL) THEN
28924 
28925          create_3rd_party_insurance(
28926                                         x_return_status  => x_return_status,
28927                                         x_msg_count      => x_msg_count,
28928                                         x_msg_data       => x_msg_data,
28929                                         p_intf_header    => okl_header_rec,
28930                                         --p_intf_header    => l_intf_h_rec,
28931                                         p_chr_id         => x_chrv_rec.id -- imported Contract ID
28932                                        );
28933 
28934 
28935          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
28936             x_return_status := OKL_API.G_RET_STS_ERROR;
28937             raise load_failed;
28938          END IF;
28939 
28940       debug_message('--->3rd Party Insurance created');
28941       END IF;
28942 
28943 -- end cklee 02/13/2003 bug# 3440442
28944 
28945       --debug_message('Contract Number: '||x_chrv_rec.contract_number);
28946       l_progress := '090';
28947 
28948     -- Call Line Cursor to get Line detail
28949 
28950       l_no_of_lines      := 0;
28951       x_inv_item_id_prev := -9999999;
28952       x_cle_id           := -9999999;
28953       p_inv_item_id_prev := -9999999;
28954       p_line_type_prev   := 'NULL';
28955       l_prev_corp_book    := 'NULL';
28956       l_prev_asset_number := 'NULL';
28957       l_prev_tax_book     := 'NULL';
28958 
28959       -- Check product type
28960       -- in case of loan product, don't populate depreciation detail
28961       -- Bug 3407354
28962       --
28963       check_product_type(
28964                          x_return_status  => x_return_status,
28965                          x_msg_count      => x_msg_count,
28966                          x_msg_data       => x_msg_data,
28967                          p_prod_name      => okl_header_rec.product_name,
28968                          p_prod_id        => okl_header_rec.product_id,
28969                          x_loan_yn        => l_loan_yn
28970                         );
28971       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
28972          x_return_status := OKL_API.G_RET_STS_ERROR;
28973          RAISE load_failed;
28974       END IF;
28975 
28976       -- 4414408
28977       x_release_asset := get_release_asset_flag(
28978                                                 x_return_status   => x_return_status,
28979                                                 x_msg_count       => x_msg_count,
28980                                                 x_msg_data        => x_msg_data,
28981                                                 p_contract_number => okl_header_rec.contract_number_old,
28982                                                 p_org_id          => okl_header_rec.inventory_organization_id
28983                                     ) ;
28984       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
28985          x_return_status := OKL_API.G_RET_STS_ERROR;
28986          RAISE load_failed;
28987       END IF;
28988 
28989       FOR okl_line_rec IN okl_line_csr (okl_header_rec.contract_number_old)
28990       LOOP
28991 
28992         BEGIN --2
28993 
28994           -- Bug 4350579 start
28995           -- validate line information before proceeding
28996           --
28997           debug_message('Processing line : '||okl_line_rec.line_type||'/'||okl_line_rec.line_number);
28998           check_line_literal (
28999                             x_return_status             => x_return_status,
29000                             x_msg_count                 => x_msg_count,
29001                             x_msg_data                  => x_msg_data,
29002                             p_contract_number           => okl_header_rec.contract_number_old,
29003                             p_import_request_stage      => okl_header_rec.import_request_stage,
29004                             p_product_id                => okl_header_rec.product_id,
29005                             p_product_name              => okl_header_rec.product_name,
29006                             p_line_number               => okl_line_rec.line_number,
29007                             p_line_type                 => okl_line_rec.line_type,
29008                             p_amount                    => okl_line_rec.amount,
29009                             p_currency_code             => okl_header_rec.currency_code,
29010                             p_asset_number              => okl_line_rec.asset_number,
29011                             p_inventory_item_name       => okl_line_rec.inventory_item_name,
29012                             p_inventory_item_id         => okl_line_rec.inventory_item_id,
29013                             p_install_site_number       => okl_line_rec.install_site_number,
29014                             p_install_site_id           => okl_line_rec.install_site_id,
29015                             p_asset_corporate_book      => okl_line_rec.asset_corporate_book,
29016                             p_asset_category_id         => okl_line_rec.asset_category_id,
29017                             p_asset_category_segment1   => okl_line_rec.asset_category_segment1,
29018                             p_asset_category_segment2   => okl_line_rec.asset_category_segment2,
29019                             p_asset_category_segment3   => okl_line_rec.asset_category_segment3,
29020                             p_asset_category_segment4   => okl_line_rec.asset_category_segment4,
29021                             p_asset_category_segment5   => okl_line_rec.asset_category_segment5,
29022                             p_asset_category_segment6   => okl_line_rec.asset_category_segment6,
29023                             p_asset_category_segment7   => okl_line_rec.asset_category_segment7,
29024                             p_asset_location_id         => okl_line_rec.asset_location_id,
29025                             p_asset_location_segment1   => okl_line_rec.asset_location_segment1,
29026                             p_asset_location_segment2   => okl_line_rec.asset_location_segment2,
29027                             p_asset_location_segment3   => okl_line_rec.asset_location_segment3,
29028                             p_asset_location_segment4   => okl_line_rec.asset_location_segment4,
29029                             p_asset_location_segment5   => okl_line_rec.asset_location_segment5,
29030                             p_asset_location_segment6   => okl_line_rec.asset_location_segment6,
29031                             p_asset_location_segment7   => okl_line_rec.asset_location_segment7,
29032                             p_depreciation_method_id    => okl_line_rec.depreciation_method_id,
29033                             p_depreciation_method_code  => okl_line_rec.depreciation_method_code,
29034                             p_life_in_months            => okl_line_rec.life_in_months,
29035                             p_fee_code                  => okl_line_rec.fee_code,
29036                             p_stream_purpose            => okl_line_rec.stream_purpose_code,
29037                             p_fee_type                  => okl_line_rec.fee_type,
29038                             p_price_list_name           => okl_line_rec.price_list_name,
29039                             p_price_list_id             => okl_line_rec.price_list_id,
29040                             p_counter_group_name        => okl_line_rec.counter_group_name,
29041                             p_counter_group_id          => okl_line_rec.counter_group_id,
29042                             p_usage_bill_frequency_code => okl_line_rec.usage_bill_frequency_code,
29043                             p_base_reading_uom_code     => okl_line_rec.base_reading_uom_code,
29044                             p_usage_type_code           => okl_line_rec.usage_type_code,
29045                             p_usage_period              => okl_line_rec.usage_period,
29046                             p_usage_no_of_period        => okl_line_rec.usage_no_of_period,
29047                             p_tax_cost                  => okl_line_rec.tax_cost,
29048                             p_tax_book                  => okl_line_rec.tax_book,
29049                             p_life_in_months_tax        => okl_line_rec.life_in_months_tax,
29050                             p_deprn_method_tax          => okl_line_rec.deprn_method_tax,
29051                             p_deprn_rate_tax            => okl_line_rec.deprn_rate_tax,
29052                             p_in_service_date           => okl_line_rec.in_service_date,
29053 			    p_link_asset_amount         => okl_line_rec.link_asset_amount,
29054                             p_inv_org_id                => okl_header_rec.inventory_organization_id,
29055                             p_term_quote_id             => okl_line_rec.termination_quote_id,
29056                             p_term_quote_number         => okl_line_rec.termination_quote_number,
29057                             p_fee_purpose_code          => okl_line_rec.fee_purpose_code
29058                            );
29059 
29060           debug_message('check_line_literal: '||x_return_status);
29061 
29062           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29063              x_return_status := OKL_API.G_RET_STS_ERROR;
29064              RAISE load_failed;
29065           END IF;
29066 
29067           -- Bug 4321621 end
29068 
29069           -- Populates Header Record before calling APIs
29070           l_no_of_lines := l_no_of_lines + 1;
29071           l_progress := '100';
29072           okl_api.init_msg_list(p_init_msg_list => OKL_API.G_TRUE); --Bug 3958519
29073 
29074           debug_message('------> Processing Line: '||okl_line_rec.line_type);
29075 
29076           l_service_line_id := NULL;
29077           l_fee_line_id     := NULL;
29078           l_usage_line_id   := NULL;
29079 	  g_base_pmnt_hdr   := NULL;
29080 	  g_evg_pmnt_hdr    := NULL;
29081 
29082           -- Get Item and Organization Info, for All line type
29083           IF (okl_line_rec.inventory_item_id IS NOT NULL
29084               OR
29085               okl_line_rec.inventory_item_name IS NOT NULL) THEN
29086              get_inventory_org_item_id(
29087                                        x_return_status       => x_return_status,
29088                                        x_msg_count           => x_msg_count,
29089                                        x_msg_data            => x_msg_data,
29090                                        p_contract_number     => okl_header_rec.contract_number_old,
29091                                        P_line_number         => okl_line_rec.line_number,
29092                                        p_line_type           => okl_line_rec.line_type,
29093                                        p_inventory_org_id    => x_chrv_rec.inv_organization_id,
29094 				                                --okl_line_rec.inventory_organization_id,
29095                                        p_inventory_item_id   => okl_line_rec.inventory_item_id,
29096                                        p_inventory_item_name => okl_line_rec.inventory_item_name,
29097                                        x_inventory_org_id    => x_inventory_org_id,
29098                                        x_inventory_item_id   => x_inventory_item_id
29099                                       );
29100 
29101              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29102                  x_return_status := OKL_API.G_RET_STS_ERROR;
29103                  RAISE load_failed;
29104              END IF;
29105 
29106              debug_message('------>Inv Org ID: '||x_chrv_rec.inv_organization_id);
29107 
29108           END IF;
29109 
29110           -- Processing for Asset Lines
29111           IF (okl_line_rec.line_type = 'ASSET') THEN
29112 /* 4414408
29113              IF (okl_line_rec.asset_number = l_prev_asset_number) THEN
29114                 x_release_asset := g_release_asset_flag;
29115 
29116              ELSE --  check asset type
29117                 --
29118                 -- Check whether the asset it released already
29119                 -- If so, processing will be different
29120                 --
29121                 check_for_release_asset(
29122                                         x_return_status => x_return_status,
29123                                         x_msg_count     => x_msg_count,
29124                                         x_msg_data      => x_msg_data,
29125                                         p_asset_number  => okl_line_rec.asset_number,
29126                                         p_line_number   => okl_line_rec.line_number,
29127                                         p_org_id        => x_chrv_rec.inv_organization_id,
29128                                         x_release_asset => x_release_asset,
29129                                         x_asset_id      => x_asset_id
29130                                        );
29131 
29132                 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29133                     x_return_status := OKL_API.G_RET_STS_ERROR;
29134                     RAISE load_failed;
29135                 END IF;
29136 */
29137                 IF (x_release_asset = 'N'
29138                     AND
29139                     okl_line_rec.tax_book IS NOT NULL
29140                     AND
29141                     okl_line_rec.asset_corporate_book IS NULL) THEN
29142                     okl_api.set_message(
29143                                   G_APP_NAME,
29144                                   G_MISSING_VALUE_FOR_LINE,
29145                                   'CONTRACT_NUM',
29146                                   okl_header_rec.contract_number_old||'/'||TO_CHAR(okl_line_rec.line_number),
29147                                   'COL_NAME',
29148                                   'CORPORATE BOOK',
29149                                   'LINE',
29150                                   'ASSET'
29151                                   );
29152                    x_return_status := OKL_API.G_RET_STS_ERROR;
29153 
29154                 END IF;
29155 
29156                 IF (x_release_asset = 'N'
29157                    AND
29158                    okl_line_rec.inventory_item_name IS NULL
29159                    AND
29160                    okl_line_rec.inventory_item_id IS NULL) THEN
29161                    okl_api.set_message(
29162                                        G_APP_NAME,
29163                                        G_MISSING_VALUE_FOR_LINE,
29164                                        'CONTRACT_NUM',
29165                                        okl_header_rec.contract_number_old||'/'||TO_CHAR(okl_line_rec.line_number),
29166                                        'COL_NAME',
29167                                        'INVENTORY_ITEM_NAME OR INVENTORY_ITEM_ID',
29168                                        'LINE',
29169                                        'ASSET'
29170                                       );
29171 
29172                    x_return_status := OKL_API.G_RET_STS_ERROR;
29173                 END IF;
29174 
29175                 IF (x_release_asset = 'N'
29176                     AND
29177                     okl_line_rec.install_site_number IS NULL
29178                     AND
29179                     okl_line_rec.install_site_id IS NULL) THEN
29180                     okl_api.set_message(
29181                                         G_APP_NAME,
29182                                         G_MISSING_VALUE_FOR_LINE,
29183                                         'CONTRACT_NUM',
29184                                         okl_header_rec.contract_number_old||'/'||TO_CHAR(okl_line_rec.line_number),
29185                                         'COL_NAME',
29186                                         'INSTALL_SITE_NUMBER OR INSTALL_SITE_ID',
29187                                         'LINE',
29188                                         'ASSET'
29189                                        );
29190 
29191                     x_return_status := OKL_API.G_RET_STS_ERROR;
29192                 END IF;
29193 
29194 --             END IF;
29195 
29196              --
29197              -- make sure all the assets are either released or
29198              -- none of them are released asset,
29199              -- which means, mix of released and new asset should not
29200              -- be attched to a contract
29201              --
29202              IF (l_no_of_lines = 1) THEN -- first asset line
29203 --               g_release_asset_flag := x_release_asset; -- set the value
29204 
29205                   create_release_asset_rule(
29206                                             x_return_status       => x_return_status,
29207                                             x_msg_count           => x_msg_count,
29208                                             x_msg_data            => x_msg_data,
29209                                             p_chr_id              => x_chrv_rec.id,
29210                                             p_release_asset_flag  => x_release_asset -- 4414408
29211                                            );
29212 
29213                   IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29214                       x_return_status := OKL_API.G_RET_STS_ERROR;
29215                       RAISE load_failed;
29216                   END IF;
29217 
29218                   IF (x_release_asset = 'Y') THEN
29219                      OPEN c_asset(okl_line_rec.asset_number);
29220                      FETCH c_asset into x_asset_id;
29221                      CLOSE c_asset;
29222                   END IF;
29223 /*4414408
29224 
29225              ELSE -- more than one different assets found
29226                IF (okl_line_rec.asset_number <> l_prev_asset_number
29227                    AND
29228                    x_release_asset <> g_release_asset_flag) THEN
29229 
29230                    okl_api.set_message(
29231                                        G_APP_NAME,
29232                                        G_MIXED_ASSET,
29233                                        'CONTRACT_NUM',
29234                                        okl_line_rec.contract_number_old
29235                                       );
29236                    x_return_status := OKL_API.G_RET_STS_ERROR;
29237                    RAISE load_failed;
29238                END IF;
29239 */
29240              END IF;
29241 
29242              IF (x_release_asset = 'Y') THEN
29243 
29244                 IF (l_loan_yn <> 'Y'
29245                     AND
29246                     okl_line_rec.asset_number = l_prev_asset_number
29247                     AND
29248                     okl_line_rec.asset_corporate_book = l_prev_corp_book ) THEN
29249 
29250                     IF (l_prev_tax_book = okl_line_rec.tax_book) THEN
29251 
29252                         -- Can not have more than one same Tax book
29253                         -- for one corporate book, raise error
29254 
29255                         okl_api.set_message(
29256                                             G_APP_NAME,
29257                                             G_DUP_TAX_BOOK,
29258                                             'TAX_BOOK',
29259                                             okl_line_rec.tax_book,
29260                                             'CONTRACT_NUM',
29261                                             okl_line_rec.contract_number_old||'/'||okl_line_rec.line_number,
29262                                             'ASSET_NUM',
29263                                             okl_line_rec.asset_number
29264                                            );
29265                         x_return_status := OKL_API.G_RET_STS_ERROR;
29266                        RAISE load_failed;
29267 
29268                     END IF;
29269 
29270                     debug_message('---->Processing Multiple Tax book');
29271 
29272                     get_tal_id(
29273                                x_return_status => x_return_status,
29274                                p_fa_line_id    => x_clev_fa_rec.id,
29275                                x_tal_id        => l_tal_id);
29276 
29277                     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29278                        x_return_status := OKL_API.G_RET_STS_ERROR;
29279                        RAISE load_failed;
29280                     END IF;
29281 
29282                     get_txd_id (
29283                                 x_return_status   => x_return_status,
29284                                 x_msg_count       => x_msg_count,
29285                                 x_msg_data        => x_msg_data,
29286                                 p_contract_number => okl_header_rec.contract_number_old,
29287                                 p_tal_id          => l_tal_id,
29288                                 p_tax_book        => okl_line_rec.tax_book,
29289                                 x_txd_id          => x_txd_id
29290                                );
29291 
29292                     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29293                        x_return_status := OKL_API.G_RET_STS_ERROR;
29294                        RAISE load_failed;
29295                     END IF;
29296 
29297                     --l_adpv_rec                    := NULL;
29298                     l_adpv_rec.id                 := x_txd_id;
29299                     l_adpv_rec.asset_number       := okl_line_rec.asset_number;
29300                     l_adpv_rec.tal_id             := l_tal_id;
29301 
29302                     IF (okl_line_rec.deprn_method_tax IS NOT NULL) THEN
29303                        l_adpv_rec.deprn_method_tax   := okl_line_rec.deprn_method_tax;
29304                     END IF;
29305 
29306                     IF (okl_line_rec.deprn_rate_tax IS NOT NULL) THEN
29307                        l_adpv_rec.deprn_rate_tax     := okl_line_rec.deprn_rate_tax;
29308                     END IF;
29309 
29310                     IF (okl_line_rec.deprn_rate_tax IS NOT NULL) THEN
29311                        l_adpv_rec.deprn_rate_tax     := okl_line_rec.deprn_rate_tax;
29312                     END IF;
29313 
29314                     IF (okl_line_rec.life_in_months_tax IS NOT NULL) THEN
29315                        l_adpv_rec.life_in_months_tax := okl_line_rec.life_in_months_tax;
29316                     END IF;
29317 
29318                     okl_txd_assets_pub.update_txd_asset_def(
29319                                                             p_api_version     => 1.0,
29320                                                             p_init_msg_list   => OKL_API.G_FALSE,
29321                                                             x_return_status   => x_return_status,
29322                                                             x_msg_count       => x_msg_count,
29323                                                             x_msg_data        => x_msg_data,
29324                                                             p_adpv_rec        => l_adpv_rec,
29325                                                             x_adpv_rec        => x_adpv_rec
29326                                                            );
29327 
29328                     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29329                         x_return_status := OKL_API.G_RET_STS_ERROR;
29330                         RAISE load_failed;
29331                     END IF;
29332 
29333                     debug_message('------>TXD Line Updated');
29334 
29335                     --
29336                     -- End of multiple Tax book logic for release asset
29337                     --
29338 
29339                     -- Bug# 4345613
29340                     l_rule_create_flag := 'N';
29341 
29342                 ELSE
29343 
29344                    process_release_asset(
29345                                          x_return_status      => x_return_status,
29346                                          x_msg_count          => x_msg_count,
29347                                          x_msg_data           => x_msg_data,
29348                                          p_chr_id             => x_chrv_rec.id,
29349                                          p_contract_number    => okl_line_rec.contract_number_old,
29350                                          p_asset_number       => okl_line_rec.asset_number,
29351                                          p_asset_id           => x_asset_id,
29352                                          p_line_number        => okl_line_rec.line_number,
29353                                          p_install_site_id    => okl_line_rec.install_site_id,
29354                                          p_install_site_num   => okl_line_rec.install_site_number,
29355                                          p_unit_price         => okl_line_rec.original_cost,
29356                                          p_deprn_method       => okl_line_rec.depreciation_method_code,
29357                                          p_life_in_months     => okl_line_rec.life_in_months,
29358                                          p_deprn_rate         => okl_line_rec.depreciation_rate,
29359                                          p_asset_location_id  => okl_line_rec.asset_location_id,
29360                                          p_asset_loc_segment1 => okl_line_rec.asset_location_segment1,
29361                                          p_asset_loc_segment2 => okl_line_rec.asset_location_segment2,
29362                                          p_asset_loc_segment3 => okl_line_rec.asset_location_segment3,
29363                                          p_asset_loc_segment4 => okl_line_rec.asset_location_segment4,
29364                                          p_asset_loc_segment5 => okl_line_rec.asset_location_segment5,
29365                                          p_asset_loc_segment6 => okl_line_rec.asset_location_segment6,
29366                                          p_asset_loc_segment7 => okl_line_rec.asset_location_segment7,
29367                                          p_salvage_value      => okl_line_rec.salvage_value,
29368                                          p_salvage_ptg        => okl_line_rec.salvage_value_percent,
29369                                          p_residual_grnty_amt => okl_line_rec.residual_amount_guarantee,
29370                                          p_residual_code      => okl_line_rec.guarantor_type_code,
29371                                          p_residual_ptg       => okl_line_rec.residual_percent,
29372                                          p_residual_amt       => okl_line_rec.residual_amount,
29373                                          p_tax_book           => okl_line_rec.tax_book,
29374                                          p_tax_deprn          => okl_line_rec.deprn_method_tax,
29375                                          p_tax_life_in_mnth   => okl_line_rec.life_in_months_tax,
29376                                          p_tax_deprn_rate     => okl_line_rec.deprn_rate_tax,
29377                                          p_pth_base_payout_basis        => okl_line_rec.pth_base_payout_basis,
29378                                          p_pth_base_stream_code         => okl_line_rec.pth_base_stream_code,
29379                                          p_pth_base_stream_purpose_code => okl_line_rec.pth_base_stream_purpose_code,
29380                                          p_pth_start_date               => okl_line_rec.pth_start_date,
29381                                          p_pth_evg_payout_basis         => okl_line_rec.pth_evg_payout_basis,
29382                                          p_pth_payout_basis_formula     => okl_line_rec.pth_payout_basis_formula,
29383                                          p_pth_evg_stream_code          => okl_line_rec.pth_evg_stream_code,
29384                                          p_pth_evg_stream_purpose_code  => okl_line_rec.pth_evg_stream_purpose_code,
29385                                          p_attribute_category           => okl_line_rec.attribute_category,
29386                                          p_attribute1                   => okl_line_rec.attribute1,
29387                                          p_attribute2                   => okl_line_rec.attribute2,
29388                                          p_attribute3                   => okl_line_rec.attribute3,
29389                                          p_attribute4                   => okl_line_rec.attribute4,
29390                                          p_attribute5                   => okl_line_rec.attribute5,
29391                                          p_attribute6                   => okl_line_rec.attribute6,
29392                                          p_attribute7                   => okl_line_rec.attribute7,
29393                                          p_attribute8                   => okl_line_rec.attribute8,
29394                                          p_attribute9                   => okl_line_rec.attribute9,
29395                                          p_attribute10                  => okl_line_rec.attribute10,
29396                                          p_attribute11                  => okl_line_rec.attribute11,
29397                                          p_attribute12                  => okl_line_rec.attribute12,
29398                                          p_attribute13                  => okl_line_rec.attribute13,
29399                                          p_attribute14                  => okl_line_rec.attribute14,
29400                                          p_attribute15                  => okl_line_rec.attribute15,
29401                                          x_clev_fin_rec                 => x_clev_fin_rec,
29402                                          x_clev_model_rec               => x_clev_model_rec,
29403                                          x_clev_fa_rec                  => x_clev_fa_rec,
29404                                          x_clev_ib_rec                  => x_clev_ib_rec
29405                                         );
29406 
29407                    IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29408                        x_return_status := OKL_API.G_RET_STS_ERROR;
29409                        RAISE load_failed;
29410                    END IF;
29411 
29412                    x_cle_id := x_clev_fin_rec.id;
29413 
29414                 END IF;
29415 
29416              ELSE -- process new assets
29417 
29418                 --
29419                 -- Multiple Tax book creation
29420                 --
29421                 -- Check for Corporate book and asset number
29422                 -- If those 2 matches with previous records create
29423                 -- Tax book only
29424                 --
29425                 IF (l_loan_yn <> 'Y'
29426                     AND
29427                     okl_line_rec.asset_number = l_prev_asset_number
29428                     AND
29429                     okl_line_rec.asset_corporate_book = l_prev_corp_book ) THEN
29430 
29431                     IF (l_prev_tax_book = okl_line_rec.tax_book) THEN
29432 
29433                         -- Can not have more than one same Tax book
29434                         -- for one corporate book, raise error
29435 
29436                         okl_api.set_message(
29437                                             G_APP_NAME,
29438                                             G_DUP_TAX_BOOK,
29439                                             'TAX_BOOK',
29440                                             okl_line_rec.tax_book,
29441                                             'CONTRACT_NUM',
29442                                             okl_line_rec.contract_number_old||'/'||okl_line_rec.line_number,
29443                                             'ASSET_NUM',
29444                                             okl_line_rec.asset_number
29445                                            );
29446                         x_return_status := OKL_API.G_RET_STS_ERROR;
29447                        RAISE load_failed;
29448 
29449                     END IF;
29450 
29451                     debug_message('---->Processing Multiple Tax book');
29452 
29453                     l_adpv_rec                    := NULL;
29454                     l_adpv_rec.tal_id             := l_tal_id;
29455                     l_adpv_rec.asset_number       := okl_line_rec.asset_number;
29456                     l_adpv_rec.cost               := okl_line_rec.tax_cost;
29457                     l_adpv_rec.tax_book           := okl_line_rec.tax_book;
29458                     l_adpv_rec.life_in_months_tax := okl_line_rec.life_in_months_tax;
29459                     l_adpv_rec.deprn_method_tax   := okl_line_rec.deprn_method_tax;
29460                     l_adpv_rec.deprn_rate_tax     := okl_line_rec.deprn_rate_tax;
29461                     l_adpv_rec.salvage_value      := 0;
29462 
29463                     -- Take currency info from header, Bug 4005881
29464                     l_adpv_rec.CURRENCY_CODE            := okl_header_rec.currency_code;
29465                     l_adpv_rec.CURRENCY_CONVERSION_TYPE := okl_header_rec.currency_conversion_type;
29466                     l_adpv_rec.CURRENCY_CONVERSION_RATE := okl_header_rec.currency_conversion_rate;
29467                     l_adpv_rec.CURRENCY_CONVERSION_DATE := okl_header_rec.currency_conversion_date;
29468 
29469                     okl_txd_assets_pub.create_txd_asset_def(
29470                                                             p_api_version     => 1.0,
29471                                                             p_init_msg_list   => OKL_API.G_FALSE,
29472                                                             x_return_status   => x_return_status,
29473                                                             x_msg_count       => x_msg_count,
29474                                                             x_msg_data        => x_msg_data,
29475                                                             p_adpv_rec        => l_adpv_rec,
29476                                                             x_adpv_rec        => x_adpv_rec
29477                                                            );
29478 
29479                     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29480                         x_return_status := OKL_API.G_RET_STS_ERROR;
29481                         RAISE load_failed;
29482                     END IF;
29483 
29484                     debug_message('------>Only TXD Line Created');
29485 
29486                     --
29487                     -- End of multiple Tax book logic
29488                     --
29489 
29490                     -- Bug# 4345613
29491                     l_rule_create_flag := 'N';
29492 
29493                 ELSE -- create new asset line
29494 
29495                    p_clev_fin_rec                  := NULL;
29496                    p_clev_fin_rec.chr_id           := x_chrv_rec.id;
29497                    p_clev_fin_rec.line_number      := okl_line_rec.line_number;
29498                    p_clev_fin_rec.sts_code         := 'NEW';
29499                    p_clev_fin_rec.dnz_chr_id       := x_chrv_rec.id;
29500                    p_clev_fin_rec.item_description := okl_line_rec.description;
29501                    p_clev_fin_rec.price_unit       := okl_line_rec.original_cost;
29502                    p_clev_fin_rec.currency_code    := okl_header_rec.currency_code;
29503                    p_clev_fin_rec.start_date       := okl_line_rec.start_date;
29504                    p_clev_fin_rec.end_date         := okl_line_rec.end_date;
29505                    p_clev_fin_rec.name             := okl_line_rec.asset_number;
29506 /* 4414408
29507                    get_lse_id(
29508                               x_return_status   => x_return_status,
29509                               x_msg_count       => x_msg_count,
29510                               x_msg_data        => x_msg_data,
29511                               p_contract_number => okl_header_rec.contract_number_old,
29512                               p_line_number     => okl_line_rec.line_number,
29513                               p_lty_code        => 'FREE_FORM1',
29514                               p_top_line_lty_code => NULL,
29515                               x_lse_id          => x_lse_id
29516                              );
29517                    IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29518                       x_return_status := OKL_API.G_RET_STS_ERROR;
29519                       RAISE load_failed;
29520                    END IF;
29521 */
29522                    l_progress := '101';
29523 
29524                    p_clev_fin_rec.lse_id           := G_FIN_LINE_LTY_ID;
29525 
29526       -- start cklee 02/18/2004  bug# 3440442
29527 
29528                    validate_real_est(
29529                               x_return_status   => x_return_status,
29530                               x_msg_count       => x_msg_count,
29531                               x_msg_data        => x_msg_data,
29532                               p_intf_line       => okl_line_rec
29533                              );
29534                    IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29535                       x_return_status := OKL_API.G_RET_STS_ERROR;
29536                       RAISE load_failed;
29537                    END IF;
29538 
29539       -- end cklee 02/18/2004  bug# 3440442
29540       -- Rviriyal - fix for bug 5397754 -- start
29541        IF (okl_line_rec.CAPITALIZE_DOWN_PAYMENT_YN IS NOT NULL) AND
29542         (okl_line_rec.CAPITALIZE_DOWN_PAYMENT_YN = 'N') THEN
29543            IF (okl_line_rec.DOWN_PAYMENT_RECEIVER_CODE IS NOT NULL) AND
29544                (okl_line_rec.DOWN_PAYMENT_RECEIVER_CODE = 'VENDOR') THEN
29545                     okl_api.set_message(
29546                                             G_APP_NAME,
29547                                             'OKL_INVALID_COMBINATION',
29548                                             'CONTRACT_NUM',
29549                                             okl_line_rec.contract_number_old||'/'||okl_line_rec.line_number,
29550                                             'ASSET_NUM',
29551                                             okl_line_rec.asset_number
29552                                            );
29553                         x_return_status := OKL_API.G_RET_STS_ERROR;
29554                        RAISE load_failed;
29555 
29556                     END IF;
29557          END IF;
29558 
29559          -- Rviriyal - fix for bug 5397754 -- End
29560 
29561                    p_klev_fin_rec                           := NULL;
29562                    p_klev_fin_rec.year_of_manufacture       := okl_line_rec.year_of_manufacture;
29563                    p_klev_fin_rec.residual_percentage       := okl_line_rec.residual_percent;
29564                    p_klev_fin_rec.residual_value            := okl_line_rec.residual_amount;
29565 /*
29566                    IF (okl_line_rec.residual_amount IS NULL) THEN
29567                       --p_klev_fin_rec.residual_value         := (okl_line_rec.residual_percent / (nvl(okl_line_rec.amount,1) * 100));
29568                             p_klev_fin_rec.residual_value         := (okl_line_rec.residual_percent / 100) * nvl(okl_line_rec.amount,0);
29569                    ELSE
29570                       p_klev_fin_rec.residual_value         := okl_line_rec.residual_amount;
29571                    END IF;
29572 */
29573                    p_klev_fin_rec.residual_grnty_amount     := okl_line_rec.residual_amount_guarantee;
29574                    p_klev_fin_rec.tradein_amount            := okl_line_rec.trade_in_amount;
29575 
29576                    IF (okl_line_rec.capital_reduction_percent IS NOT NULL) THEN
29577                       --p_klev_fin_rec.capital_reduction      := (okl_line_rec.capital_reduction_percent / (nvl(okl_line_rec.amount,1) * 100));
29578                       p_klev_fin_rec.capital_reduction      := (okl_line_rec.capital_reduction_percent / 100)
29579                                                                   * nvl(okl_line_rec.amount,0);
29580                    END IF;
29581 
29582                    IF (okl_line_rec.capital_reduction_amount IS NOT NULL) THEN
29583                       p_klev_fin_rec.capital_reduction      := okl_line_rec.capital_reduction_amount;
29584                    END IF;
29585 
29586 		   --rviriyal : bug# 5397754
29587                    p_klev_fin_rec.CAPITALIZE_DOWN_PAYMENT_YN   :=  okl_line_rec.CAPITALIZE_DOWN_PAYMENT_YN;
29588                    p_klev_fin_rec.DOWN_PAYMENT_RECEIVER_CODE  :=  okl_line_rec.DOWN_PAYMENT_RECEIVER_CODE;
29589                    --rviriyal : end
29590 
29591       -- start cklee 02/16/2004  bug# 3440442
29592                    p_klev_fin_rec.initial_direct_cost       := okl_line_rec.real_est_init_direct_cost;
29593                    p_klev_fin_rec.occupancy                 := okl_line_rec.real_est_occupancy;
29594                    p_klev_fin_rec.date_last_inspection      := okl_line_rec.real_est_date_last_insp;
29595                    p_klev_fin_rec.date_next_inspection_due  := okl_line_rec.real_est_date_next_insp;
29596                    p_klev_fin_rec.date_commitment_expiration  := okl_line_rec.real_est_accept_expire_date;
29597       -- fnd lookup_type = 'OKL_PROPERTY_CLASS_OPTIONS'. check at API level
29598                    p_klev_fin_rec.prc_code                  := okl_line_rec.real_est_property_class_code;
29599 
29600       -- end cklee 02/16/2004 bug# 3440442
29601 
29602                    p_klev_fin_rec.weighted_average_life     := okl_line_rec.real_est_wtd_avg_life;
29603                    p_klev_fin_rec.bond_equivalent_yield     := okl_line_rec.real_est_bond_eq_yield;
29604                    p_klev_fin_rec.refinance_amount          := okl_line_rec.real_est_refinance_amt;
29605                    p_klev_fin_rec.credit_tenant_yn          := okl_line_rec.real_est_credit_tenant_flag;
29606                    p_klev_fin_rec.coverage_ratio            := okl_line_rec.real_est_coverage_ratio;
29607                    p_klev_fin_rec.date_appraisal            := okl_line_rec.real_est_appraisal_date;
29608                    p_klev_fin_rec.appraisal_value           := okl_line_rec.real_est_appraisal_value;
29609                    p_klev_fin_rec.gross_square_footage      := okl_line_rec.real_est_gross_footage;
29610                    p_klev_fin_rec.net_rentable              := okl_line_rec.real_est_net_footage_rentable;
29611                    p_klev_fin_rec.date_letter_acceptance    := okl_line_rec.real_est_letter_accept_date;
29612                    --p_klev_fin_rec.oec                       := okl_line_rec.amount;
29613                    p_klev_fin_rec.oec                       := okl_line_rec.original_cost;
29614                    --p_klev_fin_rec.capital_amount            := okl_line_rec.amount;
29615                    p_klev_fin_rec.capitalized_interest      := okl_line_rec.capitalized_interest;
29616                    p_klev_fin_rec.capital_reduction_percent := okl_line_rec.capital_reduction_percent;
29617                    p_klev_fin_rec.residual_code             := NVL(okl_line_rec.guarantor_type_code,'NONE');
29618                    p_cimv_model_rec                         := NULL;
29619                    p_cimv_model_rec.chr_id                  := x_chrv_rec.id;
29620                    p_cimv_model_rec.dnz_chr_id              := x_chrv_rec.id;
29621                    p_cimv_model_rec.number_of_items         := okl_line_rec.total_units;
29622 
29623                    l_progress := '102';
29624                    IF (x_inventory_org_id IS NOT NULL) THEN
29625                       p_cimv_model_rec.object1_id2          := x_inventory_org_id;
29626                       p_cimv_model_rec.object1_id1          := x_inventory_item_id;
29627                       p_cimv_model_rec.jtot_object1_code    := 'OKX_SYSITEM';
29628                    END IF;
29629 
29630 
29631                    p_clev_fa_rec                         := NULL;
29632                    p_clev_fa_rec.chr_id                  := x_chrv_rec.id;
29633                    p_clev_fa_rec.line_number             := okl_line_rec.line_number;
29634                    p_clev_fa_rec.name                    := okl_line_rec.asset_number;
29635                    p_clev_fa_rec.sts_code                := 'NEW';
29636                    p_clev_fa_rec.item_description        := okl_line_rec.description;
29637 /* 4414408
29638                    get_lse_id(
29639                               x_return_status   => x_return_status,
29640                               x_msg_count       => x_msg_count,
29641                               x_msg_data        => x_msg_data,
29642                               p_contract_number => okl_header_rec.contract_number_old,
29643                               p_line_number     => okl_line_rec.line_number,
29644                               p_lty_code        => 'FIXED_ASSET',
29645                               p_top_line_lty_code => 'FREE_FORM1',
29646                               x_lse_id          => x_lse_id
29647                              );
29648                    IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29649                       x_return_status := OKL_API.G_RET_STS_ERROR;
29650                       RAISE load_failed;
29651                    END IF;
29652 */
29653                    l_progress := '103';
29654                    p_clev_fa_rec.lse_id := G_FA_LINE_LTY_ID;
29655 
29656                    p_cimv_fa_rec := NULL;
29657 /* 4414408
29658                    l_new_yn      := 'Y'; -- Yes to create Asset, No to validate asset, Default is 'Y'
29659 
29660                    IF (l_new_yn = 'N') THEN
29661                       get_asset_id(
29662                                    x_return_status   => x_return_status,
29663                                    x_msg_count       => x_msg_count,
29664                                    x_msg_data        => x_msg_data,
29665                                    p_contract_number => okl_header_rec.contract_number_old,
29666                                    p_line_number     => okl_line_rec.line_number,
29667                                    p_asset_number    => okl_line_rec.asset_number,
29668                                    x_id1             => x_id1,
29669                                    x_id2             => x_id2
29670                                  );
29671                       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29672                          x_return_status := OKL_API.G_RET_STS_ERROR;
29673                          RAISE load_failed;
29674                       END IF;
29675 
29676                       p_cimv_fa_rec.chr_id            := x_chrv_rec.id;
29677                       p_cimv_fa_rec.dnz_chr_id        := x_chrv_rec.id;
29678                       p_cimv_fa_rec.jtot_object1_code := 'OKX_ASSET';
29679                       p_cimv_fa_rec.object1_id1       := x_id1;
29680                       p_cimv_fa_rec.object1_id2       := x_id2;
29681                    END IF;
29682 
29683                    p_talv_fa_rec := NULL;
29684 
29685                    IF (l_new_yn = 'Y') THEN
29686 */
29687                       p_talv_fa_rec := NULL;  -- re-initialized for bug 5584648
29688                       -- Take currency info from header, Bug 4005881
29689                       p_talv_fa_rec.CURRENCY_CODE            := okl_header_rec.currency_code;
29690                       p_talv_fa_rec.CURRENCY_CONVERSION_TYPE := okl_header_rec.currency_conversion_type;
29691                       p_talv_fa_rec.CURRENCY_CONVERSION_RATE := okl_header_rec.currency_conversion_rate;
29692                       p_talv_fa_rec.CURRENCY_CONVERSION_DATE := okl_header_rec.currency_conversion_date;
29693 
29694                       p_talv_fa_rec.asset_number          := okl_line_rec.asset_number;
29695                       p_talv_fa_rec.original_cost         := okl_line_rec.original_cost;
29696                       p_talv_fa_rec.current_units         := okl_line_rec.total_units;
29697                       --p_talv_fa_rec.depreciation_cost     := okl_line_rec.amount;
29698                       p_talv_fa_rec.description           := okl_line_rec.description;
29699                       p_talv_fa_rec.model_number          := okl_line_rec.model;
29700                       p_talv_fa_rec.manufacturer_name     := okl_line_rec.make;
29701                       p_talv_fa_rec.year_manufactured     := okl_line_rec.year_of_manufacture;
29702 
29703                       IF (l_loan_yn <> 'Y') THEN -- not a loan product
29704                          p_talv_fa_rec.corporate_book        := okl_line_rec.asset_corporate_book;
29705                          p_talv_fa_rec.depreciation_cost     := okl_line_rec.amount; --okl_line_rec.depreciation_cost;
29706                       END IF; -- l_loan_yn
29707 
29708                       IF (l_loan_yn <> 'Y') THEN -- not a loan product
29709                          x_comb_id := NULL;
29710                          get_flexid(
29711                                     x_return_status   => x_return_status,
29712                                     x_msg_count       => x_msg_count,
29713                                     x_msg_data        => x_msg_data,
29714                                     p_contract_number => okl_header_rec.contract_number_old,
29715                                     p_line_number     => okl_line_rec.line_number,
29716                                     p_type            => 'ASSET_CATEGORY',
29717                                     p_comb_id         => okl_line_rec.asset_category_id,
29718                                     p_segment1        => okl_line_rec.asset_category_segment1,
29719                                     p_segment2        => okl_line_rec.asset_category_segment2,
29720                                     p_segment3        => okl_line_rec.asset_category_segment3,
29721                                     p_segment4        => okl_line_rec.asset_category_segment4,
29722                                     p_segment5        => okl_line_rec.asset_category_segment5,
29723                                     p_segment6        => okl_line_rec.asset_category_segment6,
29724                                     p_segment7        => okl_line_rec.asset_category_segment7,
29725                                     x_comb_id         => x_comb_id
29726                                    );
29727                          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29728                             x_return_status := OKL_API.G_RET_STS_ERROR;
29729                             RAISE load_failed;
29730                          END IF;
29731                          p_talv_fa_rec.depreciation_id       := x_comb_id;
29732 
29733                          x_comb_id := NULL;
29734                          get_flexid(
29735                                     x_return_status   => x_return_status,
29736                                     x_msg_count       => x_msg_count,
29737                                     x_msg_data        => x_msg_data,
29738                                     p_type            => 'ASSET_LOCATION',
29739                                     p_contract_number => okl_header_rec.contract_number_old,
29740                                     p_line_number     => okl_line_rec.line_number,
29741                                     p_comb_id         => okl_line_rec.asset_location_id,
29742                                     p_segment1        => okl_line_rec.asset_location_segment1,
29743                                     p_segment2        => okl_line_rec.asset_location_segment2,
29744                                     p_segment3        => okl_line_rec.asset_location_segment3,
29745                                     p_segment4        => okl_line_rec.asset_location_segment4,
29746                                     p_segment5        => okl_line_rec.asset_location_segment5,
29747                                     p_segment6        => okl_line_rec.asset_location_segment6,
29748                                     p_segment7        => okl_line_rec.asset_location_segment7,
29749                                     x_comb_id         => x_comb_id
29750                                    );
29751                          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29752                             x_return_status := OKL_API.G_RET_STS_ERROR;
29753                             RAISE load_failed;
29754                          END IF;
29755                          p_talv_fa_rec.fa_location_id        := x_comb_id;
29756 
29757                          -- Asset Key
29758                          x_comb_id := NULL;
29759                          debug_message('Asset Key segment1: '||okl_line_rec.asset_key_segment1);
29760 
29761                          get_asset_key_id(
29762                                     x_return_status   => x_return_status,
29763                                     x_msg_count       => x_msg_count,
29764                                     x_msg_data        => x_msg_data,
29765                                     p_contract_number => okl_header_rec.contract_number_old,
29766                                     p_line_number     => okl_line_rec.line_number,
29767                                     p_comb_id         => okl_line_rec.asset_key_id,
29768                                     p_segment1        => okl_line_rec.asset_key_segment1,
29769                                     p_segment2        => okl_line_rec.asset_key_segment2,
29770                                     p_segment3        => okl_line_rec.asset_key_segment3,
29771                                     p_segment4        => okl_line_rec.asset_key_segment4,
29772                                     p_segment5        => okl_line_rec.asset_key_segment5,
29773                                     p_segment6        => okl_line_rec.asset_key_segment6,
29774                                     p_segment7        => okl_line_rec.asset_key_segment7,
29775                                     p_segment8        => okl_line_rec.asset_key_segment8,
29776                                     p_segment9        => okl_line_rec.asset_key_segment9,
29777                                     p_segment10       => okl_line_rec.asset_key_segment10,
29778                                     x_comb_id         => x_comb_id
29779                                    );
29780                          IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29781                             x_return_status := OKL_API.G_RET_STS_ERROR;
29782                             RAISE load_failed;
29783                          END IF;
29784                          p_talv_fa_rec.asset_key_id       := x_comb_id;
29785                          debug_message('Asset Key: '||x_comb_id);
29786                          -- Asset Key
29787 
29788                          p_talv_fa_rec.deprn_method          := okl_line_rec.depreciation_method_code; --??? Get method Code from id
29789                          p_talv_fa_rec.life_in_months        := okl_line_rec.life_in_months;
29790                          p_talv_fa_rec.deprn_rate            := okl_line_rec.depreciation_rate;
29791                          p_talv_fa_rec.salvage_value         := okl_line_rec.salvage_value;
29792                          p_talv_fa_rec.percent_salvage_value := okl_line_rec.salvage_value_percent;
29793                          p_talv_fa_rec.in_service_date       := okl_line_rec.in_service_date;
29794                                                             --okl_header_rec.expected_delivery_date;-- ??? should be at line
29795                       END IF; -- l_loan_yn
29796 
29797 --                   END IF;
29798 
29799                    l_progress := '104';
29800 
29801                    get_install_site_id(
29802                                        x_return_status     => x_return_status,
29803                                        x_msg_count         => x_msg_count,
29804                                        x_msg_data          => x_msg_data,
29805                                        p_contract_number   => okl_header_rec.contract_number_old,
29806                                        p_line_number       => okl_line_rec.line_number,
29807                                        p_install_site_id   => okl_line_rec.install_site_id,
29808                                        p_install_site_number => okl_line_rec.install_site_number,
29809                                        x_install_site_id   => x_install_site_id
29810                                       );
29811 
29812                    IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29813                       x_return_status := OKL_API.G_RET_STS_ERROR;
29814                       RAISE load_failed;
29815                    END IF;
29816 
29817                    --debug_message('Install site id: '||x_install_site_id);
29818 
29819                    -- Get IB Lines
29820                    l_ib_line_count := 0;
29821                    p_itiv_ib_tbl.DELETE; -- initialize table, Bug 4067179
29822                    FOR okl_ib_rec IN okl_ib_csr(okl_header_rec.contract_number_old,
29823                                                 okl_line_rec.line_number)
29824                    LOOP
29825                      l_ib_line_count := l_ib_line_count + 1;
29826 
29827                      p_itiv_ib_tbl(l_ib_line_count).line_number          := okl_line_rec.line_number;
29828                      p_itiv_ib_tbl(l_ib_line_count).mfg_serial_number_yn := 'Y';
29829                      p_itiv_ib_tbl(l_ib_line_count).object_id1_new       := x_install_site_id;
29830                      p_itiv_ib_tbl(l_ib_line_count).object_id2_new       := '#';
29831                      p_itiv_ib_tbl(l_ib_line_count).serial_number        := okl_ib_rec.serial_number;
29832 
29833                      debug_message('Count: '||l_ib_line_count);
29834                      debug_message('Serial#: '||p_itiv_ib_tbl(l_ib_line_count).serial_number);
29835 
29836                    END LOOP; --ib line
29837 
29838                    IF (l_ib_line_count = 0) THEN
29839 
29840                      p_itiv_ib_tbl(1).mfg_serial_number_yn := 'N';
29841                      p_itiv_ib_tbl(1).object_id1_new       := x_install_site_id;
29842                      p_itiv_ib_tbl(1).object_id2_new       := '#';
29843 
29844                    END IF;
29845                    debug_message('Residual% : '|| p_klev_fin_rec.residual_percentage);
29846                    debug_message('Residual value : '|| p_klev_fin_rec.residual_value);
29847 
29848                    -- Contract addl field, Bug 4558486
29849 
29850                    debug_message('Contract Asset line DFF...'||'Line#: '||okl_line_rec.line_number);
29851 
29852                    p_klev_fin_rec.validate_dff_yn          := 'Y';  -- always validate DFF
29853                    p_klev_fin_rec.attribute_category       := okl_line_rec.attribute_category;
29854                    debug_message('attribute_category: '||p_klev_fin_rec.attribute_category);
29855                    p_klev_fin_rec.attribute1               := okl_line_rec.attribute1;
29856                    debug_message('attribute1: '||p_klev_fin_rec.attribute1);
29857                    p_klev_fin_rec.attribute2               := okl_line_rec.attribute2;
29858                    debug_message('attribute2: '||p_klev_fin_rec.attribute2);
29859                    p_klev_fin_rec.attribute3               := okl_line_rec.attribute3;
29860                    p_klev_fin_rec.attribute4               := okl_line_rec.attribute4;
29861                    p_klev_fin_rec.attribute5               := okl_line_rec.attribute5;
29862                    p_klev_fin_rec.attribute6               := okl_line_rec.attribute6;
29863                    p_klev_fin_rec.attribute7               := okl_line_rec.attribute7;
29864                    p_klev_fin_rec.attribute8               := okl_line_rec.attribute8;
29865                    p_klev_fin_rec.attribute9               := okl_line_rec.attribute9;
29866                    p_klev_fin_rec.attribute10              := okl_line_rec.attribute10;
29867                    p_klev_fin_rec.attribute11              := okl_line_rec.attribute11;
29868                    p_klev_fin_rec.attribute12              := okl_line_rec.attribute12;
29869                    p_klev_fin_rec.attribute13              := okl_line_rec.attribute13;
29870                    p_klev_fin_rec.attribute14              := okl_line_rec.attribute14;
29871                    p_klev_fin_rec.attribute15              := okl_line_rec.attribute15;
29872                    -- Contract addl field, Bug 4558486
29873                    debug_message('Before create_all_line');
29874 
29875                    okl_create_kle_pvt.Create_all_line(
29876                                                       p_api_version    => 1.0,
29877                                                       p_init_msg_list  => OKL_API.G_FALSE,
29878                                                       x_return_status  => x_return_status,
29879                                                       x_msg_count      => x_msg_count,
29880                                                       x_msg_data       => x_msg_data,
29881                                                       P_new_yn         => 'Y', -- 4414408
29882                                                       p_asset_number   => okl_line_rec.asset_number,
29883                                                       p_clev_fin_rec   => p_clev_fin_rec,
29884                                                       p_klev_fin_rec   => p_klev_fin_rec,
29885                                                       p_cimv_model_rec => p_cimv_model_rec,
29886                                                       p_clev_fa_rec    => p_clev_fa_rec,
29887                                                       p_cimv_fa_rec    => p_cimv_fa_rec,
29888                                                       p_talv_fa_rec    => p_talv_fa_rec,
29889                                                       p_itiv_ib_tbl    => p_itiv_ib_tbl,
29890                                                       x_clev_fin_rec   => x_clev_fin_rec,
29891                                                       x_clev_model_rec => x_clev_model_rec,
29892                                                       x_clev_fa_rec    => x_clev_fa_rec,
29893                                                       x_clev_ib_rec    => x_clev_ib_rec
29894                                                      );
29895 
29896                    IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29897                       x_return_status := OKL_API.G_RET_STS_ERROR;
29898                       RAISE load_failed;
29899                    END IF;
29900 		   --rviriyal bug#6015423 start 27-Aug-2007
29901                      /* Added code to consider date_funding_expected field. If date_funding_expected
29902                         is present in okl_interface_lines that value is considered else asset
29903                         start date is considered. */
29904 
29905                      IF okl_line_rec.date_funding_expected IS NULL THEN
29906                        p_klev_fin_rec.date_funding_expected := x_clev_fin_rec.start_date;
29907                      ELSE
29908                        p_klev_fin_rec.date_funding_expected := okl_line_rec.date_funding_expected;
29909                      END IF;
29910 
29911                      OKL_LA_ASSET_PVT.update_contract_line(
29912                                                        p_api_version                =>1.0
29913                                                        ,p_init_msg_list             =>OKL_API.G_FALSE
29914                                                        ,x_return_status             =>x_return_status
29915                                                        ,x_msg_count                 =>x_msg_count
29916                                                        ,x_msg_data                  =>x_msg_data
29917                                                        ,p_id                        =>x_clev_fin_rec.id
29918                                                        ,p_date_delivery_expected    => NULL
29919                                                        ,p_date_funding_expected     => p_klev_fin_rec.date_funding_expected
29920                                                        ,p_org_id                    =>NULL
29921                                                        ,p_organization_id           =>NULL
29922                                                       );
29923                     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29924                          x_return_status := OKL_API.G_RET_STS_ERROR;
29925                          RAISE load_failed;
29926                     END IF;
29927 
29928                     --rviriyal bug#6015423 start 27-Aug-2007
29929 
29930                    debug_message('------>Line created');
29931 
29932 	  -- Bug 5155206
29933 	  /*  Load Rent payment for the asset line, before asset subisidy is processed.
29934 	       Rent line will be always TOP line. so skip check_payment_level call  */
29935 
29936 		  -- Process Rent Payments Interface Record, if any
29937 		  l_contract_number_old_prev := 'INITIAL';
29938 		  l_line_number_prev         := -999999999;
29939 		  l_payment_type_code_prev   := 'INITIAL';
29940 		  l_pmnt_sch_num_prev        := -999999999;
29941 		  l_start_date_prev          := NULL;
29942 		  l_number_of_periods_prev   := -999999999;
29943 		  l_rg_id                    := NULL;
29944 
29945 		  FOR okl_payment_rent_rec IN okl_payment_rent_csr(okl_header_rec.contract_number_old,
29946 							 okl_line_rec.line_number)
29947 		  LOOP
29948 		     BEGIN --5
29949 
29950 		       check_payment_record(
29951 					    x_return_status              => x_return_status,
29952 					    x_msg_count                  => x_msg_count,
29953 					    x_msg_data                   => x_msg_data,
29954 					    p_contract_number_old        => okl_payment_rent_rec.contract_number_old,
29955 					    p_line_number                => okl_payment_rent_rec.line_number,
29956 					    p_asset_number               => okl_payment_rent_rec.asset_number,
29957 					    p_payment_type_code          => okl_payment_rent_rec.payment_type_code,
29958 					    p_stream_purpose             => okl_payment_rent_rec.stream_purpose_code,
29959 					    p_payment_schedule_number    => okl_payment_rent_rec.payment_schedule_number,
29960 					    p_payment_frequency_code     => okl_payment_rent_rec.payment_frequency_code,
29961 					    p_arrears_flag               => okl_payment_rent_rec.arrears_flag,
29962 					    p_advance_payments           => okl_payment_rent_rec.advance_payments,
29963 					    p_payment_amount             => okl_payment_rent_rec.payment_amount,
29964 					    p_start_date                 => okl_payment_rent_rec.start_date,
29965 					    p_number_of_periods          => okl_payment_rent_rec.number_of_periods,
29966 					    p_rate                       => okl_payment_rent_rec.rate,
29967 					    p_comments                   => okl_payment_rent_rec.comments,
29968 					    p_stub_days                  => okl_payment_rent_rec.stub_days,
29969 					    p_stub_amount                => okl_payment_rent_rec.stub_amount
29970 					   );
29971 
29972 		       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
29973 			   RAISE load_failed;
29974 		       END IF;
29975 
29976 			IF (l_contract_number_old_prev <> okl_payment_rent_rec.contract_number_old  -- prev checking
29977 			    OR
29978 			    l_line_number_prev         <> okl_payment_rent_rec.line_number
29979 			    OR
29980 			    l_payment_type_code_prev   <> okl_payment_rent_rec.payment_type_code) THEN
29981 
29982 			   IF (l_line_number_prev <> okl_payment_rent_rec.line_number) THEN -- for new line create rule group
29983 			       l_rg_id := NULL;
29984 			   END IF;
29985 
29986 			    create_payment_rule_group(
29987 						      x_return_status     => x_return_status,
29988 						      x_msg_count         => x_msg_count,
29989 						      x_msg_data          => x_msg_data,
29990 						      p_contract_number   => okl_header_rec.contract_number_old,
29991 						      p_line_number       => okl_line_rec.line_number,
29992 						      p_payment_type_code => okl_payment_rent_rec.payment_type_code,
29993 						      p_stream_purpose    => okl_payment_rent_rec.stream_purpose_code,
29994 						      p_chr_id            => x_chrv_rec.id,
29995 						      p_cle_id            => x_clev_fin_rec.id,
29996 						      p_rg_id             => l_rg_id,
29997 						      x_rgp_id            => x_rgp_id,
29998 						      x_slh_rulv_rec      => x_slh_rulv_rec
29999 						     );
30000 
30001 			   IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30002 			      RAISE load_failed;
30003 			   END IF;
30004 
30005 			ELSE
30006 			    l_progress := '170';
30007 
30008 			    -- Some more validation on Payment Lines
30009 			    IF (okl_payment_rent_rec.payment_schedule_number <= l_pmnt_sch_num_prev) THEN
30010 			       okl_api.set_message(
30011 						   G_APP_NAME,
30012 						   G_PAYMENT_SCHD_ERROR,
30013 						   'COL_VALUE',
30014 						    okl_payment_rent_rec.payment_schedule_number,
30015 						   'CONTRACT_NUM',
30016 						   okl_header_rec.contract_number_old||'/'||okl_payment_rent_rec.line_number
30017 						  );
30018 			       x_return_status := OKL_API.G_RET_STS_ERROR;
30019 			       RAISE load_failed;
30020 			    END IF;
30021 
30022 			    check_payment_frequency_code(
30023 							 x_return_status     => x_return_status,
30024 							 x_msg_count         => x_msg_count,
30025 							 x_msg_data          => x_msg_data,
30026 							 p_payment_freq_code => okl_payment_rent_rec.payment_frequency_code,
30027 							 x_id1               => x_pmnt_freq_id,
30028 							 x_uom_code          => x_uom_code
30029 							);
30030 
30031 			    IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30032 			       okl_api.set_message(
30033 						   G_APP_NAME,
30034 						   G_INVALID_VALUE,
30035 						   'CONTRACT_NUM',
30036 						   okl_payment_rent_rec.contract_number_old||'/'||okl_payment_rent_rec.line_number,
30037 						   'COL_NAME',
30038 						   'PAYMENT_FREQUENCY_CODE',
30039 						   'COL_VALUE',
30040 						   okl_payment_rent_rec.payment_frequency_code
30041 						  );
30042 			       RAISE load_failed;
30043 			    END IF;
30044 
30045 			    IF (x_uom_code = 'M') THEN
30046 			       l_mult_factor := 1;
30047 			    ELSIF (x_uom_code = 'Q') THEN
30048 			       l_mult_factor := 3;
30049 			    ELSIF (x_uom_code = 'S') THEN
30050 			       l_mult_factor := 6;
30051 			    ELSIF (x_uom_code = 'A') THEN
30052 			       l_mult_factor := 12;
30053 			    ELSE
30054 			       okl_api.set_message(
30055 						   G_APP_NAME,
30056 						   G_UOM_SETUP_ERROR,
30057 						   'COL_VALUE',
30058 						   okl_payment_rent_rec.payment_frequency_code
30059 						  );
30060 			       RAISE load_failed;
30061 			    END IF;
30062 
30063 
30064 			    l_current_start_date := add_months(l_start_date_prev, (l_number_of_periods_prev * l_mult_factor));
30065 
30066 			    IF (TRUNC(l_current_start_date) <> TRUNC(okl_payment_rent_rec.start_date)) THEN
30067 			       okl_api.set_message(
30068 						   G_APP_NAME,
30069 						   G_PAYMENT_START_DATE_ERROR,
30070 						   'CONTRACT_NUM',
30071 						   okl_payment_rent_rec.contract_number_old||'/'||okl_payment_rent_rec.line_number
30072 						  );
30073 			       RAISE load_failed;
30074 			    END IF;
30075 
30076 			END IF; --prev checking
30077 
30078 			IF (l_rg_id IS NULL) THEN
30079 			   l_rg_id := x_rgp_id;
30080 			END IF;
30081 
30082 			-- Create other rules
30083 			-- Keep a copy to compare with latest record
30084 			create_payment_other_rules(
30085 						   x_return_status      => x_return_status,
30086 						   x_msg_count          => x_msg_count,
30087 						   x_msg_data           => x_msg_data,
30088 						   p_contract_number    => okl_header_rec.contract_number_old,
30089 						   p_line_number        => okl_line_rec.line_number,
30090 						   p_payment_sch_number => okl_payment_rent_rec.payment_schedule_number,
30091 						   p_payment_freq_code  => okl_payment_rent_rec.payment_frequency_code,
30092 						   p_arrears_flag       => okl_payment_rent_rec.arrears_flag,
30093 						   p_advance_payments   => okl_payment_rent_rec.advance_payments,
30094 						   p_payment_amount     => okl_payment_rent_rec.payment_amount,
30095 						   p_start_date         => okl_payment_rent_rec.start_date,
30096 						   p_number_of_periods  => okl_payment_rent_rec.number_of_periods,
30097 						   p_rate               => okl_payment_rent_rec.rate,
30098 						   p_comments           => okl_payment_rent_rec.comments,
30099 						   p_stub_days          => okl_payment_rent_rec.stub_days,
30100 						   p_stub_amount        => okl_payment_rent_rec.stub_amount,
30101 						   p_slh_rulv_rec       => x_slh_rulv_rec,
30102 						   p_chr_id             => x_chrv_rec.id,
30103 						   p_cle_id             => x_cle_id,
30104 						   p_rgp_id             => x_rgp_id
30105 						  );
30106 
30107 			IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30108 			   RAISE load_failed;
30109 			END IF;
30110 
30111 			l_progress := '180';
30112 
30113 			l_contract_number_old_prev := okl_payment_rent_rec.contract_number_old;
30114 			l_line_number_prev         := okl_payment_rent_rec.line_number;
30115 			l_payment_type_code_prev   := okl_payment_rent_rec.payment_type_code;
30116 			l_pmnt_sch_num_prev        := okl_payment_rent_rec.payment_schedule_number;
30117 			l_start_date_prev          := okl_payment_rent_rec.start_date;
30118 			l_number_of_periods_prev   := okl_payment_rent_rec.number_of_periods;
30119 
30120 		     END; --5 Payment begin
30121 
30122 		  END LOOP; -- Payment Loop
30123            -- Bug 5155206
30124 
30125 
30126 /* OKL.H - Subsidy import start Bug 4411317 */
30127                    debug_message('------>Process Subsidy starts for Asset: '||okl_line_rec.asset_number);
30128                    process_subsidy(
30129                                    x_return_status => x_return_status,
30130                                    x_msg_count     => x_msg_count,
30131                                    x_msg_data      => x_msg_data,
30132                                    p_auth_org_id   => x_chrv_rec.authoring_org_id,
30133                                    p_contract_num  => okl_header_rec.contract_number_old,
30134                                    p_chr_id        => x_chrv_rec.id,
30135                                    p_asset_line_id => x_clev_fin_rec.id,
30136                                    p_asset_num     => okl_line_rec.asset_number
30137                                   );
30138 
30139                    debug_message('------>Process Subsidy ends '||x_return_status);
30140                    IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30141                       x_return_status := OKL_API.G_RET_STS_ERROR;
30142                       RAISE load_failed;
30143                    END IF;
30144 
30145 
30146 /* OKL.H - Subsidy import end */
30147 
30148 /* OKL.H - Addon import start Bug 5077142 */
30149                    debug_message('------>Process Addon starts for Asset: '||okl_line_rec.asset_number);
30150 
30151                    process_addon(
30152                                    x_return_status => x_return_status,
30153                                    x_msg_count     => x_msg_count,
30154                                    x_msg_data      => x_msg_data,
30155                                    p_auth_org_id   => x_chrv_rec.authoring_org_id,
30156                                    p_contract_num  => okl_header_rec.contract_number_old,
30157                                    p_chr_id        => x_chrv_rec.id,
30158                                    p_fa_cle_id     => x_clev_fa_rec.id,
30159                                    p_asset_num     => okl_line_rec.asset_number,
30160                                    p_model_line_id => x_clev_model_rec.id,
30161                                    p_number_of_items => okl_line_rec.total_units
30162                                   );
30163 
30164              --debug_message('AKP:NEEDED:x_clev_fa_rec.id=' || x_clev_fa_rec.id);
30165 
30166                    debug_message('------>Process Addon ends '||x_return_status);
30167                    IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30168                       x_return_status := OKL_API.G_RET_STS_ERROR;
30169                       RAISE load_failed;
30170                    END IF;
30171 
30172 /* OKL.H - Addon import end */
30173 
30174                    IF (okl_line_rec.pth_evg_payout_basis is NOT NULL) THEN
30175                       debug_message('------>Create party payment starts for Asset: '||okl_line_rec.asset_number || ' / '||okl_line_rec.line_number);
30176                       create_party_payment_hdr(
30177                                          x_return_status                   => x_return_status,
30178                                          x_msg_count                       => x_msg_count,
30179                                          x_msg_data                        => x_msg_data,
30180                                          p_contract_id                     => x_clev_fin_rec.dnz_chr_id,
30181                                          p_line_id                         => x_clev_fin_rec.id,
30182                                          p_line_type                       => okl_line_rec.line_type,
30183                                          p_pth_start_date                  => okl_line_rec.pth_start_date,
30184                                          p_pth_base_payout_basis           => okl_line_rec.pth_base_payout_basis,
30185                                          p_pth_base_stream_code            => okl_line_rec.pth_base_stream_code,
30186                                          p_pth_base_stream_purpose_code    => okl_line_rec.pth_base_stream_purpose_code,
30187                                          p_pth_evg_payout_basis            => okl_line_rec.pth_evg_payout_basis,
30188                                          p_pth_payout_basis_formula        => okl_line_rec.pth_payout_basis_formula,
30189                                          p_pth_evg_stream_code             => okl_line_rec.pth_evg_stream_code,
30190                                          p_pth_evg_stream_purpose_code     => okl_line_rec.pth_evg_stream_purpose_code,
30191                                          x_party_pmnt_hdr_tbl              => x_party_pmnt_hdr_tbl_out
30192                                         );
30193 
30194                       debug_message('------>Create party payment ends '||x_return_status);
30195                       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30196                          x_return_status := OKL_API.G_RET_STS_ERROR;
30197                          RAISE load_failed;
30198                       END IF;
30199 	              IF (x_party_pmnt_hdr_tbl_out.COUNT > 0 )THEN
30200 	                 l_counter := x_party_pmnt_hdr_tbl_out.FIRST;
30201 	                 LOOP
30202                            IF (x_party_pmnt_hdr_tbl_out(l_counter).passthru_term = 'BASE') THEN
30203 		              g_base_pmnt_hdr := x_party_pmnt_hdr_tbl_out(l_counter);
30204 		           ELSIF (x_party_pmnt_hdr_tbl_out(l_counter).passthru_term = 'EVERGREEN') THEN
30205 		              g_evg_pmnt_hdr := x_party_pmnt_hdr_tbl_out(l_counter);
30206 		           END IF;
30207 	                 EXIT WHEN (l_counter = x_party_pmnt_hdr_tbl_out.LAST);
30208                          l_counter := x_party_pmnt_hdr_tbl_out.NEXT(l_counter);
30209 	                 END LOOP;
30210                       END IF;
30211 		   END IF;
30212 
30213 /*
30214                    --
30215                    -- Update asset detail with depreciation cost
30216                    --
30217                    IF (okl_line_rec.depreciation_cost IS NOT NULL) THEN
30218 
30219                       FOR txl_rec IN txl_csr (x_chrv_rec.id,
30220                                               x_clev_fa_rec.id)
30221                       LOOP
30222                          l_talv_rec.id                    := txl_rec.id;
30223                          l_talv_rec.depreciation_cost     := okl_line_rec.depreciation_cost;
30224                       END LOOP;
30225 
30226                       okl_txl_assets_pub.update_txl_asset_def(
30227                                               p_api_version     => 1.0,
30228                                               p_init_msg_list   => OKL_API.G_FALSE,
30229                                               x_return_status   => x_return_status,
30230                                               x_msg_count       => x_msg_count,
30231                                               x_msg_data        => x_msg_data,
30232                                               p_tlpv_rec        => l_talv_rec,
30233                                               x_tlpv_rec        => x_talv_rec
30234                                              );
30235 
30236                       debug_message('Depreciation Cost update: '||x_return_status);
30237 
30238                       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30239                          x_return_status := OKL_API.G_RET_STS_ERROR;
30240                          RAISE load_failed;
30241                       END IF;
30242 
30243                    END IF; -- depreciation_cost
30244 */
30245 
30246                    get_tal_id(
30247                               x_return_status => x_return_status,
30248                               p_fa_line_id    => x_clev_fa_rec.id,
30249                               x_tal_id        => l_tal_id);
30250 
30251                    IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30252                       x_return_status := OKL_API.G_RET_STS_ERROR;
30253                       RAISE load_failed;
30254                    END IF;
30255 
30256                    IF (l_loan_yn <> 'Y') THEN -- don't create txd for loan type contract
30257 
30258                       l_adpv_rec                    := NULL;
30259                       l_adpv_rec.tal_id             := l_tal_id;
30260                       l_adpv_rec.asset_number       := okl_line_rec.asset_number;
30261                       l_adpv_rec.cost               := okl_line_rec.tax_cost;
30262                       l_adpv_rec.tax_book           := okl_line_rec.tax_book;
30263                       l_adpv_rec.life_in_months_tax := okl_line_rec.life_in_months_tax;
30264                       l_adpv_rec.deprn_method_tax   := okl_line_rec.deprn_method_tax;
30265                       l_adpv_rec.deprn_rate_tax     := okl_line_rec.deprn_rate_tax;
30266                       l_adpv_rec.salvage_value      := 0; -- to make consistant with UI, might need a change later
30267 
30268                       -- Take currency info from header, Bug 4005881
30269                       l_adpv_rec.CURRENCY_CODE            := okl_header_rec.currency_code;
30270                       l_adpv_rec.CURRENCY_CONVERSION_TYPE := okl_header_rec.currency_conversion_type;
30271                       l_adpv_rec.CURRENCY_CONVERSION_RATE := okl_header_rec.currency_conversion_rate;
30272                       l_adpv_rec.CURRENCY_CONVERSION_DATE := okl_header_rec.currency_conversion_date;
30273 
30274                       okl_txd_assets_pub.create_txd_asset_def(
30275                                                               p_api_version     => 1.0,
30276                                                               p_init_msg_list   => OKL_API.G_FALSE,
30277                                                               x_return_status   => x_return_status,
30278                                                               x_msg_count       => x_msg_count,
30279                                                               x_msg_data        => x_msg_data,
30280                                                               p_adpv_rec        => l_adpv_rec,
30281                                                               x_adpv_rec        => x_adpv_rec
30282                                                              );
30283 
30284                       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30285                           x_return_status := OKL_API.G_RET_STS_ERROR;
30286                           RAISE load_failed;
30287                       END IF;
30288 
30289                       debug_message('------>TXD Line Created');
30290 
30291                    END IF; -- loan_yn
30292 
30293                    x_cle_id := x_clev_fin_rec.id;
30294                    l_rule_create_flag := 'Y';
30295 
30296                    l_progress := '105';
30297                    --
30298                    -- Create Supplier Invoice details for contract
30299                    --
30300                    p_sidv_rec.cle_id                := x_clev_model_rec.id;
30301                    p_sidv_rec.fa_cle_id             := x_clev_fa_rec.id;
30302                    p_sidv_rec.invoice_number        := okl_line_rec.vendor_invoice_number;
30303                    p_sidv_rec.date_invoiced         := okl_line_rec.vendor_invoice_date;
30304                    IF (okl_line_rec.ship_to_site_id IS NOT NULL
30305                        OR
30306                        okl_line_rec.ship_to_site_number IS NOT NULL) THEN
30307                       get_ship_to_site(
30308                                   x_return_status       => x_return_status,
30309                                   x_msg_count           => x_msg_count,
30310                                   x_msg_data            => x_msg_data,
30311                                   p_contract_number     => okl_header_rec.contract_number_old,
30312                                   p_line_number         => okl_line_rec.line_number,
30313                                   p_auth_org_id         => NVL(okl_header_rec.authoring_org_id,l_header_template.authoring_org_id),
30314                                   p_ship_to_site_number => okl_line_rec.ship_to_site_number,
30315                                   p_ship_to_site_id     => okl_line_rec.ship_to_site_id,
30316                                   x_ship_to_site_id     => x_ship_to_site_id
30317                                  );
30318                       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30319                          RAISE load_failed;
30320                          x_return_status := OKL_API.G_RET_STS_ERROR;
30321                       END IF;
30322 
30323                       p_sidv_rec.shipping_address_id1  := x_ship_to_site_id;
30324                       p_sidv_rec.shipping_address_id2  := '#';
30325                       p_sidv_rec.shipping_address_code := 'OKX_PARTSITE';
30326                    END IF;
30327 
30328                    okl_supp_invoice_dtls_pub.create_sup_inv_dtls(
30329                                                                  p_api_version => 1.0,
30330                                                                  x_return_status => x_return_status,
30331                                                                  x_msg_count     => x_msg_count,
30332                                                                  x_msg_data      => x_msg_data,
30333                                                                  p_sidv_rec      => p_sidv_rec,
30334                                                                  x_sidv_rec      => x_sidv_rec
30335                                                                 );
30336                    IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30337                       x_return_status := OKL_API.G_RET_STS_ERROR;
30338                       RAISE load_failed;
30339                    END IF;
30340 
30341                 END IF; -- multiple Tax Book
30342 
30343              END IF; -- release asset
30344 
30345              -- Save current values for future comparison
30346   	     --abhsaxen 13-feb-2008 bug#6773219
30347 	     --commented this portion and added the same just at the end of line processing loop
30348 	     --to utilize these variables for processing non rent records in okl_payments_interface
30349 	     --like ESTIMATED PERSONAL PROPERTY TAX
30350 	     --l_prev_asset_number := okl_line_rec.asset_number;
30351 	     --l_prev_corp_book    := okl_line_rec.asset_corporate_book;
30352 	     --l_prev_tax_book     := okl_line_rec.tax_book;
30353 	     --end abhsaxen 13-feb-2008 bug#6773219
30354 
30355           ELSIF (okl_line_rec.line_type = 'SERVICE') THEN
30356 
30357              process_other_line(
30358                                   x_return_status   => x_return_status,
30359                                   x_msg_count       => x_msg_count,
30360                                   x_msg_data        => x_msg_data,
30361                                   p_contract_number => okl_header_rec.contract_number_old,
30362                                   p_chr_id          => x_chrv_rec.id,
30363                                   p_line_number     => okl_line_rec.line_number,
30364                                   p_line_type       => okl_line_rec.line_type,
30365                                   p_line_type_prev  => p_line_type_prev,
30366                                   p_inv_item_id     => x_inventory_item_id,
30367                                   p_inv_org_id      => x_inventory_org_id,
30368                                   p_line_amount     => okl_line_rec.amount,
30369                                   p_link_asset_amount => okl_line_rec.link_asset_amount,
30370                                   p_init_direct_cost => okl_line_rec.initial_direct_cost,
30371                                   p_fee_code        => okl_line_rec.fee_code,
30372                                   p_stream_purpose  => okl_line_rec.stream_purpose_code,
30373                                   p_fee_type        => NULL,
30374                                   p_asset_number    => okl_line_rec.asset_number,
30375                                   p_currency_code   => okl_header_rec.currency_code,
30376                                   p_usage_item_name => okl_line_rec.usage_item_name,
30377                                   p_usage_item_id   => okl_line_rec.usage_item_id,
30378                                   p_header_start_date => NVL(okl_header_rec.start_date,l_header_template.start_date),
30379                                   p_header_end_date   => x_chrv_rec.end_date,
30380                                   p_line_start_date   => okl_line_rec.start_date,
30381                                   p_line_end_date     => okl_line_rec.end_date,
30382                                   p_inv_item_id_prev => p_inv_item_id_prev,
30383                                   p_term_quote_id    => NULL,
30384                                   p_term_quote_number => NULL,
30385                                   x_inv_item_id_prev => x_inv_item_id_prev,
30386                                   p_cle_id           => p_cle_id,
30387                                   x_cle_id           => x_cle_id,
30388                                   x_sub_cle_id       => x_sub_cle_id,
30389                                   p_new_line_flag    => okl_line_rec.explicit_new_line_flag,
30390                                   p_pth_base_payout_basis       => okl_line_rec.pth_base_payout_basis,
30391                                   p_pth_base_stream_code         => okl_line_rec.pth_base_stream_code,
30392                                   p_pth_base_stream_purpose_code => okl_line_rec.pth_base_stream_purpose_code,
30393                                   p_pth_start_date              => okl_line_rec.pth_start_date,
30394                                   p_pth_evg_payout_basis        => okl_line_rec.pth_evg_payout_basis,
30395                                   p_pth_payout_basis_formula    => okl_line_rec.pth_payout_basis_formula,
30396                                   p_pth_evg_stream_code         => okl_line_rec.pth_evg_stream_code,
30397                                   p_pth_evg_stream_purpose_code => okl_line_rec.pth_evg_stream_purpose_code,
30398                                   p_fee_purpose_code            => okl_line_rec.fee_purpose_code
30399                                  );
30400 
30401              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30402                 x_return_status := OKL_API.G_RET_STS_ERROR;
30403                 RAISE load_failed;
30404              END IF;
30405 
30406              l_service_line_id := x_cle_id;
30407 
30408              IF (x_cle_id = p_cle_id) THEN -- No New Top Line Created, don't create rule against this line
30409 	        l_rule_create_flag := 'N';
30410 	     ELSE
30411 	        l_rule_create_flag := 'Y';
30412 	     END IF;
30413 
30414              p_line_type_prev   := okl_line_rec.line_type;
30415              p_inv_item_id_prev := x_inv_item_id_prev;
30416              p_cle_id           := x_cle_id;
30417              debug_message('------>SERVICE line created');
30418 
30419           ELSIF (okl_line_rec.line_type = 'FEE') THEN
30420              process_other_line(
30421                                   x_return_status   => x_return_status,
30422                                   x_msg_count       => x_msg_count,
30423                                   x_msg_data        => x_msg_data,
30424                                   p_contract_number => okl_header_rec.contract_number_old,
30425                                   p_chr_id          => x_chrv_rec.id,
30426                                   p_line_number     => okl_line_rec.line_number,
30427                                   p_line_type       => okl_line_rec.line_type,
30428                                   p_line_type_prev  => p_line_type_prev,
30429                                   p_inv_item_id     => okl_line_rec.inventory_item_id,
30430                                   p_inv_org_id      => x_chrv_rec.inv_organization_id,
30431                                                        --okl_line_rec.inventory_organization_id,
30432                                   p_line_amount     => okl_line_rec.amount,
30433                                   p_link_asset_amount => okl_line_rec.link_asset_amount,
30434                                   p_init_direct_cost => okl_line_rec.initial_direct_cost,
30435                                   p_fee_code        => okl_line_rec.fee_code,
30436                                   p_stream_purpose  => okl_line_rec.stream_purpose_code,
30437                                   p_fee_type        => okl_line_rec.fee_type,
30438                                   p_asset_number    => okl_line_rec.asset_number,
30439                                   p_currency_code   => okl_header_rec.currency_code,
30440                                   p_usage_item_name => okl_line_rec.usage_item_name,
30441                                   p_usage_item_id   => okl_line_rec.usage_item_id,
30442                                   p_header_start_date => NVL(okl_header_rec.start_date,l_header_template.start_date),
30443                                   p_header_end_date   => x_chrv_rec.end_date,
30444                                   p_line_start_date   => okl_line_rec.start_date,
30445                                   p_line_end_date     => okl_line_rec.end_date,
30446                                   p_inv_item_id_prev => p_inv_item_id_prev,
30447                                   p_term_quote_id    => okl_line_rec.termination_quote_id,
30448                                   p_term_quote_number => okl_line_rec.termination_quote_number,
30449                                   x_inv_item_id_prev => x_inv_item_id_prev,
30450                                   p_cle_id           => p_cle_id,
30451                                   x_cle_id           => x_cle_id,
30452                                   x_sub_cle_id       => x_sub_cle_id,
30453                                   p_new_line_flag    => okl_line_rec.explicit_new_line_flag,
30454                                   p_pth_base_payout_basis       => okl_line_rec.pth_base_payout_basis,
30455                                   p_pth_base_stream_code         => okl_line_rec.pth_base_stream_code,
30456                                   p_pth_base_stream_purpose_code => okl_line_rec.pth_base_stream_purpose_code,
30457                                   p_pth_start_date              => okl_line_rec.pth_start_date,
30458                                   p_pth_evg_payout_basis        => okl_line_rec.pth_evg_payout_basis,
30459                                   p_pth_payout_basis_formula    => okl_line_rec.pth_payout_basis_formula,
30460                                   p_pth_evg_stream_code         => okl_line_rec.pth_evg_stream_code,
30461                                   p_pth_evg_stream_purpose_code => okl_line_rec.pth_evg_stream_purpose_code,
30462                                   p_fee_purpose_code            => okl_line_rec.fee_purpose_code
30463                                  );
30464 
30465              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30466                 x_return_status := OKL_API.G_RET_STS_ERROR;
30467                 RAISE load_failed;
30468              END IF;
30469 
30470              l_fee_line_id := x_cle_id;
30471              IF (x_cle_id = p_cle_id) THEN -- No New Top Line Created, don't create rule against this line
30472 	        l_rule_create_flag := 'N';
30473 	     ELSE
30474 	        l_rule_create_flag := 'Y';
30475 	     END IF;
30476 
30477              debug_message('------>FEE line created');
30478              p_line_type_prev   := okl_line_rec.line_type;
30479              p_inv_item_id_prev := x_inv_item_id_prev;
30480              p_cle_id           := x_cle_id;
30481 
30482 
30483           ELSIF (okl_line_rec.line_type = 'USAGE') THEN
30484              process_other_line(
30485                                   x_return_status   => x_return_status,
30486                                   x_msg_count       => x_msg_count,
30487                                   x_msg_data        => x_msg_data,
30488                                   p_contract_number => okl_header_rec.contract_number_old,
30489                                   p_chr_id          => x_chrv_rec.id,
30490                                   p_line_number     => okl_line_rec.line_number,
30491                                   p_line_type       => okl_line_rec.line_type,
30492                                   p_line_type_prev  => p_line_type_prev,
30493                                   p_inv_item_id     => okl_line_rec.inventory_item_id,
30494                                   p_inv_org_id      => x_chrv_rec.inv_organization_id,
30495 				                       --okl_line_rec.inventory_organization_id,
30496                                   p_line_amount     => okl_line_rec.amount,
30497                                   p_link_asset_amount => okl_line_rec.link_asset_amount,
30498                                   p_init_direct_cost => okl_line_rec.initial_direct_cost,
30499                                   p_fee_code        => okl_line_rec.fee_code,
30500                                   p_stream_purpose  => okl_line_rec.stream_purpose_code,
30501                                   p_fee_type        => NULL,
30502                                   p_asset_number    => okl_line_rec.asset_number,
30503                                   p_currency_code   => okl_header_rec.currency_code,
30504                                   p_usage_item_name => okl_line_rec.usage_item_name,
30505                                   p_usage_item_id   => okl_line_rec.usage_item_id,
30506                                   p_header_start_date => NVL(okl_header_rec.start_date,l_header_template.start_date),
30507                                   p_header_end_date   => x_chrv_rec.end_date,
30508                                   p_line_start_date   => okl_line_rec.start_date,
30509                                   p_line_end_date     => okl_line_rec.end_date,
30510                                   p_inv_item_id_prev => p_inv_item_id_prev,
30511                                   p_term_quote_id    => NULL,
30512                                   p_term_quote_number => NULL,
30513                                   x_inv_item_id_prev => x_inv_item_id_prev,
30514                                   p_cle_id           => p_cle_id,
30515                                   x_cle_id           => x_cle_id,
30516                                   x_sub_cle_id       => x_sub_cle_id,
30517                                   p_new_line_flag    => okl_line_rec.explicit_new_line_flag,
30518                                   p_pth_base_payout_basis       => NULL,
30519                                   p_pth_base_stream_code         => NULL,
30520                                   p_pth_base_stream_purpose_code => NULL,
30521                                   p_pth_start_date              => NULL,
30522                                   p_pth_evg_payout_basis        => NULL,
30523                                   p_pth_payout_basis_formula    => NULL,
30524                                   p_pth_evg_stream_code         => NULL,
30525                                   p_pth_evg_stream_purpose_code => NULL,
30526                                   p_fee_purpose_code            => okl_line_rec.fee_purpose_code
30527                                  );
30528 
30529              IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30530                 x_return_status := OKL_API.G_RET_STS_ERROR;
30531                 RAISE load_failed;
30532              END IF;
30533 
30534              l_usage_line_id := x_cle_id;
30535 
30536              IF (x_cle_id = p_cle_id) THEN -- No New Top Line Created, don't create rule against this line
30537 	        l_rule_create_flag := 'N';
30538 	     ELSE
30539 	        l_rule_create_flag := 'Y';
30540 	     END IF;
30541 
30542              debug_message('USAGE line created');
30543              p_line_type_prev   := okl_line_rec.line_type;
30544              p_inv_item_id_prev := x_inv_item_id_prev;
30545              p_cle_id           := x_cle_id;
30546 
30547           END IF; -- line type
30548 
30549           l_progress := '110';
30550 
30551           IF (l_rule_create_flag = 'Y') THEN
30552           debug_message('------>Line rule started');
30553           create_line_rules(
30554                             x_return_status                  => x_return_status,
30555                             x_msg_count                      => x_msg_count,
30556                             x_msg_data                       => x_msg_data,
30557                             p_chr_id                         => x_chrv_rec.id,
30558                             p_cle_id                         => x_cle_id,
30559                             p_contract_number                => okl_header_rec.contract_number_old,
30560                             p_line_number                    => okl_line_rec.line_number,
30561                             p_line_type                      => okl_line_rec.line_type,
30562                             p_inv_org_id                     => x_inventory_org_id,
30563                             p_sales_tax_exempt_flag          => okl_line_rec.sales_tax_exempt_flag,
30564                             p_sales_tax_exempt_cert_number   => okl_line_rec.sales_tax_exempt_cert_number,
30565                             p_sales_tax_override_flag        => okl_line_rec.sales_tax_override_flag,
30566                             p_sales_tax_override_rate        => okl_line_rec.sales_tax_override_rate,
30567                             p_st_upd_lines_from_contract     => okl_line_rec.st_update_lines_from_contract,
30568                             p_st_transfer_of_title           => okl_line_rec.st_transfer_of_title,
30569                             p_st_sale_and_lease_back         => okl_line_rec.st_sale_and_lease_back,
30570                             p_st_purchase_of_lease           => okl_line_rec.st_purchase_of_lease,
30571                             p_st_equipment_usage             => okl_line_rec.st_equipment_usage,
30572                             p_st_equipment_age               => okl_line_rec.st_equipment_age,
30573                             p_st_asset_upfront_tax           => okl_line_rec.st_asset_upfront_tax,
30574                             p_vat_tax_exempt                 => okl_line_rec.vat_tax_exempt,
30575                             p_vat_tax_exempt_cert_number     => okl_line_rec.vat_tax_exempt_cert_number,
30576                             p_vat_tax_override_flag          => okl_line_rec.vat_tax_override_flag,
30577                             p_vat_tax_override_rate          => okl_line_rec.vat_tax_override_rate,
30578                             p_lien_type                      => okl_line_rec.lien_type,
30579                             p_lien_filing_number             => okl_line_rec.lien_filing_number,
30580                             p_lien_filing_date               => okl_line_rec.lien_filing_date,
30581                             p_lien_filing_status             => okl_line_rec.lien_filing_status,
30582                             p_lienholder_id                  => okl_line_rec.lienholder_id,
30583                             p_lienholder_number              => okl_line_rec.lienholder_number,
30584                             p_filing_jurisdiction            => okl_line_rec.filing_jurisdiction,
30585                             p_filing_sub_jurisdiction        => okl_line_rec.filing_sub_jurisdiction,
30586                             p_lien_expiration_date           => okl_line_rec.lien_expiration_date,
30587                             p_lien_continuation_number       => okl_line_rec.lien_continuation_number,
30588                             p_lien_continuation_date         => okl_line_rec.lien_continuation_date,
30589                             p_title_type                     => okl_line_rec.title_type,
30590                             p_title_issuer_number            => okl_line_rec.title_issuer_number,
30591                             p_title_issuer_id                => okl_line_rec.title_issuer_id,
30592                             p_title_date                     => okl_line_rec.title_date,
30593                             p_title_number                   => okl_line_rec.title_number,
30594                             p_registration_number            => okl_line_rec.registration_number,
30595                             p_asset_registration_loc_name    => okl_line_rec.asset_registration_loc_name,
30596                             p_title_custodian_name           => okl_line_rec.title_custodian_name,
30597                             p_payee_site_name                => okl_line_rec.payee_site_name,
30598                             p_passthrough_percent            => okl_line_rec.passthrough_percent,
30599                             p_passthrough_basis_code         => okl_line_rec.passthrough_basis_code,
30600                             p_fee_code                       => okl_line_rec.fee_code,
30601                             p_stream_purpose                 => okl_line_rec.stream_purpose_code,
30602                             p_usage_item_name                => okl_line_rec.usage_item_name,
30603                             p_usage_item_id                  => okl_line_rec.usage_item_id,
30604                             p_price_list_name                => okl_line_rec.price_list_name,
30605                             p_price_list_id                  => okl_line_rec.price_list_id,
30606                             p_minimum_qty_usage              => okl_line_rec.minimum_qty_usage,
30607                             p_default_qty_usage              => okl_line_rec.default_qty_usage,
30608                             p_amcv_flag                      => okl_line_rec.amcv_flag,
30609                             p_level_flag                     => okl_line_rec.level_flag,
30610                             p_base_reading                   => okl_line_rec.base_reading,
30611                             p_base_reading_uom_code          => okl_line_rec.base_reading_uom_code,
30612                             p_usage_type_code                => okl_line_rec.usage_type_code,
30613                             p_fixed_usage_quantity           => okl_line_rec.fixed_usage_quantity,
30614                             p_usage_period                   => okl_line_rec.usage_period,
30615                             p_usage_no_of_period             => okl_line_rec.usage_no_of_period,
30616                             p_fee_no_of_period               => okl_line_rec.fee_exp_no_of_periods,
30617                             p_fee_frequency                  => okl_line_rec.fee_exp_frequency,
30618                             p_fee_amount_per_period          => okl_line_rec.fee_exp_amount_per_period,
30619                             p_prop_tax_applicable            => okl_line_rec.prop_tax_applicable,
30620                             p_prop_tax_lease_rep             => okl_line_rec.prop_tax_lease_rep,
30621                             p_french_tax_code                => okl_line_rec.french_tax_code,
30622                             p_french_tax_name                => okl_line_rec.french_tax_name,
30623 -- Added by rravikir (Fix for Bug 3947959)
30624                             p_prop_tax_bill_method           => okl_line_rec.prop_tax_bill_method,
30625                             p_prop_tax_as_contract_yn        => okl_line_rec.prop_tax_as_contract_yn
30626 -- End
30627                            );
30628 
30629           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30630              x_return_status := OKL_API.G_RET_STS_ERROR;
30631              raise load_failed;
30632           END IF;
30633 
30634           debug_message('------>Line rule complete');
30635           END IF; -- l_rule_create_flag
30636 
30637           l_progress := '120';
30638 
30639           FOR okl_party_rec IN okl_party_csr (okl_header_rec.contract_number_old,
30640                                               okl_line_rec.line_number)
30641           LOOP
30642              BEGIN --3
30643                 l_progress := '130';
30644 
30645                 debug_message('------>Party role: '||okl_line_rec.line_type||','||okl_line_rec.line_number);
30646 
30647                 IF (l_rule_create_flag = 'Y') THEN -- create role only for top line
30648                 process_party_role(
30649                                  x_return_status       => x_return_status,
30650                                  x_msg_count           => x_msg_count,
30651                                  x_msg_data            => x_msg_data,
30652                                  p_contract_number     => okl_header_rec.contract_number_old,
30653                                  p_chr_id              => x_chrv_rec.id,
30654                                  p_auth_org_id         => okl_header_rec.authoring_org_id,
30655                                  p_line_number         => okl_line_rec.line_number,
30656                                  p_line_type           => okl_line_rec.line_type,
30657                                  p_fin_cle_id          => x_clev_fin_rec.id,
30658                                  p_model_cle_id        => x_clev_model_rec.id,
30659                                  p_service_line_id     => l_service_line_id,
30660                                  p_fee_line_id         => l_fee_line_id,
30661                                  p_usage_line_id       => l_usage_line_id,
30662                                  p_asset_vendor_name   => okl_party_rec.asset_vendor_name,
30663                                  p_asset_vendor_id     => okl_party_rec.asset_vendor_id,
30664                                  p_service_vendor_name => okl_party_rec.service_vendor_name,
30665                                  p_service_vendor_id   => okl_party_rec.service_vendor_id,
30666                                  p_fees_vendor_name    => okl_party_rec.fees_vendor_name,
30667                                  p_fees_vendor_id      => okl_party_rec.fees_vendor_id,
30668                                  p_guarantor_number    => okl_party_rec.guarantor_number,
30669                                  p_guarantor_id        => okl_party_rec.guarantor_id,
30670                                  p_dealer_name         => okl_party_rec.dealer_name,
30671                                  p_dealer_id           => okl_party_rec.dealer_id,
30672                                  p_guarantor_type      => okl_party_rec.guarantor_type,
30673                                  p_guarantee_type      => okl_party_rec.guarantee_type,
30674                                  p_guaranteed_amount   => okl_party_rec.guaranteed_amount,
30675                                  p_guarantee_date      => okl_party_rec.guarantee_date,
30676                                  p_guarantee_comment   => okl_party_rec.guarantee_comment,
30677                                  p_guarantor_site_number => okl_party_rec.guarantor_site_number,
30678                                  p_guarantor_site_id     => okl_party_rec.guarantor_site_id,
30679                                  p_payment_term          => okl_line_rec.payment_term,
30680                                  p_payment_term_id       => okl_line_rec.payment_term_id,
30681                                  p_vendor_paysite_id     => okl_line_rec.vendor_paysite_id,
30682                                  p_vendor_paysite_name   => okl_line_rec.vendor_paysite_name,
30683                                  p_vendor_payment_method => okl_line_rec.vendor_payment_method,
30684                                  p_passthrough_percent      => okl_line_rec.passthrough_percent,
30685                                  p_passthrough_basis_code   => okl_line_rec.passthrough_basis_code,
30686                                  p_billable_vendor_id       => NULL,
30687                                  p_billable_vendor_name     => NULL,
30688                                  p_vend_as_customer_number  => NULL,
30689                                  p_vend_as_customer_id      => NULL,
30690                                  p_vend_as_cust_acc_id      => NULL,
30691                                  p_vend_as_cust_acc_number  => NULL,
30692                                  p_vend_bill_to_addr_id     => NULL,
30693                                  p_vend_bill_to_addr        => NULL,
30694                                  p_vend_payment_method_id   => NULL,
30695                                  p_vend_payment_method      => NULL,
30696                                  p_vend_bank_acc_id         => NULL,
30697                                  p_vend_bank_acc_number     => NULL,
30698                                  p_vend_invoice_format_id   => NULL,
30699                                  p_vend_invoice_format_code => NULL,
30700                                  p_vend_review_invoice_flag => NULL,
30701                                  p_vend_reason_for_inv_review => NULL,
30702                                  p_vend_inv_review_until_date => NULL,
30703                                  p_pth_base_vendor_site_code  => okl_party_rec.pth_base_vendor_site_code,
30704                                  p_pth_base_vendor_site_id    => okl_party_rec.pth_base_vendor_site_id,
30705                                  p_pth_base_paygroup_code     => okl_party_rec.pth_base_paygroup_code,
30706                                  p_pth_base_pmnt_term_code    => okl_party_rec.pth_base_pmnt_term_code,
30707                                  p_pth_base_pmnt_term_id      => okl_party_rec.pth_base_pmnt_term_id,
30708                                  p_pth_base_pmnt_basis        => okl_party_rec.pth_base_pmnt_basis,
30709                                  p_pth_base_pmnt_start_date   => okl_party_rec.pth_base_pmnt_start_date,
30710                                  p_pth_base_pmnt_method_code  => okl_party_rec.pth_base_pmnt_method_code,
30711                                  p_pth_base_pmnt_freq         => okl_party_rec.pth_base_pmnt_freq,
30712                                  p_pth_base_pmnt_remit_days   => okl_party_rec.pth_base_pmnt_remit_days,
30713                                  p_pth_base_disb_basis        => okl_party_rec.pth_base_disb_basis,
30714                                  p_pth_base_disb_fixed_amount => okl_party_rec.pth_base_disb_fixed_amount,
30715                                  p_pth_base_disb_pct          => okl_party_rec.pth_base_disb_pct,
30716                                  p_pth_base_proc_fee_basis    => okl_party_rec.pth_base_proc_fee_basis,
30717                                  p_pth_base_proc_fee_fixed_amt => okl_party_rec.pth_base_proc_fee_fixed_amt,
30718                                  p_pth_base_proc_pct           => okl_party_rec.pth_base_proc_pct,
30719                                  p_pth_evg_vendor_site_code    => okl_party_rec.pth_evg_vendor_site_code,
30720                                  p_pth_evg_vendor_site_id      => okl_party_rec.pth_evg_vendor_site_id,
30721                                  p_pth_evg_paygroup_code       => okl_party_rec.pth_evg_paygroup_code,
30722                                  p_pth_evg_pmnt_term_code      => okl_party_rec.pth_evg_pmnt_term_code,
30723                                  p_pth_evg_pmnt_term_id        => okl_party_rec.pth_evg_pmnt_term_id,
30724                                  p_pth_evg_pmnt_basis          => okl_party_rec.pth_evg_pmnt_basis,
30725                                  p_pth_evg_pmnt_start_date     => okl_party_rec.pth_evg_pmnt_start_date,
30726                                  p_pth_evg_pmnt_method_code    => okl_party_rec.pth_evg_pmnt_method_code,
30727                                  p_pth_evg_pmnt_freq           => okl_party_rec.pth_evg_pmnt_freq,
30728                                  p_pth_evg_pmnt_remit_days     => okl_party_rec.pth_evg_pmnt_remit_days,
30729                                  p_pth_evg_disb_basis          => okl_party_rec.pth_evg_disb_basis,
30730                                  p_pth_evg_disb_fixed_amount   => okl_party_rec.pth_evg_disb_fixed_amount,
30731                                  p_pth_evg_disb_pct            => okl_party_rec.pth_evg_disb_pct,
30732                                  p_pth_evg_proc_fee_basis      => okl_party_rec.pth_evg_proc_fee_basis,
30733                                  p_pth_evg_proc_fee_fixed_amt  => okl_party_rec.pth_evg_proc_fee_fixed_amt,
30734                                  p_pth_evg_proc_pct            => okl_party_rec.pth_evg_proc_pct,
30735                                  p_attribute_category          => okl_party_rec.attribute_category,
30736                                  p_attribute1                  => okl_party_rec.attribute1,
30737                                  p_attribute2                  => okl_party_rec.attribute2,
30738                                  p_attribute3                  => okl_party_rec.attribute3,
30739                                  p_attribute4                  => okl_party_rec.attribute4,
30740                                  p_attribute5                  => okl_party_rec.attribute5,
30741                                  p_attribute6                  => okl_party_rec.attribute6,
30742                                  p_attribute7                  => okl_party_rec.attribute7,
30743                                  p_attribute8                  => okl_party_rec.attribute8,
30744                                  p_attribute9                  => okl_party_rec.attribute9,
30745                                  p_attribute10                 => okl_party_rec.attribute10,
30746                                  p_attribute11                 => okl_party_rec.attribute11,
30747                                  p_attribute12                 => okl_party_rec.attribute12,
30748                                  p_attribute13                 => okl_party_rec.attribute13,
30749                                  p_attribute14                 => okl_party_rec.attribute14,
30750                                  p_attribute15                 => okl_party_rec.attribute15
30751                                 );
30752 
30753                 debug_message('------>Party Role Status: '||x_return_status);
30754 
30755                 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30756                    RAISE load_failed;
30757                 END IF;
30758                 END IF; --rule create
30759                 l_progress := '140';
30760 
30761              END; --3 party begin
30762 
30763           END LOOP; --party role
30764 
30765           FOR okl_term_rec IN okl_term_csr (okl_header_rec.contract_number_old,
30766                                             okl_line_rec.line_number)
30767           LOOP
30768              BEGIN --4
30769                 --Bug# 	6006332 : Procces_term should be called only for top line and only once
30770                 IF (l_rule_create_flag = 'Y') THEN
30771                 l_progress := '150';
30772 
30773                 IF (okl_header_rec.import_request_stage <> 'NEW'
30774                     AND
30775                     okl_term_rec.bill_to_address_id IS NULL
30776                     AND
30777                     okl_term_rec.bill_to_address IS NULL) THEN
30778 
30779                     okl_api.set_message(
30780                                         G_APP_NAME,
30781                                         G_MISSING_VALUE,
30782                                         'CONTRACT_NUM',
30783                                         okl_term_rec.contract_number_old||'/'||okl_term_rec.line_number,
30784                                        'COL_NAME',
30785                                        'BILL_TO_ADDRESS'
30786                                        );
30787 
30788                     x_return_status := OKL_API.G_RET_STS_ERROR;
30789                     RAISE load_failed;
30790                 END IF;
30791 
30792                 debug_message('------>Process term');
30793                 process_term(
30794                              x_return_status             => x_return_status,
30795                              x_msg_count                 => x_msg_count,
30796                              x_msg_data                  => x_msg_data,
30797                              p_contract_number           => okl_header_rec.contract_number_old,
30798                              p_chr_id                    => x_chrv_rec.id,
30799                              p_auth_org_id               => okl_header_rec.authoring_org_id,
30800                              p_line_number               => okl_line_rec.line_number,
30801                              p_line_type                 => okl_line_rec.line_type,
30802                              p_cle_id                    => x_cle_id,
30803                              p_bill_to_address_id        => okl_term_rec.bill_to_address_id,
30804                              p_bill_to_address           => okl_term_rec.bill_to_address,
30805                              p_bank_account_id           => okl_term_rec.bank_account_id,
30806                              p_bank_account_number       => okl_term_rec.bank_account_number,
30807                              p_reason_for_invoice_review => okl_term_rec.reason_for_invoice_review,
30808                              p_invoice_review_until_date => okl_term_rec.invoice_review_until_date,
30809                              p_invoice_format_id         => okl_term_rec.invoice_format_id,
30810                              p_invoice_format_code       => okl_term_rec.invoice_format_code,
30811                              p_review_invoice_flag       => okl_term_rec.review_invoice_flag,
30812                              p_payment_method_id         => okl_term_rec.payment_method_id,
30813                              p_payment_method            => okl_term_rec.payment_method,
30814                              p_prescribed_asset_flag     => okl_term_rec.prescribed_asset_flag,
30815                              p_cash_appl_rule_name       => okl_term_rec.cash_appl_rule_name
30816                             );
30817 
30818                 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30819                    RAISE load_failed;
30820                 END IF;
30821 
30822                 l_progress := '160';
30823              END IF; -- Bug# 6006332
30824              END; --4 terms
30825 
30826           END LOOP; --terms
30827 
30828           -- Process Payments Interface Record, if any
30829           l_contract_number_old_prev := 'INITIAL';
30830           l_line_number_prev         := -999999999;
30831           l_payment_type_code_prev   := 'INITIAL';
30832           l_pmnt_sch_num_prev        := -999999999;
30833           l_start_date_prev          := NULL;
30834           l_number_of_periods_prev   := -999999999;
30835           l_rg_id                    := NULL;
30836      --abhsaxen 13-Feb-2008 bug#6773219 added this if condition to prevent
30837       --processing Non Rent records like ESTIMATED PERSONAL PROPERTY TAX twice for the same
30838       --asset with the same corporate book but with a different tax book. Otherwise the
30839       --ESTIMATED PERSONAL PROPERTY TAX payment lines is shown multiple times after
30840       --contract is imported.
30841 
30842           IF  (okl_line_rec.asset_number = l_prev_asset_number
30843                   AND
30844                  okl_line_rec.asset_corporate_book = l_prev_corp_book )
30845           THEN
30846              NULL; --dont process the records for the same asset twice
30847           ELSE
30848 
30849           FOR okl_payment_rec IN okl_payment_csr(okl_header_rec.contract_number_old,
30850                                                  okl_line_rec.line_number)
30851           LOOP
30852              BEGIN --5
30853 
30854                check_payment_record(
30855                                     x_return_status              => x_return_status,
30856                                     x_msg_count                  => x_msg_count,
30857                                     x_msg_data                   => x_msg_data,
30858                                     p_contract_number_old        => okl_payment_rec.contract_number_old,
30859                                     p_line_number                => okl_payment_rec.line_number,
30860                                     p_asset_number               => okl_payment_rec.asset_number,
30861                                     p_payment_type_code          => okl_payment_rec.payment_type_code,
30862                                     p_stream_purpose             => okl_payment_rec.stream_purpose_code,
30863                                     p_payment_schedule_number    => okl_payment_rec.payment_schedule_number,
30864                                     p_payment_frequency_code     => okl_payment_rec.payment_frequency_code,
30865                                     p_arrears_flag               => okl_payment_rec.arrears_flag,
30866                                     p_advance_payments           => okl_payment_rec.advance_payments,
30867                                     p_payment_amount             => okl_payment_rec.payment_amount,
30868                                     p_start_date                 => okl_payment_rec.start_date,
30869                                     p_number_of_periods          => okl_payment_rec.number_of_periods,
30870                                     p_rate                       => okl_payment_rec.rate,
30871                                     p_comments                   => okl_payment_rec.comments,
30872                                     p_stub_days                  => okl_payment_rec.stub_days,
30873                                     p_stub_amount                => okl_payment_rec.stub_amount
30874                                    );
30875 
30876                IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30877                    RAISE load_failed;
30878                END IF;
30879 
30880                 IF (l_contract_number_old_prev <> okl_payment_rec.contract_number_old  -- prev checking
30881                     OR
30882                     l_line_number_prev         <> okl_payment_rec.line_number
30883                     OR
30884                     l_payment_type_code_prev   <> okl_payment_rec.payment_type_code) THEN
30885 
30886                    IF (l_line_number_prev <> okl_payment_rec.line_number) THEN -- for new line create rule group
30887                        l_rg_id := NULL;
30888                    END IF;
30889 
30890                    --do all
30891                    -- Bug# 3110155
30892                    -- Check for SERVICE and FEE line whether to attach
30893                    -- payments at TOP or SUB lines
30894                    --
30895                    check_payment_level(
30896                                        x_return_status   => x_return_status,
30897                                        x_msg_count       => x_msg_count,
30898                                        x_msg_data        => x_msg_data,
30899                                        p_contract_number => okl_header_rec.contract_number_old,
30900                                        p_line_number     => okl_line_rec.line_number,
30901                                        x_payment_level   => l_payment_level
30902                                       );
30903 
30904                    IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30905                       RAISE load_failed;
30906                    END IF;
30907 
30908                    IF (l_payment_level = 'SUB') THEN -- attach payment at sub-line
30909                       l_pmnt_line_id := x_sub_cle_id;
30910                    ELSE                              -- attach payment at top-line
30911                       l_pmnt_line_id := x_cle_id;
30912                    END IF;
30913 
30914                    create_payment_rule_group(
30915                                               x_return_status     => x_return_status,
30916                                               x_msg_count         => x_msg_count,
30917                                               x_msg_data          => x_msg_data,
30918                                               p_contract_number   => okl_header_rec.contract_number_old,
30919                                               p_line_number       => okl_line_rec.line_number,
30920                                               p_payment_type_code => okl_payment_rec.payment_type_code,
30921                                               p_stream_purpose    => okl_payment_rec.stream_purpose_code,
30922                                               p_chr_id            => x_chrv_rec.id,
30923                                               p_cle_id            => l_pmnt_line_id,
30924                                               p_rg_id             => l_rg_id,
30925                                               x_rgp_id            => x_rgp_id,
30926                                               x_slh_rulv_rec      => x_slh_rulv_rec
30927                                              );
30928 
30929                    IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30930                       RAISE load_failed;
30931                    END IF;
30932 
30933                 ELSE
30934                     l_progress := '170';
30935 
30936                     -- Some more validation on Payment Lines
30937                     IF (okl_payment_rec.payment_schedule_number <= l_pmnt_sch_num_prev) THEN
30938                      debug_message('First check error...');
30939                        okl_api.set_message(
30940                                            G_APP_NAME,
30941                                            G_PAYMENT_SCHD_ERROR,
30942                                            'COL_VALUE',
30943                                             okl_payment_rec.payment_schedule_number,
30944                                            'CONTRACT_NUM',
30945                                            okl_header_rec.contract_number_old||'/'||okl_payment_rec.line_number
30946                                           );
30947                        x_return_status := OKL_API.G_RET_STS_ERROR;
30948                        RAISE load_failed;
30949                     END IF;
30950 
30951                     check_payment_frequency_code(
30952                                                  x_return_status     => x_return_status,
30953                                                  x_msg_count         => x_msg_count,
30954                                                  x_msg_data          => x_msg_data,
30955                                                  p_payment_freq_code => okl_payment_rec.payment_frequency_code,
30956                                                  x_id1               => x_pmnt_freq_id,
30957                                                  x_uom_code          => x_uom_code
30958                                                 );
30959 
30960                     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
30961                        okl_api.set_message(
30962                                            G_APP_NAME,
30963                                            G_INVALID_VALUE,
30964                                            'CONTRACT_NUM',
30965                                            okl_payment_rec.contract_number_old||'/'||okl_payment_rec.line_number,
30966                                            'COL_NAME',
30967                                            'PAYMENT_FREQUENCY_CODE',
30968                                            'COL_VALUE',
30969                                            okl_payment_rec.payment_frequency_code
30970                                           );
30971                        RAISE load_failed;
30972                     END IF;
30973 
30974                     IF (x_uom_code = 'M') THEN
30975                        l_mult_factor := 1;
30976                     ELSIF (x_uom_code = 'Q') THEN
30977                        l_mult_factor := 3;
30978                     ELSIF (x_uom_code = 'S') THEN
30979                        l_mult_factor := 6;
30980                     ELSIF (x_uom_code = 'A') THEN
30981                        l_mult_factor := 12;
30982                     ELSE
30983                        okl_api.set_message(
30984                                            G_APP_NAME,
30985                                            G_UOM_SETUP_ERROR,
30986                                            'COL_VALUE',
30987                                            okl_payment_rec.payment_frequency_code
30988                                           );
30989                        RAISE load_failed;
30990                     END IF;
30991 
30992 
30993                     l_current_start_date := add_months(l_start_date_prev, (l_number_of_periods_prev * l_mult_factor));
30994 
30995                     IF (TRUNC(l_current_start_date) <> TRUNC(okl_payment_rec.start_date)) THEN
30996                        okl_api.set_message(
30997                                            G_APP_NAME,
30998                                            G_PAYMENT_START_DATE_ERROR,
30999                                            'CONTRACT_NUM',
31000                                            okl_payment_rec.contract_number_old||'/'||okl_payment_rec.line_number
31001                                           );
31002                        RAISE load_failed;
31003                     END IF;
31004 
31005                 END IF; --prev checking
31006 
31007                 IF (l_rg_id IS NULL) THEN
31008                    l_rg_id := x_rgp_id;
31009                 END IF;
31010 
31011                 -- Create other rules
31012                 -- Keep a copy to compare with latest record
31013                 create_payment_other_rules(
31014                                            x_return_status      => x_return_status,
31015                                            x_msg_count          => x_msg_count,
31016                                            x_msg_data           => x_msg_data,
31017                                            p_contract_number    => okl_header_rec.contract_number_old,
31018                                            p_line_number        => okl_line_rec.line_number,
31019                                            p_payment_sch_number => okl_payment_rec.payment_schedule_number,
31020                                            p_payment_freq_code  => okl_payment_rec.payment_frequency_code,
31021                                            p_arrears_flag       => okl_payment_rec.arrears_flag,
31022                                            p_advance_payments   => okl_payment_rec.advance_payments,
31023                                            p_payment_amount     => okl_payment_rec.payment_amount,
31024                                            p_start_date         => okl_payment_rec.start_date,
31025                                            p_number_of_periods  => okl_payment_rec.number_of_periods,
31026                                            p_rate               => okl_payment_rec.rate,
31027                                            p_comments           => okl_payment_rec.comments,
31028                                            p_stub_days          => okl_payment_rec.stub_days,
31029                                            p_stub_amount        => okl_payment_rec.stub_amount,
31030                                            p_slh_rulv_rec       => x_slh_rulv_rec,
31031                                            p_chr_id             => x_chrv_rec.id,
31032                                            p_cle_id             => x_cle_id,
31033                                            p_rgp_id             => x_rgp_id
31034                                           );
31035 
31036                 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
31037                    RAISE load_failed;
31038                 END IF;
31039 
31040                 l_progress := '180';
31041 
31042                 l_contract_number_old_prev := okl_payment_rec.contract_number_old;
31043                 l_line_number_prev         := okl_payment_rec.line_number;
31044                 l_payment_type_code_prev   := okl_payment_rec.payment_type_code;
31045                 l_pmnt_sch_num_prev        := okl_payment_rec.payment_schedule_number;
31046                 l_start_date_prev          := okl_payment_rec.start_date;
31047                 l_number_of_periods_prev   := okl_payment_rec.number_of_periods;
31048 
31049              END; --5 Payment begin
31050 
31051           END LOOP; -- Payment Loop
31052 	END IF; --end if of abhsaxen 13-Feb-2008 bug#6773219
31053         END; --2 Line Begin
31054 	--abhsaxen bug#6773219 13-Feb-2008
31055         -- reinitializing the following variables for comparison with the next line that follows
31056            l_prev_asset_number := okl_line_rec.asset_number;
31057            l_prev_corp_book    := okl_line_rec.asset_corporate_book;
31058            l_prev_tax_book     := okl_line_rec.tax_book;
31059         --abhsaxen end bug#6773219 13-Feb-2008
31060 
31061       END LOOP; -- Line Loop
31062 
31063       l_progress := '190';
31064 
31065       -- Process party role once again at Header level
31066       FOR okl_party_rec IN okl_party_csr (okl_header_rec.contract_number_old,
31067                                           NULL)
31068       LOOP
31069          BEGIN --6
31070             l_progress := '200';
31071 
31072             process_party_role(
31073                                  x_return_status       => x_return_status,
31074                                  x_msg_count           => x_msg_count,
31075                                  x_msg_data            => x_msg_data,
31076                                  p_contract_number     => okl_header_rec.contract_number_old,
31077                                  p_chr_id              => x_chrv_rec.id,
31078                                  p_auth_org_id         => okl_header_rec.authoring_org_id,
31079                                  p_line_number         => NULL,
31080                                  p_line_type           => NULL,
31081                                  p_fin_cle_id          => NULL,
31082                                  p_model_cle_id        => NULL,
31083                                  p_service_line_id     => NULL,
31084                                  p_fee_line_id         => NULL,
31085                                  p_usage_line_id       => NULL,
31086                                  p_asset_vendor_name   => okl_party_rec.asset_vendor_name,
31087                                  p_asset_vendor_id     => okl_party_rec.asset_vendor_id,
31088                                  p_service_vendor_name => okl_party_rec.service_vendor_name,
31089                                  p_service_vendor_id   => okl_party_rec.service_vendor_id,
31090                                  p_fees_vendor_name    => okl_party_rec.fees_vendor_name,
31091                                  p_fees_vendor_id      => okl_party_rec.fees_vendor_id,
31092                                  p_guarantor_number    => okl_party_rec.guarantor_number,
31093                                  p_guarantor_id        => okl_party_rec.guarantor_id,
31094                                  p_dealer_name         => okl_party_rec.dealer_name,
31095                                  p_dealer_id           => okl_party_rec.dealer_id,
31096                                  p_guarantor_type      => okl_party_rec.guarantor_type,
31097                                  p_guarantee_type      => okl_party_rec.guarantee_type,
31098                                  p_guaranteed_amount   => okl_party_rec.guaranteed_amount,
31099                                  p_guarantee_date      => okl_party_rec.guarantee_date,
31100                                  p_guarantee_comment   => okl_party_rec.guarantee_comment,
31101                                  p_guarantor_site_number => okl_party_rec.guarantor_site_number,
31102                                  p_guarantor_site_id     => okl_party_rec.guarantor_site_id,
31103                                  p_payment_term          => NULL,
31104                                  p_payment_term_id       => NULL,
31105                                  p_vendor_paysite_id     => NULL,
31106                                  p_vendor_paysite_name   => NULL,
31107                                  p_vendor_payment_method => NULL,
31108                                  p_passthrough_percent      => NULL,
31109                                  p_passthrough_basis_code   => NULL,
31110                                  p_billable_vendor_id       => okl_party_rec.billable_vendor_id,
31111                                  p_billable_vendor_name     => okl_party_rec.billable_vendor_name,
31112                                  p_vend_as_customer_number  => okl_party_rec.vend_as_customer_number,
31113                                  p_vend_as_customer_id      => okl_party_rec.vend_as_customer_id,
31114                                  p_vend_as_cust_acc_id      => okl_party_rec.vend_as_customer_acc_id,
31115                                  p_vend_as_cust_acc_number  => okl_party_rec.vend_as_customer_acc_number,
31116                                  p_vend_bill_to_addr_id     => okl_party_rec.vend_bill_to_addr_id,
31117                                  p_vend_bill_to_addr        => okl_party_rec.vend_bill_to_addr,
31118                                  p_vend_payment_method_id   => okl_party_rec.vend_payment_method_id,
31119                                  p_vend_payment_method      => okl_party_rec.vend_payment_method,
31120                                  p_vend_bank_acc_id         => okl_party_rec.vend_bank_acc_id,
31121                                  p_vend_bank_acc_number     => okl_party_rec.vend_bank_acc_number,
31122                                  p_vend_invoice_format_id   => okl_party_rec.vend_invoice_format_id,
31123                                  p_vend_invoice_format_code => okl_party_rec.vend_invoice_format_code,
31124                                  p_vend_review_invoice_flag => okl_party_rec.vend_review_invoice_flag,
31125                                  p_vend_reason_for_inv_review => okl_party_rec.vend_reason_for_inv_review,
31126                                  p_vend_inv_review_until_date => okl_party_rec.vend_inv_review_until_date,
31127                                  p_pth_base_vendor_site_code  => okl_party_rec.pth_base_vendor_site_code,
31128                                  p_pth_base_vendor_site_id    => okl_party_rec.pth_base_vendor_site_id,
31129                                  p_pth_base_paygroup_code     => okl_party_rec.pth_base_paygroup_code,
31130                                  p_pth_base_pmnt_term_code    => okl_party_rec.pth_base_pmnt_term_code,
31131                                  p_pth_base_pmnt_term_id      => okl_party_rec.pth_base_pmnt_term_id,
31132                                  p_pth_base_pmnt_basis        => okl_party_rec.pth_base_pmnt_basis,
31133                                  p_pth_base_pmnt_start_date   => okl_party_rec.pth_base_pmnt_start_date,
31134                                  p_pth_base_pmnt_method_code  => okl_party_rec.pth_base_pmnt_method_code,
31135                                  p_pth_base_pmnt_freq         => okl_party_rec.pth_base_pmnt_freq,
31136                                  p_pth_base_pmnt_remit_days   => okl_party_rec.pth_base_pmnt_remit_days,
31137                                  p_pth_base_disb_basis        => okl_party_rec.pth_base_disb_basis,
31138                                  p_pth_base_disb_fixed_amount => okl_party_rec.pth_base_disb_fixed_amount,
31139                                  p_pth_base_disb_pct          => okl_party_rec.pth_base_disb_pct,
31140                                  p_pth_base_proc_fee_basis    => okl_party_rec.pth_base_proc_fee_basis,
31141                                  p_pth_base_proc_fee_fixed_amt => okl_party_rec.pth_base_proc_fee_fixed_amt,
31142                                  p_pth_base_proc_pct           => okl_party_rec.pth_base_proc_pct,
31143                                  p_pth_evg_vendor_site_code    => okl_party_rec.pth_evg_vendor_site_code,
31144                                  p_pth_evg_vendor_site_id      => okl_party_rec.pth_evg_vendor_site_id,
31145                                  p_pth_evg_paygroup_code       => okl_party_rec.pth_evg_paygroup_code,
31146                                  p_pth_evg_pmnt_term_code      => okl_party_rec.pth_evg_pmnt_term_code,
31147                                  p_pth_evg_pmnt_term_id        => okl_party_rec.pth_evg_pmnt_term_id,
31148                                  p_pth_evg_pmnt_basis          => okl_party_rec.pth_evg_pmnt_basis,
31149                                  p_pth_evg_pmnt_start_date     => okl_party_rec.pth_evg_pmnt_start_date,
31150                                  p_pth_evg_pmnt_method_code    => okl_party_rec.pth_evg_pmnt_method_code,
31151                                  p_pth_evg_pmnt_freq           => okl_party_rec.pth_evg_pmnt_freq,
31152                                  p_pth_evg_pmnt_remit_days     => okl_party_rec.pth_evg_pmnt_remit_days,
31153                                  p_pth_evg_disb_basis          => okl_party_rec.pth_evg_disb_basis,
31154                                  p_pth_evg_disb_fixed_amount   => okl_party_rec.pth_evg_disb_fixed_amount,
31155                                  p_pth_evg_disb_pct            => okl_party_rec.pth_evg_disb_pct,
31156                                  p_pth_evg_proc_fee_basis      => okl_party_rec.pth_evg_proc_fee_basis,
31157                                  p_pth_evg_proc_fee_fixed_amt  => okl_party_rec.pth_evg_proc_fee_fixed_amt,
31158                                  p_pth_evg_proc_pct            => okl_party_rec.pth_evg_proc_pct,
31159                                  p_attribute_category          => okl_party_rec.attribute_category,
31160                                  p_attribute1                  => okl_party_rec.attribute1,
31161                                  p_attribute2                  => okl_party_rec.attribute2,
31162                                  p_attribute3                  => okl_party_rec.attribute3,
31163                                  p_attribute4                  => okl_party_rec.attribute4,
31164                                  p_attribute5                  => okl_party_rec.attribute5,
31165                                  p_attribute6                  => okl_party_rec.attribute6,
31166                                  p_attribute7                  => okl_party_rec.attribute7,
31167                                  p_attribute8                  => okl_party_rec.attribute8,
31168                                  p_attribute9                  => okl_party_rec.attribute9,
31169                                  p_attribute10                 => okl_party_rec.attribute10,
31170                                  p_attribute11                 => okl_party_rec.attribute11,
31171                                  p_attribute12                 => okl_party_rec.attribute12,
31172                                  p_attribute13                 => okl_party_rec.attribute13,
31173                                  p_attribute14                 => okl_party_rec.attribute14,
31174                                  p_attribute15                 => okl_party_rec.attribute15
31175                                 );
31176 
31177             IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
31178                 RAISE load_failed;
31179             END IF;
31180 
31181             l_progress := '210';
31182 
31183          END; --6 party header begin
31184 
31185       END LOOP; --party role header
31186 
31187       -- Process Payments Interface Record once again at header level
31188           l_contract_number_old_prev := 'INITIAL';
31189           --l_line_number_prev         := -999999999;
31190           l_payment_type_code_prev   := 'INITIAL';
31191           l_pmnt_sch_num_prev        := -999999999;
31192           l_start_date_prev          := NULL;
31193           l_number_of_periods_prev   := -999999999;
31194           l_rg_id                    := NULL;
31195 
31196           FOR okl_payment_rec IN okl_payment_csr(okl_header_rec.contract_number_old,
31197                                                  NULL)
31198           LOOP
31199              BEGIN --5
31200 
31201                check_payment_record(
31202                                     x_return_status              => x_return_status,
31203                                     x_msg_count                  => x_msg_count,
31204                                     x_msg_data                   => x_msg_data,
31205                                     p_contract_number_old        => okl_payment_rec.contract_number_old,
31206                                     p_line_number                => NULL,
31207                                     p_asset_number               => okl_payment_rec.asset_number,
31208                                     p_payment_type_code          => okl_payment_rec.payment_type_code,
31209                                     p_stream_purpose             => okl_payment_rec.stream_purpose_code,
31210                                     p_payment_schedule_number    => okl_payment_rec.payment_schedule_number,
31211                                     p_payment_frequency_code     => okl_payment_rec.payment_frequency_code,
31212                                     p_arrears_flag               => okl_payment_rec.arrears_flag,
31213                                     p_advance_payments           => okl_payment_rec.advance_payments,
31214                                     p_payment_amount             => okl_payment_rec.payment_amount,
31215                                     p_start_date                 => okl_payment_rec.start_date,
31216                                     p_number_of_periods          => okl_payment_rec.number_of_periods,
31217                                     p_rate                       => okl_payment_rec.rate,
31218                                     p_comments                   => okl_payment_rec.comments,
31219                                     p_stub_days                  => okl_payment_rec.stub_days,
31220                                     p_stub_amount                => okl_payment_rec.stub_amount
31221                                    );
31222 
31223                IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
31224                    RAISE load_failed;
31225                END IF;
31226 
31227                IF (l_contract_number_old_prev <> okl_payment_rec.contract_number_old  -- prev checking
31228                     OR
31229                     l_payment_type_code_prev   <> okl_payment_rec.payment_type_code) THEN
31230 
31231                    --do all
31232                    create_payment_rule_group(
31233                                               x_return_status     => x_return_status,
31234                                               x_msg_count         => x_msg_count,
31235                                               x_msg_data          => x_msg_data,
31236                                               p_contract_number   => okl_header_rec.contract_number_old,
31237                                               p_line_number       => NULL,
31238                                               p_payment_type_code => okl_payment_rec.payment_type_code,
31239                                               p_stream_purpose    => okl_payment_rec.stream_purpose_code,
31240                                               p_chr_id            => x_chrv_rec.id,
31241                                               p_cle_id            => NULL,
31242                                               p_rg_id             => l_rg_id,
31243                                               x_rgp_id            => x_rgp_id,
31244                                               x_slh_rulv_rec      => x_slh_rulv_rec
31245                                              );
31246 
31247                    IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
31248                       RAISE load_failed;
31249                    END IF;
31250 
31251                    l_rg_id := x_rgp_id;
31252 
31253                 ELSE
31254                     l_progress := '170';
31255 
31256                     -- Some more validation on Payment Lines
31257                     IF (okl_payment_rec.payment_schedule_number <= l_pmnt_sch_num_prev) THEN
31258                      debug_message('Second check error...');
31259                        okl_api.set_message(
31260                                            G_APP_NAME,
31261                                            G_PAYMENT_SCHD_ERROR,
31262                                            'COL_VALUE',
31263                                             okl_payment_rec.payment_schedule_number,
31264                                            'CONTRACT_NUM',
31265                                            okl_header_rec.contract_number_old||'/'||okl_payment_rec.line_number
31266                                           );
31267                        x_return_status := OKL_API.G_RET_STS_ERROR;
31268                        RAISE load_failed;
31269                     END IF;
31270 
31271                     check_payment_frequency_code(
31272                                                  x_return_status     => x_return_status,
31273                                                  x_msg_count         => x_msg_count,
31274                                                  x_msg_data          => x_msg_data,
31275                                                  p_payment_freq_code => okl_payment_rec.payment_frequency_code,
31276                                                  x_id1               => x_pmnt_freq_id,
31277                                                  x_uom_code          => x_uom_code
31278                                                 );
31279 
31280                     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
31281                        okl_api.set_message(
31282                                            G_APP_NAME,
31283                                            G_INVALID_VALUE,
31284                                            'CONTRACT_NUM',
31285                                            okl_payment_rec.contract_number_old||'/'||okl_payment_rec.line_number,
31286                                            'COL_NAME',
31287                                            'PAYMENT_FREQUENCY_CODE',
31288                                            'COL_VALUE',
31289                                            okl_payment_rec.payment_frequency_code
31290                                           );
31291                        RAISE load_failed;
31292                     END IF;
31293 
31294                     IF (x_uom_code = 'M') THEN
31295                        l_mult_factor := 1;
31296                     ELSIF (x_uom_code = 'Q') THEN
31297                        l_mult_factor := 3;
31298                     ELSIF (x_uom_code = 'S') THEN
31299                        l_mult_factor := 6;
31300                     ELSIF (x_uom_code = 'A') THEN
31301                        l_mult_factor := 12;
31302                     ELSE
31303                        okl_api.set_message(
31304                                            G_APP_NAME,
31305                                            G_UOM_SETUP_ERROR,
31306                                            'COL_VALUE',
31307                                            okl_payment_rec.payment_frequency_code
31308                                           );
31309                        RAISE load_failed;
31310                     END IF;
31311 
31312 
31313                     l_current_start_date := add_months(l_start_date_prev, (l_number_of_periods_prev * l_mult_factor));
31314 
31315                     IF (TRUNC(l_current_start_date) <> TRUNC(okl_payment_rec.start_date)) THEN
31316                        okl_api.set_message(
31317                                            G_APP_NAME,
31318                                            G_PAYMENT_START_DATE_ERROR,
31319                                            'CONTRACT_NUM',
31320                                            okl_payment_rec.contract_number_old||'/'||okl_payment_rec.line_number
31321                                           );
31322                        RAISE load_failed;
31323                     END IF;
31324 
31325                 END IF; --prev checking
31326 
31327                 --IF (l_rg_id IS NULL) THEN
31328                 --   l_rg_id := x_rgp_id;
31329                 --END IF;
31330 
31331                 -- Create other rules
31332                 -- Keep a copy to compare with latest record
31333                 create_payment_other_rules(
31334                                            x_return_status      => x_return_status,
31335                                            x_msg_count          => x_msg_count,
31336                                            x_msg_data           => x_msg_data,
31337                                            p_contract_number    => okl_header_rec.contract_number_old,
31338                                            p_line_number        => NULL,
31339                                            p_payment_sch_number => okl_payment_rec.payment_schedule_number,
31340                                            p_payment_freq_code  => okl_payment_rec.payment_frequency_code,
31341                                            p_arrears_flag       => okl_payment_rec.arrears_flag,
31342                                            p_advance_payments   => okl_payment_rec.advance_payments,
31343                                            p_payment_amount     => okl_payment_rec.payment_amount,
31344                                            p_start_date         => okl_payment_rec.start_date,
31345                                            p_number_of_periods  => okl_payment_rec.number_of_periods,
31346                                            p_rate               => okl_payment_rec.rate,
31347                                            p_comments           => okl_payment_rec.comments,
31348                                            p_stub_days          => okl_payment_rec.stub_days,
31349                                            p_stub_amount        => okl_payment_rec.stub_amount,
31350                                            p_slh_rulv_rec       => x_slh_rulv_rec,
31351                                            p_chr_id             => x_chrv_rec.id,
31352                                            p_cle_id             => NULL,
31353                                            p_rgp_id             => l_rg_id
31354                                           );
31355 
31356                 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
31357                    RAISE load_failed;
31358                 END IF;
31359 
31360                 l_progress := '180';
31361 
31362                 l_contract_number_old_prev := okl_payment_rec.contract_number_old;
31363                 --l_line_number_prev         := okl_payment_rec.line_number;
31364                 l_payment_type_code_prev   := okl_payment_rec.payment_type_code;
31365                 l_pmnt_sch_num_prev        := okl_payment_rec.payment_schedule_number;
31366                 l_start_date_prev          := okl_payment_rec.start_date;
31367                 l_number_of_periods_prev   := okl_payment_rec.number_of_periods;
31368 
31369              END; --5 Payment begin
31370 
31371           END LOOP; -- Payment Loop
31372 
31373       IF (l_no_of_lines = 0
31374           AND
31375           okl_header_rec.import_request_stage <> 'NEW') THEN -- There must be atleast one line, except for NEW contracts
31376 
31377           okl_api.set_message(
31378                               G_APP_NAME,
31379                               G_INVALID_CONTRACT,
31380                               'CONTRACT_NUM',
31381                               okl_header_rec.contract_number_old
31382                              );
31383           x_return_status := OKL_API.G_RET_STS_ERROR;
31384           RAISE load_failed;
31385       END IF;
31386 
31387       COMMIT; -- commit after every Contract to avoid problem with Rollback segment
31388 /*
31389       --
31390       -- Process Contracts depending on import_request_stage
31391       --
31392       IF (x_return_status = OKL_API.G_RET_STS_SUCCESS
31393           AND
31394           okl_header_rec.import_request_stage <> 'NEW' ) THEN
31395           contract_further_process(
31396                                    p_init_msg_list  => OKL_API.G_FALSE,
31397                                    x_return_status  => x_return_status,
31398                                    x_msg_count      => x_msg_count,
31399                                    x_msg_data       => x_msg_data,
31400                                    p_chr_id         => x_chrv_rec.id,
31401                                    p_import_stage   => okl_header_rec.import_request_stage
31402                                   );
31403       END IF;
31404 */
31405 
31406     EXCEPTION
31407 
31408       WHEN load_failed THEN
31409 
31410          report_error (
31411                        x_msg_count => x_msg_count,
31412                        x_msg_data  => x_msg_data
31413                       );
31414          x_return_status := OKL_API.G_RET_STS_ERROR;
31415 
31416     END; -- of Header Begin
31417 
31418       IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN -- Final checking for SUCCESSFUL Processing
31419 
31420          update_interface_status(
31421                                  p_contract_number     => okl_header_rec.contract_number_old,
31422                                  p_new_contract_number => x_chrv_rec.contract_number,
31423                                  p_status              => 'INTERFACED',
31424                                  x_return_status       => x_update_status
31425                                 );
31426          write_to_log('Contract '||okl_header_rec.contract_number_old||'-> loaded as :'||x_chrv_rec.contract_number);
31427          x_total_loaded := nvl(x_total_loaded,0) + 1;
31428 
31429 	       -- hariven - Bug#5393374 - Added - Start
31430       -- Raise Business event for "oracle.apps.okl.la.lease_contract.imported"
31431       raise_business_event( p_chr_id        => x_chrv_rec.id
31432                           , x_return_status => x_return_status);
31433     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
31434       write_to_log('Raising Business Event For Contract -' ||x_chrv_rec.contract_number ||' FAILED!');
31435       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
31436     END IF;
31437       -- hariven - Bug#5393374 - Added - End
31438 
31439       ELSE
31440 
31441          ROLLBACK; -- Rollback any incomplete transactions
31442          update_interface_status(
31443                                  p_contract_number     => okl_header_rec.contract_number_old,
31444                                  p_new_contract_number => okl_header_rec.contract_number,
31445                                  p_status              => 'ERROR',
31446                                  x_return_status       => x_update_status
31447                                 );
31448       END IF;
31449 
31450       COMMIT;
31451 
31452       --
31453       -- Process Contracts depending on import_request_stage
31454       --
31455       IF (x_return_status = OKL_API.G_RET_STS_SUCCESS
31456           AND
31457           okl_header_rec.import_request_stage <> 'NEW' ) THEN
31458           contract_further_process(
31459                                    p_init_msg_list  => OKL_API.G_FALSE,
31460                                    x_return_status  => x_return_status,
31461                                    x_msg_count      => x_msg_count,
31462                                    x_msg_data       => x_msg_data,
31463                                    p_chr_id         => x_chrv_rec.id,
31464                                    p_import_stage   => okl_header_rec.import_request_stage
31465                                   );
31466       END IF;
31467 
31468       debug_message('========================done ');
31469       write_to_log('========================done ');
31470 
31471   END LOOP; -- okl_header_csr
31472 
31473   return;
31474 
31475   EXCEPTION
31476      WHEN item_not_found_error THEN
31477       x_return_status := Okc_Api.G_RET_STS_ERROR;
31478 
31479     WHEN OTHERS THEN
31480       okl_api.set_message(
31481                           G_APP_NAME,
31482                           G_UNEXPECTED_ERROR,
31483                           'OKL_SQLCODE',
31484                           SQLCODE,
31485                           'OKL_SQLERRM',
31486                           SQLERRM || ': '||G_PKG_NAME||'.'||l_proc_name
31487                          );
31488       x_return_status := OKL_API.G_RET_STS_ERROR;
31489 
31490       report_error (
31491                     x_msg_count => x_msg_count,
31492                     x_msg_data  => x_msg_data
31493                    );
31494       debug_message('Progress: '||l_progress);
31495       debug_message('========================done ');
31496 
31497   END Load_Input_Record;
31498 
31499 --+++++++++++++++++++++++++++++++ Load Interface +++++++++++++++++++++++++++
31500 -- Function to submit the concurrent request for Contract Import.
31501 
31502   FUNCTION Submit_Import_Contract(
31503   		   			p_api_version       IN NUMBER,
31504   		   			p_init_msg_list 	  IN VARCHAR2,
31505   		   			x_return_status     OUT NOCOPY VARCHAR2,
31506   		   			x_msg_count         OUT NOCOPY NUMBER,
31507   		   			x_msg_data 		  OUT NOCOPY VARCHAR2,
31508   		   			p_batch_number  	  IN VARCHAR2,
31509   		   			p_contract_number   IN VARCHAR2,
31510   		   			p_start_date  	  IN DATE,
31511   		   			p_end_date  	  IN DATE,
31512   		   			p_party_number 	  IN VARCHAR2)
31513    RETURN NUMBER
31514    IS
31515 
31516     x_request_id           NUMBER;
31517 
31518  l_start_date  VARCHAR2(30);
31519  l_end_date    VARCHAR2(30);
31520 
31521 
31522 BEGIN
31523 
31524     x_return_status := Okl_Api.G_RET_STS_SUCCESS;
31525 
31526 -- Convert the date to Varchar2
31527 
31528     l_start_date := Fnd_Date.date_to_canonical(p_start_date);
31529     l_end_date   := Fnd_Date.date_to_canonical(p_end_date);
31530 
31531 
31532    -- Submit Concurrent Program Request for interest calculation
31533     FND_REQUEST.set_org_id(mo_global.get_current_org_id); --MOAC- Concurrent request
31534     x_request_id := Fnd_Request.SUBMIT_REQUEST
31535 			(application 	=> 'OKL',
31536 			program 		=> 'OKLXKOI',
31537 			description 		=> 'Contract Import',
31538 			argument1 		=> p_batch_number,
31539 			argument2 		=> p_start_date,
31540 			argument3 		=> p_end_date,
31541 			argument4 		=> p_contract_number,
31542 			argument5 		=> p_party_number);
31543 
31544 
31545    IF x_request_id = 0 THEN
31546        -- Raise Error if the request has not been submitted successfully.
31547        Okc_Api.set_message(p_app_name => 'OFA',
31548                            p_msg_name => 'FA_DEPRN_TAX_ERROR',
31549                            p_token1   => 'REQUEST_ID',
31550                            p_token1_value => x_request_id);
31551 
31552         RAISE Okl_Api.g_exception_error;
31553    END IF;
31554 
31555     RETURN x_request_id;
31556 
31557   EXCEPTION
31558 
31559     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
31560         x_return_status := Okl_Api.G_RET_STS_ERROR;
31561        RETURN x_request_id;
31562 
31563     WHEN OTHERS THEN
31564         x_return_status := Okl_Api.G_RET_STS_UNEXP_ERROR;
31565         RETURN x_request_id;
31566 
31567   END Submit_Import_Contract;
31568 
31569   PROCEDURE Process_Record_Parallel (
31570                             errbuf             OUT NOCOPY VARCHAR2,
31571                             retcode            OUT NOCOPY VARCHAR2,
31572                             p_batch_number     IN VARCHAR2,
31573                             p_start_date_from  IN VARCHAR2,
31574                             p_start_date_to    IN VARCHAR2,
31575                             p_contract_number  IN VARCHAR2,
31576                             p_customer_number  IN VARCHAR2,
31577                             p_instance_number  IN NUMBER
31578                            ) IS
31579 
31580 
31581 request_id NUMBER := 0;
31582 
31583 batch_list varchar2(2000);
31584 start_pos number;
31585 l_batch_number okl_header_interface.batch_number%type;
31586 req_id req_tab_type;
31587 
31588 req_data varchar2(10);
31589 cur_req_pos number;
31590 
31591 batch_num_tab batch_tab_type;
31592 batch_counter number := 0;
31593 
31594 -- Parameters
31595 l_max_lines_per_worker number := 50000;
31596 l_line_count number := 0;
31597 l_header_count number := 0;
31598 
31599 l_partition_size number;
31600 l_max_partition_size number := 50000;
31601 l_parallel_count number;
31602 l_max_parallel_count number := 500;
31603 
31604 l_contract_tab batch_tab_type;
31605 l_contract_num_count number := 0;
31606 
31607 l_contract_num_tab batch_tab_type;
31608 l_count_tab req_tab_type;
31609 l_contract_num_tab2 batch_tab_type;
31610 l_count_tab2 req_tab_type;
31611 l_running_total number := 0;
31612 l_worker_id number := 1;
31613 l_percent number := 1;
31614 l_contract_tab_count req_tab_type;
31615 l_status_tab batch_tab_type;
31616 l_temp_count number := 1;
31617 
31618 cursor c1 is
31619   select b.contract_number_old, count(*)
31620   from okl_lines_interface b
31621   where b.contract_number_old in (
31622   select a.contract_number_old
31623   from okl_header_interface a
31624   where
31625   (
31626           a.batch_number        = p_batch_number
31627           OR
31628           a.contract_number_old = p_contract_number
31629           OR
31630           (
31631            a.customer_number    = p_customer_number
31632            AND
31633            a.start_date         between p_start_date_from AND p_start_date_to
31634           )
31635          )
31636   AND    a.status in ('NEW','ERROR')
31637   AND    a.contract_number_old = b.contract_number_old
31638   )
31639   group by b.contract_number_old
31640   order by 2;
31641 
31642 cursor c2 is
31643   select a.contract_number_old
31644   from okl_header_interface a
31645   where
31646   (
31647           a.batch_number        = p_batch_number
31648           OR
31649           a.contract_number_old = p_contract_number
31650           OR
31651           (
31652            a.customer_number    = p_customer_number
31653            AND
31654            a.start_date         between p_start_date_from AND p_start_date_to
31655           )
31656   )
31657   AND    a.status in ('NEW','ERROR');
31658 
31659   FUNCTION get_max_lines_per_worker return number IS
31660   BEGIN
31661     --AKP:Get value from profile
31662     return fnd_profile.value('OKL_MAX_LINES_PER_WORKER');
31663     --return 10000;
31664   END;
31665 
31666 
31667 begin
31668 
31669   write_to_log('In OKL_OPEN_INTERFACE_PVT.process_record_parallel...');
31670 
31671   if (p_instance_number is null) and (instr(NVL(p_batch_number,'?'),',') = 0)
31672   then
31673     -- Call the existing process_record (Old way)
31674     Process_Record (
31675                             errbuf          ,
31676                             retcode         ,
31677                             p_batch_number  ,
31678                             p_start_date_from,
31679                             p_start_date_to  ,
31680                             p_contract_number,
31681                             p_customer_number,
31682                             null
31683                    );
31684     return;
31685   else
31686 
31687 
31688     req_data := fnd_conc_global.request_data;
31689     write_to_log('req_data retrieved =' || req_data);
31690 
31691     if req_data is not null then
31692         errbuf := 'Done!';
31693         retcode := 0;
31694         return;
31695     end if;
31696 
31697     l_status_tab.delete;
31698     if (p_instance_number = 1) then
31699       write_to_log('Submit Old Concurrent program as is...');
31700 
31701       --AKP Change colname: assigned_process to scheduled_worker_id
31702       update okl_header_interface a
31703       set a.scheduled_worker_id = '1'
31704       where
31705       (
31706             a.batch_number        = p_batch_number
31707             OR
31708             a.contract_number_old = p_contract_number
31709             OR
31710             (
31711              a.customer_number    = p_customer_number
31712              AND
31713              a.start_date         between p_start_date_from AND p_start_date_to
31714             )
31715            )
31716       AND    a.status in ('NEW','ERROR');
31717       commit;
31718 
31719       FND_REQUEST.set_org_id(mo_global.get_current_org_id); --MOAC- Concurrent request
31720       request_id := FND_REQUEST.SUBMIT_REQUEST(
31721                     application => 'OKL',
31722                     program => 'OKLXKOIC',  -- AKP: Change program name
31723                     sub_request => TRUE,
31724                     argument1 => p_batch_number,
31725                     argument2 => p_start_date_from ,
31726                     argument3 => p_start_date_to ,
31727                     argument4 => p_contract_number ,
31728                     argument5 => p_customer_number ,
31729                     argument6 => '1'
31730                    );
31731 
31732       if (request_id = 0) then
31733           errbuf := fnd_message.get;
31734           retcode := 2;
31735       else
31736           retcode := 0;
31737       end if;
31738       fnd_conc_global.set_req_globals(conc_status => 'PAUSED',
31739                                       request_data => to_char(1));
31740       errbuf := 'Sub-Request submitted!';
31741       retcode := 0;
31742 
31743       return;
31744     end if;
31745 
31746 
31747     if (p_instance_number is null) and (instr(p_batch_number,',') > 0) then
31748 
31749       -------------- Copied from here
31750       batch_num_tab.delete;
31751       req_id.delete;
31752 
31753       batch_list := ltrim(rtrim(p_batch_number));  -- Separated by commas
31754       write_to_log('Before:batch_list=' || batch_list);
31755       -- Has comma at the end
31756       if (substr(batch_list,length(batch_list),1) = ',') then
31757         batch_list := substr(batch_list, 1, length(batch_list)-1);
31758       end if;
31759       write_to_log('After:batch_list=' || batch_list);
31760       start_pos := 1;
31761       for i in 1..length(batch_list)
31762       loop
31763         if (substr(batch_list,i,1) = ',') then
31764           l_batch_number := ltrim(rtrim(substr(batch_list, start_pos, i - start_pos )));
31765           write_to_log('i=' || i || ' start_pos=' || start_pos || ' l_batch_number=' || l_batch_number);
31766           if (l_batch_number is not null) then
31767             batch_counter := batch_counter + 1;
31768             batch_num_tab(batch_counter) := l_batch_number;
31769           end if;
31770 
31771           start_pos := i+1;
31772         end if;
31773       end loop;
31774 
31775       l_batch_number := ltrim(rtrim(substr(batch_list, start_pos, length(batch_list) - start_pos +1)));
31776       write_to_log('start_pos=' || start_pos || ' length=' || length(batch_list)|| ' l_batch_number=' || l_batch_number);
31777       if (l_batch_number is not null) then
31778         batch_counter := batch_counter + 1;
31779         batch_num_tab(batch_counter) := l_batch_number;
31780       end if;
31781 
31782       write_to_log('batch_counter=' || batch_counter);
31783 
31784       for i in batch_num_tab.first..batch_num_tab.last
31785       loop
31786         write_to_log('batch_num_tab(' || i || ')=' || batch_num_tab(i));
31787       end loop;
31788 
31789       req_data := fnd_conc_global.request_data;
31790       write_to_log('req_data retrieved =' || req_data);
31791 
31792       if req_data is not null then
31793           errbuf := 'Done!';
31794           retcode := 0;
31795           return;
31796       else
31797         for i in batch_num_tab.first..batch_num_tab.last
31798         loop
31799           l_batch_number := batch_num_tab(i);
31800           update okl_header_interface
31801           set    scheduled_worker_id = to_char(i)
31802           where batch_number = l_batch_number;
31803           commit;
31804 
31805           write_to_log('Submitting for ' || l_batch_number);
31806           FND_REQUEST.set_org_id(mo_global.get_current_org_id); --MOAC- Concurrent request
31807           request_id := FND_REQUEST.SUBMIT_REQUEST(
31808                       application => 'OKL',
31809                       program => 'OKLXKOIC',  -- AKP: Change program name
31810                       sub_request => TRUE,
31811                       argument1 => l_batch_number,
31812                       argument2 => p_start_date_from ,
31813                       argument3 => p_start_date_to ,
31814                       argument4 => p_contract_number ,
31815                       argument5 => p_customer_number ,
31816                       argument6 => to_char(i)
31817                      );
31818 
31819           if (request_id = 0) then
31820             errbuf := fnd_message.get;
31821             retcode := 2;
31822           end if;
31823 
31824         end loop;
31825         fnd_conc_global.set_req_globals(conc_status => 'PAUSED',
31826                                        request_data => to_char(1));
31827         errbuf := 'Sub-Request submitted!';
31828         retcode := 0;
31829       end if;
31830 
31831       -------------- Copied to here
31832 
31833     else
31834 
31835 
31836       l_max_lines_per_worker := get_max_lines_per_worker();
31837       write_to_log('Max lines per worker='||l_max_lines_per_worker);
31838 
31839       select count(*) into l_header_count
31840       from   okl_header_interface b
31841       where (
31842               b.batch_number        = p_batch_number
31843               OR
31844               b.contract_number_old = p_contract_number
31845               OR
31846               (
31847                b.customer_number    = p_customer_number
31848                AND
31849                b.start_date         between p_start_date_from AND p_start_date_to
31850               )
31851              )
31852       AND    b.status in ('NEW','ERROR');
31853 
31854       select count(*) into l_line_count
31855       from okl_lines_interface a
31856       where a.contract_number_old in (
31857       select b.contract_number_old
31858       from   okl_header_interface b
31859       where (
31860               b.batch_number        = p_batch_number
31861               OR
31862               b.contract_number_old = p_contract_number
31863               OR
31864               (
31865                b.customer_number    = p_customer_number
31866                AND
31867                b.start_date         between p_start_date_from AND p_start_date_to
31868               )
31869              )
31870       AND    b.status in ('NEW','ERROR')
31871       AND    b.contract_number_old = a.contract_number_old
31872       );
31873 
31874       write_to_log('l_header_count=' || l_header_count);
31875       write_to_log('l_line_count=' || l_line_count);
31876 
31877         if (nvl(l_max_lines_per_worker,0) < 1) then
31878           l_max_partition_size := 100000;
31879         else
31880           l_max_partition_size := l_max_lines_per_worker;
31881         end if;
31882         l_partition_size := round((l_line_count+l_header_count)/p_instance_number,0);
31883 
31884         if (l_partition_size > l_max_partition_size) then
31885           l_partition_size := l_max_partition_size;
31886         end if;
31887         write_to_log('l_partition_size=' || l_partition_size);
31888 
31889         l_parallel_count := round((l_line_count+l_header_count)/l_partition_size, 0);
31890 
31891         if (l_parallel_count > l_max_parallel_count) then
31892           l_parallel_count := l_max_parallel_count;
31893         end if;
31894         write_to_log('l_parallel_count=' || l_parallel_count);
31895 
31896 
31897       if ((l_line_count + l_header_count = 0) or (l_header_count = 0)) then
31898         write_to_log('No contracts/lines eligible for loading...');
31899         retcode := 0;
31900       elsif (l_Line_count = 0) then
31901         null;
31902         write_to_log('Only headers exist. No lines...');
31903         -- l_contract_num_tab, tab2, l_status_tab, l_temp_count
31904 
31905         write_to_log('Before open c2...');
31906         open c2;
31907         loop
31908           fetch c2 bulk collect into
31909             l_contract_num_tab2
31910           limit 10000;
31911           write_to_log('After fetch c2...');
31912           exit when l_contract_num_tab2.count = 0;
31913           for i in 1..l_contract_num_tab2.count loop
31914             l_contract_num_tab(l_temp_count) := l_contract_num_tab2(i);
31915             l_temp_count := l_temp_count + 1;
31916           end loop;
31917         end loop;
31918         close c2;
31919         write_to_log('After close c2...');
31920         l_worker_id := 1;
31921         for i in 1..l_contract_num_tab.count loop
31922           l_status_tab(i) := to_char(l_worker_id);
31923           l_worker_id := l_worker_id + 1;
31924           if (l_worker_id > l_parallel_count) then
31925             l_worker_id := 1;
31926           end if;
31927         end loop;
31928         write_to_log('After status_tab population ...');
31929         forall i in l_contract_num_tab.first..l_contract_num_tab.last
31930           update okl_header_interface
31931           set    scheduled_worker_id = l_status_tab(i)
31932           where  contract_number_old = l_contract_num_tab(i);
31933         write_to_log('After bulk update...');
31934 
31935         /* ************** */
31936         write_to_log('Before submitting: l_worker_id=' || l_worker_id);
31937         for i in 1..l_parallel_count
31938         loop
31939             FND_REQUEST.set_org_id(mo_global.get_current_org_id); --MOAC- Concurrent request
31940             request_id := FND_REQUEST.SUBMIT_REQUEST(
31941                         application => 'OKL',
31942                         program => 'OKLXKOIC', -- AKP Change program name
31943                         sub_request => TRUE,
31944                         argument1 => p_batch_number,
31945                         argument2 => p_start_date_from ,
31946                         argument3 => p_start_date_to ,
31947                         argument4 => p_contract_number ,
31948                         argument5 => p_customer_number ,
31949                         argument6 => to_char(i)
31950                        );
31951 
31952             if (request_id = 0) then
31953               errbuf := fnd_message.get;
31954               retcode := 2;
31955             end if;
31956 
31957         end loop;
31958         fnd_conc_global.set_req_globals(conc_status => 'PAUSED',
31959                                          request_data => to_char(1));
31960         errbuf := 'Sub-Request submitted!';
31961         retcode := 0;
31962 
31963         write_to_log('Done Spawning Child Processes...');
31964         /* ************** */
31965       else
31966 
31967         /*if (nvl(l_max_lines_per_worker,0) < 1) then
31968           l_max_partition_size := 100000;
31969         else
31970           l_max_partition_size := l_max_lines_per_worker;
31971         end if;
31972         l_partition_size := round((l_line_count+l_header_count)/p_instance_number,0);
31973 
31974         if (l_partition_size > l_max_partition_size) then
31975           l_partition_size := l_max_partition_size;
31976         end if;
31977         write_to_log('l_partition_size=' || l_partition_size);
31978 
31979         l_parallel_count := round((l_line_count+l_header_count)/l_partition_size, 0);
31980 
31981         if (l_parallel_count > l_max_parallel_count) then
31982           l_parallel_count := l_max_parallel_count;
31983         end if;
31984         write_to_log('l_parallel_count=' || l_parallel_count); */
31985 
31986         l_contract_tab.delete;
31987         l_contract_tab_count.delete;
31988         l_contract_num_count:= 1;
31989 
31990         l_contract_num_tab.delete;
31991         l_count_tab.delete;
31992         l_contract_num_tab2.delete;
31993         l_count_tab2.delete;
31994         l_running_total := 0;
31995         l_worker_id := 1;
31996 
31997         write_to_log('After initializing...');
31998         l_temp_count := 1;
31999         open c1;
32000         loop
32001           fetch c1 bulk collect into l_contract_num_tab2, l_count_tab2
32002             LIMIT G_BULK_BATCH_SIZE;
32003           if (l_contract_num_tab2.count=0) then
32004             exit;
32005           else
32006             null;
32007             --Populate l_contract_num_tab and l_count_tab from 2 above
32008             for i in l_contract_num_tab2.first..l_contract_num_tab2.last loop
32009               l_contract_num_tab(l_temp_count) := l_contract_num_tab2(i);
32010               l_count_tab(l_temp_count) := l_count_tab2(i);
32011               l_temp_count := l_temp_count + 1;
32012             end loop;
32013           end if;
32014         end loop;
32015         close c1;
32016 
32017         write_to_log('l_contract_num_tab.count=' || l_contract_num_tab.count);
32018 
32019         if (l_contract_num_tab.count > 0) then
32020 
32021           for i in l_contract_num_tab.first .. l_contract_num_tab.last loop
32022 
32023             write_to_log('processing l_contract_num_tab(' || i || ')=' || l_contract_num_tab(i));
32024             l_contract_tab(l_contract_num_count) := l_contract_num_tab(i);
32025             l_contract_tab_count(l_contract_num_count) := l_count_tab(i);
32026             l_contract_num_count := l_contract_num_count + 1;
32027 
32028             l_running_total := l_running_total + l_count_tab(i) + 1;
32029             --write_to_log('l_contract_num_count=' || l_contract_num_count);
32030             --write_to_log('l_running_total=' || l_running_total);
32031 
32032             l_percent := round((l_running_total-l_partition_size)*100/l_partition_size,0);
32033             --write_to_log('l_percent=' || l_percent);
32034             if (l_running_total = l_partition_size) then
32035                 for j in 1..l_contract_num_count-1 loop
32036                   --write_to_log(l_contract_tab(j) || ' on worker ' || l_worker_id);
32037                   l_status_tab(j) := to_char(l_worker_id);
32038                   write_to_log(l_contract_tab(j) || ' on worker ' || l_worker_id ||
32039                      ' lines -> ' || l_contract_tab_count(j));
32040                 end loop;
32041                 -- AKP: Change assigned_process to scheduled_worker_id
32042                 forall j in l_status_tab.first..l_status_tab.last
32043                   update okl_header_interface set scheduled_worker_id=l_status_tab(j)
32044                   where  contract_number_old = l_contract_tab(j);
32045                 commit;
32046 
32047                 l_running_total := 0;
32048                 l_contract_num_count := 1;
32049                 l_worker_id := l_worker_id + 1;
32050                 l_contract_tab.delete;
32051                 l_contract_tab_count.delete;
32052                 l_status_tab.delete;
32053             elsif (l_running_total > l_partition_size) then
32054               if ((l_contract_num_count > 2)  and round((l_running_total-l_partition_size)*100/l_partition_size,0) >10 )
32055               then
32056                 l_contract_num_count := l_contract_num_count - 1;
32057                 --write_to_log('Reduced contract_num_count=' || l_contract_num_count);
32058                 for j in 1..l_contract_num_count-1 loop
32059                   l_status_tab(j) := to_char(l_worker_id);
32060                   write_to_log(l_contract_tab(j) || ' on worker ' || l_worker_id ||
32061                      ' lines -> ' || l_contract_tab_count(j));
32062                 end loop;
32063                 -- AKP: Change assigned_process to scheduled_worker_id
32064                 forall j in l_status_tab.first..l_status_tab.last
32065                   update okl_header_interface set scheduled_worker_id=l_status_tab(j)
32066                   where  contract_number_old = l_contract_tab(j);
32067                 commit;
32068 
32069                 l_running_total := 0;
32070                 l_contract_num_count := 1;
32071                 l_worker_id := l_worker_id + 1;
32072                 l_contract_tab.delete;
32073                 l_contract_tab_count.delete;
32074                 l_status_tab.delete;
32075                 l_contract_tab(l_contract_num_count) := l_contract_num_tab(i);
32076                 l_contract_tab_count(l_contract_num_count) := l_count_tab(i);
32077                 l_contract_num_count := l_contract_num_count + 1;
32078               else
32079                 for j in 1..l_contract_num_count-1 loop
32080                   --write_to_log(l_contract_tab(j) || ' on worker ' || l_worker_id);
32081                   l_status_tab(j) := to_char(l_worker_id);
32082                   write_to_log(l_contract_tab(j) || ' on worker ' || l_worker_id ||
32083                      ' lines -> ' || l_contract_tab_count(j));
32084                 end loop;
32085                 -- AKP: Change assigned_process to scheduled_worker_id
32086                 forall j in l_status_tab.first..l_status_tab.last
32087                   update okl_header_interface set scheduled_worker_id=l_status_tab(j)
32088                   where  contract_number_old = l_contract_tab(j);
32089                 commit;
32090 
32091                 l_running_total := 0;
32092                 l_contract_num_count := 1;
32093                 l_worker_id := l_worker_id + 1;
32094                 l_contract_tab.delete;
32095                 l_contract_tab_count.delete;
32096                 l_status_tab.delete;
32097               end if;
32098             end if;  -- if contract_num_tab.count > 0
32099 
32100           end loop;
32101         end if;
32102 
32103         write_to_log('Outside...contract_num_count=' || l_contract_num_count
32104                      || ' l_worker_id=' || l_worker_id);
32105         if (l_contract_tab.count > 0) then
32106                 for j in 1..l_contract_num_count-1 loop
32107                   --write_to_log(l_contract_tab(j) || ' on worker ' || l_worker_id);
32108                   l_status_tab(j) := to_char(l_worker_id);
32109                   write_to_log(l_contract_tab(j) || ' on worker ' || l_worker_id ||
32110                      ' lines -> ' || l_contract_tab_count(j));
32111                 end loop;
32112                 -- AKP: Change assigned_process to scheduled_worker_id
32113                 forall j in l_status_tab.first..l_status_tab.last
32114                   update okl_header_interface set scheduled_worker_id=l_status_tab(j)
32115                   where  contract_number_old = l_contract_tab(j);
32116                 commit;
32117 
32118                 l_running_total := 0;
32119                 l_contract_num_count := 1;
32120                 l_worker_id := l_worker_id + 1;
32121                 l_contract_tab.delete;
32122                 l_contract_tab_count.delete;
32123                 l_status_tab.delete;
32124         end if;
32125 
32126         /*end loop;
32127         close c1; */
32128 
32129 
32130         write_to_log('Before submitting: l_worker_id=' || l_worker_id);
32131         if (l_worker_id > l_max_parallel_count + 1) then
32132           l_worker_id := l_max_parallel_count + 1;
32133           write_to_log('ALERT:Some workers can not be started because of resource. Please rerun your job later after this submission finishes.');
32134         end if;
32135         for i in 1..l_worker_id -1
32136         loop
32137             FND_REQUEST.set_org_id(mo_global.get_current_org_id); --MOAC- Concurrent request
32138             request_id := FND_REQUEST.SUBMIT_REQUEST(
32139                         application => 'OKL',
32140                         program => 'OKLXKOIC', -- AKP Change program name
32141                         sub_request => TRUE,
32142                         argument1 => p_batch_number,
32143                         argument2 => p_start_date_from ,
32144                         argument3 => p_start_date_to ,
32145                         argument4 => p_contract_number ,
32146                         argument5 => p_customer_number ,
32147                         argument6 => to_char(i)
32148                        );
32149 
32150             if (request_id = 0) then
32151               errbuf := fnd_message.get;
32152               retcode := 2;
32153             end if;
32154 
32155         end loop;
32156         fnd_conc_global.set_req_globals(conc_status => 'PAUSED',
32157                                          request_data => to_char(1));
32158         errbuf := 'Sub-Request submitted!';
32159         retcode := 0;
32160 
32161         write_to_log('Done Spawning Child Processes...');
32162 
32163       end if;  -- if line_count = 0
32164     end if;  -- if instance_number
32165 
32166   end if;  -- if parallel
32167 
32168 
32169 exception when FND_API.G_EXC_ERROR THEN
32170             write_to_log('G_EXC_ERROR');
32171             raise FND_API.G_EXC_ERROR;
32172           when others then
32173             write_to_log('OTHERS');
32174             FND_MESSAGE.SET_NAME('AR', 'HZ_STAGE_SQL_ERROR');
32175             FND_MESSAGE.SET_TOKEN('PROC' ,'Parallel Contract import failed');
32176             FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
32177             FND_MSG_PUB.ADD;
32178             RAISE FND_API.G_EXC_ERROR;
32179 end;
32180 
32181 
32182 END okl_open_interface_pvt;