創建AP計劃付款API

ap_create_pay_scheds_pkg.Create_Payment_Schedules --創建計劃付款

業務需要後臺程序拆分發票計劃付款行,可以使用上面的API。但是上述API存在如下問題

1.該API只能生成一條計劃付款行,如果已經存在計劃付款行,則會報錯。

原因:因爲每次調用該API都會生成  PAYMENT_NUM = 1 的記錄。如果已經存在記錄則報違反唯一性約束錯誤。

2.該API不能插入暫掛,暫掛原因,銀行等字段


所以這個地方需要客戶化cux_ap_create_pay_scheds_pkg,使其每次進入該API時生成MAX(PAYMENT_NUM)+1 的記錄,

其次參數中添加 暫掛,暫掛原因,銀行等字段


測試後證明:

使用上述方法可以對一張發票生成多行計劃付款,而且能夠實現暫掛。

但是當我們驗證發票的時候,會發現驗證程序會將我們插入的多行記錄都刪除,然後生成一行數量與發票數量相等的

計劃付款,相當於將其初始化了。

驗證的時候會調用AP_APPROVAL_PKG.Approve

其中有如下代碼:

IF (l_recalc_pay_schedule_flag = 'Y') THEN

      SELECT DECODE(NVL((MAX(aps.last_update_date)- MIN(aps.creation_date)),0),
                     0,'N','Y')
        INTO l_diff_flag
        FROM ap_payment_schedules aps
       WHERE aps.invoice_id = l_invoice_id;

      IF (l_diff_flag = 'N') THEN
        AP_PPA_PKG.Due_Date_Sweeper(
                l_invoice_id,
                l_matched,
                l_system_user,
                l_receipt_acc_days,
                l_curr_calling_sequence);
      END IF;
   END IF;
其中: l_recalc_pay_schedule_flag在OU下設置,這個地方如果 l_diff_flag = 'N'則會進入AP_PPA_PKG.Due_Date_Sweeper。所以我們要使l_diff_flag = 'Y'

AP_PPA_PKG.Due_Date_Sweeper中會根據付款條件行與當前計劃付款行條數進行對比,如果計劃付款行數多於付款條件行數。

則該API會刪除當前計劃付款記錄。然後插入新的自動生成的記錄。

所以只需要在插入計劃付款(cux_ap_create_pay_scheds_pkg.Create_Payment_Schedules)的時候使 aps.last_update_date 比 aps.creation_date 大個1s即可。

但是這樣是否會有其他問題,還需驗證。


調用 cux_ap_create_pay_scheds_pkg.Create_Payment_Schedules

BEGIN
  SELECT aia.terms_id,
         aia.terms_date,
         aia.batch_id,
         aia.invoice_amount,
         aia.payment_cross_rate,
         cfrh.payment_method_code, --aia.payment_method_lookup_code,
         aia.invoice_currency_code,
         aia.payment_currency_code,
         aia.amount_applicable_to_discount,
         aia.last_updated_by,
         aia.created_by,
         'Y',
         NULL
    INTO l_terms_id,
         l_terms_date,
         l_batch_id,
         l_invoice_amount,
         l_payment_cross_rate,
         l_payment_method_lookup_code,
         l_invoice_currency_code,
         l_payment_currency_code,
         l_amount_app_to_discount,
         l_last_update_by,
         l_created_by,
         l_hold_flag,
         l_iby_hold_reason
    FROM ap_invoices_all            aia,
         cux_fin_recpay_headers_all cfrh,
         cux_finreq_headers_all     cfh
   WHERE aia.invoice_id = p_invoice_id
     AND aia.attribute1 = cfh.req_number
     AND cfh.req_header_id = cfrh.req_header_id
     AND rownum = 1;

  cux_ap_create_pay_scheds_pkg.create_payment_schedules(p_invoice_id              => p_invoice_id,
                                                        p_terms_id                => l_terms_id,
                                                        p_last_updated_by         => l_last_update_by,
                                                        p_created_by              => l_created_by,
                                                        p_payment_priority        => 99,
                                                        p_batch_id                => l_batch_id,
                                                        p_terms_date              => l_terms_date,
                                                        p_invoice_amount          => l_invoice_amount,
                                                        p_pay_curr_invoice_amount => l_pay_curr_invoice_amount,--需要輸入的金額
                                                        p_payment_cross_rate      => l_payment_cross_rate,
                                                        p_amount_for_discount     => l_amount_app_to_discount,
                                                        p_payment_method          => l_payment_method_lookup_code,
                                                        p_invoice_currency        => l_invoice_currency_code,
                                                        p_payment_currency        => l_payment_currency_code,
                                                        p_calling_sequence        => 'Import_invoices<- Before Report Trigger',
                                                        p_hold_flag               => l_hold_flag,
                                                        p_iby_hold_reason         => l_iby_hold_reason);

END;



發佈了69 篇原創文章 · 獲贊 13 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章