2013年7月31日 星期三

Oracle ERP R12. Profile - OE: AutoPrice (自動更新Unit Selling Price時機設定)

經同仁反應,訂單的單價常會不明原因自動被更改掉,而user都不知道.
經查發現原因如下:

因為訂單會指定price list ,故只要訂單項次有調整任何一欄位(unit selling price欄除外),則系統會再自動從price list中取回目前最新的設定.
而該行為的主要原因是控制在一Profile => OE: AutoPrice , 該Profile的值預設為空值所導致的關係.

以下是該Profile設定的說明 : (本人測試得來的結果)
空值 => 不論是Entered 或是 Booked狀態皆會自動取回最新的price list值
Entry => 只有在訂單狀態為Entered 時才會自動取回最新的price list值
Booking => 不論狀態如何皆不會自動取回最新的price list值.

Ps :
以上純為本人測試之結果,若讀者測試後有任何心得請不吝指教,以該本人更新正確之資訊~

<<2013/08/04 不具名的網友 補充以下說明>>
通常業務流程而言, 應該定義為N (calculate_price_flag) , 避免訂單預定後仍可能因為手動或API變更而改變售價 
*reference Doc ID 134326.1
· If it’s set to ‘Y’, both pricing and freight charge calculations are done.
· If it’s set to ‘P’, only the freight charge calculation is done.
'P' also indicates that modifiers assigned to a pricing phase
where freeze override is enabled could also be applied.
· If it’s set to ‘N’, neither pricing nor freight charge is calculated.

2013年7月30日 星期二

Oracle ERP R12. 如何透過Personalize功能呼叫另一form來回傳值. Get another form's result value (user personalize) .

狀況假設 :
A-Form(Rcv_transaction) 要呼叫另一客制form (B-Form),B-Form運算後產生一結果回轉A-Form

Step 1. 建立一function用來取回B-Formresult
:
create or replace function HPX_WEN_TEST_F(I_KEY VARCHAR2) return varchar2 is
  T_Result VARCHAR2(100);
  T_EXIT VARCHAR2(1) := 'N';
  T_EXIT_TIME DATE := SYSDATE+5/(24*60);
begin 
  WHILE T_EXIT = 'N' LOOP
    SELECT DECODE(COUNT(*),
                  0,'N',
                  'Y'),
           MAX(HC.VALUE_2)
      INTO T_EXIT,
           T_RESULT
      FROM HPX_CONFIG_T HC 假設該tableresult
     WHERE HC.KEY_ID = 'TEST'
       AND HC.VALUE_1 = I_KEY;  --Key,用來確認所抓取的資料無誤
    --
    IF T_EXIT_TIME <= SYSDATE THEN
      T_EXIT := 'Y'; --逾時離開以避免無窮迴圈
    END IF;
  END LOOP;
 
  return(T_Result);
end HPX_WEN_TEST_F;

Step 2. A-FormWHEN-NEW-FORM-INSTANCE 加入一LOCAL VARIABLE  KEY的宣告,
MENU BUTTON的宣告.
:





Step 3. 設定上述MENU BUTTON的功能行為.
:


埋入Debug用的訊息

將游標固定至等定ITEM
<重要>該步驟是為了A-Form重新取得控制取時只會觸發 WHEN-NEW-ITEM-INSTANCE 所以要知道是那一ITEM會被觸發


呼叫B-Form
注意 : 這裡的HPXINVF004是隨便設的,並不會真的寫入Result table ,這裡只是要模擬說明而已,假設會寫入Step 1Result table


Step 4. 設定A-Form重新取得控制權後的行為動作.並由判斷KEY是否有值來確認是否要進入該程序
注意 : B-Form返回A-Form時只會觸發 WHEN-NEW-ITEM-INSTANCE , 故上步驟會先GO_ITEM.


呼叫Step 1. 的Function來取回Result Table的值


清除Key,以避免誤動作