如何设计进销存系统的财务模块(1):成本与记账

文章正文
发布时间:2024-03-25 08:48

去年接手了财务需求,由于本人没有财务理论知识和财务工作经验,刚接触时真的是毫无头绪、无从下手,可能也会有财务0经验的产品同学会面临这样的情况,希望把这一段时间财务模块相关的学习、设计和心得分享给大家,帮助更多的同学~

1. 学习财务基础知识

如果是0财务经验的产品同学,刚接手财务模块的工作,了解财务的基础知识是非常必要的。

财务最重要的一项工作是通过各种报表数据反映企业目前的经营状况,因此财务模块的终级目标是根据财务同学的要求,出具对应的财务报表。

不论财务是直接将这些报表数据对外提供,还是只是将报表作为数据源再进行二次加工,都要求产品同学能够理解哪些业务数据是重要、有意义的,需要转化为财务数据的。

我自己是在不同平台学习了初级会计的课程,学完后会对财务有个大概的理解。

至于要重点学习哪些内容、学习到什么程度,取决于公司的具体业务,例如我们的业务只有基本的采购、代销入库、销售、库内管理(盘盈亏、报损),当我基本理解了资产/负债/所有者权益、三大报表、进销存业务的会计分录后,就开始进行规划了。

2. 财务模块的定位

在规划详细的功能之前,需要先确定财务模块的定位。这里的定位指的是,需要产出一个完善的财务系统(类比金蝶、oracle的财务产品),还是只需要将业务数据用财务语言描述出来,能指导企业日常的经营管理即可。

由于本公司的财务统一使用了oracle系统,且财务需要管理的不仅有进销存业务,还有房租、水电、人员工资等,作为业务系统,只需要提供主营业务的财务数据即可,因此我选择了后者。

3. 模型搭建

财务模块的基本模型如下:

图1

3.1 财务基础信息

财务模块具体有哪些基础信息,需综合考虑以下因素:

(1)取决于财务视角是否需要对这些基础信息进行再加工,例如下图所示。ABCDEFG在业务系统中都是独立的仓库,但是在成本计算时,需要对ABCD四个仓库统一计算成本,这一信息是专门适用财务的,不影响正常的业务运作,我们就会考虑把ABCD的关联关系作为财务模块的基础信息。

图2

(2)取决于财务视角是否需要按照业务对基础信息的定义进行区分。例如图1的供应商、B端客户、C端客户,对于财务来说,都属于往来对象,因此业务系统的这3类基础信息,在财务模块中可以合并为往来对象。

(3)可以参考开发同学的意见,从技术角度考虑冗余的必要性。

3.2 成本模块

成本模块是用于计算库存成本的,不同企业可能采用不同的成本计算方法,这个依据实际业务需求即可。

(1)这里顺便提一下不同的成本计算方法

先进先出:期末材料按照最接近的单位成本计算,比较接近市场价格,因此资产负债表可以较为真实地反映财务状况;但是由于本期发出材料成本是按照较早购入材料的成本进行计算的,所以计入产品成本的直接材料费用因此可能被低估,等到这些产品销售出去就会使利润表的反映不够真实[1]。

移动加权平均:按照每次出入库商品数量和金额计算平均成本,从长期来看商品的成本是趋于稳定的,也能更好地反应商品的成本,但是计算非常复杂,每发生一次业务就需要对成本进行移动[2]。

个别计价法:分别按照各批商品购入时的单位成本计算期末存货成本。适用于数量不多、价值较高的商品[3]。例如钻石制品,而建筑用的水泥、沙子显然不适用这种计算方法。

(2)由于我们采用的是移动加权,这里重点分享一下,成本模块分为成本计算和成本调整两大块:

成本计算公式:移动后成本 = (|移动前库存金额| +| 本次业务发生金额|)/(|移动前库存数量| + |本次业务发生数量|)。

成本要按照什么维度进行移动,这个取决于业务方需要对成本管控到什么力度,需要成本来做什么。我们目前是记录到仓库+商品维度,每个商品在一个仓库中,只有一个成本,每一次入库对成本进行移动。也可能有些公司需要对成本记录到仓库+商品+供应商维度,也可能有些公司只需要商品的成本,对所有仓库的商品统一进行移动加权。

当根据第1点的计算公式计算出的成本金额产生异常时,例如期末库存数量为0,期末库存金额不为0(异常情况可根据财务和业务的要求自行定义),系统会触发自动调整机制,将成本调整为一个合适的值。

3.3 记账模块

记账模块主要是从财务视角来看企业主营业务涉及到的账款问题,分为应付账款、预付账款、应收账款、预收账款。

3.3.1 应付预付

(1)预付账款

官方释义:预付账款是指企业按照购货合同的规定,预先以货币资金或货币等价物支付供应单位的款项。是预先付给供货方客户的款项,也是公司债权的组成部分。在日常核算中,预付账款按实际付出的金额入账,如预付的材料、商品采购货款等。对购货企业来说,预付账款是一项资产。

简单理解就是预先支付了供应商一笔钱,还没收到货。这笔钱在财务账上就会记为预付账款

(2)应付账款

官方释义:应付账款是企业应支付但尚未支付的手续费和佣金。通常是指因购买材料、商品或接受劳务供应等而发生的债务,这是买卖双方在购销活动中由于取得物资与支付货款在时间上不一致而产生的负债。

简单理解就是供应商货已经入库了,应该要付给供应商,还没来得及付的款项。

(3)记账与核销

应付账款和预付账款,都分为记账与核销两步。这里需要先梳理一下当前业务系统有哪些单据,是需要分别记录应付和预付的。

系统的逻辑与财务记分录的逻辑类似,这里用预付付款单和采购单作为例子简单说明:

1)预付的付款单,出纳成功付款10,000,会记录预付账款10,000元,此时预付款可用10,000元

2)采购订单下单了1,000,并且商品已入库,会记录应付账款1,000元。

这里需要关注以下内容:

应付账款是在什么节点记入。这个与企业采用的会计核算制度,由于本企业采用的是权责发生制,即按照商品的货权和风险转移的节点进行记账,所以是在入库节点。

预付账款的可用余额是否需要变更,入库1,000元,如果使用的是之前10,000元的预付款,则实际可用的预付款变为了9,000元。

3)采购订单完成付款,将1000元的应付账款进行核销,此时企业就没有应付了。

3.3.2 应收预收

(1)预收账款

官方释义:预收账款是指企业向购货方(小店或大客户)预收的购货订金或部分货款。企业在收到这笔钱时,商品或劳务的销售合同尚未履行,因而不能作为收入入账,只能确认为一项负债,即贷记“预收账款”账户。

简单理解:钱收了,货还没发出去(正数的预收)。 钱已经退了,但是货还没入库(负数的预收)。

(2)应收账款

官方释义:应收账款是指企业在正常的经营过程中因销售商品、产品、提供劳务等业务,应向购买单位(小店或大客户)收取的款项,包括应由购买单位或接受劳务单位负担的税金、代购买方垫付的各种运杂费等 。应收账款是伴随企业的销售行为发生而形成的一项债权。

简单理解:客户向企业买货,货发出去了,需要记一笔应收,表示这是企业应该收回的钱。客户退货,入库完成,记录一笔负数的应收。

(3)记账与核销

与应付预付一样,应付账款和预付账款,也分为记账与核销两步。

这里用销售单作为例子简单说明:

客户下了一笔销售订单1,000元,并完成了线上支付,此时订单生成,商品还未发出,会记录预收账款1,000元;

这笔销售订单出库后,假设缺货发运,只发了800元的货,会记录800的应收账款;

使用800的应收账款核销了1000元预收中的800,且预收账款同时核销了800元的应收账款;

当200元退给客户时,使用缺货退款的200元核销1000元预收中的200,至此,预收账款和应收账款核销完成。

剩余的对账模块和财务报表(包括应收/预收的报表)会放在下一篇中讲述。

本人也还是财务方面的小白,将之前产品设计和学习的心得与大家分享,有问题的话,还希望大家多多指出哦~