ERP——采购模块产品设计

一、采购简介

采购的日常工作用一句话总结就是在合适的时间,选择合适的供应商,以最合适的价格,采购合适质量和数量的产品。这也是采购的 5R 原则。上述的采购的工作准则,但是在采购前需要做计划,也就是常说的备货计划,一些具体的公司有专门的计划部门,来决定什么商品进行采购,采购多少量。然后将这些信息形成一个采购需求,下推给采购部门进行采购。要支撑上面的描述,离不开采购系统的支持,虽然各公司对采购部门的职责和工作内容都有出入,单大体都相同。 ERP经常需要用到各类电商平台商品详情SKU封装接口,如国内电商平台,淘宝/京东/拼多多/1688/抖音/快手/唯品会等API接口,跨境电商平台,亚马逊,阿里巴巴,LAZADA,速卖通等。

二、采购流程

本文介绍一下采购模块的系统设计,了解任何业务的第一步就是先了解主流程,采购模块的下单主流程如下:

上面只是一个采购的主流程,并不涉及一些细节,仅供参考,具体还是需要根据实际业务进行设计。

三、采购管理系统功能构架

四、采购的方案设计

4.1 备货计划

再聊备货计划前,先聊一下在公司中常见,也是最简单的一种备货场景,销售发现自己负责的一款产品,订单量很稳定,销量也高,但是产品的库存不足,为了保证订单的履约时效,销售会提采购需求让采购提前采购一批货放到仓库。根据上面所描述的场景,备注第一步就是需要知道哪些产品需要补货,根据下面表格的数据,你会选择哪些产品进行备货?

  • A001是最理想需要备货的产品,每天的销量不高,但是每天的销量稳定;
  • A002某2天的销量较高,但单量不稳定,备货有滞销风险;
  • A003几乎每天都有订单,也可以进行备货,但是存在少量滞销的风险。

站在销售的角度,在备货的考量中"稳定的订单量>销量",滞销是备货重点考量的一个因素,同时也是根据历史订单量和销量数据来判断产品是否需要备货,备货多少数量。根据历史数据推断总会出现误差,比如某个产品的历史数据很好,之后这个产品就一直不出单,如果恰好这个产品的采购单价很高,那么这个产品的滞销成本也就非常高,这就引出了备货的第二个重点考量因素,采购单价。试想一下,如果某个产品的采购单价为1W,备货1000个,就是1000W,针对这种高货值的产品,备货往往也是非常谨慎。针对上面谈到的2点,来做一个小结:最理想的备货产品为每天销量高,订单量稳定,采购单价不高的产品。备货计划的公式分析:所有的备货逻辑都可以用一个公式概括,备货量=目标库存-当前库存。要触发备货计算,需要知道产品的备货点,备货点的设计常见有以下3种:

  1. 以安全库存作为备货点;
  2. 以过去X天的销量作为备货点;
  3. 以安全库存+过去X天的销量作为备货点。

类似水库的水位,当水库的水低于水位,就触发警报。采购中的备货点的逻辑也是这样,以上述第3种方式为例,备货点=日均销量+安全库存,这个备货点的计算并不完善,如果备货点的库存只支持5天的销量,但是供应商平均的采购交期需要7天,这样就会出现一种情况,在第5天的时候,公司的货已经买完了,但是供应商还有2天才把货送到。所以备货点=采购交期日均销量+安全库存,当然这个公式其实也不完善,做的更加精细化,可以将"采购处理时间","仓库的入库时间"等等因素,若涉及到海外仓,还需要考虑头程时间,海外仓的入库时间等等。我们知道了备货点的计算,当货品的库存低于备货点,生成备货计划,那么备多少货,首先需要知道当前的库存有多少。当前库存=采购需求中的库存+在途库存+可用库存,其中在途库存=采购在途+调拨在途,若涉及海外仓,还需要考虑海外仓在途。这里在多说一句,我之前待过的一家公司,供应商把货送到仓库,理货组把货签收了,此时并不计算货品的库存,只有上架后,才计算货品的库存,那么这种情况,当前的库存还需要加上采购待上架的库存,当然还是需要根据公司业务来设计方案。、目标库存比较好理解,就是业务方想备多少货,通常这也会根据历史销量来推断备货量,如被10天销量的货,那么目标库存=日均销量10+安全库存。同样的目标库存的计算也需要考虑采购交期、采购处理时间等因素,根据上面计算公式,举个例子:安全库存为0,需要备10天的货,目前库存=100,当前库存为20,采购交期为3,根据这些因素得知,需要采购80=100-20个库存。又因为当前库存为20,采购交期为3,在采购到货的前一天,当前库存就卖完了,所以最终只备货了80个,8天的库存。所以最终目前库存=(日均销量+采购交期)*10+安全库存,采购的处理,入库时间是否需要考虑,就根据公司业务处理。借用木笔大佬的备货计划图,如下所示:

我上面说的是一个非常简单粗暴的公式,实际上要考量的因素会比较多,如:节假日、季节等因素。目标库存的计算(销售预测)有几下几种方案平均法:y=(x1+x2+x3)/3如预测9月份的销量,9月份的销量=(8月销量+7月销量+6月销量)/3,这样就能够计算出来9月份的销量,从而来计算备货量。我上述推演的备货计划计算公式使用的就是这种方法,其中目标库存的公式中,"日均销量"采用的就是这种方法。移动加权平均:y=x1n1+x2 n2+x3n3上述公式中的n为权重系数,预测9月份的销量,其中8月、7月、6月的权重系数为:0.5、0.3、0.2,那么9月份的销量=8月销量 0.5+7月销量0.3+6月销量0.2易仓、店小秘在计算备货量时,提供了这种方案供用户选择。指数平滑法:y=a*x1+(1-a)*x2

  • y:本期预测销量;
  • a:0-1之间的权重系数;
  • x1:上期的实际销量;
  • x2:上期预测的销量。

指数平滑法本质就是一种特殊的移动加权平均,通过调整a来进行销售预测,如:上期实际销量为20,预测销量为10,a为0.7,本期销售预测=0.7*20+(1-0.7)*10,计算出来的结果为17,那么本期预测的销售为17。调整过来a,来优化计算模型,a越大就越偏向实际销量模型计算,反之则偏向预测销量模型计算。相似品预测法:对于新品,没有历史数据,不能用上述的3种方法进行销售预测,可以根据商品的属性,如:分类、颜色、价格等等属性,找到相似的商品,根据相似商品的销售数据来推测新品数据。小结:销售预测是一个非常复杂的功能,需要庞大的数据来搭建公司的销售预测模型,这里只是提几种方法。

4.2 采购需求

整个采购需求的业务流程如下:

采购需求的页面如下(仅供参考):

采购需求该功能主要是给销售等业务部门使用,由业务部门来确定要什么货(产品),要多少(数量)。因为业务部门人员水平有差异,有些业务人员提出的需求并不合理,可能导致采购的需求过多造成产品的滞销,所以在业务员提采购需求后,不过直接给到采购,而是会在两者之间设一道审核的坎,一般由组长或专门的审单员进行采购需求的审核。上面说的是由人工提交的采购需求需要审核,那么低于备货点自动生成的采购需求是否需要进行审核呢?这个根据个人的经验来说这个逻辑可以做成可配置,或者做成对应策略。如:采购货值<XX,就不需要审核之类的。采购需求还需要有合并的功能,如果多个业务人员提出的采购需求相同,应该将采购需求合并,避免多次找同一个供应商采购产品。MOQ:****MOQ为最低的起订量,如:必须采购10个,供应商才会发货。所以在创建采购需求时,系统自动选择满足MOQ最低的采购价。

此时采购A产品10个,根据"满足MOQ最低报价"的规则,系统会选择单价10的报价。是否需要在采购需求阶段使用"满足MOQ最低报价"规则,需要根据公司业务而定,我上家公司需要在需求阶段展示,是因为销售在提交采购需求时,需要计算采购商品的利润。

4.3 采购单

采购单创建流程如下:

手动创建采购单,当时我发现有的系统手动创建有2种方式,一种是一种是有业务部门发布采购需求,下推生成采购单;另外一种则是由仓库负责发布采购单。当时觉得很奇怪,一个货品是否需要采购,是由业务部门决定的,仓库肯定不能决定采购什么货品,后来和一些同事聊天得知,这2者主要是公司的业务和岗位职责的划分有关。在外贸公司几乎不涉及到原料,公司的大部分产品都是成品,由销售负责货品的销售,销售把控库存,这种情况就是由销售下发采购需求,采购只需要执行采购需求。在一些生产公司,销售和其它业务部门对原材料和辅料的感知程度较低,库存采购负责,这个时候就需要采购创建采购单,进行采购。这里说一下销售转采购,本质就是用户下的销售订单缺货,然后吧缺货的部分快速生成采购单。采购单的界面如下所示(仅供参考):

根据上面的原型图,结合业务一步一步展开来说,首先就是采购的下单,有2种方式方式:

  1. 线上下单:采购在1688或者淘宝等网站上寻找货源,并直接在网上下单采购,通过接口与1688网站进行数据交互。
  2. 线下下单:采购与供应商进行线下采购和交易,在系统进行采购单的数据补录。

线上下单,必须是采购选好货品后付款,供应商才会发货,类似我们在淘宝上购买东西,只有我们下单付款,供应商才会发货,整体的流程如下(以1688下单为例):

由上述流程可知,线下和线上采购的区别在在于线上需要,线上采购需要调用平台接口,与第三方平台进行交互。在跨境电商行业,采购单的创建区分了线上和线下(如:马帮、店小秘等),而国内电商则没有进行区分。线上与线下下单,在财务方面的区别就是,线上下单必须"先付款再下单",以1688为例,1688可以开通类似"花呗额度",可以先使用额度给供应商付款,后期在还款。线下下单通常走预付款、货到付款、账期几种形式。

  • 预付款:预先支付供应商付款的X%。
  • 货到付款:供应商把货送到仓库,且成功签收后,进行付款。
  • 账期:账期与预付款可以结合,供应商把货送过来后,XX天后结尾款,这个XX天就是账期。

因为线上和线下采购的缘故,在采购时就会有一些特殊场景:下单的数量不满足MOQ(最小起订量),但是向供应商买一些其他的产品,保证供应商发货;

  • 供应商一些产品在线上卖,一些产品没有上架到线上,这种情况可以创建分别创建线上和线下采购单;
  • 供应商线上卖的是组合产品,但是我们只需要其中一个,这个时候也只能在系统层面创建一个线下采购单;
  • 同一个供应商有几个线上马甲。

上面说的都是系统流程,在业务层面的流程更加复杂的多,采购在下单之前会和供应商确定是否有货,下单的数量和单价供应商是否接收,是否能够在货期内到货等等,业务流程如下:

采购成本的计算:在采购单中除了产品本身的货款,还有货物的装卸费、运费、供应商优惠额度等等费用,在计算采购成本时,需要将这些费用分摊到SKU,常见的分摊方式有3种:按照采购数量分摊,按照采购重量分摊,按照采购金额分摊。这里以采购重量分摊为例,把运费进行分摊,计算公式:SKU的采购成本=采购货款+(SKU的重量/采购单中所有SKU的重量)*运费其它分摊的计算公式也如上述一致,可能有同学不懂这个计算的意义在哪里,这个数据主要用于毛利的计算。如:A产品采购10个,计算出来的采购成本为100元,如果毛利想要达到50元,那么就需要卖150元(每个售价定15元)。注意:这里的毛利和净利润不一样,具体毛利和净利和区别,我就不细说了,请大家去百度吧。其中采购单到货后,采购将到货的数量下推到仓库,生成到货通知单。采购单:到货通知单=1:N最后在说一下采购单的状态,任何单据,订单的状态机都是非常重要的。采购有业务状态流和财务状态流,可以根据有"入库状态"和"结算状态"字段展示不同流程的状态。入库状态:

  • 待入库
  • 部分入库
  • 已完成

付款状态:

  • 待付款
  • 部分付款
  • 全部付款

这里说一下"已完成"状态的细节,当WMS系统签收的数量=采购数量,代表全部入库,此时采购单自动标记为"已完成"。还有一个手动标记"已完成"的场景,采购的商品只有部分签收,剩余的商品供应商不送了,这时需要手动标记"已完成"。

4.4 采购退货

采购退货的整个流程,如下图所示:

采购退货其中有2种退货方式,一种是直接退货,另一种是退换补发,上图的业务流程描述的是退货,代表这个货不要了,供应商需要将相应的货款退给公司,所以生成相应的采购结算单。另一种则是退换补发,最常见的就是不良品,需要供应商重新发一批货过来,整个的流程与上述一致,只是不需要生成采购结算单。采购退货单的设计和采购单的设计非常像,但是采购退货单是关联采购单,采购退货单的交互图如下:

采购退货单都是引用采购单,因此一个采购单可以生成多个采购单退货单,但是退货的数量不能>采购的数量。这里有一个细节需要注意,因为采购退货单的创建,需要输入采购单号,那么退货的采购单价,直接读取采购单的采购单价。这个细节需要注意是因为我知道某个大公司并不是这样做的,以至于埋下了一个大坑。如果供应商也有信息化系统,可以做一个采购退货的通知功能,通知供应商你已经发货。

4.5 采购费用开单

采购的费用开单主要作用于费用的补充和费用数据的对冲,常见的场景有:采购单的运费填错了,费用少了;采购过来需要有卸货费用等等,这些费用需要计算到采购单,计算采购单中SKU的采购成本。交互图如下:

这里说一个题外话,根据我的项目经验,采购单中所有的信息都有可能填错,最常见的就是运费填写,因此我们可以将这些信息分成2类,业务信息和财务信息。

  1. 财务信息:运费、装卸费、采购费等等;
  2. 业务信息:接收仓库、采购员、签收员、供应商、SKU等等。

其中财务信息填错了,可以使用"采购费用单"进行数据对冲;业务信息填错了,个人建议重新创建新的采购单,至于原填错的采购单,如果下推到了仓库,进行了签收,那么在仓库创建"出入库单"进行"库存平账"。

4.6 采购结算单

一个采购单和采购退货款产生的所有费用会生成一个采购结算单。

采购单/采购退货单和采购结算单的关系为1:N。结算常见有3种方式:

  1. 预付:采购预付款
  2. 按账期结算:与供应商协定,如每月月底结算货款
  3. 到货后结算:每完成1/N次履约后,就进行结算

不同的结算方式,采购结算单的创建也不同,如:预付,在成功创建采购单后,预付金额就生成相应"待审核"的采购结算单;账期的话就按照账期,生成相应"待审核"的采购结算单。采购结算单审核通过后,提交给财务进行销账。采购异常情况:商品质量不合格:签收100件商品,其中10件为次品,那么正品库存+90,次品库存+10。后续在通过采购退款,仓库的次品库存-10。数量不符合:1)少货少货有2种情况,一种是供应链送过来的货确实少了,这种情况需要供应商吧剩余的货送过来;另一种则是供应商分批送货,并没有告知公司。如:采购100个,供应链送了80个,这80个商品是否生成采购结算单?还是等到剩余的20个送过来后生成采购结算单?这种情况就根据公司业务设计,我之前的公司的业务为必须采购单完成才会生成结算单。2)多货有2种处理方案,一种是直接签收上架,另一种则是将多余的部分退回给供应商。如:采购100个,供应商送了120个。

  • 签收120个,上架120个,结算时按照120个结算
  • 签收120个,上架100个,20个退回给供应商,结算时按照100个结算

错货:采购100个,供应商送了100个,其中40个错货。

  1. 方案1:

    全单全部拒收,等待供应商重新送货

  2. 方案2:

    签收60个,并先上架,剩余部分退回给供应商,至于是先按照60个结算,还是等供应商把剩余部分送到仓库再结算。

    这2种方案都可以

五、总结

供应商模块文章就不进行更多说明了,实际上本文说的是市面上通用的产品设计方案,其中整个采购的难点在于采购的费用相关,如:采购的费用对冲影响历史数据、供应商的评分等。一些偏向生产类型的公司,有自己长期合作的供应商,采购的商品也复杂多样,涉及原料、半成品、成品等。这些公司的会将采购模块抽离出来,单独做一个SRM系统,这就会涉及到采购合同、样品、供应商考核、供应商评分、询报价、比价、供应商返利等等操作。在财务方面本人接触的不深,比如和供应商的对账出现了差异,生成差异单的处理。供应商的应付和财务的核销等等操作,有懂的老哥可以在本文留言,一起探讨。

相关推荐
学不会•1 小时前
css数据不固定情况下,循环加不同背景颜色
前端·javascript·html
Theodore_10222 小时前
4 设计模式原则之接口隔离原则
java·开发语言·设计模式·java-ee·接口隔离原则·javaee
冰帝海岸3 小时前
01-spring security认证笔记
java·笔记·spring
活宝小娜4 小时前
vue不刷新浏览器更新页面的方法
前端·javascript·vue.js
世间万物皆对象4 小时前
Spring Boot核心概念:日志管理
java·spring boot·单元测试
程序视点4 小时前
【Vue3新工具】Pinia.js:提升开发效率,更轻量、更高效的状态管理方案!
前端·javascript·vue.js·typescript·vue·ecmascript
coldriversnow4 小时前
在Vue中,vue document.onkeydown 无效
前端·javascript·vue.js
我开心就好o4 小时前
uniapp点左上角返回键, 重复来回跳转的问题 解决方案
前端·javascript·uni-app
没书读了4 小时前
ssm框架-spring-spring声明式事务
java·数据库·spring
小二·4 小时前
java基础面试题笔记(基础篇)
java·笔记·python