zoukankan      html  css  js  c++  java
  • EBS ORACLE采购对账单自动产生发票

    只要传入个对账单号,然后跑数据抛到接口表,运行接口请求,就可以自动生成发票

    create or replace package body pkg_ap_check_by_po is

    --创建ap发票
    procedure ap_invoices_ap_check(p_ap_no varchar2,
    p_import_status OUT number) is
    --V_INVOICE_ID number := 0;
    --V_INVOICE_LINE_ID NUMBER := 0;
    --P_LINE_NUMBER NUMBER := 1;
    l_big_zero NUMBER := 0; --T6开头,并且数量大于0
    l_small_zero NUMBER := 0; --接收单号是T6开头,并且数量小于0
    l_cut_quantity NUMBER := 0; --品质扣款
    l_no_po NUMBER := 0; --无PO退货
    begin
    --代表接收单号是T6开头,并且数量大于0
    select count(*)
    into l_big_zero
    from meg_ap_checklist mac
    where mac.receipt_num like 'T6%'
    and mac.match_dsp > 0
    and mac.ap_no = p_ap_no;
    --代表接收单号是T6开头,并且数量小于0
    select count(*)
    into l_small_zero
    from meg_ap_checklist mac
    where mac.receipt_num like 'T6%'
    and mac.match_dsp < 0
    and mac.ap_no = p_ap_no;
    --品质扣款
    SELECT count(*)
    into l_cut_quantity
    from meg_ap_checklist mac
    where /*mac.receipt_num like 'CM%'
    and*/ mac.match_dsp < 0
    and mac.item_no in ( '索赔','折让','品质调整','超损扣款')
    and mac.ap_no = p_ap_no;
    --无PO退货
    SELECT count(*)
    into l_no_po
    from meg_ap_checklist mac
    where mac.match_dsp < 0
    and mac.receipt_num = '无PO退货'
    and mac.ap_no = p_ap_no;
    --因为如果存在多种情况,发票编号后缀要加,-1,-2,-3
    if l_big_zero > 0 then
    --代表接收单号是T6开头,并且数量大于0
    pkg_ap_check_by_po.insert_ap_invoices_t6_plus(p_ap_no);
    end if;
    if l_small_zero > 0 then
    --接收单号是T6开头,数量小于0
    pkg_ap_check_by_po.insert_ap_invoices_t6_minus(p_ap_no, 1);
    ELSif l_small_zero > 0 and l_big_zero = 0 then
    pkg_ap_check_by_po.insert_ap_invoices_t6_minus(p_ap_no, 0);
    end if;
    --品质扣款
    if l_cut_quantity > 0 then
    if l_small_zero > 0 and l_big_zero > 0 then
    --品质扣款
    pkg_ap_check_by_po.insert_ap_invoices_cut_qty(p_ap_no, 2);
    elsif l_small_zero = 0 and l_big_zero = 0 then
    --品质扣款
    pkg_ap_check_by_po.insert_ap_invoices_cut_qty(p_ap_no, 0);
    else
    pkg_ap_check_by_po.insert_ap_invoices_cut_qty(p_ap_no, 1);
    end if;
    end if;
    --无PO
    if l_no_po > 0 then
    if l_big_zero > 0 and l_small_zero > 0 and l_cut_quantity > 0 then
    --无PO退货
    pkg_ap_check_by_po.insert_ap_invoices_no_po(p_ap_no, 3);
    elsif (l_big_zero > 0 and l_small_zero > 0 and l_cut_quantity = 0) or
    (l_big_zero > 0 and l_small_zero = 0 and l_cut_quantity > 0) or
    (l_big_zero = 0 and l_small_zero > 0 and l_cut_quantity > 0) then
    pkg_ap_check_by_po.insert_ap_invoices_no_po(p_ap_no, 2);
    elsif (l_small_zero = 0 and l_cut_quantity = 0 and l_big_zero = 0) then
    pkg_ap_check_by_po.insert_ap_invoices_no_po(p_ap_no, 0);
    else
    pkg_ap_check_by_po.insert_ap_invoices_no_po(p_ap_no, 1);
    end if;
    end if;
    -- commit;
    P_IMPORT_STATUS := 1;
    EXCEPTION
    WHEN OTHERS THEN
    P_IMPORT_STATUS := 0;
    end;
    procedure insert_ap_invoices_t6_plus(p_ap_no varchar2) as
    cursor cur_ap(p_ap_no varchar2) is
    select rt.transaction_id,
    pha.po_header_id,
    pla.po_line_id,
    pll.line_location_id,
    PLL.PO_RELEASE_ID,
    pha.org_id,
    pla.item_id,
    mac.up2, -- mac.up_agree,
    mac.match_dsp,
    mac.line_num,
    mac.match_amt_agree,
    mac.rem
    FROM RCV_TRANSACTIONS RT,
    RCV_SHIPMENT_HEADERS SH,
    RCV_SHIPMENT_LINES SL,
    PO_LINE_LOCATIONS_ALL PLL,
    PO_RELEASES_ALL PRA,
    PO_LINES_ALL PLA,
    PO_HEADERS_ALL PHA,
    PO_VENDORS PV,
    PO_VENDOR_SITES_ALL PVSA,
    MTL_SYSTEM_ITEMS_B MSI,
    meg_ap_checklist mac
    WHERE 1 = 1
    AND RT.TRANSACTION_TYPE IN ('RECEIVE', 'MATCH')
    AND MG_COMM_PUB.GETTRAN_ID(RT.TRANSACTION_ID) > 0
    AND MSI.INVENTORY_ITEM_ID = PLA.ITEM_ID
    AND MSI.ORGANIZATION_ID = 82
    AND SH.RECEIPT_SOURCE_CODE = 'VENDOR'
    AND RT.SOURCE_DOCUMENT_CODE = 'PO'
    AND RT.PO_HEADER_ID = PLL.PO_HEADER_ID(+)
    AND RT.PO_LINE_ID = PLL.PO_LINE_ID(+)
    AND RT.PO_LINE_LOCATION_ID = PLL.LINE_LOCATION_ID(+)
    AND RT.SHIPMENT_HEADER_ID = SL.SHIPMENT_HEADER_ID
    AND RT.SHIPMENT_LINE_ID = SL.SHIPMENT_LINE_ID
    AND SL.SHIPMENT_HEADER_ID = SH.SHIPMENT_HEADER_ID
    AND PLL.PO_HEADER_ID = PHA.PO_HEADER_ID
    AND SL.PO_LINE_LOCATION_ID = PLL.LINE_LOCATION_ID
    AND PLL.PO_LINE_ID = PLA.PO_LINE_ID
    AND PLL.PO_HEADER_ID = PLA.PO_HEADER_ID
    AND PLL.PO_RELEASE_ID = PRA.PO_RELEASE_ID(+)
    AND PHA.VENDOR_ID = PV.VENDOR_ID
    AND PVSA.VENDOR_ID = PHA.VENDOR_ID
    AND PVSA.VENDOR_SITE_ID = PHA.VENDOR_SITE_ID
    and rt.transaction_id = mac.transaction_id
    and mac.receipt_num like 'T6%'
    and mac.match_dsp > 0
    and mac.ap_no = p_ap_no;
    V_AP_INV_IFC_REC AP_INVOICES_INTERFACE%rowtype;
    V_AP_INV_LINE_IFC_TBL_C AP_INVOICE_LINES_INTERFACE%ROWTYPE; --发票行
    V_INVOICE_ID number := 0;
    V_INVOICE_LINE_ID NUMBER := 0;
    P_LINE_NUMBER NUMBER := 1;
    begin
    SELECT AP_INVOICES_INTERFACE_S.NEXTVAL INTO V_INVOICE_ID FROM DUAL;
    select vendor_site_id
    INTO V_AP_INV_IFC_REC.VENDOR_SITE_ID
    from (select itm,pha.vendor_site_id
    from MEG_AP_CHECKLIST mac, po_headers_all pha
    where pha.segment1 = mac.po_no
    and ap_no = p_ap_no
    order by itm)
    where rownum=1;
    --付款方式
    begin
    SELECT iepp.payment_method_code
    INTO V_AP_INV_IFC_REC.PAYMENT_METHOD_CODE
    FROM iby_payment_methods_vl ipmv
    , iby_ext_party_pmt_mthds iepp
    , iby_external_payees_all iepa
    WHERE ipmv.payment_method_code = iepp.payment_method_code(+)
    AND iepp.payment_flow = 'DISBURSEMENTS'
    AND NVL (ipmv.inactive_date, TRUNC (SYSDATE + 1)) > TRUNC (SYSDATE)
    AND iepp.payment_function = 'PAYABLES_DISB'
    AND iepp.ext_pmt_party_id = iepa.ext_payee_id
    AND iepa.org_id =137
    and iepp.primary_flag='Y'
    AND iepa.supplier_site_id = V_AP_INV_IFC_REC.VENDOR_SITE_ID;
    EXCEPTION
    WHEN OTHERS THEN
    V_AP_INV_IFC_REC.PAYMENT_METHOD_CODE := 'WIRE';
    end ;

    select mch.invoice_num,
    sum(mac.match_amt_agree),
    -- sum(mac.match_amt_agree),
    mch.org_id,
    pv.VENDOR_ID,
    pv.VENDOR_NAME,
    pv.SEGMENT1,
    pv.INVOICE_CURRENCY_CODE
    into V_AP_INV_IFC_REC.INVOICE_NUM,
    V_AP_INV_IFC_REC.INVOICE_AMOUNT,
    V_AP_INV_IFC_REC.ORG_ID,
    V_AP_INV_IFC_REC.VENDOR_ID,
    V_AP_INV_IFC_REC.Vendor_Name,
    V_AP_INV_IFC_REC.Vendor_Num,
    V_AP_INV_IFC_REC.INVOICE_CURRENCY_CODE
    from meg_ap_checklist_header mch, meg_ap_checklist mac, po_vendors pv --meg_ap_checklist_header mch, po_vendors pv
    where mch.ap_no = p_ap_no
    and mch.ap_no = mac.ap_no
    and mch.vendor_no = pv.SEGMENT1
    and mac.receipt_num like 'T6%'
    and mac.match_dsp > 0
    group by mch.invoice_num,
    mch.org_id,
    pv.VENDOR_ID,
    pv.VENDOR_NAME,
    pv.SEGMENT1,
    pv.INVOICE_CURRENCY_CODE;
    V_AP_INV_IFC_REC.INVOICE_ID := V_INVOICE_ID; --发票ID
    V_AP_INV_IFC_REC.INVOICE_TYPE_LOOKUP_CODE := 'STANDARD'; --发票行类型
    V_AP_INV_IFC_REC.SOURCE := 'USE'; --发票来源
    V_AP_INV_IFC_REC.INVOICE_DATE := trunc(sysdate); /*TO_DATE(sysdate,--'2018.07.01',
    'yyyy-mm-dd');*/ --trunc(sysdate); --发票日期
    V_AP_INV_IFC_REC.CONTROL_AMOUNT := NULL;
    V_AP_INV_IFC_REC.EXCHANGE_RATE := NULL;
    V_AP_INV_IFC_REC.EXCHANGE_RATE_TYPE := NULL;
    V_AP_INV_IFC_REC.EXCHANGE_DATE := NULL;
    V_AP_INV_IFC_REC.TERMS_DATE := trunc(sysdate); /*TO_DATE(sysdate,--'2018.07.01',
    'yyyy-mm-dd');*/ -- trunc(sysdate); --条件日期
    V_AP_INV_IFC_REC.DESCRIPTION := '应付' ||
    V_AP_INV_IFC_REC.Vendor_Name
    || p_ap_no||'入库'; --null; --备注
    V_AP_INV_IFC_REC.GROUP_ID := V_INVOICE_ID; --对账单处理批次
    -- V_AP_INV_IFC_REC.PAYMENT_METHOD_CODE := 'WIRE';
    V_AP_INV_IFC_REC.GL_DATE := trunc(sysdate); /*TO_DATE(sysdate,--'2018.07.01',
    'yyyy-mm-dd');*/ -- trunc(sysdate); --总账日期
    V_AP_INV_IFC_REC.CALC_TAX_DURING_IMPORT_FLAG := 'Y';
    V_AP_INV_IFC_REC.ADD_TAX_TO_INV_AMT_FLAG := 'Y';
    V_AP_INV_IFC_REC.LAST_UPDATE_DATE := trunc(sysdate);
    V_AP_INV_IFC_REC.LAST_UPDATED_BY := fnd_global.USER_ID;
    V_AP_INV_IFC_REC.LAST_UPDATE_LOGIN := fnd_global.LOGIN_ID;
    V_AP_INV_IFC_REC.CREATION_DATE := trunc(sysdate);
    V_AP_INV_IFC_REC.CREATED_BY := fnd_global.USER_ID;

    --付款条件,负债账户
    select assa.terms_id, gccc.code_combination_id
    into V_AP_INV_IFC_REC.TERMS_ID,
    V_AP_INV_IFC_REC.ACCTS_PAY_CODE_COMBINATION_ID
    from ap_suppliers ass,
    ap_supplier_sites_all assa,
    gl_code_combinations gccc,
    gl_code_combinations gccr
    where ass.vendor_id = assa.vendor_id
    and assa.accts_pay_code_combination_id = gccc.code_combination_id(+)
    and assa.prepay_code_combination_id = gccr.code_combination_id(+)
    and assa.org_id = V_AP_INV_IFC_REC.ORG_ID
    and ass.segment1 = V_AP_INV_IFC_REC.Vendor_Num
    and assa.vendor_site_id = V_AP_INV_IFC_REC.VENDOR_SITE_ID;

    INSERT INTO AP_INVOICES_INTERFACE VALUES V_AP_INV_IFC_REC; --插入发票
    for cursor_ap_no in cur_ap(p_ap_no) loop
    SELECT AP_INVOICE_LINES_INTERFACE_S.NEXTVAL
    INTO V_INVOICE_LINE_ID
    FROM DUAL;
    V_AP_INV_LINE_IFC_TBL_C.INVOICE_ID := V_INVOICE_ID; --发票ID
    V_AP_INV_LINE_IFC_TBL_C.INVOICE_LINE_ID := V_INVOICE_LINE_ID; --发票行ID
    V_AP_INV_LINE_IFC_TBL_C.LINE_NUMBER := P_LINE_NUMBER; --p_LINE_NUMBER; --发票行号
    V_AP_INV_LINE_IFC_TBL_C.LINE_TYPE_LOOKUP_CODE := 'ITEM'; --发票行类型
    V_AP_INV_LINE_IFC_TBL_C.AMOUNT := cursor_ap_no.MATCH_AMT_AGREE; --p_AMOUNT; --金额
    V_AP_INV_LINE_IFC_TBL_C.ACCOUNTING_DATE := trunc(sysdate); /*TO_DATE(sysdate,--'2018.07.01',
    'yyyy-mm-dd');*/ --trunc(sysdate); --记账日期
    V_AP_INV_LINE_IFC_TBL_C.DESCRIPTION := '应付' ||
    V_AP_INV_IFC_REC.Vendor_Name
    || p_ap_no||'入库';--cursor_ap_no.Rem; --'保险管/保险丝座/10A/磷青铜/镀镍/配套φ5*20mm/T=0.35mm/P=5.1mm/编带'; --发票行描述
    V_AP_INV_LINE_IFC_TBL_C.AMOUNT_INCLUDES_TAX_FLAG := 'N';
    V_AP_INV_LINE_IFC_TBL_C.TAX_CLASSIFICATION_CODE := '13%(外)'; --税分类代码
    V_AP_INV_LINE_IFC_TBL_C.LAST_UPDATED_BY := fnd_global.USER_ID;
    V_AP_INV_LINE_IFC_TBL_C.LAST_UPDATE_DATE := trunc(sysdate);
    V_AP_INV_LINE_IFC_TBL_C.LAST_UPDATE_LOGIN := fnd_global.USER_ID;
    V_AP_INV_LINE_IFC_TBL_C.CREATED_BY := fnd_global.USER_ID;
    V_AP_INV_LINE_IFC_TBL_C.CREATION_DATE := trunc(sysdate);
    V_AP_INV_LINE_IFC_TBL_C.RCV_TRANSACTION_ID := cursor_ap_no.transaction_id;
    V_AP_INV_LINE_IFC_TBL_C.PO_HEADER_ID := cursor_ap_no.PO_HEADER_ID;
    V_AP_INV_LINE_IFC_TBL_C.PO_LINE_ID := cursor_ap_no.PO_LINE_ID;
    V_AP_INV_LINE_IFC_TBL_C.PO_LINE_LOCATION_ID := cursor_ap_no.line_location_id;
    V_AP_INV_LINE_IFC_TBL_C.PO_RELEASE_ID := cursor_ap_no.PO_RELEASE_ID;
    V_AP_INV_LINE_IFC_TBL_C.ORG_ID := cursor_ap_no.org_id;
    V_AP_INV_LINE_IFC_TBL_C.INVENTORY_ITEM_ID := cursor_ap_no.item_id;
    V_AP_INV_LINE_IFC_TBL_C.UNIT_PRICE := cursor_ap_no.up2;
    V_AP_INV_LINE_IFC_TBL_C.QUANTITY_INVOICED := cursor_ap_no.match_dsp;

    INSERT INTO AP_INVOICE_LINES_INTERFACE
    VALUES V_AP_INV_LINE_IFC_TBL_C;
    P_LINE_NUMBER := P_LINE_NUMBER + 1;
    end loop;
    commit;

    end;
    --T6 数量<0
    procedure insert_ap_invoices_t6_minus(p_ap_no varchar, p_number number) as
    cursor cur_ap(p_ap_no varchar2) is
    select rt.transaction_id,
    pha.po_header_id,
    pla.po_line_id,
    pll.line_location_id,
    PLL.PO_RELEASE_ID,
    pha.org_id,
    pla.item_id,
    mac.UP2, --up_agree,
    mac.match_dsp,
    mac.line_num,
    mac.match_amt_agree,
    mac.rem
    FROM RCV_TRANSACTIONS RT,
    RCV_SHIPMENT_HEADERS SH,
    RCV_SHIPMENT_LINES SL,
    PO_LINE_LOCATIONS_ALL PLL,
    PO_RELEASES_ALL PRA,
    PO_LINES_ALL PLA,
    PO_HEADERS_ALL PHA,
    PO_VENDORS PV,
    PO_VENDOR_SITES_ALL PVSA,
    MTL_SYSTEM_ITEMS_B MSI,
    meg_ap_checklist mac
    WHERE 1 = 1
    AND RT.TRANSACTION_TYPE IN ('RECEIVE', 'MATCH')
    AND MG_COMM_PUB.GETTRAN_ID(RT.TRANSACTION_ID) > 0
    AND MSI.INVENTORY_ITEM_ID = PLA.ITEM_ID
    AND MSI.ORGANIZATION_ID = 82
    AND SH.RECEIPT_SOURCE_CODE = 'VENDOR'
    AND RT.SOURCE_DOCUMENT_CODE = 'PO'
    AND RT.PO_HEADER_ID = PLL.PO_HEADER_ID(+)
    AND RT.PO_LINE_ID = PLL.PO_LINE_ID(+)
    AND RT.PO_LINE_LOCATION_ID = PLL.LINE_LOCATION_ID(+)
    AND RT.SHIPMENT_HEADER_ID = SL.SHIPMENT_HEADER_ID
    AND RT.SHIPMENT_LINE_ID = SL.SHIPMENT_LINE_ID
    AND SL.SHIPMENT_HEADER_ID = SH.SHIPMENT_HEADER_ID
    AND PLL.PO_HEADER_ID = PHA.PO_HEADER_ID
    AND SL.PO_LINE_LOCATION_ID = PLL.LINE_LOCATION_ID
    AND PLL.PO_LINE_ID = PLA.PO_LINE_ID
    AND PLL.PO_HEADER_ID = PLA.PO_HEADER_ID
    AND PLL.PO_RELEASE_ID = PRA.PO_RELEASE_ID(+)
    AND PHA.VENDOR_ID = PV.VENDOR_ID
    AND PVSA.VENDOR_ID = PHA.VENDOR_ID
    AND PVSA.VENDOR_SITE_ID = PHA.VENDOR_SITE_ID
    and rt.transaction_id = mac.transaction_id
    and mac.receipt_num like 'T6%'
    and mac.match_dsp < 0
    and mac.ap_no = p_ap_no;
    V_AP_INV_IFC_REC AP_INVOICES_INTERFACE%rowtype;
    V_AP_INV_LINE_IFC_TBL_C AP_INVOICE_LINES_INTERFACE%ROWTYPE; --发票行
    V_INVOICE_ID number := 0;
    V_INVOICE_LINE_ID NUMBER := 0;
    P_LINE_NUMBER NUMBER := 1;
    --v_total_amount1 number:=0;
    --v_total_amount2 number:=0;
    v_price_diff number := 0;
    begin
    SELECT AP_INVOICES_INTERFACE_S.NEXTVAL INTO V_INVOICE_ID FROM DUAL;

    select vendor_site_id
    INTO V_AP_INV_IFC_REC.VENDOR_SITE_ID
    from (select itm,pha.vendor_site_id
    from MEG_AP_CHECKLIST mac, po_headers_all pha
    where pha.segment1 = mac.po_no
    and ap_no = p_ap_no
    order by itm)
    where rownum=1;

    --付款方式
    begin
    SELECT iepp.payment_method_code
    INTO V_AP_INV_IFC_REC.PAYMENT_METHOD_CODE
    FROM iby_payment_methods_vl ipmv
    , iby_ext_party_pmt_mthds iepp
    , iby_external_payees_all iepa
    WHERE ipmv.payment_method_code = iepp.payment_method_code(+)
    AND iepp.payment_flow = 'DISBURSEMENTS'
    AND NVL (ipmv.inactive_date, TRUNC (SYSDATE + 1)) > TRUNC (SYSDATE)
    AND iepp.payment_function = 'PAYABLES_DISB'
    AND iepp.ext_pmt_party_id = iepa.ext_payee_id
    AND iepa.org_id =137
    and iepp.primary_flag='Y'
    AND iepa.supplier_site_id = V_AP_INV_IFC_REC.VENDOR_SITE_ID;
    EXCEPTION
    WHEN OTHERS THEN
    V_AP_INV_IFC_REC.PAYMENT_METHOD_CODE := 'WIRE';
    end ;


    select mch.invoice_num || '-' || p_number, --因为
    sum(mac.match_amt_agree),
    -- sum(mac.match_amt_agree),
    mch.org_id,
    pv.VENDOR_ID,
    pv.VENDOR_NAME,
    pv.SEGMENT1,
    pv.INVOICE_CURRENCY_CODE
    into V_AP_INV_IFC_REC.INVOICE_NUM,
    V_AP_INV_IFC_REC.INVOICE_AMOUNT,
    V_AP_INV_IFC_REC.ORG_ID,
    V_AP_INV_IFC_REC.VENDOR_ID,
    V_AP_INV_IFC_REC.Vendor_Name,
    V_AP_INV_IFC_REC.Vendor_Num,
    V_AP_INV_IFC_REC.INVOICE_CURRENCY_CODE
    from meg_ap_checklist_header mch, po_vendors pv, meg_ap_checklist mac
    where mch.ap_no = p_ap_no
    and mch.ap_no = mac.ap_no
    and mch.vendor_no = pv.SEGMENT1
    and mac.receipt_num like 'T6%'
    and mac.match_dsp < 0
    group by mch.invoice_num,
    mch.org_id,
    pv.VENDOR_ID,
    pv.VENDOR_NAME,
    pv.SEGMENT1,
    pv.INVOICE_CURRENCY_CODE;
    V_AP_INV_IFC_REC.INVOICE_ID := V_INVOICE_ID; --发票ID
    V_AP_INV_IFC_REC.INVOICE_TYPE_LOOKUP_CODE := 'CREDIT'; --发票行类型
    V_AP_INV_IFC_REC.SOURCE := 'USE'; --发票来源
    V_AP_INV_IFC_REC.INVOICE_DATE := trunc(sysdate); /*TO_DATE(sysdate,--'2018.07.01',
    'yyyy-mm-dd');*/ --trunc(sysdate); --发票日期
    V_AP_INV_IFC_REC.CONTROL_AMOUNT := NULL;
    V_AP_INV_IFC_REC.EXCHANGE_RATE := NULL;
    V_AP_INV_IFC_REC.EXCHANGE_RATE_TYPE := NULL;
    V_AP_INV_IFC_REC.EXCHANGE_DATE := NULL;
    V_AP_INV_IFC_REC.TERMS_DATE := trunc(sysdate); /*TO_DATE(sysdate,--'2018.07.01',
    'yyyy-mm-dd');*/ -- trunc(sysdate); --条件日期
    V_AP_INV_IFC_REC.DESCRIPTION := '应付' ||
    V_AP_INV_IFC_REC.Vendor_Name ||
    p_ap_no||'退货' ; --null; --备注
    V_AP_INV_IFC_REC.GROUP_ID := V_INVOICE_ID; --对账单处理批次
    -- V_AP_INV_IFC_REC.PAYMENT_METHOD_CODE := 'WIRE';
    V_AP_INV_IFC_REC.GL_DATE := trunc(sysdate); /*TO_DATE(sysdate,--'2018.07.01',
    'yyyy-mm-dd');*/ -- trunc(sysdate); --总账日期
    V_AP_INV_IFC_REC.CALC_TAX_DURING_IMPORT_FLAG := 'Y';
    V_AP_INV_IFC_REC.ADD_TAX_TO_INV_AMT_FLAG := 'Y';
    V_AP_INV_IFC_REC.LAST_UPDATE_DATE := trunc(sysdate);
    V_AP_INV_IFC_REC.LAST_UPDATED_BY := fnd_global.USER_ID;
    V_AP_INV_IFC_REC.LAST_UPDATE_LOGIN := fnd_global.LOGIN_ID;
    V_AP_INV_IFC_REC.CREATION_DATE := trunc(sysdate);
    V_AP_INV_IFC_REC.CREATED_BY := fnd_global.USER_ID;

    --付款条件,负债账户
    select ass.terms_id, gccc.code_combination_id
    into V_AP_INV_IFC_REC.TERMS_ID,
    V_AP_INV_IFC_REC.ACCTS_PAY_CODE_COMBINATION_ID
    from ap_suppliers ass,
    ap_supplier_sites_all assa,
    gl_code_combinations gccc,
    gl_code_combinations gccr
    where ass.vendor_id = assa.vendor_id
    and assa.accts_pay_code_combination_id = gccc.code_combination_id(+)
    and assa.prepay_code_combination_id = gccr.code_combination_id(+)
    and assa.org_id = V_AP_INV_IFC_REC.ORG_ID
    and ass.segment1 = V_AP_INV_IFC_REC.Vendor_Num
    and assa.vendor_site_id = V_AP_INV_IFC_REC.VENDOR_SITE_ID;

    INSERT INTO AP_INVOICES_INTERFACE VALUES V_AP_INV_IFC_REC; --插入发票
    for cursor_ap_no in cur_ap(p_ap_no) loop
    SELECT AP_INVOICE_LINES_INTERFACE_S.NEXTVAL
    INTO V_INVOICE_LINE_ID
    FROM DUAL;
    if abs((cursor_ap_no.UP2 * cursor_ap_no.match_dsp) -
    cursor_ap_no.MATCH_AMT_AGREE) < 0.05 and
    abs((cursor_ap_no.UP2 * cursor_ap_no.match_dsp) -
    cursor_ap_no.MATCH_AMT_AGREE) > 0 then
    v_price_diff := round(cursor_ap_no.MATCH_AMT_AGREE /
    cursor_ap_no.match_dsp,6);
    else
    v_price_diff := cursor_ap_no.UP2;
    end if;
    V_AP_INV_LINE_IFC_TBL_C.INVOICE_ID := V_INVOICE_ID; --发票ID
    V_AP_INV_LINE_IFC_TBL_C.INVOICE_LINE_ID := V_INVOICE_LINE_ID; --发票行ID
    V_AP_INV_LINE_IFC_TBL_C.LINE_NUMBER := P_LINE_NUMBER; --p_LINE_NUMBER; --发票行号
    V_AP_INV_LINE_IFC_TBL_C.LINE_TYPE_LOOKUP_CODE := 'ITEM'; --发票行类型
    V_AP_INV_LINE_IFC_TBL_C.AMOUNT := cursor_ap_no.MATCH_AMT_AGREE; --p_AMOUNT; --金额
    V_AP_INV_LINE_IFC_TBL_C.ACCOUNTING_DATE := trunc(sysdate); /*TO_DATE(sysdate,--'2018.07.01',
    'yyyy-mm-dd');*/ --trunc(sysdate); --记账日期
    V_AP_INV_LINE_IFC_TBL_C.DESCRIPTION :='应付' ||
    V_AP_INV_IFC_REC.Vendor_Name ||
    p_ap_no||'退货' ;-- cursor_ap_no.Rem; --'保险管/保险丝座/10A/磷青铜/镀镍/配套φ5*20mm/T=0.35mm/P=5.1mm/编带'; --发票行描述
    V_AP_INV_LINE_IFC_TBL_C.AMOUNT_INCLUDES_TAX_FLAG := 'N';
    V_AP_INV_LINE_IFC_TBL_C.TAX_CLASSIFICATION_CODE := '13%(外)'; --税分类代码
    V_AP_INV_LINE_IFC_TBL_C.LAST_UPDATED_BY := fnd_global.USER_ID;
    V_AP_INV_LINE_IFC_TBL_C.LAST_UPDATE_DATE := trunc(sysdate);
    V_AP_INV_LINE_IFC_TBL_C.LAST_UPDATE_LOGIN := fnd_global.USER_ID;
    V_AP_INV_LINE_IFC_TBL_C.CREATED_BY := fnd_global.USER_ID;
    V_AP_INV_LINE_IFC_TBL_C.CREATION_DATE := trunc(sysdate);
    V_AP_INV_LINE_IFC_TBL_C.RCV_TRANSACTION_ID := cursor_ap_no.transaction_id;
    V_AP_INV_LINE_IFC_TBL_C.PO_HEADER_ID := cursor_ap_no.PO_HEADER_ID;
    V_AP_INV_LINE_IFC_TBL_C.PO_LINE_ID := cursor_ap_no.PO_LINE_ID;
    V_AP_INV_LINE_IFC_TBL_C.PO_LINE_LOCATION_ID := cursor_ap_no.line_location_id;
    V_AP_INV_LINE_IFC_TBL_C.PO_RELEASE_ID := cursor_ap_no.PO_RELEASE_ID;
    V_AP_INV_LINE_IFC_TBL_C.ORG_ID := cursor_ap_no.org_id;
    V_AP_INV_LINE_IFC_TBL_C.INVENTORY_ITEM_ID := cursor_ap_no.item_id;
    V_AP_INV_LINE_IFC_TBL_C.UNIT_PRICE := v_price_diff; --cursor_ap_no.UP2;--up_agree;
    V_AP_INV_LINE_IFC_TBL_C.QUANTITY_INVOICED := cursor_ap_no.match_dsp;

    INSERT INTO AP_INVOICE_LINES_INTERFACE
    VALUES V_AP_INV_LINE_IFC_TBL_C;
    P_LINE_NUMBER := P_LINE_NUMBER + 1;

    end loop;

    commit;
    end;
    --品质扣款
    procedure insert_ap_invoices_cut_qty(p_ap_no varchar, p_number number) as
    cursor cur_ap(p_ap_no varchar2) is
    select mac.id transaction_id,
    null po_header_id,
    null po_line_id,
    null line_location_id,
    null PO_RELEASE_ID,
    b.org_id org_id,
    null item_id,
    mac.UP2,
    mac.match_dsp,
    mac.line_num,
    mac.match_amt_agree,
    mac.rem,
    mac.item_no
    FROM meg_ap_checklist mac, meg_ap_checklist_header b
    WHERE /*mac.receipt_num like 'CM%'
    and*/ mac.item_no in ( '索赔','折让','品质调整','超损扣款')
    and mac.match_dsp < 0
    and mac.ap_no = b.ap_no
    and mac.ap_no = p_ap_no;
    V_AP_INV_IFC_REC AP_INVOICES_INTERFACE%rowtype;
    V_AP_INV_LINE_IFC_TBL_C AP_INVOICE_LINES_INTERFACE%ROWTYPE; --发票行
    V_INVOICE_ID number := 0;
    V_INVOICE_LINE_ID NUMBER := 0;
    P_LINE_NUMBER NUMBER := 1;
    begin
    SELECT AP_INVOICES_INTERFACE_S.NEXTVAL INTO V_INVOICE_ID FROM DUAL;
    select vendor_site_id
    INTO V_AP_INV_IFC_REC.VENDOR_SITE_ID
    from (select itm,pha.vendor_site_id
    from MEG_AP_CHECKLIST mac, po_headers_all pha
    where pha.segment1 = mac.po_no
    and ap_no = p_ap_no
    order by itm)
    where rownum=1;

    --付款方式
    begin
    SELECT iepp.payment_method_code
    INTO V_AP_INV_IFC_REC.PAYMENT_METHOD_CODE
    FROM iby_payment_methods_vl ipmv
    , iby_ext_party_pmt_mthds iepp
    , iby_external_payees_all iepa
    WHERE ipmv.payment_method_code = iepp.payment_method_code(+)
    AND iepp.payment_flow = 'DISBURSEMENTS'
    AND NVL (ipmv.inactive_date, TRUNC (SYSDATE + 1)) > TRUNC (SYSDATE)
    AND iepp.payment_function = 'PAYABLES_DISB'
    AND iepp.ext_pmt_party_id = iepa.ext_payee_id
    AND iepa.org_id =137
    and iepp.primary_flag='Y'
    AND iepa.supplier_site_id = V_AP_INV_IFC_REC.VENDOR_SITE_ID;
    EXCEPTION
    WHEN OTHERS THEN
    V_AP_INV_IFC_REC.PAYMENT_METHOD_CODE := 'WIRE';
    end ;
    select mch.invoice_num || '-' || p_number,
    sum(mac.match_amt_agree),
    -- sum(mac.match_amt_agree),
    mch.org_id,
    pv.VENDOR_ID,
    pv.VENDOR_NAME,
    pv.SEGMENT1,
    pv.INVOICE_CURRENCY_CODE
    into V_AP_INV_IFC_REC.INVOICE_NUM,
    V_AP_INV_IFC_REC.INVOICE_AMOUNT,
    V_AP_INV_IFC_REC.ORG_ID,
    V_AP_INV_IFC_REC.VENDOR_ID,
    V_AP_INV_IFC_REC.Vendor_Name,
    V_AP_INV_IFC_REC.Vendor_Num,
    V_AP_INV_IFC_REC.INVOICE_CURRENCY_CODE
    from meg_ap_checklist_header mch, po_vendors pv, meg_ap_checklist mac
    where mch.ap_no = p_ap_no
    and mch.ap_no = mac.ap_no
    and mch.vendor_no = pv.SEGMENT1
    -- and mac.receipt_num like 'CM%'
    and mac.item_no in ( '索赔','折让','品质调整','超损扣款')
    and mac.match_dsp < 0
    group by mch.invoice_num || '-' || p_number,
    mch.org_id,
    pv.VENDOR_ID,
    pv.VENDOR_NAME,
    pv.SEGMENT1,
    pv.INVOICE_CURRENCY_CODE;
    V_AP_INV_IFC_REC.INVOICE_ID := V_INVOICE_ID; --发票ID
    V_AP_INV_IFC_REC.INVOICE_TYPE_LOOKUP_CODE := 'CREDIT'; --发票行类型
    V_AP_INV_IFC_REC.SOURCE := 'USE'; --发票来源
    V_AP_INV_IFC_REC.INVOICE_DATE := trunc(sysdate); /*TO_DATE(sysdate,--'2018.07.01',
    'yyyy-mm-dd');*/ --trunc(sysdate); --发票日期
    V_AP_INV_IFC_REC.CONTROL_AMOUNT := NULL;
    V_AP_INV_IFC_REC.EXCHANGE_RATE := NULL;
    V_AP_INV_IFC_REC.EXCHANGE_RATE_TYPE := NULL;
    V_AP_INV_IFC_REC.EXCHANGE_DATE := NULL;
    V_AP_INV_IFC_REC.TERMS_DATE := trunc(sysdate); /*TO_DATE(sysdate,--'2018.07.01',
    'yyyy-mm-dd');*/ -- trunc(sysdate); --条件日期
    V_AP_INV_IFC_REC.DESCRIPTION := '应付' ||
    V_AP_INV_IFC_REC.Vendor_Name ||
    p_ap_no||'品质扣款' ; --null; --备注
    V_AP_INV_IFC_REC.GROUP_ID := V_INVOICE_ID; --对账单处理批次
    -- V_AP_INV_IFC_REC.PAYMENT_METHOD_CODE := 'WIRE';
    V_AP_INV_IFC_REC.GL_DATE := trunc(sysdate); /*TO_DATE(sysdate,--'2018.07.01',
    'yyyy-mm-dd');*/ -- trunc(sysdate); --总账日期
    V_AP_INV_IFC_REC.CALC_TAX_DURING_IMPORT_FLAG := 'Y';
    V_AP_INV_IFC_REC.ADD_TAX_TO_INV_AMT_FLAG := 'Y';
    V_AP_INV_IFC_REC.LAST_UPDATE_DATE := trunc(sysdate);
    V_AP_INV_IFC_REC.LAST_UPDATED_BY := fnd_global.USER_ID;
    V_AP_INV_IFC_REC.LAST_UPDATE_LOGIN := fnd_global.LOGIN_ID;
    V_AP_INV_IFC_REC.CREATION_DATE := trunc(sysdate);
    V_AP_INV_IFC_REC.CREATED_BY := fnd_global.USER_ID;

    --付款条件,负债账户
    select ass.terms_id, gccc.code_combination_id
    into V_AP_INV_IFC_REC.TERMS_ID,
    V_AP_INV_IFC_REC.ACCTS_PAY_CODE_COMBINATION_ID
    from ap_suppliers ass,
    ap_supplier_sites_all assa,
    gl_code_combinations gccc,
    gl_code_combinations gccr
    where ass.vendor_id = assa.vendor_id
    and assa.accts_pay_code_combination_id = gccc.code_combination_id(+)
    and assa.prepay_code_combination_id = gccr.code_combination_id(+)
    and assa.org_id = V_AP_INV_IFC_REC.ORG_ID
    and ass.segment1 = V_AP_INV_IFC_REC.Vendor_Num
    and assa.vendor_site_id = V_AP_INV_IFC_REC.VENDOR_SITE_ID;

    INSERT INTO AP_INVOICES_INTERFACE VALUES V_AP_INV_IFC_REC; --插入发票
    for cursor_ap_no in cur_ap(p_ap_no) loop
    SELECT AP_INVOICE_LINES_INTERFACE_S.NEXTVAL
    INTO V_INVOICE_LINE_ID
    FROM DUAL;
    V_AP_INV_LINE_IFC_TBL_C.INVOICE_ID := V_INVOICE_ID; --发票ID
    V_AP_INV_LINE_IFC_TBL_C.INVOICE_LINE_ID := V_INVOICE_LINE_ID; --发票行ID
    V_AP_INV_LINE_IFC_TBL_C.LINE_NUMBER := P_LINE_NUMBER; --p_LINE_NUMBER; --发票行号
    V_AP_INV_LINE_IFC_TBL_C.LINE_TYPE_LOOKUP_CODE := 'ITEM'; --发票行类型
    V_AP_INV_LINE_IFC_TBL_C.AMOUNT := cursor_ap_no.MATCH_AMT_AGREE; --p_AMOUNT; --金额
    V_AP_INV_LINE_IFC_TBL_C.ACCOUNTING_DATE := trunc(sysdate); /*TO_DATE(sysdate,--'2018.07.01',
    'yyyy-mm-dd');*/ --trunc(sysdate); --记账日期
    V_AP_INV_LINE_IFC_TBL_C.DESCRIPTION := '应付' ||
    V_AP_INV_IFC_REC.Vendor_Name ||
    p_ap_no||cursor_ap_no.item_no;--'品质扣款' ;--cursor_ap_no.Rem; --'保险管/保险丝座/10A/磷青铜/镀镍/配套φ5*20mm/T=0.35mm/P=5.1mm/编带'; --发票行描述
    V_AP_INV_LINE_IFC_TBL_C.AMOUNT_INCLUDES_TAX_FLAG := 'N';
    V_AP_INV_LINE_IFC_TBL_C.TAX_CLASSIFICATION_CODE := '13%(外)'; --税分类代码
    V_AP_INV_LINE_IFC_TBL_C.LAST_UPDATED_BY := fnd_global.USER_ID;
    V_AP_INV_LINE_IFC_TBL_C.LAST_UPDATE_DATE := trunc(sysdate);
    V_AP_INV_LINE_IFC_TBL_C.LAST_UPDATE_LOGIN := fnd_global.USER_ID;
    V_AP_INV_LINE_IFC_TBL_C.CREATED_BY := fnd_global.USER_ID;
    V_AP_INV_LINE_IFC_TBL_C.CREATION_DATE := trunc(sysdate);
    V_AP_INV_LINE_IFC_TBL_C.RCV_TRANSACTION_ID := cursor_ap_no.transaction_id;
    V_AP_INV_LINE_IFC_TBL_C.PO_HEADER_ID := null; --cursor_ap_no.PO_HEADER_ID;
    V_AP_INV_LINE_IFC_TBL_C.PO_LINE_ID := null; --cursor_ap_no.PO_LINE_ID;
    V_AP_INV_LINE_IFC_TBL_C.PO_LINE_LOCATION_ID := null; --cursor_ap_no.line_location_id;
    V_AP_INV_LINE_IFC_TBL_C.PO_RELEASE_ID := null; -- cursor_ap_no.PO_RELEASE_ID;
    V_AP_INV_LINE_IFC_TBL_C.ORG_ID := 137; --cursor_ap_no.org_id;
    V_AP_INV_LINE_IFC_TBL_C.INVENTORY_ITEM_ID := null; --cursor_ap_no.item_id;
    V_AP_INV_LINE_IFC_TBL_C.UNIT_PRICE := cursor_ap_no.UP2; --up_agree;
    V_AP_INV_LINE_IFC_TBL_C.QUANTITY_INVOICED := cursor_ap_no.match_dsp;

    INSERT INTO AP_INVOICE_LINES_INTERFACE
    VALUES V_AP_INV_LINE_IFC_TBL_C;
    P_LINE_NUMBER := P_LINE_NUMBER + 1;
    end loop;
    commit;
    end;
    --无po 退货
    procedure insert_ap_invoices_no_po(p_ap_no varchar, p_number number) as
    cursor cur_ap(p_ap_no varchar2) is
    SELECT a.id transaction_id,
    null po_header_id,
    null po_line_id,
    null line_location_id,
    null PO_RELEASE_ID,
    b.org_id org_id,
    null item_id,
    a.UP2,
    a.match_dsp,
    a.line_num,
    a.match_amt_agree,
    a.rem
    FROM meg_ap_checklist a, meg_ap_checklist_header b
    WHERE b.AP_NO = p_ap_no
    and a.ap_no = b.ap_no
    AND RECEIPT_NUM = '无PO退货';

    V_AP_INV_IFC_REC AP_INVOICES_INTERFACE%rowtype;
    V_AP_INV_LINE_IFC_TBL_C AP_INVOICE_LINES_INTERFACE%ROWTYPE; --发票行
    V_INVOICE_ID number := 0;
    V_INVOICE_LINE_ID NUMBER := 0;
    P_LINE_NUMBER NUMBER := 1;
    begin
    SELECT AP_INVOICES_INTERFACE_S.NEXTVAL INTO V_INVOICE_ID FROM DUAL;
    select vendor_site_id
    INTO V_AP_INV_IFC_REC.VENDOR_SITE_ID
    from (select itm,pha.vendor_site_id
    from MEG_AP_CHECKLIST mac, po_headers_all pha
    where pha.segment1 = mac.po_no
    and ap_no = p_ap_no
    order by itm)
    where rownum=1;

    --付款方式
    begin
    SELECT iepp.payment_method_code
    INTO V_AP_INV_IFC_REC.PAYMENT_METHOD_CODE
    FROM iby_payment_methods_vl ipmv
    , iby_ext_party_pmt_mthds iepp
    , iby_external_payees_all iepa
    WHERE ipmv.payment_method_code = iepp.payment_method_code(+)
    AND iepp.payment_flow = 'DISBURSEMENTS'
    AND NVL (ipmv.inactive_date, TRUNC (SYSDATE + 1)) > TRUNC (SYSDATE)
    AND iepp.payment_function = 'PAYABLES_DISB'
    AND iepp.ext_pmt_party_id = iepa.ext_payee_id
    AND iepa.org_id =137
    and iepp.primary_flag='Y'
    AND iepa.supplier_site_id = V_AP_INV_IFC_REC.VENDOR_SITE_ID;
    EXCEPTION
    WHEN OTHERS THEN
    V_AP_INV_IFC_REC.PAYMENT_METHOD_CODE := 'WIRE';
    end ;
    select mch.invoice_num || '-' || p_number,
    sum(mac.match_amt_agree), --sum(mac.match_amt_agree),
    mch.org_id,
    pv.VENDOR_ID,
    pv.VENDOR_NAME,
    pv.SEGMENT1,
    pv.INVOICE_CURRENCY_CODE
    into V_AP_INV_IFC_REC.INVOICE_NUM,
    V_AP_INV_IFC_REC.INVOICE_AMOUNT,
    V_AP_INV_IFC_REC.ORG_ID,
    V_AP_INV_IFC_REC.VENDOR_ID,
    V_AP_INV_IFC_REC.Vendor_Name,
    V_AP_INV_IFC_REC.Vendor_Num,
    V_AP_INV_IFC_REC.INVOICE_CURRENCY_CODE
    from meg_ap_checklist_header mch, po_vendors pv, meg_ap_checklist mac
    where mch.ap_no = p_ap_no
    and mch.ap_no = mac.ap_no
    and mch.vendor_no = pv.SEGMENT1
    and mac.match_dsp < 0
    and mac.receipt_num = '无PO退货'
    group by mch.invoice_num || '-' || p_number,
    mch.org_id,
    pv.VENDOR_ID,
    pv.VENDOR_NAME,
    pv.SEGMENT1,
    pv.INVOICE_CURRENCY_CODE;
    V_AP_INV_IFC_REC.INVOICE_ID := V_INVOICE_ID; --发票ID
    V_AP_INV_IFC_REC.INVOICE_TYPE_LOOKUP_CODE := 'CREDIT'; --发票行类型
    V_AP_INV_IFC_REC.SOURCE := 'USE'; --发票来源
    V_AP_INV_IFC_REC.INVOICE_DATE := trunc(sysdate); /*TO_DATE(sysdate,--'2018.07.01',
    'yyyy-mm-dd');*/ --trunc(sysdate); --发票日期
    V_AP_INV_IFC_REC.CONTROL_AMOUNT := NULL;
    V_AP_INV_IFC_REC.EXCHANGE_RATE := NULL;
    V_AP_INV_IFC_REC.EXCHANGE_RATE_TYPE := NULL;
    V_AP_INV_IFC_REC.EXCHANGE_DATE := NULL;
    V_AP_INV_IFC_REC.TERMS_DATE := trunc(sysdate); /*TO_DATE(sysdate,--'2018.07.01',
    'yyyy-mm-dd');*/ -- trunc(sysdate); --条件日期
    V_AP_INV_IFC_REC.DESCRIPTION := '应付' ||
    V_AP_INV_IFC_REC.Vendor_Name
    || p_ap_no||'无PO退货'; --null; --备注
    V_AP_INV_IFC_REC.GROUP_ID := V_INVOICE_ID; --对账单处理批次
    --V_AP_INV_IFC_REC.PAYMENT_METHOD_CODE := 'WIRE';
    V_AP_INV_IFC_REC.GL_DATE := trunc(sysdate); /*TO_DATE(sysdate,--'2018.07.01',
    'yyyy-mm-dd'); */ -- trunc(sysdate); --总账日期
    --V_AP_INV_IFC_REC.ORG_ID := 137; --组织
    V_AP_INV_IFC_REC.CALC_TAX_DURING_IMPORT_FLAG := 'Y';
    V_AP_INV_IFC_REC.ADD_TAX_TO_INV_AMT_FLAG := 'Y';
    V_AP_INV_IFC_REC.LAST_UPDATE_DATE := trunc(sysdate);
    V_AP_INV_IFC_REC.LAST_UPDATED_BY := fnd_global.USER_ID;
    V_AP_INV_IFC_REC.LAST_UPDATE_LOGIN := fnd_global.LOGIN_ID;
    V_AP_INV_IFC_REC.CREATION_DATE := trunc(sysdate);
    V_AP_INV_IFC_REC.CREATED_BY := fnd_global.USER_ID;

    --付款条件,负债账户
    select ass.terms_id, gccc.code_combination_id
    into V_AP_INV_IFC_REC.TERMS_ID,
    V_AP_INV_IFC_REC.ACCTS_PAY_CODE_COMBINATION_ID
    from ap_suppliers ass,
    ap_supplier_sites_all assa,
    gl_code_combinations gccc,
    gl_code_combinations gccr
    where ass.vendor_id = assa.vendor_id
    and assa.accts_pay_code_combination_id = gccc.code_combination_id(+)
    and assa.prepay_code_combination_id = gccr.code_combination_id(+)
    and assa.org_id = V_AP_INV_IFC_REC.ORG_ID
    and ass.segment1 = V_AP_INV_IFC_REC.Vendor_Num
    and assa.vendor_site_id = V_AP_INV_IFC_REC.VENDOR_SITE_ID;
    INSERT INTO AP_INVOICES_INTERFACE VALUES V_AP_INV_IFC_REC; --插入发票
    for cursor_ap_no in cur_ap(p_ap_no) loop
    SELECT AP_INVOICE_LINES_INTERFACE_S.NEXTVAL
    INTO V_INVOICE_LINE_ID
    FROM DUAL;
    V_AP_INV_LINE_IFC_TBL_C.INVOICE_ID := V_INVOICE_ID; --发票ID
    V_AP_INV_LINE_IFC_TBL_C.INVOICE_LINE_ID := V_INVOICE_LINE_ID; --发票行ID
    V_AP_INV_LINE_IFC_TBL_C.LINE_NUMBER := P_LINE_NUMBER; --p_LINE_NUMBER; --发票行号
    V_AP_INV_LINE_IFC_TBL_C.LINE_TYPE_LOOKUP_CODE := 'ITEM'; --发票行类型
    V_AP_INV_LINE_IFC_TBL_C.AMOUNT := cursor_ap_no.MATCH_AMT_AGREE; --p_AMOUNT; --金额
    V_AP_INV_LINE_IFC_TBL_C.ACCOUNTING_DATE := trunc(sysdate); /*TO_DATE(sysdate,--'2018.07.01',
    'yyyy-mm-dd');*/ --trunc(sysdate); --记账日期
    V_AP_INV_LINE_IFC_TBL_C.DESCRIPTION :='应付' ||
    V_AP_INV_IFC_REC.Vendor_Name
    || p_ap_no||'无PO退货';-- cursor_ap_no.Rem; --'保险管/保险丝座/10A/磷青铜/镀镍/配套φ5*20mm/T=0.35mm/P=5.1mm/编带'; --发票行描述
    V_AP_INV_LINE_IFC_TBL_C.AMOUNT_INCLUDES_TAX_FLAG := 'N';
    V_AP_INV_LINE_IFC_TBL_C.TAX_CLASSIFICATION_CODE := '13%(外)'; --税分类代码
    V_AP_INV_LINE_IFC_TBL_C.LAST_UPDATED_BY := fnd_global.USER_ID;
    V_AP_INV_LINE_IFC_TBL_C.LAST_UPDATE_DATE := trunc(sysdate);
    V_AP_INV_LINE_IFC_TBL_C.LAST_UPDATE_LOGIN := fnd_global.USER_ID;
    V_AP_INV_LINE_IFC_TBL_C.CREATED_BY := fnd_global.USER_ID;
    V_AP_INV_LINE_IFC_TBL_C.CREATION_DATE := trunc(sysdate);
    V_AP_INV_LINE_IFC_TBL_C.RCV_TRANSACTION_ID := cursor_ap_no.transaction_id;
    V_AP_INV_LINE_IFC_TBL_C.PO_HEADER_ID := cursor_ap_no.PO_HEADER_ID;
    V_AP_INV_LINE_IFC_TBL_C.PO_LINE_ID := cursor_ap_no.PO_LINE_ID;
    V_AP_INV_LINE_IFC_TBL_C.PO_LINE_LOCATION_ID := cursor_ap_no.line_location_id;
    V_AP_INV_LINE_IFC_TBL_C.PO_RELEASE_ID := cursor_ap_no.PO_RELEASE_ID;
    V_AP_INV_LINE_IFC_TBL_C.ORG_ID := cursor_ap_no.org_id;
    V_AP_INV_LINE_IFC_TBL_C.INVENTORY_ITEM_ID := cursor_ap_no.item_id;
    V_AP_INV_LINE_IFC_TBL_C.UNIT_PRICE := cursor_ap_no.UP2; --up_agree;
    V_AP_INV_LINE_IFC_TBL_C.QUANTITY_INVOICED := cursor_ap_no.match_dsp;
    INSERT INTO AP_INVOICE_LINES_INTERFACE
    VALUES V_AP_INV_LINE_IFC_TBL_C;
    P_LINE_NUMBER := P_LINE_NUMBER + 1;
    end loop;
    commit;
    end;
    --检查发票有没有最终关闭
    procedure get_last_close_by_ap_no(p_ap_no varchar,
    P_IMPORT_STATUS OUT varchar) as
    cursor CUR_CLOSE IS
    select rsh.receipt_num || '第' || rsl.line_num || '行' receipt_line
    from MEG_AP_CHECKLIST MAC,
    po_line_locations_all pll,
    rcv_shipment_headers rsh,
    rcv_shipment_lines rsl
    where pll.line_location_id = rsl.po_line_location_id
    and rsh.shipment_header_id = rsl.shipment_header_id
    and pll.closed_code = 'FINALLY CLOSED'
    and rsh.receipt_num = MAC.RECEIPT_NUM
    and rsl.line_num = MAC.LINE_NUM
    and MAC.AP_NO = p_ap_no;
    --po退货
    cursor get_no_po is
    select mac.receipt_num || '第' || mac.line_num || '行' no_po_line
    from rcv_transactions rt, MEG_AP_CHECKLIST MAC
    where exists
    (select 1
    from rcv_transactions rts
    where rts.transaction_type = 'RETURN TO VENDOR'
    START WITH rts.transaction_id = rt.transaction_id
    connect by prior rts.transaction_id = rts.parent_transaction_id)
    and rt.transaction_id = MAC.TRANSACTION_ID
    AND ap_no = p_ap_no;
    --

    l_count number := 0; --最终关闭
    l_count_re number := 0; --退货的笔数
    begin
    --最终关闭的判断
    select count(*)
    into l_count
    from MEG_AP_CHECKLIST MAC,
    po_line_locations_all pll,
    rcv_shipment_headers rsh,
    rcv_shipment_lines rsl
    where pll.line_location_id = rsl.po_line_location_id
    and rsh.shipment_header_id = rsl.shipment_header_id
    and pll.closed_code = 'FINALLY CLOSED'
    and rsh.receipt_num = MAC.RECEIPT_NUM
    and rsl.line_num = MAC.LINE_NUM
    and MAC.AP_NO = p_ap_no; --'530986-1706Z';
    if l_count > 0 then
    for cur_close_status in CUR_CLOSE loop
    P_IMPORT_STATUS := '存在最终关闭的T6单号有';
    P_IMPORT_STATUS := P_IMPORT_STATUS || cur_close_status.receipt_line || ',';
    end loop;
    else
    P_IMPORT_STATUS := '1';
    end if;
    select count(*)
    into l_count_re --MAC.*--mac.ap_no,mac.receipt_num,mac.line_num,mac.po_no
    from rcv_transactions rt, MEG_AP_CHECKLIST MAC
    where exists
    (select 1
    from rcv_transactions rts
    where rts.transaction_type = 'RETURN TO VENDOR'
    START WITH rts.transaction_id = rt.transaction_id
    connect by prior rts.transaction_id = rts.parent_transaction_id)
    and rt.transaction_id = MAC.TRANSACTION_ID
    AND ap_no = p_ap_no; --'530873-1803Z';
    -- return P_IMPORT_STATUS;
    if l_count_re > 0 then
    for cur_no_po in get_no_po loop
    P_IMPORT_STATUS := '存在退货的T6单号有';
    P_IMPORT_STATUS := P_IMPORT_STATUS || cur_no_po.no_po_line;
    end loop;
    else
    P_IMPORT_STATUS := '1';
    end if;
    end;
    end pkg_ap_check_by_po;

  • 相关阅读:
    一些性能查询的SQL 备忘
    informatica powercenter学习笔记(LookUp 使用)
    BIEE使用技巧
    Linux 系统中用户切换
    手动将自定制的WebPart部署到 SharePoint 2010 中
    C# Process运行cmd命令的异步回显
    Union和Union all的区别
    C#输入输出重定向
    c# 其他技术学习
    Oracle查看所有用户
  • 原文地址:https://www.cnblogs.com/lanminghuai/p/11051558.html
Copyright © 2011-2022 走看看