Cancelar NFF Contas a pagar via API

Olá, neste post irei mostrar como cancelar uma nota fiscal no contas a pagar via API.

Sem título

declare
v_invoice_id number;
v_last_updated_by varchar2(20);
v_last_update_login varchar2(20);
v_accounting_date date := sysdate;
v_boolean boolean;
v_error_code varchar2(100);
v_debug_info varchar2(1000);
v_message_name varchar2(1000);
v_invoice_amount number;
v_base_amount number;
v_tax_amount number;
v_temp_cancelled_amount number;
v_cancelled_by varchar2(1000);
v_cancelled_amount number;
v_cancelled_date date;
v_last_update_date date;
v_token varchar2(100);
v_orig_prepay_amt number;
v_pay_cur_inv_amt number;

cursor c_nff is
select ap.invoice_id,
ap.invoice_num,
aps.vendor_name,
ap.invoice_amount,
ap.last_updated_by,
ap.last_update_login
from ap_invoices_all ap, ap_suppliers aps
where ap.invoice_id = 162115
and ap.payment_status_flag = 'N'
and ap.vendor_id = aps.vendor_id;
begin

mo_global.set_policy_context('S', 81);

for d_nff in c_nff

loop

dbms_output.put_line('Verificando se documento pode ser cancelado...');

v_boolean := ap_cancel_pkg.is_invoice_cancellable(p_invoice_id => d_nff.invoice_id,
p_error_code => v_error_code,
p_debug_info => v_debug_info,
p_calling_sequence => null);
if v_boolean then
dbms_output.put_line('Titulo: ' || d_nff.invoice_num || ' do Fornecedor: ' || d_nff.vendor_name ||
' pode ser Cancelado');
else
dbms_output.put_line('Nota Fiscal: ' || d_nff.invoice_num || ' Fornecedor: ' || d_nff.vendor_name ||
' não pode ser Cancelado devido ao erro: ' || v_error_code);
end if;
dbms_output.put_line('Chamando API para Cancelar o Titulo: ' || d_nff.invoice_num || ' do Fornecedor: ' || d_nff.vendor_name);
v_boolean := ap_cancel_pkg.ap_cancel_single_invoice(p_invoice_id => d_nff.invoice_id,
p_last_updated_by => d_nff.last_updated_by,
p_last_update_login => d_nff.last_update_login,
p_accounting_date => sysdate,
p_message_name => v_message_name,
p_invoice_amount => v_invoice_amount,
p_base_amount => v_base_amount,
p_temp_cancelled_amount => v_temp_cancelled_amount,
p_cancelled_by => v_cancelled_by,
p_cancelled_amount => v_cancelled_amount,
p_cancelled_date => v_cancelled_date,
p_last_update_date => v_last_update_date,
p_original_prepayment_amount => v_orig_prepay_amt,
p_pay_curr_invoice_amount => v_pay_cur_inv_amt,
p_token => v_token,
p_calling_sequence => null);
if v_boolean then
dbms_output.put_line('Titulo: ' || d_nff.invoice_num || ' do Fornecedor: ' || d_nff.vendor_name || ' foi cancelado com sucesso');
commit;
else
dbms_output.put_line('FALHA!!! Titulo:' || d_nff.invoice_num || ' do Fornecedor: ' || d_nff.vendor_name || ' não pode ser cancelado');
rollback;
end if;
end loop;
end;

Titulo Cancelado

Sem título

Dúvidas à disposição.

 

 

Deixe uma resposta

Powered by WordPress.com. Tema: Baskerville 2 por Anders Noren

Acima ↑

%d blogueiros gostam disto: