Sei sulla pagina 1di 72

create or replace PACKAGE BODY XXOKS_SVC_BUILD_PKG AS

/*
***********************************************************************************
********
|
| Project : O2C EXTENSIONS
| Object : OKS_EXT_SVC_BUILD_01
| Version : $Rev: 01 $
| Author : Raghavendar Reddy Nanugonda
| Last Update Date :
|
| Description : This Packege is Customized API to Standardise the
Service Contract Build Process
This Custom API can used for different purpose like
Conversion of Service Contract from
Legacy and recurring Service Build Process
|
| Maintenance History:
| Date By Description
| --------------- ---------------
------------------------------------------------------------------------*/
l_head_rec_type OKS_CONTRACTS_PUB.Header_Rec_Type;
l_Lines_Rec_Type OKS_CONTRACTS_PUB.line_Rec_Type;
l_header_contacts_tbl OKS_CONTRACTS_PUB.contact_tbl;
l_header_sales_crd_tbl OKS_CONTRACTS_PUB.SalesCredit_tbl;
l_header_articles_tbl OKS_CONTRACTS_PUB.obj_articles_tbl;
l_instance_rec CSI_DATASTRUCTURES_PUB.instance_rec;
l_ext_attrib_values_tbl CSI_DATASTRUCTURES_PUB.extend_attrib_values_tbl;
l_party_tbl CSI_DATASTRUCTURES_PUB.party_tbl;
l_account_tbl CSI_DATASTRUCTURES_PUB.party_account_tbl;
l_pricing_attrib_tbl CSI_DATASTRUCTURES_PUB.pricing_attribs_tbl;
l_org_assignments_tbl CSI_DATASTRUCTURES_PUB.organization_units_tbl;
l_asset_assignment_tbl CSI_DATASTRUCTURES_PUB.instance_asset_tbl;
l_txn_rec CSI_DATASTRUCTURES_PUB.transaction_rec;
l_k_covd_rec OKS_CONTRACTS_PUB.Covered_level_Rec_Type;
l_price_attribs OKS_CONTRACTS_PUB.Pricing_attributes_Type;
l_strm_level_tbl OKS_BILL_SCH.streamlvl_tbl;
l_head_update_rec_type OKC_CONTRACT_PUB.chrv_rec_type;
l_chrv_rec OKC_CONTRACT_PUB.chrv_rec_type;
l_line_update_rec_type OKC_CLE_PVT.clev_rec_type;
l_clev_rec OKC_CLE_PVT.clev_rec_type;
l_txn_tbl CSI_DATASTRUCTURES_PUB.transaction_tbl;
l_ctr_rdg_tbl CSI_CTR_DATASTRUCTURES_PUB.counter_readings_tbl;
l_ctr_prop_rdg_tbl CSI_CTR_DATASTRUCTURES_PUB.ctr_property_readings_tbl;
l_cp_line_id Number;
l_chrid Number;
l_Service_line_id Number;
l_api_version Number :=1.0;
l_commit Varchar2(24):=fnd_api.g_false;
l_init_msg_list Varchar2(540):=fnd_api.g_true;
l_validation_level Number;
l_num_hdr_rec_cnt Number;
l_num_line_rec_cnt Number;
lv_run_id Number;
lv_err_msg Varchar2(1550);
l_return_status Varchar2(2);
lv_status Varchar2(2);
l_msg_count NUmber := 0;
l_msg_data Varchar2(240);
l_msg_index_out Number;
l_counter_read_index number:=0;
l_location_number Number;
l_location_id Number;
l_hdr_record_id Number;
l_line_record_id Number;
l_contract_number varchar2(120);
l_transaction_type_id Number;
l_inv_org_id NUMBER;
l_org_id Number;
l_line_cnt Number:=0;
l_op_unit_id Number;

Procedure Create_counter_reading(p_start_date IN DATE,


p_end_date IN DATE,
p_counter_id IN Number,
p_status OUT Varchar2)
IS
l_transaction_id number;
BEGIN
SELECT csi_transactions_s.nextval
INTO l_transaction_id
FROM dual;
l_return_status:=Null;
l_msg_count:=0;
l_msg_data :=NULL;
l_txn_tbl.delete;
l_ctr_rdg_tbl.delete;
l_counter_read_index :=l_counter_read_index+1;
l_txn_tbl(1). TRANSACTION_DATE := p_start_date;
l_txn_tbl(1).SOURCE_TRANSACTION_DATE := p_end_date;
l_txn_tbl(1).TRANSACTION_TYPE_ID
:=l_transaction_type_id;-- Hardcoded As per Requirement
l_txn_tbl(1).transaction_id :=
l_transaction_id;
l_ctr_rdg_tbl(1).COUNTER_ID := p_counter_id
;
l_ctr_rdg_tbl(1).COUNTER_READING := 0 ;
--l_ctr_rdg_tbl(1).ADJUSTMENT_READING := 0 ;
l_ctr_rdg_tbl(1).TRANSACTION_ID :=
l_transaction_id;
l_ctr_rdg_tbl(1).PARENT_TBL_INDEX := 1;
CSI_COUNTER_READINGS_PUB.Capture_Counter_Reading
(
p_api_version => l_api_version
,p_commit => l_commit
,p_init_msg_list =>
l_init_msg_list
,p_validation_level =>
l_validation_level
,p_txn_tbl => l_txn_tbl
,p_ctr_rdg_tbl => l_ctr_rdg_tbl
,p_ctr_prop_rdg_tbl =>
l_ctr_prop_rdg_tbl
,x_return_status =>
l_return_status
,x_msg_count => l_msg_count
,x_msg_data => l_msg_data
);
IF (l_return_status <> Fnd_Api.g_ret_sts_success) THEN
lv_err_msg := 'Create_Counter_Reading :API
Error:';
p_status := 'E';
Update XXOKS_SVC_BUILD_LINES_STG set
process_flag='E',contract_number=l_contract_number
WHERE record_id=l_line_record_id;
FOR i IN 1 .. l_msg_count
LOOP
Fnd_Msg_Pub.get (
p_msg_index => i
,p_encoded => Fnd_Api.G_FALSE
,p_data => l_msg_data
,p_msg_index_out => l_msg_index_out
);
lv_err_msg := lv_err_msg || l_msg_data;

APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail
('OKS_EXT_01',lv_run_id,-
1,'XXOKS_SVC_BUILD_LINES_STG','','',
'ERROR_TYPE','Capture_Counter_Reading','','','','','','',
'','','','','','','','','','','','',
lv_err_msg,'VE',lv_status) ;
END LOOP;
ELSE
p_status := 'S';
END IF;
EXCEPTION
WHEN OTHERS THEN
lv_err_msg := SUBSTR(SQLERRM,1,500) ;
p_status:='E';
Update XXOKS_SVC_BUILD_LINES_STG set
process_flag='E',contract_number=l_contract_number
WHERE record_id=l_line_record_id;
APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail
('OKS_EXT_01',lv_run_id,-1,'XXOKS_SVC_BUILD_LINES_STG','','',
'ERROR_TYPE','Capture_Counter_Reading','','','','','','',
'','','','','','','','','','','','', lv_err_msg,'VE',lv_status) ;
END Create_counter_reading;
Procedure Create_Covered_Lines(p_k_covered_rec IN
OKS_CONTRACTS_PUB.Covered_level_Rec_Type,
p_status OUT Varchar2)
IS
BEGIN
l_return_status:=Null;
l_msg_count:=0;
l_msg_data :=NULL;
l_msg_index_out:=Null;
OKS_CONTRACTS_PUB.Create_Covered_Line
( p_k_covd_rec => p_k_covered_rec
,p_price_attribs => l_price_attribs
,x_cp_line_id => l_cp_line_id
,x_return_status => l_return_status
,x_msg_count => l_msg_count
,x_msg_data => l_msg_data
);
IF (l_return_status <> Fnd_Api.g_ret_sts_success) THEN
lv_err_msg := 'Create_Covered_Line :API Error:
Contract Header id || Line Number'
||p_k_covered_rec.k_id
|| ' : ';
p_status := 'E';
Update XXOKS_SVC_BUILD_LINES_STG set
process_flag='E',contract_number=l_contract_number
WHERE record_id=l_line_record_id;
FOR i IN 1 .. l_msg_count
LOOP
Fnd_Msg_Pub.get (
p_msg_index => i
,p_encoded => Fnd_Api.G_FALSE
,p_data => l_msg_data
,p_msg_index_out => l_msg_index_out
);
lv_err_msg := lv_err_msg || l_msg_data;

APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail
('OKS_EXT_01',lv_run_id,-
1,'XXOKS_SVC_BUILD_LINES_STG','','',
'ERROR_TYPE','ERROR_AT_Create_Covered_Line','','','','','','',
'','','','','','','','','','','','',
lv_err_msg,'VE',lv_status) ;
END LOOP;
ELSE
p_status := 'S';
END IF;
EXCEPTION
WHEN OTHERS THEN
lv_err_msg := SUBSTR(SQLERRM,1,500) ;
p_status:='E';
Update XXOKS_SVC_BUILD_LINES_STG set
process_flag='E',contract_number=l_contract_number
WHERE record_id=l_line_record_id;
APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail
('OKS_EXT_01',lv_run_id,-1,'XXOKS_SVC_BUILD_LINES_STG','','',
'ERROR_TYPE','ERROR_AT_Create_Covered_Lines','','','','','','',
'','','','','','','','','','','','', lv_err_msg,'VE',lv_status) ;
END Create_Covered_Lines;
Procedure Create_Service_Line ( p_lines_rec_type IN
OKS_CONTRACTS_PUB.line_Rec_Type,
p_price_list_id IN NUMBER,
p_orig_sys_source_code IN Varchar2,
p_orig_sys_id IN Number,
p_order_number IN number,
p_status OUT Varchar2)
IS
l_clev_rec Okc_Cle_Pvt.clev_rec_type;
x_clev_rec Okc_Cle_Pvt.clev_rec_type;
l_scrv_rec_type OKS_SCR_PVT.scrv_rec_type;
x_scrv_rec_typ OKS_SCR_PVT.scrv_rec_type;
BEGIN
l_return_status:=Null;
l_msg_count:=0;
l_msg_data :=NULL;
l_msg_index_out:=Null;
oks_contracts_pub.Create_SERVICE_LINE
(
p_k_line_rec => p_lines_rec_type
,p_Contact_tbl => l_header_contacts_tbl
,p_line_sales_crd_tbl => l_header_sales_crd_tbl
,x_service_line_id => l_Service_line_id
,x_return_status => l_return_status
,x_msg_count => l_msg_count
,x_msg_data => l_msg_data
);
IF (l_return_status <> Fnd_Api.g_ret_sts_success) THEN
lv_err_msg := 'Create_Service_Line :API Error: Contract
Header id || Line Number'
|| p_lines_rec_type.k_hdr_id
|| ' : '||p_lines_rec_type.k_line_number;
lv_err_msg := lv_err_msg || l_msg_data;
p_status :='E';
Update XXOKS_SVC_BUILD_LINES_STG set
process_flag='E',contract_number=l_contract_number
WHERE record_id=l_line_record_id;
FOR i IN 1 .. l_msg_count
LOOP
Fnd_Msg_Pub.get (
p_msg_index => i
,p_encoded => Fnd_Api.G_FALSE
,p_data => l_msg_data
,p_msg_index_out =>l_msg_index_out
);
--lv_err_msg := lv_err_msg || l_msg_data;
APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail
('OKS_EXT_01',lv_run_id,-
1,'XXOKS_SVC_BUILD_LINES_STG','','',
'ERROR_TYPE','ERROR_AT_Create_Contract_Line','','','','','','',
'','','','','','','','','','','','',
lv_err_msg,'VE',lv_status) ;
END LOOP;
ELSE
l_return_status:=Null;
l_msg_count:=0;
l_msg_data :=NULL;
l_msg_index_out:=Null;
--- Calling Update Service Line API to populate price list name
at Service Lines, as this cannot handled by create service line API---
l_clev_rec.ID:=l_Service_line_id;
l_clev_rec.price_list_id:=p_price_list_id;
l_clev_rec.ITEM_TO_PRICE_YN:='Y';-- Hard Coded As per
Requirement
l_clev_rec.orig_system_source_code
:=p_orig_sys_source_code;
l_clev_rec.orig_system_id1 :=p_orig_sys_id;
l_clev_rec.orig_system_reference1:=p_order_number;
dbms_output.put_line('l_Service_line_id'||
l_Service_line_id );
Okc_Contract_Pub.update_contract_line
(
p_api_version => 1.0 ,
p_init_msg_list => l_init_msg_list,
x_return_status => l_return_status ,
x_msg_count => l_msg_count,
x_msg_data => l_msg_data,
p_restricted_update => Fnd_Api.g_true,
p_clev_rec => l_clev_rec,
x_clev_rec => x_clev_rec
);
dbms_output.put_line('l_return_status'||l_return_status );
IF (l_return_status <> Fnd_Api.g_ret_sts_success) THEN
lv_err_msg := 'Create_Service_Line :API Error: Price List
Update '
|| p_lines_rec_type.k_hdr_id
|| ' : '||p_lines_rec_type.k_line_number;
p_status := 'E';
Update XXOKS_SVC_BUILD_LINES_STG set
process_flag='E',contract_number=l_contract_number
WHERE record_id=l_line_record_id;
FOR i IN 1 .. l_msg_count
LOOP
Fnd_Msg_Pub.get (
p_msg_index => i
,p_encoded => Fnd_Api.G_FALSE
,p_data => l_msg_data
,p_msg_index_out => l_msg_index_out
);
lv_err_msg := lv_err_msg || l_msg_data;
APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail
('OKS_EXT_01',lv_run_id,-
1,'XXOKS_SVC_BUILD_LINES_STG','','',
'ERROR_TYPE','ERROR_AT_Create_Contract_Line','','','','','','',
'','','','','','','','','','','','',
lv_err_msg,'VE',lv_status) ;
END LOOP;
ELSE
l_scrv_rec_type.id:=null;
l_scrv_rec_type.percent:=100;-- Hardcoded As Per
Requirement
l_scrv_rec_type.chr_id:=p_lines_rec_type.k_hdr_id;
l_scrv_rec_type.CLE_ID:=l_Service_line_id;
l_scrv_rec_type.ctc_id:=-3;-- Hardcoded As Per
Requirement
l_scrv_rec_type.sales_credit_type_id1:='1';--
Hardcoded As Per Requirement
l_scrv_rec_type.sales_credit_type_id2:='#';--
Hardcoded As Per Requirement
l_scrv_rec_type.sales_group_id :=-1;-- Hardcoded As Per
Requirement
l_scrv_rec_type.object_version_number:=1;
OKS_SALES_CREDIT_PUB.INSERT_SALES_CREDIT
( p_api_version =>
l_api_version,
p_init_msg_list =>
l_init_msg_list,
x_return_status =>
l_return_status,
x_msg_count =>
l_msg_count,
x_msg_data =>
l_msg_data,
p_scrv_rec =>
l_scrv_rec_type,
x_scrv_rec =>
x_scrv_rec_typ
);
IF (l_return_status <> Fnd_Api.g_ret_sts_success)
THEN
lv_err_msg :=
'Create_Sales_Credit :API Error: '
||
p_lines_rec_type.k_hdr_id
|| ' : '||
p_lines_rec_type.k_line_number;
p_status := 'E';
Update XXOKS_SVC_BUILD_LINES_STG set
process_flag='E',contract_number=l_contract_number
WHERE record_id=l_line_record_id;
FOR i IN 1 .. l_msg_count
LOOP
Fnd_Msg_Pub.get (
p_msg_index => i
,p_encoded => Fnd_Api.G_FALSE
,p_data => l_msg_data
,p_msg_index_out => l_msg_index_out
);
lv_err_msg := lv_err_msg || l_msg_data;

APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail
('OKS_EXT_01',lv_run_id,-
1,'XXOKS_SVC_BUILD_LINES_STG','','',
'ERROR_TYPE','ERROR_AT_Create_Sales_Credit','','','','','','',
'','','','','','','','','','','','',
lv_err_msg,'VE',lv_status) ;
END LOOP;
ELSE
p_status :='S';
END IF;
END IF;
END IF;
EXCEPTION
WHEN OTHERS THEN
lv_err_msg := SUBSTR(SQLERRM,1,500) ;
p_status:='E';
Update XXOKS_SVC_BUILD_LINES_STG set
process_flag='E',contract_number=l_contract_number
WHERE record_id=l_line_record_id;
APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail
('OKS_EXT_01',lv_run_id,-1,'XXOKS_SVC_BUILD_LINES_STG','','',
'ERROR_TYPE','ERROR_AT_Create_Contract_Lines','','','','','','',
'','','','','','','','','','','','', lv_err_msg,'VE',lv_status) ;
END Create_Service_Line;
Procedure Create_Contract_Header (p_header_rec_type IN
OKS_CONTRACTS_PUB.header_rec_type,
p_orig_sys_source_code IN Varchar2,
p_orig_sys_id IN Number,
p_legacy_contract_number IN Varchar2,
p_order_number IN Number,
p_transaction_type IN Varchar2,
p_status OUT Varchar2)
IS
l_error Varchar2(120);
l_ctcv_rec_type OKC_CTC_PVT.ctcv_rec_type;
l_ctcv_rec_type1 OKC_CTC_PVT.ctcv_rec_type;
l_scrv_rec_type OKS_SCR_PVT.scrv_rec_type;
x_scrv_rec_typ OKS_SCR_PVT.scrv_rec_type;
l_khrv_tbl_type_in OKS_KHR_PVT.khrv_tbl_type;
l_khrv_tbl_type_out OKS_KHR_PVT.khrv_tbl_type;
l_cpl_id number;
l_msg_index_out number;
l_hdr_id number;
l_ovn Number;
l_trans_type_id Number;
BEGIN
oks_contracts_pub.Create_Contract_Header
(
p_K_header_rec => p_header_rec_type
, p_header_contacts_tbl => l_header_contacts_tbl
, p_header_sales_crd_tbl => l_header_sales_crd_tbl
, p_header_articles_tbl => l_header_articles_tbl
, x_chrid => l_chrid
, x_return_status => l_return_status
, x_msg_count => l_msg_count
, x_msg_data => l_msg_data
);
IF (l_return_status <> Fnd_Api.g_ret_sts_success) THEN
lv_err_msg := 'Create_Contract_Header:API Error: Contract '
|| p_header_rec_type.contract_number
|| ' ';
p_status := 'E';
Update XXOKS_SVC_BUILD_HEADER_STG set process_flag='E'
Where record_id=l_hdr_record_id;
FOR i IN 1 .. l_msg_count
LOOP
Fnd_Msg_Pub.get (
p_msg_index => i
,p_encoded => Fnd_Api.G_FALSE
,p_data => l_msg_data
,p_msg_index_out => l_msg_index_out
);
lv_err_msg := lv_err_msg || l_msg_data;
APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail
('OKS_EXT_01',lv_run_id,-
1,'XX_OKS_SVC_BUILD_HEADER_STG','',l_hdr_record_id,
'ERROR_TYPE','ERROR_AT_Create_Contract_Header','','','','','','',
'','','','','','','','','','','','',
lv_err_msg,'VE',lv_status) ;
END LOOP;
ELSE
---Calling OKC_CONTRACT_PARTY_PUB.create_contacts API to upload
Contacts Information-----------------
SELECT contract_number
INTO l_contract_number
FROM okc_k_headers_all_b
WHERE id =l_chrid;
Fnd_File.put_line (Fnd_File.LOG,'Contract Number'||':'||
l_contract_number);
SELECT id
INTO l_cpl_id
FROM OKC_K_PARTY_ROLES_B
WHERE chr_id=l_chrid
AND rle_code='VENDOR';
l_return_status :=Null;
l_msg_data := Null;
l_msg_count := 0;
l_error:=Null;
l_ctcv_rec_type.dnz_chr_id:=l_chrid;
l_ctcv_rec_type.cro_code:='SALESPERSON';
l_ctcv_rec_type.cpl_id:=l_cpl_id;
l_ctcv_rec_type.object1_id1:=-3;
l_ctcv_rec_type.object1_id2:='#';
l_ctcv_rec_type.SALES_GROUP_ID:=-1;
l_ctcv_rec_type.start_date:=p_header_rec_type.start_date;
--l_ctcv_rec_type.end_date := p_header_rec_type.start_date;
l_ctcv_rec_type.jtot_object1_code:='OKX_SALEPERS';
OKC_CONTRACT_PARTY_PUB.create_contact(p_api_version =>
l_api_version,
p_init_msg_list => l_init_msg_list,
x_return_status =>l_return_status,
x_msg_count =>l_msg_count,
x_msg_data =>l_msg_data,
p_ctcv_rec =>l_ctcv_rec_type,
x_ctcv_rec =>l_ctcv_rec_type1
);
IF (l_return_status <> Fnd_Api.g_ret_sts_success) THEN
lv_err_msg := 'Create_Contract_Header:API Error at
Create_Contact : '
|| p_header_rec_type.contract_number
|| ' ';
Update XXOKS_SVC_BUILD_HEADER_STG set
process_flag='E'
Where record_id=l_hdr_record_id;
p_status := 'E';
FOR i IN 1 .. l_msg_count
LOOP
Fnd_Msg_Pub.get (
p_msg_index => i
,p_encoded => Fnd_Api.G_FALSE
,p_data => l_msg_data
,p_msg_index_out => l_msg_index_out
);
lv_err_msg := lv_err_msg || l_msg_data;
APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail
('OKS_EXT_01',lv_run_id,-
1,'XX_OKS_SVC_BUILD_HEADER_STG','',l_hdr_record_id,
'ERROR_TYPE','ERROR_AT_Create_Contact ','','','','','','',
'','','','','','','','','','','','',
lv_err_msg,'VE',lv_status) ;
END LOOP;
ELSE
IF (p_orig_sys_source_code IS NOT NULL OR p_orig_sys_id
IS NOT NULL) AND (p_legacy_contract_number IS NULL) THEN

l_head_update_rec_type.orig_system_source_code:=p_orig_sys_source_code;
l_head_update_rec_type.orig_system_id1:=p_orig_sys_id;

l_head_update_rec_type.orig_system_reference1:=p_order_number;
ELSE

l_head_update_rec_type.orig_system_source_code:=p_orig_sys_source_code;
l_head_update_rec_type.orig_system_id1:=p_orig_sys_id;

l_head_update_rec_type.orig_system_reference1:=p_legacy_contract_number;
END IF;
l_head_update_rec_type.ID:=l_chrid;

l_head_update_rec_type.sts_code:=p_header_rec_type.sts_code;
l_head_update_rec_type.chr_type:='CYA';
l_head_update_rec_type.sfwt_flag:='N';
l_head_update_rec_type.qcl_id:=1;

l_head_update_rec_type.scs_code:=p_header_rec_type.scs_code;
l_head_update_rec_type.archived_yn:='N';
l_head_update_rec_type.deleted_yn:='N';
l_head_update_rec_type.template_yn:='N';

l_head_update_rec_type.short_description:=p_header_rec_type.short_description;

l_head_update_rec_type.start_date:=p_header_rec_type.start_date;

l_head_update_rec_type.end_date:=p_header_rec_type.end_date;

l_head_update_rec_type.authoring_org_id:=p_header_rec_type.authoring_org_id;
l_head_update_rec_type.validate_yn:='Y';
l_head_update_rec_type.document_id:=l_chrid;

l_head_update_rec_type.price_list_id:=p_header_rec_type.price_list_id;

l_head_update_rec_type.bill_to_site_use_id:=p_header_rec_type.bill_to_id;

l_head_update_rec_type.inv_rule_id:=p_header_rec_type.invoice_rule_type;

l_head_update_rec_type.ship_to_site_use_id:=p_header_rec_type.ship_to_id;

l_head_update_rec_type.payment_term_id:=p_header_rec_type.payment_term_id;
--- Calling OKC_CONTRACT_PUB API for updating Header
Information----------------------------
Okc_Contract_Pub.update_contract_header
(p_api_version =>
l_api_version,
p_init_msg_list =>
l_init_msg_list,
x_return_status =>
l_return_status,
x_msg_count =>
l_msg_count,
x_msg_data => l_msg_data,
p_restricted_update =>
Fnd_Api.g_true,
p_chrv_rec =>
l_head_update_rec_type,
x_chrv_rec => l_chrv_rec
);
IF (l_return_status <>
Fnd_Api.g_ret_sts_success) THEN
lv_err_msg :=
'Update_Contract_Header:API Error at Update_Contract : '
|| ' ';
p_status:='E';
Update
XXOKS_SVC_BUILD_HEADER_STG set process_flag='E'
Where
record_id=l_hdr_record_id;
FOR i IN 1 .. l_msg_count
LOOP
Fnd_Msg_Pub.get (
p_msg_index => i
,p_encoded => Fnd_Api.G_FALSE
,p_data => l_msg_data
,p_msg_index_out =>
l_msg_index_out
);
lv_err_msg := lv_err_msg ||
l_msg_data;

APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail
('OKS_EXT_01',lv_run_id,-
1,'XX_OKS_SVC_BUILD_HEADER_STG','',l_hdr_record_id,'ERROR_TYPE','ERROR_AT_Update_Co
ntract ','','','','','','',

'','','','','','','','','','','','', lv_err_msg,'VE',lv_status) ;
END LOOP;
ELSE
l_scrv_rec_type.id:=null;
l_scrv_rec_type.percent:=100;-- Hardcoded
As Per Requirement
l_scrv_rec_type.chr_id:=l_chrid;
l_scrv_rec_type.ctc_id:=-3;-- Hardcoded
As Per Requirement

l_scrv_rec_type.sales_credit_type_id1:='1';-- Hardcoded As Per Requirement

l_scrv_rec_type.sales_credit_type_id2:='#';-- Hardcoded As Per Requirement


l_scrv_rec_type.sales_group_id :=-
1;-- Hardcoded As Per Requirement

l_scrv_rec_type.object_version_number:=1;

OKS_SALES_CREDIT_PUB.INSERT_SALES_CREDIT

( p_api_version => l_api_version,

p_init_msg_list => l_init_msg_list,

x_return_status => l_return_status,

x_msg_count => l_msg_count,

x_msg_data => l_msg_data,

p_scrv_rec => l_scrv_rec_type,

x_scrv_rec => x_scrv_rec_typ


);
IF (l_return_status
<> Fnd_Api.g_ret_sts_success) THEN
lv_err_msg :=
'Create_Sales_Credit :API Error: For Contract Number '

|| ':' || l_chrid;

p_status := 'E';
Update
XXOKS_SVC_BUILD_HEADER_STG set process_flag='E'
Where
record_id=l_hdr_record_id;
FOR i IN 1 ..
l_msg_count
LOOP

Fnd_Msg_Pub.get (
p_msg_index
=> i
,p_encoded
=> Fnd_Api.G_FALSE
,p_data =>
l_msg_data
,p_msg_index
_out => l_msg_index_out
);

lv_err_msg := lv_err_msg || l_msg_data;

APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail

('OKS_EXT_01',lv_run_id,-1,'XX_OKS_SVC_BUILD_HEADER_STG','',l_hdr_record_id,
'ERROR_TYPE','ERROR_AT_Create_Sales_Credit','','','','','','',

'','','','','','','','','','','','', lv_err_msg,'VE',lv_status) ;
END LOOP;
ELSE
--p_status :='S';
SELECT
ID,object_version_number
INTO
l_hdr_id,l_ovn
FROM
oks_k_headers_b
WHERE
chr_id =l_chrid;
SELECT
cust_trx_type_id
INTO
l_trans_type_id
FROM
ra_cust_trx_types_all
WHERE
UPPER(Name) =UPPER(p_transaction_type);

l_khrv_tbl_type_in(1).id := l_hdr_id;

l_khrv_tbl_type_in(1).chr_id := l_chrid;

l_khrv_tbl_type_in(1).inv_trx_type := to_char(l_trans_type_id);

l_khrv_tbl_type_in(1).object_version_number := l_ovn;

oks_contract_hdr_pub.update_header(p_api_version => l_api_version,

p_init_msg_list => l_init_msg_list,


x_return_status => l_return_status,

x_msg_count => l_msg_count,

x_msg_data => l_msg_data,

p_khrv_tbl => l_khrv_tbl_type_in,

x_khrv_tbl => l_khrv_tbl_type_out,

p_validate_yn => 'Y'

);

IF (l_return_status <> Fnd_Api.g_ret_sts_success) THEN

lv_err_msg := 'UPDATE_HEADER :API Error: For Contract Number '

|| ':' || l_chrid;

p_status := 'E';

Update XXOKS_SVC_BUILD_HEADER_STG set process_flag='E'

Where record_id=l_hdr_record_id;

FOR i IN 1 .. l_msg_count

LOOP

Fnd_Msg_Pub.get (

p_msg_index => i

,p_encoded => Fnd_Api.G_FALSE

,p_data => l_msg_data

,p_msg_index_out => l_msg_index_out

);

lv_err_msg := lv_err_msg || l_msg_data;

APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail

('OKS_EXT_01',lv_run_id,-
1,'XX_OKS_SVC_BUILD_HEADER_STG','',l_hdr_record_id,
'ERROR_TYPE','ERROR_AT_UPDATE_HEADER','','','','','','',

'','','','','','','','','','','','', lv_err_msg,'VE',lv_status) ;

END LOOP;

ELSE

Update XXOKS_SVC_BUILD_HEADER_STG set contract_number=l_contract_number

Where record_id=l_hdr_record_id;
p_status:='S';

END IF;
END IF;
END IF;
END IF;
END IF;
EXCEPTION
WHEN OTHERS THEN
lv_err_msg := SUBSTR(SQLERRM,1,500) ;
p_status:='E';
Update XXOKS_SVC_BUILD_HEADER_STG set process_flag='E'
Where record_id=l_hdr_record_id;
APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail
('OKS_EXT_01',lv_run_id,-1,'XX_OKS_SVC_BUILD_HEADER_STG','','',
'ERROR_TYPE','ERROR_AT_Create_Contract_Header','','','','','','',
'','','','','','','','','','','','', lv_err_msg,'VE',lv_status) ;
END Create_Contract_Header;
Function Validate_Inv_Item (p_item_number IN Varchar2)
Return Boolean IS
l_cnt number;
l_item_number varchar2(40);
BEGIN
l_item_number :=p_item_number||'C';
SELECT Count(1)
INTO l_cnt
FROM mtl_system_items_b
WHERE segment1 =l_item_number
AND comms_nl_trackable_flag='Y';
dbms_output.put_line('Count of Item'||l_cnt);
IF l_cnt >0 THEN
RETURN TRUE;
ELSE
Update XXOKS_SVC_BUILD_LINES_STG set
process_flag='E',contract_number=l_contract_number
where record_id=l_line_record_id;
lv_err_msg := 'This Item :'||p_item_number|| ' , '||'is not IB
Trackable'||':'||SUBSTR(SQLERRM,1,250) ;
APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail
('OKS_EXT_01',lv_run_id,-1,'XXOKS_SVC_BUILD_LINES_STG','','',
'ERROR_TYPE','ERROR_AT_Item_Validation','','','','','','',
'','','','','','','','','','','','', lv_err_msg,'VE',lv_status) ;
RETURN FALSE;
END IF;
EXCEPTION
WHEN OTHERS THEN
Update XXOKS_SVC_BUILD_LINES_STG set
process_flag='E',contract_number=l_contract_number
where record_id=l_line_record_id;
lv_err_msg := 'This Item is not IB Trackable'||';'||SUBSTR(SQLERRM,1,250) ;
APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail
('OKS_EXT_01',lv_run_id,-1,'XXOKS_SVC_BUILD_LINES_STG','','',
'ERROR_TYPE','ERROR_AT_Item_Validation','','','','','','',
'','','','','','','','','','','','', lv_err_msg,'VE',lv_status) ;
RETURN FALSE;
END Validate_Inv_Item;
Function Validate_Price_List( p_price_list IN Varchar2)
RETURN NUMBER IS
l_price_list_id number;
BEGIN
SELECT list_header_id
INTO l_price_list_id
FROM QP_LIST_HEADERS_TL
WHERE language=userenv('LANG')
AND Upper(NAME) = Upper(p_price_list);
RETURN l_price_list_id;
EXCEPTION
WHEN OTHERS THEN
lv_err_msg := 'Invalid Price List Name' ||':'||SUBSTR(SQLERRM,1,250);
Update XXOKS_SVC_BUILD_HEADER_STG set process_flag='E'
Where record_id=l_hdr_record_id;
APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail
('OKS_EXT_01',lv_run_id,-1,'XX_OKS_SVC_BUILD_HEADER_STG','','',
'ERROR_TYPE','ERROR_AT_Validate_Price_List','','','','','','','','','','','','','',
'','','','','', lv_err_msg,'VE',lv_status) ;
RETURN NULL;
END Validate_Price_List;
FUNCTION Validate_Chr_group (p_chr_grp IN Varchar2)
RETURN NUMBER IS
l_chr_grp Number;
BEGIN
SELECT ID
INTO l_chr_grp
FROM okc_k_groups_v
WHERE upper(NAME)=upper(p_chr_grp);
RETURN l_chr_grp;
EXCEPTION
WHEN OTHERS THEN
lv_err_msg := 'Invalid Contract Group';
Update XXOKS_SVC_BUILD_HEADER_STG set process_flag='E'
Where record_id=l_hdr_record_id;
APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail
('OKS_EXT_01',lv_run_id,-1,'XX_OKS_SVC_BUILD_HEADER_STG','','',
'ERROR_TYPE','ERROR_AT_Contract_Group','','','','','','','','','',
'','','','','','','','','', lv_err_msg,'VE',lv_status) ;
RETURN NULL;
END Validate_Chr_group;
FUNCTION validate_order_num( p_order_number IN Number)
RETURN NUMBER IS
l_header_id number;
BEGIN
SELECT header_id
INTO l_header_id
FROM oe_order_headers_all
WHERE order_number = p_order_number;
RETURN l_header_id;
EXCEPTION
WHEN NO_DATA_FOUND THEN
lv_err_msg := 'Invalid Sales Order Number';
Update XXOKS_SVC_BUILD_HEADER_STG set Process_flag='E'
Where Order_Number =p_order_number;
APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail
('OKS_EXT_01',lv_run_id,-1,'XX_OKS_SVC_BUILD_HEADER_STG','','',
'ERROR_TYPE','ERROR_AT_ORDER_NUMBER','','','','','','','','','',
'','','','','','','','','', lv_err_msg,'VE',lv_status) ;
RETURN Null;
END;
Function Validate_Cont_Num ( p_contract_Number IN Varchar2)
RETURN BOOLEAN IS
L_cnt Number;
BEGIN
SELECT count(1)
INTO l_cnt
FROM OKC_K_HEADERS_ALL_B
WHERE upper(contract_number) =upper(p_contract_Number);
IF l_cnt >0 THEN
RETURN TRUE;
ELSE
lv_err_msg := 'Invalid Contract Number';
Update XXOKS_SVC_BUILD_HEADER_STG set process_flag='E'
Where record_id=l_hdr_record_id;
Update XXOKS_SVC_BUILD_LINES_STG set process_flag='E'
where record_id=l_line_record_id;
APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail
('OKS_EXT_01',lv_run_id,-1,'XX_OKS_SVC_BUILD_HEADER_STG','','',
'ERROR_TYPE','ERROR_AT_CONTRACT_NUMBER VALIDATION','','','','','','','','','',
'','','','','','','','','', lv_err_msg,'VE',lv_status) ;
RETURN FALSE;
END IF;
END Validate_Cont_Num ;
PROCEDURE Validate_Loc_Number(p_party_id IN NUMBER,
p_location_number IN Number,
P_loc_number out NUMBER,
p_status OUT Varchar2)
IS
l_loc_id number;
BEGIN
/*SELECT hps.party_site_id
INTO l_loc_id
FROM hz_party_sites hps,
hz_cust_acct_sites_all hzc,
hz_cust_site_uses_all hcs
WHERE hps.party_site_id = hzc.party_site_id
AND hzc.cust_acct_site_id=hcs.cust_acct_site_id
AND hcs.site_use_code ='BILL_TO' --'SHIP_TO'
AND hps.party_id =p_party_id;*/
SELECT location_id
INTO l_loc_id
FROM hz_party_sites
WHERE party_id =p_party_id
AND party_site_id =p_location_number;
p_loc_number :=l_loc_id;
p_status :='S';
EXCEPTION
WHEN OTHERS THEN
lv_err_msg :='Invalid Location Number'||':'||SUBSTR(SQLERRM,1,250);
lv_status := 'E';
---
Update XXOKS_SVC_BUILD_LINES_STG set
process_flag='E',contract_number=l_contract_number
where record_id=l_line_record_id;
APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail
('OKS_EXT_01',lv_run_id,-1,'XX_OKS_SVC_BUILD_LINES_STG','','',
'ERROR_TYPE','ERROR_AT_Validate_loc_number','','','','','','','','','','','',
'','','','','','','', lv_err_msg,'VE',lv_status) ;
END Validate_Loc_Number;
PROCEDURE Validate_party_details ( p_party_name IN VARCHAR2,
P_payement_term IN VARCHAR2,
p_bill_to IN number,
p_ship_to IN Number,
p_party_id OUT Number,
P_Cust_acc_id OUT Number,
P_term_id OUT Number,
p_status OUT Varchar2)
IS
l_party_id Number;
l_cust_acc_id Number;
l_cnt Number;
l_cnt1 Number;
l_party_site_num Varchar2(30);
l_term_id Number;
BEGIN
SELECT party_id
INTO l_party_id
FROM hz_parties
WHERE upper(party_name)=upper(p_party_name)
AND rownum=1;
dbms_output.put_line('l_party_id'||l_party_id);
SELECT term_id
INTO l_term_id
FROM ra_terms_tl
WHERE language=userenv('LANG')
AND upper(name) =upper(P_payement_term);
dbms_output.put_line('l_term_id'||l_term_id);

SELECT hps.party_site_number,hca.cust_account_id
INTO l_party_site_num,l_cust_acc_id
FROM hz_party_sites hps,
hz_cust_accounts hca,
hz_cust_acct_sites_all hcsa
WHERE hcsa.cust_account_id= hca.cust_account_id
AND hca.party_id=hps.party_id
AND hps.party_id=l_party_id
AND hps.identifying_address_flag='Y'
AND hcsa.org_id =l_op_unit_id;

dbms_output.put_line('l_cust_acc_id'||l_term_id);
SELECT count(1)
INTO l_cnt
FROM hz_party_sites hps,
hz_cust_acct_sites_all hzc,
hz_cust_site_uses_all hcs
WHERE hps.party_site_id = hzc.party_site_id
AND hzc.cust_acct_site_id=hcs.cust_acct_site_id
AND hzc.cust_account_id=l_cust_acc_id
AND hcs.site_use_code ='SHIP_TO'
AND hcs.site_use_id = p_ship_to;
--AND hps.party_site_number =l_party_site_num;
dbms_output.put_line('SHIP TO'||l_cnt);
SELECT count(1)
INTO l_cnt1
FROM hz_party_sites hps,
hz_cust_acct_sites_all hzc,
hz_cust_site_uses_all hcs
WHERE hps.party_site_id = hzc.party_site_id
AND hzc.cust_acct_site_id=hcs.cust_acct_site_id
AND hzc.cust_account_id=l_cust_acc_id
AND hcs.site_use_code ='BILL_TO'
AND hcs.site_use_id = p_bill_to;
--AND hps.party_site_number =l_party_site_num;
IF (l_cnt > 0 AND l_cnt1>0) THEN
p_party_id :=l_party_id;
P_Cust_acc_id:=l_cust_acc_id;
P_term_id := l_term_id;
p_status :='S';
ELSE
lv_err_msg := 'Invalid Bill to ID or Ship to ID';
p_status := 'E';
Update XXOKS_SVC_BUILD_HEADER_STG set process_flag='E'
Where record_id=l_hdr_record_id;
Update XXOKS_SVC_BUILD_LINES_STG set process_flag='E'
where record_id=l_line_record_id;
APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail
('OKS_EXT_01',lv_run_id,-1,'XX_OKS_SVC_BUILD_HEADER_STG','','',
'ERROR_TYPE','ERROR_AT_Validate_party_details','','','','','','','','','','','',
'','','','','','','', lv_err_msg,'VE',lv_status) ;
END IF;
EXCEPTION
WHEN OTHERS THEN
lv_err_msg :='Invalid Party Details'||':'||SUBSTR(SQLERRM,1,250);
lv_status := 'E';
Update XXOKS_SVC_BUILD_HEADER_STG set process_flag='E'
Where record_id=l_hdr_record_id;
Update XXOKS_SVC_BUILD_LINES_STG set process_flag='E'
where record_id=l_line_record_id;
APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail
('OKS_EXT_01',lv_run_id,-1,'XX_OKS_SVC_BUILD_HEADER_STG','','',
'ERROR_TYPE','ERROR_AT_Validate_party_details','','','','','','','','','','','',
'','','','','','','', lv_err_msg,'VE',lv_status) ;
END Validate_party_details;
PROCEDURE Validate_order_num_Exist(p_order_number IN NUMBER,
p_status OUT Varchar2)
IS
l_order_cnt Number;
BEGIN
SELECT count(1)
INTO l_order_cnt
FROM okc_k_headers_all_b
WHERE orig_system_reference1=to_char(p_order_number);
IF l_order_cnt >0 THEN
p_status :='E';
lv_err_msg := 'Service Contract Header is already exists with
this Sales Order Number'||':'||p_order_number;
Update XXOKS_SVC_BUILD_HEADER_STG set process_flag='E'
Where record_id=l_hdr_record_id;
APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail
('OKS_EXT_01',lv_run_id,-1,'XX_OKS_SVC_BUILD_HEADER_STG','','',
'ERROR_TYPE','Error at Validate_order_num_Exist','','','','','','','','','','','',
'','','','','','','', lv_err_msg,'VE',lv_status) ;
ELSE
p_status := 'S';
END IF;
EXCEPTION
WHEN OTHERS THEN
lv_err_msg :='Error'||':'||SUBSTR(SQLERRM,1,250);
lv_status := 'E';
Update XXOKS_SVC_BUILD_HEADER_STG set process_flag='E'
Where record_id=l_hdr_record_id;
APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail
('OKS_EXT_01',lv_run_id,-1,'XX_OKS_SVC_BUILD_HEADER_STG','','',
'ERROR_TYPE','Error at Validate_order_num_Exist','','','','','','','','','','','',
'','','','','','','', lv_err_msg,'VE',lv_status);
END Validate_order_num_Exist;
Procedure Validate_Line_Exist(p_cont_num IN VArchar2,
p_line_num IN Number,
p_line_id OUT Number,
p_header_id OUT Number,
p_status OUT Varchar2)
IS
l_header_id Number;
l_ser_line_number Number;
BEGIN
SELECT ID
INTO l_header_id
FROM okc_k_headers_all_b
WHERE contract_number=p_cont_num;
SELECT ID
INTO l_ser_line_number
FROM okc_k_lines_b
WHERE dnz_chr_id=l_header_id
AND line_number=p_line_num;
p_header_id:=l_header_id;
p_line_id :=l_ser_line_number;
p_status := 'S';
EXCEPTION
WHEN NO_DATA_FOUND THEN
lv_err_msg :='Invalid Contract Number OR Line Number';
lv_status := 'E';
Update XXOKS_SVC_BUILD_HEADER_STG set process_flag='E'
Where record_id=l_hdr_record_id;
Update XXOKS_SVC_BUILD_LINES_STG set process_flag='E'
where record_id=l_line_record_id;
APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail
('OKS_EXT_01',lv_run_id,-1,'XXOKS_SVC_BUILD_LINES_STG','','',
'ERROR_TYPE','ERROR_AT_Validate_Line_details','','','','','','','','','','','',
'','','','','','','', lv_err_msg,'VE',lv_status) ;
END Validate_Line_Exist;
Procedure Update_Service_Cont_Process( p_source IN
Varchar2
,p_operating_unit IN Number
,p_sales_order IN Number
) AS
CURSOR get_build_upd_hdr_cur IS
SELECT *
FROM XXOKS_SVC_BUILD_HEADER_STG
WHERE 1=1
AND source_code = p_source
AND operation_mode = 'UPDATE'
AND order_number = NVL(p_sales_order,order_number);
CURSOR get_build_upd_line_cur(p_stg_header_id NUMBER) IS
SELECT *
FROM XXOKS_SVC_BUILD_LINES_STG
WHERE operation_mode IN ('UPDATE','ADD')
AND stg_header_id=p_stg_header_id;
l_num_hdr_upd_rec_cnt Number;
l_num_line_upd_rec_cnt Number;
l_list_id Number;
l_chr_group Number;
l_chr_id Number;
l_serv_header_id Number;
l_serv_line_id Number;
l_instance_id Number;
l_instance_id_lst csi_datastructures_pub.id_tbl;
obj_vn1 Number;
obj_vn2 Number;
obj_vn3 Number;
l_instance_party_id Number;
l_ip_account_id Number;
l_party_id Number;
l_cust_acc_id Number;
l_term_id Number;
l_counter_id number;
l_item_id Number;
temp_duration NUMBER := 0;
temp_timeunits VARCHAR2(30) := 'NA';
temp_return_status VARCHAR2(30) := 'NA';
l_billing_sch varchar2(1):='T';
l_item_number VArchar2(30);
l_uom_code Varchar2(10);
BEGIN
FOR get_build_upd_hdr_rec IN get_build_upd_hdr_cur LOOP
l_num_hdr_upd_rec_cnt := get_build_upd_hdr_cur%ROWCOUNT;
IF l_num_hdr_upd_rec_cnt =0 THEN
EXIT;
END IF;
l_hdr_record_id:=get_build_upd_hdr_rec.record_id;
IF Validate_Cont_Num(get_build_upd_hdr_rec.contract_number) THEN
l_list_id
:=Validate_Price_List(get_build_upd_hdr_rec.Price_List);

l_chr_group:=Validate_Chr_group(get_build_upd_hdr_rec.Contract_Group);
Validate_party_details(get_build_upd_hdr_rec.party_name,
get_build_upd_hdr_rec.Payment_Terms,
get_build_upd_hdr_rec.Bill_To_Site_id,
get_build_upd_hdr_rec.Ship_To_Site_id,
l_party_id,
l_cust_acc_id,
l_term_id,
lv_status);
IF lv_status <>'E' THEN
SELECT ID
INTO l_chr_id
FROM okc_k_headers_all_b
WHERE
contract_number=get_build_upd_hdr_rec.contract_number;
l_head_update_rec_type.ID:=l_chr_id;

l_head_update_rec_type.sts_code:=get_build_upd_hdr_rec.sts_code;
l_head_update_rec_type.sfwt_flag:='N';
l_head_update_rec_type.qcl_id:=1;
l_head_update_rec_type.scs_code:=get_build_upd_hdr_rec.scs_code;
l_head_update_rec_type.archived_yn:='N';
l_head_update_rec_type.deleted_yn:='N';
l_head_update_rec_type.chr_type:='CYA';

l_head_update_rec_type.short_description:=get_build_upd_hdr_rec.description;

l_head_update_rec_type.currency_code:=get_build_upd_hdr_rec.currency_code;

l_head_update_rec_type.start_date:=TRUNC(get_build_upd_hdr_rec.Actual_Start_Date);

l_head_update_rec_type.end_date:=TRUNC(get_build_upd_hdr_rec.Actual_End_Date);
l_head_update_rec_type.authoring_org_id:=p_operating_unit;
l_head_update_rec_type.buy_or_sell:='S';
l_head_update_rec_type.price_list_id:=l_list_id;

l_head_update_rec_type.bill_to_site_use_id:=get_build_upd_hdr_rec.bill_to_site_id;

l_head_update_rec_type.inv_rule_id:=get_build_upd_hdr_rec.Invoicing_rule;

l_head_update_rec_type.ship_to_site_use_id:=get_build_upd_hdr_rec.ship_to_site_id;
l_head_update_rec_type.payment_term_id:=l_term_id;
l_head_update_rec_type.validate_yn:='Y';
l_head_update_rec_type.document_id:=l_chr_id;

l_head_update_rec_type.orig_system_source_code:=get_build_upd_hdr_rec.orig_system_s
ource_code;

l_head_update_rec_type.orig_system_id1:=get_build_upd_hdr_rec.orig_system_id;

l_head_update_rec_type.orig_system_reference1:=get_build_upd_hdr_rec.order_number;

l_head_update_rec_type.attribute1:=get_build_upd_hdr_rec.attribute1;

l_head_update_rec_type.attribute2:=get_build_upd_hdr_rec.attribute2;

l_head_update_rec_type.attribute3:=get_build_upd_hdr_rec.attribute3;

l_head_update_rec_type.attribute4:=get_build_upd_hdr_rec.attribute4;

l_head_update_rec_type.attribute5:=get_build_upd_hdr_rec.attribute5;

l_head_update_rec_type.attribute6:=get_build_upd_hdr_rec.attribute6;

l_head_update_rec_type.attribute7:=get_build_upd_hdr_rec.attribute7;

l_head_update_rec_type.attribute8:=get_build_upd_hdr_rec.attribute8;

l_head_update_rec_type.attribute9:=get_build_upd_hdr_rec.attribute9;

l_head_update_rec_type.attribute10:=get_build_upd_hdr_rec.attribute10;
/********** Calling API
Oks_Contracts_Pub.Update_Contract_Header for updating header line
****************/
Okc_Contract_Pub.update_contract_header
(p_api_version => l_api_version,
p_init_msg_list => l_init_msg_list,
x_return_status => l_return_status,
x_msg_count => l_msg_count,
x_msg_data => l_msg_data,
p_restricted_update => Fnd_Api.g_true,
p_chrv_rec =>
l_head_update_rec_type,
x_chrv_rec => l_chrv_rec
);
IF (l_return_status <>
Fnd_Api.g_ret_sts_success) THEN
lv_err_msg :=
'Update_Contract_Header:API Error at Update_Contract : '
||
get_build_upd_hdr_rec.contract_number
|| ' ';
UPDATE XXOKS_SVC_BUILD_HEADER_STG
SET process_flag='E'
WHERE stg_header_id =
get_build_upd_hdr_rec.stg_header_id;
FOR i IN 1 .. l_msg_count
LOOP
Fnd_Msg_Pub.get (
p_msg_index => i
,p_encoded => Fnd_Api.G_FALSE
,p_data => l_msg_data
,p_msg_index_out => l_msg_index_out
);
lv_err_msg := lv_err_msg ||
l_msg_data;

APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail
('OKS_EXT_01',lv_run_id,-
1,'XX_OKS_SVC_BUILD_HEADER_STG','','', 'ERROR_TYPE','ERROR_AT_Update_Contract
','','','','','','',

'','','','','','','','','','','','', lv_err_msg,'VE',lv_status) ;
END LOOP;
ELSE
FOR get_build_upd_line_rec IN
get_build_upd_line_cur(get_build_upd_hdr_rec.stg_header_id) LOOP
l_num_line_upd_rec_cnt
:=get_build_upd_line_cur%ROWCOUNT;
IF
l_num_line_upd_rec_cnt =0 THEN
EXIT;
END IF;

l_line_record_id:=get_build_upd_line_rec.record_id;
IF
get_build_upd_line_rec.operation_mode='UPDATE' THEN

Validate_Line_Exist(get_build_upd_line_rec.contract_number,

get_build_upd_line_rec.line_number,
l_serv_line_id,

l_serv_header_id,

lv_status);
IF lv_status <>
'E' THEN

l_line_update_rec_type.id :=l_serv_line_id;

l_line_update_rec_type.line_number :=get_build_upd_line_rec.line_number;

l_line_update_rec_type.dnz_chr_id :=l_serv_header_id;

l_line_update_rec_type.price_list_id :=l_list_id;

l_line_update_rec_type.item_to_price_yn:='Y';

Okc_Contract_Pub.update_contract_line

p_api_version => 1.0 ,

p_init_msg_list => Fnd_Api.g_true,

x_return_status => l_return_status ,

x_msg_count => l_msg_count,

x_msg_data => l_msg_data,

p_restricted_update => Fnd_Api.g_true,

p_clev_rec => l_line_update_rec_type,

x_clev_rec => l_clev_rec

);

IF (l_return_status <> Fnd_Api.g_ret_sts_success) THEN

lv_err_msg := 'Update_Contract_Line:API Error at


Update_Contract : '

|| get_build_upd_hdr_rec.contract_number

|| ' ';

UPDATE xxoks_svc_build_lines_stg SET


process_flag='E',contract_number=get_build_upd_hdr_rec.contract_number

WHERE record_id = l_line_record_id

AND stg_header_id
=get_build_upd_line_rec.stg_header_id;

FOR i IN 1 .. l_msg_count
LOOP

Fnd_Msg_Pub.get (

p_msg_index => i

,p_encoded => Fnd_Api.G_FALSE

,p_data => l_msg_data

,p_msg_index_out => l_msg_index_out

);

lv_err_msg := lv_err_msg || l_msg_data;

APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail

('OKS_EXT_01',lv_run_id,-
1,'XX_OKS_SVC_BUILD_LINES_STG','','', 'ERROR_TYPE','ERROR_AT_Update_Contract_Line
','','','','','','',

'','','','','','','','','','','','',
lv_err_msg,'VE',lv_status) ;

END LOOP;

ELSE

IF get_build_upd_line_rec.Item_instance_Number IS NOT NULL THEN

SELECT object_version_number

INTO obj_vn1

FROM csi_item_instances

WHERE
instance_number=get_build_upd_line_rec.item_instance_number;

SELECT instance_party_id,object_version_number

INTO l_instance_party_id,obj_vn2

FROM csi_i_parties

WHERE instance_id
=get_build_upd_line_rec.item_instance_number;

SELECT ip_account_id, object_version_number

INTO l_ip_account_id,obj_vn3

FROM csi_ip_accounts

WHERE instance_party_id=l_instance_party_id;

Validate_Loc_Number(l_party_id,get_build_upd_line_rec.location_number,l_location_id
,lv_status);

l_instance_rec.instance_id :=
get_build_upd_line_rec.item_instance_number;

l_instance_rec.instance_number :=
get_build_upd_line_rec.item_instance_number;

l_instance_rec.external_reference :=
get_build_upd_line_rec.contract_number;

l_instance_rec.mfg_serial_number_flag := 'N';

l_instance_rec.quantity:=get_build_upd_line_rec.quantity;

l_instance_rec.accounting_class_code := 'CUST_PROD';

l_instance_rec.instance_status_id:=510;

l_instance_rec.customer_view_flag :=
NVL(get_build_upd_line_rec.customer_view_flag,'Y');

l_instance_rec.merchant_view_flag :=
NVL(get_build_upd_line_rec.merchant_view_flag,'Y');

l_instance_rec.sellable_flag :=
NVL(get_build_upd_line_rec.sellable_flag,'Y');

l_instance_rec.location_type_code := 'HZ_LOCATIONS';

l_instance_rec.LOCATION_ID:=l_location_id;

l_instance_rec.install_date :=
get_build_upd_line_rec.start_date_active;

l_instance_rec.creation_complete_flag := 'Y';

l_instance_rec.object_version_number := obj_vn1;

l_party_tbl(1).instance_party_id := l_instance_party_id;

l_party_tbl(1).instance_id :=
get_build_upd_line_rec.item_instance_number;

l_party_tbl(1).party_source_table := 'HZ_PARTIES';

l_party_tbl(1).party_id := l_party_id;

l_party_tbl(1).relationship_type_code := 'OWNER';

-- l_party_tbl(1).contact_flag := 'N';

l_party_tbl(1).object_version_number := obj_vn2;

SELECT transaction_type_id

INTO l_transaction_type_id

FROM CSI_TXN_TYPES
WHERE source_transaction_type='ITEM_INSTANCE_CTR_CAPTURE';

l_account_tbl(1).ip_account_id := l_ip_account_id;

l_account_tbl(1).instance_party_id := l_instance_party_id;

l_account_tbl(1).party_account_id := l_cust_acc_id;

l_account_tbl(1).relationship_type_code := 'OWNER';

l_account_tbl(1).BILL_TO_ADDRESS :=
get_build_upd_hdr_rec.bill_to_site_id ;

l_account_tbl(1).SHIP_TO_ADDRESS :=
get_build_upd_hdr_rec.ship_to_site_id;

l_account_tbl(1).object_version_number := obj_vn3;

l_account_tbl(1).parent_tbl_index := 1;

l_account_tbl(1).call_contracts := 'Y';

l_txn_rec.transaction_date :=
get_build_upd_line_rec.start_date_active;

l_txn_rec.SOURCE_TRANSACTION_DATE :=
get_build_upd_line_rec.start_date_active;

l_txn_rec.TRANSACTION_TYPE_ID := l_transaction_type_id;

l_txn_rec.OBJECT_VERSION_NUMBER := obj_vn3;

CSI_ITEM_INSTANCE_PUB.update_item_instance

p_api_version => l_api_version

,p_commit => l_commit

,p_init_msg_list =>
l_init_msg_list

,p_validation_level =>
l_validation_level

,p_instance_rec =>
l_instance_rec

,p_ext_attrib_values_tbl =>
l_ext_attrib_values_tbl

,p_party_tbl => l_party_tbl

,p_account_tbl => l_account_tbl

,p_pricing_attrib_tbl =>
l_pricing_attrib_tbl
,p_org_assignments_tbl =>
l_org_assignments_tbl

,p_asset_assignment_tbl =>
l_asset_assignment_tbl

,p_txn_rec => l_txn_rec

,x_instance_id_lst =>
l_instance_id_lst

,x_return_status =>
l_return_status

,x_msg_count => l_msg_count

,x_msg_data => l_msg_data

);

IF (l_return_status <> Fnd_Api.g_ret_sts_success)


THEN

lv_err_msg := 'Update_Item_Instance :API


Error : '

|| get_build_upd_hdr_rec.contract_number

|| ' ';

UPDATE xxoks_svc_build_lines_stg SET


process_flag='E',contract_number=get_build_upd_hdr_rec.contract_number

WHERE record_id = l_line_record_id

AND stg_header_id
=get_build_upd_line_rec.stg_header_id;

lv_status :='E';

FOR i IN 1 .. l_msg_count

LOOP

Fnd_Msg_Pub.get (

p_msg_index => i

,p_encoded => Fnd_Api.G_FALSE

,p_data => l_msg_data

,p_msg_index_out => l_msg_index_out

);

lv_err_msg := lv_err_msg || l_msg_data;


APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail

('OKS_EXT_01',lv_run_id,-
1,'XX_OKS_SVC_BUILD_LINES_STG','','',
'ERROR_TYPE','ERROR_AT_Update_Item_Instance','','','','','','',

'','','','','','','','','','','','',
lv_err_msg,'VE',lv_status) ;

END LOOP;

END IF;

END IF;

END IF;
ELSE
UPDATE
xxoks_svc_build_lines_stg SET
process_flag='E',contract_number=get_build_upd_hdr_rec.contract_number
WHERE
record_id = l_line_record_id
AND
stg_header_id =get_build_upd_line_rec.stg_header_id;
END IF;
IF
lv_status <> 'E' THEN

l_strm_level_tbl.DELETE;

l_strm_level_tbl(1).cle_id :=l_Service_line_id;

l_strm_level_tbl(1).chr_id :=l_chr_id;

l_strm_level_tbl(1).ID :=l_chr_id;

l_strm_level_tbl(1).sequence_no
:=nvl(get_build_upd_line_rec.Billing_Seq_number,1);

l_strm_level_tbl(1).level_periods
:=get_build_upd_line_rec.Billing_No_of_periods;

--l_strm_level_tbl(1).start_date
:=trunc(get_build_upd_line_rec.Start_Date_Active);
--
l_strm_level_tbl(1).end_date
:=trunc(get_build_upd_line_rec.End_Date_Active);
IF
upper(get_build_upd_line_rec.Billing_period)='MONTH' THEN

l_uom_code :='MON';
ELSIF
upper(get_build_upd_line_rec.Billing_period)='DAY' THEN

l_uom_code :='DYS';
ELSIF
upper(get_build_upd_line_rec.Billing_period)= 'WEEK' THEN

l_uom_code := 'WKS';
ELSIF
upper(get_build_upd_line_rec.Billing_period)= 'YEAR' THEN

l_uom_code := 'YRS';
END
IF;

l_strm_level_tbl(1).uom_code := l_uom_code;

l_strm_level_tbl(1).uom_per_period :=get_build_upd_line_rec.billing_Duration;
/*BEGI
N

Okc_Time_Util_Pub.get_duration

p_start_date => TRUNC(get_build_upd_line_rec.Start_Date_Active),

p_end_date => TRUNC(get_build_upd_line_rec.End_Date_Active),

x_duration => temp_duration,

x_timeunit => temp_timeunits,

x_return_status => temp_return_status

);

l_strm_level_tbl(1).uom_code := temp_timeunits;

l_strm_level_tbl(1).uom_per_period :=temp_duration;

EXCEPTION
WHEN
OTHERS THEN

l_return_status:=Null;
END;*/
/******
Calling API Oks_Contracts_Pub.Create_Bill_Schedule for Billing lines creation
****************/

Oks_Contracts_Pub.create_bill_schedule

(l_billing_sch,

l_strm_level_tbl,

get_build_upd_hdr_rec.Invoicing_rule,

l_return_status);

IF (l_return_status <> Fnd_Api.g_ret_sts_success) THEN

lv_err_msg := 'create_bill_schedule :API Error: Contract Number '

|| ': '|| get_build_upd_line_rec.contract_number ;


APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail

('OKS_EXT_01',lv_run_id,-1,'XXOKS_SVC_BUILD_LINES_STG','','',
'ERROR_TYPE','ERROR_AT_create_bill_schedule','','','','','','',

'','','','','','','','','','','','', lv_err_msg,'VE',lv_status) ;

ELSE

UPDATE xxoks_svc_build_lines_stg SET


process_flag='S',contract_number=get_build_upd_line_rec.contract_number

WHERE record_id = l_line_record_id

AND stg_header_id =get_build_upd_line_rec.stg_header_id;

UPDATE XXOKS_SVC_BUILD_HEADER_STG SET process_flag='S'

WHERE stg_header_id = get_build_upd_hdr_rec.stg_header_id

AND record_id = l_hdr_record_id;

COMMIT;

END IF;
END IF;
ELSIF
get_build_upd_line_rec.operation_mode='ADD' THEN
SELECT ID
INTO
l_chr_id
FROM
okc_k_headers_all_b
WHERE
contract_number=get_build_upd_line_rec.contract_number;

l_lines_Rec_Type.k_hdr_id :=l_chr_id;

l_lines_Rec_Type.k_line_number:=get_build_upd_line_rec.Line_Number;

l_lines_Rec_Type.line_sts_code :=get_build_upd_line_rec.Line_sts_code;

l_lines_rec_type.cust_account :=l_cust_acc_id;

l_lines_Rec_Type.org_id := p_operating_unit;

l_lines_Rec_Type.bill_to_id:=get_build_upd_line_rec.Bill_To_Site_id;

l_lines_Rec_Type.ship_to_id := get_build_upd_line_rec.Ship_To_Site_id;

l_lines_rec_type.usage_type :=NVL(get_build_upd_line_rec.usage_type,'QTY');

l_lines_rec_type.usage_period:='DYS';--- Hard Coded As per Requirement

l_lines_Rec_Type.accounting_rule_type:=get_build_upd_hdr_rec.Accounting_Type;

l_lines_Rec_Type.invoicing_rule_type:=get_build_upd_hdr_rec.Invoicing_rule;

l_lines_Rec_Type.line_type:='U';
l_lines_Rec_Type.currency:=get_build_upd_hdr_rec.Currency_Code;

l_lines_Rec_Type.line_renewal_type:=nvl(get_build_upd_line_rec.line_renewal_type,'F
UL');

l_lines_rec_type.start_date_active:=get_build_upd_line_rec.Start_Date_Active;

l_lines_rec_type.end_date_active:=get_build_upd_line_rec.End_Date_Active;

l_lines_rec_type.srv_id:=get_build_upd_line_rec.Inv_Item_id;

l_lines_rec_type.srv_sdt:=trunc(get_build_upd_line_rec.Start_Date_Active);

l_lines_rec_type.srv_edt:=trunc(get_build_upd_line_rec.End_Date_Active);

l_lines_rec_type.UOM_CODE :=get_build_upd_line_rec.Uom_code;

l_lines_rec_type.quantity:= get_build_upd_line_rec.quantity;

--l_lines_rec_type.orig_system_source_code:=get_build_upd_line_rec.orig_system_sour
ce_code;

--l_lines_rec_type.orig_system_id1 :=get_build_upd_line_rec.orig_system_id;
--
l_lines_rec_type.orig_system_reference1:=get_build_upd_hdr_rec.order_number;

l_lines_rec_type.attribute1:=get_build_upd_line_rec.attribute1;

l_lines_rec_type.attribute2:=get_build_upd_line_rec.attribute2;

l_lines_rec_type.attribute3:=get_build_upd_line_rec.attribute3;

l_lines_rec_type.attribute4:=get_build_upd_line_rec.attribute4;

l_lines_rec_type.attribute5:=get_build_upd_line_rec.attribute5;

l_lines_rec_type.attribute6:=get_build_upd_line_rec.attribute6;

l_lines_rec_type.attribute7:=get_build_upd_line_rec.attribute7;

l_lines_rec_type.attribute8:=get_build_upd_line_rec.attribute8;

l_lines_rec_type.attribute9:=get_build_upd_line_rec.attribute9;

l_lines_rec_type.attribute10:=get_build_upd_line_rec.attribute10;
IF
Validate_Inv_Item(get_build_upd_line_rec.Inv_Item_Number) THEN
BEGIN
SELECT
ood.organization_id
INTO
l_inv_org_id
FROM
org_organization_definitions ood,

mtl_parameters mp,

hr_operating_units hop,
MTL_SYSTEM_ITEMS_B mtl
WHERE
ood.organization_id = mp.organization_id
AND
ood.operating_unit = hop.organization_id
AND
ood.organization_id = mtl.organization_id
AND
hop.organization_id = p_operating_unit
AND
mtl.segment1 =get_build_upd_line_rec.Inv_Item_Number
AND
ood.organization_id <> mp.master_organization_id
AND
rownum =1;
SELECT
mp.master_organization_id
INTO
l_org_id
FROM
org_organization_definitions ood,

mtl_parameters mp,

hr_operating_units hop,

MTL_SYSTEM_ITEMS_B mtl
WHERE
ood.organization_id = mp.organization_id
AND
ood.operating_unit = hop.organization_id
AND
ood.organization_id = mtl.organization_id
AND
hop.organization_id = p_operating_unit
AND
mtl.segment1 =get_build_upd_line_rec.Inv_Item_Number
AND
ood.organization_id = mp.master_organization_id
AND
rownum =1;

l_lines_Rec_Type.organization_id:=l_inv_org_id;
EXCEPTION
WHEN
OTHERS THEN

lv_err_msg :=Sqlerrm||';'||'Inventory Organization Missing for Item Number'||':'||


get_build_upd_line_rec.Inv_Item_Number;
Update
XXOKS_SVC_BUILD_LINES_STG set process_flag='E',contract_number=l_contract_number
where
record_id=l_line_record_id;

APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail

('OKS_EXT_01',lv_run_id,-1,'XXOKS_SVC_BUILD_LINES_STG','','',
'ERROR_TYPE','ERROR_AT_Inventory organization seletion','','','','','','',
'','','','','','','','','','','','', lv_err_msg,'VE',lv_status) ;
END;
--- Calling
Lines API-----

lv_status:=Null;

Create_Service_Line(l_lines_Rec_Type,l_list_id,get_build_upd_line_rec.orig_system_s
ource_code

,get_build_upd_line_rec.orig_system_id

,get_build_upd_hdr_rec.order_number,lv_status);

Validate_Loc_Number(l_party_id,get_build_upd_line_rec.location_number,l_location_id
,lv_status);

IF lv_status <> 'E' THEN

SELECT csi_item_instances_s.nextval

INTO l_instance_id

FROM dual;

l_item_number:=get_build_upd_line_rec.Inv_Item_Number||'C';

SELECT inventory_item_id

INTO l_item_id

FROM mtl_system_items_b

WHERE segment1 =l_item_number

AND organization_id = l_org_id;

l_instance_rec.instance_id := l_instance_id;

l_instance_rec.instance_number := l_instance_id;

l_instance_rec.external_reference
:=get_build_upd_hdr_rec.contract_number;

l_instance_rec.inventory_item_id:= l_item_id;

l_instance_rec.inv_master_organization_id:=l_org_id;

l_instance_rec.mfg_serial_number_flag := 'N';

l_instance_rec.quantity:=1;

l_instance_rec.unit_of_measure:=get_build_upd_line_rec.UOM_Code;

l_instance_rec.accounting_class_code := 'CUST_PROD';

l_instance_rec.instance_status_id:=510;
l_instance_rec.customer_view_flag := NULL;

l_instance_rec.merchant_view_flag := NULL;

l_instance_rec.sellable_flag := NULL;

l_instance_rec.active_start_date :=
trunc(get_build_upd_line_rec.Start_Date_Active);

l_instance_rec.location_type_code := 'HZ_LOCATIONS';

l_instance_rec.LOCATION_ID :=l_location_id;

l_instance_rec.install_date :=
trunc(get_build_upd_line_rec.Start_Date_Active);

l_instance_rec.creation_complete_flag := 'Y';

l_instance_rec.version_label := 'AS_CREATED';

l_instance_rec.object_version_number := 1;

SELECT csi_i_parties_s.nextval

INTO l_instance_party_id

FROM dual;

l_party_tbl.DELETE;

l_party_tbl(1).instance_party_id := l_instance_party_id;

l_party_tbl(1).instance_id := l_instance_id;

l_party_tbl(1).party_source_table := 'HZ_PARTIES';

l_party_tbl(1).party_id := l_party_id;

l_party_tbl(1).relationship_type_code := 'OWNER';

l_party_tbl(1).contact_flag := 'N';

l_party_tbl(1).active_start_date :=
trunc(get_build_upd_line_rec.Start_Date_Active);

l_party_tbl(1).object_version_number := 1;

SELECT csi_ip_accounts_s.nextval

INTO l_ip_account_id

FROM dual;

SELECT transaction_type_id

INTO l_transaction_type_id

FROM CSI_TXN_TYPES
WHERE source_transaction_type='ITEM_INSTANCE_CTR_CAPTURE';

l_account_tbl.DELETE;

l_account_tbl(1).ip_account_id := l_ip_account_id;

l_account_tbl(1).instance_party_id := l_instance_party_id;

l_account_tbl(1).party_account_id := l_cust_acc_id;

l_account_tbl(1).relationship_type_code := 'OWNER';

l_account_tbl(1).active_start_date := sysdate;

l_account_tbl(1).BILL_TO_ADDRESS :=
get_build_upd_line_rec.Bill_To_Site_id;

l_account_tbl(1).SHIP_TO_ADDRESS :=
get_build_upd_line_rec.Ship_To_Site_id;

l_account_tbl(1).object_version_number := 1;

l_account_tbl(1).parent_tbl_index := 1;

l_account_tbl(1).call_contracts := 'Y';

l_txn_rec.transaction_date :=
trunc(get_build_upd_line_rec.Start_Date_Active);

l_txn_rec.SOURCE_TRANSACTION_DATE :=
trunc(get_build_upd_line_rec.Start_Date_Active);

l_txn_rec.TRANSACTION_TYPE_ID := l_transaction_type_id;

l_txn_rec.OBJECT_VERSION_NUMBER := 1;

lv_status:=Null;

l_return_status:=Null;

l_msg_count:=NUll;

l_msg_data :=NULL;

l_msg_index_out:=Null;

CSI_ITEM_INSTANCE_PUB.create_item_instance

p_api_version => l_api_version

,p_commit => l_commit

,p_init_msg_list => l_init_msg_list

,p_validation_level => l_validation_level

,p_instance_rec => l_instance_rec


,p_ext_attrib_values_tbl => l_ext_attrib_values_tbl

,p_party_tbl => l_party_tbl

,p_account_tbl => l_account_tbl

,p_pricing_attrib_tbl => l_pricing_attrib_tbl

,p_org_assignments_tbl => l_org_assignments_tbl

,p_asset_assignment_tbl => l_asset_assignment_tbl

,p_txn_rec => l_txn_rec

,x_return_status => l_return_status

,x_msg_count => l_msg_count

,x_msg_data => l_msg_data

);

IF (l_return_status <> Fnd_Api.g_ret_sts_success) THEN

SELECT segment1

INTO l_item_number

FROM mtl_system_items_b

WHERE inventory_item_id=l_instance_rec.inventory_item_id

AND organization_id=101;

lv_err_msg := 'Create_Item_Instance :API Error:


Inventory Item '

|| ': '|| l_item_number ;

UPDATE xxoks_svc_build_lines_stg SET


process_flag='E',contract_number=get_build_upd_hdr_rec.contract_number

WHERE line_number =
get_build_upd_line_rec.line_number

AND stg_header_id
=get_build_upd_line_rec.stg_header_id;

FOR i IN 1 .. l_msg_count

LOOP

Fnd_Msg_Pub.get (

p_msg_index => i

,p_encoded => Fnd_Api.G_FALSE


,p_data => l_msg_data

,p_msg_index_out => l_msg_index_out

);

lv_err_msg := lv_err_msg ||':'|| l_msg_data;

APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail

('OKS_EXT_01',lv_run_id,-
1,'XXOKS_SVC_BUILD_LINES_STG','','',
'ERROR_TYPE','ERROR_AT_Create_Item_Instance','','','','','','',

'','','','','','','','','','','','',
lv_err_msg,'VE',lv_status) ;

END LOOP;

ELSIF l_return_status <> 'E' THEN

SELECT counter_id

INTO l_counter_id

FROM csi_counter_associations

WHERE source_object_id =l_instance_id;

Create_counter_reading(get_build_upd_line_rec.Start_Date_Active,

get_build_upd_line_rec.End_Date_Active,

l_counter_id,

lv_status);

IF lv_status <> 'E' THEN

l_k_covd_rec.k_id :=l_chr_id;

l_k_covd_rec.product_sts_code :=get_build_upd_line_rec.Line_sts_code;

l_k_covd_rec.Attach_2_Line_id :=l_Service_line_id;

l_k_covd_rec.Customer_Product_Id :=l_counter_id;

l_k_covd_rec.Product_Start_Date :=trunc(get_build_upd_line_rec.Start_Date_Active);
l_k_covd_rec.Product_End_Date :=trunc(get_build_upd_line_rec.End_Date_Active);

l_k_covd_rec.Quantity
:=get_build_upd_line_rec.Quantity;

l_k_covd_rec.Uom_Code :=get_build_upd_line_rec.UOM_Code;

l_k_covd_rec.currency_code :=get_build_upd_hdr_rec.Currency_Code;

l_k_covd_rec.line_renewal_type
:=NVL(get_build_upd_line_rec.line_renewal_type,'FUL');

l_k_covd_rec.period :='DYS';

l_k_covd_rec.default_qty :='0';

l_k_covd_rec.base_reading :='0';

--- Calling Create Covered Lines


API

lv_status:=Null;

Create_Covered_Lines(l_k_covd_rec,lv_status);

IF lv_status <> 'E' THEN

l_strm_level_tbl.DELETE;

l_strm_level_tbl(1).cle_id :=l_Service_line_id;

l_strm_level_tbl(1).chr_id :=l_chr_id;

l_strm_level_tbl(1).ID
:=l_chr_id;

l_strm_level_tbl(1).sequence_no
:=nvl(get_build_upd_line_rec.Billing_Seq_number,1);

l_strm_level_tbl(1).level_periods
:=get_build_upd_line_rec.Billing_No_of_periods;

--
l_strm_level_tbl(1).start_date
:=trunc(get_build_upd_line_rec.Start_Date_Active);

--
l_strm_level_tbl(1).end_date
:=trunc(get_build_upd_line_rec.End_Date_Active);

IF
upper(get_build_upd_line_rec.Billing_period)='MONTH' THEN

l_uom_code :='MON';

ELSIF
upper(get_build_upd_line_rec.Billing_period)='DAY' THEN

l_uom_code :='DYS';

ELSIF
upper(get_build_upd_line_rec.Billing_period)= 'WEEK' THEN

l_uom_code :=
'WKS';

ELSIF
upper(get_build_upd_line_rec.Billing_period)= 'YEAR' THEN

l_uom_code :=
'YRS';

END IF;

l_strm_level_tbl(1).uom_code := l_uom_code;

l_strm_level_tbl(1).uom_per_period :=get_build_upd_line_rec.billing_Duration;

/*BEGIN

Okc_Time_Util_Pub.get_duration

p_start_date => TRUNC(get_build_upd_line_rec.Start_Date_Active),

p_end_date
=> TRUNC(get_build_upd_line_rec.End_Date_Active),

x_duration
=> temp_duration,

x_timeunit
=> temp_timeunits,

x_return_status => temp_return_status

);

l_strm_level_tbl(1).uom_code := temp_timeunits;
l_strm_level_tbl(1).uom_per_period :=temp_duration;

EXCEPTION

when others then

Null;

END;*/

l_return_status:=Null;

/****** Calling API


Oks_Contracts_Pub.Create_Bill_Schedule for Billing lines creation
****************/

Oks_Contracts_Pub.create_bill_schedule (

get_build_upd_line_rec.billing_schedule,

l_strm_level_tbl,

get_build_upd_hdr_rec.Invoicing_rule,

l_return_status);

IF
(l_return_status <> Fnd_Api.g_ret_sts_success) THEN

lv_err_msg
:= 'create_bill_schedule :API Error: Contract Number '

|| ':
'|| get_build_upd_line_rec.contract_number ;

APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail

('OKS_EXT_01',lv_run_id,-1,'XXOKS_SVC_BUILD_LINES_STG','','',
'ERROR_TYPE','ERROR_AT_create_bill_schedule','','','','','','',

'','','','','','','','','','','','', lv_err_msg,'VE',lv_status) ;

ELSE

UPDATE
xxoks_svc_build_lines_stg SET
process_flag='S',contract_number=get_build_upd_line_rec.contract_number

WHERE
record_id = l_line_record_id
AND
stg_header_id =get_build_upd_line_rec.stg_header_id;

UPDATE
XXOKS_SVC_BUILD_HEADER_STG SET process_flag='S'

WHERE
stg_header_id = get_build_upd_hdr_rec.stg_header_id

AND
record_id = l_hdr_record_id;

COMMIT;

END IF;

ELSE

UPDATE
xxoks_svc_build_lines_stg SET
process_flag='E',contract_number=get_build_upd_line_rec.contract_number

WHERE record_id =
l_line_record_id

AND stg_header_id
=get_build_upd_line_rec.stg_header_id;

END IF;

ELSE

UPDATE xxoks_svc_build_lines_stg SET


process_flag='E',contract_number=get_build_upd_line_rec.contract_number

WHERE record_id = l_line_record_id

AND stg_header_id
=get_build_upd_line_rec.stg_header_id;

END IF;

ELSE

UPDATE xxoks_svc_build_lines_stg SET


process_flag='E',contract_number=get_build_upd_line_rec.contract_number

WHERE record_id = l_line_record_id

AND stg_header_id = get_build_upd_line_rec.stg_header_id;

END IF;

ELSE

UPDATE xxoks_svc_build_lines_stg SET


process_flag='E',contract_number=get_build_upd_line_rec.contract_number
WHERE record_id = l_line_record_id

AND stg_header_id = get_build_upd_line_rec.stg_header_id;

END IF;
END IF;
END IF;
END LOOP;
-- Commit;
END IF;
END IF;
END IF;
END LOOP;
END Update_Service_Cont_Process;
PROCEDURE Create_bld_sales_ord_process(p_source IN Varchar2,
p_operating_unit IN Number,
p_sales_order IN Number)
IS
CURSOR get_bld_ord_hdr_stg_cur IS
SELECT *
FROM XXOKS_SVC_BUILD_HEADER_STG
WHERE source_code =p_source
AND order_number = NVL(p_sales_order,order_number);
CURSOR get_bld_ord_line_stg_cur(p_header_id NUMBER) IS
SELECT *
FROM XXOKS_SVC_BUILD_LINES_STG
WHERE stg_header_id = p_header_id
ORDER BY line_number asc;
l_list_id number;
l_chr_group number;
l_party_id number;
l_cust_acc_id Number;
l_term_id number;
l_con_seq_num number;
l_contract_number varchar2(120);
l_instance_id Number;
l_instance_party_id Number;
L_item_id Number;
l_item_number varchar2(40);
l_ip_account_id Number;
l_counter_id number;
temp_duration NUMBER := 0;
temp_timeunits VARCHAR2(30) := 'NA';
temp_return_status VARCHAR2(30) := 'NA';
l_billing_sch varchar2(1):='T';
l_header_id NUMBER;
l_uom_code Varchar2(10);
BEGIN
FOR get_bld_ord_hdr_stg_rec IN get_bld_ord_hdr_stg_cur LOOP
l_num_hdr_rec_cnt := get_bld_ord_hdr_stg_cur%ROWCOUNT;
IF l_num_hdr_rec_cnt =0 THEN
EXIT;
END IF;
l_hdr_record_id:=get_bld_ord_hdr_stg_rec.record_id;
l_list_id
:=Validate_Price_List(get_bld_ord_hdr_stg_rec.Price_List);

l_chr_group:=Validate_Chr_group(get_bld_ord_hdr_stg_rec.Contract_Group);
lv_status :=Null;
Validate_party_details(get_bld_ord_hdr_stg_rec.party_name,
get_bld_ord_hdr_stg_rec.Payment_Terms,
get_bld_ord_hdr_stg_rec.Bill_To_Site_id,
get_bld_ord_hdr_stg_rec.Ship_To_Site_id,
l_party_id,
l_cust_acc_id,
l_term_id,
lv_status);

Validate_order_num_Exist(get_bld_ord_hdr_stg_rec.order_number,lv_status);
IF lv_status <> 'E' THEN
/* SELECT okc_k_headers_s1.nextval
INTO l_con_seq_num
FROM dual;*/
l_contract_number:=null;
IF get_bld_ord_hdr_stg_rec.order_number
IS NOT NULL THEN
l_header_id
:=validate_order_num(get_bld_ord_hdr_stg_rec.order_number);
END IF;
l_head_rec_type.contract_number:=l_contract_number;

l_head_rec_type.short_description:=get_bld_ord_hdr_stg_rec.Description;
l_head_rec_type.start_date
:=TRUNC(get_bld_ord_hdr_stg_rec.Actual_Start_Date);
l_head_rec_type.end_date
:=TRUNC(get_bld_ord_hdr_stg_rec.Actual_End_Date);

l_head_rec_type.sts_code:=get_bld_ord_hdr_stg_rec.Sts_Code;

l_head_rec_type.scs_code:=get_bld_ord_hdr_stg_rec.scs_code;
l_head_rec_type.authoring_org_id:=p_operating_unit;
l_head_rec_type.pdf_id:=get_bld_ord_hdr_stg_rec.pdf_id;
l_head_rec_type.chr_group:=l_chr_group;
l_head_rec_type.party_id:=l_party_id;

l_head_rec_type.bill_to_id:=get_bld_ord_hdr_stg_rec.bill_to_site_id;

l_head_rec_type.ship_to_id:=get_bld_ord_hdr_stg_rec.ship_to_site_id;

l_head_rec_type.currency:=get_bld_ord_hdr_stg_rec.Currency_Code;
l_head_rec_type.qcl_id:=get_bld_ord_hdr_stg_rec.qcl_id;

l_head_rec_type.accounting_rule_type:=get_bld_ord_hdr_stg_rec.Accounting_Type;

l_head_rec_type.invoice_rule_type:=get_bld_ord_hdr_stg_rec.Invoicing_rule;
l_head_rec_type.payment_term_id:=l_term_id;
l_head_rec_type.price_list_id:=l_list_id;
l_head_rec_type.order_hdr_id:=l_header_id;
l_head_rec_type.ar_interface_yn:='Y';
l_head_rec_type.summary_invoice_yn:='N';

l_head_rec_type.attribute1:=get_bld_ord_hdr_stg_rec.attribute1;

l_head_rec_type.attribute2:=get_bld_ord_hdr_stg_rec.attribute2;

l_head_rec_type.attribute3:=get_bld_ord_hdr_stg_rec.attribute3;

l_head_rec_type.attribute4:=get_bld_ord_hdr_stg_rec.attribute4;
l_head_rec_type.attribute5:=get_bld_ord_hdr_stg_rec.attribute5;

l_head_rec_type.attribute6:=get_bld_ord_hdr_stg_rec.attribute6;

l_head_rec_type.attribute7:=get_bld_ord_hdr_stg_rec.attribute7;

l_head_rec_type.attribute8:=get_bld_ord_hdr_stg_rec.attribute8;

l_head_rec_type.attribute9:=get_bld_ord_hdr_stg_rec.attribute9;

l_head_rec_type.attribute10:=get_bld_ord_hdr_stg_rec.attribute10;
---Calling Service Contract Header API to create
Service Contract Header and Vendor Contacts Details
Create_Contract_Header (l_head_rec_type,

get_bld_ord_hdr_stg_rec.orig_system_source_code,
get_bld_ord_hdr_stg_rec.orig_system_id,

get_bld_ord_hdr_stg_rec.legacy_contract_number,
get_bld_ord_hdr_stg_rec.order_number,
get_bld_ord_hdr_stg_rec.transaction_type,
lv_status);
DBMS_OUTPUT.put_line('lv_status'||lv_status);
IF lv_status <> 'E' THEN
---Assigning Service Lines
FOR get_bld_ord_line_stg_rec IN
get_bld_ord_line_stg_cur(get_bld_ord_hdr_stg_rec.Stg_header_id)
LOOP
l_num_line_rec_cnt :=get_bld_ord_line_stg_cur
%ROWCOUNT;

l_line_record_id:=get_bld_ord_line_stg_rec.record_id;
l_lines_Rec_Type.k_hdr_id :=l_chrid;

l_lines_Rec_Type.k_line_number:=get_bld_ord_line_stg_rec.Line_Number;
l_lines_Rec_Type.line_sts_code
:=get_bld_ord_line_stg_rec.Line_sts_code;
l_lines_rec_type.cust_account :=l_cust_acc_id;
l_lines_Rec_Type.org_id := p_operating_unit;

l_lines_Rec_Type.bill_to_id:=get_bld_ord_line_stg_rec.Bill_To_Site_id;
l_lines_Rec_Type.ship_to_id :=
get_bld_ord_line_stg_rec.Ship_To_Site_id;
l_lines_rec_type.usage_type
:=nvl(get_bld_ord_line_stg_rec.usage_type,'QTY');
l_lines_rec_type.usage_period:='DYS';--- Hard
Coded As per Requirement

l_lines_Rec_Type.accounting_rule_type:=get_bld_ord_hdr_stg_rec.Accounting_Type;

l_lines_Rec_Type.invoicing_rule_type:=get_bld_ord_hdr_stg_rec.Invoicing_rule;
l_lines_Rec_Type.line_type:='U';

l_lines_Rec_Type.currency:=get_bld_ord_hdr_stg_rec.Currency_Code;

l_lines_Rec_Type.line_renewal_type:=nvl(get_bld_ord_line_stg_rec.line_renewal_type,
'FUL');
l_lines_rec_type.start_date_active:=trunc(get_bld_ord_hdr_stg_rec.Actual_Start_Date
);

l_lines_rec_type.end_date_active:=trunc(get_bld_ord_hdr_stg_rec.Actual_End_Date);

l_lines_rec_type.srv_id:=get_bld_ord_line_stg_rec.Inv_Item_id;
l_lines_rec_type.srv_sdt:=
trunc(get_bld_ord_hdr_stg_rec.Actual_Start_Date);

l_lines_rec_type.srv_edt:=trunc(get_bld_ord_hdr_stg_rec.Actual_End_Date);
l_lines_rec_type.UOM_CODE
:=get_bld_ord_line_stg_rec.Uom_code;
l_lines_rec_type.quantity:=
get_bld_ord_line_stg_rec.quantity;

l_lines_rec_type.attribute1:=get_bld_ord_line_stg_rec.attribute1;

l_lines_rec_type.attribute2:=get_bld_ord_line_stg_rec.attribute2;

l_lines_rec_type.attribute3:=get_bld_ord_line_stg_rec.attribute3;

l_lines_rec_type.attribute4:=get_bld_ord_line_stg_rec.attribute4;

l_lines_rec_type.attribute5:=get_bld_ord_line_stg_rec.attribute5;

l_lines_rec_type.attribute6:=get_bld_ord_line_stg_rec.attribute6;

l_lines_rec_type.attribute7:=get_bld_ord_line_stg_rec.attribute7;

l_lines_rec_type.attribute8:=get_bld_ord_line_stg_rec.attribute8;

l_lines_rec_type.attribute9:=get_bld_ord_line_stg_rec.attribute9;

l_lines_rec_type.attribute10:=get_bld_ord_line_stg_rec.attribute10;
IF
Validate_Inv_Item(get_bld_ord_line_stg_rec.Inv_Item_Number) THEN
BEGIN
SELECT ood.organization_id
INTO l_inv_org_id
FROM org_organization_definitions ood,
mtl_parameters mp,
hr_operating_units hop,
MTL_SYSTEM_ITEMS_B mtl
WHERE ood.organization_id =
mp.organization_id
AND ood.operating_unit =
hop.organization_id
AND ood.organization_id =
mtl.organization_id
AND hop.organization_id =
p_operating_unit
AND mtl.segment1
=get_bld_ord_line_stg_rec.Inv_Item_Number
AND ood.organization_id <>
mp.master_organization_id
AND rownum =1;
SELECT mp.master_organization_id
INTO l_org_id
FROM org_organization_definitions ood,
mtl_parameters mp,
hr_operating_units hop,
mtl_system_items_b mtl
WHERE ood.organization_id =
mp.organization_id
AND ood.operating_unit =
hop.organization_id
AND ood.organization_id =
mtl.organization_id
AND hop.organization_id =
p_operating_unit
AND mtl.segment1
=get_bld_ord_line_stg_rec.Inv_Item_Number
AND ood.organization_id =
mp.master_organization_id
AND rownum =1;

l_lines_Rec_Type.organization_id:=l_inv_org_id;
EXCEPTION
WHEN OTHERS THEN
lv_err_msg :=Sqlerrm||';'||'Inventory
Organization Missing for Item Number'||':'||
get_bld_ord_line_stg_rec.Inv_Item_Number;
Update XXOKS_SVC_BUILD_LINES_STG set
process_flag='E',contract_number=l_contract_number
where record_id=l_line_record_id;

APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail
('OKS_EXT_01',lv_run_id,-
1,'XXOKS_SVC_BUILD_LINES_STG','','', 'ERROR_TYPE','ERROR_AT_Inventory organization
seletion','','','','','','',
'','','','','','','','','','','','',
lv_err_msg,'VE',lv_status) ;
END;
--- Calling Lines API-----
lv_status:=Null;

Create_Service_Line(l_lines_Rec_Type,l_list_id,get_bld_ord_line_stg_rec.orig_system
_source_code,

get_bld_ord_line_stg_rec.orig_system_id,

get_bld_ord_hdr_stg_rec.order_number,lv_status);

Validate_Loc_Number(l_party_id,get_bld_ord_line_stg_rec.location_number,l_location_
id,lv_status);
IF lv_status <> 'E' THEN
SELECT csi_item_instances_s.nextval
INTO l_instance_id
FROM dual;

l_item_number:=get_bld_ord_line_stg_rec.Inv_Item_Number||'C';
SELECT inventory_item_id
INTO l_item_id
FROM mtl_system_items_b
WHERE segment1 =l_item_number
AND organization_id = l_org_id;
l_instance_rec.instance_id :=
l_instance_id;
l_instance_rec.instance_number :=
l_instance_id;

l_instance_rec.external_reference :=l_contract_number;
l_instance_rec.inventory_item_id:=
l_item_id;

l_instance_rec.inv_master_organization_id:=l_org_id;

l_instance_rec.mfg_serial_number_flag := 'N';
l_instance_rec.quantity:=1;--
get_bld_ord_line_stg_rec.Quantity;

l_instance_rec.unit_of_measure:=get_bld_ord_line_stg_rec.Uom_code;--
nvl(get_bld_ord_line_stg_rec.UOM_Code,'EA');

l_instance_rec.accounting_class_code := 'CUST_PROD';

l_instance_rec.instance_status_id:=510;

l_instance_rec.customer_view_flag := NULL;

l_instance_rec.merchant_view_flag := NULL;

l_instance_rec.sellable_flag := NULL;

l_instance_rec.active_start_date :=
trunc(get_bld_ord_line_stg_rec.Start_Date_Active);

l_instance_rec.location_type_code := 'HZ_LOCATIONS';

l_instance_rec.LOCATION_ID := l_location_id;

l_instance_rec.install_date :=
trunc(get_bld_ord_line_stg_rec.Start_Date_Active);

l_instance_rec.creation_complete_flag := 'Y';
l_instance_rec.version_label
:= 'AS_CREATED';

l_instance_rec.object_version_number := 1;
SELECT csi_i_parties_s.nextval
INTO l_instance_party_id
FROM dual;
l_party_tbl.DELETE;
l_party_tbl(1).instance_party_id
:= l_instance_party_id;
l_party_tbl(1).instance_id
:= l_instance_id;
l_party_tbl(1).party_source_table
:= 'HZ_PARTIES';
l_party_tbl(1).party_id
:= l_party_id;

l_party_tbl(1).relationship_type_code := 'OWNER';
l_party_tbl(1).contact_flag
:= 'N';
l_party_tbl(1).active_start_date
:= trunc(get_bld_ord_line_stg_rec.Start_Date_Active);

l_party_tbl(1).object_version_number := 1;
SELECT csi_ip_accounts_s.nextval
INTO l_ip_account_id
FROM dual;
SELECT transaction_type_id
INTO l_transaction_type_id
FROM CSI_TXN_TYPES
WHERE
source_transaction_type='ITEM_INSTANCE_CTR_CAPTURE';
l_account_tbl.DELETE;
l_account_tbl(1).ip_account_id
:= l_ip_account_id;
l_account_tbl(1).instance_party_id
:= l_instance_party_id;
l_account_tbl(1).party_account_id
:= l_cust_acc_id;

l_account_tbl(1).relationship_type_code := 'OWNER';
l_account_tbl(1).active_start_date
:= sysdate;
l_account_tbl(1).BILL_TO_ADDRESS
:= get_bld_ord_line_stg_rec.Bill_To_Site_id;
l_account_tbl(1).SHIP_TO_ADDRESS
:= get_bld_ord_line_stg_rec.Ship_To_Site_id;

l_account_tbl(1).object_version_number := 1;
l_account_tbl(1).parent_tbl_index
:= 1;
l_account_tbl(1).call_contracts
:= 'Y';
l_txn_rec.transaction_date
:= trunc(get_bld_ord_line_stg_rec.Start_Date_Active);
l_txn_rec.SOURCE_TRANSACTION_DATE
:= trunc(get_bld_ord_line_stg_rec.Start_Date_Active);
l_txn_rec.TRANSACTION_TYPE_ID
:= l_transaction_type_id;
l_txn_rec.OBJECT_VERSION_NUMBER
:= 1;
lv_status:=Null;
l_return_status:=Null;
l_msg_count:=0;
l_msg_data :=NULL;
l_msg_index_out:=Null;

CSI_ITEM_INSTANCE_PUB.create_item_instance
(
p_api_version =>
l_api_version
,p_commit =>
l_commit
,p_init_msg_list =>
l_init_msg_list
,p_validation_level =>
l_validation_level
,p_instance_rec =>
l_instance_rec
,p_ext_attrib_values_tbl =>
l_ext_attrib_values_tbl
,p_party_tbl =>
l_party_tbl
,p_account_tbl =>
l_account_tbl
,p_pricing_attrib_tbl =>
l_pricing_attrib_tbl
,p_org_assignments_tbl =>
l_org_assignments_tbl
,p_asset_assignment_tbl =>
l_asset_assignment_tbl
,p_txn_rec =>
l_txn_rec
,x_return_status =>
l_return_status
,x_msg_count =>
l_msg_count
,x_msg_data =>
l_msg_data
);
IF (l_return_status <>
Fnd_Api.g_ret_sts_success) THEN
SELECT segment1
INTO l_item_number
FROM
mtl_system_items_b
WHERE
inventory_item_id=l_instance_rec.inventory_item_id
AND
organization_id=l_org_id;
Update
XXOKS_SVC_BUILD_LINES_STG set process_flag='E',contract_number=l_contract_number
WHERE
record_id=l_line_record_id;
lv_err_msg :=
'Create_Item_Instance :API Error: Inventory Item '
|| ': '||
l_item_number ;
FOR i IN
1 .. l_msg_count
LOOP

Fnd_Msg_Pub.get (
p_msg_index
=> i
,p_encoded
=> Fnd_Api.G_FALSE
,p_data =>
l_msg_data
,p_msg_index
_out => l_msg_index_out
);

lv_err_msg := lv_err_msg ||':'|| l_msg_data;

APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail

('OKS_EXT_01',lv_run_id,-1,'XXOKS_SVC_BUILD_LINES_STG','','',
'ERROR_TYPE','ERROR_AT_Create_Item_Instance','','','','','','',
'','','','','','','','','','','','', lv_err_msg,'VE',lv_status) ;
END LOOP;
ELSIF l_return_status <> 'E'
THEN
BEGIN
SELECT
counter_id
INTO
l_counter_id
FROM
csi_counter_associations
WHERE
source_object_id =l_instance_id;
EXCEPTION
WHEN
NO_DATA_FOUND THEN
Update
XXOKS_SVC_BUILD_LINES_STG set process_flag='E',contract_number=l_contract_number
WHERE
record_id=l_line_record_id;

l_counter_id:=0;

lv_err_msg:='Counter is not Created with this Item Instance:'||


l_instance_id||'Item is'||':'||l_item_number;

APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail

('OKS_EXT_01',lv_run_id,-1,'XXOKS_SVC_BUILD_LINES_STG','','',
'ERROR_TYPE','ERROR_AT :Item_Instance Counter Part','','','','','','',

'','','','','','','','','','','','', lv_err_msg,'VE',lv_status) ;
END;
IF
l_counter_id > 0 THEN

Create_counter_reading(get_bld_ord_line_stg_rec.Start_Date_Active,

get_bld_ord_line_stg_rec.End_Date_Active,

l_counter_id,

lv_status);
ELSE
lv_status :='E';
END IF;
IF lv_status
<> 'E' THEN

l_k_covd_rec.k_id :=l_chrid;

l_k_covd_rec.product_sts_code :=get_bld_ord_line_stg_rec.Line_sts_code;

l_k_covd_rec.Attach_2_Line_id :=l_Service_line_id;

l_k_covd_rec.Customer_Product_Id :=l_counter_id;

l_k_covd_rec.Product_Start_Date
:=trunc(get_bld_ord_line_stg_rec.Start_Date_Active);

l_k_covd_rec.Product_End_Date :=trunc(get_bld_ord_line_stg_rec.End_Date_Active);

l_k_covd_rec.Quantity :=get_bld_ord_line_stg_rec.Quantity;

l_k_covd_rec.Uom_Code :=NVL(get_bld_ord_line_stg_rec.UOM_Code,'EA');

l_k_covd_rec.currency_code :=get_bld_ord_hdr_stg_rec.Currency_Code;

l_k_covd_rec.line_renewal_type
:=NVL(get_bld_ord_line_stg_rec.line_renewal_type,'FUL');

l_k_covd_rec.period :='DYS';

l_k_covd_rec.default_qty :='0';

l_k_covd_rec.base_reading :='0';

--- Calling Create Covered Lines API

lv_status:=Null;

Create_Covered_Lines(l_k_covd_rec,lv_status);

IF lv_status <> 'E' THEN

l_strm_level_tbl.DELETE;

l_strm_level_tbl(1).cle_id :=l_Service_line_id;

l_strm_level_tbl(1).chr_id :=l_chrid;

l_strm_level_tbl(1).ID :=l_chrid;

l_strm_level_tbl(1).sequence_no
:=get_bld_ord_line_stg_rec.Billing_Seq_number;

l_strm_level_tbl(1).level_periods
:=get_bld_ord_line_stg_rec.Billing_No_of_periods;

-- l_strm_level_tbl(1).start_date
:=trunc(get_bld_ord_line_stg_rec.Start_Date_Active);

-- l_strm_level_tbl(1).end_date
:=trunc(get_bld_ord_line_stg_rec.End_Date_Active);

IF upper(get_bld_ord_line_stg_rec.Billing_period)='MONTH' THEN

l_uom_code :='MON';

ELSIF upper(get_bld_ord_line_stg_rec.Billing_period)='DAY' THEN

l_uom_code :='DYS';

ELSIF upper(get_bld_ord_line_stg_rec.Billing_period)= 'WEEK' THEN

l_uom_code := 'WKS';
ELSIF upper(get_bld_ord_line_stg_rec.Billing_period)= 'YEAR' THEN

l_uom_code := 'YRS';

END IF;

l_strm_level_tbl(1).uom_code := l_uom_code;

l_strm_level_tbl(1).uom_per_period
:=get_bld_ord_line_stg_rec.billing_Duration;

/*BEGIN

Okc_Time_Util_Pub.get_duration

p_start_date => TRUNC(sysdate),

p_end_date => TRUNC(sysdate),

x_duration => temp_duration,

x_timeunit => temp_timeunits,

x_return_status => temp_return_status

);

l_strm_level_tbl(1).uom_code := temp_timeunits;

l_strm_level_tbl(1).uom_per_period :=temp_duration;

EXCEPTION

when others then

Null;

END;*/

l_return_status:=Null;

/****** Calling API Oks_Contracts_Pub.Create_Bill_Schedule for Billing


lines creation ****************/

Oks_Contracts_Pub.create_bill_schedule (

get_bld_ord_line_stg_rec.billing_schedule,

l_strm_level_tbl,

get_bld_ord_hdr_stg_rec.Invoicing_rule,

l_return_status);

IF (l_return_status <> Fnd_Api.g_ret_sts_success) THEN


lv_err_msg := 'create_bill_schedule :API
Error: Contract Number '

|| ': '|| l_contract_number ;

--

Update XXOKS_SVC_BUILD_HEADER_STG set


process_flag='E',contract_number=l_contract_number

Where record_id=l_hdr_record_id;

Update XXOKS_SVC_BUILD_LINES_STG set


process_flag='E',contract_number=l_contract_number

WHERE record_id=l_line_record_id;

FOR i IN 1 .. l_msg_count

LOOP

Fnd_Msg_Pub.get (

p_msg_index => i

,p_encoded =>
Fnd_Api.G_FALSE

,p_data => l_msg_data

,p_msg_index_out =>
l_msg_index_out

);

lv_err_msg := lv_err_msg ||':'||


l_msg_data;

END LOOP;

APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail

('OKS_EXT_01',lv_run_id,-
1,'XXOKS_SVC_BUILD_LINES_STG','','',
'ERROR_TYPE','ERROR_AT_create_bill_schedule','','','','','','',

'','','','','','','','','','','','', lv_err_msg,'VE',lv_status) ;

ELSE

UPDATE xxoks_svc_build_lines_stg SET


process_flag='S',contract_number=l_contract_number

WHERE record_id=l_line_record_id

AND stg_header_id
=get_bld_ord_line_stg_rec.stg_header_id;

END IF;

END IF;
ELSE
UPDATE
xxoks_svc_build_lines_stg SET process_flag='E',contract_number=l_contract_number

WHERE record_id=l_line_record_id
AND
stg_header_id =get_bld_ord_line_stg_rec.stg_header_id;
END IF;
ELSE
UPDATE
xxoks_svc_build_lines_stg SET process_flag='E',contract_number=l_contract_number
WHERE
record_id=l_line_record_id
AND stg_header_id
=get_bld_ord_line_stg_rec.stg_header_id;
END IF;
ELSE
UPDATE
xxoks_svc_build_lines_stg SET process_flag='E',contract_number=l_contract_number
WHERE
record_id=l_line_record_id
AND stg_header_id
=get_bld_ord_line_stg_rec.stg_header_id;
END IF;
ELSE
UPDATE xxoks_svc_build_lines_stg SET
process_flag='E',contract_number=l_contract_number
WHERE
record_id=l_line_record_id
AND stg_header_id
=get_bld_ord_line_stg_rec.stg_header_id;
END IF;
END LOOP;
ELSE
UPDATE XXOKS_SVC_BUILD_HEADER_STG SET
process_flag='E',contract_number=l_contract_number
WHERE stg_header_id =
get_bld_ord_hdr_stg_rec.stg_header_id
AND record_id=l_hdr_record_id;
END IF;
ELSE
UPDATE XXOKS_SVC_BUILD_HEADER_STG SET
process_flag='E',contract_number=l_contract_number
WHERE stg_header_id = get_bld_ord_hdr_stg_rec.stg_header_id
AND record_id=l_hdr_record_id;
END IF;
UPDATE XXOKS_SVC_BUILD_HEADER_STG SET
process_flag='S',contract_number=l_contract_number
WHERE stg_header_id = get_bld_ord_hdr_stg_rec.stg_header_id
AND process_flag IS NULL;
COMMIT;
END LOOP;
END Create_bld_sales_ord_process;
Procedure main ( p_errbuff OUT Varchar2
,p_retcode OUT Number
,p_operation_mode IN Varchar2
,p_source IN Varchar2
,p_operating_unit IN Number
,p_sales_order IN Number default Null
) AS
CURSOR get_build_hdr_stg_cur IS
SELECT *
FROM XXOKS_SVC_BUILD_HEADER_STG
WHERE source_code =p_source
AND operation_mode = p_operation_mode;
CURSOR get_build_line_stg_cur(p_header_id NUMBER) IS
SELECT *
FROM XXOKS_SVC_BUILD_LINES_STG
WHERE stg_header_id = p_header_id
AND operation_mode = p_operation_mode
ORDER BY line_number asc;
CURSOR get_bld_hdr_stg_succes_cur IS
SELECT *
FROM XXOKS_SVC_BUILD_HEADER_STG
WHERE process_flag='S';
CURSOR get_bld_line_stg_succes_cur IS
SELECT *
FROM XXOKS_SVC_BUILD_LINES_STG
WHERE process_flag='S';
l_list_id number;
l_chr_group number;
l_party_id number;
l_cust_acc_id Number;
l_term_id number;
l_con_seq_num number;
l_instance_id Number;
l_instance_party_id Number;
L_item_id Number;
l_item_number varchar2(40);
l_ip_account_id Number;
l_counter_id number;
temp_duration NUMBER := 0;
temp_timeunits VARCHAR2(30) := 'NA';
temp_return_status VARCHAR2(30) := 'NA';
l_billing_sch varchar2(1):='T';
l_header_id NUMBER;
l_cnt_stg_hdr NUMBER;
l_cnt_stg_line NUMBER;
l_uom_code VARCHAR2(10);
BEGIN
APPS.XXCMN_ERROR_HANDLING_PKG.log_error_header
( 'OKS_EXT_01' ,'' ,'' ,'' ,'' ,'SUCCESS' ,sysdate ,'' ,'' ,'' ,'' ,lv_run_id
,lv_status);
Update XXOKS_SVC_BUILD_HEADER_STG SET run_id =lv_run_id;
UPDATE XXOKS_SVC_BUILD_LINES_STG SET run_id =lv_run_id;
Fnd_File.put_line (Fnd_File.LOG,'Run ID'||':'||lv_run_id);
l_op_unit_id:=p_operating_unit;
IF p_operation_mode = 'INSERT' AND p_sales_order IS NULL THEN
FOR get_build_hdr_rec IN get_build_hdr_stg_cur
LOOP
l_num_hdr_rec_cnt := get_build_hdr_stg_cur%ROWCOUNT;
IF l_num_hdr_rec_cnt =0 THEN
EXIT;
END IF;
Update XXOKS_SVC_BUILD_HEADER_STG SET run_id =lv_run_id
Where stg_header_id=get_build_hdr_rec.stg_header_id;
l_hdr_record_id:=get_build_hdr_rec.record_id;
l_list_id :=Validate_Price_List(get_build_hdr_rec.Price_List);

l_chr_group:=Validate_Chr_group(get_build_hdr_rec.Contract_Group);
lv_status :=Null;
Validate_party_details(get_build_hdr_rec.party_name,
get_build_hdr_rec.Payment_Terms,
get_build_hdr_rec.Bill_To_Site_id,
get_build_hdr_rec.Ship_To_Site_id,
l_party_id,
l_cust_acc_id,
l_term_id,
lv_status);
IF get_build_hdr_rec.order_number IS NOT NULL
THEN
l_header_id
:=validate_order_num(get_build_hdr_rec.order_number);
END IF;

Validate_order_num_Exist(get_build_hdr_rec.order_number,lv_status);
IF lv_status <> 'E' THEN
/* SELECT okc_k_headers_s1.nextval
INTO l_con_seq_num
FROM dual;*/
-- l_contract_number:='SVC'||l_con_seq_num;
l_contract_number :=Null;
l_head_rec_type.contract_number:=l_contract_number;

l_head_rec_type.short_description:=get_build_hdr_rec.Description;
l_head_rec_type.start_date
:=TRUNC(get_build_hdr_rec.Actual_Start_Date);
l_head_rec_type.end_date
:=TRUNC(get_build_hdr_rec.Actual_End_Date);
l_head_rec_type.sts_code:=get_build_hdr_rec.Sts_Code;
l_head_rec_type.scs_code:=get_build_hdr_rec.scs_code;
l_head_rec_type.authoring_org_id:=p_operating_unit;
l_head_rec_type.pdf_id:=get_build_hdr_rec.pdf_id;
l_head_rec_type.chr_group:=l_chr_group;
l_head_rec_type.party_id:=l_party_id;

l_head_rec_type.bill_to_id:=get_build_hdr_rec.bill_to_site_id;

l_head_rec_type.ship_to_id:=get_build_hdr_rec.ship_to_site_id;
l_head_rec_type.currency:=get_build_hdr_rec.Currency_Code;
l_head_rec_type.qcl_id:=get_build_hdr_rec.qcl_id;

l_head_rec_type.accounting_rule_type:=NVL(get_build_hdr_rec.Accounting_Type,1);

l_head_rec_type.invoice_rule_type:=NVL(get_build_hdr_rec.Invoicing_rule,-3);
l_head_rec_type.payment_term_id:=l_term_id;
l_head_rec_type.price_list_id:=l_list_id;
l_head_rec_type.order_hdr_id:=l_header_id;

l_head_rec_type.ar_interface_yn:=NVL(get_build_hdr_rec.ar_interface_yn,'Y');

l_head_rec_type.summary_invoice_yn:=NVL(get_build_hdr_rec.summary_invoice_yn,'N');
l_head_rec_type.attribute1:=get_build_hdr_rec.attribute1;
l_head_rec_type.attribute2:=get_build_hdr_rec.attribute2;
l_head_rec_type.attribute3:=get_build_hdr_rec.attribute3;
l_head_rec_type.attribute4:=get_build_hdr_rec.attribute4;
l_head_rec_type.attribute5:=get_build_hdr_rec.attribute5;
l_head_rec_type.attribute6:=get_build_hdr_rec.attribute6;
l_head_rec_type.attribute7:=get_build_hdr_rec.attribute7;
l_head_rec_type.attribute8:=get_build_hdr_rec.attribute8;
l_head_rec_type.attribute9:=get_build_hdr_rec.attribute9;

l_head_rec_type.attribute10:=get_build_hdr_rec.attribute10;
---Calling Service Contract Header API to create
Service Contract Header and Vendor Contacts Details
DBMS_OUTPUT.put_line('Header'||'1');
Create_Contract_Header (l_head_rec_type,

get_build_hdr_rec.orig_system_source_code,
get_build_hdr_rec.orig_system_id,
get_build_hdr_rec.legacy_contract_number,
get_build_hdr_rec.order_number,
get_build_hdr_rec.transaction_type,
lv_status);
IF lv_status <> 'E' THEN
---Assigning Service Lines
FOR get_build_line_rec IN
get_build_line_stg_cur(get_build_hdr_rec.Stg_header_id)
LOOP
l_num_line_rec_cnt :=get_build_line_stg_cur%ROWCOUNT;
UPDATE XXOKS_SVC_BUILD_LINES_STG SET run_id
=lv_run_id
Where stg_header_id=get_build_line_rec.stg_header_id;

l_line_record_id:=get_build_line_rec.record_id;
l_lines_Rec_Type.k_hdr_id :=l_chrid;

l_lines_Rec_Type.k_line_number:=get_build_line_rec.Line_Number;
l_lines_Rec_Type.line_sts_code
:=get_build_line_rec.Line_sts_code;
l_lines_rec_type.cust_account :=l_cust_acc_id;
l_lines_Rec_Type.org_id := p_operating_unit;

l_lines_Rec_Type.bill_to_id:=get_build_line_rec.Bill_To_Site_id;
l_lines_Rec_Type.ship_to_id :=
get_build_line_rec.Ship_To_Site_id;
l_lines_rec_type.usage_type
:=NVL(get_build_line_rec.usage_type,'QTY');
l_lines_rec_type.usage_period:='DYS';--- Hard Coded
As per Requirement

l_lines_Rec_Type.accounting_rule_type:=get_build_hdr_rec.Accounting_Type;

l_lines_Rec_Type.invoicing_rule_type:=get_build_hdr_rec.Invoicing_rule;
l_lines_Rec_Type.line_type:='U';--- Hard Coded As
per Requirement

l_lines_Rec_Type.currency:=get_build_hdr_rec.Currency_Code;
l_lines_rec_type.UOM_CODE
:=get_build_line_rec.uom_code;
l_lines_rec_type.quantity:=get_build_line_rec.quantity;

l_lines_Rec_Type.line_renewal_type:=nvl(get_build_line_rec.line_renewal_type,'FUL')
;

l_lines_rec_type.start_date_active:=TRUNC(get_build_hdr_rec.Actual_Start_Date);

l_lines_rec_type.end_date_active:=TRUNC(get_build_hdr_rec.Actual_End_Date);

l_lines_rec_type.srv_id:=get_build_line_rec.Inv_Item_id;

l_lines_rec_type.srv_sdt:=TRUNC(get_build_hdr_rec.Actual_Start_Date);

l_lines_rec_type.srv_edt:=TRUNC(get_build_hdr_rec.Actual_End_Date);

l_lines_rec_type.attribute1:=get_build_line_rec.attribute1;

l_lines_rec_type.attribute2:=get_build_line_rec.attribute2;

l_lines_rec_type.attribute3:=get_build_line_rec.attribute3;

l_lines_rec_type.attribute4:=get_build_line_rec.attribute4;

l_lines_rec_type.attribute5:=get_build_line_rec.attribute5;

l_lines_rec_type.attribute6:=get_build_line_rec.attribute6;

l_lines_rec_type.attribute7:=get_build_line_rec.attribute7;

l_lines_rec_type.attribute8:=get_build_line_rec.attribute8;

l_lines_rec_type.attribute9:=get_build_line_rec.attribute9;

l_lines_rec_type.attribute10:=get_build_line_rec.attribute10;
IF
Validate_Inv_Item(get_build_line_rec.Inv_Item_Number) THEN
BEGIN
SELECT ood.organization_id
INTO l_inv_org_id
FROM org_organization_definitions ood,
mtl_parameters mp,
hr_operating_units hop,
MTL_SYSTEM_ITEMS_B mtl
WHERE ood.organization_id =
mp.organization_id
AND ood.operating_unit =
hop.organization_id
AND ood.organization_id =
mtl.organization_id
AND hop.organization_id =
p_operating_unit
AND mtl.segment1
=get_build_line_rec.Inv_Item_Number
AND ood.organization_id <>
mp.master_organization_id
AND rownum =1;
SELECT mp.master_organization_id
INTO l_org_id
FROM org_organization_definitions ood,
mtl_parameters mp,
hr_operating_units hop,
MTL_SYSTEM_ITEMS_B mtl
WHERE ood.organization_id =
mp.organization_id
AND ood.operating_unit =
hop.organization_id
AND ood.organization_id =
mtl.organization_id
AND hop.organization_id =
p_operating_unit
AND mtl.segment1
=get_build_line_rec.Inv_Item_Number
AND ood.organization_id =
mp.master_organization_id
AND rownum =1;

l_lines_Rec_Type.organization_id:=l_inv_org_id;
EXCEPTION
WHEN OTHERS THEN
lv_err_msg :=Sqlerrm||';'||'Inventory Organization
Missing for Item Number'||':'||get_build_line_rec.Inv_Item_Number;
Update XXOKS_SVC_BUILD_LINES_STG set
process_flag='E',contract_number=l_contract_number
where record_id=l_line_record_id;
APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail
('OKS_EXT_01',lv_run_id,-
1,'XXOKS_SVC_BUILD_LINES_STG','','', 'ERROR_TYPE','ERROR_AT_Inventory organization
seletion','','','','','','',
'','','','','','','','','','','','',
lv_err_msg,'VE',lv_status) ;
END;
--- Calling Lines API-----
lv_status:=Null;

Create_Service_Line(l_lines_Rec_Type,l_list_id,get_build_line_rec.orig_system_sourc
e_code,

get_build_line_rec.orig_system_id,get_build_hdr_rec.order_number,lv_status);

Validate_Loc_Number(l_party_id,get_build_line_rec.location_number,l_location_id,lv_
status);
IF lv_status <> 'E' THEN
SELECT csi_item_instances_s.nextval
INTO l_instance_id
FROM dual;

l_item_number:=get_build_line_rec.Inv_Item_Number||'C';
SELECT inventory_item_id
INTO l_item_id
FROM mtl_system_items_b
WHERE segment1 =l_item_number
AND organization_id = l_org_id;
l_instance_rec.instance_id :=
l_instance_id;
l_instance_rec.instance_number :=
l_instance_id;
l_instance_rec.external_reference
:=l_contract_number;
l_instance_rec.inventory_item_id:=
l_item_id;

l_instance_rec.inv_master_organization_id:=l_org_id;
l_instance_rec.mfg_serial_number_flag :=
'N';
l_instance_rec.quantity:=1;--
get_build_line_rec.Quantity;

l_instance_rec.unit_of_measure:=nvl(get_build_line_rec.UOM_Code,'EA');
l_instance_rec.accounting_class_code :=
'CUST_PROD';
l_instance_rec.instance_status_id:=510;
l_instance_rec.customer_view_flag :=
NULL;
l_instance_rec.merchant_view_flag :=
NULL;
l_instance_rec.sellable_flag :=
NULL;
l_instance_rec.active_start_date :=
TRUNC(get_build_hdr_rec.Actual_Start_Date);
l_instance_rec.location_type_code :=
'HZ_LOCATIONS';
l_instance_rec.LOCATION_ID :=
l_location_id;
l_instance_rec.install_date :=
TRUNC(get_build_hdr_rec.Actual_END_Date);
l_instance_rec.creation_complete_flag :=
'Y';
l_instance_rec.version_label :=
'AS_CREATED';
l_instance_rec.object_version_number :=
1;
SELECT csi_i_parties_s.nextval
INTO l_instance_party_id
FROM dual;
l_party_tbl.DELETE;
l_party_tbl(1).instance_party_id :=
l_instance_party_id;
l_party_tbl(1).instance_id
:= l_instance_id;
l_party_tbl(1).party_source_table
:= 'HZ_PARTIES';
l_party_tbl(1).party_id
:= l_party_id;

l_party_tbl(1).relationship_type_code := 'OWNER';
l_party_tbl(1).contact_flag
:= 'N';
l_party_tbl(1).active_start_date
:= TRUNC(get_build_hdr_rec.Actual_Start_Date);

l_party_tbl(1).object_version_number := 1;
SELECT csi_ip_accounts_s.nextval
INTO l_ip_account_id
FROM dual;
SELECT transaction_type_id
INTO l_transaction_type_id
FROM CSI_TXN_TYPES
WHERE
source_transaction_type='ITEM_INSTANCE_CTR_CAPTURE';
l_account_tbl.DELETE;

l_account_tbl(1).ip_account_id := l_ip_account_id;
l_account_tbl(1).instance_party_id
:= l_instance_party_id;
l_account_tbl(1).party_account_id
:= l_cust_acc_id;

l_account_tbl(1).relationship_type_code := 'OWNER';
l_account_tbl(1).active_start_date
:= sysdate;
l_account_tbl(1).BILL_TO_ADDRESS
:= get_build_line_rec.Bill_To_Site_id;
l_account_tbl(1).SHIP_TO_ADDRESS
:= get_build_line_rec.Ship_To_Site_id;

l_account_tbl(1).object_version_number := 1;
l_account_tbl(1).parent_tbl_index
:= 1;
l_account_tbl(1).call_contracts
:= 'Y';

l_txn_rec.transaction_date :=
TRUNC(get_build_hdr_rec.Actual_Start_Date);
l_txn_rec.SOURCE_TRANSACTION_DATE
:= TRUNC(get_build_hdr_rec.Actual_END_Date);
l_txn_rec.TRANSACTION_TYPE_ID
:= l_transaction_type_id;
l_txn_rec.OBJECT_VERSION_NUMBER
:= 1;
lv_status:=Null;
l_return_status:=Null;
l_msg_count:=0;
l_msg_data :=NULL;
l_msg_index_out:=Null;

CSI_ITEM_INSTANCE_PUB.create_item_instance
(
p_api_version =>
l_api_version
,p_commit =>
l_commit
,p_init_msg_list =>
l_init_msg_list
,p_validation_level =>
l_validation_level
,p_instance_rec =>
l_instance_rec
,p_ext_attrib_values_tbl =>
l_ext_attrib_values_tbl
,p_party_tbl =>
l_party_tbl
,p_account_tbl =>
l_account_tbl
,p_pricing_attrib_tbl =>
l_pricing_attrib_tbl
,p_org_assignments_tbl =>
l_org_assignments_tbl
,p_asset_assignment_tbl =>
l_asset_assignment_tbl
,p_txn_rec =>
l_txn_rec
,x_return_status =>
l_return_status
,x_msg_count =>
l_msg_count
,x_msg_data =>
l_msg_data
);
dbms_output.put_line('status of Item
Instance API'||l_return_status);
IF (l_return_status <>
Fnd_Api.g_ret_sts_success) THEN
dbms_output.put_line('Error at Item
Instance API');
SELECT segment1
INTO l_item_number
FROM mtl_system_items_b
WHERE
inventory_item_id=l_instance_rec.inventory_item_id
AND
organization_id=l_org_id;
lv_err_msg :=
'Create_Item_Instance :API Error: Inventory Item '
|| ': '|| l_item_number
;
UPDATE
xxoks_svc_build_lines_stg SET process_flag='E',contract_number=l_contract_number
WHERE line_number =
get_build_line_rec.line_number
AND
stg_header_id =get_build_line_rec.stg_header_id;
FOR i IN 1 ..
l_msg_count
LOOP
Fnd_Msg_Pub.get (
p_msg_index => i
,p_encoded =>
Fnd_Api.G_FALSE
,p_data =>
l_msg_data
,p_msg_index_out
=> l_msg_index_out
);
lv_err_msg :=
lv_err_msg ||':'|| l_msg_data;

APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail

('OKS_EXT_01',lv_run_id,-1,'XXOKS_SVC_BUILD_LINES_STG','','',
'ERROR_TYPE','ERROR_AT_Create_Item_Instance','','','','','','',

'','','','','','','','','','','','', lv_err_msg,'VE',lv_status) ;
END LOOP;
ELSIF l_return_status <> 'E' THEN
SELECT counter_id
INTO
l_counter_id
FROM
csi_counter_associations
WHERE
source_object_id =l_instance_id;

Create_counter_reading(get_build_line_rec.Start_Date_Active,

get_build_line_rec.End_Date_Active,

l_counter_id,

lv_status);

dbms_output.put_line('Status Counter Reading API'||lv_status);


IF lv_status <> 'E'
THEN

l_k_covd_rec.k_id :=l_chrid;

l_k_covd_rec.product_sts_code :=get_build_line_rec.Line_sts_code;

l_k_covd_rec.Attach_2_Line_id :=l_Service_line_id;

l_k_covd_rec.Customer_Product_Id :=l_counter_id;

l_k_covd_rec.Product_Start_Date :=TRUNC(get_build_hdr_rec.Actual_Start_Date);

l_k_covd_rec.Product_End_Date :=TRUNC(get_build_hdr_rec.Actual_End_Date);

l_k_covd_rec.Quantity :=get_build_line_rec.Quantity;

l_k_covd_rec.Uom_Code :=get_build_line_rec.UOM_Code;

l_k_covd_rec.currency_code :=get_build_hdr_rec.Currency_Code;

l_k_covd_rec.line_renewal_type :='FUL';

l_k_covd_rec.period :='DYS';

l_k_covd_rec.default_qty :='0';

l_k_covd_rec.base_reading :='0';
---
Calling Create Covered Lines API

lv_status:=Null;

Create_Covered_Lines(l_k_covd_rec,lv_status);
IF
lv_status <> 'E' THEN

l_strm_level_tbl.DELETE;

l_strm_level_tbl(1).cle_id :=l_Service_line_id;

l_strm_level_tbl(1).chr_id :=l_chrid;
l_strm_level_tbl(1).ID :=l_chrid;

l_strm_level_tbl(1).sequence_no
:=nvl(get_build_line_rec.Billing_Seq_number,1);

l_strm_level_tbl(1).level_periods
:=get_build_line_rec.Billing_No_of_periods;

-- l_strm_level_tbl(1).start_date
:=trunc(get_build_line_rec.Start_Date_Active);

--l_strm_level_tbl(1).end_date
:=trunc(get_build_line_rec.End_Date_Active);

IF upper(get_build_line_rec.Billing_period)='MONTH' THEN

l_uom_code :='MON';

ELSIF upper(get_build_line_rec.Billing_period)='DAY' THEN

l_uom_code :='DYS';

ELSIF upper(get_build_line_rec.Billing_period)= 'WEEK' THEN

l_uom_code := 'WKS';

ELSIF upper(get_build_line_rec.Billing_period)= 'YEAR' THEN

l_uom_code := 'YRS';

END IF;

l_strm_level_tbl(1).uom_code := l_uom_code;

l_strm_level_tbl(1).uom_per_period :=get_build_line_rec.billing_Duration;

/*BEGIN

Okc_Time_Util_Pub.get_duration

p_start_date => TRUNC(sysdate),

p_end_date => TRUNC(sysdate),

x_duration => temp_duration,

x_timeunit => temp_timeunits,

x_return_status => temp_return_status

);

l_strm_level_tbl(1).uom_code := temp_timeunits;

l_strm_level_tbl(1).uom_per_period :=temp_duration;
EXCEPTION

when others then

Null;

END;*/

l_return_status:=Null;

/****** Calling API Oks_Contracts_Pub.Create_Bill_Schedule for Billing lines


creation ****************/

Oks_Contracts_Pub.create_bill_schedule (

l_billing_sch,

l_strm_level_tbl,

get_build_hdr_rec.Invoicing_rule,

l_return_status);

IF (l_return_status <> Fnd_Api.g_ret_sts_success) THEN

lv_err_msg := 'create_bill_schedule :API Error: Contract Number


'

|| ': '|| l_contract_number ;

UPDATE XXOKS_SVC_BUILD_HEADER_STG SET


process_flag='E',contract_number=l_contract_number

WHERE record_id=l_hdr_record_id;

UPDATE xxoks_svc_build_lines_stg SET


process_flag='E',contract_number=l_contract_number

WHERE record_id = l_line_record_id;

APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail

('OKS_EXT_01',lv_run_id,-1,'XXOKS_SVC_BUILD_LINES_STG','','',
'ERROR_TYPE','ERROR_AT_create_bill_schedule','','','','','','',

'','','','','','','','','','','','',
lv_err_msg,'VE',lv_status) ;

ELSE

UPDATE xxoks_svc_build_lines_stg SET


process_flag='S',contract_number=l_contract_number

WHERE record_id = l_line_record_id

AND stg_header_id =get_build_line_rec.stg_header_id;

END IF;
ELSE

UPDATE xxoks_svc_build_lines_stg SET


process_flag='E',contract_number=l_contract_number

WHERE record_id = l_line_record_id

AND stg_header_id =get_build_line_rec.stg_header_id;


END
IF;
ELSE
UPDATE
xxoks_svc_build_lines_stg SET process_flag='E',contract_number=l_contract_number
WHERE record_id =
l_line_record_id
AND
stg_header_id =get_build_line_rec.stg_header_id;
END IF;
ELSE
UPDATE xxoks_svc_build_lines_stg
SET process_flag='E',contract_number=l_contract_number
WHERE record_id =
l_line_record_id
AND stg_header_id
=get_build_line_rec.stg_header_id;
END IF;
ELSE
--
UPDATE xxoks_svc_build_lines_stg SET
process_flag='E',contract_number=l_contract_number
WHERE record_id = l_line_record_id
AND stg_header_id
=get_build_line_rec.stg_header_id;
END IF;
ELSE
UPDATE xxoks_svc_build_lines_stg SET
process_flag='E',contract_number=l_contract_number
WHERE record_id = l_line_record_id
AND stg_header_id
=get_build_line_rec.stg_header_id;
--
END IF;
END LOOP;
ELSE
UPDATE XXOKS_SVC_BUILD_HEADER_STG SET
process_flag='E',contract_number=l_contract_number
WHERE stg_header_id = get_build_hdr_rec.stg_header_id
AND record_id=l_hdr_record_id;
END IF;
ELSE
UPDATE XXOKS_SVC_BUILD_HEADER_STG SET
process_flag='E',contract_number=l_contract_number
WHERE stg_header_id = get_build_hdr_rec.stg_header_id
AND record_id=l_hdr_record_id;
END IF;
UPDATE XXOKS_SVC_BUILD_HEADER_STG SET
process_flag='S',contract_number=l_contract_number
WHERE stg_header_id = get_build_hdr_rec.stg_header_id
AND record_id=l_hdr_record_id
AND process_flag IS NULL;
COMMIT;
END LOOP;
ELSIF p_operation_mode = 'INSERT' AND p_sales_order IS NOT NULL THEN
Create_bld_sales_ord_process (p_source,p_operating_unit,p_sales_order);
ELSIF p_operation_mode = 'UPDATE' THEN
Update_Service_Cont_Process ( p_source,p_operating_unit,p_sales_order);
END IF;
COMMIT;
SELECT COUNT(*)
INTO l_line_cnt
FROM xxoks_svc_build_header_stg hdr,
xxoks_svc_build_lines_stg lines
where hdr.stg_header_id = lines.stg_header_id
and hdr.operation_mode = lines.operation_mode
and hdr.source_code = p_source
and (hdr.order_number = NVL(p_sales_order,hdr.order_number) OR
hdr.order_number IS NULL ) ;
Fnd_File.put_line (Fnd_File.LOG,'Number Of Header Records Available '||':'||
l_num_hdr_rec_cnt);
Fnd_File.put_line (Fnd_File.LOG,'Number Of Lines Records Available '||':'||
l_line_cnt);
SELECT count(1)
INTO l_num_hdr_rec_cnt
FROM XXOKS_SVC_BUILD_HEADER_STG
WHERE PROCESS_FLAG='S';
Fnd_File.put_line (Fnd_File.LOG,'Number Of Header Records Processed '||':'||
l_num_hdr_rec_cnt);
SELECT count(1)
INTO l_num_line_rec_cnt
FROM XXOKS_SVC_BUILD_LINES_STG
WHERE PROCESS_FLAG='S';
Fnd_File.put_line (Fnd_File.LOG,'Number Of Lines Records Processed '||':'||
l_num_line_rec_cnt);
-- Deleting the Succsessfull Records From Stg table and Inserting into Archive stg
Table
FOR get_bld_hdr_stg_succes_rec IN get_bld_hdr_stg_succes_cur LOOP
l_cnt_stg_hdr:=get_bld_hdr_stg_succes_cur%ROWCOUNT;
IF l_cnt_stg_hdr=0 THEN
EXIT;
END IF;
INSERT INTO XXOKS_SVC_BLD_HDR_ARCHIVE_STG
(Stg_header_id,
Record_id,
RUN_ID,
Status,
District_Number,
Contract_Number,
Description,
Customer_Number,
Ship_To_Site_id,
Bill_To_Site_id,
Source_Code,
Price_code,
Pricing_Agreement,
Actual_Start_Date,
Actual_End_Date,
Payment_Terms,
Payment_Method,
Pricing_segment,
Considilated_Billing,
Address_Line1,
Loss_Code,
Loss_date,
Price_Increase_eligible_date,
Minimum_fee_amount,
Estd_Repetative_Bill_Date,
Estd_Install_Date,
Frequency,
Location_Number,
Purchase_Order_Number,
Contract_Number_DFF,
Transaction_Type,
Accounting_Type,
Invoicing_rule,
Duration,
Price_List,
price_increase_flag,
Contract_Group,
Sts_Code,
Authoring_Org_id,
Scs_code,
Qcl_id,
pdf_id,
Currency_Code,
Party_Name,
order_number,
orig_system_source_code,
orig_system_id,
legacy_Contract_Number,
ar_interface_yn,
summary_invoice_yn,
Billing_No_of_periods,
billing_Duration,
Billing_period,
billing_offset,
Creation_Date,
Created_By,
Last_Updated_by,
Last_Updated_Date,
Operation_Mode,
Process_Flag,
Attribute1,
Attribute2,
Attribute3,
Attribute4,
Attribute5,
Attribute6,
Attribute7,
Attribute8,
Attribute9,
Attribute10
)
VALUES
(
get_bld_hdr_stg_succes_rec.Stg_header_id,
get_bld_hdr_stg_succes_rec.Record_id,
get_bld_hdr_stg_succes_rec.RUN_ID,
get_bld_hdr_stg_succes_rec.Status,
get_bld_hdr_stg_succes_rec.District_Number,
get_bld_hdr_stg_succes_rec.Contract_Number,
get_bld_hdr_stg_succes_rec.Description,
get_bld_hdr_stg_succes_rec.Customer_Number,
get_bld_hdr_stg_succes_rec.Ship_To_Site_id,
get_bld_hdr_stg_succes_rec.Bill_To_Site_id,
get_bld_hdr_stg_succes_rec.Source_Code,
get_bld_hdr_stg_succes_rec.Price_code,
get_bld_hdr_stg_succes_rec.Pricing_Agreement,
get_bld_hdr_stg_succes_rec.Actual_Start_Date,
get_bld_hdr_stg_succes_rec.Actual_End_Date,
get_bld_hdr_stg_succes_rec.Payment_Terms,
get_bld_hdr_stg_succes_rec.Payment_Method,
get_bld_hdr_stg_succes_rec.Pricing_segment,
get_bld_hdr_stg_succes_rec.Considilated_Billing,
get_bld_hdr_stg_succes_rec.Address_Line1,
get_bld_hdr_stg_succes_rec.Loss_Code,
get_bld_hdr_stg_succes_rec.Loss_date,
get_bld_hdr_stg_succes_rec.Price_Increase_eligible_date,
get_bld_hdr_stg_succes_rec.Minimum_fee_amount,
get_bld_hdr_stg_succes_rec.Estd_Repetative_Bill_Date,
get_bld_hdr_stg_succes_rec.Estd_Install_Date,
get_bld_hdr_stg_succes_rec.Frequency,
get_bld_hdr_stg_succes_rec.Location_Number,
get_bld_hdr_stg_succes_rec.Purchase_Order_Number,
get_bld_hdr_stg_succes_rec.Contract_Number_DFF,
get_bld_hdr_stg_succes_rec.Transaction_Type,
get_bld_hdr_stg_succes_rec.Accounting_Type,
get_bld_hdr_stg_succes_rec.Invoicing_rule,
get_bld_hdr_stg_succes_rec.Duration,
get_bld_hdr_stg_succes_rec.Price_List,
get_bld_hdr_stg_succes_rec.price_increase_flag,
get_bld_hdr_stg_succes_rec.Contract_Group,
get_bld_hdr_stg_succes_rec.Sts_Code,
get_bld_hdr_stg_succes_rec.Authoring_Org_id,
get_bld_hdr_stg_succes_rec.Scs_code,
get_bld_hdr_stg_succes_rec.Qcl_id,
get_bld_hdr_stg_succes_rec.pdf_id,
get_bld_hdr_stg_succes_rec.Currency_Code,
get_bld_hdr_stg_succes_rec.Party_Name,
get_bld_hdr_stg_succes_rec.order_number,
get_bld_hdr_stg_succes_rec.orig_system_source_code,
get_bld_hdr_stg_succes_rec.orig_system_id,
get_bld_hdr_stg_succes_rec.legacy_Contract_Number,
get_bld_hdr_stg_succes_rec.ar_interface_yn,
get_bld_hdr_stg_succes_rec.summary_invoice_yn,
get_bld_hdr_stg_succes_rec.Billing_No_of_periods,
get_bld_hdr_stg_succes_rec.billing_Duration,
get_bld_hdr_stg_succes_rec.Billing_period,
get_bld_hdr_stg_succes_rec.billing_offset,
get_bld_hdr_stg_succes_rec.Creation_Date,
get_bld_hdr_stg_succes_rec.Created_By,
get_bld_hdr_stg_succes_rec.Last_Updated_by,
get_bld_hdr_stg_succes_rec.Last_Updated_Date,
get_bld_hdr_stg_succes_rec.Operation_Mode,
get_bld_hdr_stg_succes_rec.Process_Flag,
get_bld_hdr_stg_succes_rec.Attribute1,
get_bld_hdr_stg_succes_rec.Attribute2,
get_bld_hdr_stg_succes_rec.Attribute3,
get_bld_hdr_stg_succes_rec.Attribute4,
get_bld_hdr_stg_succes_rec.Attribute5,
get_bld_hdr_stg_succes_rec.Attribute6,
get_bld_hdr_stg_succes_rec.Attribute7,
get_bld_hdr_stg_succes_rec.Attribute8,
get_bld_hdr_stg_succes_rec.Attribute9,
get_bld_hdr_stg_succes_rec.Attribute10
);
COMMIT;
END LOOP;
DELETE FROM XXOKS_SVC_BUILD_HEADER_STG WHERE PROCESS_FLAG='S';
FOR get_bld_line_stg_succes_rec IN get_bld_line_stg_succes_cur LOOP
l_cnt_stg_line:=get_bld_line_stg_succes_cur%ROWCOUNT;
IF l_cnt_stg_line=0 THEN
EXIT;
END IF;
INSERT INTO XXOKS_SVC_BlD_LINE_ARCHIVE_STG
(Stg_Line_Id,
Stg_header_id,
Record_id,
run_id,
Status,
Contract_Number,
Line_Number,
Inv_Item_id,
Inv_Item_Number,
Ordered_Qty,
Ship_To_Site_id,
Bill_To_Site_id,
Aps_Bank_Account_User_id,
Term_id,
Frequency,
Loss_Code,
Loss_Date,
Start_Date_Active,
End_Date_Active,
Estd_start_date,
Billing_Start_Date,
Billing_End_Date,
Location_Number,
line_renewal_type,
Last_Process_Date,
Purchase_Order_Number,
PSID,
Quantity,
UOM_Code,
Line_sts_code,
Contract_Specific_price,
Price_List,
Item_instance_Number,
customer_view_flag,
merchant_view_flag,
sellable_flag,
orig_system_source_code,
orig_system_id,
usage_type,
Billing_Seq_number,
Billing_No_of_periods,
billing_Duration,
Billing_period,
billing_offset,
Billing_schedule,
Creation_Date,
Created_By,
Last_Updated_by,
Last_Updated_Date,
Operation_Mode,
Process_Flag,
Attribute1,
Attribute2,
Attribute3,
Attribute4,
Attribute5,
Attribute6,
Attribute7,
Attribute8,
Attribute9,
Attribute10
)
VALUES
(get_bld_line_stg_succes_rec.Stg_Line_Id,
get_bld_line_stg_succes_rec.Stg_header_id,
get_bld_line_stg_succes_rec.Record_id,
get_bld_line_stg_succes_rec.run_id,
get_bld_line_stg_succes_rec.Status,
get_bld_line_stg_succes_rec.contract_number,
get_bld_line_stg_succes_rec.Line_Number,
get_bld_line_stg_succes_rec.Inv_Item_id,
get_bld_line_stg_succes_rec.Inv_Item_Number,
get_bld_line_stg_succes_rec.Ordered_Qty,
get_bld_line_stg_succes_rec.Ship_To_Site_id,
get_bld_line_stg_succes_rec.Bill_To_Site_id,
get_bld_line_stg_succes_rec.Aps_Bank_Account_User_id,
get_bld_line_stg_succes_rec.Term_id,
get_bld_line_stg_succes_rec.Frequency,
get_bld_line_stg_succes_rec.Loss_Code,
get_bld_line_stg_succes_rec.Loss_Date,
get_bld_line_stg_succes_rec.Start_Date_Active,
get_bld_line_stg_succes_rec.End_Date_Active,
get_bld_line_stg_succes_rec.Estd_start_date,
get_bld_line_stg_succes_rec.Billing_start_Date,
get_bld_line_stg_succes_rec.Billing_end_Date,
get_bld_line_stg_succes_rec.Location_Number,
get_bld_line_stg_succes_rec.line_renewal_type,
get_bld_line_stg_succes_rec.Last_Process_Date,
get_bld_line_stg_succes_rec.Purchase_Order_Number,
get_bld_line_stg_succes_rec.PSID,
get_bld_line_stg_succes_rec.Quantity,
get_bld_line_stg_succes_rec.UOM_Code,
get_bld_line_stg_succes_rec.Line_sts_code,
get_bld_line_stg_succes_rec.Contract_Specific_price,
get_bld_line_stg_succes_rec.Price_List,
get_bld_line_stg_succes_rec.Item_instance_Number,
get_bld_line_stg_succes_rec.customer_view_flag,
get_bld_line_stg_succes_rec.merchant_view_flag,
get_bld_line_stg_succes_rec.sellable_flag,
get_bld_line_stg_succes_rec.orig_system_source_code,
get_bld_line_stg_succes_rec.orig_system_id,
get_bld_line_stg_succes_rec.usage_type,
get_bld_line_stg_succes_rec.Billing_Seq_number,
get_bld_line_stg_succes_rec.Billing_No_of_periods,
get_bld_line_stg_succes_rec.billing_Duration,
get_bld_line_stg_succes_rec.Billing_period,
get_bld_line_stg_succes_rec.billing_offset,
get_bld_line_stg_succes_rec.Billing_schedule,
get_bld_line_stg_succes_rec.Creation_Date,
get_bld_line_stg_succes_rec.Created_By,
get_bld_line_stg_succes_rec.Last_Updated_by,
get_bld_line_stg_succes_rec.Last_Updated_Date,
get_bld_line_stg_succes_rec.Operation_Mode,
get_bld_line_stg_succes_rec.Process_Flag,
get_bld_line_stg_succes_rec.Attribute1,
get_bld_line_stg_succes_rec.Attribute2,
get_bld_line_stg_succes_rec.Attribute3,
get_bld_line_stg_succes_rec.Attribute4,
get_bld_line_stg_succes_rec.Attribute5,
get_bld_line_stg_succes_rec.Attribute6,
get_bld_line_stg_succes_rec.Attribute7,
get_bld_line_stg_succes_rec.Attribute8,
get_bld_line_stg_succes_rec.Attribute9,
get_bld_line_stg_succes_rec.Attribute10
);
COMMIT;
END LOOP;
DELETE FROM XXOKS_SVC_BUILD_LINES_STG WHERE PROCESS_FLAG='S';
COMMIT;
EXCEPTION
when others then
lv_err_msg := 'Error Occured At Main '||';'||SUBSTR(SQLERRM,1,350) ;
dbms_output.put_line (lv_err_msg);
lv_status:='E';
APPS.XXCMN_ERROR_HANDLING_PKG.log_error_detail
('OKS_EXT_01',lv_run_id,-1,'XXOKS_SVC_BUILD_HEADER_STG','','',
'ERROR_TYPE','ERROR_AT_Main_Procedure','','','','','','',
'','','','','','','','','','','','', lv_err_msg,'VE',lv_status) ;
END main;
END XXOKS_SVC_BUILD_PKG;

Potrebbero piacerti anche