解析大型.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)。由于后面三笔数据的依据是记账凭证,因此账户调整是产生新的账户调整凭证,过账后更新后面三个账。

相关文章
相关标签/搜索