智財保護,為甚原本公開改鎖定好友呢? 自己想吧~我不多說了!
有需求請mail 給我或留言吧.

Nolem 發表在 痞客邦 留言(0) 人氣()

2018-05-20_220455.png
Version 1.0.0.5
有興趣的客戶,請與我聯繫.

Nolem 發表在 痞客邦 留言(8) 人氣()


make sure order line closed
 

Nolem 發表在 痞客邦 留言(0) 人氣()

K文件看倒不錯的enhance , memo 一下~
1.

Nolem 發表在 痞客邦 留言(0) 人氣()


   
   

Nolem 發表在 痞客邦 留言(0) 人氣()


 
 

Nolem 發表在 痞客邦 留言(5) 人氣()


基本上redo log = archive log 的前身,就是說當備份機制啟動時,redolog 切換到下一個時就會同時產生一個archivelog
Online redolog

Nolem 發表在 痞客邦 留言(0) 人氣()

5.jpg
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;

Nolem 發表在 痞客邦 留言(0) 人氣()

--參考別人用的標準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;

Nolem 發表在 痞客邦 留言(0) 人氣()

2015-03-03_111530
不知道是什嗎?
看圖:
 
 

Nolem 發表在 痞客邦 留言(0) 人氣()

如果各位升級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' 或'                '
這樣的字眼~然後就造成以上的異常了~

Nolem 發表在 痞客邦 留言(0) 人氣()


--結尾加上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)

Nolem 發表在 痞客邦 留言(0) 人氣()

Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。