0% found this document useful (0 votes)
46 views19 pages

OL Modifier XXSC CREDIT CARD SURCHARGE PKG

This document describes an API to add a surcharge modifier to sales order lines. It includes: 1) A package called XXSC_CREDIT_CARD_SURCHARGE_PKG that contains procedures to insert price updates, apply credit card charges, and update credit card charges at the sales order line level. 2) Details about the XXSC_INSERT_PRICE_UPDATE procedure that inserts line IDs into a custom table for any unit price changes. 3) Details about the XXSC_APPLY_CC_CHARGES procedure that applies credit card charges at the sales order line level by calling the Order Management API.

Uploaded by

Abbas
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
46 views19 pages

OL Modifier XXSC CREDIT CARD SURCHARGE PKG

This document describes an API to add a surcharge modifier to sales order lines. It includes: 1) A package called XXSC_CREDIT_CARD_SURCHARGE_PKG that contains procedures to insert price updates, apply credit card charges, and update credit card charges at the sales order line level. 2) Details about the XXSC_INSERT_PRICE_UPDATE procedure that inserts line IDs into a custom table for any unit price changes. 3) Details about the XXSC_APPLY_CC_CHARGES procedure that applies credit card charges at the sales order line level by calling the Order Management API.

Uploaded by

Abbas
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 19

Order Management API to add Surcharge Modifier in the sales order Line

CREATE OR REPLACE PACKAGE APPS.XXSC_CREDIT_CARD_SURCHARGE_PKG


IS
/
*+=================================================================================
====+
| Lumentum Operations LLC All rights reserved.
|

+==================================================================================
===+
|
|
| Procedure Name : XXSC_APPLY_CC_CHARGES
|
| Created By : Brajabandhu Behera
|
| Created Date : May 25, 2018
|
| Description : This Procedure is created for Call to Modify Credit Card
Charges |
at sales order line level
|
|
|
|
|
| Modification History
|
|
|
| Ver Date Name Description
|
| === ========= =============
===========================================|
| 1.0 25-May-18 Brajabandhu Behera Initial Development.
|
|
|
|
|

+==================================================================================
===+*/
PROCEDURE XXSC_INSERT_PRICE_UPDATE(p_header_id IN NUMBER,
p_line_id IN NUMBER,
p_unit_price IN NUMBER);
PROCEDURE XXSC_APPLY_CC_CHARGES (p_header_id IN NUMBER,
p_line_id IN NUMBER);

PROCEDURE XXSC_UPDATE_CC_CHARGES;

END XXSC_CREDIT_CARD_SURCHARGE_PKG;
/

CREATE OR REPLACE PACKAGE BODY XXSC_CREDIT_CARD_SURCHARGE_PKG


IS
PROCEDURE XXSC_INSERT_PRICE_UPDATE(p_header_id IN NUMBER,
p_line_id IN NUMBER,
p_unit_price IN NUMBER)
IS

/*+================================================================================
=====+
| Lumentum Operations LLC All rights reserved.
|

+==================================================================================
===+
|
|
| Procedure Name : XXSC_INSERT_PRICE_UPDATE
|
| Created By : Brajabandhu Behera
|
| Created Date : May 25, 2018
|
| Description : This Procedure is Insert the Line id into custome table
|
| for any Unit Price change at sales order line level
|
|
|
| Modification History
|
|
|
| Ver Date Name Description
|
| === ========= =============
===========================================|
| 1.0 25-May-18 Brajabandhu Behera Initial Development.
|
|
|
|
|

+==================================================================================
===+*/

v_line_id NUMBER;
v_header_id NUMBER;
v_line_number NUMBER;
v_order_number NUMBER;
v_created_by NUMBER;
v_last_updated_by NUMBER;
v_last_update_date DATE;

v_unit_price NUMBER;
vl_line_id NUMBER;
l_adjustment_id NUMBER;

BEGIN
--checking the Modifier Applied or not
--************************************--

BEGIN
SELECT DISTINCT opa.price_adjustment_id
INTO l_adjustment_id
FROM QPFV_MODIFIER_HEADERS hdr,
QPFV_MODIFIER_LINES lin,
OE_PRICE_ADJUSTMENtS opa
WHERE 1=1
and lin.list_header_id = hdr.list_header_id
AND lin.list_line_type_code ='FREIGHT_CHARGE'
AND lin.modifier_level_code = 'LINE'
AND hdr.name = 'Credit Card Surcharge'
AND opa.list_header_id = hdr.list_header_id
AND opa.list_line_id = lin.list_line_id
AND lin.end_date_active IS NULL
AND hdr.end_date_active IS NULL
AND opa.line_id =TO_NUMBEr(p_line_id);
EXCEPTION
WHEN OTHERS THEN
l_adjustment_id :=NULL;
END;

IF l_adjustment_id IS NOT NULL THEN

BEGIN

SELECT ooh.order_number,
ool.unit_selling_price,
ool.header_id,
ool.line_id,
ool.line_number,
ool.created_by,
ool.last_updated_by,
ool.last_update_date
INTO v_order_number,
v_unit_price,
v_header_id,
v_line_id,
v_line_number,
v_created_by,
v_last_updated_by,
v_last_update_date
FROM OE_ORDER_HEADERS_ALL ooh,
OE_ORDER_LINES_ALL ool
WHERE 1=1
AND ooh.header_id = ool.header_id
AND ooh.header_id = to_number(p_header_id)
AND ool.line_id =to_number(p_line_id);
EXCEPTION
WHEN OTHERS THEN
v_unit_price :=NULL;
END;

--Chcek the Line id Exists in the custom table to Avaoid inser new Line
BEGIN
SELECT DISTINCT line_id
INTO vl_line_id
FROM XXSC.XXSC_CREDIT_CARD_SURCHARGE
WHERE HEADER_ID = v_header_id
AND LINE_ID =v_line_id;
EXCEPTION
WHEN NO_DATA_FOUND THEN
vl_line_id :=NULL;
END;

DBMS_OUTPUT.PUT_LINE ('Check the records '||p_header_id);


DBMS_OUTPUT.PUT_LINE ('Check the records '||p_line_id);
DBMS_OUTPUT.PUT_LINE ('Check the records '||vl_line_id);

IF vl_line_id IS NOT NULL THEN

IF p_unit_price <> v_unit_price THEN

UPDATE XXSC.XXSC_CREDIT_CARD_SURCHARGE
SET NEW_SELLING_PRICE =p_unit_price,
OLD_UNIT_SELLING_PRICE =p_unit_price,
PROCESS_FLAG='NEW'
WHERE header_id = v_header_id
AND line_id =v_line_id;

COMMIT;
END IF;

ELSIF vl_line_id IS NULL THEN

IF p_unit_price <> v_unit_price THEN

--Insert the records in custom table first time

BEGIN

INSERT INTO XXSC.XXSC_CREDIT_CARD_SURCHARGE


( ORDER_NUMBER
,LINE_NUMBER
,HEADER_ID
,LINE_ID
,OLD_UNIT_SELLING_PRICE
--,NEW_SELLING_PRICE
,CREATED_BY
,CREATION_DATE
,LAST_UPDATED_BY
,LAST_UPDATE_DATE
,PROCESS_FLAG )
VALUES
(v_order_number
,v_line_number
,v_header_id
,v_line_id
,p_unit_price--OLL UNOT SELLNNG PRICE
,v_created_by
,sysdate
,v_last_updated_by
,v_last_update_date
,'NEW');

COMMIT;
END;
END IF;

END IF;
END IF;
END;

--
***********************************************************************************
****
--
***********************************************************************************
***
PROCEDURE XXSC_APPLY_CC_CHARGES (p_header_id IN NUMBER,
p_line_id IN NUMBER)
IS
/
*+=================================================================================
====+
| Lumentum Operations LLC All rights reserved.
|

+==================================================================================
===+
|
|
| Procedure Name : XXSC_APPLY_CC_CHARGES
|
| Created By : Brajabandhu Behera
|
| Created Date : May 25, 2018
|
| Description : This Procedure is created for Apply Credit Card Charges
|
at sales order line level
|
|
|
|
|
| Modification History
|
|
|
| Ver Date Name Description
|
| === ========= =============
===========================================|
| 1.0 25-May-18 Brajabandhu Behera Initial Development.
|
|
|
|
|
+==================================================================================
===+*/
--DECLARE
v_api_version_number NUMBER := 1;
v_return_status VARCHAR2 (2000);
v_msg_count NUMBER;
v_msg_data VARCHAR2 (2000);
-- IN Variables --
v_header_rec OE_ORDER_PUB.header_rec_type;
v_line_tbl OE_ORDER_PUB.line_tbl_type;
v_action_request_tbl OE_ORDER_PUB.request_tbl_type;
v_line_adj_tbl OE_ORDER_PUB.line_adj_tbl_type;
v_hdr_adj_tbl OE_ORDER_PUB.header_adj_tbl_type;
v_list_header_id NUMBER;
v_list_line_id NUMBER;
v_operand VARCHAR2 (10);
v_ln_type_code VARCHAR2 (10);
v_operator VARCHAR2 (10);
v_phase_id NUMBER;
v_mod_level_code VARCHAR2 (10);
t_line_id NUMBER;
t_header_id NUMBER;
t_org_id NUMBER;
l_pricing_quantity NUMBER;
l_unit_selling_price NUMBER;
l_attribute1 NUMBER;
l_header_id NUMBER;
l_unit_price NUMBER;
l_operand NUMBER;
-- OUT Variables --
v_header_rec_out OE_ORDER_PUB.header_rec_type;
v_header_val_rec_out OE_ORDER_PUB.header_val_rec_type;
v_header_adj_tbl_out OE_ORDER_PUB.header_adj_tbl_type;
v_header_adj_val_tbl_out OE_ORDER_PUB.header_adj_val_tbl_type;
v_header_price_att_tbl_out OE_ORDER_PUB.header_price_att_tbl_type;
v_header_adj_att_tbl_out OE_ORDER_PUB.header_adj_att_tbl_type;
v_header_adj_assoc_tbl_out OE_ORDER_PUB.header_adj_assoc_tbl_type;
v_header_scredit_tbl_out OE_ORDER_PUB.header_scredit_tbl_type;
v_header_scredit_val_tbl_out OE_ORDER_PUB.header_scredit_val_tbl_type;
v_line_tbl_out OE_ORDER_PUB.line_tbl_type;
v_line_val_tbl_out OE_ORDER_PUB.line_val_tbl_type;
v_line_adj_tbl_out OE_ORDER_PUB.line_adj_tbl_type;
v_line_adj_val_tbl_out OE_ORDER_PUB.line_adj_val_tbl_type;
v_line_price_att_tbl_out OE_ORDER_PUB.line_price_att_tbl_type;
v_line_adj_att_tbl_out OE_ORDER_PUB.line_adj_att_tbl_type;
v_line_adj_assoc_tbl_out OE_ORDER_PUB.line_adj_assoc_tbl_type;
v_line_scredit_tbl_out OE_ORDER_PUB.line_scredit_tbl_type;
v_line_scredit_val_tbl_out OE_ORDER_PUB.line_scredit_val_tbl_type;
v_lot_serial_tbl_out OE_ORDER_PUB.lot_serial_tbl_type;
v_lot_serial_val_tbl_out OE_ORDER_PUB.lot_serial_val_tbl_type;
v_action_request_tbl_out OE_ORDER_PUB.request_tbl_type;
v_msg_index NUMBER;
v_data VARCHAR2 (2000);
v_loop_count NUMBER;
v_debug_file VARCHAR2 (200);
b_return_status VARCHAR2 (200);
b_msg_count NUMBER;
b_msg_data VARCHAR2 (2000);
l_org_id NUMBER;
l_application_id NUMBER;
l_responsibility_id NUMBER;
l_user_id NUMBER;
l_charges NUMBER(10,2);
l_adjustment_id NUMBER;
v_err_msg VARCHAR2(2000);
v_percent VARCHAR2(100);
vl_payment_term_id NUMBER;
vl_term_name VARCHAR2(100);

BEGIN
DBMS_OUTPUT.put_line ('Starting of script');

l_org_id := FND_PROFILE.VALUE('ORG_ID');--82
l_user_id :=FND_PROFILE.VALUE('USER_ID');---7699;
l_responsibility_id :=FND_PROFILE.VALUE('RESPONSIBILITY_ID');--21623;
l_application_id := FND_PROFILE.VALUE('APPLICATION_ID');--660;

FND_GLOBAL.APPS_INITIALIZE(l_user_id, l_responsibility_id, l_application_id);

MO_GLOBAL.INIT('ONT');
MO_GLOBAL.SET_POLICY_CONTEXT('S',82);

v_line_tbl(1) := OE_Order_PUB.G_MISS_LINE_REC;
v_line_tbl(1).header_id := p_header_id; --c_order.header_id;
v_line_tbl(1).line_id :=p_line_id; --c_order.line_id;

dbms_output.put_line ('Order_header_id =>'||v_line_tbl(1).header_id);


dbms_output.put_line ('Order_line_id =>'||v_line_tbl(1).line_id);

/* Get the Payment Term id */


/****************************/
BEGIN
SELECT rtt.term_id,rtt.name
INTO vl_payment_term_id,vl_term_name
FROM apps.RA_TERMS_TL rtt,
apps.OE_ORDER_HEADERS_ALL ooh
WHERE 1=1
--and rtt.NAME ='CREDIT CARD'
AND rtt.term_id =ooh.payment_term_id
AND ooh.header_id = p_header_id;
EXCEPTION
WHEN OTHERS THEN
vl_payment_term_id :=NULL;
vl_term_name :=NULL;
END;

DBMS_OUTPUT.PUT_LINE ('VL_PAYMENT_TERM_ID => '||VL_PAYMENT_TERM_ID);


FND_FILE.put_line(FND_FILE.output,'Payment Term Name ::' ||
vl_term_name);
--Get the Percent from Order Management Quick code --
/**************************************************/
BEGIN
SELECT meaning
INTO v_percent
FROM fnd_lookup_values
WHERE lookup_type ='CREDIT_CARD_SURCHARGE';
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_percent:=3;
END;

/*Checking the Modifier Name and List Header and List Line Id for Credit
Card Sales order

/*********************************************************************************/
IF UPPER(vl_term_name) ='CREDIT CARD' THEN

DBMS_OUTPUT.PUT_LINE ('VL_PAYMENT_TERM_ID FOR CREDIT CARD ORDER=> '||


VL_PAYMENT_TERM_ID);
BEGIN
SELECT qa2.list_header_id,qa2.list_line_id
INTO v_list_header_id, v_list_line_id
FROM apps.QP_SECU_LIST_HEADERS_VL qa1,
apps.QP_MODIFIER_SUMMARY_V qa2,
apps.QP_QUALIFIERS_V qa3
WHERE QA1.NAME ='Credit Card Charge'
AND qa1.list_header_id = qa2.list_header_id
AND qa2.PRICING_PHASE ='All Lines Adjustment'
AND qa2.MODIFIER_LEVEL ='Line'
AND qa2.LIST_LINE_TYPE ='Freight/Special Charge'
AND qa2.CHARGE_NAME ='Credit Card Surcharge'
AND qa2.FORMULA ='XXSC: Credit Card Surcharge Calculation'
AND qa2.AUTOMATIC_FLAG ='Y'
AND qa2.end_date_active IS NULL
AND qa1.end_date_active IS NULL
AND qa2.list_line_id =qa3.list_line_id
AND qa3.COMPARISION_OPERATOR_CODE ='='
AND qa3.QUALIFIER_CONTEXT ='TERMS';
EXCEPTION
WHEN OTHERS THEN
v_list_header_id :=NULL;
v_list_line_id :=NULL;
END;

ELSIF UPPER(vl_term_name) <> 'CREDIT CARD' THEN

BEGIN
SELECT qa2.list_header_id,qa2.list_line_id
INTO v_list_header_id, v_list_line_id
FROM APPS.QP_SECU_LIST_HEADERS_VL qa1,
APPS.QP_MODIFIER_SUMMARY_V qa2,
APPS.QP_QUALIFIERS_V qa3
WHERE QA1.NAME ='Credit Card Charge'
AND qa1.list_header_id = qa2.list_header_id
AND qa2.PRICING_PHASE ='All Lines Adjustment'
AND qa2.MODIFIER_LEVEL ='Line'
AND qa2.LIST_LINE_TYPE ='Freight/Special Charge'
AND qa2.CHARGE_NAME ='Credit Card Surcharge'
AND qa2.FORMULA ='XXSC: Credit Card Surcharge Calculation'
AND qa2.AUTOMATIC_FLAG ='N'
AND qa2.end_date_active IS NULL
AND qa1.end_date_active IS NULL
AND qa2.list_line_id =qa3.list_line_id
AND qa3.COMPARISION_OPERATOR_CODE ='NOT ='
AND qa3.QUALIFIER_CONTEXT ='TERMS';
EXCEPTION
WHEN OTHERS THEN
v_list_header_id :=NULL;
v_list_line_id :=NULL;
END;
END IF;

DBMS_OUTPUT.PUT_LINE ('list_header_id =>'||v_list_header_id);


DBMS_OUTPUT.PUT_LINE ('list_line id =>'||v_list_line_id);
FND_FILE.put_line(FND_FILE.output,'Modifier Header id ::' ||
v_list_header_id);
FND_FILE.put_line(FND_FILE.output,'Modifier Line id ::' ||
v_list_line_id);

/*Check the Credit Card Charge Already Applied for Credit Card Order*/
/********************************************************************/

DBMS_OUTPUT.PUT_LINE ('Modifien Number '||v_list_line_id);


BEGIN
SELECT opa.price_adjustment_id
INTO l_adjustment_id
FROM QPFV_MODIFIER_HEADERS hdr,
QPFV_MODIFIER_LINES lin,
OE_PRICE_ADJUSTMENtS opa
WHERE 1=1
and lin.list_header_id = hdr.list_header_id
AND lin.list_line_type_code ='FREIGHT_CHARGE'
AND lin.modifier_level_code = 'LINE'
AND hdr.name = 'Credit Card Surcharge'
AND opa.list_header_id = hdr.list_header_id
AND opa.list_line_id = lin.list_line_id
AND opa.line_id =v_line_tbl(1).line_id-- cp_order.line_id;
AND lin.end_date_active IS NULL
AND hdr.end_date_active IS NULL
AND lin.list_line_no =v_list_line_id;
EXCEPTION
WHEN NO_DATA_FOUND THEN
l_adjustment_id :=NULL;

END;

l_charges :=0;

SELECT ROUND(((oola.unit_selling_price /100)*


to_number(v_percent)),2)
INTO l_charges
FROM oe_order_lines_all oola
WHERE line_id = v_line_tbl(1).line_id;
DBMS_OUTPUT.PUT_LINE('l_charges:'||l_charges );

FND_FILE.put_line(FND_FILE.output,'Update Credit Card Surcharge


Amount on Sales Order Line Level:: '||l_charges);

IF l_adjustment_id IS NULL THEN

-- Adjustment Variables
v_Line_Adj_Tbl(1) := APPS.OE_ORDER_PUB.G_MISS_LINE_ADJ_REC;
v_Line_Adj_Tbl(1).operation := OE_GLOBALS.G_OPR_CREATE;
v_Line_Adj_Tbl(1).header_id := v_line_tbl(1).header_id; --
header_id of the sales order --p_header_id
v_Line_Adj_Tbl(1).line_id := v_line_tbl(1).line_id; --
line_id of the sales order line --p_header_id
v_Line_Adj_Tbl(1).price_adjustment_id :=
oe_price_adjustments_s.NEXTVAL;
v_Line_Adj_Tbl(1).automatic_flag := 'N';
v_Line_Adj_Tbl(1).applied_flag := 'Y';
v_Line_Adj_Tbl(1).updated_flag := 'Y'; --Optional, this is
the fixed flag.
v_Line_Adj_Tbl(1).list_header_id := v_list_header_id; --
list_header_id of the adjustment
v_Line_Adj_Tbl(1).list_line_id := v_list_line_id; --
list_line_id of the adjustment
v_line_adj_tbl(1).list_line_type_code := 'FREIGHT_CHARGE';
v_line_adj_tbl(1).change_reason_code := 'MANUAL';
v_line_adj_tbl(1).change_reason_text := 'Manually applied
adjustments';
-- l_Line_Adj_Tbl(1).percent:= 3;
v_Line_Adj_Tbl(1).arithmetic_operator:='%';
v_Line_Adj_Tbl(1).operand := v_percent;--3;
v_Line_Adj_Tbl(1).adjusted_amount_per_pqty :=l_charges;
v_Line_Adj_Tbl(1).adjusted_amount :=l_charges;
v_Line_Adj_Tbl(1).operand_per_pqty :=v_percent;--3;

DBMS_OUTPUT.put_line ('Starting of API');


-- Calling the API to update the header details of an existing
Order --
OE_ORDER_PUB.PROCESS_ORDER
(p_api_version_number => v_api_version_number,
-- p_header_rec => v_header_rec,
p_line_tbl => v_line_tbl,
--p_header_adj_tbl => v_hdr_adj_tbl,
p_line_adj_tbl => v_line_adj_tbl,
-- OUT variables
x_header_rec => v_header_rec_out,
x_header_val_rec => v_header_val_rec_out,
x_header_adj_tbl => v_header_adj_tbl_out,
x_header_adj_val_tbl =>
v_header_adj_val_tbl_out,
x_header_price_att_tbl =>
v_header_price_att_tbl_out,
x_header_adj_att_tbl =>
v_header_adj_att_tbl_out,
x_header_adj_assoc_tbl =>
v_header_adj_assoc_tbl_out,
x_header_scredit_tbl =>
v_header_scredit_tbl_out,
x_header_scredit_val_tbl =>
v_header_scredit_val_tbl_out,
x_line_tbl => v_line_tbl_out,
x_line_val_tbl => v_line_val_tbl_out,
x_line_adj_tbl => v_line_adj_tbl_out,
x_line_adj_val_tbl =>
v_line_adj_val_tbl_out,
x_line_price_att_tbl =>
v_line_price_att_tbl_out,
x_line_adj_att_tbl =>
v_line_adj_att_tbl_out,
x_line_adj_assoc_tbl =>
v_line_adj_assoc_tbl_out,
x_line_scredit_tbl =>
v_line_scredit_tbl_out,
x_line_scredit_val_tbl =>
v_line_scredit_val_tbl_out,
x_lot_serial_tbl => v_lot_serial_tbl_out,
x_lot_serial_val_tbl =>
v_lot_serial_val_tbl_out,
x_action_request_tbl =>
v_action_request_tbl_out,
x_return_status => v_return_status,
x_msg_count => v_msg_count,
x_msg_data => v_msg_data
);

DBMS_OUTPUT.put_line ('Completion of API');

IF v_return_status = fnd_api.g_ret_sts_success
THEN
COMMIT;
DBMS_OUTPUT.put_line ( 'Order Header Updation Success :
'
|| v_header_rec_out.header_id
);
ELSE
DBMS_OUTPUT.put_line ('Order Header Updation failed:' ||
v_msg_data);
ROLLBACK;

FOR i IN 1 .. v_msg_count
LOOP
v_msg_data := oe_msg_pub.get (p_msg_index => i,
p_encoded => 'F');
DBMS_OUTPUT.put_line (i || ') ' || v_msg_data);
END LOOP;
END IF;
END IF; --END OF ADJUSTMENT ID

END;
--******************************************************************************--
--******************************************************************************--
PROCEDURE XXSC_UPDATE_CC_CHARGES
IS
/
*+=================================================================================
====+
| Lumentum Operations LLC All rights reserved.
|

+==================================================================================
===+
|
|
| Procedure Name : XXSC_UPDATE_CC_CHARGES
|
| Created By : Brajabandhu Behera
|
| Created Date : May 25, 2018
|
| Description : This Procedure is created for Call to Modify Credit Card
Charges |
at sales order line level
|
|
|
|
|
| Modification History
|
|
|
| Ver Date Name Description
|
| === ========= =============
===========================================|
| 1.0 25-May-18 Brajabandhu Behera Initial Development.
|
|
|
|
|

+==================================================================================
===+*/

l_msg_index NUMBER;
l_data VARCHAR2(2000);

l_header_rec OE_ORDER_PUB.Header_Rec_Type;
l_header_val_rec OE_ORDER_PUB.Header_Val_Rec_Type;
l_header_adj_tbl OE_ORDER_PUB.Header_Adj_Tbl_Type;
l_header_adj_val_tbl OE_ORDER_PUB.Header_Adj_Val_Tbl_Type;
l_header_price_att_tbl OE_ORDER_PUB.Header_Price_Att_Tbl_Type;
l_header_adj_att_tbl OE_ORDER_PUB.Header_Adj_Att_Tbl_Type;
l_header_adj_assoc_tbl OE_ORDER_PUB.Header_Adj_Assoc_Tbl_Type;
l_header_scredit_tbl OE_ORDER_PUB.Header_Scredit_Tbl_Type;
l_header_scredit_val_tbl OE_ORDER_PUB.Header_Scredit_Val_Tbl_Type;
l_Header_Payment_tbl OE_ORDER_PUB.Header_Payment_Tbl_Type;
l_line_tbl OE_ORDER_PUB.Line_Tbl_Type;
l_line_val_tbl OE_ORDER_PUB.Line_Val_Tbl_Type;
l_line_adj_tbl OE_ORDER_PUB.Line_Adj_Tbl_Type;
l_line_adj_val_tbl OE_ORDER_PUB.Line_Adj_Val_Tbl_Type;
l_line_price_att_tbl OE_ORDER_PUB.Line_Price_Att_Tbl_Type;
l_line_adj_att_tbl OE_ORDER_PUB.Line_Adj_Att_Tbl_Type;
l_line_adj_assoc_tbl OE_ORDER_PUB.Line_Adj_Assoc_Tbl_Type;
l_line_scredit_tbl OE_ORDER_PUB.Line_Scredit_Tbl_Type;
l_line_scredit_val_tbl OE_ORDER_PUB.Line_Scredit_Val_Tbl_Type;
l_lot_serial_tbl OE_ORDER_PUB.Lot_Serial_Tbl_Type;
l_lot_serial_val_tbl OE_ORDER_PUB.Lot_Serial_Val_Tbl_Type;
l_action_request_tbl OE_ORDER_PUB.Request_Tbl_Type;
o_header_rec OE_ORDER_PUB.Header_Rec_Type;
o_header_val_rec OE_ORDER_PUB.Header_Val_Rec_Type;
o_header_adj_tbl OE_ORDER_PUB.Header_Adj_Tbl_Type;
o_header_adj_val_tbl OE_ORDER_PUB.Header_Adj_Val_Tbl_Type;
o_header_price_att_tbl OE_ORDER_PUB.Header_Price_Att_Tbl_Type;
o_header_adj_att_tbl OE_ORDER_PUB.Header_Adj_Att_Tbl_Type;
o_header_adj_assoc_tbl OE_ORDER_PUB.Header_Adj_Assoc_Tbl_Type;
o_header_scredit_tbl OE_ORDER_PUB.Header_Scredit_Tbl_Type;
o_header_scredit_val_tbl OE_ORDER_PUB.Header_Scredit_Val_Tbl_Type;
o_Header_Payment_Tbl OE_ORDER_PUB.Header_Payment_Tbl_Type;
o_Header_Payment_Val_Tbl OE_ORDER_PUB.Header_Payment_Val_Tbl_Type;
o_line_tbl OE_ORDER_PUB.Line_Tbl_Type;
o_line_val_tbl OE_ORDER_PUB.Line_Val_Tbl_Type;
o_line_adj_tbl OE_ORDER_PUB.Line_Adj_Tbl_Type;
o_line_adj_val_tbl OE_ORDER_PUB.Line_Adj_Val_Tbl_Type;
o_line_price_att_tbl OE_ORDER_PUB.Line_Price_Att_Tbl_Type;
o_line_adj_att_tbl OE_ORDER_PUB.Line_Adj_Att_Tbl_Type;
o_line_adj_assoc_tbl OE_ORDER_PUB.Line_Adj_Assoc_Tbl_Type;
o_line_scredit_tbl OE_ORDER_PUB.Line_Scredit_Tbl_Type;
o_line_scredit_val_tbl OE_ORDER_PUB.Line_Scredit_Val_Tbl_Type;
o_lot_serial_tbl OE_ORDER_PUB.Lot_Serial_Tbl_Type;
o_lot_serial_val_tbl OE_ORDER_PUB.Lot_Serial_Val_Tbl_Type;
o_action_request_tbl OE_ORDER_PUB.Request_Tbl_Type;
o_Line_Payment_tbl OE_ORDER_PUB.Line_Payment_Tbl_Type;
o_Line_Payment_val_tbl OE_ORDER_PUB.Line_Payment_Val_Tbl_Type;

l_adjustment_id NUMBER;
l_session_id NUMBER;
l_count NUMBER;
l_msg_count NUMBER := 0;
x_cnt NUMBER := 3;
l_return_status VARCHAR2(1);
l_msg_data VARCHAR2(2000);
x_msg_data VARCHAR2(2000);
x_msg_details VARCHAR2(2000);
x_msg_count VARCHAR2(2000);
msg_text VARCHAR2(2000) DEFAULT NULL;
l_charges NUMBER(10,2);
v_err_msg VARCHAR2(2000);

l_org_id NUMBER;
l_application_id NUMBER;
l_responsibility_id NUMBER;
l_user_id NUMBER;

v_list_header_id NUMBER;
v_list_line_id NUMBER;
vl_header_id NUMBER;
vl_line_id NUMBER;
vl_line_number NUMBER;
v_percent VARCHAR2(20);
CURSOR c_order is
SELECT DISTINCT header_id, line_id
FROM XXSC.XXSC_CREDIT_CARD_SURCHARGE
WHERE PROCESS_FLAG='NEW';

cp_order c_order%ROWTYPE;

BEGIN

l_org_id := FND_PROFILE.VALUE('ORG_ID');--82
l_user_id :=FND_PROFILE.VALUE('USER_ID');---7699;
l_responsibility_id := FND_PROFILE.VALUE('RESPONSIBILITY_ID');--21623;
l_application_id := FND_PROFILE.VALUE('APPLICATION_ID');--660; */

FND_GLOBAL.APPS_INITIALIZE(l_user_id, l_responsibility_id, l_application_id);

MO_GLOBAL.INIT('ONT');
MO_GLOBAL.SET_POLICY_CONTEXT('S',l_org_id);

OPEN c_order;
LOOP

FETCH c_order into cp_order;


EXIT WHEN c_order%NOTFOUND;

IF c_order%NOTFOUND THEN
FND_FILE.PUT_LINE(FND_FILE.output,'No Records found for Update from
custom table::');
FND_FILE.PUT_LINE(FND_FILE.log,'No Records found for Update from
custom table::');

END IF;

IF c_order%FOUND THEN
-- FND_FILE.put_line(FND_FILE.output,'No Records found to Updated ::');

-- Populate line record


l_line_tbl(1) := apps.OE_ORDER_PUB.G_MISS_LINE_REC;
l_line_tbl(1).header_id := cp_order.header_id;
l_line_tbl(1).line_id :=cp_order.line_id;
l_line_tbl(1).operation := OE_GLOBALS.G_OPR_UPDATE;

DBMS_OUTPUT.PUT_LINE ('Order_header_id =>'||l_line_tbl(1).header_id);


DBMS_OUTPUT.PUT_LINE ('Order_line_id =>'||l_line_tbl(1).line_id);

--Check the Modifier List Header id and List Line Id


/*******************************************************/
BEGIN
SELECT hdr.list_header_id,
lin.list_line_id,
opa.price_adjustment_id
INTO v_list_header_id,
v_list_line_id,
l_adjustment_id
FROM QPFV_MODIFIER_HEADERS hdr,
QPFV_MODIFIER_LINES lin,
OE_PRICE_ADJUSTMENtS opa
WHERE 1=1
and lin.list_header_id = hdr.list_header_id
AND lin.list_line_type_code ='FREIGHT_CHARGE'
AND lin.modifier_level_code = 'LINE'
AND hdr.name = 'Credit Card Surcharge'
AND opa.list_header_id = hdr.list_header_id
AND opa.list_line_id = lin.list_line_id
AND lin.end_date_active IS NULL
AND hdr.end_date_active IS NULL
AND opa.line_id =l_line_tbl(1).line_id;-- cp_order.line_id;
EXCEPTION
WHEN OTHERS THEN
v_err_msg :='No Modifier found for the sales Order Number'||
l_line_tbl(1).header_id;
FND_FILE.put_line(FND_FILE.output,'No Modifier found for the sales
Order Number ::');
END;

dbms_output.put_line ('list_header_id =>'||v_list_header_id);


dbms_output.put_line ('list_line id =>'||v_list_line_id);
FND_FILE.put_line(FND_FILE.output,'Modifier Header id ::' ||
v_list_header_id);
FND_FILE.put_line(FND_FILE.output,'Modifier Line id ::' ||
v_list_line_id);

--Get the Percent from Order Management Quick code


/*************************************************/
BEGIN
SELECT meaning
INTO v_percent
FROM fnd_lookup_values
WHERE lookup_type ='CREDIT_CARD_SURCHARGE';
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_percent:=3;
END;

--Calculate the 3% Credit Card Surcharge on the Line Unit Selling


Price

/**********************************************************************/

l_charges :=0;

SELECT ROUND(((oola.unit_selling_price /100)*


TO_NUMBER(v_percent) ),2)
INTO l_charges
FROM oe_order_lines_all oola
WHERE line_id = l_line_tbl(1).line_id;

DBMS_OUTPUT.PUT_LINE('l_adjustment_id:'||l_adjustment_id );
DBMS_OUTPUT.PUT_LINE('l_charges:'||l_charges );
FND_FILE.put_line(FND_FILE.output,'Updated Credit Card Surcharge
Amount:: '||l_charges);
FND_FILE.put_line(FND_FILE.output,'Record Processed for
Adjustment id:: '||l_adjustment_id);

/* IF v_err_msg IS NOT NULL THEN


FND_FILE.put_line(FND_FILE.output,'The Sales Order line do not
have any Credit Card Surcharge Applied Earlier:: ');

FND_FILE.put_line(FND_FILE.output,'************************************************
***********************');

UPDATE XXSC_CREDIT_CARD_SURCHARGE
SET PROCESS_FLAG='ERROR'
WHERE HEADER_ID = l_Line_Adj_Tbl(1).header_id
AND LINE_ID =l_Line_Adj_Tbl(1).line_id;

COMMIT;

END IF; */

IF v_err_msg IS NULL THEN

l_Line_Adj_Tbl(1) := APPS.OE_ORDER_PUB.G_MISS_LINE_ADJ_REC;
l_Line_Adj_Tbl(1).operation := OE_GLOBALS.G_OPR_UPDATE;
l_Line_Adj_Tbl(1).header_id := l_line_tbl(1).header_id; --
header_id of the sales order --p_header_id
l_Line_Adj_Tbl(1).line_id := l_line_tbl(1).line_id; --
line_id of the sales order line --p_header_id
l_Line_Adj_Tbl(1).price_adjustment_id := l_adjustment_id;
l_Line_Adj_Tbl(1).automatic_flag := 'N';
l_Line_Adj_Tbl(1).applied_flag := 'Y';
l_Line_Adj_Tbl(1).updated_flag := 'Y'; --Optional, this is
the fixed flag.
l_Line_Adj_Tbl(1).list_header_id := v_list_header_id; --
list_header_id of the adjustment
l_Line_Adj_Tbl(1).list_line_id := v_list_line_id; --
list_line_id of the adjustment
l_line_adj_tbl(1).list_line_type_code := 'FREIGHT_CHARGE';
l_line_adj_tbl(1).change_reason_code := 'MANUAL';
l_line_adj_tbl(1).change_reason_text := 'Manually applied
adjustments';
-- l_Line_Adj_Tbl(1).percent:= 3;
l_Line_Adj_Tbl(1).arithmetic_operator:='%';
l_Line_Adj_Tbl(1).operand := v_percent; --3
l_Line_Adj_Tbl(1).adjusted_amount_per_pqty :=l_charges;
l_Line_Adj_Tbl(1).adjusted_amount :=l_charges;
l_Line_Adj_Tbl(1).operand_per_pqty :=v_percent; --3

DBMS_OUTPUT.PUT_LINE('Just before calling Process_Order API


l_index:' );
FND_FILE.put_line(FND_FILE.output,'Just before calling
Process_Order API:: ');
--
===================================================================================
===============
-- Process Order API to Apply the Credit Card Surcharge
Modifier on Sales Order Line level
--
===================================================================================
===============
OE_ORDER_PUB.PROCESS_ORDER(
p_api_version_number => 1.0
,x_return_status => l_return_status
,x_msg_count => l_msg_count
,x_msg_data => l_msg_data
--,p_header_rec => l_header_rec
,p_line_tbl => l_line_tbl
,p_line_adj_tbl => l_line_adj_tbl
,p_Header_Payment_tbl => l_Header_Payment_tbl
,p_action_request_tbl => l_action_request_tbl
--out parameter
,x_header_rec => o_header_rec
,x_header_val_rec => o_header_val_rec
,x_header_adj_tbl => o_header_adj_tbl
,x_header_adj_val_tbl => o_header_adj_val_tbl
,x_header_price_att_tbl => o_header_price_att_tbl
,x_header_adj_att_tbl => o_header_adj_att_tbl
,x_header_adj_assoc_tbl => o_header_adj_assoc_tbl
,x_header_scredit_tbl => o_header_scredit_tbl
,x_header_scredit_val_tbl =>
o_header_scredit_val_tbl
,x_Header_Payment_tbl => o_Header_Payment_tbl
,x_Header_Payment_val_tbl =>
o_Header_Payment_val_tbl
,x_line_tbl => o_line_tbl
,x_line_val_tbl => o_line_val_tbl
,x_line_adj_tbl => o_line_adj_tbl
,x_line_adj_val_tbl => o_line_adj_val_tbl
,x_line_price_att_tbl => o_line_price_att_tbl
,x_line_adj_att_tbl => o_line_adj_att_tbl
,x_line_adj_assoc_tbl => o_line_adj_assoc_tbl
,x_line_scredit_tbl => o_line_scredit_tbl
,x_line_scredit_val_tbl => o_line_scredit_val_tbl
,x_lot_serial_tbl => o_lot_serial_tbl
,x_lot_serial_val_tbl => o_lot_serial_val_tbl
,x_action_request_tbl => o_action_request_tbl
,x_Line_Payment_tbl => o_Line_Payment_tbl
,x_Line_Payment_val_tbl => o_Line_Payment_val_tbl
);

DBMS_OUTPUT.PUT_LINE( 'l_msg_count :'||


nvl(l_msg_count,0));
IF l_msg_count > 0 THEN
FOR I IN 1..l_msg_count LOOP
l_msg_data := OE_MSG_PUB.get(
p_msg_index => i,
p_encoded => 'F');
DBMS_OUTPUT.PUT_LINE('MESSAGE : '||
substrb( l_msg_data,1,200));

FND_FILE.put_line(FND_FILE.output,'*************************************');
FND_FILE.put_line(FND_FILE.output,'MESSAGE : '||
substrb( l_msg_data,1,200));

FND_FILE.put_line(FND_FILE.output,'***************************************');
END LOOP ;
END IF ;

IF l_return_status = FND_API.G_RET_STS_SUCCESS then

dbms_output.put_line('**********************************************');
dbms_output.put_line('SUCCESS');
--
FND_FILE.put_line(FND_FILE.output,'************************************************
*********');
FND_FILE.put_line(FND_FILE.output,'Line Charges
Updates 3% SUCCESS');
l_count := o_line_tbl.LAST;
IF l_count > 0 THEN
FOR l_index IN 1..l_count LOOP

dbms_output.put_line('***************************');
dbms_output.put_line('LINE_ID('||
l_index||') : ' || o_line_tbl(l_index).LINE_ID);
dbms_output.put_line('Adjust Operand('||
l_index||') : ' || o_line_adj_tbl(l_index).operand);

FND_FILE.put_line(FND_FILE.output,'LINE_ID('||l_index||') : ' ||
o_line_tbl(l_index).LINE_ID);
FND_FILE.put_line(FND_FILE.output,'Adjust
Operand('||l_index||') : ' || o_line_adj_tbl(l_index).operand);

FND_FILE.put_line(FND_FILE.output,'adjusted_amount_per_pqty('||l_index||') : ' ||
o_line_adj_tbl(l_index).adjusted_amount_per_pqty);

FND_FILE.put_line(FND_FILE.output,'adjusted_amount('||l_index||') : ' ||
o_line_adj_tbl(l_index).adjusted_amount);
END LOOP;
END IF;
DBMS_OUTPUT.PUT_LINE('***** COMMIT *****');

FND_FILE.put_line(FND_FILE.output,'************************************************
**************');
COMMIT;

UPDATE XXSC_CREDIT_CARD_SURCHARGE
SET PROCESS_FLAG='PROCESS'
WHERE HEADER_ID = l_Line_Adj_Tbl(1).header_id
AND LINE_ID =l_Line_Adj_Tbl(1).line_id;

COMMIT;
-- dbms_output.put_line('OM Debug File Name :'||
dbg_file);
ELSE

dbms_output.put_line( 'FAILURE' );
FND_FILE.put_line(FND_FILE.output,'The API not
able to Process the Records ');
dbms_output.put_line('RETURN STATUS = '||
l_return_status);
FND_FILE.put_line(FND_FILE.output,'Line
Charges Can not Update FAILURE');
dbms_output.put_line('***** ROLLBACK
*****');

FND_FILE.put_line(FND_FILE.output,'ROLLBACK');
ROLLBACK;
END IF;
END IF;

v_err_msg :=NULL;
END IF;

END LOOP;
CLOSE c_order;

END;

END XXSC_CREDIT_CARD_SURCHARGE_PKG;
/

You might also like