--[[
|
编码: WMS-15-08
|
名称: 收货单-定版后
|
作者:HAN
|
日期:2025-1-29
|
|
级别:项目 (说明本段代码在项目中需要变化)
|
|
函数: AfterStateChange
|
|
功能:
|
- 判断物料是否要检验? 如果需要生成检验单,如果不需要检验生成上架单
|
- 根据货品的去向增加检验区、上架区的量表
|
- 是否检验可以根据来源类型,货品类型等来设置,就目前新兴项目来说入成品库都不需要检验(因此这块代码暂时空缺),可以从纳特项目中来实践
|
- 设置【收货单明细】的状态为定版
|
更改记录:
|
|
--]]
|
wms_in = require( "wms_inbound" )
|
|
function AfterStateChange ( strLuaDEID )
|
local nRet, strRetInfo
|
local inspection_area = '' -- 检验区
|
local putaway_area = '' -- 上架区
|
|
-- 获取收货单相关信息
|
nRet, strRetInfo = mobox.getCurEditDataObjAttr( strLuaDEID )
|
if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), "获取当前编辑属性失败! "..strRetInfo ) end
|
-- 根据获取的属性生成收货单对象
|
nRet, strRetInfo = mobox.objAttrsToLuaJson( "Receipt_Order", strRetInfo )
|
if ( nRet ~= 0 or strRetInfo == '' ) then lua.Error( strLuaDEID, debug.getinfo(1), "objAttrsToLuaJson失败! "..strRetInfo ) end
|
local receipt_obj = json.decode( strRetInfo )
|
if ( receipt_obj == nil ) then lua.Error( strLuaDEID, debug.getinfo(1), "objAttrsToLuaJson失败! " ) end
|
|
-- step1 判断收货单里是否有设置检验
|
if ( receipt_obj.inspection == 'Y' ) then
|
wms_in.CreateInspectionOrder( strLuaDEID, receipt_obj, inspection_area )
|
elseif ( receipt_obj.inspection == 'N' ) then
|
WMS_CreatePutawayOrder( strLuaDEID, receipt_obj, putaway_area )
|
else
|
-- 通过供应商来判断
|
if ( receipt_obj.supplier_no == '' ) then lua.Error( strLuaDEID, debug.getinfo(1), "收货单中的供应商编码不能为空! " ) end
|
-- 获取供应商对象
|
nRet, supplier_obj = m3.GetDataObjectByKey( strLuaDEID, "Supplier", "S_NO", receipt_obj.supplier_no )
|
if ( nRet == 0 ) then
|
-- 是否免检
|
if ( supplier_obj.uninspected == 'Y' ) then
|
WMS_CreatePutawayOrder( strLuaDEID, receipt_obj, putaway_area )
|
elseif (supplier_obj.uninspected == 'N') then
|
wms_in.CreateInspectionOrder( strLuaDEID, receipt_obj, inspection_area )
|
else
|
WMS_CreatePutawayOrder( strLuaDEID, receipt_obj, putaway_area )
|
end
|
else
|
WMS_CreatePutawayOrder( strLuaDEID, receipt_obj, putaway_area )
|
end
|
end
|
|
if ( receipt_obj.no == '') then
|
lua.Warning( strLuaDEID, debug.getinfo(1), "收货单编号为空! " )
|
return
|
end
|
if ( receipt_obj.state == nil or receipt_obj.state == '') then
|
lua.Warning( strLuaDEID, debug.getinfo(1), "收货单状态为空或nil, 检查一下是否有定义名为 state 的 Lua 属性! " )
|
return
|
end
|
|
|
-- 清除 asn_no 的最大行号记录 ()
|
nRet, strRetInfo = mobox.removeSerialNumber( "行号", receipt_obj.no )
|
if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), "removeSerialNumber() 失败! "..strRetInfo ) end
|
|
lua.Debug( strLuaDEID, debug.getinfo(1), "receipt_obj.state", receipt_obj.state )
|
|
-- 设置【收货单明细】的状态=定版
|
local strCondition = "S_RECEIPT_NO = '"..receipt_obj.no.."'"
|
nRet, strRetInfo = mobox.setDataObjStateByCondition( strLuaDEID, "Receipt_Detail", strCondition, receipt_obj.state )
|
if ( nRet ~= 0 ) then lua.Error( strLuaDEID, debug.getinfo(1), "setDataObjStateByCondition() 失败! "..strRetInfo ) end
|
end
|