根據以上對進銷存管理內容和進銷存管理系統的分析,一個標準的進銷存管理系統應該包括如圖1.1所示的幾大功能。

圖1.1 進銷存管理系統的基本功能模塊
其中每個功能都由若干相關聯的子功能模塊組成。
1.3.1 資料管理
企業經營的基礎資料是一個企業最基本也是最重要的信息,脫離了基礎資料,例如商品資料、供貨商資料和客戶資料等,進銷存系統就無法運行。“資料管理”功能模塊就用于維護這些基礎資料,包含的功能模塊如圖1.2所示。

圖1.2 “資料管理”功能模塊
“商品編碼設置”用于設置商品編碼的方式。進銷存系統的每條商品信息都具有惟一的一個編碼,作為該商品信息的主鍵,一般該編碼具有一定的規律,例如藥品進銷存系統,商品的編碼可能有兩級,第一級為藥品的類別(中藥、西藥、保健品、器械等),第二級為藥品的劑型(針劑、片劑、丸劑等)。該功能設置商品編碼分類的方法,從而實現商品資料維護中自動生成編碼的功能。例如該商品屬于西藥的丸劑,而西藥的編碼是2,丸劑的編碼是02,該商品的編碼就是202****,后面部分由系統根據該類別里現有編碼的最大值加1自動生成。
“商品資料維護”用于維護(增加、修改、刪除、查詢)企業所經營的商品的基本信息,內容包括貨號、條形碼、品名、拼音編碼、規格、單位、產地、類別、進貨價、銷售價1、銷售價2、最低售價等。其中拼音編碼是商品名稱的拼音簡稱,目的是在程序中可通過拼音碼方便地查詢到所需要的商品。不同行業的進銷存商品資料的屬性差別很大,我們將在后面說明。
“供貨商資料維護”用于維護企業供貨商的基本信息,內容包括供貨商號、拼音編碼、簡稱、名稱、地址、郵編、區號、地區、類型、電話、傳真、電報、開戶行、開戶行郵編、銀行帳號、稅號、庫房地址、庫房電話、業務員、業務部門等。
“客戶資料維護”用于維護企業客戶的基本信息,內容包括客戶編號、拼音編碼、簡稱、名稱、聯系人、地址、郵編、區號、地區、電話、傳真、電報、開戶行、開戶行郵編、銀行帳號、稅號、性質、業務員、業務部門、授信額度等。
“業務員信息維護”用于維護企業銷售業務員的基本信息,內容包括業務員號、姓名、性別、電話、手機、地址、郵編、身份證號、類別等。在銷售開票時業務員屬性可以直接從業務員清單表中獲取所有業務員的名字作為辭典供用戶選擇。
“倉庫信息維護”用于維護企業的倉庫信息,內容包括倉庫號、倉庫名、類別、備注等。企業的商品一般都是存放在不同的倉庫或同一倉庫的不同貨位中,這樣在在填寫商品進貨單和銷售單時用戶需要指定入庫或出庫的是哪個倉庫的貨物。
“采購合同管理”用于維護企業與供貨商簽定的采購合同,內容包括供貨商號、貨號、進價、付款方式、帳期、簽訂日期、合同期限等。合同的內容對業務可以產生影響,例如合同規定了進價,在填寫采購單時系統會自動生成進價。
“銷售合同管理”用于維護企業與客戶簽訂的的銷售合同,內容包括客戶編號、貨號、售價、付款方式、帳期、簽訂日期、合同期限等。
小知識 數據庫設計范式
數據庫的設計有一定的規范,按照等級劃分為1NF、2NF、3NF、BCNF、4NF和5NF六個范式。這些范式主要用來減少數據庫中的數據冗余,每個范式都有自己的嚴格數學定義,下面我們用通俗的語言解釋第一范式和第二范式。1NF指關系中的每個域都必須是原子的,即每個字段都是不可再分的原子數據項,例如業務員信息表需要記錄業務員的地址的郵編,如果使用一個字段Address_Zip,就是不符合第一范式的,應該分兩個字段(Address和Zip)存放信息。2NF定義為:如果關系模式R(U,F)中的所有非主屬性都完全依賴于任意一個候選關鍵字,則稱關系R 是屬于第二范式的。舉例來說我們在系統中填寫進貨單時需要指定進貨的商品,如果每次進貨我們都填寫進貨商品的品名、單位等信息,這樣就會造成很大的數據冗余。根據第二范式的要求,可以把商品的信息提煉出來,單獨存放在一張表中,將商品的編碼(貨號)作為關鍵字,這樣進貨時我們只需指定進貨商品的貨號就可以了,而其他信息可以通過關聯的方法從商品表中獲取。需要注意的是,并非數據庫設計時滿足的范式層次越高數據庫就越合理,一般滿足第二范式就可以了,過于追求數據的精簡就會增加操作的復雜程度。
1.3.2 采購管理
“采購管理”功能模塊用于管理企業的采購業務,其中包含的子功能模塊如圖1.3所示。

圖1.3 “采購管理”功能模塊
各子功能模塊實現的功能分別為:
“采購訂單”用于錄入企業的采購訂單。一般都將采購訂單、入庫單、銷售單等單據根據第二范式分為主從兩張表來存放數據,主表“采購訂單”的內容包括編號、供貨商號、訂貨日期、有效起日、有效止日、業務員、制單人、稅價合計、不含稅價、稅額等,從表“采購訂單明細”的內容包括編號、訂單號、貨號、訂貨數量、進價、稅價合計、扣率、稅率、不含稅價、稅額等。
“進貨單”用于錄入企業的進貨單,也分為主從兩張表,主表“進貨單”內容包括編號、供貨商號、進貨日期、業務員、制單人、驗收員、保管員、稅價合計、不含稅價、稅額、訂單號等,從表“進貨單明細”內容包括編號、進貨單號、貨號、進貨數量、進價、稅價合計、扣率、稅率、不含稅價、稅額、倉庫、貨物質量等。根據企業的規模和管理方法,可以直接作進貨單而不用作采購訂單,但對于較大規模的企業,一般采購部門和庫房部門是分開的,有采購部門填寫采購訂單,貨物運輸到庫房后由庫房驗收人員填寫進貨單。填寫進貨單后商品的庫存才會增加并產生應付款。
“進退貨管理”用于錄入企業進退貨單。進貨的退貨有兩種方法,一是直接在進貨單中填寫負數的進貨數量,另一種是填寫進退貨單,一般采用前一種方法。
“進貨價格調整”用于調整歷史進貨單的價格,內容包括內部編號、編號、進貨數量、原進價、新進價、調整日期、制單人等。
“進貨單位調整”用于調整歷史進貨單的供貨商,內容包括內部編號、編號、原供貨商、新供貨商、調整日期、制單人等。
“歷史查詢”用于查詢商品采購、進貨的歷史。一般可以讓用戶根據任何條件查詢,如按照供貨商、日期、商品貨號、商品拼音等。
1.3.3 銷售管理
“銷售管理”功能模塊用于管理企業的銷售業務,包含的子功能模塊如圖1.4所示。
各子功能模塊實現的功能分別為:
“銷售訂單”用于錄入企業的銷售訂單。主表“銷售訂單”的內容包括編號、客戶編號、銷售日期、有效起日、有效止日、業務員、制單人、稅價合計、不含稅價、稅額等,從表“銷售訂單明細”的內容包括編號、訂單號、貨號、銷售數量、銷售價、稅價合計、扣率、稅率、不含稅價、稅額等。

圖1.4 “銷售管理”功能模塊
“銷售單”用于錄入企業的銷售單,主表“銷售單”內容包括編號、客戶編號、銷售日期、業務員、制單人、保管員、稅價合計、不含稅價、稅額、訂單號等,從表“銷售單明細”內容包括編號、銷售單號、貨號、銷售數量、銷售價、稅價合計、扣率、稅率、不含稅價、稅額、倉庫等。
“銷售退貨單”用于錄入企業銷售退貨單,內容包括編號、銷售單編號、貨號、退貨數量、銷售價、稅價合計、扣率、稅率、不含稅價、稅額、倉庫等。
“調整歷史售價”用于調整歷史銷售單的價格,內容包括內部編號、編號、銷售數量、原銷價、新銷進價、調整日期、制單人等。
“歷史查詢”用于查詢商品銷售的歷史。一般可以讓用戶根據任何條件查詢,如按照客戶、日期、商品貨號、商品拼音、業務員等信息查詢。
1.3.4 庫存管理
“庫存管理”功能模塊用于管理企業的庫存信息,包含的子功能模塊如圖1.5所示。

圖1.5 “庫存管理”功能模塊
各子功能模塊實現的功能分別為:
“庫存查詢”用于查詢企業商品的庫存,可以查詢總庫存和分倉庫查詢。
“庫存轉庫”用于將一個倉庫的商品轉移到另一個倉庫,或者連鎖門店之間的商品調撥,內容包括編號、源部門、目的部門、貨號、數量、單價、合計金額、調撥日期、制單人、調貨原因等。
“庫存盤點”用于管理企業的庫存盤點工作,將實際盤存的商品數量輸入計算機,計算機自動與數據庫中的庫存數量進行核對并產生盤盈盤虧統計信息。
“報損報溢”用于管理企業商品庫存的損益,內容包括編號、貨號、倉庫、數量、庫存單價、金額、日期、責任人、制單人等。
“上下限設定”用于設置庫存的上限和下限,當商品庫存的數量超出指定的范圍時系統可以自動報警,內容包括序號、倉庫號、貨號、上限、下限、最佳存量、備注等。
“庫存上下限報警”根據當前商品庫存和指定的庫存上下限自動列出低于下限或高出上限的商品,并可以直接根據最佳存量直接生成采購訂單。
“歷史查詢”用于查詢各種轉庫、盤點、損益的歷史數據。
1.3.5 應付款管理
“應付款管理”功能模塊用于管理企業的應付款業務,包含的子功能模塊如圖1.6所示。

圖1.6 “應付款管理”功能模塊
各子功能模塊實現的功能分別為:
“預付款管理”用于管理企業的預付款信息,內容包括供貨商號、預付款總額等。填寫付款單時可以選擇付款的方式,如果是“減預付款”則“預付款”信息表中的“預付總額”自動減少。
“應付款明細”用于查詢企業所有的應付款,對應到每一筆進貨的明細。
“應付款匯總”用于查詢企業所有的應付款,對應到每一個供貨商。
“付款單”用于錄入企業支付貨款的憑證和銷應付款,內容包括編號、發票號、填票日期、進貨單號、貨號、供貨商號、數量、進貨單價、金額、付款日期、詳細說明、進貨日期、狀態、減預付等。
“已付款明細”用于查詢企業歷史的所有已經支付的款項。
“歷史查詢”用于查詢付款單歷史。
“應付款帳簿”用于查詢應付款科目的明細分錄,屬于財務上的概念。每一筆進貨或者付款系統都會在帳簿中自動產生一筆記錄,以借方、貸方、余額的形式存在,可以直接將查詢的結果輸出作為財務軟件的憑證。
“應付款帳齡”用于分析應付款的帳齡,即在不同時間段內應付款分部的情況,從而為付款作出依據。
1.3.6 應收款管理
“應收款管理”功能模塊用于管理企業的應收款業務,包含的子功能模塊如圖1.7所示。
各子功能模塊實現的功能分別為:
“預收款管理”用于管理企業的預收款信息,內容包括客戶編號、預收款總額等。填寫收款單時可以選擇收款的方式,如果是“減預收款”則“預收款”信息表中的“預收總額”自動減少。

圖1.7 “應收款管理”功能模塊
“應收款明細”用于查詢企業所有的應收款,對應到每一筆銷售的明細。
“應收款匯總”用于查詢企業所有的應收款,對應到每一個客戶。
“收款單”用于錄入企業收回貨款的憑證和銷應收款,內容包括編號、發票號、填票日期、銷售單號、貨號、客戶編號、數量、銷售價、金額、收款日期、詳細說明、銷售日期、狀態、減預收等。
“已收款明細”用于查詢企業歷史的所有已收回的款項。
“歷史查詢”用于查詢收款單歷史。
“應收款帳簿”用于查詢應收款科目的明細分錄,每一筆銷售或者收款系統都會在帳簿中自動產生一筆記錄,以借方、貸方、余額的形式存在,可以直接將查詢的結果輸出作為財務軟件的憑證。
“應收款帳齡”用于分析應收款的帳齡,即在不同時間段內應收款分部的情況,從而為收款提供依據。
1.3.7 帳務管理
“帳務管理”功能模塊用于管理企業的結帳業務,包含的子功能模塊如圖1.8所示。一般商業企業每個月都要進行一次結帳操作,確定該財務月份所有商品成本的進、銷、結存情況,為財務提供數據。

圖1.8 “帳務管理”功能模塊
各子功能模塊實現的功能分別為:
“結帳日期設定”用于設置企業的每月結帳的日期,內容包括月份、全稱、結帳日期等。一般商業單位每個月的結帳日期都是固定的,默認為25號。
“模擬結帳”用于進行模擬結帳操作。因為結帳操作不可逆,也就是說正式結帳后商品進銷存匯總的數據就無法更改了,因此在正式結帳前往往要進行模擬結帳,以查看結帳數據是否正確。
“正式結帳”用于進行結帳操作,計算進銷存匯總報表。
“進銷存匯總”用于查詢本次結帳的結果,內容包括結帳編號、年月、貨號、上期結帳數量、上期結帳金額、借方數量、借方金額、貸方數量、貸方金額、本期結存數量、本期結存金額、備注等。
“歷史查詢”用于查詢歷史的結帳結果。
小知識財務成本核算方法
財務上為了統計企業的經營利潤和報稅,每個月都要對經營商品的成本進行核算,核算方法一般分為加權平均法和先進先出法(或者后進先出法),我們舉例說明這兩種方法的區別。例如1月10號進了100雙鞋子,每雙進價為50元;1月15號銷售了其中的80雙;1月20號又進了100雙,但進價變為每雙40元了。采用加權平均法計算,當月銷售的成本為80×(0 + 100×50 + 100×40)/(0+100+100)= 80×45=3600元,當月期末余額為120×45=5400元。其中0表示當月該品種的期初數量和期初金額(上月的期末數量、金額)為0,例如下月計算時取值為5400。由此可見,加權平均法計算公式為:銷售成本=銷售數量×(上月期末金額+本月入庫金額)/(上月期末數量+本月入庫數量)。而用先進先出法計算,因為銷售的80雙鞋屬于第一批進貨中的,故其真實成本應該是80×50=4000元。
由此可見兩種不同的計算方法所計算出的當月企業利潤是不一樣的,后一種增加了400元的成本,利潤就降低了400元。讀者會問,這兩種方法有什么區別,最終企業的利潤總是一樣的,只不過是先算還是后算的問題。首先,先進先出法可以更加準確地反映出企業的實際經營狀況;其次,在不同的動機下會產生不同的結果,例如一般商品的價格總是下降的趨勢,如果上市公司想增加本年度的利潤,采用先進先出法就可以合法提高公司的利潤。
需要注意的是,先進先出法需要大量的運算工作,因此在手工的操作模式下是不現實的,這也是加權平均法產生的根源。
1.3.8 統計分析
“統計分析”功能模塊用于統計和分析企業的經營數據,供企業決策者作為決策依據。常用的子功能如圖1.9所示。

圖1.9 “統計分析”功能模塊
統計分析的功能就是對企業的歷史數據進行統計分析,以直觀的形式表現出來,最好可以用圖表的形式表現出來,如圖1.10和圖1.11所示。以上列舉的只是一小部分功能,例如還有商品時段銷售對比、門市店時段銷售對比等。

圖1.10 同一商品時段銷售對比

圖1.11 門市店銷售分析對比
小知識二八(ABC)分析方法
19世紀意大利經濟學家帕列托的發現:社會約80%的財富集中在20%的人手中,而80%的人只擁有20%的社會財富。這種統計的不平衡性在社會經濟及生活中無處不在,這就是二八法則,即80%的結果(例如,產出、酬勞、銷售),往往源于20%的原因(投入、努力、商品)。對應到流通企業,就是20%的商品(客戶)大致產生了80%的銷售額和毛利,因此需要找出這些重點品種和重點客戶,從而更好的發揮它們的優勢。ABC分析和二八分析原理是一致的,只不過ABC分析把結果分為了3個等級,而二八分析只分為兩個等級。
1.3.9 零售管理
流通企業可大致分為批發企業和零售企業,零售企業又分為單門店企業和連鎖企業。對于零售企業,其自身的特點必然導致進銷存系統與批發企業的系統不一致。最大的區別就是零售銷售的界面,還有連鎖門市店的管理。零售管理包括的子功能模塊如圖1.12所示。

圖1.12 “零售管理”功能模塊
各子功能模塊實現的功能分別為:
“零售收款”用于門市店的POS收款管理。如前所述,零售企業的銷售不管東西賣給了誰,也不會產生應收款。而由于顧客收款排隊的原因,需要保證最快的收款速度,因此“零售收款”的功能要簡單便捷,通常只需要輸入商品的貨號、數量和收款的總金額就可以了。
“班次結帳”用于零售企業的結帳管理。零售企業一般都是分班次銷售的,一天一個班次或兩個班次,班次的人員間交班前需要將收款的金額點清,并和計算機統計的金額一致后,選擇“班次結帳”功能,確定并清除該班次的收款信息,將其放入歷史,從而實現順利交班。
“銷售日報統計”用于統計零售企業日銷售的信息,內容包括日期、部門、組別、收款機號、貨號、班次、銷售數量、應收金額、實收金額、庫存單價等。
“連鎖要貨申請”用于連鎖門市店向配送中心請求配貨,內容包括編號、部門、組別、貨號、數量、日期、申請人、申請說明、回復等。
“連鎖來貨入庫”用于連鎖門市店在接收到配送中心的貨物時作入庫確認處理。
“會員管理”用于管理企業的會員信息,可以增加新會員、維護現有會員信息、查詢會員消費明細、設置會員折扣等。
“數據傳輸”用于連鎖門市店、配送中心和企業總部之間的數據傳輸,傳輸的操作應該簡單安全。
1.3.10 系統管理
系統管理是每個系統都必須具備的功能,包括的子功能模塊如圖1.13所示。由于這部分功能比較通用,在后面的實例中我們將不再詳細介紹。

圖1.13 “系統管理”功能模塊
各子功能模塊實現的功能分別為:
“參數設置”用于設定系統定義的一些基礎參數或開關。
“權限設置”用于設置各操作員使用系統的權限,為了方便設置,一般的應用系統都是可以將操作人員分組的,將通用的權限賦予整個組,個別的權限單獨賦予個人,這樣可以大大減少權限管理的工作量。
“數據備份”用于備份系統數據庫。
“數據恢復”用于恢復系統數據庫。
“日志管理”用于維護系統的使用日志。一個好的應用系統會對任何操作員進行的所有操作進行日志記錄,“日志管理”可以查詢、導出和刪除歷史的日志。
“更改密碼”供用戶更改自己的密碼。