AP發票導入(發票頭行)

     1.將發票頭插入ap_invoices_interface中

     2.將發票行插入ap_invoice_lines_interface中

     3.運行發票導入請求 APXIIMPT


具體示例:

1.往接口表中插入數據

DECLARE
  l_iface_rec       ap_invoices_interface%ROWTYPE;
  l_iface_lines_rec ap_invoice_lines_interface%ROWTYPE;
  TYPE l_invoice_tbl_type IS TABLE OF cur_invoice%ROWTYPE INDEX BY BINARY_INTEGER;
  l_invoice_tbl l_invoice_tbl_type;
  CURSOR cur_invoice IS
  --1. 支付類型:非純支付   收款方式:單收   
    SELECT temp.record_flag,
           temp.org_id,
           temp.req_number,
           temp.req_header_id,
           temp.vendor_id,
           temp.vendor_site_id,
           temp.req_coa_reg_code,
           temp.group_type_code,
           temp.doc_type_id,
           temp.req_apply_date,
           temp.req_emp_dept_code,
           temp.req_employee_id,
           temp.ebs_type_key,
           temp.doc_type_name,
           temp.src_system_id,
           temp.short_code,
           temp.src_system_name,
           temp.ap_terms_id,
           temp.terms_start_date,
           temp.currency_code,
           temp.comments,
           temp.payment_method_code,
           temp.pay_group_code,
           temp.payment_flag,
           temp.accts_pay_code_combination_id,
           temp.invoice_amount
      FROM (** ** 此處略去n行代碼 ** **) temp
     ORDER BY temp.req_employee_id ASC;
BEGIN
  OPEN cur_invoice;
  LOOP
    FETCH cur_invoice BULK COLLECT
      INTO l_invoice_tbl LIMIT 5000;
    EXIT WHEN l_invoice_tbl.count = 0;
  
    FOR k IN l_invoice_tbl.first .. l_invoice_tbl.last
    LOOP
      --頭
      l_iface_rec.org_id                   := l_invoice_tbl(k).org_id;
      l_iface_rec.invoice_type_lookup_code := l_invoice_type_lookup_code; --發票類型(CREDIT/STANDARD/PREPAYMENT/MIXED)
      l_iface_rec.invoice_date             := l_invoice_tbl(k)
                                              .req_apply_date;
      l_iface_rec.gl_date                  := to_date(to_char(l_invoice_tbl(k)
                                                              .req_apply_date,
                                                              'YYYY-MM-DD'), --GL日期
                                                      'YYYY-MM-DD');
      l_iface_rec.terms_id                 := l_invoice_tbl(k).ap_terms_id; --付款條件
      l_iface_rec.terms_date               := l_invoice_tbl(k)
                                              .terms_start_date; --付款條件日期
    
      l_iface_rec.payment_method_lookup_code := l_invoice_tbl(k)
                                                .payment_method_code; --預付款方法 
      l_iface_rec.vendor_id                  := l_invoice_tbl(k).vendor_id;
      l_iface_rec.vendor_site_id             := l_invoice_tbl(k)
                                                .vendor_site_id;
      l_iface_rec.invoice_amount             := round(l_invoice_tbl(k)
                                                      .invoice_amount,
                                                      2);
      l_iface_rec.invoice_currency_code      := l_invoice_tbl(k)
                                                .currency_code;
      l_iface_rec.control_amount             := NULL;
      l_iface_rec.exchange_rate_type         := NULL;
      l_iface_rec.exchange_date              := NULL;
      l_iface_rec.exchange_rate              := NULL;
      l_iface_rec.source                     := 'FINREQ'; --來源(提請求參數)
      l_iface_rec.group_id                   := l_group_id; --組 (提請求參數)
      l_iface_rec.pay_group_lookup_code      := l_invoice_tbl(k)
                                                .pay_group_code;
      l_iface_rec.attribute_category         := 'JD_AP_Settlement_Header'; --彈性域上下文
      l_iface_rec.attribute1                 := l_invoice_tbl(k).req_number;
      l_iface_rec.attribute2                 := l_invoice_tbl(k)
                                                .src_system_name;
      l_iface_rec.attribute3                 := l_invoice_tbl(k)
                                                .doc_type_name;
      l_iface_rec.attribute4                 := l_invoice_tbl(k)
                                                .req_coa_reg_code;
      l_iface_rec.attribute5                 := l_invoice_tbl(k)
                                                .group_type_code;
      l_iface_rec.attribute6                 := get_empolyee_name(l_invoice_tbl(k)
                                                                  .req_employee_id);
      l_iface_rec.attribute7                 := get_person_dept_code(l_invoice_tbl(k)
                                                                     .req_employee_id);
      l_iface_rec.attribute8                 := l_attribute8;
    
      l_iface_rec.accts_pay_code_combination_id := l_invoice_tbl(k)
                                                   .accts_pay_code_combination_id; --負債賬戶
      l_iface_rec.description                   := substrb(l_invoice_tbl(k)
                                                           .comments,
                                                           1,
                                                           240);
      l_iface_rec.last_update_date              := SYSDATE;
      l_iface_rec.last_updated_by               := g_user_id;
      l_iface_rec.creation_date                 := SYSDATE;
      l_iface_rec.created_by                    := g_user_id;
      l_iface_rec.last_update_login             := fnd_global.login_id;
      INSERT INTO ap_invoice_lines_interface VALUES l_iface_lines_rec;
      --行 略去循環遊標
      l_iface_lines_rec.org_id     := l_iface_rec.org_id;
      l_iface_lines_rec.invoice_id := l_iface_rec.invoice_id;
    
      l_iface_lines_rec.accounting_date       := SYSDATE;
      l_iface_lines_rec.line_number           := n;
      l_iface_lines_rec.line_type_lookup_code := 'ITEM';
      l_iface_lines_rec.amount                := round(line_record.line_amount -
                                                       line_record.tax_amount,
                                                       2);
    
      l_iface_lines_rec.tax_code := '0%_VAT'; --稅碼,發票驗證時根據該稅碼生成稅額
    
      l_iface_lines_rec.dist_code_combination_id := l_ccid; --分配賬戶
    
      l_iface_lines_rec.description        := line_record.purchase_reason || ',' ||
                                              line_record.comments;
      l_iface_lines_rec.quantity_invoiced  := line_record.quantity;
      l_iface_lines_rec.last_update_date   := SYSDATE;
      l_iface_lines_rec.last_updated_by    := l_user_id;
      l_iface_lines_rec.creation_date      := SYSDATE;
      l_iface_lines_rec.created_by         := l_user_id;
      l_iface_lines_rec.last_update_login  := l_login_id;
      l_iface_lines_rec.attribute_category := 'JD_AP_Settlement_Line';
      l_iface_lines_rec.attribute1         := line_record.cash_flow_code;
      l_iface_lines_rec.attribute2         := line_record.line_type_name;
      l_iface_lines_rec.attribute3         := line_record.line_number;
      l_iface_lines_rec.attribute4         := line_record.project_code;
      l_iface_lines_rec.attribute5         := cux_common_utl.get_lookup_meaning(line_record.process_type_code,
                                                                                'CUX_FIN_LINE_PROCESS_TYPE');
    
      l_iface_lines_rec.attribute6 := line_record.cost_flag;
      INSERT INTO ap_invoice_lines_interface VALUES l_iface_lines_rec_tax;
    END LOOP;
  END LOOP;
  CLOSE cur_invoice;
END;

2.運行發票導入請求

p_req_id := fnd_request.submit_request(        'SQLAP', --應用簡稱
                                               'APXIIMPT', --應用程序
                                               '', --請求說明(可選)
                                               '', --start time,
                                               FALSE, --sub request
                                               NULL, --Operating Unit
                                               'FINREQ', --'結算申請記錄', --Source  (請求會根據Source和group_id)
                                               record_array(j).group_id, --Group       
                                               record_array(j).batch_name, --Batch Name
                                               NULL, --Hold Name 
                                               NULL, --Hold Reason
                                               NULL, --GL
                                               'N', --Purge  是否清除
                                               'N', --Trace Switch 是否啓用Trace,隱藏的參數
                                               'N', --Debug Switch 是否啓用調式信息,隱藏的參數
                                               'N', --Summarize Report 是否打印彙總報表
                                               NULL, --Commit Batch Size
                                               l_user_id, --User id
                                               l_login_id, --Login id
                                               chr(0));
 運行發票導入的時候,會根據批名自動生成發票批,如果
 'N', --Purge  是否清除
設置爲'Y'的話,請求運行完成之後會刪除接口頭行表中的數據。



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