--[[
|
编码: JX-102-02
|
名称: 创建后
|
作者:
|
日期: 2025-1-29
|
|
函数: AfterDataObjDelete
|
|
功能:
|
-- 删除【波次组成】【波次明细】
|
-- 删除入库波次计划出库的料箱等,更新入库单信息
|
|
更改记录:
|
|
--]]
|
|
wms_base = require ("wms_base")
|
|
function AfterDataObjDelete( strLuaDEID )
|
local nRet, strRetInfo
|
|
-- 获取 S_NO
|
nRet, strRetInfo = mobox.getCurEditDataObjAttr( strLuaDEID, "S_WAVE_NO", "N_B_STATE" )
|
if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), "获取当前编辑属性失败! "..strRetInfo ) end
|
|
local obj_attrs = json.decode( strRetInfo )
|
local wave_no = obj_attrs[1].value
|
local b_state = lua.StrToNumber( obj_attrs[2].value )
|
|
if ( wave_no == '' or wave_no == nil ) then return end
|
|
-- 删除波次组成
|
local strCondition = "S_WAVE_NO = '"..wave_no.."'"
|
nRet, strRetInfo = mobox.dbdeleteData( strLuaDEID, "IW_Compose", strCondition )
|
if ( nRet ~= 0) then lua.Error( strLuaDEID, debug.getinfo(1), "删除入库波次相关的【波次组成】失败! "..strRetInfo ) end
|
|
-- 删除入库波次组成
|
local strCondition = "S_WAVE_NO = '"..wave_no.."'"
|
nRet, strRetInfo = mobox.dbdeleteData(strLuaDEID, "IW_Detail", strCondition)
|
if (nRet ~= 0) then lua.Error( strLuaDEID, debug.getinfo(1), "删除【IW_Detail】失败!"..strRetInfo) end
|
|
-- 更新【入库单】中的 S_WAVE_NO,S_STATION_NO, S_OPERATOR_NAME, S_OPERATOR, N_B_STATE
|
local strUpdateSql = "N_B_STATE = 0, S_WAVE_NO = '', S_STATION_NO ='', S_OPERATOR_NAME = '', S_OPERATOR = ''"
|
local strCondition = "S_WAVE_NO = '"..wave_no.."'"
|
nRet, strRetInfo = mobox.updateDataAttrByCondition( strLuaDEID, "Inbound_Order", strCondition, strUpdateSql )
|
if ( nRet ~= 0 ) then return 2, "更新【入库单】信息失败!"..strRetInfo end
|
|
|
-- 如果业务状态不等于完成 要把容器解锁
|
if ( b_state ~= 3 ) then
|
-- 释放预分配的料格数量
|
strCondition = "S_BS_NO = '"..wave_no.."'"
|
nRet, data_objs = m3.QueryDataObject(strLuaDEID, "Pre_Alloc_CNTR_Detail", strCondition, "S_CNTR_CODE" )
|
if (nRet ~= 0) then lua.Error( strLuaDEID, debug.getinfo(1), "QueryDataObject失败!"..data_objs ) end
|
|
if ( data_objs ~= '' ) then
|
local n, m
|
local pac_detail
|
local cntr_list = {}
|
local find
|
for n = 1, #data_objs do
|
pac_detail = m3.KeyValueAttrsToObjAttr(data_objs[n].attrs)
|
find = false
|
local cell = { cell_no = pac_detail.S_CELL_NO }
|
for m = 1, #cntr_list do
|
if ( cntr_list[m].cntr_code == pac_detail.S_CNTR_CODE ) then
|
find = true
|
table.insert( cntr_list[m].cell_list, cell )
|
break
|
end
|
end
|
if ( find == false ) then
|
local cntr = {
|
cntr_code = pac_detail.S_CNTR_CODE,
|
cell_list = {}
|
}
|
table.insert( cntr.cell_list, cell )
|
table.insert( cntr_list, cntr )
|
end
|
end
|
|
local cell_num
|
for m = 1, #cntr_list do
|
strCondition = "S_CODE = '"..cntr_list[m].cntr_code.."'"
|
cell_num = #cntr_list[m].cell_list
|
nRet, strRetInfo = mobox.decDataObjAccQty( strLuaDEID, "Container", strCondition, "N_ALLOC_CELL_NUM", cell_num )
|
if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), "decDataObjAccQty(Container)失败! "..strRetInfo ) end
|
end
|
|
-- 把料格状态=3(预约)的设置为 0
|
strUpdateSql = "N_EMPTY_FULL = 0, S_ALLOC_OP_CODE = ''"
|
strCondition = "N_EMPTY_FULL = 3 AND S_ALLOC_OP_CODE = '"..wave_no.."'"
|
nRet, strRetInfo = mobox.updateDataAttrByCondition( strLuaDEID, "Container_Cell", strCondition, strUpdateSql )
|
if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), "更新【Container_Cell】状态信息失败!"..strRetInfo ) end
|
end
|
end
|
|
-- 删除[预分配容器/Pre_Alloc_Container]
|
local strCondition = "S_BS_TYPE = 'Inbound_Wave' AND S_BS_NO = '"..wave_no.."'"
|
nRet, strRetInfo = mobox.dbdeleteData(strLuaDEID, "Pre_Alloc_Container", strCondition)
|
if (nRet ~= 0) then lua.Error( strLuaDEID, debug.getinfo(1), "删除【Pre_Alloc_Container】失败!"..strRetInfo) end
|
|
-- 删除[组盘明细/Pre_Alloc_CNTR_Detail]
|
nRet, strRetInfo = mobox.dbdeleteData(strLuaDEID, "Pre_Alloc_CNTR_Detail", strCondition)
|
if (nRet ~= 0) then lua.Error( strLuaDEID, debug.getinfo(1), "删除【Pre_Alloc_CNTR_Detail】失败!"..strRetInfo) end
|
|
end
|