1. 程式人生 > >小李飛刀系列之Oracle EBS期間平均成本(PAC)--生產成本計算(三)資源成本計算

小李飛刀系列之Oracle EBS期間平均成本(PAC)--生產成本計算(三)資源成本計算

在前面一篇文章介紹了資源的設定,本篇文章將介紹在PAC中資源成本是如何計算的。PAC只需要執行4個系統標準請求,即可自動對採購成本、生產成本(包括生產的材料成本、資源成本、製造費用)等進行計算,最終算出物料的單位成本。但在系統介面上我們只能查到最終算出的物料單位成本,至於其背後的運算邏輯,在系統介面上是無法查到的,因此要想明白PAC的運算邏輯,必須藉助其後臺運算過程中用到的表,通過表中記錄相關欄位的值的變化來理解PAC運算的邏輯。在本系列文章中,都將會通過相關後臺表變化來說明PAC的運算邏輯。

資源成本計算過程中有3個非常重要的表:

  • wip_transactions
  • wip_pac_actual_cost_details
  • wip_pac_period_balances

系統中所有的資源事務處理都存在表wip_transactions中,當PAC請求計算資源成本時(由系統標準的”定期成本處理程式”完成),會從此表中將各工單各個工序的資源投入的記錄取出。根據相應資源的投入數量與資源費率,”定期成本處理程式”計算資源的成本,並將計算得出的各資源成本的明細記錄插入到表wip_pac_actual_cost_details中,將各工單各工序耗用的資源成本彙總後,會將彙總值更新到表wip_pac_period_balances裡。

當工單存在部分完工的情況時,除了計算該工單投入的資源成本,我們還需要通過一定的邏輯計算投入的資源成本有多少該結轉到成品裡。這一過程中的計算邏輯也需要通過wip_pac_period_balances表來體現。

實際上,對生產成本而言,wip_pac_period_balances可以說是PAC計算過程中最重要的表,下面先對其作重點介紹:

在wip_pac_period_balances表中,按工單ID(WIP_ENTITY_ID)和工序序號(OPERATION_SEQ_NUM)來記錄成本值。帶IN的欄位記錄該工單該工序記入的成本。帶OUT的欄位記錄因為生產完工或者報廢結轉的成本。帶VAR的欄位記錄在工單關閉時IN和OUT的差異。帶TL的欄位表示本層(This Level),帶PL的欄位表示前一層(Previous Level)OPERATION_COMPLETED_UNITS欄位指該工序已完成的數量,RELIEVED_ASSEMBLY_UNITS欄位指的是因為工單完工或工序報廢導致的該工單最終要完工的裝配件數量的減少數量(如一個工單要完工100個裝配件,當前完工10個,報廢1個,則減少數量為11)。wip_pac_period_balances表的部分欄位如下圖所示:
圖 1. wip_pac_period_balances表的欄位

下面我們通過一個例子看一下當工單存在部分完工的情況時,系統是如何結轉投入的資源成本到成品裡的。

假設有如下業務場景:有一個零件,需要工人先將鋼管切成段,再打磨成需要的形狀。每切割一段預計需要0.5工時,而打磨一個零件預計需要1工時,每工時工人的工資為20元。假設有一個生產10個該零件的任務,某工人操作較熟練,切割4段僅耗用1.5工時,切割完成後耗用1工時打磨生產出一個零件,那產出的這一個零件結轉的工時資源的成本該是多少呢?

我們在系統裡通過以下步驟做測試:

  1. 新建所需要的基礎資料,包括:

    • 物料編碼:零件編碼為001,鋼管編碼為002
    • 資源:GS(工時)
    • 部門:CJ(車間)
    • 標準工序:QG(切割)、DM(打磨)
    • 零件001的工藝路線和物料清單(工序中資源的計費型別都為”人工”)
      圖 2. 零件001的工藝路線
  2. 新建零件001的工單,數量為10,工單號為JOB001;

  3. 對JOB001做移動事務處理,將其從工序10的”排隊”狀態移動到”移動”狀態,數量為4;

  4. 對JOB001做移動事務處理,將其從工序10的”移動”狀態移動工序20的”移動”狀態,數量為1;

  5. 對JOB001 做資源事務處理,在工序10投入資源’GS’數量1.5,在工序20投入資源’GS’數量1;

  6. 對JOB001做完工事務處理,完工數量為1。

  7. 執行系統標準的”定期成本處理程式”,檢視wip_pac_period_balances表的結果,如圖3所示:
    圖 3. wip_pac_period_balances表的結果
    由圖3可以看出,該工單在工序10投入的資源成本=資源投入數量*資源費率=1.5*20=30,工序20投入的資源成本=1*20=20。

在工序10結轉的成本為7.5,工序20結轉的成本為20。

而工序10完成的數量為4,裝配件減少的數量為1,則工序20完成的數量為1,裝配件減少的數量為1。

由此可以推斷出結轉的資源成本=(裝配件減少數量/工序完成數量)*投入的資源成本。

並且通過表3可以看出Oracle在計算生產成本時,是按各工序分別計算成本,而不是把上一道工序耗用的成本帶到下一道工序,即不是通過逐道工序成本累積的方式來計算整個工單的成本。