Sunday 5 July 2020

API to validate AP invoice: Change the invoice status to Validated (ap_invoices_pkg.get_approval_status)

PROCEDURE apinv_validate
( errbuf   OUT VARCHAR2
, retcode  OUT VARCHAR2
, p_request_id IN NUMBER
, p_org_id IN NUMBER DEFAULT NULL
)
AS

CURSOR cur_inv IS
SELECT DISTINCT
aia.invoice_id
, aia.org_id
, aia.invoice_num
, aia.invoice_type_lookup_code
FROM ap_invoices_all aia
, ap_invoice_lines_all aila
WHERE  1 = 1
AND aia.invoice_id = aila.invoice_id
AND aia.org_id = aila.org_id
AND ap_invoices_pkg.get_approval_status (aia.invoice_id
  , aia.invoice_amount
  , aia.payment_status_flag
  , aia.invoice_type_lookup_code
   ) NOT IN ('APPROVED', 'UNPAID')
AND aia.org_id = nvl(p_org_id,aia.org_id)
AND aila.request_id = nvl(p_request_id,aila.request_id)
;

l_hold_cnt NUMBER;

BEGIN

fnd_file.put_line (fnd_file.log , 'apinv_validate start');

mo_global.set_policy_context('S', p_org_id);
fnd_global.apps_initialize(fnd_global.user_id, fnd_global.resp_id, fnd_global.resp_appl_id);


FOR rec_inv IN cur_inv
LOOP

fnd_file.put_line (fnd_file.log ,'apinv_validate invoice_num: '||rec_inv.invoice_num);

BEGIN

l_hold_cnt := NULL;

IF (AP_APPROVAL_PKG.BATCH_APPROVAL
(p_run_option => NULL,
p_sob_id => fnd_profile.VALUE('gl_set_of_bks_id'),
p_inv_start_date => NULL,
p_inv_end_date => NULL,
p_inv_batch_id => NULL,
p_vendor_id => NULL,
p_pay_group => NULL,
p_invoice_id =>  rec_inv.invoice_id,
p_entered_by => NULL,
p_debug_switch => 'N',
p_conc_request_id => fnd_profile.VALUE('CONC_REQUEST_ID'),
p_commit_size => NULL,
p_org_id => rec_inv.org_id,
p_report_holds_count => l_hold_cnt,
p_transaction_num => NULL))
THEN
fnd_file.put_line (fnd_file.log , 'Invoice Validated: '||rec_inv.invoice_num);
ELSE
fnd_file.put_line (fnd_file.log , 'Invoice Validation Failed: '||rec_inv.invoice_num);
END IF;

COMMIT;

EXCEPTION WHEN OTHERS THEN
fnd_file.put_line (fnd_file.log , rec_inv.invoice_num ||' Invoice Validation failed with unhandled exception.Error: '||SQLERRM);
END;
END LOOP;
fnd_file.put_line (fnd_file.log , 'apinv_validate end');
EXCEPTION WHEN OTHERS THEN
fnd_file.put_line (fnd_file.log ,' apinv_validate failed with unhandled exception.Error: '||SQLERRM);
END;

No comments:

Post a Comment