- Jan 11 Wed 2017 22:01
-
有關鎖定某些技術文章閱讀需為好友權限問題.
- May 20 Sun 2018 21:59
-
Oracle Form 直接列印 PDF Report (Report Direct Print) form & Report 10/11/12
- Apr 25 Wed 2018 20:30
-
EBS close current period Single order
- Mar 29 Wed 2017 15:41
-
Oracle database 12.2 new future memo
- Feb 28 Tue 2017 13:48
-
E-Business R12 LDAP SSO Integration customization
- Feb 14 Tue 2017 08:54
-
Oracle 資料庫 QRCODE Package 功能說明
- Oct 18 Tue 2016 02:13
-
Oracle Logminer 查找物件的修改紀錄
- Nov 17 Tue 2015 23:34
-
EBS OM 關閉系統預設稅則 ,建立客制預設稅則
1.建立客制預設稅則function ex:XXOM_TAXASSIGN_PKG.OE_ORDER_LINE_DEF_TAX
/*預設客製參數
FUNCTION OE_ORDER_LINE_DEF_TAX (
p_database_object_name IN VARCHAR2,
p_attribute_code IN VARCHAR2
)
主要使用的ont package record
--package record value
--header
ont_header_def_hdlr.g_record
--line
ont_line_def_hdlr.g_record
*/
/*2015/10/07 Nolem : 標準訂單tax_code : default dule 呼叫用,抓取預設tax code*/
FUNCTION OE_ORDER_LINE_DEF_TAX (p_database_object_name IN VARCHAR2, p_attribute_code IN VARCHAR2)
RETURN VARCHAR2
AS
l_get VARCHAR2 (1) := 'Y';
l_tax_code VARCHAR2 (50);
l_error_msg VARCHAR2 (2000);
l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
L_ERR_TXNTYPE_MSG VARCHAR2 (2000);
L_SUBJECT VARCHAR2 (200) := 'Oracle Alert - 訂單客戶無法取得稅率通知!';
L_BODY VARCHAR2 (2000);
L_MAIL VARCHAR2 (2000) := 'nolem@mail.yens.com.tw';
BEGIN
IF ont_header_def_hdlr.g_record.ORDER_CATEGORY_CODE = 'RETURN' AND (INTERNAL_CHECK_RMA_REF (l_tax_code)) THEN
l_get := 'N'; --不可重抓,退貨型態參考 , l_tax_code 回填原出貨訂單tax_code
ELSE
l_get := 'Y'; --無參考或參考訂單不是一般訂單,可重抓
END IF;
L_BODY :=
'開發人員:Nolem 2015/10/28 Modified'
|| CHR (10)
|| '程式代碼:XXOM_TAXASSIGN_PKG.OE_ORDER_LINE_DEF_TAX'
|| CHR (10)
|| 'Header ATTRIBUTE20:'
|| ont_header_def_hdlr.g_record.ATTRIBUTE20
|| CHR (10)
|| 'Header ORDER_NUMBER:'
|| ont_header_def_hdlr.g_record.ORDER_NUMBER
|| CHR (10)
|| 'Header HEADER_ID:'
|| ont_header_def_hdlr.g_record.HEADER_ID
|| CHR (10)
|| 'Header SOLD_TO_ORG_ID:'
|| ont_header_def_hdlr.g_record.SOLD_TO_ORG_ID
|| CHR (10)
|| 'Line LINE_NUMBER:'
|| ont_line_def_hdlr.g_record.LINE_NUMBER
|| CHR (10)
|| 'Line LINE_ID:'
|| ont_line_def_hdlr.g_record.LINE_ID
|| CHR (10)
|| 'Line LINE_CATEGORY_CODE:'
|| ont_line_def_hdlr.g_record.LINE_CATEGORY_CODE
|| CHR (10)
|| 'Line SCHEDULE_SHIP_DATE:'
|| to_char(ont_line_def_hdlr.g_record.SCHEDULE_SHIP_DATE,'YYYY/MM/DD HH24:MI:SS') ;
IF ont_line_def_hdlr.g_record.INVENTORY_ITEM_ID IS NOT NULL AND l_get = 'Y' THEN
GET_CUXID_TAX_CODE (ont_header_def_hdlr.g_record.SOLD_TO_ORG_ID, l_tax_code, l_error_msg);
IF l_tax_code IS NULL THEN
--modify by Nolem 20151018
L_BODY := L_BODY || chr(10) ||
'!!!!!錯誤!!!!!!:此訂單客戶無法取得稅則!' || chr(10) || '觸發時間:' ||
to_char(sysdate,'yyyy/mm/dd hh24:mis:ss') ;
XXFND_MAIL_PKG.EMAIL (P_ALERT_NAME => 'XXOM_TAXASSIGN_PKG.OE_ORDER_LINE_DEF_TAX',
P_ALERT_DESC => L_SUBJECT,
P_SUBJECT => L_SUBJECT,
P_TO => L_MAIL,
P_MESSAGE => L_BODY);
END IF;
END IF;
RETURN l_tax_code;
EXCEPTION
WHEN OTHERS THEN
IF l_debug_level > 0 THEN
oe_debug_pub.ADD ('Error in ORDER_LINE_DEF_TAX_CODE');
oe_debug_pub.ADD ('Error :' || SUBSTR (SQLERRM, 1, 200));
END IF;
L_BODY := L_BODY || chr(10) || '!!!!!發生未知錯誤!!!!!!:' || SQLERRM ;
XXFND_MAIL_PKG.EMAIL (P_ALERT_NAME => 'XXOM_TAXASSIGN_PKG.OE_ORDER_LINE_DEF_TAX',
P_ALERT_DESC => L_SUBJECT || SQLERRM ,
P_SUBJECT => L_SUBJECT|| SQLERRM ,
P_TO => L_MAIL,
P_MESSAGE => L_BODY);
RETURN NULL;
END OE_ORDER_LINE_DEF_TAX;
2.關閉系統預設稅則及相關連動解決客製稅則帶入被覆蓋問題
a. 關閉稅則預設
b. 建立客製預設稅則
3.OM 預設欄位連動相依 關閉稅則與需求日/定價日 , 稅則與倉儲 相依關閉 , 新增料號與稅則相依連動啟用
ONT_TOP/patch/115/sql/OEXEDEPB.pls 及 DB Package : OE_Dependencies_Extn
進入修改OEXEDEPB.pls 和OE_Dependencies_Extn package 並變更增加版本號
版本變更
Spec
/* $Header: OEXEDEPS.pls 120.1001 2015/10/09 11:33:12 Nolem noship $ */
Body
/* $Header: OEXEDEPB.pls 120.1001 2015/10/09 11:33:12 Nolem noship $ */
在Body
-- ELSIF p_entity_code = OE_GLOBALS.G_ENTITY_LINE THEN 明細行區段 增加連結關閉定義
--nolem add for tax_code by request_date connect with schedule_ship_date change .2015/10/02
x_extn_dep_tbl(l_index).source_attribute := OE_LINE_UTIL.G_REQUEST_DATE;
x_extn_dep_tbl(l_index).dependent_attribute := OE_LINE_UTIL.G_TAX;
x_extn_dep_tbl(l_index).enabled_flag := 'N';
l_index := l_index + 1;
--nolem add for tax_code by ship_from_org change . 2015/10/02
x_extn_dep_tbl(l_index).source_attribute := OE_LINE_UTIL.G_SHIP_FROM_ORG;
x_extn_dep_tbl(l_index).dependent_attribute := OE_LINE_UTIL.G_TAX;
x_extn_dep_tbl(l_index).enabled_flag := 'N';
l_index := l_index + 1;
--nolem add for tax_code by G_PRICING_DATE change . 2015/10/09
x_extn_dep_tbl(l_index).source_attribute := OE_LINE_UTIL.G_PRICING_DATE;
x_extn_dep_tbl(l_index).dependent_attribute := OE_LINE_UTIL.G_TAX;
x_extn_dep_tbl(l_index).enabled_flag := 'N';
l_index := l_index + 1;
--nolem add for enabled tax_code default value by item changed . 2015/10/09
x_extn_dep_tbl(l_index).source_attribute := OE_LINE_UTIL.G_INVENTORY_ITEM;
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;
- Jun 09 Tue 2015 12:22
-
EBS SQL function 取客戶承受風險金額
--參考別人用的標準API,自己 改成SQL可呼叫的function .
CREATE OR REPLACE FUNCTION APPS.XXGET_CUSTOMER_EXPOSURE(I_ORG_ID IN NUMBER , I_CUSTOMER_ID IN NUMBER , I_SITE_ID IN NUMBER default null , I_LIMIT_CURR_CODE IN VARCHAR2 , I_CREDIT_CHECK_RULE_ID IN NUMBER DEFAULT 1041 )
RETURN number
AS
/********************************************************************/
/* Function name : APPS.XXGET_CUSTOMER_EXPOSURE */
/* Author : Nolem */
/* Creation : 2015/06/09 */
/* purporse: 透過OE_CREDIT_ENGINE_GRP.GET_CUSTOMER_EXPOSURE, */
/* 抓出標準信用額度承受風險後回傳 */
/* I_ORG_ID =>OU ID */
/* I_CUSTOMER_ID => Customer Account ID */
/* I_SITE_ID => Site Use ID ,default null for accout level */
/* I_LIMIT_CURR_CODE => Currency Code */
/* I_CREDIT_CHECK_RULE_ID => Credit_Check_Rule_ID(REDIT_CHECK_RULES ) Default BOOK id */
/* Retun number => account or site level exposure amount , */
/* if error occured then return -99999999 */
/* 使用範例SQL
/* SELECT org_id,
SITE_USE_ID,
CUST_ACCT_SITE_ID,
CUST_ACCOUNT_ID,
ACCOUNT_NAME,
ACCOUNT_NUMBER,
SALES_DEPARTMENT,
S_CURRENCY_CODE2,
S_OVERALL_CREDIT_LIMIT2,
CASE
WHEN S_OVERALL_CREDIT_LIMIT1 > 0 THEN S_CURRENCY_CODE1
WHEN S_OVERALL_CREDIT_LIMIT2 > 0 THEN S_CURRENCY_CODE2
WHEN S_OVERALL_CREDIT_LIMIT3 > 0 THEN S_CURRENCY_CODE3
WHEN S_OVERALL_CREDIT_LIMIT4 > 0 THEN S_CURRENCY_CODE4
WHEN S_OVERALL_CREDIT_LIMIT5 > 0 THEN S_CURRENCY_CODE5
ELSE 'TWD'
END CURRENCY_CODE,
apps.XXGET_CUSTOMER_EXPOSURE (I_ORG_ID => org_id,
I_CUSTOMER_ID => CUST_ACCOUNT_ID,
I_SITE_ID => SITE_USE_ID,
I_LIMIT_CURR_CODE => CASE
WHEN S_OVERALL_CREDIT_LIMIT1 > 0 THEN S_CURRENCY_CODE1
WHEN S_OVERALL_CREDIT_LIMIT2 > 0 THEN S_CURRENCY_CODE2
WHEN S_OVERALL_CREDIT_LIMIT3 > 0 THEN S_CURRENCY_CODE3
WHEN S_OVERALL_CREDIT_LIMIT4 > 0 THEN S_CURRENCY_CODE4
WHEN S_OVERALL_CREDIT_LIMIT5 > 0 THEN S_CURRENCY_CODE5
ELSE 'TWD'
END)
EXPOSURE_AMT
FROM XX_CUSTOMER_QUICK_VIEW
WHERE ACCOUNT_NUMBER in ('1330','28755')
*/
/***************************************************************/
L_CUST_TOTAL_EXPOSURE NUMBER;
P_CREDIT_CHECK_RULE_ID NUMBER;
V_MSG_DATA VARCHAR2 (4000);
L_RETURN_STATUS VARCHAR2 (30);
l_user_id number:=null;
l_resp_id number:=null;
pragma autonomous_transaction;
BEGIN
apps.MO_GLOBAL.INIT ('ONT');
l_user_id := nvl(fnd_global.user_id,1090); --1090 => nolem
l_resp_id := nvl(fnd_global.resp_id,21623);--21623); --21623 => ont supuer user resp
FND_GLOBAL.APPS_INITIALIZE (USER_ID => l_user_id,
RESP_ID => l_resp_id,
RESP_APPL_ID => 660 --ont appl_id
);
MO_GLOBAL.SET_POLICY_CONTEXT ('S', I_ORG_ID);
OE_CREDIT_ENGINE_GRP.GET_CUSTOMER_EXPOSURE
(P_CUSTOMER_ID => I_CUSTOMER_ID, -- Customer Account ID
P_SITE_ID => I_SITE_ID, -- Site Use ID
P_LIMIT_CURR_CODE => I_LIMIT_CURR_CODE, -- Currency Code
P_CREDIT_CHECK_RULE_ID => I_CREDIT_CHECK_RULE_ID, -- credit_Check_Rule_ID
X_TOTAL_EXPOSURE => L_CUST_TOTAL_EXPOSURE,
X_RETURN_STATUS => L_RETURN_STATUS
);
IF L_RETURN_STATUS = FND_API.G_RET_STS_SUCCESS
THEN
-- DBMS_OUTPUT.PUT_LINE ( 'L_CUST_TOTAL_EXPOSURE ' || L_CUST_TOTAL_EXPOSURE);
rollback;
return L_CUST_TOTAL_EXPOSURE;
-- COMMIT;
ELSIF L_RETURN_STATUS IS NULL
THEN
rollback;
return null;
ELSE
DBMS_OUTPUT.PUT_LINE ('Failed: ' || V_MSG_DATA);
FOR I IN 1 .. OE_MSG_PUB.COUNT_MSG
LOOP
V_MSG_DATA := OE_MSG_PUB.GET (P_MSG_INDEX => I, P_ENCODED => 'F');
DBMS_OUTPUT.PUT_LINE (I || ') ' || V_MSG_DATA);
END LOOP;
ROLLBACK;
return -99999999;
END IF;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.PUT_LINE ('Error is ' || SQLCODE || '---' || SQLERRM);
rollback;
return -99999999;
END;
CREATE OR REPLACE FUNCTION APPS.XXGET_CUSTOMER_EXPOSURE(I_ORG_ID IN NUMBER , I_CUSTOMER_ID IN NUMBER , I_SITE_ID IN NUMBER default null , I_LIMIT_CURR_CODE IN VARCHAR2 , I_CREDIT_CHECK_RULE_ID IN NUMBER DEFAULT 1041 )
RETURN number
AS
/********************************************************************/
/* Function name : APPS.XXGET_CUSTOMER_EXPOSURE */
/* Author : Nolem */
/* Creation : 2015/06/09 */
/* purporse: 透過OE_CREDIT_ENGINE_GRP.GET_CUSTOMER_EXPOSURE, */
/* 抓出標準信用額度承受風險後回傳 */
/* I_ORG_ID =>OU ID */
/* I_CUSTOMER_ID => Customer Account ID */
/* I_SITE_ID => Site Use ID ,default null for accout level */
/* I_LIMIT_CURR_CODE => Currency Code */
/* I_CREDIT_CHECK_RULE_ID => Credit_Check_Rule_ID(REDIT_CHECK_RULES ) Default BOOK id */
/* Retun number => account or site level exposure amount , */
/* if error occured then return -99999999 */
/* 使用範例SQL
/* SELECT org_id,
SITE_USE_ID,
CUST_ACCT_SITE_ID,
CUST_ACCOUNT_ID,
ACCOUNT_NAME,
ACCOUNT_NUMBER,
SALES_DEPARTMENT,
S_CURRENCY_CODE2,
S_OVERALL_CREDIT_LIMIT2,
CASE
WHEN S_OVERALL_CREDIT_LIMIT1 > 0 THEN S_CURRENCY_CODE1
WHEN S_OVERALL_CREDIT_LIMIT2 > 0 THEN S_CURRENCY_CODE2
WHEN S_OVERALL_CREDIT_LIMIT3 > 0 THEN S_CURRENCY_CODE3
WHEN S_OVERALL_CREDIT_LIMIT4 > 0 THEN S_CURRENCY_CODE4
WHEN S_OVERALL_CREDIT_LIMIT5 > 0 THEN S_CURRENCY_CODE5
ELSE 'TWD'
END CURRENCY_CODE,
apps.XXGET_CUSTOMER_EXPOSURE (I_ORG_ID => org_id,
I_CUSTOMER_ID => CUST_ACCOUNT_ID,
I_SITE_ID => SITE_USE_ID,
I_LIMIT_CURR_CODE => CASE
WHEN S_OVERALL_CREDIT_LIMIT1 > 0 THEN S_CURRENCY_CODE1
WHEN S_OVERALL_CREDIT_LIMIT2 > 0 THEN S_CURRENCY_CODE2
WHEN S_OVERALL_CREDIT_LIMIT3 > 0 THEN S_CURRENCY_CODE3
WHEN S_OVERALL_CREDIT_LIMIT4 > 0 THEN S_CURRENCY_CODE4
WHEN S_OVERALL_CREDIT_LIMIT5 > 0 THEN S_CURRENCY_CODE5
ELSE 'TWD'
END)
EXPOSURE_AMT
FROM XX_CUSTOMER_QUICK_VIEW
WHERE ACCOUNT_NUMBER in ('1330','28755')
*/
/***************************************************************/
L_CUST_TOTAL_EXPOSURE NUMBER;
P_CREDIT_CHECK_RULE_ID NUMBER;
V_MSG_DATA VARCHAR2 (4000);
L_RETURN_STATUS VARCHAR2 (30);
l_user_id number:=null;
l_resp_id number:=null;
pragma autonomous_transaction;
BEGIN
apps.MO_GLOBAL.INIT ('ONT');
l_user_id := nvl(fnd_global.user_id,1090); --1090 => nolem
l_resp_id := nvl(fnd_global.resp_id,21623);--21623); --21623 => ont supuer user resp
FND_GLOBAL.APPS_INITIALIZE (USER_ID => l_user_id,
RESP_ID => l_resp_id,
RESP_APPL_ID => 660 --ont appl_id
);
MO_GLOBAL.SET_POLICY_CONTEXT ('S', I_ORG_ID);
OE_CREDIT_ENGINE_GRP.GET_CUSTOMER_EXPOSURE
(P_CUSTOMER_ID => I_CUSTOMER_ID, -- Customer Account ID
P_SITE_ID => I_SITE_ID, -- Site Use ID
P_LIMIT_CURR_CODE => I_LIMIT_CURR_CODE, -- Currency Code
P_CREDIT_CHECK_RULE_ID => I_CREDIT_CHECK_RULE_ID, -- credit_Check_Rule_ID
X_TOTAL_EXPOSURE => L_CUST_TOTAL_EXPOSURE,
X_RETURN_STATUS => L_RETURN_STATUS
);
IF L_RETURN_STATUS = FND_API.G_RET_STS_SUCCESS
THEN
-- DBMS_OUTPUT.PUT_LINE ( 'L_CUST_TOTAL_EXPOSURE ' || L_CUST_TOTAL_EXPOSURE);
rollback;
return L_CUST_TOTAL_EXPOSURE;
-- COMMIT;
ELSIF L_RETURN_STATUS IS NULL
THEN
rollback;
return null;
ELSE
DBMS_OUTPUT.PUT_LINE ('Failed: ' || V_MSG_DATA);
FOR I IN 1 .. OE_MSG_PUB.COUNT_MSG
LOOP
V_MSG_DATA := OE_MSG_PUB.GET (P_MSG_INDEX => I, P_ENCODED => 'F');
DBMS_OUTPUT.PUT_LINE (I || ') ' || V_MSG_DATA);
END LOOP;
ROLLBACK;
return -99999999;
END IF;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.PUT_LINE ('Error is ' || SQLCODE || '---' || SQLERRM);
rollback;
return -99999999;
END;
- Mar 03 Tue 2015 11:14
-
Oracle EBS R12 UTF8 鍵盤說明亂碼解法
- Oct 06 Mon 2014 22:25
-
zx_party_tax_profile_pkg.sync_tax_reg_num
如果各位升級EBS 後,修改客戶或供應商資料遇到
1." This record in table HZ_PARTIES cannot be locked as it has been updated by another user"
或
2.'Tax Registration Number is already in use for party type: Third Party, Party Name: XXX'
這些情形,且確定資料根本沒重複且也沒人在更新中...Tax Registration Number 手動進去一筆一筆改
可以修正這問題,可是客戶資料可是一大堆啊,叫我一個一個改我哪有那時間...
已經跟原廠吵很久了,只會一直叫我提供資料或做一堆datafix 都沒用...浪費一堆時間..
我花了一些時間測試,找到可以用這種方式執行同步, 有遇到問題的可以參考喔~~
PS:我方目前未啟用稅捐,也沒有Tax Registration Number 可用~
但之前升級後~很多客戶的Tax Registration Number 都變成'NULL' 或' '
這樣的字眼~然後就造成以上的異常了~
1." This record in table HZ_PARTIES cannot be locked as it has been updated by another user"
或
2.'Tax Registration Number is already in use for party type: Third Party, Party Name: XXX'
這些情形,且確定資料根本沒重複且也沒人在更新中...Tax Registration Number 手動進去一筆一筆改
可以修正這問題,可是客戶資料可是一大堆啊,叫我一個一個改我哪有那時間...
已經跟原廠吵很久了,只會一直叫我提供資料或做一堆datafix 都沒用...浪費一堆時間..
我花了一些時間測試,找到可以用這種方式執行同步, 有遇到問題的可以參考喔~~
PS:我方目前未啟用稅捐,也沒有Tax Registration Number 可用~
但之前升級後~很多客戶的Tax Registration Number 都變成'NULL' 或' '
這樣的字眼~然後就造成以上的異常了~
- Oct 03 Fri 2014 23:25
-
oracle 檢查時間區間重複簡單的處理方式
--結尾加上1秒,是因為此function endtime=start_time 視為未重複,
因此稍作手腳給他變一下可檢查到endtime=start_time
--重複 --X
SELECT * FROM DUAL
WHERE
(to_date('20140917','yyyymmdd') ,to_date('20140918','yyyymmdd')+1/86400)
OVERLAPS
(to_date('20140916','yyyymmdd'),to_date('20140921','yyyymmdd')+1/86400)
--沒重複--null
SELECT * FROM DUAL
WHERE
(to_date('20140901','yyyymmdd') ,to_date('20140915','yyyymmdd')+1/86400)
OVERLAPS
(to_date('20140916','yyyymmdd'),to_date('20140921','yyyymmdd')+1/86400)





