$PBExportHeader$uo_orderworkgroup_ws.sru forward global type uo_orderworkgroup_ws from nonvisualobject end type end forward global type uo_orderworkgroup_ws from nonvisualobject end type global uo_orderworkgroup_ws uo_orderworkgroup_ws type variables long uo_billid string uo_billcode long relcpid long relcpscid long relmoveid long sstorageid long dstorageid long sworkgroupid long dworkgroupid datetime billdate string relrep int uo_option_taskplancode end variables forward prototypes public function integer save (s_ws_orderworkgroup arg_s_wrk, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) 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 add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg) public function integer audit (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer p_getinfo (long arg_billid, ref string arg_msg) public function integer getinfo (long arg_billid, ref s_ws_orderworkgroupmx arg_ref_mx[], ref long arg_arr_cnt, ref string arg_msg) public function integer c_audit (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer p_getflag (long arg_billid, ref long arg_flag, ref long arg_secflag, ref string arg_msg) public function integer d_audit (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer c_d_audit (long arg_billid, ref string arg_msg, boolean arg_ifcommit) end prototypes public function integer save (s_ws_orderworkgroup arg_s_wrk, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1,cnt = 0 DateTime server_dt Long ll_billid,it_mxbt,i String ls_sccode,ls_billcode IF IsNull(arg_s_wrk.billid) THEN arg_s_wrk.billid = 0 IF IsNull(arg_s_wrk.relcode) THEN arg_s_wrk.relcode = '' IF IsNull(arg_s_wrk.sworkgroupid) THEN arg_s_wrk.sworkgroupid = 0 IF IsNull(arg_s_wrk.dworkgroupid) THEN arg_s_wrk.dworkgroupid = 0 IF IsNull(arg_s_wrk.sstorageid) THEN arg_s_wrk.sstorageid = 0 IF IsNull(arg_s_wrk.dstorageid) THEN arg_s_wrk.dstorageid = 0 IF IsNull(arg_s_wrk.dscrp) THEN arg_s_wrk.dscrp = '' IF IsNull(arg_s_wrk.relrep) THEN arg_s_wrk.relrep = '' IF IsNull(arg_s_wrk.billtype) THEN arg_s_wrk.billtype = 0 IF IsNull(arg_s_wrk.scid) THEN arg_s_wrk.scid = 0 IF arg_s_wrk.relrep = '' THEN arg_msg = '请输入经手人' rslt = 0 GOTO ext END IF IF arg_s_wrk.sworkgroupid = 0 THEN arg_msg = '请选择调出车间' rslt = 0 GOTO ext END IF IF arg_s_wrk.sstorageid = 0 THEN arg_msg = '请先指定调出车间的车间仓' rslt = 0 GOTO ext END IF IF arg_s_wrk.dworkgroupid = 0 THEN arg_msg = '请选择调入车间' rslt = 0 GOTO ext END IF IF arg_s_wrk.dstorageid = 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_wrk.arg_s_mx) IF it_mxbt <= 0 THEN rslt = 0 arg_msg = "没有正确明细内容" GOTO ext END IF IF arg_s_wrk.billid = 0 THEN ll_billid = f_sys_scidentity(0,"u_orderworkgroup_num","billid",arg_msg,TRUE,id_sqlca) IF ll_billid <= 0 THEN rslt = 0 GOTO ext END IF IF f_get_sccode(arg_s_wrk.scid,sqlca,ls_sccode,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF ls_billcode = getid(arg_s_wrk.scid,ls_sccode + 'WS',Date(server_dt),FALSE,sqlca) IF ls_billcode = "err" THEN rslt = 0 arg_msg = "无法获取单据编号"+"~n"+sqlca.SQLErrText GOTO ext END IF INSERT INTO u_orderworkgroup_num ( billid, billcode, billdate, relcode, sworkgroupid, sstorageid, dworkgroupid, dstorageid, dscrp, opdate, opemp, relrep, billtype, scid) VALUES (:ll_billid, :ls_billcode, :arg_s_wrk.billdate, :arg_s_wrk.relcode, :arg_s_wrk.sworkgroupid, :arg_s_wrk.sstorageid, :arg_s_wrk.dworkgroupid, :arg_s_wrk.dstorageid, :arg_s_wrk.dscrp, getdate(), :arg_opemp, :arg_s_wrk.relrep, :arg_s_wrk.billtype, :arg_s_wrk.scid); 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_orderworkgroup_nummx (billid, printid, mtrlid, orderscid, orderid, status, woodcode, pcode, qty, restqty, mxdscrp) VALUES (:ll_billid, :arg_s_wrk.arg_s_mx[i].printid, :arg_s_wrk.arg_s_mx[i].mtrlid, :arg_s_wrk.arg_s_mx[i].orderscid, :arg_s_wrk.arg_s_mx[i].orderid, :arg_s_wrk.arg_s_mx[i].status, :arg_s_wrk.arg_s_mx[i].woodcode, :arg_s_wrk.arg_s_mx[i].pcode, :arg_s_wrk.arg_s_mx[i].qty, :arg_s_wrk.arg_s_mx[i].restqty, :arg_s_wrk.arg_s_mx[i].mxdscrp); 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_orderworkgroup_num SET billdate = :arg_s_wrk.billdate, relcode = :arg_s_wrk.relcode, sworkgroupid = :arg_s_wrk.sworkgroupid, dworkgroupid = :arg_s_wrk.dworkgroupid, sstorageid = :arg_s_wrk.sstorageid, dstorageid = :arg_s_wrk.dstorageid, dscrp = :arg_s_wrk.dscrp, relrep = :arg_s_wrk.relrep, scid = :arg_s_wrk.scid WHERE billid = :arg_s_wrk.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_orderworkgroup_nummx Where billid = :arg_s_wrk.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_orderworkgroup_nummx (billid, printid, mtrlid, orderscid, orderid, status, woodcode, pcode, qty, restqty, mxdscrp) VALUES (:arg_s_wrk.billid, :arg_s_wrk.arg_s_mx[i].printid, :arg_s_wrk.arg_s_mx[i].mtrlid, :arg_s_wrk.arg_s_mx[i].orderscid, :arg_s_wrk.arg_s_mx[i].orderid, :arg_s_wrk.arg_s_mx[i].status, :arg_s_wrk.arg_s_mx[i].woodcode, :arg_s_wrk.arg_s_mx[i].pcode, :arg_s_wrk.arg_s_mx[i].qty, :arg_s_wrk.arg_s_mx[i].restqty, :arg_s_wrk.arg_s_mx[i].mxdscrp); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF NEXT uo_billid = arg_s_wrk.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 del (long arg_billid, ref string arg_msg, boolean arg_ifcommit);int rslt = 1 long ll_flag,ll_secflag if arg_billid <= 0 then rslt = 0 arg_msg = '错误单据唯一码' GOTO ext END IF IF p_getflag(arg_billid,ll_flag,ll_secflag,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_orderworkgroup_nummx WHERE billid = :arg_billid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除单据明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF DELETE FROM u_orderworkgroup_num 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,li_secflag IF arg_billid <= 0 THEN rslt = 0 arg_msg = '错误单据唯一码' GOTO ext END IF IF p_getflag(arg_billid,li_flag,li_secflag,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 add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg); Int rslt = 1 long ll_flag,ll_secflag IF arg_newdescppart = '' THEN rslt = 0 arG_MSG = "要添加内容为空,操作取消" GOTO ext END IF IF p_getflag(arg_billid,ll_flag,ll_secflag,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_orderworkgroup_num SET DSCRP = DSCRP+' '+:arg_newdescppart WHERE u_orderworkgroup_num.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 audit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ll_flag,ll_secflag IF uo_option_taskplancode = -1000 THEN rslt = 0 arg_msg = '选项:[038]使用客户批号库存,读取初始默认值失败,操作取消!' GOTO ext END IF IF arg_billid <= 0 THEN rslt = 0 ARG_MSG = '错误单据唯一码' GOTO ext END IF IF p_getflag(arg_billid,ll_flag,ll_secflag,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF ll_flag <> 0 OR ll_secflag <> 0 THEN rslt = 0 ARG_MSG = '单据不是在待审核状态,不可以再审' GOTO ext END IF //==================================================================== // 自动生成车间生产进仓单 //==================================================================== Long ll_relcpid,ll_relmoveid String ls_relcpcode,ls_relmovecode String ls_mtrlcode,ls_unit String ls_taskrelcode,ls_plancode Decimal ls_planprice Long ll_cusid String ls_unit_buy Decimal ld_rate_buy Int li_ifunit Decimal ld_uqty s_ws_orderworkgroupmx s_ws_mx[] Long ll_arr_cnt,ll_i IF getinfo(arg_billid,s_ws_mx,ll_arr_cnt,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF Long ll_scid SELECT scid INTO :ll_scid FROM u_storage Where storageid = :sstorageid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = '查询调出车间的车间仓所属分部失败'+sqlca.SQLErrText GOTO ext END IF uo_inware_cp uo_cp uo_cp = CREATE uo_inware_cp uo_cp.commit_transaction = sqlca uo_cp.if_getid_ture = FALSE IF uo_cp.newbegin(ll_scid,3,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF uo_cp.indate = billdate uo_cp.inrep = relrep uo_cp.part = uo_billcode uo_cp.storageid = sstorageid uo_cp.relid = sworkgroupid uo_cp.dscrp = '车间调拨单自动生成' uo_cp.relint_1 = 1 //0-手动,1-自动 FOR ll_i = 1 TO ll_arr_cnt ls_unit_buy = '' ld_uqty = 0 ld_rate_buy = 0 IF s_ws_mx[ll_i].mtrlid > 0 THEN SELECT u_mtrldef.mtrlcode, u_mtrldef.unit, u_order_ml.taskrelcode, u_mtrldef.ifunit, u_mtrldef.unit_buy, u_mtrldef.rate_buy INTO :ls_mtrlcode, :ls_unit, :ls_taskrelcode, :li_ifunit, :ls_unit_buy, :ld_rate_buy FROM u_mtrldef,u_order_ml WHERE u_mtrldef.mtrlid = u_order_ml.mtrlid AND u_order_ml.scid = :s_ws_mx[ll_i].orderscid AND u_order_ml.orderid = :s_ws_mx[ll_i].orderid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "查询计划资料失败,"+sqlca.SQLErrText GOTO ext END IF f_get_planprice_mtrl(s_ws_mx[ll_i].mtrlid,'','','',ls_planprice) IF uo_option_taskplancode = 1 THEN ls_plancode = ls_taskrelcode ELSE ls_plancode = '' END IF s_ws_mx[ll_i].plancode = ls_plancode s_ws_mx[ll_i].planprice = ls_planprice SELECT u_order_ml.cusid INTO :ll_cusid FROM u_order_ml WHERE u_order_ml.scid = :s_ws_mx[ll_i].orderscid AND u_order_ml.orderid = :s_ws_mx[ll_i].orderid; IF sqlca.SQLCode = -1 THEN rslt = 0 ARG_MSG = "查询计划资料(客户)失败" GOTO ext ELSEIF sqlca.SQLCode = 100 THEN ll_cusid = 0 END IF IF IsNull(ll_cusid) THEN ll_cusid = 0 s_ws_mx[ll_i].cusid = ll_cusid IF li_ifunit = 0 OR ld_rate_buy <= 0 THEN ld_rate_buy = 1 ls_unit_buy = ls_unit END IF ld_uqty = (s_ws_mx[ll_i].qty + s_ws_mx[ll_i].restqty) / ld_rate_buy IF uo_cp.acceptmx(s_ws_mx[ll_i].printid,& s_ws_mx[ll_i].mtrlid,& ls_mtrlcode,& s_ws_mx[ll_i].plancode,& s_ws_mx[ll_i].status,& ld_uqty,& ls_planprice,& 1,& '',& ARG_MSG,& 0,& s_ws_mx[ll_i].orderid,& 1,& s_ws_mx[ll_i].woodcode,& s_ws_mx[ll_i].pcode,& s_ws_mx[ll_i].cusid,& ls_unit_buy,& ld_rate_buy,& s_ws_mx[ll_i].qty + s_ws_mx[ll_i].restqty,& 0,0,'','',0,0,'','',& ld_uqty,& 0) = 0 THEN rslt = 0 GOTO ext END IF END IF NEXT IF uo_cp.Save(FALSE,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF uo_cp.getinfo(uo_cp.scid,uo_cp.inwareid,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF uo_cp.auditing(FALSE,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF ll_relcpid = uo_cp.inwareid ls_relcpcode = uo_cp.inwarecode ////////////// // //==================================================================== // 自动生成仓库调拨单 //==================================================================== Long ll_mtrlwareid uo_outware_move uo_move uo_move = CREATE uo_outware_move uo_move.if_getid_ture = FALSE IF uo_move.newbegin(ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF uo_move.outdate = billdate // 发生时间 uo_move.indate = billdate // 发生时间 uo_move.outrep = relrep // 经手人 uo_move.dscrp = '车间调拨单自动生成' //备注 uo_move.sstorageid = sstorageid uo_move.dstorageid = dstorageid uo_move.relcode = uo_billcode uo_move.ifauto = 1 FOR ll_i = 1 TO ll_arr_cnt ls_unit_buy = '' ld_uqty = 0 ld_rate_buy = 0 IF s_ws_mx[ll_i].mtrlid > 0 THEN //查询相关库存 SELECT top 1 mtrlwareid INTO :ll_mtrlwareid FROM u_mtrlware WHERE mtrlid = :s_ws_mx[ll_i].mtrlid AND status = :s_ws_mx[ll_i].status AND woodcode = :s_ws_mx[ll_i].woodcode AND pcode = :s_ws_mx[ll_i].pcode AND plancode = :s_ws_mx[ll_i].plancode AND sptid = :s_ws_mx[ll_i].cusid AND storageid = :sstorageid; IF sqlca.SQLCode = -1 THEN rslt = 0 ARG_MSG = "查询相关库存失败" GOTO ext ELSEIF sqlca.SQLCode = 100 THEN ll_mtrlwareid = 0 END IF IF ll_mtrlwareid > 0 THEN SELECT u_mtrldef.mtrlcode, u_mtrldef.unit, u_order_ml.taskrelcode, u_mtrldef.planprice, u_mtrldef.ifunit, u_mtrldef.unit_buy, u_mtrldef.rate_buy INTO :ls_mtrlcode, :ls_unit, :ls_taskrelcode, :ls_planprice, :li_ifunit, :ls_unit_buy, :ld_rate_buy FROM u_mtrldef,u_order_ml WHERE u_mtrldef.mtrlid = u_order_ml.mtrlid AND u_order_ml.scid = :s_ws_mx[ll_i].orderscid AND u_order_ml.orderid = :s_ws_mx[ll_i].orderid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "查询计划资料失败,"+sqlca.SQLErrText GOTO ext END IF IF li_ifunit = 0 OR ld_rate_buy <= 0 THEN ld_rate_buy = 1 ls_unit_buy = ls_unit END IF ld_uqty = (s_ws_mx[ll_i].qty + s_ws_mx[ll_i].restqty) / ld_rate_buy IF uo_move.acceptmx(ll_mtrlwareid,& s_ws_mx[ll_i].qty,& s_ws_mx[ll_i].planprice,& ARG_MSG,& s_ws_mx[ll_i].printid,& '',& ls_unit_buy,ld_uqty,ld_rate_buy,'',0,0,0,'') = 0 THEN rslt = 0 GOTO ext END IF END IF END IF NEXT IF uo_move.Save(ARG_MSG,FALSE) = 0 THEN rslt = 0 GOTO ext END IF IF uo_move.getinfo(uo_move.outwareid,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF uo_move.ss_auditing(publ_operator,ARG_MSG,FALSE) = 0 THEN rslt = 0 GOTO ext END IF //IF uo_move.getinfo(uo_move.outwareid,ARG_MSG) = 0 THEN // rslt = 0 // GOTO ext //END IF // //IF uo_move.ds_auditing(publ_operator,ARG_MSG,FALSE) = 0 THEN // rslt = 0 // GOTO ext //END IF ll_relmoveid = uo_move.outwareid ls_relmovecode = uo_move.outwarecode // // UPDATE u_orderworkgroup_num SET relcpid = :ll_relcpid, relcpscid = :ll_scid, relcpcode = :ls_relcpcode, relmoveid = :ll_relmoveid, relmovecode = :ls_relmovecode Where u_orderworkgroup_num.billid = :arg_billid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "因网络或其它原因导致更新单据相关单据操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF DESTROY uo_cp DESTROY uo_move //更新审核标记 UPDATE u_orderworkgroup_num SET auditrep = :publ_operator, auditdate = getdate(), flag = 1 WHERE billid = :arg_billid 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 = "单据正在审核,请重新检查" 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 p_getinfo (long arg_billid, ref string arg_msg);Int rslt = 1 IF arg_billid <= 0 THEN rslt = 0 arG_MSG = "非法单据唯一码" GOTO ext END IF SELECT relcpid, relcpscid, relmoveid, sstorageid, dstorageid, sworkgroupid, dworkgroupid, billcode, relrep, billdate INTO :relcpid, :relcpscid, :relmoveid, :sstorageid, :dstorageid, :sworkgroupid, :dworkgroupid, :uo_billcode, :relrep, :billdate FROM u_orderworkgroup_num Where billid = :arg_billid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arG_MSG = '查询操作失败(错误单据唯一码)'+sqlca.SQLErrText GOTO ext END IF uo_billid = arg_billid ext: IF rslt = 0 THEN relcpid = 0 relcpscid = 0 relmoveid = 0 sstorageid = 0 dstorageid = 0 sworkgroupid = 0 dworkgroupid = 0 relrep = '' uo_billcode = '' END IF RETURN rslt end function public function integer getinfo (long arg_billid, ref s_ws_orderworkgroupmx arg_ref_mx[], ref long arg_arr_cnt, ref string arg_msg);Int rslt = 1 Long i = 1,no_mxcheck = 0 IF arg_billid <= 0 THEN rslt = 0 arg_msg = '错误单据唯一码' GOTO ext END IF rslt = p_getinfo(arg_billid,arg_msg) if rslt = 0 then goto ext //用游标读取明细 DECLARE cur_costmx CURSOR FOR SELECT u_orderworkgroup_nummx.billid, u_orderworkgroup_nummx.printid, u_orderworkgroup_nummx.orderid, u_orderworkgroup_nummx.orderscid, u_orderworkgroup_nummx.mtrlid, u_orderworkgroup_nummx.qty, u_orderworkgroup_nummx.restqty, u_orderworkgroup_nummx.status, u_orderworkgroup_nummx.woodcode, u_orderworkgroup_nummx.pcode, u_orderworkgroup_nummx.mxdscrp FROM u_orderworkgroup_nummx WHERE u_orderworkgroup_nummx.billid = :arg_billid Order By u_orderworkgroup_nummx.printid; OPEN cur_costmx; FETCH cur_costmx INTO :arg_ref_mx[i].billid, :arg_ref_mx[i].printid,:arg_ref_mx[i].orderid, :arg_ref_mx[i].orderscid,:arg_ref_mx[i].mtrlid, :arg_ref_mx[i].qty,:arg_ref_mx[i].restqty,:arg_ref_mx[i].status, :arg_ref_mx[i].woodcode,:arg_ref_mx[i].pcode,:arg_ref_mx[i].mxdscrp; DO WHILE sqlca.SQLCode = 0 i++ FETCH cur_costmx INTO :arg_ref_mx[i].billid, :arg_ref_mx[i].printid,:arg_ref_mx[i].orderid, :arg_ref_mx[i].orderscid,:arg_ref_mx[i].mtrlid, :arg_ref_mx[i].qty,:arg_ref_mx[i].restqty,:arg_ref_mx[i].status, :arg_ref_mx[i].woodcode,:arg_ref_mx[i].pcode,:arg_ref_mx[i].mxdscrp; LOOP CLOSE cur_costmx; //检验明细是否读入完整 SELECT count(*) INTO :no_mxcheck FROM u_orderworkgroup_nummx 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 ext: RETURN rslt end function public function integer c_audit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1,cnt = 0 DateTime null_dt Long li_flag,li_secflag SetNull(null_dt) IF p_getflag(arg_billid,li_flag,li_secflag,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF li_secflag = 1 THEN rslt = 0 ARG_MSG = '单据已经调入审,请先撤调入审' GOTO ext END IF IF li_flag <> 1 THEN rslt = 0 ARG_MSG = '单据不是在审核状态,不可以撤审' GOTO ext END IF IF p_getinfo(arg_billid,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF //撤审删除车间生产进仓单 uo_inware_cp uo_cp uo_cp = CREATE uo_inware_cp uo_cp.commit_transaction = sqlca uo_cp.lb_ifdelauto = TRUE IF uo_cp.getinfo(relcpscid,relcpid,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF uo_cp.c_auditing(FALSE,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF uo_cp.del(relcpscid,relcpid,ARG_MSG,FALSE) = 0 THEN rslt = 0 GOTO ext END IF //撤审删除仓库调拨单 uo_outware_move uo_move uo_move = CREATE uo_outware_move //IF uo_move.getinfo(relmoveid,ARG_MSG) = 0 THEN // rslt = 0 // GOTO ext //END IF // //IF uo_move.c_ds_auditing(ARG_MSG,false) = 0 THEN // rslt = 0 // GOTO ext //END IF IF uo_move.getinfo(relmoveid,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF uo_move.c_ss_auditing(ARG_MSG,FALSE) = 0 THEN rslt = 0 GOTO ext END IF IF uo_move.Cancel(relmoveid,ARG_MSG,FALSE) = 0 THEN rslt = 0 GOTO ext END IF UPDATE u_orderworkgroup_num SET relcpid = 0, relcpscid = 0, relcpcode = '', relmoveid = 0 , relmovecode = '', auditrep = '', auditdate = :null_dt, flag = 0 Where u_orderworkgroup_num.billid = :arg_billid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "因网络或其它原因导致更新单据相关成品进仓单资料操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF DESTROY uo_cp DESTROY uo_move ext: IF rslt = 0 THEN ROLLBACK ; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT ; END IF RETURN rslt end function public function integer p_getflag (long arg_billid, ref long arg_flag, ref long arg_secflag, ref string arg_msg);Int rslt = 1 SELECT flag,secflag INTO :arg_flag,:arg_secflag FROM u_orderworkgroup_num 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 d_audit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ll_flag,ll_secflag IF arg_billid <= 0 THEN rslt = 0 ARG_MSG = '错误单据唯一码' GOTO ext END IF IF p_getflag(arg_billid,ll_flag,ll_secflag,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF ll_flag <> 1 OR ll_secflag <> 0 THEN rslt = 0 ARG_MSG = '单据不是在待调入审核状态,不可以执行操作' GOTO ext END IF IF p_getinfo(arg_billid,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF uo_outware_move uo_move uo_move = CREATE uo_outware_move uo_move.if_getid_ture = FALSE IF uo_move.getinfo(relmoveid,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF uo_move.ds_auditing(publ_operator,ARG_MSG,FALSE) = 0 THEN rslt = 0 GOTO ext END IF DESTROY uo_move //更新审核标记 UPDATE u_orderworkgroup_num SET secauditemp = :publ_operator, secauditdate = getdate(), secflag = 1 WHERE billid = :arg_billid AND flag = 1 AND secflag = 0 ; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "因网络或其它原因导致单据审核操作失败"+"~n"+sqlca.SQLErrText GOTO ext ELSEIF sqlca.SQLNRows = 0 THEN rslt = 0 ARG_MSG = "单据正在审核,请重新检查" 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 c_d_audit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ll_flag,ll_secflag 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,ll_secflag,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF ll_flag <> 1 OR ll_secflag <> 1 THEN rslt = 0 ARG_MSG = '单据不是在调入审核状态,不可以执行操作' GOTO ext END IF IF p_getinfo(arg_billid,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF uo_outware_move uo_move uo_move = CREATE uo_outware_move uo_move.if_getid_ture = FALSE IF uo_move.getinfo(relmoveid,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF uo_move.c_ds_auditing(ARG_MSG,FALSE) = 0 THEN rslt = 0 GOTO ext END IF DESTROY uo_move //更新审核标记 UPDATE u_orderworkgroup_num SET secauditemp = '', secauditdate = :null_dt, secflag = 0 WHERE billid = :arg_billid AND flag = 1 AND secflag = 1 ; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "因网络或其它原因导致单据审核操作失败"+"~n"+sqlca.SQLErrText GOTO ext ELSEIF sqlca.SQLNRows = 0 THEN rslt = 0 ARG_MSG = "单据正在审核,请重新检查" GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function on uo_orderworkgroup_ws.create call super::create TriggerEvent( this, "constructor" ) end on on uo_orderworkgroup_ws.destroy TriggerEvent( this, "destructor" ) call super::destroy end on event constructor; String str_optionvalue,arg_msg f_get_sys_option_value('038',str_optionvalue,arg_msg) uo_option_taskplancode = Long(str_optionvalue) end event