前言
完整版演示 http://120.26.95.195/
开发版演示 http://120.26.95.195:8889/
在之前的开发进程中,我们基本搭建了收银台、开卡结算及订单的优化升级 ,今天的文章里我们完成商品的出入库及收银台库存优化。
1.出入库管理
我们采用“总单细目的形式” 即一个出入库单对应多个商品
2.数据库表
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='库存单';
这是出入库单表的字段 这里我们省略了审核的步骤 后续可以进行完善
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 给出错误提示
结算后自动生成出库单
后续进行销单是 自动生成 入库单 重新将出库的商品进行库存回退