Пример использования API для отмены счет-фактуры
declare
l_result BOOLEAN;
l_all_count NUMBER := 0;
l_not_cancel_count NUMBER := 0;
l_error_count NUMBER := 0;
l_successful_count NUMBER := 0;
--
lx_error_code VARCHAR2(100);
lx_debug_info VARCHAR2(400);
--
lx_message_name VARCHAR2(400);
lx_invoice_amount NUMBER;
lx_base_amount NUMBER;
lx_temp_cancelled_amount NUMBER;
lx_cancelled_by NUMBER;
lx_cancelled_amount NUMBER;
lx_cancelled_date DATE;
lx_last_update_date DATE;
lx_original_prepayment_amount NUMBER;
lx_pay_curr_invoice_amount NUMBER;
lx_token VARCHAR2(400);
begin
fnd_global.apps_initialize(-1, 20639, 200); --Диспетчер кредиторов - Кредиторы
mo_global.init('SQLAP');
for i in (select i.invoice_id, i.invoice_num
from ap_invoices_all i
where 1=1
...
--and rownum<=5
)
loop
l_all_count := l_all_count + 1;
l_result :=ap_cancel_pkg.is_invoice_cancellable( p_invoice_id => i.invoice_id,
p_error_code => lx_error_code,
p_debug_info => lx_debug_info,
p_calling_sequence => NULL
);
if NOT l_result then
l_not_cancel_count:= l_not_cancel_count+ 1;
dbms_output.put_line ('Invoice '||i.invoice_num||' is not cancellable' );
continue;
end if;
l_result := ap_cancel_pkg.ap_cancel_single_invoice(
p_invoice_id => i.invoice_id,
p_last_updated_by => fnd_global.user_id,
p_last_update_login => fnd_global.login_id,
p_accounting_date => sysdate,
p_message_name => lx_message_name,
p_invoice_amount => lx_invoice_amount,
p_base_amount => lx_base_amount,
p_temp_cancelled_amount => lx_temp_cancelled_amount,
p_cancelled_by => lx_cancelled_by,
p_cancelled_amount => lx_cancelled_amount,
p_cancelled_date => lx_cancelled_date,
p_last_update_date => lx_last_update_date,
p_original_prepayment_amount => lx_original_prepayment_amount,
p_pay_curr_invoice_amount => lx_pay_curr_invoice_amount,
p_token => lx_token,
p_calling_sequence => NULL
);
if NOT l_result then
l_error_count := l_error_count + 1;
dbms_output.put_line('Error for invoice '||i.invoice_num||':'||lx_message_name);
continue;
else
dbms_output.put_line('Successfully cancelled the invoice '||i.invoice_num );
l_successful_count := l_successful_count + 1;
end if;
end loop;
commit;
dbms_output.put_line('');
dbms_output.put_line('----------------------------------------');
dbms_output.put_line('Total info:');
dbms_output.put_line('----------------------------------------');
dbms_output.put_line(' ALL COUNT = '||l_all_count);
dbms_output.put_line('IS NOT CANCELLABLE = '||l_not_cancel_count);
dbms_output.put_line(' ERROR COUNT = '||l_error_count);
dbms_output.put_line(' SUCCESSFUL COUNT = '||l_successful_count);
dbms_output.put_line('----------------------------------------');
end;
Похожие записи:
Categories: API, Oracle e-Business Suite AP, ap_cancel_pkg, ap_cancel_single_invoice, API, cancel, invoice, is_invoice_cancellable, SQLAP

Последние комментарии