springboot vue 开源 会员收银系统 (9) 库存管理 结算时扣库存

前言

完整版演示 http://120.26.95.195/
开发版演示 http://120.26.95.195:8889/

在之前的开发进程中,我们基本搭建了收银台、开卡结算及订单的优化升级 ,今天的文章里我们完成商品的出入库及收银台库存优化。

1.出入库管理

我们采用"总单细目的形式" 即一个出入库单对应多个商品

2.数据库表

java 复制代码
CREATE TABLE `business_stock` (
  `STOCK_ID` varchar(32) NOT NULL COMMENT '库存单id',
  `STOCK_TITLE` varchar(255) DEFAULT NULL COMMENT '库存单表头',
  `STOCK_NO` varchar(32) DEFAULT NULL COMMENT '库存单编号',
  `STOCK_STATUS` tinyint(2) DEFAULT '0' COMMENT '0正常 1审核完毕 2取消',
  `SHOP_ID` varchar(32) DEFAULT NULL COMMENT '门店id',
  `SHOP_NAME` varchar(255) DEFAULT NULL COMMENT '门店名',
  `CREATE_NAME` varchar(255) DEFAULT NULL COMMENT '创建人',
  `CREATE_TIME` datetime DEFAULT NULL COMMENT '创建时间',
  `CREATE_ID` varchar(32) DEFAULT NULL COMMENT '创建人id',
  `UPDATE_TIME` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  `UPDATE_NAME` varchar(255) DEFAULT NULL COMMENT '修改人',
  `UPDATE_ID` varchar(32) DEFAULT NULL COMMENT '修改人id',
  `CHECK_ID` varchar(32) DEFAULT NULL COMMENT '审核人ID',
  `CHECK_NAME` varchar(255) DEFAULT NULL COMMENT '审核人姓名',
  `CHECK_TIME` datetime DEFAULT NULL COMMENT '审核时间',
  `STOCK_TYPE` tinyint(2) DEFAULT NULL COMMENT '类型 1入库 2出库',
  `STOCK_MONEY` decimal(10,2) DEFAULT NULL COMMENT '金额',
  `STOCK_IN_TYPE` tinyint(2) DEFAULT NULL COMMENT '入库类型',
  `STOCK_OUT_TYPE` tinyint(2) DEFAULT NULL COMMENT '出库类型',
  `VERSION` bigint(10) DEFAULT '0' COMMENT '乐观锁字段',
  `DELETED` tinyint(2) DEFAULT '0' COMMENT '0正常 1删除',
  `REMARK` varchar(1000) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`STOCK_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库存单';

这是出入库单表的字段 这里我们省略了审核的步骤 后续可以进行完善

java 复制代码
CREATE TABLE `business_stock_detail` (
  `STOCK_DETAIL_ID` varchar(32) NOT NULL COMMENT '库存详情id',
  `STOCK_ID` varchar(32) DEFAULT NULL COMMENT '库存单id',
  `PRODUCT_ID` varchar(32) DEFAULT NULL COMMENT '商品',
  `PRODUCT_NAME` varchar(255) DEFAULT NULL COMMENT '商品名 ',
  `COUNT` bigint(20) DEFAULT NULL COMMENT '库存数量',
  `STOCK_STATUS` tinyint(2) DEFAULT NULL COMMENT '0正常 1审核完毕 2取消',
  `STOCK_TYPE` tinyint(2) DEFAULT NULL COMMENT '类型 1入库 2出库',
  `AMOUNT` decimal(10,2) DEFAULT NULL COMMENT '金额',
  `CREATE_TIME` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`STOCK_DETAIL_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

这里出入库详情 简单的保存商品id和数量即可

3.下面进行展示

商品选择页面我们复用了 商品列表 并在商品表中增加是否进行库存管理这一字段 我们在结算时 只扣除进行库存管理的商品
并且做好异常处理 当库存为0 给出错误提示

结算后自动生成出库单

后续进行销单是 自动生成 入库单 重新将出库的商品进行库存回退

代码地址
https://gitee.com/ddeatrr/memberShop

相关推荐
二哈喇子!4 小时前
Vue2 监听器 watcher
前端·javascript·vue.js
咚为4 小时前
Rust Print 终极指南:从底层原理到全场景实战
开发语言·后端·rust
二哈喇子!4 小时前
SpringBoot项目右上角选择ProjectNameApplication的配置
java·spring boot
二哈喇子!4 小时前
基于Spring Boot框架的车库停车管理系统的设计与实现
java·spring boot·后端·计算机毕业设计
二哈喇子!4 小时前
基于SpringBoot框架的水之森海底世界游玩系统
spring boot·旅游
二哈喇子!4 小时前
Java框架精品项目【用于个人学习】
java·spring boot·学习
二哈喇子!5 小时前
基于SpringBoot框架的网上购书系统的设计与实现
java·大数据·spring boot
二哈喇子!6 小时前
基于JavaSE的淘宝卖鞋后端管理系统的设计与实现
java·spring boot·spring
Coder_Boy_6 小时前
基于SpringAI的在线考试系统-智能考试系统-学习分析模块
java·开发语言·数据库·spring boot·ddd·tdd
Amumu121386 小时前
Vue核心(三)
前端·javascript·vue.js