某制造企业成本管理实施过程数据问题与解决办法回顾

前言说明

前段时间在实施某制造企业的用友U8+成本管理项目时候,遇到了不少细节问题,花费了不少时间,想一想还是专门写一篇日志,供后续项目参考使用,避免再次踩雷,由于遇到的细节比较多,暂时先写几点,后续有空再补充。

项目背景

这次项目实施属于第二期实施,距离第一期项目已经过去两年多了时间了,当时也是我主导实施的,主要开展了供应链(采购、销售、库存、核算)、财务(应收+应付+总账+固定资产+UFO)及生产制造(BOM+订单)三个领域的实施。
 
第一期实施过程中考虑到甲方原有信息化基础较为薄弱 ,如果同时上成本管理可能难度较大。因此,第一期主要将生产订单视作为供应部门出入库的依据,以及成本会计核算材料成本的依据,并没有考虑成本管理应用相关的细节需要。
 
所以,当本次实施成本模块的时候,面对两年多以来积压了一万多行的未关闭生产订单,就得先开展数据清洗工作了,需要清理的主要事项主要包括:
确定哪些订单已完工、哪些未完工、各在产订单的期初余额数据、累计完工数据等等,还需要根据确定的成本核算方案,将这些订单匹配到各成本中心。
 
由于该企业的产品大多数为非标准件,产品的bom十分复杂且难以复用,最多的一种产品有数百种子件,因此非标准件直接放弃了BOM表环节,直接录入非标准生产订单子件。
此外,各类产品不仅子件数量及层级十分复杂,而且频繁有临时替换件、挪料等现象,都为信息系统应用带来了巨大的挑战,好在这些问题在第一期项目实施中基本得到了解决。

处理过程

1、定义核算对象出现重复记录

在进行订单数据清洗的过程中,我发现我自己查询的成本对象记录为1455条,而软件前台刷出的记录是1456条,只好导出软件刷新的记录和我自己查询的进行比对,最后发现是某一行生产订单记录出现了两次。

某制造企业成本管理实施过程数据问题与解决办法回顾_第1张图片

仔细发现,这两行一行是子件,一行是母件,原来是订单子件录入人员不小心将某子件设置为“产出品”,修改后问题解决。

某制造企业成本管理实施过程数据问题与解决办法回顾_第2张图片

2、期初余额-专用材料清理过程

首先,在数据库中,按照系统的实际成本对象定义规则(审核日期<=本月,关闭日期>=本月),将所有生产订单行查出(mom_orderdetail表、mom_order表),包括订单行状态、订单号、行号、母件编码、母件名称、生产部门、审核日期、修改日期、关闭日期、应生产数量、已入库数量,查询结果行数应当和前台刷新的成本对象行数一样(上一点解决的问题)。
然后,将各行Left Join到材料出库单主表与子表(按Mocode+Mosort)、产成品入库单主表与子表(按MoID),查询“最后入库日期”、“最后领料日期”、“九月份之前入库数量”、“九月份入库数量”、“九月份之后入库数量”、“九月份之前领料金额”。
根据这些信息,就可以按如下规则进行期初余额的清理了:
  1. 九月份之前没有领料的行可以排除,不存在期初余额。
  2. 九月份之前领了料,且九月份之前没有入库过的,则金额全部为期初余额。
  3. 九月份之前领了料,且九月份之前总入库数量>=应生产数量的,则没有期初余额。
  4. 九月份之前领了料,但九月份之前总入库数量<应生产数量的,需要人工判断期初余额。
最终,1455条就只剩下43条需要人工判定期初余额数量,将结果提交给甲方成本会计,让她结合自己平时成本核算过程中登记的在产品台账进行判断,该问题就有效解决了。
当然,这43条记录还可以进一步清洗,例如,最后领料日期如果<=最后入库日期,那基本上也可以判定为没有期初余额,但是由于记录数太少且并不绝对,就不做进一步筛选了。
某制造企业成本管理实施过程数据问题与解决办法回顾_第3张图片

3、查找并关闭已完工生产订单

由于该企业生产订单的交货周期长短不一,短的可能一个月,长的可能数年,所以录入时间久不代表不在生产,所以,对于这10000多行生产订单,哪些可以关闭,哪些正在生产,如果仅仅依靠甲方自己人工判断,那估计项目要到明年才能上线了,所以同样需要按照一定规则进行数据清洗,这里我主要依据如下几个规则:
  1. 如果订单累计入库数量>=订单生产数量,且最后入库日期在9月份之前,肯定可以关闭。
  2. 如果订单累计入库数量=0,累计领料数量=0的,肯定可以关闭(未来确实需要再打开)。
  3. 如果0<订单累计数量<订单生产数量,这个就需要依赖人工判断了。
按照上面几条规则,类似上面的专用材料清理过程,查询数据库过滤后,10000多行生产订单就排除了7000多行,这些我直接后台update,统一在8月31日进行关闭,最后将剩余的3000多条提交给甲方进行处理,经过甲方内部多个部门的沟通,最终又人工关闭了1000多条,剩下1000多条记录为在产或待产订单,总算解决了这个问题。

4、补录部分其他入库单的成本

除产成品入库单及特殊单据外,各类入库单均需要录入成本单价及金额,否则将导致成本计算出错,但是对于拆卸、组装、转换等业务形成的其他入库单,无法直接修改录入单价金额,必须修改上游单据,过于繁琐,因此直接通过后台进行修改,这个容易,以某三张拆卸单为例:

--查找主表ID
select * from rdrecord08 where cCode in ('QTRKD190900064','QTRKD190900080','QTRKD190900120')
--按主表ID修改单价
update rdrecords08 set iUnitCost='69303.03',iprice='69303.03' 
where id in ('1000060751','1000063393')
update rdrecords08 set iUnitCost='65890.01',iprice='65890.01'
where id in ('1000061097')

5、修改先出库后补入库的单据日期

由于该企业未能对所有单据做到严格序时录入,经常出现先入库,然后补更早日期的出库单的情况,在计价方式为移动平均的情况下,就会导致较早日期的出库单发出成本计算错误,对于这种情况,解决办法是:
  1. 首先在卷积计算之前进行人工干预记账,先对采购入库单、其他入库单、特殊单据进行记账,之后再卷积计算,这样可以过滤掉大多数先出库后入库导致无成本的问题。
  2. 由于人工干预记账的对象是最底层的入库单,所以对于更高阶半成品/产品的先出库后入库,上述情况办法就无法处理了,只能后台强行修改单据日期,把入库日期改到早于出库日期,例如这种情况:

按如下语句修改后问题得到了解决:

update rdrecord10 set ddate='2019-09-01' where cCode='CCPRKD190900155'

 

你可能感兴趣的:(某制造企业成本管理实施过程数据问题与解决办法回顾)