$PBExportHeader$uo_order_ml_fg.sru forward global type uo_order_ml_fg from nonvisualobject end type end forward global type uo_order_ml_fg from nonvisualobject end type global uo_order_ml_fg uo_order_ml_fg type variables Long uo_Fgid String uo_billcode Int uo_option_confirmaudit_scll end variables forward prototypes public function integer p_getflag (long arg_Fgid, ref integer arg_flag, ref string arg_msg) public function integer del (long arg_Fgid, ref string arg_msg, boolean arg_ifcommit) public function integer add_dscrp (long arg_fgid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit) public function integer updatebegin (long arg_Fgid, ref string arg_msg) public function integer audit (long arg_fgid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer getinfo (long arg_fgid, ref s_order_ml_fg_mx arg_ref_mx[], ref long arg_arr_cnt, ref string arg_msg) public function integer save (s_order_ml_fg arg_s_fg, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer c_audit (long arg_fgid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer uf_add_orderrqmtrl (long arg_scid, long arg_orderid, s_order_ml_fg_mx arg_mx[], ref string arg_msg, boolean arg_ifcommit) public function integer uf_del_orderrqmtrl (long arg_scid, long arg_orderid, s_order_ml_fg_mx arg_mx[], ref string arg_msg, boolean arg_ifcommit) public function integer uf_create_order_ml_zl (long arg_scid, long arg_orderid, long arg_fgid, s_order_ml_fg_mx arg_mx[], ref string arg_msg, boolean arg_ifcommit) public function integer uf_del_order_ml_zl (long arg_scid, long arg_orderid, long arg_fgid, ref string arg_msg, boolean arg_ifcommit) public function integer uf_create_waste_out (long arg_scid, long arg_orderid, long arg_fgid, s_order_ml_fg_mx arg_mx[], ref string arg_msg, boolean arg_ifcommit) public function integer uf_create_inware_cp_th (long arg_scid, long arg_orderid, long arg_fgid, s_order_ml_fg_mx arg_mx[], ref string arg_msg, boolean arg_ifcommit) public function integer uf_del_waste_out (long arg_scid, long arg_orderid, long arg_fgid, ref string arg_msg, boolean arg_ifcommit) public function integer uf_del_inware_cp_th (long arg_scid, long arg_orderid, long arg_fgid, ref string arg_msg, boolean arg_ifcommit) public function integer uof_get_rqmtrl (long arg_scid, long arg_orderid, long arg_porderid, ref s_order_ml_rqmtrl arg_ref_s_rqmtrl, ref string arg_msg) public function integer uf_create_outware_back (long arg_fgid, ref string arg_msg, boolean arg_ifcommit) public function integer uf_del_outware_back (long arg_fgid, ref string arg_msg, boolean arg_ifcommit) end prototypes public function integer p_getflag (long arg_Fgid, ref integer arg_flag, ref string arg_msg);Int rslt = 1 SELECT flag INTO :arg_flag FROM u_order_ml_fg WHERE Fgid = :arg_Fgid; IF sqlca.SQLCode <> 0 THEN ARG_MSG = '查询单据审核标记失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ext: RETURN rslt end function public function integer del (long arg_Fgid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Int li_flag IF arg_Fgid <= 0 THEN rslt = 0 arg_msg = '错误单据唯一码' GOTO ext END IF IF p_getflag(arg_Fgid,li_flag,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF li_flag = 1 THEN rslt = 0 arg_msg = '单据不是在待审状态,不可以删除' GOTO ext END IF DELETE FROM u_order_ml_fg WHERE Fgid = :arg_Fgid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除单据操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF DELETE FROM u_order_ml_fgmx WHERE Fgid = :arg_Fgid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除单据明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer add_dscrp (long arg_fgid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Int li_flag IF arg_newdescppart = '' THEN rslt = 0 arG_MSG = "要添加内容为空,操作取消" GOTO ext END IF IF p_getflag(arg_Fgid,li_flag,arG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF li_flag = 0 THEN rslt = 0 arG_MSG = "待审核状态下不可用" GOTO ext END IF UPDATE u_order_ml_fg SET DSCRP = DSCRP+' '+:arg_newdescppart WHERE u_order_ml_fg.Fgid = :arg_Fgid; IF SQLCA.SQLCode <> 0 THEN rslt = 0 arG_MSG = "因网络或其它原因导致添加备注操作失败"+"~n"+SQLCA.SQLErrText GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF Return (rslt) end function public function integer updatebegin (long arg_Fgid, ref string arg_msg);Int rslt = 1 Int li_flag Long cnt IF arg_Fgid <= 0 THEN rslt = 0 arg_msg = '错误单据唯一码' GOTO ext END IF IF p_getflag(arg_Fgid,li_flag,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF li_flag = 1 THEN rslt = 0 arg_msg = '单据已经审核,不可以再修改' GOTO ext END IF ext: RETURN rslt end function public function integer audit (long arg_fgid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Int li_flag,li_secflag Long ll_mtrlid_arr[] Long j Long ll_j Boolean lb_iffind = False String ls_pfcode Long cnt = 0 IF arg_Fgid <= 0 THEN rslt = 0 ARG_MSG = '错误单据唯一码' GOTO ext END IF IF p_getflag(arg_Fgid,li_flag,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF li_flag <> 0 THEN rslt = 0 ARG_MSG = '单据不是在待审核状态,不可以再审' GOTO ext END IF Long ll_scid, ll_orderid SELECT scid, orderid INTO :ll_scid, :ll_orderid FROM u_order_ml_fg Where Fgid = :arg_Fgid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "查询单据信息操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF s_order_ml_fg_mx s_mx[] Long ll_arr_cnt,ll_i Decimal ld_sqty,ld_dqty IF getinfo(arg_Fgid,s_mx,ll_arr_cnt,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF // //1.自动加物料需求表 ////2.自动生成返工指令单并审核 //uf_add_OrderRqMtrl //uf_create_order_ml_zl IF uf_add_OrderRqMtrl(ll_scid, ll_orderid, s_mx, ARG_MSG, False) = 0 THEN rslt = 0 GOTO ext END IF IF uf_Create_order_ml_zl(ll_scid, ll_orderid, arg_Fgid, s_mx, ARG_MSG, False) = 0 THEN rslt = 0 GOTO ext END IF //有退仓的,生成返工退仓单 IF uf_Create_inware_cp_th(ll_scid, ll_orderid, arg_Fgid, s_mx, ARG_MSG, False) = 0 THEN rslt = 0 GOTO ext END IF //有报废的,生成报废出仓单 IF uf_Create_waste_out(ll_scid, ll_orderid, arg_Fgid, s_mx, ARG_MSG, False) = 0 THEN rslt = 0 GOTO ext END IF //返工行生成退料单 if uf_create_outware_back(arg_fgid,arg_msg,false) = 0 then rslt = 0 goto ext end if //更新审核标记 UPDATE u_order_ml_fg SET Auditemp = :arg_opemp, auditdate = getdate(), flag = 1 WHERE Fgid = :arg_Fgid And flag = 0; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "因网络或其它原因导致单据审核操作失败"+"~n"+sqlca.SQLErrText GOTO ext ELSEIF sqlca.SQLNRows = 0 THEN rslt = 0 ARG_MSG = "单据正在审核,请稍后查询。"+"~n"+sqlca.SQLErrText GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer getinfo (long arg_fgid, ref s_order_ml_fg_mx arg_ref_mx[], ref long arg_arr_cnt, ref string arg_msg);Int rslt = 1 Long i = 1,no_mxcheck = 0 IF arg_Fgid <= 0 THEN rslt = 0 arg_msg = '错误单据唯一码' GOTO ext END IF //用游标读取明细 DECLARE cur_mx CURSOR FOR SELECT u_order_ml_fgmx.Fgid, u_order_ml_fgmx.printid, u_order_ml_fgmx.Lp, u_order_ml_fgmx.pMtrlid, u_order_ml_fgmx.Mtrlid, u_order_ml_fgmx.Status, u_order_ml_fgmx.woodcode, u_order_ml_fgmx.pcode, u_order_ml_fgmx.Rqqty, u_order_ml_fgmx.Truerqqty, u_order_ml_fgmx.Plantype, u_order_ml_fgmx.Produce_wrkGrpid, u_order_ml_fgmx.wrkGrpid, u_order_ml_fgmx.Rqdate, u_order_ml_fgmx.Edate, u_order_ml_fgmx.Thqty, u_order_ml_fgmx.Thstorageid, u_order_ml_fgmx.Badqty, u_order_ml_fgmx.Badstorageid, u_order_ml_fgmx.Iffg, u_order_ml_fgmx.Iffg_begin, u_order_ml_fgmx.Iflock, u_order_ml_fgmx.ifcfg FROM u_order_ml_fgmx where u_order_ml_fgmx.Fgid = :arg_Fgid Order By u_order_ml_fgmx.printid; OPEN cur_mx; FETCH cur_mx INTO :arg_ref_mx[i].Fgid, :arg_ref_mx[i].printid, :arg_ref_mx[i].Lp, :arg_ref_mx[i].pMtrlid, :arg_ref_mx[i].Mtrlid, :arg_ref_mx[i].Status, :arg_ref_mx[i].woodcode, :arg_ref_mx[i].pcode, :arg_ref_mx[i].Rqqty, :arg_ref_mx[i].Truerqqty, :arg_ref_mx[i].Plantype, :arg_ref_mx[i].Produce_wrkGrpid, :arg_ref_mx[i].wrkGrpid, :arg_ref_mx[i].Rqdate, :arg_ref_mx[i].Edate, :arg_ref_mx[i].Thqty, :arg_ref_mx[i].Thstorageid, :arg_ref_mx[i].Badqty, :arg_ref_mx[i].Badstorageid, :arg_ref_mx[i].Iffg, :arg_ref_mx[i].Iffg_begin, :arg_ref_mx[i].Iflock, :arg_ref_mx[i].ifcfg; DO WHILE sqlca.SQLCode = 0 i++ FETCH cur_mx INTO :arg_ref_mx[i].Fgid, :arg_ref_mx[i].printid, :arg_ref_mx[i].Lp, :arg_ref_mx[i].pMtrlid, :arg_ref_mx[i].Mtrlid, :arg_ref_mx[i].Status, :arg_ref_mx[i].woodcode, :arg_ref_mx[i].pcode, :arg_ref_mx[i].Rqqty, :arg_ref_mx[i].Truerqqty, :arg_ref_mx[i].Plantype, :arg_ref_mx[i].Produce_wrkGrpid, :arg_ref_mx[i].wrkGrpid, :arg_ref_mx[i].Rqdate, :arg_ref_mx[i].Edate, :arg_ref_mx[i].Thqty, :arg_ref_mx[i].Thstorageid, :arg_ref_mx[i].Badqty, :arg_ref_mx[i].Badstorageid, :arg_ref_mx[i].Iffg, :arg_ref_mx[i].Iffg_begin, :arg_ref_mx[i].Iflock, :arg_ref_mx[i].ifcfg; LOOP CLOSE cur_mx; //检验明细是否读入完整 SELECT count(*) INTO :no_mxcheck FROM u_order_ml_fgmx Where Fgid = :arg_Fgid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,单据明细数量" GOTO ext END IF IF i <> (no_mxcheck + 1) THEN rslt = 0 arg_msg = "查询操作失败,单据明细" GOTO ext END IF arg_arr_cnt = i - 1 ext: RETURN rslt end function public function integer save (s_order_ml_fg arg_s_fg, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1 Long cnt = 0 DateTime server_dt Long ll_Fgid String ls_sccode,ls_billcode Long ll_Mtrlorigin Long it_mxbt,i IF IsNull(arg_s_fg.Fgid) THEN arg_s_fg.Fgid = 0 IF IsNull(arg_s_fg.Fgcode) THEN arg_s_fg.Fgcode = '' IF IsNull(arg_s_fg.scid) THEN arg_s_fg.scid = 0 IF IsNull(arg_s_fg.orderid) THEN arg_s_fg.orderid = 0 IF IsNull(arg_s_fg.dscrp) THEN arg_s_fg.dscrp = '' IF arg_s_fg.orderid = 0 THEN arg_msg = '请选择指令单' rslt = 0 GOTO ext END IF SELECT Top 1 getdate() Into :server_dt From u_user; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,日期 " GOTO ext END IF it_mxbt = UpperBound(arg_s_fg.arg_s_mx) IF it_mxbt <= 0 THEN rslt = 0 arg_msg = "没有正确明细内容" GOTO ext END IF // FOR i = 1 To it_mxbt // IF arg_s_fg.arg_s_mx[i].rqqty_ori <= 0 THEN // arg_msg = '第'+String(i)+'行,不合理的原需求数量' // rslt = 0 // GOTO ext // END IF // // IF arg_s_fg.arg_s_mx[i].rqqty <= 0 THEN // arg_msg = '第'+String(i)+'行,不合理的新需求数量' // rslt = 0 // GOTO ext // END IF // // IF arg_s_fg.arg_s_mx[i].rqqty > arg_s_fg.arg_s_mx[i].rqqty_ori THEN // arg_msg = '第'+String(i)+'行,变更后的数量不能大于源需求数量' // rslt = 0 // GOTO ext // END IF // NEXT // IF arg_s_fg.Fgid = 0 THEN ll_Fgid = f_sys_scidentity(0,"u_order_ml_fg","Fgid",arg_msg,True,id_sqlca) IF ll_Fgid <= 0 THEN rslt = 0 GOTO ext END IF IF f_get_sccode(arg_s_fg.scid,sqlca,ls_sccode,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF ls_billcode = getid(arg_s_fg.scid,ls_sccode + 'AL',Date(server_dt),False,sqlca) IF ls_billcode = "err" THEN rslt = 0 arg_msg = "无法获取单据编号"+"~n"+sqlca.SQLErrText GOTO ext END IF INSERT INTO U_order_ml_fg (Fgid, Fgcode, Scid, Orderid, Dscrp, Opdate, Opemp) VALUES ( :ll_Fgid, :ls_billcode, :arg_s_fg.Scid, :arg_s_fg.Orderid, :arg_s_fg.dscrp, getdate(), :arg_opemp) ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致建立单据操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF // arg_s_fg.Fgid = ll_Fgid uo_Fgid = ll_Fgid uo_billcode = ls_billcode ELSE UPDATE U_order_ml_fg SET Scid = :arg_s_fg.scid, Orderid = :arg_s_fg.orderid, Dscrp = :arg_s_fg.dscrp, Moddate = getdate(), Modemp = :arg_opemp WHERE Fgid = :arg_s_fg.Fgid And flag = 0; IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF DELETE FROM u_order_ml_fgmx Where Fgid = :arg_s_fg.Fgid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '删除旧有明细操作失败'+"~n"+sqlca.SQLErrText GOTO ext END IF uo_Fgid = arg_s_fg.Fgid END IF FOR i = 1 To it_mxbt INSERT INTO U_order_ml_fgmx (Fgid, Printid, Lp, pMtrlid, Mtrlid, Status, Woodcode, Pcode, Rqqty, Truerqqty, Plantype, produce_wrkGrpid,produce_scid, wrkGrpid, Rqdate, Edate, Thqty, Thstorageid, Badqty, Badstorageid, Iffg, Iffg_begin, Iflock,Rqqty_ori, Truerqqty_ori,ifcfg) VALUES ( :uo_Fgid, :arg_s_fg.arg_s_mx[i].printid, :arg_s_fg.arg_s_mx[i].lp, :arg_s_fg.arg_s_mx[i].pMtrlid, :arg_s_fg.arg_s_mx[i].Mtrlid, :arg_s_fg.arg_s_mx[i].Status, :arg_s_fg.arg_s_mx[i].Woodcode, :arg_s_fg.arg_s_mx[i].Pcode, :arg_s_fg.arg_s_mx[i].rqqty, :arg_s_fg.arg_s_mx[i].Truerqqty, :arg_s_fg.arg_s_mx[i].Plantype, :arg_s_fg.arg_s_mx[i].produce_wrkGrpid, :arg_s_fg.arg_s_mx[i].produce_scid, :arg_s_fg.arg_s_mx[i].wrkGrpid, :arg_s_fg.arg_s_mx[i].Rqdate, :arg_s_fg.arg_s_mx[i].Edate, :arg_s_fg.arg_s_mx[i].Thqty, :arg_s_fg.arg_s_mx[i].Thstorageid, :arg_s_fg.arg_s_mx[i].Badqty, :arg_s_fg.arg_s_mx[i].Badstorageid, :arg_s_fg.arg_s_mx[i].Iffg, :arg_s_fg.arg_s_mx[i].Iffg_begin, :arg_s_fg.arg_s_mx[i].Iflock, :arg_s_fg.arg_s_mx[i].Rqqty_ori, :arg_s_fg.arg_s_mx[i].Truerqqty_ori, :arg_s_fg.arg_s_mx[i].ifcfg); IF sqlca.SQLCode <> 0 THEN uo_Fgid = 0 rslt = 0 arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF NEXT ext: IF rslt = 0 THEN ROLLBACK; ELSEIF arg_ifcommit And rslt = 1 THEN COMMIT; END IF RETURN rslt end function public function integer c_audit (long arg_fgid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Int li_flag,li_secflag Long ll_mtrlid_arr[] Long j Long ll_j Boolean lb_iffind = False String ls_pfcode Long cnt = 0 IF arg_Fgid <= 0 THEN rslt = 0 ARG_MSG = '错误单据唯一码' GOTO ext END IF IF p_getflag(arg_Fgid,li_flag,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF li_flag <> 1 THEN rslt = 0 ARG_MSG = '单据不是在已审核状态,不可以撤审' GOTO ext END IF Long ll_scid, ll_orderid SELECT scid, orderid INTO :ll_scid, :ll_orderid FROM u_order_ml_fg Where Fgid = :arg_Fgid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "查询单据信息操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF s_order_ml_fg_mx s_mx[] Long ll_arr_cnt,ll_i Decimal ld_sqty,ld_dqty IF getinfo(arg_Fgid,s_mx,ll_arr_cnt,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF //更新审核标记 UPDATE u_order_ml_fg SET auditemp = '', auditdate = null, flag = 0 WHERE Fgid = :arg_Fgid And flag = 1; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "因网络或其它原因导致单据撤审操作失败"+"~n"+sqlca.SQLErrText GOTO ext ELSEIF sqlca.SQLNRows = 0 THEN rslt = 0 ARG_MSG = "单据正在撤审,请稍后查询。"+"~n"+sqlca.SQLErrText GOTO ext END IF ////1.自动删除返工指令单并审核 ////2.自动减少物料需求表 //uf_del_order_ml_zl //uf_del_OrderRqMtrl IF uf_del_order_ml_zl(ll_scid, ll_orderid, arg_Fgid, ARG_MSG, False) = 0 THEN rslt = 0 GOTO ext END IF IF uf_del_OrderRqMtrl(ll_scid, ll_orderid, s_mx, ARG_MSG, False) = 0 THEN rslt = 0 GOTO ext END IF //有退仓的,删除返工退仓单 IF uf_del_inware_cp_th(ll_scid, ll_orderid, arg_Fgid, ARG_MSG, False) = 0 THEN rslt = 0 GOTO ext END IF //有报废的,删除报废出仓单 IF uf_del_waste_out(ll_scid, ll_orderid, arg_Fgid, ARG_MSG, False) = 0 THEN rslt = 0 GOTO ext END IF //删除自动生成的生产还料单 if uf_del_outware_back(arg_fgid,arg_msg,false) = 0 then rslt = 0 goto ext end if ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uf_add_orderrqmtrl (long arg_scid, long arg_orderid, s_order_ml_fg_mx arg_mx[], ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ll_i, ch_tree, ch s_order_ml_rqmtrl s_mtrl,s_mtrl_tree string ls_mtrlcode integer li_ifselforder, li_statusflag, li_ordertype, li_ifpackpro, li_ifpack uo_order_ml_mrp uo_ml_mrp uo_ml_mrp = Create uo_order_ml_mrp FOR ll_i = 1 To UpperBound(arg_mx) IF arg_mx[ll_i].rqqty = 0 And & arg_mx[ll_i].truerqqty = 0 THEN CONTINUE SELECT mtrlcode,ifselforder,statusflag,ordertype, ifpackpro, ifpack INTO :ls_mtrlcode,:li_ifselforder,:li_statusflag,:li_ordertype, :li_ifpackpro, :li_ifpack FROM u_mtrldef Where mtrlid = :arg_mx[ll_i].mtrlid; IF sqlca.SQLCode <> 0 THEN arg_msg = '行:'+String(ll_i)+',查询物料资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ch_tree++ s_mtrl_tree.orderid[ch_tree] = arg_orderid s_mtrl_tree.scid[ch_tree] = arg_scid s_mtrl_tree.mtrlid[ch_tree] = arg_mx[ll_i].mtrlid s_mtrl_tree.ifmainmtrlid[ch_tree] = 0 s_mtrl_tree.plantype[ch_tree] = arg_mx[ll_i].plantype s_mtrl_tree.qty[ch_tree] = arg_mx[ll_i].rqqty s_mtrl_tree.cmplqty[ch_tree] = arg_mx[ll_i].truerqqty s_mtrl_tree.mqty[ch_tree] = 0 s_mtrl_tree.wmqty[ch_tree] = 0 s_mtrl_tree.bqty[ch_tree] = 0 s_mtrl_tree.wqty[ch_tree] = 0 s_mtrl_tree.pqty[ch_tree] = 0 s_mtrl_tree.pqty2[ch_tree] = 0 s_mtrl_tree.otherrqqty[ch_tree] = 0 s_mtrl_tree.otherrqqty_wx[ch_tree] = 0 s_mtrl_tree.samerqqty[ch_tree] = 0 s_mtrl_tree.sdate[ch_tree] = arg_mx[ll_i].rqdate s_mtrl_tree.edate[ch_tree] = arg_mx[ll_i].edate s_mtrl_tree.produce_scid[ch_tree] = arg_mx[ll_i].produce_scid s_mtrl_tree.produce_wrkgrpid[ch_tree] = arg_mx[ll_i].produce_wrkgrpid s_mtrl_tree.wrkgrpid_scll[ch_tree] = arg_mx[ll_i].wrkgrpid s_mtrl_tree.pfcode[ch_tree] = '[常规]' s_mtrl_tree.lp[ch_tree] = arg_mx[ll_i].lp s_mtrl_tree.status[ch_tree] = arg_mx[ll_i].status s_mtrl_tree.woodcode[ch_tree] = arg_mx[ll_i].woodcode s_mtrl_tree.pcode[ch_tree] = arg_mx[ll_i].pcode s_mtrl_tree.printid[ch_tree] = arg_mx[ll_i].printid s_mtrl_tree.pmtrlid[ch_tree] = arg_mx[ll_i].pmtrlid s_mtrl_tree.ifchanged[ch_tree] = 0 s_mtrl_tree.gydscrp[ch_tree] = '' s_mtrl_tree.pfklmode[ch_tree] = '' s_mtrl_tree.pfgroup[ch_tree] = '' s_mtrl_tree.pfgroupmode[ch_tree] = '' s_mtrl_tree.ifcfg[ch_tree] = 0 s_mtrl_tree.ifpack[ch_tree] = li_ifpack s_mtrl_tree.ifpackpro[ch_tree] = li_ifpackpro s_mtrl_tree.standardrqqty[ch_tree] = arg_mx[ll_i].rqqty s_mtrl_tree.sonloss[ch_tree] = 0 s_mtrl_tree.sondecloss[ch_tree] = 0 s_mtrl_tree.scllloss[ch_tree] = 0 s_mtrl_tree.sclldecloss[ch_tree] = 0 s_mtrl_tree.scllqty[ch_tree] = arg_mx[ll_i].rqqty s_mtrl_tree.scllqtytype[ch_tree] = 0 IF arg_mx[ll_i].rqqty = 0 And & arg_mx[ll_i].truerqqty = 0 THEN CONTINUE ch++ s_mtrl.orderid[ch] = arg_orderid s_mtrl.scid[ch] = arg_scid s_mtrl.mtrlid[ch] = arg_mx[ll_i].mtrlid s_mtrl.ifmainmtrlid[ch] = 0 s_mtrl.plantype[ch] = arg_mx[ll_i].plantype s_mtrl.qty[ch] = arg_mx[ll_i].rqqty s_mtrl.cmplqty[ch] = arg_mx[ll_i].truerqqty s_mtrl.mqty[ch] = 0 s_mtrl.wmqty[ch] = 0 s_mtrl.bqty[ch] = 0 s_mtrl.wqty[ch] = 0 s_mtrl.pqty[ch] = 0 s_mtrl.pqty2[ch] = 0 s_mtrl.otherrqqty[ch] = 0 s_mtrl.otherrqqty_wx[ch] = 0 s_mtrl.samerqqty[ch] = 0 s_mtrl.sdate[ch] = arg_mx[ll_i].rqdate s_mtrl.edate[ch] = arg_mx[ll_i].edate s_mtrl.produce_scid[ch] = arg_mx[ll_i].produce_scid s_mtrl.produce_wrkgrpid[ch] = arg_mx[ll_i].produce_wrkgrpid s_mtrl.wrkgrpid_scll[ch] = arg_mx[ll_i].wrkgrpid s_mtrl.pfcode[ch] = '[常规]' s_mtrl.lp[ch] = arg_mx[ll_i].lp s_mtrl.status[ch] = arg_mx[ll_i].status s_mtrl.woodcode[ch] = arg_mx[ll_i].woodcode s_mtrl.pcode[ch] = arg_mx[ll_i].pcode s_mtrl.printid[ch] = arg_mx[ll_i].printid s_mtrl.pmtrlid[ch] = arg_mx[ll_i].pmtrlid s_mtrl.ifchanged[ch] = 0 s_mtrl.gydscrp[ch] = '' s_mtrl.pfklmode[ch] = '' s_mtrl.pfgroup[ch] = '' s_mtrl.pfgroupmode[ch] = '' s_mtrl.ifcfg[ch] = 0 s_mtrl.ifpack[ch] = li_ifpack s_mtrl.ifpackpro[ch] = li_ifpackpro s_mtrl.scllqty[ch] = arg_mx[ll_i].rqqty NEXT uo_ml_mrp.if_uof_add_rqmtrl_del_old = false //保存物料需求表 IF uo_ml_mrp.uof_add_rqmtrl(s_mtrl,False,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF ////保存物料需求结构表 //IF uo_ml_mrp.uof_add_rqmtrl_tree(s_mtrl_tree,False,arg_msg) = 0 THEN // rslt = 0 // GOTO ext //END IF // //保存用料明细表 IF uo_ml_mrp.uof_add_rqmtrl_scll(s_mtrl,False,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF ext: Destroy uo_ml_mrp IF rslt = 0 THEN ROLLBACK; ELSEif rslt = 1 and arg_ifcommit then COMMIT; END IF RETURN rslt end function public function integer uf_del_orderrqmtrl (long arg_scid, long arg_orderid, s_order_ml_fg_mx arg_mx[], ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ll_i, ch_tree, ch s_order_ml_rqmtrl s_mtrl,s_mtrl_tree FOR ll_i = 1 To UpperBound(arg_mx) IF arg_mx[ll_i].rqqty = 0 And & arg_mx[ll_i].truerqqty = 0 THEN CONTINUE ch_tree++ s_mtrl_tree.orderid[ch_tree] = arg_orderid s_mtrl_tree.scid[ch_tree] = arg_scid s_mtrl_tree.mtrlid[ch_tree] = arg_mx[ll_i].mtrlid s_mtrl_tree.ifmainmtrlid[ch_tree] = 0 s_mtrl_tree.plantype[ch_tree] = arg_mx[ll_i].plantype s_mtrl_tree.qty[ch_tree] = 0 - arg_mx[ll_i].rqqty s_mtrl_tree.cmplqty[ch_tree] = 0 - arg_mx[ll_i].truerqqty s_mtrl_tree.mqty[ch_tree] = 0 s_mtrl_tree.wmqty[ch_tree] = 0 s_mtrl_tree.bqty[ch_tree] = 0 s_mtrl_tree.wqty[ch_tree] = 0 s_mtrl_tree.pqty[ch_tree] = 0 s_mtrl_tree.pqty2[ch_tree] = 0 s_mtrl_tree.otherrqqty[ch_tree] = 0 s_mtrl_tree.otherrqqty_wx[ch_tree] = 0 s_mtrl_tree.samerqqty[ch_tree] = 0 s_mtrl_tree.sdate[ch_tree] = arg_mx[ll_i].rqdate s_mtrl_tree.edate[ch_tree] = arg_mx[ll_i].edate s_mtrl_tree.produce_scid[ch_tree] = arg_mx[ll_i].produce_scid s_mtrl_tree.produce_wrkgrpid[ch_tree] = arg_mx[ll_i].produce_wrkgrpid s_mtrl_tree.wrkgrpid_scll[ch_tree] = arg_mx[ll_i].wrkgrpid s_mtrl_tree.pfcode[ch_tree] = '[常规]' s_mtrl_tree.lp[ch_tree] = arg_mx[ll_i].lp s_mtrl_tree.status[ch_tree] = arg_mx[ll_i].status s_mtrl_tree.woodcode[ch_tree] = arg_mx[ll_i].woodcode s_mtrl_tree.pcode[ch_tree] = arg_mx[ll_i].pcode s_mtrl_tree.printid[ch_tree] = arg_mx[ll_i].printid s_mtrl_tree.pmtrlid[ch_tree] = arg_mx[ll_i].pmtrlid s_mtrl_tree.ifchanged[ch_tree] = 0 s_mtrl_tree.gydscrp[ch_tree] = '' s_mtrl_tree.pfklmode[ch_tree] = '' s_mtrl_tree.pfgroup[ch_tree] = '' s_mtrl_tree.pfgroupmode[ch_tree] = '' s_mtrl_tree.ifcfg[ch_tree] = 0 s_mtrl_tree.ifpack[ch_tree] = 0 s_mtrl_tree.ifpackpro[ch_tree] = 0 s_mtrl_tree.standardrqqty[ch_tree] = 0 - arg_mx[ll_i].rqqty s_mtrl_tree.sonloss[ch_tree] = 0 s_mtrl_tree.sondecloss[ch_tree] = 0 s_mtrl_tree.scllloss[ch_tree] = 0 s_mtrl_tree.sclldecloss[ch_tree] = 0 s_mtrl_tree.scllqty[ch_tree] = 0 - arg_mx[ll_i].rqqty s_mtrl_tree.scllqtytype[ch_tree] = 0 IF arg_mx[ll_i].rqqty = 0 And & arg_mx[ll_i].truerqqty = 0 THEN CONTINUE ch++ s_mtrl.orderid[ch] = arg_orderid s_mtrl.scid[ch] = arg_scid s_mtrl.mtrlid[ch] = arg_mx[ll_i].mtrlid s_mtrl.ifmainmtrlid[ch] = 0 s_mtrl.plantype[ch] = arg_mx[ll_i].plantype s_mtrl.qty[ch] = 0 - arg_mx[ll_i].rqqty s_mtrl.cmplqty[ch] = 0 - arg_mx[ll_i].truerqqty s_mtrl.mqty[ch] = 0 s_mtrl.wmqty[ch] = 0 s_mtrl.bqty[ch] = 0 s_mtrl.wqty[ch] = 0 s_mtrl.pqty[ch] = 0 s_mtrl.pqty2[ch] = 0 s_mtrl.otherrqqty[ch] = 0 s_mtrl.otherrqqty_wx[ch] = 0 s_mtrl.samerqqty[ch] = 0 s_mtrl.sdate[ch] = arg_mx[ll_i].rqdate s_mtrl.edate[ch] = arg_mx[ll_i].edate s_mtrl.produce_scid[ch] = arg_mx[ll_i].produce_scid s_mtrl.produce_wrkgrpid[ch] = arg_mx[ll_i].produce_wrkgrpid s_mtrl.wrkgrpid_scll[ch] = arg_mx[ll_i].wrkgrpid s_mtrl.pfcode[ch] = '[常规]' s_mtrl.lp[ch] = arg_mx[ll_i].lp s_mtrl.status[ch] = arg_mx[ll_i].status s_mtrl.woodcode[ch] = arg_mx[ll_i].woodcode s_mtrl.pcode[ch] = arg_mx[ll_i].pcode s_mtrl.printid[ch] = arg_mx[ll_i].printid s_mtrl.pmtrlid[ch] = arg_mx[ll_i].pmtrlid s_mtrl.ifchanged[ch] = 0 s_mtrl.gydscrp[ch] = '' s_mtrl.pfklmode[ch] = '' s_mtrl.pfgroup[ch] = '' s_mtrl.pfgroupmode[ch] = '' s_mtrl.ifcfg[ch] = 0 s_mtrl.ifpack[ch] = 0 s_mtrl.ifpackpro[ch] = 0 s_mtrl.scllqty[ch] = 0 - arg_mx[ll_i].rqqty NEXT uo_order_ml_mrp uo_ml_mrp uo_ml_mrp = Create uo_order_ml_mrp uo_ml_mrp.if_uof_add_rqmtrl_del_old = false //保存物料需求表 IF uo_ml_mrp.uof_add_rqmtrl(s_mtrl,False,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF // ////保存物料需求结构表 //IF uo_ml_mrp.uof_add_rqmtrl_tree(s_mtrl_tree,False,arg_msg) = 0 THEN // rslt = 0 // GOTO ext //END IF // //保存用料明细表 IF uo_ml_mrp.uof_add_rqmtrl_scll(s_mtrl,False,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF Destroy uo_ml_mrp ext: IF rslt = 0 THEN ROLLBACK; ELSEif arg_ifcommit then COMMIT; END IF RETURN rslt end function public function integer uf_create_order_ml_zl (long arg_scid, long arg_orderid, long arg_fgid, s_order_ml_fg_mx arg_mx[], ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ll_i, ll_j, ch_tree, ch, cnt, ll_cnt, ll_l Long ll_orderid_tmp Long ll_storageid Integer li_level String ls_typename, ls_outtypestr String ls_taskrelcode, ls_relcode String ls_assign_emp String ls_gydscrp, ls_pfklmode Long ll_mxpkid String ls_pfcode String ls_mtrlcode Integer li_ifselforder, li_statusflag, li_ordertype, li_ifpackpro, li_ifpack Long ll_order_mtrlid String ls_order_taskrelcode String ls_dscrp, ls_secdscrp , ls_thdscrp Long ll_porderid string ls_wpcode s_order_ml_rqmtrl s_mtrl,s_mtrl_null uo_order_ml uo_ml uo_ml = Create uo_order_ml uo_ml.if_getid_ture = false uo_order_ml_mrp uo_ml_mrp uo_ml_mrp = Create uo_order_ml_mrp SELECT level, typename, outtypestr, storageid, relcode, mtrlid, taskrelcode, dscrp, secdscrp, thdscrp INTO :li_level, :ls_typename, :ls_outtypestr, :ll_storageid, :ls_relcode, :ll_order_mtrlid, :ls_order_taskrelcode, :ls_dscrp, :ls_secdscrp, :ls_thdscrp FROM u_order_ml WHERE scid = :arg_scid And orderid = :arg_orderid; IF sqlca.SQLCode <> 0 THEN arg_msg = "查询相关主计划信息失败" rslt = 0 GOTO ext END IF Long ll_rowcnt Decimal ld_eoq,ld_splitrate,ld_truerqqty,ld_qty Long ll_cnt_mxt Decimal ld_qty_arr[],ld_trueqty_tmp datastore ds_reqmtrl ds_reqmtrl = Create datastore ds_reqmtrl.DataObject = 'ds_order_ml_fgmx_create_order_ml' ds_reqmtrl.SetTransObject(sqlca) datastore ds_orderrqmx ds_orderrqmx = Create datastore ds_orderrqmx.DataObject = 'dw_order_ml_zl_orderrqmx' ds_orderrqmx.SetTransObject(sqlca) ll_rowcnt = ds_reqmtrl.Retrieve(arg_fgid) //IF uo_ml.uof_create_order_plan_tech(arg_scid,arg_orderid,arg_msg,False) = 0 THEN // rslt = 0 // GOTO ext //END IF Long ll_k,ll_sp_cnt IF ds_reqmtrl.RowCount() > 0 THEN uo_ml.newbegin(arg_scid) END IF FOR ll_j = 1 To ds_reqmtrl.RowCount() ld_eoq = ds_reqmtrl.Object.u_mtrldef_eoq[ll_j] //最小经济批量 ld_splitrate = ds_reqmtrl.Object.u_mtrldef_splitrate[ll_j] //最大经济批量 ld_truerqqty = ds_reqmtrl.Object.u_order_ml_fgmx_truerqqty[ll_j] ld_trueqty_tmp = ld_truerqqty IF ld_splitrate > 0 And ld_truerqqty > ld_splitrate THEN ll_sp_cnt = Ceiling(Truncate(ld_truerqqty / ld_splitrate,10)) ELSE ll_sp_cnt = 1 END IF ll_cnt_mxt = 0 FOR ll_k = 1 To ll_sp_cnt IF ll_k = ll_sp_cnt THEN ll_cnt_mxt++ ld_qty_arr[ll_cnt_mxt] = ld_trueqty_tmp ld_trueqty_tmp = 0 ELSE IF ld_trueqty_tmp - ld_splitrate < ld_eoq THEN ll_cnt_mxt++ ld_qty_arr[ll_cnt_mxt] = ld_trueqty_tmp - ld_eoq ld_trueqty_tmp = ld_eoq ELSE ll_cnt_mxt++ ld_qty_arr[ll_cnt_mxt] = ld_splitrate ld_trueqty_tmp = ld_trueqty_tmp - ld_splitrate END IF END IF NEXT FOR ll_k = 1 To ll_cnt_mxt ls_taskrelcode = '' IF ll_order_mtrlid = ds_reqmtrl.Object.u_orderrqmtrl_mtrlid[ll_j] THEN ls_taskrelcode = ls_order_taskrelcode ELSE ls_taskrelcode = '' END IF ls_wpcode = f_get_dft_wp(ds_reqmtrl.Object.u_orderrqmtrl_mtrlid[ll_j]) ll_cnt++ IF uo_ml.acceptmx(ls_relcode,& ds_reqmtrl.Object.u_order_ml_fgmx_edate[ll_j],& 0,& '',& 0,& ds_reqmtrl.Object.u_orderrqmtrl_mtrlid[ll_j],& ds_reqmtrl.Object.u_orderrqmtrl_status[ll_j],& ds_reqmtrl.Object.u_orderrqmtrl_woodcode[ll_j],& ds_reqmtrl.Object.u_orderrqmtrl_pcode[ll_j],& ld_qty_arr[ll_k],& ls_dscrp,& publ_operator,& ds_reqmtrl.Object.u_order_ml_fgmx_rqdate[ll_j],& 4,& ls_taskrelcode,& ds_reqmtrl.Object.u_orderrqmtrl_pfcode[ll_j],& ds_reqmtrl.Object.u_orderrqmtrl_mxpkid[ll_j],& arg_orderid,& ll_cnt,& ds_reqmtrl.Object.u_orderrqmtrl_produce_wrkGrpid[ll_j],& ds_reqmtrl.Object.u_orderrqmtrl_gydscrp[ll_j],& ds_reqmtrl.Object.u_orderrqmtrl_pfklmode[ll_j],& 0,'',0,& ls_secdscrp,& ls_thdscrp,& arg_scid,& ds_reqmtrl.Object.u_order_ml_fgmx_rqdate[ll_j],& 0,& 0,& ds_reqmtrl.Object.level[ll_j],& ds_reqmtrl.Object.u_order_ml_typename[ll_j],& ds_reqmtrl.Object.u_order_ml_outtypestr[ll_j],& 0,& 1,& 1,0,0,& ls_wpcode,0,& arg_msg) = 0 THEN arg_msg = '建立相关生产指令单失败,'+arg_msg rslt = 0 GOTO ext END IF NEXT NEXT IF ds_reqmtrl.RowCount() > 0 THEN IF uo_ml.Save(arg_msg,False) = 0 THEN arg_msg = '保存相关生产指令单失败,'+arg_msg rslt = 0 GOTO ext END IF FOR ll_j = 1 To UpperBound(uo_ml.orderid_arr) ll_orderid_tmp = uo_ml.orderid_arr[ll_j] UPDATE u_order_ml SET fgid = :arg_fgid FROM u_order_ml WHERE scid = :arg_scid And orderid = :ll_orderid_tmp; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '更新相关生产指令单返工标记失败' GOTO ext END IF IF uo_ml.audit(arg_scid,ll_orderid_tmp,arg_msg,False) = 0 THEN rslt = 0 arg_msg = '审核相关生产指令单失败(初审),'+arg_msg GOTO ext END IF IF uo_ml.sec_audit(arg_scid,ll_orderid_tmp,arg_msg,False) = 0 THEN rslt = 0 arg_msg = '审核相关生产指令单失败(二审),'+arg_msg GOTO ext END IF ds_orderrqmx.Retrieve(ll_orderid_tmp,arg_scid) FOR ll_l = 1 To ds_orderrqmx.RowCount() s_mtrl = s_mtrl_null ll_porderid = ds_orderrqmx.Object.u_order_ml_mx_taskid[ll_l] IF uof_get_rqmtrl(arg_scid,ll_orderid_tmp,ll_porderid,s_mtrl,arg_msg) = 0 THEN arg_msg = '计算相关生产指令单用料失败1,'+arg_msg rslt = 0 GOTO ext END IF IF uo_ml_mrp.uof_add_rqmtrl_scll(s_mtrl,False,arg_msg) = 0 THEN arg_msg = '计算相关生产指令单用料失败2,'+arg_msg rslt = 0 GOTO ext END IF NEXT // IF uo_ml.uof_create_order_plan_tech(arg_scid,ll_orderid_tmp,arg_msg,False) = 0 THEN // rslt = 0 // GOTO ext // END IF NEXT END IF ext: Destroy uo_ml Destroy uo_ml_mrp Destroy ds_orderrqmx Destroy ds_reqmtrl IF rslt = 0 THEN ROLLBACK; ELSEIF arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uf_del_order_ml_zl (long arg_scid, long arg_orderid, long arg_fgid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ll_i Long ll_rowcnt Long ll_orderid_tmp Int li_status datastore ds ds = Create datastore ds.DataObject = "ds_order_ml_fg_order_ml" ds.SetTransObject( sqlca) ll_rowcnt = ds.Retrieve(arg_fgid) uo_order_ml uo_ml uo_ml = Create uo_order_ml // IF uo_ml.uof_delete_order_plan_tech(arg_scid,arg_orderid,arg_msg,False) = 0 THEN // rslt = 0 // GOTO ext // END IF uo_ml.ifauto_optype = 1 FOR ll_i = 1 To ll_rowcnt ll_orderid_tmp = ds.Object.orderid[ll_i] // IF uo_ml.uof_delete_order_plan_tech(arg_scid,ll_orderid_tmp,arg_msg,False) = 0 THEN // rslt = 0 // GOTO ext // END IF SELECT status INTO :li_status FROM u_order_ml WHERE scid = :arg_scid And orderid = :ll_orderid_tmp; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询相关指令单状态失败,id:'+String(ll_orderid_tmp)+','+arg_msg GOTO ext END IF IF li_status = 1 THEN IF uo_ml.c_sec_audit(arg_scid,ll_orderid_tmp,arg_msg,False) = 0 THEN rslt = 0 arg_msg = '撤审相关生产指令单失败,id:'+String(ll_orderid_tmp)+','+arg_msg GOTO ext END IF END IF SELECT status INTO :li_status FROM u_order_ml WHERE scid = :arg_scid And orderid = :ll_orderid_tmp; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询相关指令单状态失败,id:'+String(ll_orderid_tmp)+','+arg_msg GOTO ext END IF IF li_status = 4 THEN IF uo_ml.c_audit(arg_scid,ll_orderid_tmp,arg_msg,False) = 0 THEN rslt = 0 arg_msg = '撤审相关生产指令单失败,id:'+String(ll_orderid_tmp)+','+arg_msg GOTO ext END IF END IF IF uo_ml.del(arg_scid,ll_orderid_tmp,arg_msg,False) = 0 THEN rslt = 0 arg_msg = '删除相关生产指令单失败,id:'+String(ll_orderid_tmp)+','+arg_msg GOTO ext END IF NEXT ext: Destroy uo_ml IF rslt = 0 THEN ROLLBACK; ELSEif arg_ifcommit then COMMIT; END IF RETURN rslt end function public function integer uf_create_waste_out (long arg_scid, long arg_orderid, long arg_fgid, s_order_ml_fg_mx arg_mx[], ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long i, j, strgcnt, mxcnt DateTime ldt_opdate String ls_fgcode Long ll_badstorageid_arr[] uo_outware_other uo_ware uo_ware = Create uo_outware_other uo_ware.commit_transaction = sqlca uo_ware.if_getid_ture = false SELECT fgcode, opdate INTO :ls_fgcode, :ldt_opdate FROM u_order_ml_fg Where fgid = :arg_fgid; IF sqlca.SQLCode <> 0 THEN arg_msg = "查询相关返工运算批信息失败" rslt = 0 GOTO ext END IF FOR i = 1 To UpperBound(arg_mx) IF arg_mx[i].badstorageid = 0 THEN CONTINUE FOR j = 1 To UpperBound(ll_badstorageid_arr) IF arg_mx[i].badstorageid = ll_badstorageid_arr[j] THEN GOTO nxtstrg END IF NEXT strgcnt++ ll_badstorageid_arr[strgcnt] = arg_mx[i].badstorageid nxtstrg: NEXT IF strgcnt = 0 THEN rslt = 1 GOTO ext END IF FOR j = 1 To UpperBound(ll_badstorageid_arr) IF uo_ware.newbegin(arg_scid,8,arg_msg) = 0 THEN arg_msg = "初始化报废出仓单失败,"+arg_msg rslt = 0 GOTO ext END IF uo_ware.outdate = ldt_opdate // 发生时间 uo_ware.outrep = publ_operator // 经手人 uo_ware.part = ls_fgcode //相关部门 uo_ware.dscrp = '返工运算批审核自动生成' //备注 uo_ware.cusname = "返工报废" uo_ware.relid = arg_fgid uo_ware.deptid = 0 // dw_uc.Object.u_outware_deptid[uc_row] Long ll_mtrlwareid Dec lde_cost String ls_mtrlcode, ls_unit mxcnt = 0 FOR i = 1 To UpperBound(arg_mx) IF ll_badstorageid_arr[j] = arg_mx[i].badstorageid THEN uo_ware.storageid = ll_badstorageid_arr[j] SELECT top 1 mtrlwareid, cost INTO :ll_mtrlwareid, :lde_cost FROM u_mtrlware WHERE scid = :arg_scid AND storageid = :arg_mx[i].badstorageid AND mtrlid = :arg_mx[i].mtrlid AND status = :arg_mx[i].status AND woodcode = :arg_mx[i].woodcode And pcode = :arg_mx[i].pcode; IF sqlca.SQLCode <> 0 THEN arg_msg = "查询库存信息失败, "+sqlca.SQLErrText rslt = 0 GOTO ext END IF SELECT mtrlcode, unit INTO :ls_mtrlcode, :ls_unit FROM u_mtrldef Where mtrlid = :arg_mx[i].mtrlid; IF sqlca.SQLCode <> 0 THEN arg_msg = "查询库存信息失败, "+sqlca.SQLErrText rslt = 0 GOTO ext END IF mxcnt++ IF uo_ware.acceptmx(ll_mtrlwareid,& arg_mx[i].badqty,& lde_cost,& 1,& '',& mxcnt,& arg_msg,0,0,0,0,'',0,0,& ls_unit,& arg_mx[i].badqty,& 1,'','',0,0,'',0,0,0,0,'','') = 0 THEN arg_msg = "初始化报废出仓单明细数据失败,"+arg_msg rslt = 0 GOTO ext END IF END IF NEXT IF mxcnt > 0 THEN IF uo_ware.Save(False,arg_msg) = 0 THEN arg_msg = "保存报废出仓单失败,"+arg_msg rslt = 0 GOTO ext END IF IF uo_ware.getinfo(arg_scid,uo_ware.outwareid,arg_msg) = 0 THEN arg_msg = "查找报废出仓单失败,"+arg_msg rslt = 0 GOTO ext END IF IF uo_ware.priceaudit(False,arg_msg) = 0 THEN arg_msg = "确认报废出仓单失败,"+arg_msg rslt = 0 GOTO ext END IF IF uo_ware.auditing(False,arg_msg) = 0 THEN arg_msg = "审核报废出仓单失败,"+arg_msg rslt = 0 GOTO ext END IF IF uo_ware.uof_secaudit(arg_scid,uo_ware.outwareid,arg_msg, False) = 0 THEN arg_msg = "财审报废出仓单失败,"+arg_msg rslt = 0 GOTO ext END IF END IF NEXT ext: Destroy uo_ware IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 and arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uf_create_inware_cp_th (long arg_scid, long arg_orderid, long arg_fgid, s_order_ml_fg_mx arg_mx[], ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long i, j, strgcnt, mxcnt DateTime ldt_opdate String ls_fgcode Long ll_thstorageid_arr[] //两种情况 //1.lp = 0, 主产品从仓库退回车间返工, 用负数开返工退料单, 出仓; //2.lp <> 0 , 材料从车间退回仓库,用生产退料单, 挂指令退料; uo_inware_cp uo_ware uo_ware = Create uo_inware_cp uo_ware.commit_transaction = sqlca uo_ware.if_getid_ture = false SELECT fgcode, opdate INTO :ls_fgcode, :ldt_opdate FROM u_order_ml_fg Where fgid = :arg_fgid; IF sqlca.SQLCode <> 0 THEN arg_msg = "查询相关返工运算批信息失败" rslt = 0 GOTO ext END IF FOR i = 1 To UpperBound(arg_mx) IF arg_mx[i].thstorageid = 0 THEN CONTINUE FOR j = 1 To UpperBound(ll_thstorageid_arr) IF arg_mx[i].thstorageid = ll_thstorageid_arr[j] THEN GOTO nxtstrg END IF NEXT strgcnt++ ll_thstorageid_arr[strgcnt] = arg_mx[i].thstorageid nxtstrg: NEXT IF strgcnt = 0 THEN rslt = 1 GOTO ext END IF FOR j = 1 To UpperBound(ll_thstorageid_arr) IF uo_ware.newbegin(arg_scid,3,arg_msg) = 0 THEN arg_msg = "初始化返工退仓单失败,"+arg_msg rslt = 0 GOTO ext END IF uo_ware.indate = ldt_opdate // 发生时间 uo_ware.inrep = publ_operator // 经手人 uo_ware.part = ls_fgcode //相关部门 uo_ware.dscrp = '返工运算批审核自动生成' //备注 // uo_ware.storageid = dw_uc.Object.storageid[uc_row] uo_ware.sptname = "返工退仓" // uo_ware.relid = dw_uc.Object.u_inware_relid[uc_row] //车间 uo_ware.relint_2 = 1 uo_ware.relint_1 = arg_fgid Long ll_mtrlwareid Dec lde_cost String ls_mtrlcode, ls_unit, ls_plancode mxcnt = 0 FOR i = 1 To UpperBound(arg_mx) IF ll_thstorageid_arr[j] = arg_mx[i].thstorageid THEN uo_ware.storageid = ll_thstorageid_arr[j] uo_ware.relid = arg_mx[i].produce_wrkgrpid SELECT top 1 mtrlwareid, cost INTO :ll_mtrlwareid, :lde_cost FROM u_mtrlware WHERE scid = :arg_scid AND storageid = :arg_mx[i].thstorageid AND mtrlid = :arg_mx[i].mtrlid AND status = :arg_mx[i].status AND woodcode = :arg_mx[i].woodcode And pcode = :arg_mx[i].pcode; IF sqlca.SQLCode <> 0 THEN f_get_planprice_mtrl(arg_mx[i].mtrlid,arg_mx[i].status,arg_mx[i].woodcode,arg_mx[i].pcode,lde_cost) END IF SELECT mtrlcode, unit INTO :ls_mtrlcode, :ls_unit FROM u_mtrldef Where mtrlid = :arg_mx[i].mtrlid; IF sqlca.SQLCode <> 0 THEN arg_msg = "查询库存信息失败, "+sqlca.SQLErrText rslt = 0 GOTO ext END IF mxcnt++ IF uo_ware.acceptmx(mxcnt,& arg_mx[i].mtrlid,& ls_mtrlcode,& ls_plancode,& arg_mx[i].status,& 0 - arg_mx[i].thqty,& lde_cost,& 1,& '',& arg_msg,& 0,& 0,& 0,& arg_mx[i].woodcode,& arg_mx[i].pcode,& 0,& ls_unit,& 1,& 0 - arg_mx[i].thqty,0,0,'',& '',0,0,& '',& '',& arg_mx[i].thqty,& 0) = 0 THEN arg_msg = "初始化返工退仓单明细失败,"+arg_msg rslt = 0 GOTO ext END IF IF mxcnt > 0 THEN IF uo_ware.Save(False,arg_msg) = 0 THEN arg_msg = "保存返工退仓单失败,"+arg_msg rslt = 0 GOTO ext END IF IF uo_ware.getinfo(arg_scid,uo_ware.inwareid,arg_msg) = 0 THEN arg_msg = "查找返工退仓单失败,"+arg_msg rslt = 0 GOTO ext END IF IF uo_ware.priceaudit(arg_scid,uo_ware.inwareid,arg_msg,False) = 0 THEN arg_msg = "确认返工退仓单失败,"+arg_msg rslt = 0 GOTO ext END IF IF uo_ware.auditing(False,arg_msg) = 0 THEN arg_msg = "审核返工退仓单失败,"+arg_msg rslt = 0 GOTO ext END IF IF uo_ware.uof_secaudit(arg_scid,uo_ware.inwareid,arg_msg, False) = 0 THEN arg_msg = "财审返工退仓单失败,"+arg_msg rslt = 0 GOTO ext END IF END IF END IF NEXT NEXT ext: Destroy uo_ware IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 and arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uf_del_waste_out (long arg_scid, long arg_orderid, long arg_fgid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long i, j, strgcnt, mxcnt, ll_rowcnt DateTime ldt_opdate String ls_fgcode Long ll_outwareid uo_outware_other uo_ware uo_ware = Create uo_outware_other uo_ware.commit_transaction = sqlca datastore ds ds = Create datastore ds.DataObject = "ds_order_ml_fg_waste_out" ds.SetTransObject( sqlca) ll_rowcnt = ds.Retrieve(arg_fgid) FOR i = 1 To ll_rowcnt ll_outwareid = ds.Object.outwareid[i] IF uo_ware.uof_secaudit(arg_scid,ll_outwareid,arg_msg, False) = 0 THEN arg_msg = "撤财审返工退仓单失败,"+arg_msg rslt = 0 GOTO ext END IF IF uo_ware.getinfo(arg_scid,uo_ware.outwareid,arg_msg) = 0 THEN arg_msg = "查找返工退仓单失败,"+arg_msg rslt = 0 GOTO ext END IF IF uo_ware.c_auditing(False,arg_msg) = 0 THEN arg_msg = "撤审返工退仓单失败,"+arg_msg rslt = 0 GOTO ext END IF IF uo_ware.c_priceaudit(False,arg_msg) = 0 THEN arg_msg = "反确认返工退仓单失败,"+arg_msg rslt = 0 GOTO ext END IF IF uo_ware.del(arg_scid,ll_outwareid, 1, arg_msg, False) = 0 THEN arg_msg = "删除返工退仓单失败,"+arg_msg rslt = 0 GOTO ext END IF NEXT ext: Destroy uo_ware Destroy ds IF rslt = 0 THEN ROLLBACK; ELSEIF arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uf_del_inware_cp_th (long arg_scid, long arg_orderid, long arg_fgid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long i, j, strgcnt, mxcnt, ll_rowcnt DateTime ldt_opdate String ls_fgcode Long ll_inwareid uo_inware_cp uo_ware uo_ware = Create uo_inware_cp uo_ware.commit_transaction = sqlca datastore ds ds = Create datastore ds.DataObject = "ds_order_ml_fg_inware_cp_th" ds.SetTransObject( sqlca) ll_rowcnt = ds.Retrieve(arg_fgid) FOR i = 1 To ll_rowcnt ll_inwareid = ds.Object.inwareid[i] IF uo_ware.uof_c_secaudit(arg_scid,ll_inwareid,arg_msg, False) = 0 THEN arg_msg = "撤财审返工退仓单失败,"+arg_msg rslt = 0 GOTO ext END IF IF uo_ware.getinfo(arg_scid,ll_inwareid,arg_msg) = 0 THEN arg_msg = "查找返工退仓单失败,"+arg_msg rslt = 0 GOTO ext END IF IF uo_ware.c_auditing(False,arg_msg) = 0 THEN arg_msg = "撤审返工退仓单失败,"+arg_msg rslt = 0 GOTO ext END IF IF uo_ware.c_priceaudit(arg_scid,ll_inwareid,arg_msg,False) = 0 THEN arg_msg = "反确认返工退仓单失败,"+arg_msg rslt = 0 GOTO ext END IF IF uo_ware.del(arg_scid,ll_inwareid, arg_msg, False) = 0 THEN arg_msg = "删除返工退仓单失败,"+arg_msg rslt = 0 GOTO ext END IF NEXT ext: Destroy uo_ware Destroy ds IF rslt = 0 THEN ROLLBACK; ELSEIF arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uof_get_rqmtrl (long arg_scid, long arg_orderid, long arg_porderid, ref s_order_ml_rqmtrl arg_ref_s_rqmtrl, ref string arg_msg);//重新读取运算明细 Int rslt = 1 Long cnt Long ll_mtrlid,ll_wrkgrpid,ll_pmtrlid String ls_status,ls_woodcode,ls_pcode Decimal ld_rqqty,ld_cmplqty,ld_scllqty Int li_ifcfg,li_ifpackpro Long ll_lp DECLARE cur_ml CURSOR FOR SELECT U_order_ml_fgmx.mtrlid, U_order_ml_fgmx.wrkgrpid, U_order_ml_fgmx.status, U_order_ml_fgmx.woodcode, U_order_ml_fgmx.pcode, U_order_ml_fgmx.rqqty, U_order_ml_fgmx.truerqqty, U_order_ml_fgmx.rqqty, U_order_ml_fgmx.pmtrlid, U_order_ml_fgmx.ifcfg, U_order_ml_fgmx.lp, u_mtrldef.ifpackpro FROM U_order_ml_fgmx INNER JOIN u_mtrldef ON U_order_ml_fgmx.Mtrlid = u_mtrldef.mtrlid INNER JOIN U_order_ml_fg ON U_order_ml_fgmx.Fgid = U_order_ml_fg.Fgid WHERE U_order_ml_fg.scid = :arg_scid AND U_order_ml_fg.orderid = :arg_porderid Order By U_order_ml_fgmx.printid; OPEN cur_ml; FETCH cur_ml INTO :ll_mtrlid,:ll_wrkgrpid, :ls_status,:ls_woodcode,:ls_pcode,:ld_rqqty, :ld_cmplqty,:ld_scllqty,:ll_pmtrlid,:li_ifcfg,:ll_lp,:li_ifpackpro; DO WHILE sqlca.SQLCode = 0 IF ld_rqqty > 0 THEN cnt++ arg_ref_s_rqmtrl.scid[cnt] = arg_scid arg_ref_s_rqmtrl.orderid[cnt] = arg_orderid arg_ref_s_rqmtrl.porderid[cnt] = arg_porderid arg_ref_s_rqmtrl.mtrlid[cnt] = ll_mtrlid arg_ref_s_rqmtrl.wrkgrpid_scll[cnt] = ll_wrkgrpid arg_ref_s_rqmtrl.status[cnt] = ls_status arg_ref_s_rqmtrl.woodcode[cnt] = ls_woodcode arg_ref_s_rqmtrl.pcode[cnt] = ls_pcode arg_ref_s_rqmtrl.qty[cnt] = ld_rqqty arg_ref_s_rqmtrl.scllqty[cnt] = ld_scllqty arg_ref_s_rqmtrl.cmplqty[cnt] = ld_cmplqty arg_ref_s_rqmtrl.pmtrlid[cnt] = ll_pmtrlid arg_ref_s_rqmtrl.ifcfg[cnt] = li_ifcfg arg_ref_s_rqmtrl.lp[cnt] = ll_lp arg_ref_s_rqmtrl.ifpackpro[cnt] = li_ifpackpro END IF FETCH cur_ml INTO :ll_mtrlid,:ll_wrkgrpid, :ls_status,:ls_woodcode,:ls_pcode,:ld_rqqty, :ld_cmplqty,:ld_scllqty,:ll_pmtrlid,:li_ifcfg,:ll_lp,:li_ifpackpro; LOOP CLOSE cur_ml; IF cnt = 0 THEN arg_msg = '查询上级计划需求明细失败,请检查' rslt = 0 GOTO ext END IF ext: RETURN rslt end function public function integer uf_create_outware_back (long arg_fgid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ll_i If uo_option_confirmaudit_scll = -1000 Then arg_msg = '选项:[006]生产领料单先确认再审核,读取初始默认值失败,操作取消!' rslt = 0 Goto ext End If datastore ds_scll ds_scll = Create datastore ds_scll.DataObject = 'ds_order_fg_outware_scll' ds_scll.SetTransObject(sqlca) uo_outware_scll uo_ware uo_ware = Create uo_outware_scll uo_ware.commit_transaction = sqlca uo_ware.if_getid_ture = False Long ll_scid,ll_orderid,ll_mtrlid String ls_status,ls_woodcode,ls_pcode Decimal ld_qty,ld_tmpqty Long ll_relid,ll_storageid,ll_olmtrlid,ll_orderid_mx String ls_fgcode,ls_unit DateTime ld_opdate Long ll_mtrlwareid Decimal ld_planprice String ls_mtrlcode Select scid,orderid,fgcode,opdate Into :ll_scid,:ll_orderid,:ls_fgcode,:ld_opdate From U_order_ml_fg Where fgid = :arg_fgid; If sqlca.SQLCode <> 0 Then rslt = 0 arg_msg = '查询相关返工运算批信息失败,'+sqlca.SQLErrText Goto ext End If Select top 1 U_order_ml_fgmx.mtrlid, U_order_ml_fgmx.status, U_order_ml_fgmx.woodcode, U_order_ml_fgmx.pcode, U_order_ml_fgmx.Truerqqty, u_mtrldef.unit, u_mtrldef.mtrlcode Into :ll_mtrlid, :ls_status, :ls_woodcode, :ls_pcode, :ld_qty, :ls_unit, :ls_mtrlcode From U_order_ml_fgmx Inner JOIN u_mtrldef ON U_order_ml_fgmx.Mtrlid = u_mtrldef.mtrlid Where U_order_ml_fgmx.fgid = :arg_fgid And iffg = 1 ; If sqlca.SQLCode <> 0 Then rslt = 0 arg_msg = '查询返工行信息失败,'+sqlca.SQLErrText Goto ext End If f_get_planprice_mtrl(ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ld_planprice) ds_scll.Retrieve(ll_scid,ll_orderid,ll_mtrlid,ls_status,ls_woodcode,ls_pcode) If ds_scll.RowCount() = 0 Then rslt = 0 arg_msg = '返工行物料没有相关的领料单' Goto ext End If For ll_i = 1 To ds_scll.RowCount() If ld_qty <= 0 Then Exit If ds_scll.Object.qty[ll_i] > ld_qty Then ld_tmpqty = ld_qty ld_qty = 0 Else If ll_i = ds_scll.RowCount() Then ld_tmpqty = ld_qty ld_qty = 0 Else ld_tmpqty = ds_scll.Object.qty[ll_i] ld_qty = ld_qty - ld_tmpqty End If End If ll_relid = ds_scll.Object.relid[ll_i] ll_storageid = ds_scll.Object.storageid[ll_i] ll_olmtrlid = ds_scll.Object.olmtrlid[ll_i] ll_orderid_mx = ds_scll.Object.orderid[ll_i] If uo_ware.newbegin(ll_scid,3,arg_msg) = 0 Then rslt = 0 arg_msg = '建立生产退料单失败,'+arg_msg Goto ext End If uo_ware.outdate = ld_opdate // 发生时间 uo_ware.outrep = publ_operator // 经手人 uo_ware.part = ls_fgcode uo_ware.dscrp = '' //备注 uo_ware.cusname = '返工审核自动生成' uo_ware.storageid = ll_storageid uo_ware.relid = ll_relid uo_ware.relint_1 = 2 //标识,属于返工审核自动生成 uo_ware.relint_2 = 1 uo_ware.relint_3 = arg_fgid If f_insert_0_mtrlware(ll_mtrlwareid,ll_mtrlid,ls_mtrlcode,& ll_storageid,0,ls_status,ls_woodcode,ls_pcode,& '','','',0,arg_msg) = 0 Then rslt = 0 arg_msg = '建立生产退料单失败,获取库存ID失败,'+arg_msg Goto ext End If If uo_ware.acceptmx(ll_mtrlwareid,& 0 - ld_tmpqty,& ld_planprice,& 1,& '',& 1,& arg_msg,& 1,& ll_orderid_mx,& ll_olmtrlid,0,'',0,0,& ls_unit,& 0 - ld_tmpqty,& 1,'','',0,0,'',0,0,0,0,'','') = 0 Then rslt = 0 arg_msg = '建立生产退料单失败,'+arg_msg Goto ext End If If uo_ware.Save(False,arg_msg) = 0 Then rslt = 0 arg_msg = '建立生产退料单失败,'+arg_msg Goto ext End If If uo_ware.getinfo(ll_scid,uo_ware.outwareid,arg_msg) = 0 Then rslt = 0 arg_msg = '审核相关生产退料单失败,'+arg_msg Goto ext End If If uo_option_confirmaudit_scll = 1 Then If uo_ware.priceaudit(False,arg_msg) = 0 Then rslt = 0 arg_msg = '确认相关生产退料单失败,'+arg_msg Goto ext End If End If If uo_ware.auditing(False,arg_msg) = 0 Then rslt = 0 arg_msg = '审核相关生产退料单失败,'+arg_msg Goto ext End If If f_aps_mtrl_will_scll(uo_ware.ins_s_rqmtrl,arg_msg) = 0 Then rslt = 0 arg_msg = '审核相关生产退料单失败,'+arg_msg Goto ext End If If uo_ware.secauditing(False,arg_msg) = 0 Then rslt = 0 arg_msg = '二审相关生产退料单失败,'+arg_msg Goto ext End If Next ext: Destroy uo_ware destroy ds_scll IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 and arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uf_del_outware_back (long arg_fgid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ll_i Int li_flag,li_secflag,li_priceflag Long ll_scid,ll_outwareid If uo_option_confirmaudit_scll = -1000 Then arg_msg = '选项:[006]生产领料单先确认再审核,读取初始默认值失败,操作取消!' rslt = 0 Goto ext End If datastore ds_scll ds_scll = Create datastore ds_scll.DataObject = 'ds_outware_back_fg_del' ds_scll.SetTransObject(sqlca) uo_outware_scll uo_ware uo_ware = Create uo_outware_scll uo_ware.commit_transaction = sqlca uo_ware.if_getid_ture = False ds_scll.Retrieve(arg_fgid) For ll_i = 1 To ds_scll.RowCount() li_flag = ds_scll.Object.flag[ll_i] li_secflag = ds_scll.Object.secflag[ll_i] li_priceflag = ds_scll.Object.priceflag[ll_i] ll_scid = ds_scll.Object.scid[ll_i] ll_outwareid = ds_scll.Object.outwareid[ll_i] If uo_ware.getinfo(ll_scid,ll_outwareid,arg_msg) = 0 Then rslt = 0 arg_msg = '获取相关生产退料单信息失败,'+arg_msg Goto ext End If If li_secflag = 1 Then If uo_ware.c_secauditing(False,arg_msg) = 0 Then rslt = 0 arg_msg = '撤销相关生产退料单二审失败,'+arg_msg Goto ext End If End If If li_flag = 1 Then If uo_ware.c_auditing(False,arg_msg) = 0 Then rslt = 0 arg_msg = '撤审相关生产退料单失败,'+arg_msg Goto ext End If End If If uo_option_confirmaudit_scll = 1 And li_priceflag = 1 Then If uo_ware.c_priceaudit(False,arg_msg) = 0 Then rslt = 0 arg_msg = '取消确认相关生产退料单失败,'+arg_msg Goto ext End If End If If uo_ware.del(ll_scid,ll_outwareid,0,arg_msg,False) = 0 Then rslt = 0 arg_msg = '删除相关生产退料单失败,'+arg_msg Goto ext End If Next ext: Destroy uo_ware destroy ds_scll IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 and arg_ifcommit THEN COMMIT; END IF RETURN rslt end function on uo_order_ml_fg.create call super::create TriggerEvent( this, "constructor" ) end on on uo_order_ml_fg.destroy TriggerEvent( this, "destructor" ) call super::destroy end on event constructor;String str_optionvalue,arg_msg f_get_sys_option_value('006',str_optionvalue,arg_msg) uo_option_confirmaudit_scll = Long(str_optionvalue) end event