Jianw
2025-05-13 3b39fe3810c3ee2ec9ec97236c1769c5c85e062c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
--[[
    编码: WMS-19-03
    名称: 容器货品明细-码盘-条码输入后
    作者:HAN  
    日期:2025-1-29
    级别:固定 (说明本段代码在项目中不太会变化)
    
    函数: AfterQRCodeInput
 
    功能:
        -- 在码盘界面,输入条码/扫码后,需要通过条码获取 货品的信息
        -- 注: 本代码根据 新兴项目 作为原型开发,供其它项目参考
        --     新兴项目是从上架单明细中获取是否有该条码的货品,扫描的二维码是 批次+卷号 是一个唯一号
               在【上架单明细】中是 S_SERIAL_NO 产品序列号
    更改记录:
 
--]]
 
wms_base = require( "wms_base" )
 
function AfterQRCodeInput ( strLuaDEID )
    local nRet, strRetInfo
    local attrs
 
    -- step1  获取5600码盘界面中表头界面的输入的条码
    nRet, attrs = m3.GetSysInputParameter( strLuaDEID ) 
    if ( nRet ~= 0 )  then lua.Error( strLuaDEID, debug.getinfo(1), "获取当前输入面板里的属性失败! "..attrs ) end 
    local input_attr = m3.KeyValueAttrsToObjAttr(attrs)
    local qr_code = input_attr.QRCode
    if (qr_code == nil or qr_code == '') then return end 
 
    -- step2 查询【上架单明细】
    -- 注: 下面的查询条件可能不同项目会有所不同
    --     N_B_STATE = 0 说明这条【上架单明细】还有量可以进行绑定
    local strCondition = "S_SERIAL_NO = '"..qr_code.."' AND N_B_STATE = 0"
    local putaway_detail
    nRet, putaway_detail = m3.GetDataObjByCondition(strLuaDEID, "Putaway_Detail", strCondition )
    if ( nRet == 1) then 
        -- 前端显示信息
        mobox.setInfo( strLuaDEID, "【上架单明细】中不存在满足目前条码条件的记录!" )
        return 
    end
    if (nRet ~= 0) then lua.Error( strLuaDEID, debug.getinfo(1), "获取【上架单明细】信息失败! " .. strRetInfo) end
 
    -- 计算出可以绑定的数量
    local total_qty = putaway_detail.qty
    local alloc_qty = putaway_detail.alloc_qty
    local acc_c_qty = putaway_detail.acc_c_qty
    local acc_b_qty = putaway_detail.acc_b_qty
    -- 可以绑定的数量 = 总数量 - 分配量 - 取消数量 - 已经绑定数量
    local qty = total_qty - alloc_qty - acc_c_qty - acc_b_qty
 
    if ( qty <= 0 ) then
        -- 前端显示信息
        mobox.setInfo( strLuaDEID, "绑定数量已满!" )
        return 
    end
 
    -- 组织 容器货品明细 数据对象属性 -- 这个加入到“正在码盘”
    -- 注: 下面的查询条件可能不同项目会有所不同
    -- 设置信息
    local attr_array = {}
    local insert_row = {}
    attr_array[1] = lua.KeyValueObj( "S_PUTAWAY_NO", putaway_detail.putaway_no )
    attr_array[2] = lua.KeyValueObj( "S_ITEM_CODE", putaway_detail.item_code )
    attr_array[3] = lua.KeyValueObj( "S_ITEM_NAME", putaway_detail.item_name )
    attr_array[4] = lua.KeyValueObj( "S_SERIAL_NO", putaway_detail.serial_no )
    attr_array[5] = lua.KeyValueObj( "S_BS_NO", putaway_detail.bs_no )
    attr_array[6] = lua.KeyValueObj( "F_NET_WEIGHT", putaway_detail.net_weight )
    attr_array[7] = lua.KeyValueObj( "F_GROSS_WEIGHT", putaway_detail.gross_weight )
    attr_array[8] = lua.KeyValueObj( "S_WU", putaway_detail.weight_unit )
    attr_array[9] = lua.KeyValueObj( "S_UOM", putaway_detail.uom )
    attr_array[10] = lua.KeyValueObj( "F_QTY", qty )
    insert_row.attrs = attr_array
 
    local value = {}
    -- insert_subtable_page_row action 的value 格式
    value.page_name = "正在码盘"
    value.row[1] = insert_row
 
    local action = {}
    action.action_type = "insert_subtable_page_row"
    action.value = value
 
    -- 设置action
    nRet, strRetInfo = mobox.setAction( strLuaDEID, '['..lua.table2str(action)..']'  )
    if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), "setAction失败! "..strRetInfo..' action = '..lua.table2str(action) ) end     
end