Oracle寄售功能 價格客制化

前言: 用oracle R12的寄售功能的時候,碰到了一個很麻煩的問題:價格抓取的問題。 由于這個問題導致寄售功能在公司一直用不好,庫存報表基本都需要他們人工出(自己算每個月每種價格的產品的進出存)。 請教了別的公司的EBS同事,加上自己的實際解決邏輯的考

前言:

用Oracle R12的寄售功能的時候,碰到了一個很麻煩的問題:價格抓取的問題。

由于這個問題導致寄售功能在公司一直用不好,庫存報表基本都需要他們人工出(自己算每個月每種價格的產品的進出存)。

請教了別的公司的EBS同事,加上自己的實際解決邏輯的考慮,終于都將問題給解決了,現在總結一下解決的思路,有類似需求的朋友可以參考一下。

由于機密性的考慮,開發的源代碼就不共享了,希望理解哈。

一、問題提出

首先,對標準的寄售功能大概說明:

下一攬子PO(BPA)à下標準POà標準PO接收入庫à領料等動作(消耗供應商庫存)à所有權轉移(轉移的單價取BPA的(分段)價格)à產生應付(應付的價格取BPA的價格)

標準的寄售功能不能滿足的核心問題點:

標準的寄售功能,做消耗的時候,價格都是抓一攬子PO(BPA)行的價格。而實際上,業務部門希望做消耗的時候,抓的價格應該是實際入庫的標準PO行的價格(每次接收都是不一樣的價格,這樣子更加合理)。

同理,傳到應付的價格也應該是標準PO行的價格。

就這個價格的問題,需要客制化。

二、問題分析和解決

(一)? 客制化邏輯:

核心邏輯是料號啟用批次管理,每次接收入庫都新增一個批次,這個批次就是從頭到尾跟蹤物料消耗價格的依據。

舉個例子:

料號A下了一攬子PO:BPA1,行價格是1元。

接著料號A用標準PO:SPO1,行價格是1.2元,入庫入1000個,批次LOT001。

然后料號A用標準PO:SPO2,行價格是1.5元,入庫入2000個,批次LOT002。

如果是直接用標準的寄售功能,在料號A消耗的時候,做所有權轉移等物料事務處理的價格都是1元。

應收的價格也是1元。

客制修改后,可以實現的效果:

料號A消耗的時候,因為料號A啟用批次管理,則其必須挑選一個消耗的批次。

如果挑選的是批次LOT001,則所有權轉移的價格(交易成本)是1.2元,傳到應付的價格也是1.2元。

如果挑選的是批次LOT002,則所有權轉移的價格(交易成本)是1.5元,傳到應付的價格也是1.5元。

不同的入庫批次,消耗的價格是完全可以分開的。

(二)? 程序實現過程:

主要的開發點是要修改系統在做雜發(或者庫存轉移)的時候,需要針對消耗寄售的庫存部分做定制修改。

大概過程:

例如User是做雜發領料。

1每過賬一行(準備做交易的時候),先判斷該行是否一定走寄售的流程(是否會自動發生所有權轉移)。

由于,料號A的庫存,在雜發畫面是供應商庫存和本公司庫存是混合在一起了,按照優先消耗本公司庫存的嚴則,所以要首先判斷是否是完全屬于寄售的庫存的交易,或者完全屬于XYG庫存的交易。

舉個例子,物料A,庫存共有5000個;其中本公司庫存2000個,供應商庫存3000個。

如果發料
如果發料>2000個,則提示錯誤并禁止其發料。如果允許User這樣子操作,程序邏輯很難走了,因為寄售的交易的價格是標準PO的價格,而非寄售交易的價格應該是走系統標準成本(我這里用的是移動平均成本)。一筆物料交易不可能有2個成本。

由于交易是按照組織+庫別+貨位+料號+批次來進行的,一般寄售的物料的庫存和本公司的庫存都是分開庫別的,所以同時一個庫別有2種不同類型的庫存是很少的。

2上面第一步已經確定了該筆交易是否屬于寄售的交易行。

2.1如果不是,則按照普通的交易走,不做任何的特殊處理。

2.2如果是屬于寄售的庫存的交易,那么系統會自動做所有權轉移。所以,這時候要根據標準PO的價格更新BPA價格和交易成本。

1)根據批次找到對應接收的PO的信息(首次接收的)

更新批次表,記錄對應的PO行ID。

自動更新接收方式:將發票匹配選項自動更新為接收R。

2)根據Po_Line_ID找到接收PO的價格

3)根據物料ID,供應商ID,供應商地點ID找到對應的一攬子協議的PO(BPA)行,然后直接根據標準的PO行價格更新BPA行價格。

4)強烈建議將上面找的信息記錄到一個中間的控制記錄表格。

3調用MTL_ONLINE_TRANSACTION_PUB.PROCESS_ONLINE過賬對應的領料行。

4如果過賬成功,并且是屬于寄售的交易行,這時候應該要將寄售行的單價信息更新回去原來的。

按照上面的步驟一步一步來做,基本可以實現User的目的。

財務方面:

因為做的寄售雜發交易的單價(包括自動產生的所有權轉移的交易行價格),都是標準接收PO的單價。

傳到應付里面的價格也是標準接收PO的單價。

為了讓User方便操作,AP標準的發票匹配畫面我也做了一定的客制化。

主要的修改是,匹配畫面的默認匹配數量=對應接收編號的PO行的消耗數量-已經開票的數量。

(標準的是,對應接收編碼的PO行接收的數量-已經開票的數量)

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享