--[[
|
编码: GT-100-02
|
名称: GT-WMS出库任务下发
|
作者:LZH
|
入口函数: SendOutboundOrder
|
|
|
功能说明:
|
GT-WMS下发出库信息给 GZ-WMS系统,GZ-WMS系统根据出库信息生成【出库单据】和【作业】
|
|
输入数据:
|
{
|
"task_no": "xxxx", -- 出库任务号
|
"batch_no": "xxx", -- 批次号
|
"item_code": "xxx", -- 物料编码
|
"end_loc": "xxx", -- 机台
|
"qty": "xxx", -- 数量默认1托
|
"wh_code": "xxx", -- 仓库编号
|
"mes_task_no": "xxx", -- MES任务单号
|
"remark1": "", -- 备注 暂未启用
|
"remark2": "", -- 备注 暂未启用
|
"remark3": "", -- 备注 暂未启用
|
"remark4": "" -- 备注 暂未启用
|
}
|
|
处理逻辑
|
-- step1 解析接口传递的 datajson 参数
|
判断 json 解析是否成功,不成功返回报错
|
判断 字段 是否都有值?没值报错返回
|
|
-- step2 根据字段信息生产【出库单】
|
-- step3 调用【出库单】创建作业事件
|
|
变更记录:
|
20241122 LZH V1.1 出库单修改为主子表,代码调整
|
20250221 LZH V1.2 新增4个备用字段
|
20250429 LZH V1.3 新增MES任务单号
|
--]]
|
m3 = require("oi_base_mobox")
|
json = require("json")
|
mobox = require("OILua_JavelinExt")
|
require("GT-Base")
|
function CreateDelivery(strLuaDEID)
|
local nRet, strRetInfo, in_date, dictItem
|
-- step1 获取接口数据
|
nRet, in_date = m3.GetSysDataJson(strLuaDEID)
|
if (nRet ~= 0) then lua.Error(strLuaDEID, debug.getinfo(1), "WCStoreCallback 无法获取数据包!" .. in_date) end
|
lua.Debug(strLuaDEID, debug.getinfo(1), '出库单据下发参数:', in_date)
|
|
-- 获取 task_no、wh_code 、batch_no、end_loc、item_code 判断是否都有值?没值报错返回
|
local task_no = in_date.task_no
|
if (task_no == nil or task_no == '') then lua.Error(strLuaDEID, debug.getinfo(1), "出库任务号不能为空!") end
|
local wh_code = in_date.wh_code
|
if (wh_code == nil or wh_code == '') then wh_code = 'wmwhse1' end
|
local batch_no = in_date.batch_no
|
if (batch_no == nil or batch_no == '') then lua.Error(strLuaDEID, debug.getinfo(1), "批次号不能为空!") end
|
local end_loc = in_date.end_loc
|
if (end_loc == nil or end_loc == '') then lua.Error(strLuaDEID, debug.getinfo(1), "机台不能为空!") end
|
local item_code = in_date.item_code
|
if (item_code == nil or item_code == '') then lua.Error(strLuaDEID, debug.getinfo(1), "物料号不能为空!") end
|
-- V1.2 新增备用字段
|
local remark1 = in_date.remark1
|
local remark2 = in_date.remark2
|
local remark3 = in_date.remark3
|
local remark4 = in_date.remark4
|
-- V1.3 新增MES任务单号
|
local mes_task_no = in_date.mes_task_no
|
|
-- 获取不需要审核的物料类型字典
|
nRet, dictItem = mobox.getDictItemIInfo("GT_NotAuditType")
|
if (nRet ~= 0) then lua.Error(strLuaDEID, debug.getinfo(1), dictItem) end
|
dictItem = json.decode(dictItem)
|
lua.Debug(strLuaDEID, debug.getinfo(1), '不需要审核的物料:', dictItem)
|
|
-- 获取该物料的物料类型
|
local item_type, material
|
nRet, item_type, material = GT_Get_ItemType(strLuaDEID, item_code)
|
if (nRet ~= 0) then lua.Error(strLuaDEID, debug.getinfo(1), item_type) end
|
|
-- 获取一个初始的【出库单】数据对象
|
local stock_out = m3.AllocObject(strLuaDEID, "GT_Stock_Out")
|
stock_out.delivery_no = task_no
|
stock_out.batch_no = batch_no
|
stock_out.wh_code = wh_code
|
stock_out.item_code = item_code
|
stock_out.ms_code = end_loc
|
-- V1.3 新增MES任务单号
|
stock_out.mes_task_no = mes_task_no
|
-- step3 如果出库库区为立库的出库单,触发后台脚本进行配货逻辑
|
for m = 1, #dictItem do
|
if (item_type == dictItem[m].name) then
|
stock_out.state = "启用"
|
goto back
|
end
|
end
|
::back::
|
nRet, stock_out = m3.CreateDataObj(strLuaDEID, stock_out)
|
if (nRet ~= 0) then lua.Error(strLuaDEID, debug.getinfo(1), 'mobox 创建【出库单】对象失败!' .. stock_out) end
|
lua.Debug(strLuaDEID, debug.getinfo(1), 'stock_out:', stock_out)
|
|
if(item_type ~= '碳黑' and item_type ~= '帘子布' and item_type ~= '辅材')then
|
-- 调用创建作业事件
|
nRet, strRetInfo = mobox.triggerClsEvent(strLuaDEID, "GT_Stock_Out", stock_out.id, "创建作业")
|
if (nRet ~= 0) then lua.Error(strLuaDEID, debug.getinfo(1), "执行【出库单】创建作业脚本失败!" .. strRetInfo) end
|
lua.Debug(strLuaDEID, debug.getinfo(1), 'nRet:', nRet)
|
lua.Debug(strLuaDEID, debug.getinfo(1), 'strRetInfo:', strRetInfo)
|
end
|
end
|