HH SaaS电商系统的出库功能模块设计

文章目录

    • 出库单业务流程
      • 基本流程
      • 扩展流程
        • 找不到符合条件的仓库,要求部分退款(未生成出库单时)
        • 找不到符合条件的仓库,全部退款(未生成出库单时)
        • 找不到符合条件的仓库,等待库存补足(未生成出库单时)
        • 指定仓库的库存不足,需要更换仓库(未生成出库单时)
        • 找不到符合条件的仓库,需更换供应商(未生成出库单时)
    • 出库单的状态
    • 出库单类型
    • 出库单的实体
    • 出库单的关联表
    • 手动创建出库单
    • 确认出库(即发货)
    • 取消出库
      • 场景
      • 流程
        • 买家退款成功,取消出库单
        • 商品的实际库存不足且同个供应商其它仓库也没有货,其他供应商也没有货,取消出库单
        • 商品的实际库存不足,但是同个供应商的其它仓库有货,取消出库单
        • 商品的实际库存不足,但是其他供应商有货,取消出库单(涉及到取消采购单的问题)
    • 重新生成出库单

出库单业务流程

基本流程

  1. 订单中心的商品全部锁定供应商后,再将“未退款”且“未确定仓库”的商品和订单数据发送给调度中心

  2. 调度中心根据“发货策略”确定每个商品的发货仓库,接着将商品、订单和仓库数据发给仓储中心

  3. 仓储中心接收到相关数据后按仓库生成出库单,同步将商品的仓库信息反馈给调度中心

  4. 调度中心收到反馈后,将仓库信息反馈给订单中心

  5. 订单中心收到反馈后,将仓库信息保存在对应的销售子单上

  6. 仓库人员在出库单点击“发货”按钮,填写物流信息,提交后完成商品的出库

扩展流程

找不到符合条件的仓库,要求部分退款(未生成出库单时)

  1. 订单中心将“未退款”且“未确定仓库”的商品和订单数据发送给调度中心

  2. 调度中心根据“发货策略”确定发货仓库,有商品找不到符合条件的仓库

  3. 调度中心反馈给客服中心,并且把找不到发货仓库的商品信息传给客服中心,客服中心依此生成“出库”类型的工单给仓储部门指定的人员

  4. 仓库人员接收到工单后检查其他供应商也没有库存,于是仓库专员创建“售后”类型的工单给客服部门

  5. 客服人员接收到工单后和买家协商部分退款,买家申请部分退款(即子单退款),客服中心生成退款单,退款成功后客服中心将商品的退款信息反馈给订单中心

  6. 订单中心收到反馈信息后修改相关子单的状态,同步将退款信息反馈给采购中心

  7. 采购中心收到反馈信息后修改相关采购子单的采购状态(转变成“退款成功”)

  8. 接着仓库人员需要回到“订单管理”模块,找到需要重新生成出库单的销售订单,点击“重新生成出库单”按钮,让系统重新生成出库单

找不到符合条件的仓库,全部退款(未生成出库单时)

  1. 订单中心将“未退款”且“未确定仓库”的商品和订单数据发送给调度中心

  2. 调度中心根据“发货策略”确定发货仓库,有商品找不到符合条件的仓库

  3. 调度中心反馈给客服中心,并且把找不到发货仓库的商品信息传给客服中心,客服中心依此生成“出库”类型的工单给仓储部门指定的人员

  4. 仓库人员接收到工单后检查其他供应商也没有库存,于是仓库专员创建“售后”类型的工单给客服部门

  5. 客服人员收到工单与买家协商部分退款,买家要求全部退款,买家执行退款操作,客服中心生成退款单,退款成功后客服中心反馈给订单中心,订单中心修改相关子单状态(子单状态变成“退款成功”,主单状态变成“订单关闭”)

  6. 接着订单中心将退款信息反馈给采购中心,采购中心修改相关采购子单的退款状态(采购子单状态变成“退款成功”,采购主单状态变成“交易关闭”)后流程结束

找不到符合条件的仓库,等待库存补足(未生成出库单时)

  1. 订单中心将“未退款”且“未确定仓库”的商品和订单数据发送给调度中心

  2. 调度中心根据“发货策略”确定发货仓库,有商品找不到符合条件的仓库

  3. 调度中心反馈给客服中心,并且把找不到发货仓库的商品信息传给客服中心,客服中心依此生成“出库”类型的工单给仓储部门指定的人员

  4. 仓库人员接收到工单后,经过调查得知商品在等待入库,库存补足后仓库人员需要回到“订单管理”模块,找到需要重新生成出库单的销售订单,点击“重新生成出库单”按钮,让系统重新生成出库单

指定仓库的库存不足,需要更换仓库(未生成出库单时)

  1. 订单中心将“未退款”且“未确定仓库”的商品和订单数据发送给调度中心

  2. 调度中心根据“发货策略”确定发货仓库,有商品找不到符合条件的仓库

  3. 调度中心反馈给客服中心,并且把找不到发货仓库的商品信息传给客服中心,客服中心依此生成“出库”类型的工单给仓储部门指定的人员

  4. 仓库人员接收到工单后检查其他仓库有货,于是修改“发货策略”

  5. 接着仓库人员需要回到“订单管理”模块,找到需要重新生成出库单的销售订单,点击“重新生成出库单”按钮,让系统重新生成出库单

找不到符合条件的仓库,需更换供应商(未生成出库单时)

  1. 订单中心将“未退款”且“未确定仓库”的商品和订单数据发送给调度中心

  2. 调度中心根据“发货策略”确定发货仓库,有商品找不到符合条件的仓库

  3. 调度中心反馈给客服中心,并且把找不到发货仓库的商品信息传给客服中心,客服中心依此生成“出库”类型的工单给仓储部门指定的人员

  4. 仓库人员接收到工单后检查其他供应商有库存,于是创建“采购”类型的工单给采购部门指定的人员,工单内容要描述清楚哪些商品需要调整采购策略,所以才需要取消相关的原采购单

  5. 采购人员接收到工单后取消相关的采购单,采购单取消成功后采购中心反馈给订单中心,订单中心将相关商品修改为“未确定供应商”,实则就是把“供应商”字段置为空

  6. 接着采购专员修改相关商品的采购策略,修改好之后采购专员再回到“订单管理”模块,找到需要重新生成采购单的销售订单,点击“重新生成采购单”按钮,让系统重新生成采购单

  7. 接着采购专员创建“出库”类型的工单给仓储部门,仓库专员收到工单后回到“订单管理”模块,找到需要重新生成出库单的销售订单,点击“重新生成出库单”按钮,让系统重新生成出库单

PS:出库时需要判断出库单中是否存在0<实际出库数<计划出库数的商品,存在则说明部分出库(已取消部分出库的设计)

出库单的状态

在这里插入图片描述

出库单类型

调整出库单、调拨出库单、国内销售出库单、跨境销售出库单、换货出库单、报损出库单(暂无)、备货出库单(暂无)

  • 调整出库单
    系统库存数多于实际仓储库存数时,需要创建调整出库单手动扣减商品的系统库存数

  • 销售出库单
    系统根据“发货策略”确定出货仓库后,会按仓库生成对应的出库单,此时系统需要判断出库单中的出货仓库是否为跨境仓,如果是则将此出库单标记为“跨境销售出库单”,如果不是则标记为“国内销售出库单”

  • 换货出库单
    在换货流程中,商家确认收到退货后,系统会自动生成“换货出库单”

  • 调拨出库单
    仓库之间相互调货时候,调出的仓库会生成调拨出库单,调入的仓库会生成调拨入库单。需要调拨的仓库人员创建调拨申请单1,审核通过后系统会自动生成调拨出库单和调拨入库单,接着仓库人员在调拨出库单填写发货物流信息完成发货,在调拨入库单确认入库完成收货

出库单的实体

在这里插入图片描述

出库单的关联表

  • 采购单和出库单目前不建立关联关系

  • 换货单和出库单是一对一关系,若果买家收到换货后还要换货,必须结束当前换货流程,再申请换货

  • 备货单和出库单是一对多关系,备货单的商品来自多个仓库,但是目前没有做备货出库单

  • 物流单和出库单是多对多关系,一个出库单可以分多个包裹发货,而多个出库单也可能只有一个包裹(同个买家下了多个订单,多个出库单合并发货),所以出库单和物流单也存在多对多的关系,采用中间表建立关联关系。但是不推荐这样的业务关系,建议设计成多对一的关系,物流单保存出库单ID

  • 入库单和出库单是一对一关系,有些外部仓的退货入库单需要关联退货商品的原出库单

  • 销售单和出库单是一对多关系,销售单的商品可能来自多个仓库,所以会生成多个出库单,出库单保存销售单ID

手动创建出库单

  1. 仓库人员发货时漏发、少发了,需要创建出库单(类型:国内销售出库单),此时创建的出库单必须关联订单,确认出库后系统要扣减“出库冻结数”

  2. 创建无关销售的出库单时(例如:报损出库单),确认出库后系统不仅要扣减真实的库存数还要扣减销售库存数

  3. 系统库存数多于实际仓储库存数时,需要创建出库单(类型:调整出库单)手动扣减商品的系统库存数

确认出库(即发货)

  • 在状态为“待出库”的出库单点击“发货”按钮,填写物流信息提交,可以填写多个物流信息(即多个包裹发货),这样才完成商品的出库发货,即是“确认出库”。

  • 本系统实际是需要通过出库单进行发货,确认出库实则就是“发货”,在本系统中为了避免单据过多的冗余,就不再另行设计“发货单”,此时系统需要核销出库冻结数

  • 一个出库单只能一次性完成发货,所以出库单不存在部分发货的情况

取消出库

场景

  1. 消费者申请退款成功,需要取消出库单

  2. 供应商发现商品实际库存不足需要取消出库单

  • 涉及到更换仓库的问题
  • 涉及到更换供应商和取消采购单的问题
  • 涉及到部分退款或者整单退款问题
  1. 采购员发现跨境供应商库存不足需要取消出库单
  • 涉及到更换供应商和取消采购单的问题
  • 涉及到部分退款或者整单退款问题

流程

买家退款成功,取消出库单

  1. 买家申请退款,客服中心生成退款单,退款成功后客服中心反馈给订单中心,订单中心修改相关子单状态

  2. 修改相关子单状态后,订单中心再通知仓储中心查找退款商品相关的出库单,如果出库单的状态为“待出库”则取消出库单,否则不做任何操作

  3. 订单中心收到仓储中心成功取消出库的反馈,将订单中相关商品修改为“未确定仓库”,实则就是把“发货仓库”字段置为空

  4. 接着订单中心将退款信息反馈给采购中心,采购中心修改相关采购子单的退款状态后把结果反馈回订单中心

  5. 订单中心再将“未退款”且“未确定仓库”的商品和订单信息发送给调度中心

  6. 调度中心再根据“发货策略”重新确定发货仓库,调度中心再将商品信息、订单信息、仓库信息发给仓储中心

  7. 仓储中心接收到相关数据后按仓库生成出库单,同步将商品的仓库信息反馈给调度中心

  8. 调度中心收到反馈后,将仓库信息反馈给订单中心

  9. 订单中心收到反馈后,将仓库信息保存在对应的销售子单上

P.S. 买家退款成功后,可以由仓库人员手动生成出库单,不要让系统自动生成出库单,因为如果消费者在短时间内申请多笔退款,那么系统会自动生成多个出库单并且又都取消掉,造成垃圾数据的同时也会给系统增加不必要的负荷,不过目前的产品方案依旧让系统自动生成出库单,后期看情况再做调整~

商品的实际库存不足且同个供应商其它仓库也没有货,其他供应商也没有货,取消出库单

  1. 供应商主动取消出库单,仓储中心取消出库单后将取消出库的商品信息反馈给订单中心

  2. 订单中心收到反馈信息后,将相关商品修改为“未确定仓库”,接着订单中心要将取消出库的商品信息反馈给客服中心

  3. 客服中心收到反馈信息后,生成“出库”类型的工单给仓储部门,仓库专员接收到工单后检查其它仓库和供应商,发现都没有货

  4. 仓库专员创建“售后”类型的工单给客服部门,客服人员接收到工单后和买家协商部分退款,买家申请 部分退款,客服中心生成退款单,退款成功后客服中心将退款信息反馈给订单中心,订单中心修改相关子单状态

  5. 接着订单中心将退款信息反馈给采购中心,采购中心修改相关采购子单的采购状态

  6. 接着仓库人员需要回到“订单管理”模块,找到需要重新生成出库单的销售订单,点击“重新生成出库单”按钮,让系统重新生成出库单

商品的实际库存不足,但是同个供应商的其它仓库有货,取消出库单

  1. 供应商主动取消出库单,仓储中心取消出库单后将取消出库的商品信息反馈给订单中心

  2. 订单中心收到反馈信息后,将相关商品修改为“未确定仓库”,接着订单中心要将取消出库的商品信息反馈给客服中心

  3. 客服中心收到反馈信息后,生成“出库”类型的工单给仓储部门指定的人员

  4. 仓库人员接收到工单后检查其它仓库和供应商,发现同个供应商的其它仓库有货,于是仓库人员修改相关商品的“发货策略”

  5. 接着仓库人员需要回到“订单管理”模块,找到需要重新生成出库单的销售订单,点击“重新生成出库单”按钮,让系统重新生成出库单

商品的实际库存不足,但是其他供应商有货,取消出库单(涉及到取消采购单的问题)

  1. 供应商主动取消出库单,仓储中心取消出库单后将取消出库的商品信息反馈给订单中心

  2. 订单中心收到反馈信息后,将相关商品修改为“未确定仓库”(实则就是把“发货仓库”字段置为空),接着订单中心要反馈给客服中心,把“未确定仓库”的商品信息传给客服中心

  3. 客服中心收到反馈信息后,生成“出库”类型的工单给仓储部门指定的人员

  4. 仓库人员接收到工单后检查其它仓库和供应商,发现其它供应商有货,接着仓库专员创建“采购”类型的工单给采购部门,要求他们取消相关的采购单,工单要说明取消采购单的相关情况

  5. 采购专员接收到工单后取消相关采购单,采购单取消成功后采购中心反馈给订单中心,订单中心将相关商品修改为“未确定供应商”(实则就是把“供应商”字段置为空

  6. 接着采购专员修改相关商品的采购策略,修改好之后采购专员再回到“订单管理”模块,找到需要重新生成采购单的销售订单,点击“重新生成采购单”按钮,让系统重新生成采购单

  7. 接着采购专员创建“出库”类型的工单给仓储部门指定的人员,通知他们采购单已经重新生成了,仓储部可以将有关商品重新生成出库单了,仓库人员收到工单后回到“订单管理”模块,找到需要重新生成出库单的销售订单,点击“重新生成出库单”按钮,让系统重新生成出库单

重新生成出库单

状态非“等待买家付款”、“订单已取消”,“订单已关闭”的销售订单存在没有发货仓库的商品,销售订单则会出现“重新生成出库单”的按钮,仓库专员点击按钮,系统先判断相关商品是否锁定了供应商,如果没有则提示“非常抱歉,有商品没有生成采购单,所以无法生成出库单!”,若相关商品已经锁定了供应商,则将没有发货仓库且未退款的商品信息和订单信息提交给“调度中心”根据“发货策略”锁定发货仓库(如果因为库存等原因找不到符合条件的仓库,系统要提示,且生成有关的工单,提示信息:非常抱歉,订单中的商品(商品编号:xxxxxxxx)找不到符合条件的仓库,此订单无法生成有关的出库单),然后“调度中心”再将订单信息、商品信息和仓库信息提交给“仓储中心”生成出库单,仓储中心接收到相关数据后按仓库生成出库单,同步将商品的仓库信息反馈给调度中心,接着调度中心再将仓库信息反馈给订单中心,订单中心收到反馈后,将仓库信息保存在对应的销售子单上

注意:如果存在多个商品找不到符合条件的仓库,提示信息中的商品编号之间请使用英文逗号隔开


  1. 调拨申请单状态:待审核、审核未过、审核通过 ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335620.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 拼图_拼图项目的诅咒:为什么Java 9一遍又一遍地延迟?

java 拼图JDK 9发行日期推迟到2017年7月 距JDK 9发行不到200天&#xff0c;它又被推迟了 。 新的发布日期已更新为2017年7月&#xff0c;比之前推迟的日期晚了四个月。 推迟日期 9月13日&#xff0c;Oracle Java平台小组的首席架构师Mark Reinhold发表了他的建议&#xff0c;…

mysql数据库增删改查关键字_mysql数据库的增删改查

数据库基本操作&#xff1a;增删改查#DML语言/*数据操作语言&#xff1a;插入&#xff1a;insert修改&#xff1a;update删除&#xff1a;delete*/1.增插入语句的方式一表已经存在啦&#xff0c;我们需要往里面插入数据/*语法&#xff1a;insert into 表名(列名,…) values(值1…

HH SaaS电商系统的采购功能模块设计

文章目录如何生成采购单系统生成采购单的流程基本流程扩展流程找不到符合条件的供应商&#xff0c;要求部分退款&#xff08;初次生成采购单时&#xff09;找不到符合条件的供应商&#xff0c;要求全部退款&#xff08;初次生成采购单时&#xff09;指定供应商的库存不足&#…

HH SaaS电商系统的入库功能模块设计

文章目录创建入库单的场景创建入库单的业务流程商品直接入库内部仓退货入库&#xff08;内部仓&#xff09;换货入库&#xff08;内部仓&#xff09;退货入库&#xff08;外部仓&#xff09;换货入库&#xff08;外部仓&#xff09;备货入库&#xff08;内部仓&#xff09;备货…

接口方法javadoc注释_继承Javadoc方法注释

接口方法javadoc注释尽管用于javadoc工具的JDK工具和实用程序页面通过实现和继承方法来描述Javadoc方法注释重用的规则&#xff0c;但是当实际上不需要使用{inheritDoc}时&#xff0c;很容易不必要地显式描述注释继承&#xff0c;因为会使用相同的注释隐式继承。 Java 8 javado…

redis java 监听_从零手写实现redis(四)添加监听器

前言java从零手写实现redis&#xff08;一&#xff09;如何实现固定大小的缓存&#xff1f;java从零手写实现redis&#xff08;三&#xff09;redis expire 过期原理java从零手写实现redis&#xff08;三&#xff09;内存数据如何重启不丢失&#xff1f;本节&#xff0c;让我们…

drill apache_如何指南:Apache Drill入门

drill apacheApache Drill是一个引擎&#xff0c;可以连接到许多不同的数据源&#xff0c;并为它们提供SQL接口。 它不仅是遍历任何复杂事物SQL界面&#xff0c;而且是功能强大的界面&#xff0c; 其中包括对许多内置函数和窗口函数的支持。 尽管它可以连接到可以使用SQL进行查…

mac mysql 重设密码_Mac下忘记mysql密码重新设置密码的图文教程

MySQL 文件在路径/usr/local/mysql下1&#xff0c; 在系统偏好设置中关闭 mysql &#xff1a; Stop MySQL Server2 &#xff0c;打开终端进入路径  /usr/local/mysql/bin输入命令 sudo su&#xff0c; 然后输入开机密码。然后输入命令&#xff1a;./mysqld_safe –skip-grant-…

activiti 变量_如何在Activiti中使用瞬态变量

activiti 变量我们昨天发布的Activiti v6 Beta3中已经加入了很多需要的功能-临时变量。 在这篇文章中&#xff0c;我将向您展示一个示例&#xff0c;说明如何使用瞬态变量来覆盖一些以前不可能&#xff08;或最佳&#xff09;的高级用例。 到目前为止&#xff0c;Activiti中的…

erosa mysql_MySQL协议和canal实现

前言前面的文章里&#xff0c;我们了解到 canal 可以从 MySQL 中感知数据的变化。这是因为它模拟 MySQL slave 的交互协议&#xff0c;伪装自己为 MySQL slave &#xff0c;从而实现了主从复制。正是了解到这一点&#xff0c;笔者有两个问题便一直萦绕于心&#xff1a;它是如何…

HH SaaS电商系统的供应商系统设计

供应商信息结构图 供应商类型 商城的供应商划分为专享型、共享型两种&#xff0c;但是租户和店铺供应商则都是“专享型”的。 共享型供应商发布的商品归属供应商自己的&#xff0c;商品档案供应商才有资格管理&#xff0c;所以spu_base需要保存供应商id&#xff0c;有供应商id…

aws faas_带有AWS Lambda和Java的无服务器FaaS

aws faas什么是无服务器架构&#xff1f; 无服务器架构在由第三方完全管理的临时容器中运行自定义代码。 自定义代码通常只是完整应用程序的一小部分。 也称为函数 。 这为无服务器架构提供了另一个名称&#xff0c;即功能即服务 &#xff08;FaaS&#xff09;。 该容器是短暂的…

跨境商品的进口税额显示

跨境商品的采购类型有三种&#xff1a;直邮、保税、一般贸易&#xff0c;而一般贸易的商品已经清关入境了&#xff0c;虽然是跨境商品&#xff0c;但是无需再清关&#xff0c;所以商品详情页无需显示进口税相关信息。 直邮跨境商品显示的进口税信息如下图所示&#xff1a; 保税…

coreldraw x8段落_CDR X8设置自定义文字为默认字体(二)

通过上一篇文章的介绍&#xff0c;我们已经了解到了在CorelDRAW中如何自定义设置默认字体&#xff0c;相关阅读可参阅&#xff1a;CDR X8设置文字为默认字体。其实在CorelDRAW软件中给用户提供方式不止是一种&#xff0c;本文将介绍更多关于设置默认字体的方法。1. 打开CorelDR…

jhipster_JHipster入门,第3部分

jhipster欢迎回到本JHipster教程系列&#xff01; 在第一部分中&#xff0c;我们介绍了如何创建整体应用程序。 在第二部分中 &#xff0c;我们逐步创建了一个微服务应用程序&#xff08;这有点复杂&#xff09;。 对于那些正在努力使JHipster正常运转的人&#xff0c;我想着重…

jhipster_JHipster入门,第2部分

jhipster所以你回来了&#xff01; 在本系列的最后一部分中 &#xff0c;我们采用了单片路线创建了一个JHipster应用程序。 这是红色药丸路线&#xff1b; 生活几乎与您习惯的一样。 但是也许您喜欢挑战。 也许您想超越红色药丸并尝试蓝色药丸。 在这种情况下&#xff0c;Blue…

HH SaaS电商系统的虚拟资金账户(钱包余额)设计

文章目录方案一&#xff0c;将资金账户抽象出来虚拟资金账户余额流水记录实体方案二&#xff0c;用户表直接保存资金余额余额流水记录实体方案一&#xff0c;将资金账户抽象出来 虚拟资金账户 P.S. 如果机构代码和消费代码有区分类型&#xff0c;那么资金账户表中就不必保存“…

jhipster_jHipster入门,第1部分

jhipster因此&#xff0c;您想保持技术的领先地位&#xff0c;但对所有活动部件感到不知所措。 你真幸运&#xff01; 这就是jHipster发光的地方。 如果您喜欢Ruby on Rails或Grails的方法来快速启动和运行应用程序&#xff0c;那么这可能是适合您的选择。 jHipster旨在使设置…

java基准测试_微基准测试进入Java 9

java基准测试我已经几个月没有在这里写文章了&#xff0c;这种例外还会继续。 我计划在明年三月左右恢复写作。 本文末尾的说明。 等待&#xff01; 不完全是最后&#xff0c;因为您可以向下滚动。 它在文章结尾处。 继续阅读&#xff01; 三年前&#xff0c;我在写有关Java编…