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
--[[
    编码: JX-108-01
    名称: 巨星任务-创建后
    作者:HAN  
    日期:2025-1-29
    级别:项目
    
    函数: AfterDataObjCreate
 
    功能:
        -- 判断容器号是否存在,存在要验证一下容器的类型是否=2(容器类型)不能是料格类型,否则会和料箱混了
        -- 不存在创建一个容器对象
 
    更改记录:
--]]
 
wms_cntr= require( "wms_container" )
wms_wh = require( "wms_wh" )
 
function AfterDataObjCreate ( strLuaDEID )
    local nRet, strRetInfo
    local cntr, jx_task
 
    nRet, jx_task = m3.GetSysCurEditDataObj( strLuaDEID, "JX_Task" )
    if ( nRet ~= 0 )  then lua.Error( strLuaDEID, debug.getinfo(1), "获取当前编辑属性失败! "..test ) end 
    
    if ( jx_task.cntr_code ~= '' and jx_task.cntr_code ~= nil ) then
        nRet, cntr = wms_cntr.GetInfo (strLuaDEID, jx_task.cntr_code )
        if ( nRet ~= 0 )  then lua.Error( strLuaDEID, debug.getinfo(1), cntr) end 
    end
    if (jx_task.task_type == "入库" ) then
        if ( cntr == '' ) then
            -- 创建容器对象
            local new_cntr = m3.AllocObject(strLuaDEID,"Container")
            new_cntr.code = jx_task.cntr_code
            new_cntr.type = 2                       -- 容器类型
            new_cntr.source = ""
            nRet, new_cntr = m3.CreateDataObj( strLuaDEID, new_cntr ) 
            if ( nRet ~= 0 )  then
                lua.Error( strLuaDEID, debug.getinfo(1), "创建容器失败!") 
            end       
        else
            if ( cntr.type == 3 ) then
                lua.Error( strLuaDEID, debug.getinfo(1), "容器编码'"..jx_task.cntr_code.."'的类型不能是料格类型!" )
            end
        end
    elseif (jx_task.task_type == "出库" ) then
        if ( cntr == '' ) then
            mobox.stopProgram( strLuaDEID, "容器编码为'"..jx_task.cntr_code.."'的容器不存在!" )
            return
        end
        if ( cntr.type == 3 ) then
            mobox.stopProgram( strLuaDEID, "容器编码为'"..jx_task.cntr_code.."'的容器类型不能是料格类型!" )
            return            
        end
        -- 检查一下容器的货位
        local loc_code = wms_wh.GetLocCodeByCNTR( strLuaDEID, jx_task.cntr_code )
        if ( loc_code == '' ) then
            mobox.stopProgram( strLuaDEID, "容器编码为'"..jx_task.cntr_code.."'的容器不在料箱库!" )
            return            
        end
 
        -- 更新任务的起点
        local loc
        nRet, loc = wms_wh.GetLocInfo( loc_code )
        if ( nRet ~= 0 ) then 
            mobox.stopProgram( strLuaDEID, "容器编码为'"..jx_task.cntr_code.."'的容器货位编码'"..loc_code.."'不正确!" )
            return                
        end    
 
        local strUpdateSql = "S_START_WH = '"..loc.wh_code.."', S_START_AREA = '"..loc.area_code.."', S_START_LOC = '"..loc.code.."'"
        local strCondition = "S_SOURNO = '"..jx_task.sour_no.."'"
        nRet, strRetInfo = mobox.updateDataAttrByCondition( strLuaDEID, "JX_Task", strCondition, strUpdateSql )
        if ( nRet ~= 0 ) then  lua.Error( strLuaDEID, debug.getinfo(1), "更新【巨星任务】信息失败!"..strRetInfo ) end            
    
    end
end