$PBExportHeader$uo_taskwork_hz.sru forward global type uo_taskwork_hz from nonvisualobject end type end forward global type uo_taskwork_hz from nonvisualobject end type global uo_taskwork_hz uo_taskwork_hz type variables Long uo_billid String uo_billcode Int uo_option_taskwork_procode_order end variables forward prototypes public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg) public function integer p_getflag (long arg_billid, ref long arg_flag, ref string arg_msg) public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer updatebegin (long arg_billid, ref string arg_msg) public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer caudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer save (s_taskwork_hz arg_s_taskwork, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer getinfo (long arg_billid, ref s_taskwork_hz_mx arg_s_mx[], ref long arg_arr_cnt, ref s_taskwork_hz_ordermx arg_s_ordermx[], ref long arg_arr_cntmx, ref string arg_msg) end prototypes public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg); Int rslt = 1 long ll_flag IF arg_newdescppart = '' THEN rslt = 0 arG_MSG = "要添加内容为空,操作取消" GOTO ext END IF IF p_getflag(arg_billid,ll_flag,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF ll_flag = 0 THEN rslt = 0 arG_MSG = "待审核状态下不可用" GOTO ext END IF UPDATE u_taskwork_hz SET DSCRP = DSCRP+' '+:arg_newdescppart WHERE u_taskwork_hz.billid = :arg_billid; IF SQLCA.SQLCode <> 0 THEN rslt = 0 arG_MSG = "因网络或其它原因导致添加备注操作失败"+"~n"+SQLCA.SQLErrText GOTO ext END IF ext: IF rslt = 1 THEN COMMIT; ELSE ROLLBACK; END IF Return (rslt) end function public function integer p_getflag (long arg_billid, ref long arg_flag, ref string arg_msg);Int rslt = 1 SELECT flag INTO :arg_flag FROM u_taskwork_hz WHERE billid = :arg_billid; 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_billid, ref string arg_msg, boolean arg_ifcommit);int rslt = 1 long ll_flag if arg_billid <= 0 then rslt = 0 arg_msg = '错误单据唯一码' GOTO ext END IF IF p_getflag(arg_billid,ll_flag,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF if ll_flag <> 0 then rslt = 0 arg_msg = '单据不是在待审核状态,不能删除' GOTO ext END IF DELETE FROM u_taskwork_hz_mx WHERE billid = :arg_billid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除单据工序明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF DELETE FROM u_taskwork_hz_ordermx WHERE billid = :arg_billid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除单据计划明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF DELETE FROM u_taskwork_hz WHERE billid = :arg_billid AND flag = 0; 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_billid, ref string arg_msg);Int rslt = 1 long li_flag IF arg_billid <= 0 THEN rslt = 0 arg_msg = '错误单据唯一码' GOTO ext END IF IF p_getflag(arg_billid,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_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ll_flag uo_taskwork uo_taskwork_dq uo_taskwork_dq = Create uo_taskwork uo_taskwork_dq.if_getid_ture = False IF uo_option_taskwork_procode_order = -1000 THEN arg_msg = '选项:[064]计件单按生产计划工序,读取初始默认值失败,操作取消!' rslt = 0 GOTO ext END IF IF arg_billid <= 0 THEN rslt = 0 arg_msg = '错误单据唯一码' GOTO ext END IF IF p_getflag(arg_billid,ll_flag,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF ll_flag <> 0 THEN rslt = 0 arg_msg = '单据不是在待审核状态,不可以再审' GOTO ext END IF //自动建立产品个人计件单 s_taskwork_hz_mx s_mx[] s_taskwork_hz_ordermx s_ordermx[] Long ll_arr_cnt ,ll_arr_cntmx Long ll_i,ll_j IF getinfo(arg_billid,s_mx,ll_arr_cnt,s_ordermx,ll_arr_cntmx,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF DateTime ld_billdate Long ll_wageid,ll_wagemth,ll_scid String ls_dscrp,ls_relcode Decimal ls_workqty Long ll_orderid_arr[] String ls_procode_arr[] Decimal ld_proqty_arr[] Long ll_k,it_mx_pro = 0 Decimal ld_amount Long ll_printid = 0 String ls_billcode String ls_wpcode //查询单据信息 SELECT scid,billdate ,wageid,wagemth,relcode,billcode INTO :ll_scid,:ld_billdate,:ll_wageid,:ll_wagemth,:ls_relcode,:ls_billcode FROM u_taskwork_hz Where billid = :arg_billid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询单据相关信息失败'+sqlca.SQLErrText GOTO ext END IF // //不重复取工序 FOR ll_i = 1 To ll_arr_cnt FOR ll_k = 1 To it_mx_pro IF ls_procode_arr[ll_k] = s_mx[ll_i].procode THEN GOTO _next END IF NEXT it_mx_pro++ ls_procode_arr[it_mx_pro] = s_mx[ll_i].procode _next: NEXT //循环计划 FOR ll_j = 1 To ll_arr_cntmx IF uo_taskwork_dq.newbegin(ll_scid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF uo_taskwork_dq.orderid = s_ordermx[ll_j].orderid uo_taskwork_dq.billdate = ld_billdate uo_taskwork_dq.wageid = ll_wageid uo_taskwork_dq.mtrlid = s_ordermx[ll_j].mtrlid uo_taskwork_dq.qty = s_ordermx[ll_j].orderqty uo_taskwork_dq.dscrp = '由单据'+ls_billcode+'辅助自动生成' uo_taskwork_dq.relcode = ls_relcode uo_taskwork_dq.wagemth = ll_wagemth uo_taskwork_dq.relid = arg_billid IF ll_j <> ll_arr_cntmx THEN //如果不是最后一个计划,按计划扣减数量 FOR ll_i = 1 To it_mx_pro IF uo_option_taskwork_procode_order = 1 THEN SELECT proqty INTO :ls_workqty FROM U_OrderRqwp WHERE scid = :ll_scid AND orderid = :s_ordermx[ll_j].orderid And procode = :ls_procode_arr[ll_i]; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询工序:'+s_mx[ll_i].procode+',计划数量失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF SELECT wpcode INTO :ls_wpcode FROM u_order_ml WHERE scid = :ll_scid And orderid = :s_ordermx[ll_j].orderid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询指令单工价表号失败,ID'+String(s_ordermx[ll_j].orderid) + ','+sqlca.SQLErrText rslt = 0 GOTO ext END IF ELSE SELECT top 1 workqty * :s_ordermx[ll_j].orderqty,wpcode INTO :ls_workqty,:ls_wpcode FROM u_sc_workprice WHERE mtrlid = :s_ordermx[ll_j].mtrlid And procode = :ls_procode_arr[ll_i]; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询单件产品工序数失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF END IF FOR ll_k = 1 To ll_arr_cnt IF s_mx[ll_k].procode = ls_procode_arr[ll_i] And s_mx[ll_k].amount > 0 And ls_workqty > 0 THEN IF s_mx[ll_k].amount > ls_workqty THEN ld_amount = ls_workqty s_mx[ll_k].amount = s_mx[ll_k].amount - ls_workqty ls_workqty = 0 ELSE ld_amount = s_mx[ll_k].amount ls_workqty = ls_workqty - s_mx[ll_k].amount s_mx[ll_k].amount = 0 END IF ll_printid++ IF uo_taskwork_dq.acceptmx(s_mx[ll_k].empid,& s_mx[ll_k].empcode,& s_mx[ll_k].empname,& s_mx[ll_k].procode,& s_mx[ll_k].proname,& ld_amount,& s_mx[ll_k].workprice,& s_mx[ll_k].workhour,& s_mx[ll_k].mxdscrp,& arg_msg,& ll_printid,& s_mx[ll_k].status,& 0,'',0,& ls_wpcode) = 0 THEN rslt = 0 GOTO ext END IF IF ls_workqty = 0 THEN GOTO _next2 END IF END IF NEXT _next2: NEXT ELSE //如果是最后一个计划,将所有未分配完的数量分配完 FOR ll_k = 1 To ll_arr_cnt IF s_mx[ll_k].amount > 0 THEN ll_printid++ IF uo_taskwork_dq.acceptmx(s_mx[ll_k].empid,& s_mx[ll_k].empcode,& s_mx[ll_k].empname,& s_mx[ll_k].procode,& s_mx[ll_k].proname,& s_mx[ll_k].amount,& s_mx[ll_k].workprice,& s_mx[ll_k].workhour,& s_mx[ll_k].mxdscrp,& arg_msg,& ll_printid,& s_mx[ll_k].status,& 0,'',0,& ls_wpcode) = 0 THEN rslt = 0 GOTO ext END IF END IF NEXT END IF IF ll_printid > 0 THEN IF uo_taskwork_dq.Save(arg_msg,False) = 0 THEN rslt = 0 GOTO ext END IF END IF ll_printid = 0 NEXT //更新审核标记 UPDATE u_taskwork_hz SET auditingrep = :arg_opemp, auditingdate = getdate(), flag = 1 WHERE billid = :arg_billid And flag = 0; 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 Destroy uo_taskwork_dq RETURN rslt end function public function integer caudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ll_flag uo_taskwork uo_taskwork_dq uo_taskwork_dq = CREATE uo_taskwork DateTime null_dt SetNull(null_dt) IF arg_billid <= 0 THEN rslt = 0 ARG_MSG = '错误单据唯一码' GOTO ext END IF IF p_getflag(arg_billid,ll_flag,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF ll_flag <> 1 THEN rslt = 0 ARG_MSG = '单据不是在审核状态,不可以撤审' GOTO ext END IF String ls_billcode[] Long ll_scid[],ll_billid[] Long i,ll_i i = 1 //删除相关自动生成的计件单 DECLARE cur_billmx CURSOR FOR SELECT scid,billid,billcode FROM u_sc_taskwork Where relid = :arg_billid; OPEN cur_billmx; FETCH cur_billmx INTO :ll_scid[i],:ll_billid[i],:ls_billcode[i]; DO WHILE sqlca.SQLCode = 0 i++ FETCH cur_billmx INTO :ll_scid[i],:ll_billid[i],:ls_billcode[i]; LOOP i = i - 1 FOR ll_i = 1 TO i IF uo_taskwork_dq.del(ll_scid[ll_i],ll_billid[ll_i],ARG_MSG,false) = 0 THEN rslt = 0 ARG_MSG = '删除自动建立的计件单 '+ls_billcode[ll_i]+' 失败,'+ARG_MSG GOTO ext END IF NEXT //更新审核标记 UPDATE u_taskwork_hz SET auditingrep = '', auditingdate = :null_dt, flag = 0 Where billid = :arg_billid; 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 DESTROY uo_taskwork_dq RETURN rslt end function public function integer save (s_taskwork_hz arg_s_taskwork, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1,cnt = 0 DateTime server_dt Long ll_billid,it_mxbt,i,it_mxbt_order,j String ls_sccode,ls_billcode IF IsNull(arg_s_taskwork.scid) THEN arg_s_taskwork.scid = 0 IF IsNull(arg_s_taskwork.billid) THEN arg_s_taskwork.billid = 0 IF IsNull(arg_s_taskwork.rep) THEN arg_s_taskwork.rep = '' IF IsNull(arg_s_taskwork.dscrp) THEN arg_s_taskwork.dscrp = '' IF IsNull(arg_s_taskwork.relcode) THEN arg_s_taskwork.relcode = '' IF IsNull(arg_s_taskwork.wagemth) THEN arg_s_taskwork.wagemth = 0 IF IsNull(arg_s_taskwork.wageid) THEN arg_s_taskwork.wageid = 0 IF arg_s_taskwork.rep = '' THEN arg_msg = '请输入经手人' rslt = 0 GOTO ext END IF IF arg_s_taskwork.wagemth = 0 THEN arg_msg = '请输入工资月份' rslt = 0 GOTO ext END IF IF arg_s_taskwork.wageid = 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_taskwork.arg_s_mx) IF it_mxbt <= 0 THEN rslt = 0 arg_msg = "没有正确的工序明细内容" GOTO ext END IF it_mxbt_order = UpperBound(arg_s_taskwork.arg_s_ordermx) IF it_mxbt_order <= 0 THEN rslt = 0 arg_msg = "没有正确的计划明细内容" GOTO ext END IF IF arg_s_taskwork.billid = 0 THEN ll_billid = f_sys_scidentity(0,"u_taskwork_hz","billid",arg_msg,TRUE,id_sqlca) IF ll_billid <= 0 THEN rslt = 0 GOTO ext END IF IF f_get_sccode(arg_s_taskwork.scid,sqlca,ls_sccode,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF ls_billcode = getid(arg_s_taskwork.scid,ls_sccode + 'TH',Date(server_dt),FALSE,sqlca) IF ls_billcode = "err" THEN rslt = 0 arg_msg = "无法获取单据编号"+"~n"+sqlca.SQLErrText GOTO ext END IF INSERT INTO u_taskwork_hz (scid, billid, billcode, billdate, rep, wagemth, wageid, relcode, dscrp, opdate, opemp) VALUES (:arg_s_taskwork.scid, :ll_billid, :ls_billcode, :arg_s_taskwork.billdate, :arg_s_taskwork.rep, :arg_s_taskwork.wagemth, :arg_s_taskwork.wageid, :arg_s_taskwork.relcode, :arg_s_taskwork.dscrp, getdate(), :arg_opemp); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致建立单据操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF FOR i = 1 TO it_mxbt INSERT INTO u_taskwork_hz_mx (scid, billid, empid, procode, proname, empcode, empname, amount, workprice, workhour, mxdscrp, printid, status, proorder) VALUES (:arg_s_taskwork.scid, :ll_billid, :arg_s_taskwork.arg_s_mx[i].empid, :arg_s_taskwork.arg_s_mx[i].procode, :arg_s_taskwork.arg_s_mx[i].proname, :arg_s_taskwork.arg_s_mx[i].empcode, :arg_s_taskwork.arg_s_mx[i].empname, :arg_s_taskwork.arg_s_mx[i].amount, :arg_s_taskwork.arg_s_mx[i].workprice, :arg_s_taskwork.arg_s_mx[i].workhour, :arg_s_taskwork.arg_s_mx[i].mxdscrp, :arg_s_taskwork.arg_s_mx[i].printid, :arg_s_taskwork.arg_s_mx[i].status, :arg_s_taskwork.arg_s_mx[i].proorder); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF NEXT FOR j = 1 TO it_mxbt_order INSERT INTO u_taskwork_hz_ordermx (scid, billid, printid, orderid) VALUES (:arg_s_taskwork.scid, :ll_billid, :arg_s_taskwork.arg_s_ordermx[j].printid, :arg_s_taskwork.arg_s_ordermx[j].orderid); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF NEXT uo_billid = ll_billid uo_billcode = ls_billcode ELSE UPDATE u_taskwork_hz SET billdate = :arg_s_taskwork.billdate, rep = :arg_s_taskwork.rep, dscrp = :arg_s_taskwork.dscrp, relcode = :arg_s_taskwork.relcode, wagemth = :arg_s_taskwork.wagemth, wageid = :arg_s_taskwork.wageid, moddate = getdate(), modemp = :arg_opemp WHERE billid = :arg_s_taskwork.billid 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_taskwork_hz_mx Where billid = :arg_s_taskwork.billid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除旧有工序明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF FOR i = 1 TO it_mxbt INSERT INTO u_taskwork_hz_mx (scid, billid, empid, procode, proname, empcode, empname, amount, workprice, workhour, mxdscrp, printid, status, proorder) VALUES (:arg_s_taskwork.scid, :arg_s_taskwork.billid, :arg_s_taskwork.arg_s_mx[i].empid, :arg_s_taskwork.arg_s_mx[i].procode, :arg_s_taskwork.arg_s_mx[i].proname, :arg_s_taskwork.arg_s_mx[i].empcode, :arg_s_taskwork.arg_s_mx[i].empname, :arg_s_taskwork.arg_s_mx[i].amount, :arg_s_taskwork.arg_s_mx[i].workprice, :arg_s_taskwork.arg_s_mx[i].workhour, :arg_s_taskwork.arg_s_mx[i].mxdscrp, :arg_s_taskwork.arg_s_mx[i].printid, :arg_s_taskwork.arg_s_mx[i].status, :arg_s_taskwork.arg_s_mx[i].proorder); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF NEXT DELETE FROM u_taskwork_hz_ordermx Where billid = :arg_s_taskwork.billid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除旧有计划明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF FOR j = 1 TO it_mxbt_order INSERT INTO u_taskwork_hz_ordermx (scid, billid, printid, orderid) VALUES (:arg_s_taskwork.scid, :arg_s_taskwork.billid, :arg_s_taskwork.arg_s_ordermx[j].printid, :arg_s_taskwork.arg_s_ordermx[j].orderid); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF NEXT uo_billid = arg_s_taskwork.billid END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF arg_ifcommit AND rslt = 1 THEN COMMIT; END IF RETURN rslt end function public function integer getinfo (long arg_billid, ref s_taskwork_hz_mx arg_s_mx[], ref long arg_arr_cnt, ref s_taskwork_hz_ordermx arg_s_ordermx[], ref long arg_arr_cntmx, ref string arg_msg);Int rslt = 1 Long i = 1,j = 1 ,no_mxcheck = 0 IF arg_billid <= 0 THEN rslt = 0 arg_msg = '错误单据唯一码' GOTO ext END IF DECLARE cur_mx CURSOR FOR SELECT u_rs_empinfo.Empcode, u_taskwork_hz_mx.procode, u_taskwork_hz_mx.Amount, u_taskwork_hz_mx.Workprice, u_taskwork_hz_mx.Workhour, u_taskwork_hz_mx.mxdscrp, u_taskwork_hz_mx.proname, u_taskwork_hz_mx.Empid, u_taskwork_hz_mx.printid, u_rs_empinfo.Empname , u_taskwork_hz_mx.status FROM u_taskwork_hz_mx, u_rs_empinfo WHERE ( u_taskwork_hz_mx.Empid = u_rs_empinfo.empid ) AND ( u_taskwork_hz_mx.billid = :arg_billid ) Order By u_taskwork_hz_mx.printid; OPEN cur_mx; FETCH cur_mx INTO :arg_s_mx[i].empcode,:arg_s_mx[i].procode, :arg_s_mx[i].amount,:arg_s_mx[i].workprice,:arg_s_mx[i].workhour, :arg_s_mx[i].mxdscrp,:arg_s_mx[i].proname,:arg_s_mx[i].empid, :arg_s_mx[i].printid,:arg_s_mx[i].Empname,:arg_s_mx[i].status; DO WHILE sqlca.SQLCode = 0 i++ FETCH cur_mx INTO :arg_s_mx[i].empcode,:arg_s_mx[i].procode, :arg_s_mx[i].amount,:arg_s_mx[i].workprice,:arg_s_mx[i].workhour, :arg_s_mx[i].mxdscrp,:arg_s_mx[i].proname,:arg_s_mx[i].empid, :arg_s_mx[i].printid,:arg_s_mx[i].Empname,:arg_s_mx[i].status; LOOP CLOSE cur_mx; //检验明细是否读入完整 SELECT count(*) INTO :no_mxcheck FROM u_taskwork_hz_mx Where billid = :arg_billid; 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 // // DECLARE cur_ordermx CURSOR FOR SELECT u_taskwork_hz_ordermx.printid, u_taskwork_hz_ordermx.orderid, u_Order_ml.mtrlid, u_Order_ml.orderqty FROM u_Order_ml RIGHT OUTER JOIN u_taskwork_hz_ordermx ON u_Order_ml.scid = u_taskwork_hz_ordermx.scid AND u_Order_ml.OrderID = u_taskwork_hz_ordermx.orderid Where u_taskwork_hz_ordermx.billid = :arg_billid; OPEN cur_ordermx; FETCH cur_ordermx INTO :arg_s_ordermx[j].printid,:arg_s_ordermx[j].orderid, :arg_s_ordermx[j].mtrlid,:arg_s_ordermx[j].orderqty; DO WHILE sqlca.SQLCode = 0 j++ FETCH cur_ordermx INTO :arg_s_ordermx[j].printid,:arg_s_ordermx[j].orderid, :arg_s_ordermx[j].mtrlid,:arg_s_ordermx[j].orderqty; LOOP CLOSE cur_ordermx; SELECT count(*) INTO :no_mxcheck FROM u_taskwork_hz_ordermx Where billid = :arg_billid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,工序明细数量" GOTO ext END IF IF j <> (no_mxcheck + 1) THEN rslt = 0 arg_msg = "查询操作失败,计划明细内容" GOTO ext END IF arg_arr_cntmx = j - 1 ext: RETURN rslt end function on uo_taskwork_hz.create call super::create TriggerEvent( this, "constructor" ) end on on uo_taskwork_hz.destroy TriggerEvent( this, "destructor" ) call super::destroy end on event constructor;String arg_msg String str_optionvalue str_optionvalue = '' f_get_sys_option_value('064',str_optionvalue,arg_msg) uo_option_taskwork_procode_order = Long(str_optionvalue) end event