|
8#
楼主 |
发表于 2007-12-19 16:17
|
只看该作者
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查看结果吧 |
|