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

文章目录

    • 如何生成采购单
    • 系统生成采购单的流程
      • 基本流程
      • 扩展流程
        • 找不到符合条件的供应商,要求部分退款(初次生成采购单时)
        • 找不到符合条件的供应商,要求全部退款(初次生成采购单时)
        • 指定供应商的库存不足,需要更换供应商(初次生成采购单时)
    • 取消采购单
    • 采购单结算
    • 采购单状态
    • 采购单实体图
    • 协议货款结算日期
    • 采购单的关联表
    • 重新生成采购单

如何生成采购单

采购业务说明
本系统的采购业务和正常采购业务不同,本系统的采购逻辑其实和分销系统的采购逻辑一样。
本系统的消费者下单付款后,系统才根据销售订单和商品的采购策略生成采购单(消费者购买,商品的采购方才向供货商发起采购单),也就是说实际采购单是依据销售单而产生的,之后采购方依据采购单与供货商对账和结算货款。

生成采购单的系统逻辑
本系统的采购单是由“订单中心”自动引发的,销售订单付款后,“订单中心”会将订单及商品数据发送给“调度中心”,“调度中心”根据商品的“采购策略”确定实际的供应商,再将订单、商品、供应商数据发送给“采购中心”,采购中心按供应商生成对应的采购单。

系统生成采购单的流程

基本流程

  1. 订单中心将订单状态更新为“等待商家发货”后,同步将 “未退款” 且“未确定供应商”的商品及订单数据发送给调度中心

  2. 调度中心根据“采购策略”确定最终的供应商,同步将商品、订单、供应商数据发送采购中心

  3. 采购中心生成有关供应商的采购单,并反馈信息给调度中心

  4. 调度中心收到反馈信息后,再将供应商信息反馈给订单中心

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

扩展流程

找不到符合条件的供应商,要求部分退款(初次生成采购单时)

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

  2. 调度中心根据“采购策略”确定供应商,有商品找不到符合条件的供应商

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

  4. 采购人员接收到工单后去查找其它的供应商,最后也没有找到其它符合条件的供应商,于是采购专员创建“售后”类型的工单给客服部门指定的人员

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

  6. 订单中心收到反馈信息后修改相关子单的状态,此时不需要自动通知“调度中心”锁定供应商,由采购专员手动重新生成采购单

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

找不到符合条件的供应商,要求全部退款(初次生成采购单时)

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

  2. 调度中心根据“采购策略”确定供应商,有商品找不到符合条件的供应商

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

  4. 采购人员接收到工单后去查找其它的供应商,最后也没有找到其它符合条件的供应商,于是采购专员创建“售后”类型的工单给客服部门指定的人员

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

指定供应商的库存不足,需要更换供应商(初次生成采购单时)

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

  2. 调度中心根据“采购策略”确定供应商,有商品找不到符合条件的供应商

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

  4. 采购人员接收到工单后找到其他符合的供应商,于是修改“采购策略”

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

取消采购单

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

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

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

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

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

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

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

P.S. 发现供应商的商品实际库存不足,但是其他供应商有货,应该先取消出库单,再取消采购单。供应商没有直接取消采购单的权限,如果采购商直接取消采购单,系统必须判断采购单是否存在未确定发货仓库的商品,如果存在说明仓库人员已经先取消出库单或者根本没有生成出库单,所以可以直接取消采购单,如果不存在未确定发货仓的商品,则不允许取消采购单,系统提示:采购单内的商品都已经生成出库单,不允许直接取消采购单,若您确实要取消采购单,建议您先取消有关的出库单后再取消采购单~

采购单结算

点击查看结算系统设计方案

采购单状态

采购主单状态图
在这里插入图片描述

采购子单状态图
在这里插入图片描述

采购主单的状态需要新增归档状态,因为采购单后面也涉及到售后问题,分销商可以在采购单发起售后,参考天猫分销平台的设计

采购单实体图

在这里插入图片描述

协议货款结算日期

如果入驻供应商有协商货款结算日期,那么生成采购单时就保存该结算日期,如果没有则保存采购单归档日期作为结算日期

采购单的关联表

  • 采购单和销售单是多对一关系,采购主单保存销售主单ID,采购子单保存销售子单ID,一个销售单内的商品可能由不同的供应商供货,所以一个销售单会生成多个采购单

  • 采购单和采购货款结算单是一对一关系,采购货款结算单保存采购主单ID,采购货款结算单的商品保存采购子单ID,放弃多个采购单一起结算的方案,因为将来采购单可能会涉及到更多的结算单

  • 采购单和出库单是多对多关系,销售订单生成采购单后才生成出库单,在实际业务中会有查看采购单关联哪些出库单的需求,所以出库单不应该直接去关联销售订单,而是去关联采购单,如果要查看销售订单关联哪些出库单,可以通过关联的采购单找到相关的出库单,出库单和采购单是多对多的关系,采用中间表建立关联关系。
    P.S. 取消采购单和出库单的关联关系,如果采购单要查看相关的出库单,通过关联的销售订单查询

重新生成采购单

销售订单存在没有供应商的商品,销售订单则会出现“重新生成采购单”的按钮,采购专员点击按钮,将没有供应商且未退款的商品信息提交给“调度中心”根据“采购策略”锁定供应商,然后“调度中心”将订单信息、商品信息和供应商信息提交给“采购中心”,采购中心接收到相关数据后按供应商生成采购单,同步将商品的供应商信息反馈给调度中心,调度中心再将供应商信息反馈给订单中心,订单中心收到反馈后,将供应商信息保存在对应的销售子单上,此时不需要自动通知“调度中心”锁定发货仓库,由仓库专员手动重新生成出库单

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

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

相关文章

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

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

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

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

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

前言java从零手写实现redis(一)如何实现固定大小的缓存?java从零手写实现redis(三)redis expire 过期原理java从零手写实现redis(三)内存数据如何重启不丢失?本节,让我们…

drill apache_如何指南:Apache Drill入门

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

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

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

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

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

erosa mysql_MySQL协议和canal实现

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

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

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

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

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

跨境商品的进口税额显示

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

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

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

jhipster_JHipster入门,第3部分

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

jhipster_JHipster入门,第2部分

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

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

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

jhipster_jHipster入门,第1部分

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

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

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

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

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

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

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

本地运行flowable_在CockroachDB上运行Flowable

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