$PBExportHeader$uo_find_sc_wrkgrpid.sru forward global type uo_find_sc_wrkgrpid from nonvisualobject end type end forward global type uo_find_sc_wrkgrpid from nonvisualobject end type global uo_find_sc_wrkgrpid uo_find_sc_wrkgrpid type variables Long deep Boolean lb_find = False end variables forward prototypes public function integer uof_rst_top1_produce_wrkgrpid (long arg_scid, long arg_orderid, long arg_pmtrlid, long arg_mtrlid, long arg_wrkgrpid, string arg_status, string arg_woodcode, string arg_pcode, ref long arg_ref_top1_lp, ref long arg_ref_top1_printid, ref long arg_ref_top1_produce_scid, ref long arg_ref_top1_produce_wrkgrpid, ref string arg_msg) end prototypes public function integer uof_rst_top1_produce_wrkgrpid (long arg_scid, long arg_orderid, long arg_pmtrlid, long arg_mtrlid, long arg_wrkgrpid, string arg_status, string arg_woodcode, string arg_pcode, ref long arg_ref_top1_lp, ref long arg_ref_top1_printid, ref long arg_ref_top1_produce_scid, ref long arg_ref_top1_produce_wrkgrpid, ref string arg_msg);Int rslt = 1 Int rst,li_ifselforder Long ll_j,j,ll_mtrlid_arr[] Long ll_lp,ll_printid,ll_produce_scid,ll_produce_wrkGrpid j = 1 deep++ IF deep = 100 THEN arg_msg = '本次操作物料在指令单对应主生产计划运算结果中找不到对应明细,本指令单物料下级太多虚拟编码(>100),操作取消' rslt = 0 GOTO ext END IF SELECT u_mtrldef.ifselforder INTO :li_ifselforder FROM u_mtrldef Where mtrlid = :arg_pmtrlid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询物料是否虚拟编码失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF SELECT top 1 lp, printid, produce_scid, produce_wrkGrpid INTO :ll_lp, :ll_printid, :ll_produce_scid, :ll_produce_wrkGrpid FROM u_orderrqmtrl_tree WHERE scid = :arg_scid AND orderid = :arg_orderid AND pmtrlid = :arg_pmtrlid AND mtrlid = :arg_mtrlid AND wrkgrpid = :arg_wrkgrpid AND status = :arg_status AND woodcode = :arg_woodcode And pcode = :arg_pcode; IF sqlca.SQLCode <> 0 THEN IF sqlca.SQLCode = 100 THEN DECLARE cur_mtrlmx_1 CURSOR FOR SELECT u_orderrqmtrl_tree.mtrlid FROM u_orderrqmtrl_tree,u_mtrldef WHERE u_orderrqmtrl_tree.scid = :arg_scid AND u_orderrqmtrl_tree.orderid = :arg_orderid AND u_orderrqmtrl_tree.pmtrlid = :arg_pmtrlid AND u_orderrqmtrl_tree.mtrlid = u_mtrldef.mtrlid And u_mtrldef.ifselforder = 0; OPEN cur_mtrlmx_1; FETCH cur_mtrlmx_1 Into :ll_mtrlid_arr[j]; DO WHILE sqlca.SQLCode = 0 j++ FETCH cur_mtrlmx_1 Into :ll_mtrlid_arr[j]; LOOP CLOSE cur_mtrlmx_1; IF j - 1 = 0 THEN rslt = 2 GOTO ext END IF FOR ll_j = 1 To j - 1 rst = uof_rst_top1_produce_wrkGrpid(arg_scid,arg_orderid,ll_mtrlid_arr[ll_j],arg_mtrlid,& arg_wrkgrpid,arg_status,arg_woodcode,arg_pcode,& arg_ref_top1_lp,arg_ref_top1_printid,& arg_ref_top1_produce_scid,arg_ref_top1_produce_wrkGrpid,arg_msg) IF rst = 1 THEN GOTO ext ELSEIF rst = 0 THEN rslt = 0 GOTO ext ELSEIF rslt = 2 THEN CONTINUE END IF NEXT ELSE arg_msg = '本次操作物料在指令单对应主生产计划运算结果中找应明细失败 ~n 1.在对应主生产计划运算结果中查询下级虚拟编码失败 ~n'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ELSE lb_find = True arg_ref_top1_lp = ll_lp arg_ref_top1_printid = ll_printid arg_ref_top1_produce_scid = ll_produce_scid arg_ref_top1_produce_wrkGrpid = ll_produce_wrkGrpid GOTO ext END IF IF li_ifselforder <> 0 And Not lb_find THEN rslt = 0 arg_msg = '本次操作物料在指令单对应主生产计划运算结果中找不到对应明细 ~n 1.在对应主生产计划运算结果中对应指令单下级第1层物料明细找不到该物料 ~n 2.在对应主生产计划运算结果中对应指令单下级物料明细没有虚拟编码' GOTO ext END IF ext: RETURN rslt end function on uo_find_sc_wrkgrpid.create call super::create TriggerEvent( this, "constructor" ) end on on uo_find_sc_wrkgrpid.destroy TriggerEvent( this, "destructor" ) call super::destroy end on