库存盘点业务应该很多程序员都不陌生,因为但凡是涉及到库存管理的方面的系统,都必须要有盘点的功能。盘点,其实就是商品的实际库存数与系统账面库存数对照,并在系统中录入盈亏并调整系统库存数量的一个过程。一句话,就是做到帐实相符。这小小的业务,在我们项目中也把我折腾的够呛。
一般情况下,在盘点的这个时间内,不允许系统单据操作,最主要是出入库单据的操作,因为这会影响到系统的库存;同样的理由,也不允许实际仓库的出入库操作。
这就涉及到一个问题,是否需要在系统中限制用户对系统的操作?是否需要在系统中判断单据的完成情况?
大多数的系统可能都不会限制用户的系统操作,至少这样给用户的感觉就不太好。我们的CRM系统、门店系统以及我们现在做的这个系统都没有做这个限制。主要从管理上来解决这个问题。但是我也见一个系统,用户可以开单,但是系统会限制对单据的审核等操作。
现在我们这个系统就没有做这个限制,甚至是连盘点表的打印功能也是通过当前库存查询的界面直接导出成Excel才能打印,这有点不方便,但是还能忍受,主要是导出数据的时候,如果导出的数据量太大,速度会很慢,会很影响系统的效率。
盘点之后,把盘点结果录入系统,我们系统采用的方式是,直接录入盘盈盘亏单来调整库存。盘点录入功能放到系统其它出入库单中去操作,只是设置不同的科目就可以了。
基本上盘点功能做到这里就可以了,后来业务方面的人来提出来,盘点单打印之前,必须要能够提供一个功能,提醒当前哪些单据还没有完成。这主要是担心盘点过程中还有业务继续操作,以致影响盘点结果的正确性。
开发方对这个功能提出来说,实现难度很大,而且没有必要。主要是本来系统内出入库的单据种类很多,要一个一个类型的去判断。同时,就算判断出来了也只能做提醒功能,系统不强制限制,没有太大的意义,考虑到项目目前的进度延期以及工作量等方面的原因,就不做了。
基本上我的观点和开发方的观点是一样的,后来我们内部自己也讨论了一下,就不开发这个功能了。
财务方面的人某天给我打电话,说盘点录入,也就是其它出入库的盘盈盘亏不能录入单据日期,可能会有很大的问题!
我们系统最初提交需求的时候,没有说能够修改单据日期,后来开发方在做系统的时候,就默认单据日期是当前日期,并且不允许修改。(这个项目中,很多没有明确的东西,开发方都按照他们的意思直接默认一种方式开发,这一点很让我们头痛!)后来我们自己也默认了不能修改单据日期的这个现状。
但是财务的人说,盘点完成之后,要对盈亏查找原因,还需要经理签字确认才能修改库存,这一般情况下需要几天才能完成。等领导签字之后,才录入系统,这就造成了库存改动的滞后。如果恰巧是在月末盘点,库存盈亏录入是在下一个月,那么会造成上一个月的帐不准确,或者说系统帐与财务系统帐对不上的问题。
财务系统是允许录入的时候修改单据日期,直接做到上一个月的帐里边去,而且实际中也是这样操作的,我们业务系统不能这样做,就会出现差异。
并且,财务说,碰到跨年的时候更是会出现这个问题,会造成整年的数据对不上。
我后来提出来说,让他们每个月提前盘点,月底之前录入系统就不会出现这个问题了。这是从管理上来解决问题。但是财务的人说,日常的盘点是可以这样操作,但是年末的时候,上市公司的财务审计,审计会要求监督盘点(简称监盘),都是他们说哪天盘点就是哪天,如果碰到跨年,可能审计会认为两个系统帐对不上。为此在会议室吵了半天。(再加上我们的财务模块的负责人,有一点点耳聋,平常跟他说话都要声音大一点才行,这次几方面一起来争论,我靠,那叫一个声势浩大啊!)
没有办法,只有让开发方对盘盈入库和盘亏出库单独做一个功能,允许修改单据时间。开放时间之后,又要做限制。比如已经结账之后,就不能提前到上一个月等等,也很复杂。
总结:很多简单的业务,只要扯上财务,都会变得比较复杂。财务和审计的要求都是很复杂的。上市公司的业务系统,也是有审计要求的。系统设计的时候一定要小心!