POS.tw/系統開發筆記
POS.tw.通路進銷存資料轉入
[编辑]若使用 MySQL 當成轉檔料主要存放位置,當系統逐漸成長後,會造成資料轉入時需要大量運算能力,平常運作卻都空閒的狀況。
所以,使用 AWS DynamoDB 當成主要轉入資料存放位置,可以依轉入資料量及時間點,動態調整執行速度,以因應部份時段大量資料轉入需求。
在兩個轉檔步驟中,使用 AWS SQS 當成中間的緩衝,先將影響到下一階段資料的主鍵值放到 queue 中。
如果直接寫入到 DynamoDB,就必須使用比較高的 Provisioned capacity 來存放下一階段主鍵值。
使用 queue 就可以用較小的 capacity 來執行下一階段統計,因為每一階段統計時間可能都要很長,所以,只要極小量的 capacity 就可以因應大量資料的統計。
且未來如果資料量再增加,就可以把每個階段切割開,把統計量大的交由 AWS EMR 進行統計後,再將資料轉入使用。
若需要與通路或廠商內部系統串接,把 queue 以 API 的方式提供服務,即可跨不同的系統或雲端服務平台,進行資料整合。
- 執行步驟
- 取得進銷存相關資料檔案。
- 將檔案資料轉入 DymanoDB 。
- 計算進銷存交易明細。
- 計算進銷存日檔及平均日銷量。
- 計算庫存異常明細。
- 計算進銷存週檔。
- 計算進銷存月檔。
- 計算進銷存月檔商品ABC分類(分金額及數量)及銷售排名(分金額及數量)。
取得進銷存相關資料檔案
[编辑]- 透過FTP、文字檔或Web的方式,取得資料檔案。
- 取得資料後,將檔案傳送到 S3,依檔案內容進行命名。
- 將取得的資料傳送到 queueFile(AWS SQS)。先傳到 queueFile 可以避免 DynamoDB 寫入限制,造成要使用比較高的 Provisioned capacity。
- 將 queueFile 中的資料寫入 DynamoDB.POStwQueue : DataKey=File_[DataType], RangeKey=[FileName], Attributes 依需求.
將檔案資料轉入 DymanoDB
[编辑]- 掃描 DynamoDB.POStwQueue 取得需要轉入的檔案名稱及 S3 位置。
- 讀取 DynamoDB.POStwMaster 取得檔案上次轉入狀態,以決定是否重新轉入或跳過。
- 如果需要轉入,則執行轉入作業;寫入轉檔結果到 DynamoDB.POStwMaster。
- 將轉入影響到的資料主鍵值傳送到 queue(AWS SQS),可以避免 DynamoDB 寫入限制。
- 將 queue 中的資料寫入到 DynamoDB.POStwQueue,供下一階段轉檔使用 。
PS:因應可以取得的資料內容不同,產生不同的資料主鍵值;例如:有交易明細,則從交易明細算日檔;如果只有交易日檔,則由日檔開始計算;如果只有區間銷售,則使用預估計算每日銷售及庫存;如果只有出貨資料及某天庫存量(可以用預估),則依出貨及庫存推算每日銷售及庫存。
- 資料主鍵值類型
- DataType=InvoicingDetail (進銷存交易明細)
- DataType=InvoicingDay (進銷存日檔)
- DataType=InvoicingPeriod (進銷存區間資料)
- DataType=InvoicingWeek (進銷存週檔)
- DataType=InvoicingMonth (進銷存月檔)
庫存異常計算
[编辑]- 庫存異常定義
- 負庫存:負庫存一般均為庫存管理出問題造成,除了少數特例外;所以,要特別管理,先從負庫存量高的進行處理,逐步找出負庫存原因,再一一進行作業調整,避免負庫存產生。
- 庫存為0:庫存為0有很多原因,若是品項數多的通路,一般先從促銷商品及重點商品先處理;再依商品ABC分類,從A級品項優先處理。
- 庫存不足:透過平均日銷量計算,預估缺貨日在三天(可透過參數設定)內的,就當成庫存不足。若是搭配補貨系統,則要考慮下下次送貨日期(下次送貨數量必須要下下次才會再補貨,所以,不能以下次送貨日期計算,否則,下次送貨日期後就會缺貨);如果是生鮮效期短的商品,則要考慮商品到期日,如果有到期前幾天下架的規定,則要考慮替換品數量。如果是效期較長的商品,則可以考慮最高庫存量,以減少送貨次數。
- 庫存過多:透過平均日銷量計算,如果需要再30天(可透過參數設定)才能銷售完畢,則當成庫存過多;依通路特性,初期可以先設定60~90天,等長天期的庫存過多處理後,再逐步縮短庫存天數,達到實際控管目標。若商品有效期限不長,則要依最後下架期限進行計算,避免商品過期造成損失。
- 滯銷:若30天(可透過參數設定)內都沒有任何銷售,則設定為滯銷。特殊情況要特別設定,例如:促銷商品、重點商品及A級商品,可能要設定3~7天就要處理,避免商品放在庫存區或被其它商品擋住,造成都沒有銷售的情況。
商品ABC分類
[编辑]商品ABC分類依各家公司會有不同的設定。
在 POS.tw 中預設值為:A:20% B:60% C:20% D:0% E:0%
A級
[编辑]這個等級的商品,屬於重點商品,需要特別進行管理,以避免影響業績。
B級
[编辑]這個等級的商品,屬於一般商品,以數量及金額進行排名後,找出前100大商品進行處理即可。
C級
[编辑]這個等級的商品,屬於評估商品,每月(或季年,依產品屬性決定。)進行評估後,如果是必備商品(依通路屬性決定)則不處理,否則將其狀況移到DE級商品。
D級
[编辑]系統自動計算時會排除這個等級的商品;需要人工作業,調整商品到這個等級。 這個等級的商品,屬於預計停售且不再進貨商品,廠商還有持續生產,只是在公司銷售不佳,在有效期限內還可以進行銷售,也可以退貨的商品,不用急著出清。
E級
[编辑]系統自動計算時會排除這個等級的商品;需要人工作業,調整商品到這個等級。 這個等級的商品,屬於停產的商品,若在期限內沒有售完,將無法退貨,應盡早處理以避免庫存損失。