如何使用OM中default rule根據subinventory設定tax code
文章轉貼自: 這裡
SO line中Tax code根據subinventory進行設置的方法:
1. 進responsibility: Order Management
2. 進Setup>Rules>Defaulting
Application:Order Management
Entity:Order Line
Attribute:Tax Code
然後點Default Rules…按鈕
3.增加一個defaulting condition:always
在下方default sourcing rules中增加一個source type:PL/SQL API,Default Source/value中輸入客制的Package名稱和function名稱
package舉例:
CREATE OR REPLACE PACKAGE BODY DEF_TAX_PKG AS FUNCTION DEF_TAX_FCN ( p_database_object_name IN VARCHAR2, p_attribute_code IN VARCHAR2 ) RETURN VARCHAR2 AS l_org_id NUMBER; l_subinventory VARCHAR2 (100); l_tax_code VARCHAR2 (100); l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level; BEGIN IF ont_line_def_hdlr.g_record.org_id IS NOT NULL AND ont_line_def_hdlr.g_record.subinventory IS NOT NULL THEN l_org_id := ont_line_def_hdlr.g_record.org_id; l_subinventory := ont_line_def_hdlr.g_record.subinventory; IF l_org_id = 288 AND ( l_subinventory = 'RTSGMINFG' OR ( l_subinventory LIKE 'JDSG%' AND ( l_subinventory NOT LIKE 'JDSG%SIN' AND l_subinventory NOT LIKE 'JDSGCPBSTG' ) ) ) THEN l_tax_code := '0'; ELSE l_tax_code := NULL; END IF; END IF; RETURN l_tax_code; EXCEPTION WHEN OTHERS THEN IF l_debug_level > 0 THEN oe_debug_pub.ADD ('Error in DEF_TAX_FNC'); oe_debug_pub.ADD ('Error :' || SUBSTR (SQLERRM, 1, 200)); END IF; RETURN NULL; END DEF_TAX_FCN; END; |
4.點菜單tools/create defaulting handler package
5.建立dependency
更改$ONT_TOP/patch/115/sql/OEXEDEPB.pls
增加內容:
IF p_entity_code = OE_GLOBALS.G_ENTITY_LINE THEN x_extn_dep_tbl(l_index).source_attribute := OE_LINE_UTIL.G_SUBINVENTORY; x_extn_dep_tbl(l_index).dependent_attribute := OE_LINE_UTIL.G_TAX; x_extn_dep_tbl(l_index).enabled_flag := 'Y'; l_index := l_index+1; END IF; |
然後執行package
6.設置完成,進sales order查看結果