You are on page 1of 2

CREATE OR REPLACE PROCEDURE xxcreate_memo_ar (

v_customer_trx_id
NUMBER,
v_amount
NUMBER,
v_request_id
OUT NUMBER
)
AS
v_msg_count
NUMBER;
v_msg_data
VARCHAR2 (2000);
v_return_status VARCHAR2 (1);
CURSOR c_inv (p_trx_number varchar2
)
IS
SELECT rct.trx_number,
rct.customer_trx_id,
rctl.customer_trx_line_id,
rctl.quantity_invoiced,
unit_selling_price
FROM ra_customer_trx_all rct, ra_customer_trx_lines_all rctl
WHERE
rct.customer_trx_id = rctl.customer_trx_id
AND trx_number = p_trx_number
AND line_type = 'LINE';
BEGIN
fnd_global.apps_initialize (user_id
resp_id
resp_appl_id
);
mo_global.init ('AR');
mo_global.set_policy_context ('S', 82);

l_trx_number

=> 1110,
=> 1100,
=> 222

:= '20116773';

FOR lc_inv IN c_inv (l_trx_number)


LOOP
ind
l_customer_trx_id

:= 1;
:= lc_inv.customer_trx_id;

l_cm_lines_tbl (ind).customer_trx_line_id

:= lc_inv.customer_trx_line_i

d;
l_cm_lines_tbl (ind).quantity_credited
l_cm_lines_tbl (ind).price

:= lc_inv.quantity_invoiced * -1;

:= lc_inv.unit_selling_price;

l_cm_lines_tbl (ind).extended_amount
nv.unit_selling_price * -1;

:= lc_inv.quantity_invoiced * lc_i

END LOOP;
ar_credit_memo_api_pub.create_request (

-- standard api parameters


p_api_version => 1.0,
p_init_msg_list => fnd_api.g_true,

p_commit => fnd_api.g_false-- credit m


emo request parameters
,
p_customer_trx_id => l_customer_trx_id
,
p_line_credit_flag => 'Y',
p_cm_line_tbl => l_cm_lines_tbl,
p_cm_reason_code => 'RETURN',
p_skip_workflow_flag => 'Y',
p_batch_source_name => 'XX_',
p_interface_attribute_rec => v_interfa
ce_header_rec,
p_credit_method_installments => NULL,
p_credit_method_rules => NULL,
x_return_status => v_return_status,
x_msg_count => v_msg_count,
x_msg_data => v_msg_data,
x_request_id => v_request_id
);
DBMS_OUTPUT.put_line ('Message count ' || v_msg_count);
IF v_msg_count = 1
THEN
DBMS_OUTPUT.put_line ('l_msg_data ' || v_msg_data);
ELSIF v_msg_count > 1
THEN
LOOP
p_count := p_count + 1;
v_msg_data :=
fnd_msg_pub.get (fnd_msg_pub.g_next, fnd_api.g_false);
IF v_msg_data IS NULL
THEN
EXIT;
END IF;
DBMS_OUTPUT.put_line ('Message' || p_count || ' ---' || v_msg_data);
END LOOP;
END IF;
IF v_return_status <> 'S'
THEN
DBMS_OUTPUT.put_line ('Failed');
ELSE
SELECT cm_customer_trx_id
INTO cm_trx_id
FROM ra_cm_requests_all
WHERE request_id = v_request_id;
DBMS_OUTPUT.put_line (' CM trx_id = ' || cm_trx_id);
COMMIT;
END IF;
END;

You might also like