ofbiz 业务流程剖析

ofbiz 业务流程剖析

1 制造模块剖析

mrp算法

为了方便说明,给一个最简单的生产模式

m1-p1

也就是由原材料m1直接加工生产p1,比例是1:1

我们设m1的库存量是1000,最低库存200,采购提前期6天,p1的库存是900个,最低库存100

现在接到一个订单,2月2号要2000个p1发运(ofbiz是按照发运期来算提前量的),该怎么算呢

很显然,我们立刻得出,应该生产p1 1200个

但我们的实际生产量并不一定是1200,我们应该先找一下已经安排下的p1的生产单,看有多少

好,找到一个生产单,1月30号生产完毕300个,这样,我们只需要生产900个p1就能满足2月2号的需求

那什么时候开始生产,就需要计算制造提前期,ofbiz是按照工艺路线*数量来计算的,比设一个固定的制造提前期要精确的多,经过计算,需要1月26号开始生产

为了生产p1我们需要多少m1呢,如果不考虑损耗率,应该是900个,现在m1的库存是1000个,能满足需要么

不能,因为m1的最低库存是200个,也就是最多只有800个m1可用,那我们是不是还需要采购100个

和生产一样,先要查一下有没有在1月26号前到货的采购订单,这次发现没有,那我们就要给供应商发一个采购订单,订购600个,为什么是600个

这里有一个采购批量的概念,也就是说采购不是你需要多少就订多少,供应商有一个批量规则,比如m1的供应商的要求是每次订购必须是一箱,一箱是多少呢,600个

ofbiz并没有给出采购批量的算法,只是给出了接口,保证了最大的灵活性,因为实际中,对每一个采购订单计算批量可能导致过大的采购量

比如,现在mrp运算得出 1月26号采购到货100个m1,2月2号采购到货300个m1,2月6号采购到货200个m1,批量是600

在实际中采购员会把数量汇总,给供应商发出一张1月26号到货的采购600个m1的订单,这张订单应该提前6天发出去,因为采购提前期是6天,考虑到日历的休息日,实际应该是提前6个工作日

如果按每张订单分别来,同时考虑批量,就会是1月26号采购600个m1,2月2号采购600个m1,2月6号采购600个m1

以上流程分析清楚了,mrp算法就是一个大循环,先把需求按产品排序,然后按llc循环,计算实际生产或采购需求量,对于需要生产和采购的就生成采购建议和生产建议

代码里也有一些小技巧决定了运行的速度,比如要避免使用递归函数,一遍循环就要全部算完

制造模块还有一些比较细致的设计,比如考虑产品属性,考虑产品配置bom(这两个功能很重要),考虑虚拟件,引入非库存件的概念

以库存件和非库存件的概念分析一下

我们考虑如下的生产模式

m1-p1_2-p1_1-p1

由原材料m1加工成半成品p1_2,再由p1_2加工成p1_1,最后由p1_1加工成成品p1

按很多erp的设计,先是领料m1,生产p1_2,然后将生产出来的p1_2入库,然后领料p1_2,生产p1_1,将生产出来的p1_1入库,然后领料p1_1,生产p1

看上去不是很严谨么

问题在与,在车间的实际生产中,生产出p1_2,就直接拿去生产p1_1了,根本不会做什么入库再领料的操作,不然,一天要输多少单据,如果所有半成品都严格要求做要出入库操作的话,就会不符合实际的车间生产情况

所以,非库存件是一个非常好的设计,我们把p1_2和p1_1设置成非库存件,可以很好的适应实际的生产管理的需要

当然,还有其他需要考虑的,比如,如果非库存件生产有结余要入库也需要处理

2 库存成本的计算和移动平均法

  库存成本就是销货成本(COGS),在对组织机构设置财务选项时就需要确定COGS,一般有先进先出,后进先出,移动平均和个别计价法

  我们看一个例子

  2月2号购入原材料m1 1000 个,价格100 $

  2月6号,购入原材料m1 1000 个,价格 200 $

  2月8日,卖出原材料m1 600个,那成本是多少呢

  按移动平均法,成本是 (1000*100+1000*200)/2000 = 150 $

  按后进先出,成本是就是200 $

  按先进先出,成本是就是100 $

  有了成本,就可以立刻得到销售利润

  但是在实际的业务中,由于有进货,退货,各种库存移动,物理库存变动,因此,库存成本的计算要比上面描述的要复杂,一般分为即时计算和月末计算

  即时计算是业务发生时就立刻计算这时的移动平均价或后进先出法 先进先出的价格,并写入销售单据(出库单据),对计算速度要求高,并要求软件逻辑必须考虑全面

  月末计算是业务发生时不计算成本,到月末时,把入库单据和出库单据按时间顺序排列,从头开始计算成本,并回写到出库单据,一般要计算比较长的时间,有的erp单独设置了 存货核算模块

  对于即时计算来说,我们需要有一张表,保存着所有产品的移动平均价 当前数量

  比如在该表中,产品m1,当前数量 20000,当前移动平均价 150 $

  现在入库m1 10000 个,价格 300 $

  那么 当前移动平均价=(20000*150+10000*300)/(20000+10000)= 200 $,当前数量变成 30000

3 自动生成凭证

  主要发生在采购 销售 和 生产 的业务发生后,自动生成财务凭证

  采购业务的会计分录

  入库时

  借:库存商品 (1243)

   

    贷:材料采购 (1201)

  收到发票时

  借:材料采购 (1201)

     应交税费-应交增值税(进项税)(21710101)

    贷:应付账款 (2121)

  付款时

  借:应付账款 (2121)

    贷:银行存款 (1002)

  销售业务的会计分录

  销售出库时

  借:主营业务成本 (6401)

    贷:库存商品 (1243)

  开出发票时

  借:应收账款 (1131)

    贷:主营业务收入 (6001)

       应交税费-应交增值税(销项税)(21710105)

  对方付款时

  借:银行存款(1002)

   贷:应收账款 (1131)

  在销售 出库 收款时,系统都能自动生成会计凭证,金额从单据中提取,而记账科目则需要预先定义,也就是说,你要指定你的科目表中的哪个科目对应主营业务收入,比如6001,哪个对应应收账款,比如1131,那个对应应交增值税(销项税),一般都是2171

  生产则涉及到 原材料科目(比如1211),在产品科目(1241),生产成本科目(4101),制造费用科目(4105)的指定

  由于国外erp软件一般没有委外加工的功能,需要做变通处理,可以设置虚拟仓库,纪录委外发出原材料,科目上相应的要设置 委托加工物资 科目

  发出材料时

  借:在途物资

    贷:原材料

  收到委外加工产品时

  借:委托加工物资

    贷:在途物资

  一个比较复杂的问题就是,商品入库时,没有收到发票,就会以订单价格或标准价格入库,入库后下月收到发票,如果发票价格与入库价格不一致,国外软件一般计入库存差异,而国内是计入 材料成本差异 科目,另外,应收应付账款是出入库确定,还是开票确认,也会涉及到不同的会计处理,需要增加 库存商品-销售及 应计负债(未税价)等中间科目

==================================

附录

ofbiz快速操作流程

1 建立一个类型为原材料的产品m1,和类型为成品的产品p1

2 建立一个角色类型为供应商的客户组g1,和类型为客户的客户k1

3 设置产品m1 p1的价格和供应商价格

4 设置产品m1 p1的仓库为ofbiz的webstore,位置,并初始化库存各6000个

5 建立一个销售订单,销售p1给k1,店铺为ofbiz的电子商务店铺,从webstore出货

6 建立一个货运计划,交付p1

7 到仓库执行分拣和验证包装

8 建立一个销售发票,和销售付款,与发票匹配

9 建立一个采购订单,从g1采购原材料m1

10 到仓库接受库存m1

11 开采购发票,采购付款,与采购发票匹配

12 新建一个规程任务rtask1

13 新建一个p1的物料清单,子项为m1,数量1,规程任务rtask1

14 建立一个生产单,生产p1, 选择规程任务,然后开始,从仓库领料m1,完成,将生产的p1入库

15 到仓库里可以看库存明细,也可以做仓库调拨和货位移动

16 在总帐里关闭已有的会计期间,新建一个当月的会计期间

快速流程走过一遍,就可以做比较复杂的配置,比如可定制产品,虚拟,变型,特性的配置

 

猜你喜欢

转载自blog.csdn.net/lijianhua1974/article/details/51605836