解析大型.NET ERP系統 業務邏輯設計與實現

根據近幾年的製造業軟件開發經驗,以我開發人員的理解角度,簡要說明功能(Feature)是如何設計與實現的,供參考。html

因架構的不一樣,技術實現上會有所差別,個人經驗僅限定於Windows Form程序。數據庫

 

整體功能

1  系統支持多用戶。服務器

建立一個單實例(Singleton)的會話管理器SessionManager,用.NET Remoting部署在服務器端時,用DataTable保存登入的用戶會話(Session:Login Id,User Id,Name,Login Time)。客戶端登入時,會先檢查DataTable中是否有記錄,有則表示已經登入。ERP 客戶端退出時,要通知.NET Remting服務器端刪除會話信息(DataTable)。架構

2 系統支持多公司。spa

設計一個賬套表,賬套表的數據庫定義比較簡單,參考下面的Company表定義。設計

CREATE TABLE [dbo].[Company]
(
[CompanyCode] [nvarchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[CompanyName] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[Suspended] [nvarchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[DatabaseServer] [nvarchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[DatabaseName] [nvarchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[DatabaseLogin] [nvarchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[DatabasePassword] [nvarchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Company] ADD CONSTRAINT [PK_Company] PRIMARY KEY CLUSTERED  ([CompanyCode]) ON [PRIMARY]
GO

賬套表記錄了數據庫的鏈接信息,還可記錄賬套的行業信息以方便系統特定功能只針對的賬套設定的行業。code

3 系統支持多庫存組織。orm

庫存組織用於跟蹤庫存交易,維護庫存餘額,能夠創建多個庫存組織,每一個庫存組織有一個賬簿集,記錄物料進出事務。htm

庫存組織是創建在經營單位之下的,能夠細分爲不一樣的子倉庫。對象

4 系統支持多貨幣。

系統的賬套參數中有一個本位幣設定,業務單據中沒有指訂貨幣的,以本位幣爲記賬貨幣,業務單據中有記錄貨幣字段的,金額值以單據中設定的貨幣字段的值爲記賬依據。業務單據中通常會用Amount和AmountLocal來分別記錄兩種貨幣計算的金額值,匯率以當前業務單據的貨幣和本位幣的匯率爲換算依據。

多貨幣要考慮單據間流轉時不一樣的貨幣轉換。好比用HKD港幣下采購訂單,在付款時用USD美金支付。

5 系統支持線上審批。

以.NET WF爲工做流引擎,須要自定義活動(審批,傳送消息,發送報表),定義工做流類型(批覈,日記賬修改,計劃任務),定義工做流服務,設置數據庫解決工做流數據庫持久化。

6 系統支持批號和序號管理。

批號和序號是解決特定細分行業而增長的特點功能。好比藥品,食品,要跟蹤到每一批產品的有效期。序號管理用於電子類產品,用於售後服務。

 

銷售模塊

7 系統支持稅金,定金,折扣,其它費用。

稅金和折扣會改變單價和金額的計算公式,定金會影響應收款,至關於預先收取客戶必定的合同保證金。其它費用,好比送貨費用,包裝費用會影響銷售單的總金額。

銷售訂單總金額= 總物料金額 + 增長項(送貨,包裝費用,利潤率) - 扣減項(折扣)

8 系統支持屢次送貨。

銷售貨物的發出要產生總賬憑證,憑證記賬以下:

借:應收賬 $5,000

      貸:銷售 $5,000

9 系統支持報價單轉銷售單。

當發出給客戶的報價單Quotation,客戶接受以後,可由報價單直接生成銷售訂單Sales Order,相關的貨幣付款條款,物料明細被帶出銷售訂單中。

10 系統支持銷售單產生採購單或工做單。

對貿易型公司,只作物料的買入和賣出操做,不實際生產,可直接由銷售訂單產生送貨單,對庫存不足的銷售訂單中的物料直接產生採購訂單。對生產型企業,好比銷售1000部電腦,由銷售訂單1000部電腦,直接產生製造1000部電腦的工做單(生產任務單Job Order/Work Order),而後再發出物料,作完工收貨。

11 系統支持銷售包裝,支持多種包裝規格。

主要解決包裝數量的分配和標籤打印。銷售訂單物料銷售A銷售100個數量單位,每箱裝8個數量單位,計算以後一共要9箱。箱子的四邊須要打印一些標籤,值由用戶自定義,並能夠帶一些銷售訂單和物料的值到標籤中。

 

採購模塊

12 系統支持供應商價格與批量維護。

維護一個供應商供應物料價目表,供應商每次的供貨價格都有記錄可追查,這樣也方便下次錄入採購單時,直接帶出上次採購單相同批量狀況下的價格。批量管理則適用於不一樣的採購批量,有折扣或優惠的價格。

13 系統支持稅金,定金,折扣,其它費用。

與銷售模塊相同,稅金,定金,折扣,其它費用會影響訂單總金額。好比從國外購買物品須要支持保險費。

13 系統支持採購驗貨,支持MIL-105E驗貨標準。

IQC用於對供應商來料進行檢測,跟蹤供應商供貨質量。AQL是國際通用的驗貨標準,系統支持抽查驗貨。

14 系統支持由物料需求計劃自動生成採購單。

MRP產生的物料需求有兩種處理方法:採購屬性的原材料,生成採購訂單,生產製造的半成品則發放爲生產任務單。

 

倉庫模塊

15 系統支持物料預留(銷售單,工做單)。

物料預留(Reserved)適用於這樣的場景,對於銷售或是生產比較重要的客戶或交期很嚴格的訂單,必須有足夠的物料及時開展生產或發出貨物,這樣在倉庫物料不充足的狀況下,必須提早將這一部分由發貨單或生產單需求的物料留住(On-Hold),不容許發出或其它用途,至關於扣減了可用庫存量,但實際庫存卻沒有變化。

16 系統支持標準成本和實際成本,實際成本支持先進先出(FIFO),平均成本。

FIFO(先進先出)適用於食品藥品等與保質期有關的行業。

 

生產製造模塊

17 系統支持大量工程更改。

物料清單的兩大要素是物料列出和工序標準。大量工程更改支持批量的修改物料清單,好比給一組物料清單增長一個新物料,或是因爲工序改善,能夠節省一道工序,從物料清單中刪減工序。

18 系統支持主生產計劃(MPS)和物料需求計劃(MRP)。

MRP和MPS計劃的對象不一樣,計算方法一致,前者計算對象是成品,後者是原材料。

19 物料需求計劃生成的計劃訂單在訂單發佈前仍能夠修改。

由MRP計算跟蹤物料提早期,計劃收貨和現有庫存量,物料階層碼等信息計算出物料需求,由物料需求轉化爲計劃訂單,計劃訂單在發放爲採購單或工做單前,仍舊能夠修改參數以適應實際須要。

20 系統支持物料損耗,耗用,退回及發散料。

PMC控制物料的需求和使用,車間生產過程當中會出現一些誤差。物料損耗,耗用,退回等狀況適用於處理生產過程當中的異常。好比由工做單產生的物料需求,發料到車間後由於操做不當或其它緣由,須要從新發料,這時採起發散料(Spare Issue)的方式處理。

21 系統支持外發加工。

外發加工分爲工序外發和原材料外發。外發加工涉及到成本相關的核算,與採購業務的性質類似,至關於購買生產服務。有的ERP系統直接用採購訂單做爲外發加工單的單據,再增長少許特性。

 

總賬模塊

22 系統支持批次過賬由業務模塊傳遞而來的憑證,與進銷存,倉庫和製造模塊緊密集成。

企業的生產經營活動過程當中的資金流,實現方法就是由各業務模塊生成總賬憑證。好比工做單物料發出產生如下記賬:

借:在進行工做 $2,000

      貸:倉庫 $2,000

再好比銷售退貨,產生以下記賬憑證:

借:銷售退貨 $250

      貸:應收賬 $250

23 系統支持週期憑證。

對於企業一些平常性的有規律的經營支出,好比房租,固定資產折舊,這些能夠作成周期性憑證,每個月作期末處理月結時由系統自動生產記賬憑證。

24 系統支持賬戶調整。

總賬模塊包含三套賬,記賬憑證(Voucher)爲記賬的原始依據(相對於ERP系統,會計實際記賬的原始依據是收款憑證,付款憑證和轉賬憑證),根據記賬憑證生成流水賬(Journal),總賬(General Ledger),貨幣分類賬(Currency Ledger)。由於後面三筆數據的依據是記賬憑證,因此賬戶調整是產生新的賬戶調整憑證,過賬後更新後面三個賬。

相關文章
相關標籤/搜索