每一個合格的家庭主婦都是生產廠長的有力競爭者——ERP簡介及代碼示例
ERP簡介
一般來說,ERP系統是一個以生產廠長爲核心的信息系統,用來識別和規劃企業資源,從而獲取客戶訂單、完成加工和交付、最後得到客戶付款,最終獲得收入和利潤。
ERP小故事
下面我們用一個小故事,來說明什麼是ERP:
一天中午,丈夫在外給家裏打電話:
“親愛的老婆,晚上我想帶幾個同事回家吃飯,可以嗎?” 【訂貨意向】
妻子:“當然可以,來幾個人,幾點來,想吃什麼菜?”
丈夫:“6個人,我們7點左右回來,準備些酒、烤鴨、番茄炒蛋、涼菜、蛋花湯……,你看可以嗎?”【商務溝通】
妻子:“沒問題,我會準備好的。”【訂單確認】
妻子記錄下需要做的菜單【MPS計劃】(Master Production Schedule,主生產計劃)
具體要準備的東西:鴨、酒、番茄、雞蛋、調料……【BOM物料清單】(Bill of Materials)
發現需要:1只鴨、5瓶酒、4個雞蛋……【BOM展開】
炒蛋需要6個雞蛋,蛋花湯需要4個雞蛋【共用物料】
打開冰箱一看【查庫存】
只剩下2個雞蛋【發現缺貨】
來到菜市場【市場】
妻子:“請問雞蛋怎麼賣?”【採購詢價】
小販:“1個1元,半打5元,1打9.5元。” (注,1打12個)
妻子:“我只需要8個,但這次買1打。”【經濟批量採購】
妻子:“這有一個壞的,換一個。”【驗收、退料、換料】
回到家中,準備洗菜、切菜、炒菜……【工藝線路】
廚房中有燃氣竈、微波爐、電飯煲……【工作中心】
妻子發現撥鴨毛最費時間【瓶頸工序,關鍵工藝路線】
用微波爐自己做烤鴨可能來不及【產能不足】
於是決定,在樓下的餐廳裏買現成的【產品委外】
下午4點,接到兒子的電話:“媽媽,晚上幾個同學想來家裏吃飯,你幫忙準備一下。”【緊急訂單】
“好的,你們想吃什麼,爸爸晚上也有客人,你願意和他們一起吃嗎?”
“菜你看着辦吧,但一定要有番茄炒雞蛋,我們不和大人一起吃,6:30左右回來。”【不能並單處理】
“好的,肯定讓你們滿意!”【訂單確定】
“雞蛋又不夠了,打電話叫小店送來。”【緊急採購】
5:30,一切準備就緒,可烤鴨還沒送來,急忙打電話詢問:“我是李太,怎麼訂的烤鴨還不送來?”【採購委外單跟催】
“不好意思,送貨的人已經走了,可能是堵車吧,馬上就會到的。”
門鈴響了。
“李太太,這是您要的烤鴨。請在單上籤一個字。”【驗收、入庫、轉應付賬款】
5:45,女兒的電話:“媽媽,我想現在帶幾個朋友回家吃飯可以嗎?”
呵呵,又是緊急訂購意向,【要求現貨】
“不行呀,女兒,今天媽已經需要準備兩桌飯了,時間實在是來不及,真的非常抱歉,下次早點說,一定給你們準備好。”
哈哈,這就是ERP的使用侷限,要有穩定的外部環境,要有一個起碼的【提前期】。
【ERP管正常的事情】
【領導管異常的事情】
……
送走了所有客人,疲憊的妻子坐在沙發上對丈夫說:“親愛的,現在咱們家請客的頻率非常高,應該要買些廚房用品了【設備採購】
最好能再僱個小保姆【人力資源系統缺口】
丈夫:“家裏你做主,需要什麼你就去辦吧。”【通過審覈】
妻子:“還有,最近家裏花銷太大,用你的私房錢來補貼一下,好嗎?”【最後就是應收貨款的催要】
現在還有人不理解ERP系統嗎?
記住,每一個【合格的家庭主婦都是生產廠長的有力競爭者】。
ERP庫存管理簡單代碼示例
返回頂部
【面試題】:
用python實現如下要求:(時間複雜度儘可能小)
分配總可用庫存【初始爲38】:按30天銷量排序,依次滿足不同平臺產品ID的需求數量,分爲完止。
excel表格名:《開發面試筆試題.xlsx》;sheet名:“123”
【感興趣的小夥伴,可以自己複製到excel表格練習】
平臺產品ID | 30天銷量 | 需求數量 | erp_id | 可用庫存 | 最終分配數量 |
---|---|---|---|---|---|
AB1111111 | 5 | 10 | CK12345 | 38 | |
AB2222222 | 8 | 5 | CK12345 | 38 | |
AB3333333 | 1 | 7 | CK12345 | 38 | |
AB4444444 | 3 | 8 | CK12345 | 38 | |
AB5555555 | 1 | 11 | CK12345 | 38 | |
AB6666666 | 3 | 11 | CK12345 | 38 | |
AB7777777 | 19 | 21 | CK12345 | 38 |
【說明】:
【可用庫存指的是總存儲能力——倉庫容量】
這樣理解ERP庫存管理:銷量是市場供應能力,需求量是生產資料需求,如果市場供應不足,需要提前做庫存。【 比如:AB2222222不用做庫存】
導入數據
import pandas as pd
import numpy as np
data = pd.read_excel('開發面試筆試題.xlsx', '123')
data.info
<bound method DataFrame.info of 平臺產品ID 30天銷量 需求數量 erp_id 可用庫存 最終分配數量
0 AB1111111 5 10 CK12345 38 NaN
1 AB2222222 8 5 CK12345 38 NaN
2 AB3333333 1 7 CK12345 38 NaN
3 AB4444444 3 8 CK12345 38 NaN
4 AB5555555 1 11 CK12345 38 NaN
5 AB6666666 3 11 CK12345 38 NaN
6 AB7777777 19 21 CK12345 38 NaN>
按銷量排序的索引列表
lt = data['30天銷量'].sort_values(ascending=False).keys().tolist() # 降序排列,取索引,轉列表
分配庫存量
for idx in lt: # 遍歷排序後的索引
distribution = (data.loc[[idx]]['需求數量'] - data.loc[[idx]]['30天銷量']).item() # 分配量
if distribution < 0: # 跳過條件
continue
if data['最終分配數量'].sum() >= 38: # 退出條件
break
elif data['最終分配數量'].sum() + distribution > 38: # 不能完全滿足時,分配量調整
distribution = 38 - data['最終分配數量'].sum()
data.loc[[idx], '最終分配數量'] = distribution # 分配
最終結果
data['最終分配數量'] = data['最終分配數量'].fillna(0)
data['最終分配數量'] = data['最終分配數量'].apply(lambda x: int(x))
data['可用庫存'] -= data['最終分配數量'].sum()
data
平臺產品ID | 30天銷量 | 需求數量 | erp_id | 可用庫存 | 最終分配數量 | |
---|---|---|---|---|---|---|
0 | AB1111111 | 5 | 10 | CK12345 | 2 | 5 |
1 | AB2222222 | 8 | 5 | CK12345 | 2 | 0 |
2 | AB3333333 | 1 | 7 | CK12345 | 2 | 6 |
3 | AB4444444 | 3 | 8 | CK12345 | 2 | 5 |
4 | AB5555555 | 1 | 11 | CK12345 | 2 | 10 |
5 | AB6666666 | 3 | 11 | CK12345 | 2 | 8 |
6 | AB7777777 | 19 | 21 | CK12345 | 2 | 2 |
總結
- ERP系統是以生產廠長爲核心的信息系統。
- ERP的使用侷限:要有穩定的外部環境,要有一個起碼的提前期。
- 每一個合格的家庭主婦都是生產廠長的有力競爭者。
歡迎關注,敬請點贊!
返回頂部