zoukankan      html  css  js  c++  java
  • 价目表更新API程序

    procedure update_qp_list is
    cursor cur_price is
    SELECT ID,
    TRIM(OU_NAME) OU_NAME, --价目表
    TRIM(SEGMENT1) SEGMENT1, --物料
    TRIM(OPERAND) OPERAND --更新价格
    FROM cux_qp_list_temp;
    l_count number := 0;
    V_ERR_MESSAGE VARCHAR2(20000);
    CHECK_EXCEPTION EXCEPTION;
    L_OU_NAME VARCHAR2(50);
    L_INDEX number;
    p_list_header_id NUMBER;
    p_inventory_item_id NUMBER;
    P_list_line_id NUMBER;
    P_product_attr_value NUMBER;
    P_pricing_attribute_id NUMBER;
    p_product_uom_code VARCHAR2(50);
    P_start_date_active DATE;
    P_end_date_active DATE;
    x_return_status VARCHAR2(10);
    x_msg_count NUMBER(10);
    x_msg_data VARCHAR2(2000);
    l_price_list_rec qp_price_list_pub.price_list_rec_type;
    l_price_list_line_tbl qp_price_list_pub.price_list_line_tbl_type;
    l_pricing_attr_tbl qp_price_list_pub.pricing_attr_tbl_type;
    x_price_list_rec qp_price_list_pub.price_list_rec_type;
    x_price_list_val_rec qp_price_list_pub.price_list_val_rec_type;
    x_price_list_line_tbl qp_price_list_pub.price_list_line_tbl_type;
    x_price_list_line_val_tbl qp_price_list_pub.price_list_line_val_tbl_type;
    x_qualifiers_tbl qp_qualifier_rules_pub.qualifiers_tbl_type;
    x_qualifiers_val_tbl qp_qualifier_rules_pub.qualifiers_val_tbl_type;
    x_pricing_attr_tbl qp_price_list_pub.pricing_attr_tbl_type;
    x_pricing_attr_val_tbl qp_price_list_pub.pricing_attr_val_tbl_type;
    begin
    --清除之前错误信息
    delete from CUX_IMPORT_DATA_ERROR where COLUMN_VALUES='价目表';
    commit;
    begin
    select COUNT(DISTINCT OU_NAME) into l_count from cux_qp_list_temp;
    if l_count > 1 then
    V_ERR_MESSAGE := '-导入的价目表存在多个';

    RAISE CHECK_EXCEPTION;
    elsif l_count = 0 then
    V_ERR_MESSAGE := '-导入的价目表不存在';
    RAISE CHECK_EXCEPTION;
    else
    select OU_NAME
    into L_OU_NAME
    from cux_qp_list_temp
    WHERE ROWNUM = 1;
    begin
    SELECT qll.list_header_id
    into p_list_header_id
    FROM qp_list_headers_tl qll
    WHERE NAME = L_OU_NAME
    and language = 'ZHS';
    EXCEPTION
    WHEN NO_DATA_FOUND THEN
    V_ERR_MESSAGE := '-价目表【' || L_OU_NAME || '】不存在-';
    RAISE CHECK_EXCEPTION;
    end;
    end if;
    end;
    begin
    for rec_price in cur_price loop
    --判断物料是否存在
    begin
    select msi.inventory_item_id
    into p_inventory_item_id
    from mtl_system_items_b msi
    where msi.segment1 = rec_price.segment1
    and msi.organization_id = 82;
    EXCEPTION
    WHEN NO_DATA_FOUND THEN
    V_ERR_MESSAGE := '-物料【' || rec_price.segment1 || '】不存在-';
    RAISE CHECK_EXCEPTION;
    end;
    if rec_price.operand is null then
    V_ERR_MESSAGE := '-更新价格【' || rec_price.operand || '】不能为空-';
    RAISE CHECK_EXCEPTION;
    end if;
    ---获取价目表中该物料的信息
    begin
    SELECT --QLL.list_header_id,
    QLL.list_line_id,
    QLL.product_uom_code,
    QLL.start_date_active,
    QLL.end_date_active,
    QLL.product_attr_value,
    QLL.pricing_attribute_id
    into P_list_line_id,
    P_product_uom_code,
    P_start_date_active,
    P_end_date_active,
    P_product_attr_value,
    P_pricing_attribute_id
    FROM Qp_List_Lines_v QLL
    WHERE QLL.list_header_id = p_list_header_id --价目表头ID
    AND QLL.product_attr_val_disp = rec_price.segment1; --物料
    EXCEPTION
    WHEN NO_DATA_FOUND THEN
    V_ERR_MESSAGE := '-物料【' || rec_price.segment1 || '】在价目表中不存在-';
    RAISE CHECK_EXCEPTION;
    end;
    ----
    L_INDEX := cur_price%ROWCOUNT; --行
    BEGIN

    l_price_list_rec.list_header_id := p_list_header_id; --35129;--p_list_header_id; -- 业务实体 + 价目表名称 确定select * from qp_list_headers_tl where name ='株洲力慧价目表' and language='ZHS'
    l_price_list_rec.list_type_code := 'PRL'; -- 固定
    l_price_list_rec.operation := qp_globals.g_opr_update; --更新--固定

    l_price_list_line_tbl(L_INDEX).list_header_id := p_list_header_id; --35129; -- 业务实体 + 价目表名称 确定
    l_price_list_line_tbl(L_INDEX).list_line_id := P_list_line_id; --33348; --fnd_api.g_miss_num;
    l_price_list_line_tbl(L_INDEX).list_line_type_code := 'PLL'; -- 固定
    l_price_list_line_tbl(L_INDEX).operation := qp_globals.g_opr_update; -- qp_globals.g_opr_create; -- 固定
    l_price_list_line_tbl(L_INDEX).operand := rec_price.operand; --更新的价格; -- p_operand; -- 值
    l_price_list_line_tbl(L_INDEX).arithmetic_operator := 'UNIT_PRICE'; -- 固定

    l_price_list_line_tbl(L_INDEX).start_date_active := P_start_date_active; --p_start_active_date; -- 直接传入 起始日期
    l_price_list_line_tbl(L_INDEX).end_date_active := P_end_date_active; -- 直接传入 截止日期

    l_price_list_line_tbl(L_INDEX).organization_id := NULL; -- 直接传空
    l_price_list_line_tbl(L_INDEX).primary_uom_flag := 'Y'; --p_primary_uom_flag; --------依据 主要单位 直接传入
    l_price_list_line_tbl(L_INDEX).end_date_active := P_end_date_active; --直接传入varchar 截止日期

    l_pricing_attr_tbl(L_INDEX).pricing_attribute_id := P_pricing_attribute_id; -- 18161; --select pricing_attribute_id from qp_pricing_attributes where list_line_id=33348--18161
    l_pricing_attr_tbl(L_INDEX).list_line_id := P_list_line_id; --33348;
    l_pricing_attr_tbl(L_INDEX).product_attribute_context := 'ITEM'; -- 固定
    l_pricing_attr_tbl(L_INDEX).product_attribute := 'PRICING_ATTRIBUTE1'; --固定
    l_pricing_attr_tbl(L_INDEX).product_attr_value := p_inventory_item_id; --物料ID 6446; -- p_inventory_item_id; -- 传入 inventory_item_id
    l_pricing_attr_tbl(L_INDEX).product_uom_code := P_product_uom_code; -- p_product_uom_code; --直接传入 单位
    l_pricing_attr_tbl(L_INDEX).excluder_flag := 'N'; -- ? 临时固定
    l_pricing_attr_tbl(L_INDEX).attribute_grouping_no := 1; --固定
    l_pricing_attr_tbl(L_INDEX).price_list_line_index := 1; --固定
    l_pricing_attr_tbl(L_INDEX).operation := qp_globals.g_opr_update; -- 固定

    qp_price_list_pub.process_price_list(p_api_version_number => 1,
    p_init_msg_list => fnd_api.g_true,
    p_return_values => fnd_api.g_false,
    p_commit => fnd_api.g_false,
    x_return_status => x_return_status,
    x_msg_count => x_msg_count,
    x_msg_data => x_msg_data,
    p_price_list_rec => l_price_list_rec,
    p_price_list_line_tbl => l_price_list_line_tbl,
    p_pricing_attr_tbl => l_pricing_attr_tbl,
    x_price_list_rec => x_price_list_rec,
    x_price_list_val_rec => x_price_list_val_rec,
    x_price_list_line_tbl => x_price_list_line_tbl,
    x_qualifiers_tbl => x_qualifiers_tbl,
    x_qualifiers_val_tbl => x_qualifiers_val_tbl,
    x_pricing_attr_tbl => x_pricing_attr_tbl,
    x_pricing_attr_val_tbl => x_pricing_attr_val_tbl,
    x_price_list_line_val_tbl => x_price_list_line_val_tbl);
    IF x_return_status = fnd_api.g_ret_sts_success THEN
    -- dbms_output.put_line('x_return_status:' || x_return_status);
    -- dbms_output.put_line('更新成功');
    commit;
    ELSE
    V_ERR_MESSAGE := '更新失败!';
    RAISE CHECK_EXCEPTION;
    END IF;
    end;
    ---
    end loop;
    EXCEPTION
    when CHECK_EXCEPTION then
    INSERT INTO CUX_IMPORT_DATA_ERROR
    (COLUMN_VALUES,ERR_MESSAGE)
    VALUES
    ('价目表',V_ERR_MESSAGE);
    end ;
    end;

  • 相关阅读:
    高并发下缓存失效问题及解决方案
    行为型设计模式
    Redisson
    行为型设计模式
    Docker 安装 Elasticsearch 和 Kibana
    行为型设计模式
    C# 使用 WebBrowser 实现 HTML 转图片功能
    .NET 程序下锐浪报表 (Grid++ Report) 的绿色发布指南
    .NET 程序员的 Playground :LINQPad
    Windows 服务器上的 WordPress 站点优化笔记
  • 原文地址:https://www.cnblogs.com/lanminghuai/p/14043402.html
Copyright © 2011-2022 走看看