wms入库作业_6大业务单据逻辑

知道了入库的核心流程之后,也只能从宏观上了解入库由哪些作业步骤完成,也即知道了有哪些子模块。若能知道整个入库模块有哪些业务单据、及其关联关系和状态,那么就掌握了入库模块的业务本质。
篇幅有限,完整图片可沟通我
入库单号关联到货通知单号

入库单号是上游OMS系统的入库单号,由OMS系统生成。入库单下发到wms后生成到货通知单,入库单与到货通知单1对1关联,一个入库单只有一个运单号。到货通知单的初始状态是待收货、被仓库签收后状态变成收货中、已QC的都上架完成后被手动执行【收货完成】后状态变成收货完成。

运单号关联质检单

包裹流通到QC台时用运单号去1对1生成质检单,质检单此时初始状态为待质检。该包裹里的任何一个SKU被QC后该质检单状态变成质检中,已QC的都上架完成后被手动执行【收货完成】时状态变成质检完成。

质检箱关联上架单

SKU被QC后需要放到质检箱里,当该质检箱被放满后就要封箱,那么该箱子就是被占用同时生成上架单,此时上架单的初始状态为待上架。同一运单号的不同SKU可一起封箱,被封箱的质检箱里的SKU经过楼层分理、货列分理到了上架环节。当一个上架单里的SKU开始上架了单据状态变成上架中,当里面的所有SKU所有数量都上架完成后,经过系统判断将单据状态变成上架完成。

不写理论上的产品方法论,只真实记录我做的WMS系统的每一个功能,在下才疏学浅,此文若能对读者朋友有一点点帮助,那么我感到开心快乐。(同时也欢迎私信指教我)

--历史库存的计算方式 SELECT CONCAT( `WarehouseName`, `WarehouseCode` ) AS '仓库名称', `WareFieldCode` AS '库区', `WarePositionCode` AS '库位', SUM( CASE WHEN `OrderType` = 1 THEN `Qty` ELSE `Qty` END ) AS '库存数量', SUM( CASE WHEN `OrderType` = 1 THEN `CostAmount` ELSE `CostAmount` END ) AS '库存成本金额', `SkuCode` AS '商品编码', `SkuName` AS '商品名称', `Barcode` AS '商品条码', CONCAT( ROUND(`NUnit1`, 0), `Unit`, '/', `Unit1` ) AS '件规格' FROM b2b_wms.st_warestoreflow WHERE `TenantId` IN ( '3286299645965762560', '3131897506372599808' ) AND `WarehouseId` IN ( '3370028676427628544', '3353714265942151168' ) AND `CompletionTime` <= @oStartTime AND `CompletionTime` <= @oEndTime AND `SkuCode` = @SkuCode -- WITH -- CTE1: 当前有效库存及其完整属性 CurrentInventory AS ( SELECT DISTINCT c.`Name` AS hName, c.`Code` AS hCode, e.`X4`, e.`Code` AS fCode, d.`Code` AS pCode, f.`SkuCode`, f.`SkuName`, f.`Barcode`, f.`Unit`, f.`Subtitle`, b.`Qty`, b.`Amount`, a.`FnType`, a.`WaresId`, b.`SupplierId` FROM b2b_wms.st_warestore a JOIN b2b_wms.st_warestoreitem b ON a.`Id` = b.`WareStoreId` JOIN b2b_wms.st_warehouse c ON a.`WarehouseId` = c.`Id` JOIN b2b_wms.st_wareposition d ON b.`WarePositionId` = d.`Id` JOIN b2b_wms.st_warefield e ON d.`WareFieldId` = e.`Id` AND d.`WarehouseId` = e.`WarehouseId` JOIN b2b_wms.st_wares f ON a.`WaresId` = f.`Id` WHERE a.`TenantId` IN ('3286299645965762560', '3131897506372599808') AND a.`WarehouseId` IN ('3370028676427628544', '3353714265942151168') AND b.`Qty` > 0 ), -- CTE2: 出库订单汇总(KPI 数据) OutboundKPI AS ( SELECT b.`WaresId`, COUNT(DISTINCT a.`Id`) AS 出库频次, SUM(b.`Qty`) AS 总出库数量, SUM(b.`F9`) AS 出库总金额 FROM b2b_wms.st_outstockorder a JOIN b2b_wms.st_outstockorderitem b ON a.`Id` = b.`OutStockOrderId` WHERE a.`TenantId` IN ('3286299645965762560', '3131897506372599808') AND a.`WarehouseId` IN ('3370028676427628544', '3353714265942151168') AND a.`Status` = 3 AND a.`CompletionTime` >= @oStartTime AND a.`CompletionTime` <= @oEndTime GROUP BY b.`WaresId` ) -- 主查询:组合库存与出库 KPI,计算各项指标 SELECT CONCAT(t.hName, t.hCode) AS '仓库名称', CASE WHEN t.X4 = 0 THEN CONCAT('分拣区', t.fCode) WHEN t.X4 = 1 THEN CONCAT('储货区', t.fCode) WHEN t.X4 = 2 THEN CONCAT('隔离区', t.fCode) ELSE '其他' END AS '库区', t.pCode AS '库位', t.SkuCode AS '商品编码', t.SkuName AS '商品名称', t.Barcode AS '商品条码', t.Unit AS '单位', SUBSTRING(t.Subtitle, 1, 5) AS '规格', t.Qty AS '库存数量', t.Amount AS '库存金额', CASE WHEN t.FnType = 3 THEN '拆零' WHEN t.FnType = 1 THEN '整件' ELSE '其他' END AS '分拣类型', -- 出库统计 COALESCE(kpi.出库频次, 0) AS '出库频次(单数)', ROUND( COALESCE(kpi.出库频次, 0) / GREATEST(DATEDIFF(@oEndTime, @oStartTime), 1), 4 ) AS '出库频率(次/天)', COALESCE(kpi.总出库数量, 0) AS '总出库数量', COALESCE(kpi.出库总金额, 0.00) AS '出库总金额', -- 平均每单出库量 CASE WHEN kpi.出库频次 > 0 THEN ROUND(kpi.总出库数量 / kpi.出库频次, 2) ELSE 0.00 END AS '平均出库单量', -- 库存周转率(近似)= 出库金额 / 当前库存金额(简化版) CASE WHEN t.Amount > 0 THEN ROUND(COALESCE(kpi.出库总金额, 0) / t.Amount, 2) ELSE NULL END AS '库存周转率(近似)', -- 周转天数 = (当前库存金额 / 日均出库金额) CASE WHEN kpi.出库总金额 > 0 THEN ROUND((t.Amount / kpi.出库总金额) * DATEDIFF(@oEndTime, @oStartTime), 2) ELSE NULL END AS '库存周转天数(周期内)' FROM CurrentInventory t LEFT JOIN OutboundKPI kpi ON t.WaresId = kpi.WaresId WHERE t.Qty > 0 -- 确保有库存 ORDER BY kpi.出库总金额 DESC, t.SkuCode; 提高数据准确性
最新发布
11-09
### WMS系统主业务流程设计方案 WMS(Warehouse Management System)仓储管理系统的主业务流程设计通常围绕仓库的核心功能展开,主要包括入库、存储、拣选、出库以及盘点等环节。以下是针对各主要模块的设计方案: #### 1. **入库管理** 入库管理WMS系统的重要组成部分之一,负责处理货物进入仓库的过程。此过程涉及多个子步骤,包括收货确认、质检、上架分配等。 - 收货确认阶段需对接ERP或其他上游系统获取采购订单或送货通知单(ASN),并验证实物与单据的一致性[^2]。 - 质检完成后,依据预设规则自动计算最优储位,并指导工作人员将货物放置于指定位置。 ```python def receive_goods(order_id, goods_list): """ 接收入库货物逻辑 :param order_id: 订单ID :param goods_list: 商品列表 """ # 验证商品数量和状态 validated_goods = validate_order(order_id, goods_list) # 分配储位 storage_locations = allocate_storage(validated_goods) return {"order": order_id, "locations": storage_locations} ``` #### 2. **库存管理** 库存管理旨在实时跟踪货物的位置及其状态变化,确保账实一致。当发生盘存差异时,可通过特定机制调整库存记录。 - 对于盘存数据的同步问题,可采用两种策略:一是视盘存为特殊类型的出入库活动;二是创建独立的盘存记录表来保存每次操作的历史详情[^3]。 #### 3. **拣选与分发** 拣选作业直接影响发货效率和服务质量,在这一过程中应用先进的算法和技术手段尤为重要。 - 利用RF手持设备或语音提示引导员工按照既定路径高效采集所需物品[^1]。 - 同时支持整件提货及拆零取货的不同场景需求。 #### 4. **出库控制** 最后一步即为客户准备好的产品安排装载离场手续办理工作流定义清楚之后才能顺利实施下去。 - 出库前再次核对待发送清单无误后再放行车辆离开现场完成全部交易周期闭环运作模式构建起来以后就可以正式投入使用了。 ```sql -- 更新库存表减少相应数量 UPDATE inventory SET quantity = quantity - ? WHERE product_id = ? ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值