详解EBS接口开发之更新供应商付款方法(转载)

更新供应商地点层的付款方法API

[sql]  view plain  copy
  1. DECLARE  
  2.   --API 参数  
  3.   l_external_payee_rec_type iby_disbursement_setup_pub.external_payee_rec_type;  
  4.   l_ext_payee_id_rec_type   iby_disbursement_setup_pub.ext_payee_id_rec_type;  
  5.   l_ext_payee_tab           iby_disbursement_setup_pub.external_payee_tab_type;  
  6.   l_ext_payee_id_tab        iby_disbursement_setup_pub.ext_payee_id_tab_type;  
  7.   l_ext_payee_status_tab    iby_disbursement_setup_pub.ext_payee_update_tab_type;  
  8.   
  9.   --变量  
  10.   l_api_version CONSTANT NUMBER := 1;  
  11.   l_msg_data      VARCHAR2(2000);  
  12.   l_msg           VARCHAR2(4000);  
  13.   l_msg_count     NUMBER;  
  14.   l_return_status VARCHAR2(1);  
  15.   l_method_code   VARCHAR2(50);  
  16.   
  17.   l_vendor_id              NUMBER;  
  18.   l_party_id               NUMBER;  
  19.   l_party_site_id          NUMBER;  
  20.   l_location_id            NUMBER;  
  21.   l_vendor_site_id         NUMBER;  
  22.   l_object_version_number  NUMBER;  
  23.   l_loc_version_number     NUMBER;  
  24.   g_def_exclusive_pay_flag VARCHAR2(1) := 'Y';  
  25.   --l_party_id              NUMBER;  
  26.   --游标  
  27.   CURSOR cur_cux_vendor IS  
  28.     SELECT l.vendor_site_code, l.attribute2, l.line_id  
  29.       FROM cux_oms_vendor_site l  
  30.      WHERE l.attribute2 IS NULL  
  31.        FOR UPDATE NOWAIT;  
  32.   
  33.   CURSOR cur_ap_vendor(p_vendor_site_code IN VARCHAR2) IS  
  34.     SELECT l.vendor_id, l.vendor_site_id, l.org_id, l.party_site_id  
  35.       FROM ap_supplier_sites_all l  
  36.      WHERE l.vendor_site_code = p_vendor_site_code;  
  37.   
  38.   CURSOR c_payment_method(p_vendor_id      IN VARCHAR2,  
  39.                           p_vendor_site_id IN NUMBER) IS  
  40.     SELECT a.ext_payee_id,  
  41.            a.payment_function,  
  42.            a.supplier_site_id,  
  43.            a.party_site_id,  
  44.            a.org_id,  
  45.            a.org_type,  
  46.            a.object_version_number,  
  47.            pv.party_id,  
  48.            s.attribute2  
  49.       FROM ap_supplier_sites_all   s,  
  50.            iby_external_payees_all a,  
  51.            po_vendors              pv  
  52.      WHERE (s.inactive_date IS NULL OR  
  53.            trunc(s.inactive_date) >= trunc(SYSDATE))  
  54.        AND a.supplier_site_id(+) = s.vendor_site_id  
  55.        AND s.vendor_id = pv.vendor_id  
  56.        AND a.payee_party_id = pv.party_id  
  57.        AND s.org_id = a.org_id(+)  
  58.        AND s.party_site_id = a.party_site_id(+)  
  59.        AND s.vendor_site_id = p_vendor_site_id  
  60.        AND pv.vendor_id = p_vendor_id;  
  61.   
  62. BEGIN  
  63.   fnd_global.apps_initialize(user_id      => 1110,  
  64.                              resp_id      => 20639,  
  65.                              resp_appl_id => 200);  
  66.   FOR rec_cux_vendor IN cur_cux_vendor LOOP  
  67.     FOR rec_ap_vendor IN cur_ap_vendor(p_vendor_site_code => rec_cux_vendor.vendor_site_code) LOOP  
  68.       --初始化参数  
  69.       mo_global.set_policy_context(p_access_mode => 'S',  
  70.                                    p_org_id      => rec_ap_vendor.org_id);  
  71.       FOR r_payment_method IN c_payment_method(p_vendor_id      => rec_ap_vendor.vendor_id,  
  72.                                                p_vendor_site_id => rec_ap_vendor.vendor_site_id) LOOP  
  73.         l_ext_payee_id_rec_type := NULL;  
  74.         l_ext_payee_id_tab.delete;  
  75.         l_external_payee_rec_type := NULL;  
  76.         l_ext_payee_tab.delete;  
  77.         
  78.         SELECT l.party_id  
  79.           INTO l_party_id  
  80.           FROM ap_suppliers l  
  81.          WHERE l.vendor_id = rec_ap_vendor.vendor_id;  
  82.         
  83.         --update site level ext pay infor  
  84.         l_ext_payee_id_rec_type := NULL;  
  85.         l_ext_payee_id_tab.delete;  
  86.         l_external_payee_rec_type := NULL;  
  87.         l_ext_payee_tab.delete;  
  88.         --init param p_ext_payee_id_tab  
  89.         l_ext_payee_id_rec_type.ext_payee_id := r_payment_method.ext_payee_id;  
  90.         l_ext_payee_id_tab(1) := l_ext_payee_id_rec_type;  
  91.         --init param p_ext_payee_tab  
  92.         l_external_payee_rec_type.payee_party_site_id := r_payment_method.party_site_id;  
  93.         l_external_payee_rec_type.payee_party_id      := r_payment_method.party_id; --p_party_id;  
  94.         l_external_payee_rec_type.payment_function    := r_payment_method.payment_function;  
  95.         l_external_payee_rec_type.payer_org_id        := r_payment_method.org_id;  
  96.         l_external_payee_rec_type.supplier_site_id    := r_payment_method.supplier_site_id;  
  97.         l_external_payee_rec_type.payer_org_type      := r_payment_method.org_type;  
  98.         l_external_payee_rec_type.exclusive_pay_flag  := g_def_exclusive_pay_flag;  
  99.         
  100.         /*SELECT pmv.payment_method_code  
  101.          INTO l_method_code  
  102.          FROM iby_payment_methods_vl pmv  
  103.         WHERE pmv.payment_method_name = '银行电汇'  
  104.           AND SYSDATE < nvl(pmv.inactive_date, SYSDATE + 1);*/  
  105.         
  106.         l_external_payee_rec_type.default_pmt_method := 'BZ_CHECK';  
  107.         l_ext_payee_tab(1) := l_external_payee_rec_type;  
  108.         
  109.         iby_disbursement_setup_pub.update_external_payee(p_api_version          => l_api_version,  
  110.                                                          p_init_msg_list        => 'T',  
  111.                                                          p_ext_payee_tab        => l_ext_payee_tab,  
  112.                                                          p_ext_payee_id_tab     => l_ext_payee_id_tab,  
  113.                                                          x_return_status        => l_return_status,  
  114.                                                          x_msg_count            => l_msg_count,  
  115.                                                          x_msg_data             => l_msg_data,  
  116.                                                          x_ext_payee_status_tab => l_ext_payee_status_tab);  
  117.         IF l_return_status != fnd_api.g_ret_sts_success THEN  
  118.           
  119.           IF l_msg_data IS NULL THEN  
  120.             l_msg_data := fnd_msg_pub.get(p_msg_index => fnd_msg_pub.g_last,  
  121.                                           p_encoded   => 'F'); --get last message  
  122.             dbms_output.put_line('l_msg_data:' || SQLERRM);  
  123.           END IF; --IF l_msg_data IS NULL THEN  
  124.           
  125.         END IF; --IF l_return_status != fnd_api.g_ret_sts_success THEN  
  126.       END LOOP; --FOR r_payment_method IN c_payment_method(p_vendor_id      =>rec_ap_vendor.vendor_id,  
  127.       
  128.     END LOOP; --for rec_ap_vendor in cur_ap_vendor(p_vendor_site_code =>rec_cux_vendor.vendor_site_code) loop  
  129.     UPDATE cux_oms_vendor_site L  
  130.     SET L.ATTRIBUTE2 = 'BZ_CHECK'  
  131.     WHERE L.LINE_ID = rec_cux_vendor.LINE_ID;  
  132.   END LOOP; --for rec_cux_vendor in cur_cux_vendor loop  

  1. END;  

转载出处:https://blog.csdn.net/cai_xingyun/article/details/18603681

猜你喜欢

转载自blog.csdn.net/f_zhangyu/article/details/80528658