• 采购接收


    procedure check_interface(errbuf OUT VARCHAR2, retcode OUT VARCHAR2) is
    cursor c1 is
    select ji.rowid row_id,ji.*
    from jw_po_imes_erp_interface ji
    where ji.flag = 'Y';


    v_num1 number;
    v_num2 number;
    begin
    DBMS_LOCK.SLEEP(5); --为防止程序成功结束,但是interface暂未删除导致
    for v1 in c1 loop
    begin
    select count(*)
    into v_num1
    from rcv_transactions_interface rti
    where rti.interface_source_code = 'IMES_TO_ERP'
    AND rti.interface_source_line_id = v1.interface_id;

    select count(*)
    into v_num2
    from rcv_transactions rt
    where rt.attribute15 = v1.interface_id;

    if (v_num1 = 0) and (v_num2 = 2) then--标准接口表数据清掉了,同时标准表也有数据了代表成功
    update jw_po_imes_erp_interface j
    set j.flag = 'S' --更新成s代表 已经接收成功
    where j.rowid = v1.row_id;
    commit;
    end if;
    exception
    when others then
    null;
    end;
    end loop;

    insert into jw_po_imes_erp_interface_his----成功的数据备份插入临时表
    select * from jw_po_imes_erp_interface where flag = 'S';
    commit;
    delete from jw_po_imes_erp_interface jp
    where jp.flag = 'S'
    and exists (select 1
    from jw_po_imes_erp_interface ji
    where ji.interface_id = jp.interface_id);
    commit;
    null;
    end;

    procedure MAIN_NEW(errbuf OUT VARCHAR2, retcode OUT VARCHAR2) is
    /*create by jam huang 20160623
    因为采购接收方式由原来的标准接收改为直接入库,so 之前的代码不能用了*/
    cursor c_select is
    select j.rowid row_id,
    ood.ORGANIZATION_ID,
    pla.item_id,
    trim(j.item_number) item_number,
    J.QUANTITY * decode(j.uom_code,'KPS',1000,'KPCS',1000,1) PRIMARY_QUANTITY,
    pha.po_header_id,
    pla.po_line_id,
    pha.Authorization_Status
    from jw_po_imes_erp_interface j,
    org_organization_definitions ood,
    po_headers_all pha,
    po_lines_all pla
    where trim(j.po_number) = pha.segment1
    and pha.po_header_id = pla.po_header_id
    and pla.line_num = j.po_line_number
    and pha.org_id = ood.OPERATING_UNIT
    and j.flag is null;

    cursor c_header is
    select distinct pha.vendor_id,pha.vendor_site_id,pha.org_id,jp.comments
    from jw_po_imes_erp_interface jp
    ,po_headers_all pha
    where jp.po_number = pha.segment1
    and jp.flag = 'C';

    cursor c_line(p_vendor_id number,p_vendor_site_id number,p_org_id number,p_comment varchar2) is
    select j.rowid row_id,
    pha.po_header_id,
    pla.po_line_id,
    PLA.ITEM_ID,
    pha.vendor_id,
    pha.vendor_site_id,
    OOD.ORGANIZATION_ID,
    j.interface_id,--接口表的id,记录下后面好查找
    J.SUBINVENTORY,
    j.quantity,--数量
    j.uom_code,--单位
    j.user_name,--imes操作的人
    j.delivery_number,--交货项次
    j.delivery_no, --交货单号
    j.delivery_po --客户po单号
    from jw_po_imes_erp_interface j,
    po_headers_all pha,
    po_lines_all pla,
    org_organization_definitions ood,
    mtl_system_items_b msib
    where trim(j.po_number) = pha.segment1
    and pha.po_header_id = pla.po_header_id
    and pla.line_num = j.po_line_number
    and trim(j.item_number) = msib.segment1
    and msib.inventory_item_id = pla.item_id
    and ood.OPERATING_UNIT = pla.org_id
    and msib.organization_id = ood.ORGANIZATION_ID
    and pha.vendor_id = p_vendor_id
    and pha.vendor_site_id = p_vendor_site_id
    and pha.org_id = p_org_id
    and j.flag = 'C';

    V_NUM NUMBER;
    V_NUM1 NUMBER;
    tl_rcv_transactions_interface rcv_transactions_interface%rowtype;
    tl_rcv_headers_interface rcv_headers_interface%rowtype;--header
    ln_request_id NUMBER;
    ln_acct_period_id NUMBER;
    V_ERROR_MESSAGE VARCHAR2(100);
    V_PO_LINE_ID NUMBER;
    V_UNRCV_QUANTITY NUMBER;
    lb_success BOOLEAN DEFAULT TRUE;
    lv_phase VARCHAR2(100);
    lv_status VARCHAR2(100);
    lv_dev_phase VARCHAR2(100);
    lv_dev_status VARCHAR2(100);
    lv_message VARCHAR2(2000);
    L_ERROR_MESSAGE VARCHAR2(2000);
    L_STATUS NUMBER;
    r_j exception;
    begin
    SELECT COUNT(*)
    INTO V_NUM
    FROM jw_po_imes_erp_interface JP
    WHERE JP.FLAG IS NULL;
    IF V_NUM = 0 THEN --没有新数据就退出
    RETURN;
    END IF;

    ------------防呆
    for v_select in c_select loop
    begin
    select count(*)-------防呆 gl and po期间
    into v_num1
    from GL_PERIOD_STATUSES grs
    where grs.set_of_books_id = 2021
    and grs.closing_status = 'O'
    AND grs.application_id in (101,201)
    and trunc(SYSDATE) BETWEEN grs.start_date AND
    grs.end_date;
    if v_num1 <> 2 then
    V_ERROR_MESSAGE := 'GL OR PO期间没有打开';
    raise r_j;
    end if;

    BEGIN-------防呆,组织期间
    SELECT oap.acct_period_id
    INTO ln_acct_period_id
    FROM org_acct_periods oap
    WHERE oap.organization_id = v_select.ORGANIZATION_ID
    AND oap.open_flag = 'Y'
    AND trunc(SYSDATE) BETWEEN oap.period_start_date AND
    oap.schedule_close_date;
    EXCEPTION
    WHEN no_data_found THEN
    V_ERROR_MESSAGE := '组织期间没有打开';
    raise r_j;
    END;

    IF v_select.Authorization_Status <> 'APPROVED' THEN
    V_ERROR_MESSAGE := '采购订单未审批';
    raise r_j;
    END IF;

    select count(*)
    into v_num1
    from mtl_system_items_b msib
    where msib.segment1 = v_select.item_number
    and msib.inventory_item_id = v_select.item_id
    and msib.organization_id = v_select.organization_id;
    if v_num1 = 0 then
    V_ERROR_MESSAGE := '采购订单行与料号对应不一致';
    raise r_j;
    end if;

    select plla.po_line_id,
    SUM((plla.quantity - plla.quantity_received) *
    decode(plla.unit_meas_lookup_code, 'KPCS', 1000, 1))
    INTO V_PO_LINE_ID, V_UNRCV_QUANTITY
    from po_line_locations_all plla
    where plla.po_header_id = v_select.po_header_id
    and plla.po_line_id = v_select.po_line_id
    GROUP BY plla.po_line_id;

    IF v_select.Primary_Quantity > V_UNRCV_QUANTITY THEN
    V_ERROR_MESSAGE := '数量大于未接收的数量';
    raise r_j;
    END IF;

    update jw_po_imes_erp_interface jp
    set jp.flag = 'C'
    WHERE JP.ROWID = v_select.Row_Id;
    COMMIT;
    exception
    when r_j then
    update jw_po_imes_erp_interface jp
    set jp.flag = 'E',
    JP.ERROR_MESSAGE = V_ERROR_MESSAGE
    WHERE JP.ROWID = v_select.Row_Id;
    COMMIT;

    end;
    end loop;
    ------------防呆
    for v_header in c_header loop
    begin
    select po.rcv_headers_interface_s.NEXTVAL
    into tl_rcv_headers_interface.header_interface_id
    from dual;

    select po.rcv_interface_groups_s.NEXTVAL
    into tl_rcv_headers_interface.group_id
    from dual;

    select ood.ORGANIZATION_Id
    into tl_rcv_headers_interface.Ship_To_Organization_Id
    from org_organization_definitions ood
    where ood.OPERATING_UNIT = v_header.org_id;

    tl_rcv_headers_interface.processing_status_code := 'PENDING';
    tl_rcv_headers_interface.receipt_source_code := 'VENDOR';
    tl_rcv_headers_interface.transaction_type := 'NEW';
    tl_rcv_headers_interface.expected_receipt_date := sysdate;
    tl_rcv_headers_interface.validation_flag := 'Y';
    tl_rcv_headers_interface.vendor_id := v_header.vendor_id;
    tl_rcv_headers_interface.vendor_site_id := v_header.vendor_site_id;
    tl_rcv_headers_interface.CREATION_DATE := SYSDATE;
    tl_rcv_headers_interface.CREATED_BY := fnd_profile.VALUE('user_id');
    tl_rcv_headers_interface.LAST_UPDATE_DATE := SYSDATE;
    tl_rcv_headers_interface.LAST_UPDATED_BY := fnd_profile.VALUE('user_id');
    tl_rcv_headers_interface.LAST_UPDATE_LOGIN := NULL;
    tl_rcv_headers_interface.comments := v_header.comments;
    INSERT INTO rcv_headers_interface VALUES tl_rcv_headers_interface;

    for v_line in c_line(v_header.vendor_id,v_header.vendor_site_id,v_header.org_id,v_header.comments) loop
    begin

    select rcv_transactions_interface_s.nextval
    into tl_rcv_transactions_interface.interface_transaction_id
    from dual;
    tl_rcv_transactions_interface.subinventory := v_line.SUBINVENTORY;
    tl_rcv_transactions_interface.quantity := v_line.QUANTITY;
    tl_rcv_transactions_interface.group_id := tl_rcv_headers_interface.group_id;
    tl_rcv_transactions_interface.transaction_type := 'RECEIVE';--'RECEIVE';
    tl_rcv_transactions_interface.transaction_date := SYSDATE;
    tl_rcv_transactions_interface.processing_status_code := 'PENDING';
    tl_rcv_transactions_interface.processing_mode_code := 'BATCH';
    tl_rcv_transactions_interface.transaction_status_code := 'PENDING';
    -- tl_rcv_transactions_interface.category_id := 1582;
    --tl_rcv_transactions_interface.unit_of_measure := 'PCS';
    --tl_rcv_transactions_interface.primary_unit_of_measure := 'PCS';
    -- tl_rcv_transactions_interface.interface_source_code := 'RCV';
    select decode(v_line.uom_code,'KPCS','KPS','KPS','KPS','PCS')
    into tl_rcv_transactions_interface.uom_code
    from dual;
    tl_rcv_transactions_interface.validation_flag := 'Y';
    tl_rcv_transactions_interface.item_id := v_line.ITEM_ID;
    -- tl_rcv_transactions_interface.item_description := 'Switch IC,RT9711CGB,2.5~5.5V,80mΩ, 1.5A/0.6A High-Side Power Switches with Flag,SOT23-5,0D95_3X3X1,-40~+85,SMT,LF,Richtek';
    --tl_rcv_transactions_interface.uom_code := 'PCS';
    tl_rcv_transactions_interface.auto_transact_code := 'DELIVER';
    tl_rcv_transactions_interface.receipt_source_code := 'VENDOR';
    tl_rcv_transactions_interface.to_organization_id := v_line.ORGANIZATION_ID;
    -- tl_rcv_transactions_interface.routing_header_id := 3;
    --tl_rcv_transactions_interface.routing_step_id := 1;
    tl_rcv_transactions_interface.source_document_code := 'PO';
    tl_rcv_transactions_interface.destination_type_code := 'INVENTORY';
    /* select DECODE(SUBSTR(tl_rcv_transactions_interface.subinventory,
    2,
    1),
    '2',
    143,
    '1',
    142,
    143)
    into tl_rcv_transactions_interface.location_id
    from dual;*/
    tl_rcv_transactions_interface.location_id := 142;
    tl_rcv_transactions_interface.deliver_to_location_id := tl_rcv_transactions_interface.location_id;
    -- tl_rcv_transactions_interface.subinventory := tl_rcv_transactions_interface.subinventory;
    tl_rcv_transactions_interface.expected_receipt_date := SYSDATE;
    tl_rcv_transactions_interface.destination_context := 'INVENTORY';
    tl_rcv_transactions_interface.vendor_id := v_header.vendor_id;
    tl_rcv_transactions_interface.vendor_site_id := v_header.Vendor_Site_Id;
    tl_rcv_transactions_interface.po_header_id := v_line.po_header_id;
    tl_rcv_transactions_interface.po_line_id := v_line.po_line_id;
    -- tl_rcv_transactions_interface.po_line_location_id := 103689;
    -- tl_rcv_transactions_interface.po_distribution_id := 103322;
    --- tl_rcv_transactions_interface.oe_order_header_id := v_line.header_id;
    -- tl_rcv_transactions_interface.oe_order_line_id := v_line.order_line_id;
    ---- tl_rcv_transactions_interface.customer_id := tl_rcv_headers_interface.customer_id;
    tl_rcv_transactions_interface.header_interface_id := tl_rcv_headers_interface.header_interface_id;
    tl_rcv_transactions_interface.last_update_date := SYSDATE;
    tl_rcv_transactions_interface.last_updated_by := fnd_profile.VALUE('user_id');--fnd_global.user_id;
    tl_rcv_transactions_interface.creation_date := SYSDATE;
    tl_rcv_transactions_interface.created_by := fnd_profile.VALUE('user_id');--fnd_global.user_id;
    tl_rcv_transactions_interface.last_update_login := NULL;--fnd_global.login_id;

    tl_rcv_transactions_interface.interface_source_code := 'IMES_TO_ERP';
    tl_rcv_transactions_interface.interface_source_line_id := v_line.INTERFACE_ID;

    tl_rcv_transactions_interface.attribute1 := v_line.DELIVERY_NUMBER;
    tl_rcv_transactions_interface.attribute4 := v_line.DELIVERY_NO;
    tl_rcv_transactions_interface.attribute2 := v_line.DELIVERY_PO;
    tl_rcv_transactions_interface.attribute15 := v_line.INTERFACE_ID;------为了后面好检查是否接收成功

    insert into rcv_transactions_interface values tl_rcv_transactions_interface;
    COMMIT;

    UPDATE JW_PO_IMES_ERP_INTERFACE JP
    SET JP.FLAG = 'Y'
    WHERE JP.ROWID = v_line.ROW_ID;
    COMMIT;

    null;
    exception
    when OTHERS then
    UPDATE JW_PO_IMES_ERP_INTERFACE JP
    SET JP.FLAG = 'F'
    WHERE JP.ROWID = v_line.ROW_ID;
    COMMIT;
    end;
    end loop;
    null;
    exception
    when others then
    null;
    end;
    end loop;

    ------------提交系统标准的请求
    ln_request_id := fnd_request.submit_request(application => 'PO'
    ,program => 'RVCTP'
    ,sub_request => FALSE
    ,argument1 => 'BATCH'--v_split.OPERATING_UNIT
    ,argument2 => null--tl_rcv_headers_interface.group_id--v_split.order_source_id
    ,argument3 => NULL--v_split.orig_sys_document_ref
    ,argument4 => ''
    ,argument5 => ''
    ,argument6 => ''
    ,argument7 => ''
    ,argument8 => ''
    ,argument9 => ''
    ,argument10 => ''
    ,argument11 => ''
    ,argument12 => ''
    ,argument13 => ''
    ,argument14 => ''
    ,argument15 => '');
    commit;
    if ln_request_id <> 0 then
    lb_success := fnd_concurrent.wait_for_request(request_id => ln_request_id
    ,INTERVAL => 5
    ,phase => lv_phase
    ,status => lv_status
    ,dev_phase => lv_dev_phase
    ,dev_status => lv_dev_status
    ,message => lv_message);

    if lb_success AND lv_dev_status = 'NORMAL' THEN
    check_interface(L_ERROR_MESSAGE, L_STATUS);
    end if;
    end if;
    null;
    end;

  • 相关阅读:
    29. LDAP Authentication(LDAP身份验证)
    28. Pre-Authentication Scenarios(预认证场景)
    27. Domain Object Security (ACLs)(域对象安全)
    26. Expression-Based Access Control(基于表达式的访问控制)
    24. Authorization Architecture(授权架构)
    Part V. Authorization(授权)
    23. WebSocket Security(网络套接字安全)
    springmvc中使用文件下载功能
    springmvc中使用文件上传功能
    springmvc中ModelAttribute注解应用在参数中
  • 原文地址:https://www.cnblogs.com/shuihaya/p/15293686.html
Copyright © 2020-2023  润新知