进销存软件中的存货成本价到底该怎么算
本人一直在从事管理软件的开发工作,做过仓库管理系统、进销存系统、分销系统等等,都涉及到成本价的问题。程序员一般对会计知识不太灵光,一看到这方面的问题就头晕,为了解决存货成本价的问题,我费尽心思去尝试,希望能找到一个完美的办法,既容易理解又能简单实现,业务发生变动时还能灵活处理,最重要的是要和会计模块的库存商品科目对的上。但是很遗憾,到现在为止还没有找到。每种成本计算方法都有缺点,下面先看下有哪些常用的成本计算方法吧:
一、常用的成本计算方法:
1.先进先出法:先进先出法是先购入的存货先出货,其成本属于实物成本,计算机处理时成本价格应由计算机自动分析获得,其单位成本价格应不具有可修改性,出货时用户只录入出货数量,不录入成本单价,由计算机自动分析获得成本单价。为此,计算机必须按时间先后顺序记录购货数量及成本额。该方法的出货成本是按最早的购货价格确定的,用户不能随意挑选存货价格以影响当期利润,因此其存货成本最接近现行的市场价格,能较好的反映资产负债表存货的价值。
2.后进先出法:后进先出法是后购入的存货先出货,和先进先出法一样,其成本应由计算机自动分析获得,其单位成本价格应不具有可修改性。为此,计算机必须按时间先后顺序记录购货数量及成本,出货时由用户录入出货数量,不录入成本单价,由计算机按照和先进先出法相反的顺序分析获得成本。该方法的出货成本是按最近的购货价确定的,用户也不能随意挑选存货计价以影响当期利润。由于后期的价格在正常情况下可能较早期高,因此计价成本可能较高,故可使本期利润降低,但该方法也因此符合会计上的稳健性原则。
3.个别计价法:个别计价法对出货成本进行个别计价,适合于对成本较敏感的企业,如大型医院,存货部门购入存货后,要由各部门领用,在成本核算较严格的情况下,各部门的领入成本直接和效益奖金挂钩,这时候必须对成本进行个别计价,即必须按照部门所需产品的市场价格进行计价。在计算机处理上,必须使用户既能录入数量,又能录入成本单价。该方法最接近会计上按成本进行计价的原则,但相对也比较复杂,即使采用计算机,工作量可能也比较大,适用于一般不能互换使用的存货或容易识别、存货品种数量不多、单位价格较高的产品。
4.加权平均法:是一种全月一次加权平均法,它是根据期初存货结存和本期收入存货的数量和进价成本,于月末一次计算存货的全月加权平均单价,以求得本期发出存货成本和结存存货成本。这种方法必须到月底才能获得成本价格,和计算机即时即得的管理特点相违背,因此没有采用其管理的必要性。
5.移动加权平均法:这种方法因为其简单性,是计算机软件设计中普遍采用的一种方法,软件工程师在设计存货管理程序时,可能不知道这种管理方法的会计学名称,但都采用该方法的管理思路。按照这种方法,在入库时,计算机增加存货的库存量和库存额,在出库时库存额除以库存量即为单位成本。该方法是手工管理下非常繁琐的一种方法,但在计算机管理下却是程序设计最简单的一种方法,因此大多数软件供应商都把这种方法作为存货管理的主要方法。
6.计划成本法:这种方法按计划成本进行度量,在每一种产品上设置该产品的单位计划成本额,出库时由计算机自动获得该成本。计划成本法下计划成本额的确立需要相当的可操作性,必须建立在充分调研使之具有充分可行性的基础上,但确立的存货计划成本往往随着时间的推移越来越不具有可操作性,因此在存货管理软件中和实际管理工作中并不多见。
7.毛利率法:毛利率法是根据本期销售净额乘以上期实际(或本期计划)毛利率匡算本期销售毛利,并据以计算发出存货和期末存货成本的一种方法。这种方法由计算机计算出上期毛利率,然后算出出货成本,用户只需录入数量。
[例]:某公司于2010年4月初A类库存商品60000元,4月购进50000元,4月销售收入121000元,发生的销售 退回和销售折让为11000元,上月该类商品的毛利率为20%,则4月已售商品和库存商品的成本计算如下:
4月销售净额=121000-11000=110000(元)
销售毛利=110000×20%=22000(元)
4月销售成本=110000-22000=88000(元)
库存商品成本=60000+50000-88000=22000(元)
8.零售价法:零售价法是指用成本占零售价的百分比计算期末存货成本的一种方法。这种方法具有和加权平均法一样的弊端,是一种由月末推算月初的管理方法,并不适合用计算机来处理。
二、以下谈谈我用过的几种方法:
先进先出法:优点是:.容易理解,实物计价嘛,进来什么价,出去就什么价;与当前库存商品的实际价格最贴近,能够比较真实地反映库存金额。
我开发过一个工厂的仓库系统,成本计算用的就是“先进先出法”,系统使用一个队列来存放每次进仓的价格,出仓时从这个价格队列的尾部依次取出作为出仓时的成本价,整个体系看起来很完美地实现了先进先出的原则,觉得彻底解决这个问题了。可以很快问题就出现了,当进出仓单据出错了,需要修改时就麻烦了。冲帐、删单、修改都会给这个队列体系带来严重的冲击,虽然对算法做了一次次的修改,努力辨识每一种纠错逻辑,并试图让程序自动修正那个单价队列,也取得了一些效果,但是真的太辛苦了,最终的存货金额也不尽如人意,最终还是使用标准成本来做报表了。我认为这是一次失败的尝试,而且下决心以后再也不做这个傻事了。
移动加权平均法:上面也说了,手工情况下这种是最难的,但是在软件中它却是最简单,所以是软件中用的最多的一种成本计算方法。第二次开发一个进销存系统时,我就毫不犹豫地选择了这种方法。
建一个触发器,仓库流水表每进一笔就立即计算一次成本价,出仓时就取这个成本价,实现起来很简单。这个系统运行了很多年,用户量也非常大,基本没有太大的问题。有一些认真的用户也把进出仓数据导出来,在电子表格中反复模拟,验证这个成本价是否可靠,最终的结论是:绝大多数情况下都没问题,特殊情况下可能会不准确。什么情况呢?删单。若已经出仓了,又反过来删除一部分进仓单据,就会造成重算的成本出现较大的误差。特别是最终库存量很少时,这种误差会累积到这几个剩余的货品上,使得库存金额不准确。为了解决这个问题,只好设计了一个“同步”功能,定期重算一下仓库的成本价,算是一个事后补救措施吧。
加权平均法:也叫做月末一次加权平均法,在开发“易管E8家具软件”时,就用了这种方法,进仓时就用单据上的价格作为成本价,平时出仓时用标准成本价。到了月底结帐时,用上期结存和本期收入的加权平均价作为当月所有出仓单的成本价。出仓单上就有两个单价了,一个是当初的标准成本价,一个是结账时的当月加权平均价,两者的差额就直接计入材料采购差异了。
这种方法的优点是容错性好,平时进出仓时并没需要加权运算,所以冲帐、修改、删单都不会对最终的库存金额产生影响,库存金额的计算也相对准确。缺点是平时看库存报表时,有多种成本价,用户不好理解。现在发现的问题是转库单,它是一个仓库的出仓,同时又是另一个仓库的进仓,在进行加权运算时,会对最终的库存金额产生误差。
三、说在最后的话:
我认为这个问题之所以被很多用户关注,其实是对成本价的理解不够深刻,以为它是一个客观的东西,应该有一个确定的数字。但其实不是,我认为成本价只是存货核算时用到的一个管理数据,根据不同的核算方法,它的数字是不同的。比如:先进先出法和移动加权平均法下,同一笔出库取到的成本价就是不一样的。
如何理解这种不一样呢?
它只会影响“当期”的利润,而不会对公司利润产生实际性的影响。计算毛利时,是用销售额减去成本额。若成本额算多了,毛利就会少,但同时仓库的库存金额也会多,而多出的这部分会被计入材料采购差异。反之,若成本额算少了,毛利就会多,同时库存金额就会少,少的部分也会入材料采购差异,整个公司的长期利润并不会有变化,只是在没有考虑材料采购差异的情况下,计算出的当期利润会受到影响。所以,有些公司会利用核算方法的这种特性来避税。
所以说,其实不必太在意存货成本价的核算方法,它既不会影响到与供应商的结算,也不会影响与客户的结算。比如:毛利率法、零售价法,这种就更“毛”了,完全是一种估算,仍被使用,就说明了成本价的这种内部管理属性。
最后说一句,有条件用“个别计价法”的话,这些问题就不存在了。但是请注意前面的描述:即使采用计算机,工作量可能也比较大,适用于一般不能互换使用的存货或容易识别、存货品种数量不多、单位价格较高的产品。
(以上论述纯属探讨,不对的地方请指正,不胜感谢!)