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

文章目录

    • 创建入库单的场景
    • 创建入库单的业务流程
      • 商品直接入库内部仓
      • 退货入库(内部仓)
      • 换货入库(内部仓)
      • 退货入库(外部仓)
      • 换货入库(外部仓)
      • 备货入库(内部仓)
      • 备货入库(外部仓)
      • 入库后更新销售库存数
        • 租户国内商品确认入库
        • 商城国内商品确认入库
        • 商城跨境商品确认入库
        • 店铺国内和跨境商品入库
    • 入库单状态
    • 入库单类型
    • 选择入货仓库
    • 添加入库商品
      • 租户添加入库商品
      • 商城添加入库商品
      • 总店添加入库商品
      • 分店添加入库商品
      • 供应商添加入库商品
    • 入库单实体
    • 入库单的关联表
    • 跨境商品入库

创建入库单的场景

  1. 商品进入内部仓时,租户/平台/店铺/供应商需要手动创建入库单(类型:采购入库单),采购入库单必须填写采购单号,以此作为入库凭证

P.S 我们系统并没有对外开放采购系统,所以这里都是手动填写外部采购单号

  1. 商家同意退货,买家成功提交退货物流信息后,系统会自动生成入库单(类型:退货入库单)

  2. 商家同意换货,买家成功提交退货物流信息后,系统会自动生成入库单(类型:换货入库单)

  3. 当商品的系统库存数少于商品的实际库存数时,需要手动创建入库单(类型:调整入库单)来修正商品的系统库存数

  4. 使用本系统发布商品后,商品初始库存数为0,那么也可以手动创建入库单(类型:调整入库单)来修改库存数

  5. 供应商在备货单上执行“发货”操作,系统会自动生成入库单(类型:备货入库单)

创建入库单的业务流程

商品直接入库内部仓

  1. 点击创建入库单(类型:调整入库单)

  2. 选择入货仓库和入库单类型,根据需要填写入库备注信息

  3. 添加入库商品

  4. 填写入库数量

  5. 完成提交

退货入库(内部仓)

  1. 买家在退款单完成发货

  2. 系统自动生成状态为“待入库”的退货入库单

  3. 卖家收到货,在入库单完成“确认收货”,入库单状态转变为“已入库”,同时更新退款单相应的状态

换货入库(内部仓)

  1. 买家在换货单完成发货

  2. 系统自动生成状态为“待入库”的换货入库单

  3. 卖家收到货,在入库单完成“确认收货”,入库单状态更新为“已入库”,同时更新换货单相应的状态

退货入库(外部仓)

  1. 买家在退款单完成发货

  2. 系统自动生成状态为“待入库”的退货入库单,并且将入库单同步发送给外部仓库系统

  3. 外部仓工作人员收到货,在入库单完成“确认收货”,入库单状态转变成“已入库”

  4. SaaS系统获取到外部仓库系统关联的入库单状态信息后立即将对应的入库单状态转变成“已入库”,同时更新退货单相应的状态

换货入库(外部仓)

  1. 买家在换货单完成发货

  2. 系统自动生成状态为“待入库”的换货入库单,并且将入库单同步发送给外部仓库系统

  3. 外部仓工作人员收到货,在入库单完成“确认收货”,入库单状态转变成“已入库”

  4. SaaS系统获取到外部仓库系统关联的入库单状态信息后立即将对应的入库单状态转变成“已入库”,同时更新换货单相应的状态

备货入库(内部仓)

  1. 供应商在“待发货”的备货单完成发货操作后,系统自动生成入货仓库的状态为“待入库”的备货入库单

  2. 仓库工作人员收到货,在入库单完成“确认收货”,入库单状态转变成“已入库”,同时备货单的状态转变成“已收货”

备货入库(外部仓)

  1. 供应商在“待发货”的备货单完成发货操作后,系统自动生成入货仓库的状态为“待入库”的入库单,并且将入库单同步发送给外部仓库系统

  2. 外部仓工作人员收到货,在入库单完成“确认收货”,入库单状态更新为“已入库”

  3. SaaS系统获取到外部仓库系统关联的入库单状态信息后立即将对应的入库单状态更新为“已入库”,同时更新备货单的状态为“已收货”

入库后更新销售库存数

租户国内商品确认入库

不需要更新销售库存数

商城国内商品确认入库

需要更新销售库存数,在表sku_base_sale的字段quantity累计入库数量,匹配字段sale_platform_id、sku_base_id

商城跨境商品确认入库

不需要更新销售库存数

店铺国内和跨境商品入库

需要更新销售库存数,在表sku_base_sale的字段quantity累计入库数量,匹配字段sale_store_id、sku_base_id

入库单状态

入库单有四种状态:待入库、已入库、部分入库、已取消

P.S. 确认入库时需要判断入库单中是否存在0<实际入库数<应入库数的商品,存在则说明部分入库。或者判断入库单的已入库总数是否大于0且小于应入库总数,是则说明部分入库

状态图
在这里插入图片描述

入库单类型

类型分为:调整入库单、退货入库单、调拨入库单、采购入库单、换货入库单、备货入库单

调整入库单:发布商品后,商品初始库存数为0,可以手动创建调整入库单来修改库存数。当商品的系统库存数少于商品的实际库存数时,也可以手动创建调整入库单来修正商品的系统库存数

退货入库单:买家在退款单完成发货,系统自动生成退货入库单

换货入库单:买家在换货单完成发货,系统自动生成换货入库单

备货入库单:供应商在备货单完成发货,系统自动生成备货入库单

采购入库单:如果用户需要使用本系统的仓储模块管理线下仓库商品,那么可以通过采购入库单来管理商品的入库

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

选择入货仓库

租户创建入库单,只能选择租户自己的仓库

平台创建入库单,只能选择平台自己的仓库

店铺创建入库单,只能选择店铺自己的仓库

供应商创建入库单,只能选择供应商自己的仓库

添加入库商品

租户添加入库商品

如果入库的是内部仓库,那么点击“添加商品”可以看到全部所属供应商及租户自供的商品(在“SKU供应信息表”查询,所属租户ID匹配,且所属平台ID和所属店铺ID为空的记录),如果入库的是外部仓库,那么点击“添加商品”可以看到租户已同步到外部仓库的全部商品,所以点击“添加商品”时前端必须判断是否选择了“入货仓库”,未选择入货仓库则提示:请先选择要入库的仓库~

商城添加入库商品

如果入库的是内部仓库,那么点击“添加商品”可以看到全部所属供应商、商城自供、租户分配的商品(在“可销售的商品表”中查询,销售平台ID匹配,且销售店铺ID为空的记录,再关联“SKU供应信息表”取供应商信息),如果入库的是外部仓库,那么点击“添加商品”可以看到商城已同步到外部仓库的全部商品,所以点击“添加商品”时前端必须判断是否选择了“入货仓库”,未选择入货仓库则提示:请先选择要入库的仓库~

总店添加入库商品

如果入库的是内部仓库,那么点击“添加商品”可以看到全部所属供应商、店铺自供、从商城选售的商品(在“可销售的商品表”中查询,销售店铺ID匹配的记录,再关联“SKU供应信息表”取供应商信息),如果入库的是外部仓库,那么点击“添加商品”可以看到总店已同步到外部仓库的全部商品,所以点击“添加商品”时前端必须判断是否选择了“入货仓库”,未选择入货仓库则提示:请先选择要入库的仓库~

分店添加入库商品

如果入库的是内部仓库,那么点击“添加商品”可以看到分店可销售的全部商品(在“可销售的商品表”中查询,销售店铺ID匹配的记录,再关联“SKU供应信息表”取供应商信息),如果入库的是外部仓库,那么点击“添加商品”可以看到分店已同步到外部仓库的全部商品,所以点击“添加商品”时前端必须判断是否选择了“入货仓库”,未选择入货仓库则提示:请先选择要入库的仓库~

供应商添加入库商品

如果入库的是内部仓库,那么点击“添加商品”可以看到供应商供应的全部商品,如果入库的是外部仓,那么点击“添加商品”可以看到供应商已同步到仓库的全部商品,所以点击“添加商品”时前端必须判断是否选择了“入货仓库”,未选择入货仓库则提示:请先选择要入库的仓库~

入库单实体

在这里插入图片描述

入库单的关联表

  • 入库单和出库单是一对一关系,有些外部仓的退货入库单需要关联退货商品的原出库单
  • 入库单和备货单是多对一关系,因为备货单发货时可以填写多个包裹,一个包裹对应一个入库单
  • 入库单和物流单是一对一关系,一个包裹对应生成一个入库单
  • 入库单和退款单是一对一关系,买家在退货单完成退货则生成一个退货入库单
  • 入库单和换货单是一对一关系,若果买家收到换货后还要换货,必须结束当前换货流程,再申请换货

跨境商品入库

  • 直邮的商品要入库到租户/平台的直邮内部仓中,保税的商品要入库到租户/平台的保税内部仓中

查看交互原型文档

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

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

相关文章

接口方法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编…

python周天为一周的开始_从两个月减肥四十斤说起,不懈坚持,才是一个人最核心的竞争力。...

大学毕业了十年&#xff0c;我的身材失控了十年。我对我的胖身材已经习以为常了十年了&#xff0c;我从来没想过改变&#xff0c;因为我也没有毅力改变。有一句话说的&#xff0c;人越胖&#xff0c;就越懒。因为我胖&#xff0c;所以我不跑步&#xff0c;我也不爱外出。只要你…

java实现线程的方式_java多线程实现的四种方式

java多线程实现的四种方式1、继承Thread类&#xff0c;重写run方法(其实Thread类本身也实现了Runnable接口)2、实现Runnable接口&#xff0c;重写run方法3、实现Callable接口&#xff0c;重写call方法(有返回值)4、使用线程池(有返回值)1、继承Thread类&#xff0c;重写run方法…

本地运行flowable_在CockroachDB上运行Flowable

本地运行flowable什么是CockroachDB&#xff1f; CockroachDB是一个我一直关注了很长时间的项目。 这是一个开放源代码的Apache 2许可数据库&#xff08; Github链接 &#xff09;&#xff0c;该数据库在很大程度上汲取了Google Spanner白皮书的启发 。 它的核心是可水平扩展的…

win10禁用驱动程序强制签名_图文细说 win10系统未检测到第三个监视器的途径 -win10使用教程...

据统计调查&#xff0c;好多朋友都在为图文细说 win10系统未检测到第三个监视器的途径 的问题而烦恼&#xff0c;小编决定将解决的办法分享给大家。对于电脑菜鸟而言看到图文细说 win10系统未检测到第三个监视器的途径 是很无奈的&#xff0c;试着独自一个人解决图文细说 win10…