--[[
|
编码: JX-29-14
|
名称: 盘点容器货品明细-盘点任务完成
|
作者:HAN
|
日期:2025-1-29
|
|
级别:项目
|
|
函数: SetCountTaskFinish
|
功能:
|
-- 创建 【盘点回库】作业
|
|
更改记录:
|
V2.0 HAN 20250210
|
任务完成后刷新改进
|
--]]
|
|
jx_base= require( "jx_base" )
|
wms_count= require( "wms_count" )
|
|
function SetCountTaskFinish ( strLuaDEID )
|
local nRet, strRetInfo
|
|
m3.PrintLuaDEInfo( strLuaDEID )
|
local runtime_parameter
|
nRet, runtime_parameter = m3.GetRuntimeParam(strLuaDEID)
|
if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), "GetRuntimeParam失败! "..runtime_parameter ) end
|
-- 获取【组盘输入】面板的参数
|
local parameter
|
nRet, parameter = m3.GetRuntimePanel_InputParamter( strLuaDEID, runtime_parameter.panel, "盘点输入" )
|
if ( nRet == 1 ) then
|
mobox.setInfo( strLuaDEID, "没有定义'盘点输入'面板参数!")
|
return
|
end
|
|
if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), parameter ) end
|
if ( parameter == nil ) then return end
|
local id = parameter.id -- 当前点中的盘点任务标识(Count_CG_Detail)
|
local cc_no = parameter.cc_no -- 当前点中的盘点任务所属盘点容器流水号
|
if ( cc_no == nil or cc_no == "") then
|
mobox.setInfo( strLuaDEID, "'盘点输入'面板必须有盘点容器流水号参数!")
|
return
|
end
|
-- 获取 实际盘点数量
|
nRet, strRetInfo = mobox.getCurEditDataObjAttr( strLuaDEID, "F_ACT_QTY" )
|
|
if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), "获取当前编辑属性失败! "..strRetInfo ) end
|
local obj_attrs = json.decode( strRetInfo )
|
local acc_qty = lua.Get_NumAttrValue( obj_attrs[1].value )
|
if ( acc_qty < 0 ) then
|
mobox.setInfo( strLuaDEID, "盘点数量不能为负数!")
|
return
|
end
|
|
-- 设置【盘点容器货品明细】状态 = 2(已盘点)
|
local strCondition = "S_ID = '"..id.."'"
|
local strUpdateSql = "N_B_STATE = 2, F_ACT_QTY = "..acc_qty
|
nRet, strRetInfo = mobox.updateDataAttrByCondition( strLuaDEID, "Count_CG_Detail", strCondition, strUpdateSql )
|
if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), "更新【盘点容器货品明细】信息失败!"..strRetInfo ) end
|
|
|
-- 检查一下当前料箱的盘点任务是否已经全部完成,如果完成就创建一个【盘点回库】作业
|
-- N_B_STATE = 1 表示未执行的盘点任务 这里 parameter.count_no 就是盘点单号
|
strCondition = "S_CNTR_CODE = '"..parameter.cntr_code.."' AND N_B_STATE = 1 AND S_COUNT_NO = '"..parameter.count_no.."'"
|
nRet, strRetInfo = mobox.getDataObjCount( strLuaDEID, "Count_CG_Detail", strCondition )
|
if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), strRetInfo ) end
|
local nCount = lua.StrToNumber( strRetInfo )
|
|
-- V2.0
|
-- 当前容器中的已经不存在未盘点的盘点任务
|
local action = {
|
{
|
action_type = "refresh_master_panel",
|
value = {
|
sub_page = {"当前任务","未执行任务"}
|
}
|
},
|
{
|
action_type = "set_dlg_attr",
|
value = {
|
{ attr = "UPC", value = "", enable = true, prompt = "请扫商品条码..." },
|
{ attr = "S_CNTR_CODE", value = "", enable = false },
|
{ attr = "S_CELL_NO", value = "", enable = false },
|
{ attr = "S_ITEM_CODE", value = "", enable = false },
|
{ attr = "F_QTY", value = "", enable = false },
|
{ attr = "F_ACT_QTY", value = "", enable = false },
|
{ attr = "S_ITEM_NAME", value = "", enable = false }
|
}
|
},
|
{
|
action_type = "refresh_related_panel",
|
value = {
|
{
|
panel_name = "料格显示",
|
input_parameter = {
|
cell_no = ""
|
}
|
}
|
}
|
}
|
}
|
|
local operation = {}
|
if ( nCount == 0 ) then
|
-- 创建【料箱入库】作业. 【配盘容器】状态改为4(拣货完成), CG_Detail 减去【配盘容器明细】中的内容
|
local ext_info = { cc_no = cc_no }
|
nRet, operation = jx_base.Create_StorageOperation( strLuaDEID, "巨沃", parameter.station, parameter.cntr_code, "盘点回库", ext_info )
|
if ( nRet ~= 0 ) then
|
mobox.setInfo( strLuaDEID, operation )
|
return
|
end
|
|
-- 【计划盘点容器】+ 回库作业号, 状态 = 3 (已盘点)
|
strUpdateSql = "S_BACK_OP_NO = '"..operation.code.."', N_B_STATE = 3"
|
strCondition = "S_CC_NO = '"..cc_no.."'"
|
nRet, strRetInfo = mobox.updateDataAttrByCondition( strLuaDEID, "CP_Count_Container", strCondition, strUpdateSql )
|
if ( nRet ~= 0 ) then
|
lua.Error( strLuaDEID, debug.getinfo(1), "更新【计划盘点容器】信息失败!"..strRetInfo )
|
end
|
local cp_cntr
|
nRet, cp_cntr = m3.GetDataObjByCondition( strLuaDEID, "CP_Count_Container", strCondition )
|
if ( nRet ~= 0 ) then
|
lua.Error( strLuaDEID, debug.getinfo(1), "获取【计划盘点容器】信息失败!"..cp_cntr )
|
end
|
|
--盘点容器盘点完成后数据处理
|
--根据 CP_Count_Container 生成 【盘点差异表】
|
nRet, strRetInfo = wms_count.CountCntr_PostProcess( strLuaDEID, cp_cntr )
|
if ( nRet ~= 0 ) then
|
lua.Error( strLuaDEID, debug.getinfo(1), 'wms_count.CountCntr_PostProcess 失败!'..strRetInfo )
|
end
|
|
|
-- V2.0
|
action[4] = {
|
action_type = "set_master_panel_cursor",
|
value = { form_name = "3055 TOP VIEW", ctrl_id = "S_CNTR_CODE", value = ""}
|
}
|
end
|
|
nRet, strRetInfo = mobox.setAction( strLuaDEID, lua.table2str(action) )
|
if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), "setAction失败! "..strRetInfo..' action = '..strAction ) end
|
|
-- 【注意】如果上面的程序有产生回库作业,需要对回库作业的终点货位加入库锁
|
if ( nCount == 0 ) then
|
nRet, strRetInfo = wms.wms_LockLocation(strLuaDEID, operation.end_loc_code, wms_base.Get_nConst( strLuaDEID, "锁类型-入库锁" ),
|
"", operation.code, operation.op_def_name )
|
if (nRet ~= 0) then lua.Error( strLuaDEID, debug.getinfo(1), "wms_LockLocation 失败!"..strRetInfo ) end
|
end
|
|
end
|