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


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

因架構的不同,技術實現上會有所差異,我的經驗僅限定於Windows Form程序。

 

總體功能

1  系統支持多用戶。

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

2 系統支持多公司。

設計一個帳套表,帳套表的數據庫定義比較簡單,參考下面的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

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

3 系統支持多庫存組織。

庫存組織用於跟蹤庫存交易,維護庫存余額,可以建立多個庫存組織,每個庫存組織有一個帳簿集,記錄物料進出事務。

庫存組織是建立在經營單位之下的,可以細分為不同的子倉庫。

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)。因為后面三筆數據的依據是記帳憑證,所以帳戶調整是產生新的帳戶調整憑證,過帳后更新后面三個帳。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM