工程物料管理信息化建设(七)——为什么箱单和合同量单对不上

一、前言

我们为什么要让箱单和合同量单做到材料项一一对应?
为了实现数据的一致性和连贯性,为了追踪材料的全生命周期状态,为了看材料一览表;

二、问题分析

箱单与合同量单对不上,大概这么几个原因

2.1成套设备

我们又叫包设备,这种类型的设备一般由众多部件组成,初期我们只能确定要买这个设备,但是厂家发货的时候是按照部件分批发货的,所以发货单上可能有几百上千件东西,而我们当初买的的时候开出的合同量单上可能只写了某型号设备几台,这两者之间无法对应。

2.2管道大宗散材

管道大宗散材全部来自三维设计软件,带有标准材料编码,一般是买多少到货相应的数(注意这里用词是相应的数,不是绝对买多少到多少),那么合同量单和箱单就能做到一一对应了吗?其实也很困难,只能说情况比成套设备好,毕竟标准的材料编码体系从数据结构角度而言提高了材料分项和合并的可操作性,但是在工程实践中,依然有现实问题导致无法做到一一对应,比如我们要买100个阀门,我们会在合同量单里写一行阀门规格XXX,采购量100。但厂家是按照装箱的实际情况编制箱单的,比如100个阀门要分5个箱子装,那么箱单上这个材料就会分割成5项(行),或者分在5个箱单上,以箱单数据作为右连接查询,原本1行数据就变成了5行,数据被切割成用户不期望看到的样子,原子性遭到破坏,冗余的数据制造了错误的统计量,比如采购量就被乘了5倍;不但合同量单和箱单没法做到一一对应,而且我们想要的一览表也是没法生成的。

2.3内部协调和管理问题

原本我们有一个非常精巧的设计,解决材料不带编码的问题。合同量单在导入的时候系统会对没有编码的材料自动生成编码,编码的格式采用专业码+流水号+#后缀,注意这说明所有进入系统的材料都有编码。箱单导入的时候对于新增补的材料项,注意这里用的词是新增补,意思就是我们默认其它的材料都有编码,编码在打印箱单的时候从合同量单里带过来。如果厂家在填写箱单的时候因故有部分材料没有编码,导入的时候我们设计了另一个机制就是再次自动生成编码,编码的格式采用X+流水号,这个自动生成编码只适用于采购量单里没有,箱单补充的部件性质的材料。

结果在项目应用执行阶段,由于合同量单没有编码,导入的时候,先在合同量单数据里生成了编码,但是采购人员又拿着那个没有编码的单子给供应商继续做箱单,于是箱单也没有编码,导入箱单进系统的时候,问题就出现了,原本叫PP000001#的材料在箱单里变成了X0000001,一一对应这个目标因为操作上的错误而无法实现了,这属于内部专业之间的协调问题,没有把带编码格式的箱单模板发给厂家去填写。其实在合同量单导入之后,在重新导出一份箱单就可以了,箱单自然带上了编码。

这个问题告诉我们再好的程序设计没有好的执行操作也是白搭。执行操作层面的问题表面看是人为操作的错误和软件使用经验不足,背后的根源是工作流程有漏洞,制度建设不完善。

2.4供应商不配合

即使是把系统导出的箱单模板发给厂家,有的厂家的配合程度也有限,有的没有按规定填写,有的直接改动了系统固定的模板,直接在里面加项减项;有些牛逼的供应商按自己的模板发回我部,根本不理这茬事,如果项目没有安排专职的人员手工处理箱单,箱单跟合同量单对不上,箱单卡在导入环节,数据无法进系统;

2.5其它千奇百怪的原因

其它千奇百怪的原因。

三、思考和总结

3.1、一一对应没有我们想象的那么必要

追踪材料的全生命周期没有必要一定要合同量单和箱单一一对应,只要我们能做到用材料编码或者位号保障材料的唯一性,每一个生命周期环节填写输入的数据都可以关联到这个编码或者位号,那么只要我们以这个编码或者位号去检索,就可以查询到该材料在每一个环节上的材料状态,达到全生命周期追踪的效果。

3.2、一览表不等于一张表

一览表为什么开发的那么困难,其实有一个误区是我们总想把数据出在一张表上,把材料的全生命周期状态放在一行里显示出来,我们想来想去放在一行的好处到底是什么?我觉得可能是看着直观吧,但是直观不是刚需。结果因为这个一一对应的问题解决不了,导致材料的全部状态(包括材料量)想放在一行里根本实现不了,数据的正确性都没有,看得直观也就没有意义了。

而当我们换个思路,一览表还是可以出来的,我们一览表中的一行数据在材料的不同阶段曾经经历了分项与合并,因此一行数据在某些节点其实内部包含着一个树形结构。问题迎来了转机,一张表变成几张折叠的表,原来我们期望的一行,从合同量单到箱单对应这个环节打断强耦合,靠编码和位号实现关联(松耦合),箱单变成合同量单的下一级数据,我们会发现没有的强制一一对应的约束,数据似乎可以以一个簇的形式展示出来,只要有一个好用的查询界面,一览表的全部功能就能用这个界面代替了。
工程物料管理信息化建设(七)——为什么箱单和合同量单对不上
我回想起PRM为什么没有这种一览表,可能也就是这个原因,PRM采用类似我们目前做的综合查询界面来解决数据的查询检索,这个问题我觉得PRM已经提供了标准的解决思路,我们没有必要继续撞南墙。

3.3、解决方案

  1. 不要再幻想箱单和合同量单材料项一一对应,这是不可能的;
  2. 如果要管箱单,把箱单作为合同量单的下一级去管理;
  3. 用其他的管理手段实现合同量单里材料项的全生命周期状态追踪(包含箱单、到货、出库),避开强制材料项一一对应的约束要求。
  4. 针对不同的材料类型(例如包设备、管道大宗散材)确定不同的管理粒度,根据不同的箱单对应程度标准执行管理。

四、后话

这个问题是用户在EPC中后期阶段最关注的问题之一,但是很遗憾这个问题也是最难讲清楚的,用户不能理解,就会觉得是软件不好用,但是你又很难让他相信这不是软件的问题。

因为起初我们和大家一样都觉得这个事很好解决。比如我们按照合同量单打出一个很标准的箱单模板,合同号、请购单号、材料编码、位号、材料描述、主项号,全部整整齐齐,心想这样丢给厂家只要你填个批次号和发货量这回该简单了,不会说填不了吧,结果人家还就是说填不了,不能按他们的要求分拆行,行,我们把模板解锁,让他们加行,但是问题再来,加行还是不行,你合同上的材料描述和箱单的材料描述都不一样怎么填?(更不要说编码一样描述不一样的材料了,我们就装作没有这个事吧),算了,我们自己给它适配个编码让人家导进去,于是再次妥协,妥协的结果就是导入的箱单材料项和合同量单的材料项对不上,于是统计数据、报表、看板也就都不对了,再来问我们怎么办?于是再想新招,比如要我们不要用编码+位号做关联了,只用位号,当然这肯定是不行的,原定的数据关联关系一旦打破规则,后面引起的连锁反应不是三两个人突击两天解决的。

用挖一个坑去填另一个坑的方式来解决问题,最后的结果只能是软件需求向着错误的方向蔓延,不断地吞噬开发团队的人力资源做没有实际价值的功能,或是查数据为什么对不上这种明知故问的问题。从应用角度来说,大家原定的技术方案在不断地被推翻,对项目应用的细节要求随着我们的推进不断地简化、降低、天窗、绕路,系统永远在重构,用户永远不满意。当初期望管理箱单的美好愿景变成了现在的“去他妈的先整进去再说”,我想这也许就是走的太远,忘记了当初为什么出发
工程物料管理信息化建设(七)——为什么箱单和合同量单对不上