Olá, neste post irei mostrar como cancelar uma nota fiscal no contas a pagar via API.
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
Dúvidas à disposição.
Deixe uma resposta