首先,我们要对库存帐有个概念
假设初始库存数量为5,然后进了一批货,数量为10,那么进货后,库存数量就变成15了;
假设初始库存成本总金额为50,然后进了一批货,进货总成本为100,那么进货后,库存成本总金额就是150了;
也就是说,不论是库存数量,还是库存成本总额,都会满足
期初±发生=期末

所以无论是以下那种计算方式,最终都必须满足这个原则

I.计算方式概述

一、先进先出

此处要引入“批次库存”的概念,使用此种方式时,零售商需要对每一批进货单独计算存量、单独记录成本,形成一张批次库存记录表,比如(以下均以一个商品在一个库存管理地点为例)

批次号 批次入库时间 批次进货量 批次存量 批次进价
1 2021-08-01 10 6 5

此时库存成本金额即为 批次1的存量*批次1的进价

假设此时又进了一批货,则批次库存记录表变为

批次号 批次入库时间 批次进货量 批次存量 批次进价
1 2021-08-01 10 6 5
2 2021-08-02 15 15 6

这两个批次合计的库存存量为批次1的存量+批次2的存量,库存成本金额即为 批次1的存量*批次1的进价+批次2的存量*批次2的进价

当一个商品在一个库存管理地点上存在多个存货批次时,出货先出较早的批次,扣减对应批次的存量,假设上面这个例子售出2个,则批次库存记录表变为

批次号 批次入库时间 批次进货量 批次存量 批次进价
1 2021-08-01 10 4 5
2 2021-08-02 15 15 6

此时减少的库存成本为 售出数量*批次1的进价

当较早批次存量不够扣减时,按时间顺序扣减下一个批次,比如在上面的基础上再调出10个

批次号 批次入库时间 批次进货量 批次存量 批次进价
1 2021-08-01 10 0 5
2 2021-08-02 15 9 6

此时减少的库存成本为 批次1减少的数量*批次1的进价+批次2减少的数量*批次2的进价

另外,由于有了这个批次库存记录表作为依据,因此也可以进行人工指定批次的出货、高价先出、低价先出等方式,此时可以不遵从先进先出的原则。

二、加权平均

1.全月加权平均

加权平均法,又称全月一次加权平均法,是指以本月全部进货数量加月初存货数量作为权数,去除当月全部进货成本加本月初存货成本,计算出存货的加权单位成本,以此为基础计算当月发出存货的成本和期末存货成本的一种方法。

  公式为:

  加权平均单价=(期初结存存货实际成本+本期收入存货实际成本)/(期初结存存货数量+本期收入存货数量)

  本期发出存货实际成本=本期发出存货数量*加权平均单价

这里描述的按“全月”,其实只是泛指,在很多公司的确是有按自然月作为期间来进行数据的统计,但是不排除还存在按半月、一周、甚至一天来进行统计的。

如果把这个统计时间放到每一次进货时,则成了移动加权平均

2.移动加权平均

移动加权平均法。它是指在每次进货以后,立即为存货计算出新的平均单位成本,作为下次发货计价基础的一种方法。

  公式为:

  加权平均单价=(收入存货前结存存货实际成本+本期收入存货实际成本)/(收入存货前结存存货数量+本期收入存货数量)

  本期发出存货实际成本=本期发出存货数量*加权平均单价

移动加权平均的库存管理只需要一张这样的表格

存量 成本单价
5 4

库存成本金额即为 存量*成本单价

一个商品在一个库存管理机构只需要一条数据记录库存
假设进了一批货,数量10,进价6,则存量变为5+10=15,成本单价变为(5*4+10*6)/(5+10)=5.3333
库存表数据变化为

存量 成本单价
15 5.3333

假设售出2个,则库存表数据变化为

存量 成本单价
13 5.3333

II、比较

先看下智库一篇文章中的比较https://doc.mbalib.com/view/045ab9d0f6d91258ded36c013a3bc2a1.html

其中“对收发货较频繁的企业不适用”这条是没有说明根据的,因此此条不能作为缺点,另外我再进行一些补充:

1.比较移动加权平均和全月加权平均两种方式,可以发现,移动加权平均成本变化的及时性更高,全月加权平均的出货价格按1个月算一次的话,一次进货造成的价格变动最长可能滞后2个月才开始影响出货成本。也就是说,全月加权平均不能及时准确的体现出货成本,需要一个期间结束后才能进行统计,与之相关的一些指标,比如利润额/率、周转率等也是无法进行迅速地跟踪的。

2.移动加权平均成本法,统计商品库存成本更为高效,因为先进先出法依赖的批次库存表,可能存在很多个批次,需要对每个批次的存量成本进行计算后再求和,而移动平均成本法的库存表只有一条记录。而且为了防止批次库存表数据量一直增长,一般会考虑将已消耗完的批次归档,从此表中移除。并且在进行库存扣减计算时,移动加权平均法可以快速找到对应的成本单价,而先进先出法要进行相对复杂的查找,甚至可能还要找到多个批次的成本价。

3.移动加权平均法由于在计算时使用了除法,会导致计算出来的平均成本出现小数的情况,大多数情况都是除不尽的,而且业务软件系统中数值也有小数位数控制,所以只能四舍五入。几乎每次计算都会有一点偏差,导致总进货成本-总存货成本<>总出货成本,这部分需要定期进行处理,有两种方式
A.当差异累计到某个值的时候(比如足以使小数点后最后一位数发生变化),重算平均成本,即
新成本单价=(存量*成本单价+差异额)/存量
这种方式有一定的滞后性,但工作量小
B.根据差异产生成本调整的单据,即把差异合理化

4.普通的移动加权平均成本是不考虑商品货源的,只基于商品和库存管理地点来进行管理,若出货原因是退回给供应商,刚好库存存量中有两个供应商的货,又刚好两个供应商的供货进价差异比较大,那么普通的移动加权平均成本作为退货价是有可能发生争议的。

5.所有库存成本计算方式,目前都没考虑存量为0时还能继续出货的情况。

所以下面开始对此进行分析

III.存量为0时出库

这里我们先看下这种场景是怎么出现的,比如
供应商把货发给零售商的卖场,卖场员工点完数后直接上架销售,但还没来得及或者是忘了在业务系统中做收货确认,此时业务系统中的存量即为0。由于顾客此时可以拿到商品,以顾客为优先时,应该是可以将这笔商品售出的。

对于库存存量为0仍要继续出货的,一般有两种方式,强制记账或等待记账,
强制记账即存量可以减成负数,即所谓的负库存;
等待记账则为挂起这笔交易,等存量增加了,再对存量进行扣减。

先进先出法的批次库存管理,如果没有任何一个有库存的批次,直接出货,则无法得到对应的出货成本,所以大多数情况下不允许进行存量为0时的出货。假设非要进行强制记账,则只能定个规则,补全批次库存表中的所有信息,比如供应商、批次进价。也可以把最后一个存量为0的批次减成负数,但对上面举例的那个场景会造成影响,因为若之后再补入库,无法对其进行冲正。

移动加权平均法的库存管理,强制出货是可以得到对应的出货成本的,因为其库存只有一条记录,没有选择。

另外,在存量可能为负数时,如果完全按照移动加权平均成本的计算公式来计算,可能会出现一些异常

加权平均单价=(收入存货前结存存货实际成本+本期收入存货实际成本)/(收入存货前结存存货数量+本期收入存货数量)

举个例子
初始数量为-5,成本单价为5,
然后进货数量5,进价单价10
按照上面的公式,则新的成本单价为
((-5*5)+(5*10))/(-5+5)
=25/0
除数为0无法计算

再举个例子
初始数量为-5,成本单价为10,
然后进货数量为10,进价单价为4,
按公式,则新的成本单价为
((-5*10)+(10*4))/(-5+10)
=-10/5=-2
单价为负数也不合理

所以,需要有一些特殊的方式来进行处理,我们先找找现有市面上的业务软件系统是怎么处理这个负数的情况的
在网上搜索 “移动加权平均成本”+“负数” ,可以看到 管家婆、用友等软件均有此现象

而ORACLE公司的RMS(RETEK)软件系统中,对此是有自带的特殊处理的,在业务规则允许存量为负数的情况下,可以避免除数为0,也可以避免产生负数的成本单价。

我们先回到发生此问题的场景:
进了一批货,未在业务软件中执行收货操作,直接实物上架且售出了,之后再在业务软件中补收货操作

如果这个场景要变成正常情况,那么应该是先收货再售出
模拟一下数据的变化
期初

存量 成本单价 总成本
0 5 0

收货5个,进价单价为10

存量 成本单价 总成本
5 10 50

售出 5个

存量 成本单价 总成本
0 10 0

按总成本金额的变化上看,期初为0,然后进货50,再然后售出50,最后期末为0,此时成本单价为10。
假设我们调整售出和收货的顺序,如果能得到上面一样的结果,则说明算法是正确的。
模拟先售出再收货的情况
期初

存量 成本单价 总成本
0 5 0

售出 5个

存量 成本单价 总成本
-5 5 -25

收货5个,进价单价为10

存量 成本单价 总成本
0 X 25

继续看总成本金额的变化,期初为0,售出25,进货50,最后期末为25,成本单价未知。和正常的结果是有差异的,那么就要想办法让数据符合上面的结果。
首先,存量为0,那么无论成本单价是多少,总成本必然为0,

存量 成本单价 总成本
0 X 0

然后,正常结果最后成本单价为10,那么我们也变成10

存量 成本单价 总成本
0 10 0

会发现 期初0-售出25+进货50=25 <>期末0
仔细对比可以发现,两种方式售出的总成本不一样,前者售出50,而后者只售出25,那么我们将后者的售出成本再增加25后,即可得到和前面完全一致的结果,即
期初为0,然后进货50,再然后售出25+25,最后期末为0,此时成本单价为10(注意此处增加售出成本时,数量不发生任何变化)

整理一下,可以得到几个关于移动加权平均成本的规则
1.在存货数量小于等于0时,增加存货,新的成本单价应为此次增加存货的单价;
2.在存货数量小于等于0时,增加存货,如果成本单价发生变化,则要产生对应的调整售出成本的数据。

本篇完。
想了解更多有关批次成本和移动加权平均成本的内容,另外可参考我另一篇文章
《零售商各业务单据对库存的影响》

  • 本文作者: DarkAthena
  • 本文链接: https://www.darkathena.top/archives/库存成本计算的几种方式
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!

【零售知识】商品库存成本计算的几种方式相关推荐

  1. 揭秘:企业做知识管理常见的几种方式!

    企业做知识管理的方式有很多种,下面将介绍比较常见的几种方式,并分享如何做好知识管理. 一.企业做知识管理的方式 创建知识库 创建知识库是最基本的知识管理方式,它可以帮助企业把知识信息整理归类,以便更好 ...

  2. Dagger2 知识梳理(1) Dagger2 依赖注入的两种方式

    一.资料推荐 最近这几天一直在看有关Dagger2有关的文章,感觉就是这东西真难用.真难懂,数次想要放弃,还好有网上大神的教程帮助,模模糊糊总算能把基本的几个概念跑通了. 这里首先推荐 牛晓伟 的下面 ...

  3. python实现单例模式的三种方式及相关知识解释

    python实现单例模式的三种方式及相关知识解释 模块模式 装饰器模式 父类重写new继承 单例模式作为最常用的设计模式,在面试中很可能遇到要求手写.从最近的学习python的经验而言,singlet ...

  4. 网络知识入门,用户如何连接互联网,ADSL调制解调器的妙用,PPP上网的三种方式(十二)

    互联网与家庭网络的区别      互联网是一个遍布世界的巨大而复杂的系统,但其基本工作方式却出奇地简单.和家庭.公司网络一样,互联网也是通过路由器来转发包的, 而且路由器的基本结构和工作方式也并没有什 ...

  5. 浅析知识变现的6种方式

    什么是知识变现?就是用你所会的知识技能,在网上进行展示,吸引人们为其付钱购买.互联网发展到今天,我们可以看到它各方面已经逐渐完善了,但曾经在互联网上的免费知识,在今天却要为其花费金钱.在此基础上,就催 ...

  6. 【电气专业知识问答】问:变压器的过流保护构成一般有哪几种方式?

    [电气专业知识问答] 问:变压器的过流保护构成一般有哪几种方式? 答:作为变压器差动保护和瓦斯保护的后备保护,变压器应专设过电流保护.根据灵敏度的不同,一般有以下几种方式. (1)一般的过电流保护.过 ...

  7. 知识分享之Golang——使用gorm时进行执行自定义SQL的几种方式

    知识分享之Golang--使用gorm时进行执行自定义SQL的几种方式 背景 知识分享之Golang篇是我在日常使用Golang时学习到的各种各样的知识的记录,将其整理出来以文章的形式分享给大家,来进 ...

  8. 基础知识:编程语言介绍、Python介绍、Python解释器安装、运行Python解释器的两种方式、变量、数据类型基本使用

    阅读目录 今日学习内容: 1.编程语言的介绍 2.Python介绍 3.安装Python解释器(多版本共存) 4.运行Python解释器程序两种方式.(交互式与命令行式)(♥♥♥♥♥) 5.变量(♥♥ ...

  9. Java基础知识强化之IO流笔记44:IO流练习之 复制图片的 4 种方式案例

    1. 复制图片的 4 种方式案例: 分析: 复制数据,如果我们知道用记事本打开并能够读懂,就用字符流,否则用字节流. 通过该原理,我们知道我们应该采用字节流. 而字节流有4种方式,所以做这个题目我们有 ...

  10. 《浅谈F5健康检查常用的几种方式》—那些你应该知道的知识(二)

    负载均衡作为实现应用高可用和高可靠的一种方式,已成为目前数据中心内不可或缺的一个环节,并扮演着越来越重要的作用,而F5正是这一领域的佼佼者.要实现应用的高可用,如何探测负载均衡后端应用的可用性是其中非 ...

最新文章

  1. 基matlab的水果识别的应用,基于MATLAB的水果识别的数字图像处理
  2. 语音识别数据集的处理在训练之前
  3. 这里先发布一个,自己写得unityUI的适配的方案(插播)
  4. 2018年第九届蓝桥杯C/C++ A组国赛 —— 第四题:约瑟夫环
  5. 微分方程_微分方程 | 线性微分方程组的求解(上)
  6. amazeui学习笔记一(开始使用4)--Web App 相关
  7. I.MX6 Linux Qt 启动流程跟踪
  8. LeetCode 2033. 获取单值网格的最小操作数(贪心)
  9. 在同一局域网内的同一工作组内登陆其中的机器时显示输入网络密码对话框
  10. 挖出一个面试刷题的宝藏资源,赶紧收下了~
  11. code collection 0.44版 发布
  12. mysql导入sql文件出错的一种解决方法
  13. php文件代码格式化,php代码格式化工具(phpCodeBeautifier)
  14. 本机 Hosts 管理神器 SwitchHosts
  15. linux数据库安装
  16. linux下的系统监控软件,管理员必备的20个Linux系统监控工具
  17. 太阳直射点纬度计算公式_高中地理——每日精讲1题(地震、太阳高度角、极昼、昼夜长短)...
  18. 小米linux平板触摸屏驱动安装方法,windows10系统怎样安装触摸屏的驱动
  19. 链表_两两交换链表中的节点
  20. Away3D学习笔记1 - 戏说Flash 三维引擎

热门文章

  1. 数据可视化的目的 ECharts的基本使用步骤
  2. opencv图片显示到mfc控件中,按键打开
  3. 三种经典网页音乐播放器
  4. 微信小程序 audio 音频 组件
  5. 直接ISO启动工具ventoy
  6. Java 面试真题 【继承静态代码块执行时机】
  7. python 画直方图
  8. Robust Transmit Beamforming for Secure ISAC
  9. 腾讯云学生服务器9元/月
  10. 免费创建GOOGLE共享网盘