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系统,这就会涉及到采购合同、样品、供应商考核、供应商评分、询报价、比价、供应商返利等等操作。在财务方面本人接触的不深,比如和供应商的对账出现了差异,生成差异单的处理。供应商的应付和财务的核销等等操作,有懂的老哥可以在本文留言,一起探讨。

相关推荐
一直在进步的派大星2 分钟前
Docker 从安装到实战
java·运维·docker·微服务·容器
老华带你飞5 分钟前
公寓管理系统|SprinBoot+vue夕阳红公寓管理系统(源码+数据库+文档)
java·前端·javascript·数据库·vue.js·spring boot·课程设计
我明天再来学Web渗透16 分钟前
【hot100-java】【二叉树的层序遍历】
java·开发语言·数据库·sql·算法·排序算法
gopher951122 分钟前
HTML详解
前端·html
Tiny201723 分钟前
前端模块化CommonJs、ESM、AMD总结
前端
吕永强25 分钟前
CSS相关属性和显示模式
前端·css·css3
结衣结衣.30 分钟前
python中的函数介绍
java·c语言·开发语言·前端·笔记·python·学习
全栈技术负责人31 分钟前
前端提升方向
前端
程序员陆通31 分钟前
Spring Boot RESTful API开发教程
spring boot·后端·restful
赵锦川31 分钟前
css三角形:css画箭头向下的三角形
前端·css