$PBExportHeader$uo_develop.sru forward global type uo_develop from nonvisualobject end type end forward global type uo_develop from nonvisualobject end type global uo_develop uo_develop type variables Long uo_billid String uo_billcode end variables forward prototypes public function integer p_getflag (long arg_billid, ref integer arg_flag, ref string arg_msg) public function integer updatebegin (long arg_billid, ref string arg_msg) public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit) public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer save (s_develop arg_develop, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer audit2 (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer audit3 (long arg_billid, string arg_opemp, datetime arg_finishdate, ref string arg_msg, boolean arg_ifcommit) public function integer caudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer caudit2 (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer caudit3 (long arg_billid, ref string arg_msg, boolean arg_ifcommit) end prototypes public function integer p_getflag (long arg_billid, ref integer arg_flag, ref string arg_msg);Int rslt = 1 SELECT flag INTO :arg_flag FROM u_develop 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 updatebegin (long arg_billid, ref string arg_msg);Int rslt = 1 Int li_flag Long cnt 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 <> 0 and li_flag <> 1 THEN rslt = 0 arg_msg = '单据不是在待审核或待二审状态,不可以修改' 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 Int 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 <> 0 THEN rslt = 0 arg_msg = '单据不是在待审状态,不可以删除' GOTO ext END IF DELETE FROM u_develop 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 RETURN rslt end function public function integer add_dscrp (long arg_billid, 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_billid,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_develop SET DSCRP = DSCRP+' '+:arg_newdescppart WHERE u_develop.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 Return (rslt) end function public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Int 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 <> 0 THEN rslt = 0 ARG_MSG = '单据不是在待初审状态,不可以执行初审' GOTO ext END IF //更新审核标记 UPDATE u_develop SET auditemp = :arg_opemp, 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 = "单据正在审核,请稍后查询。"+"~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 save (s_develop arg_develop, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long cnt = 0 DateTime server_dt Long ll_billid String ls_sccode,ls_billcode IF IsNull(arg_develop.scid) THEN arg_develop.scid = 0 IF IsNull(arg_develop.billid) THEN arg_develop.billid = 0 IF IsNull(arg_develop.billemp) THEN arg_develop.billemp = '' IF IsNull(arg_develop.mtrlname) THEN arg_develop.mtrlname = '' IF IsNull(arg_develop.dscrp) THEN arg_develop.dscrp = '' IF IsNull(arg_develop.dutyemp) THEN arg_develop.dutyemp = '' IF IsNull(arg_develop.developtype) THEN arg_develop.developtype = '' //IF arg_develop.billemp = '' THEN // arg_msg = '请输入开发员' // rslt = 0 // GOTO ext //END IF // IF arg_develop.mtrlname = '' 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 IF arg_develop.billid = 0 THEN ll_billid = f_sys_scidentity(0,"u_develop","billid",arg_msg,TRUE,id_sqlca) IF ll_billid <= 0 THEN rslt = 0 GOTO ext END IF IF f_get_sccode(arg_develop.scid,sqlca,ls_sccode,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF ls_billcode = getid(arg_develop.scid,ls_sccode + 'DE',Date(server_dt),FALSE,sqlca) IF ls_billcode = "err" THEN rslt = 0 arg_msg = "无法获取单据编号"+"~n"+sqlca.SQLErrText GOTO ext END IF INSERT INTO u_develop (scid, billid, billcode, billdate, billemp, opdate, opemp, dscrp, mtrlname, requiredate, dutyemp, developtype) VALUES ( :arg_develop.scid, :ll_billid, :ls_billcode, :arg_develop.billdate, :arg_develop.billemp, getdate(), :arg_opemp, :arg_develop.dscrp, :arg_develop.mtrlname, :arg_develop.requiredate, :arg_develop.dutyemp, :arg_develop.developtype) ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致建立单据操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF uo_billid = ll_billid uo_billcode = ls_billcode ELSE UPDATE u_develop SET billdate = :arg_develop.billdate, billemp = :arg_develop.billemp, moddate = getdate(), modemp = :arg_opemp, mtrlname = :arg_develop.mtrlname, dscrp = :arg_develop.dscrp, requiredate = :arg_develop.requiredate, dutyemp = :arg_develop.dutyemp, developtype = :arg_develop.developtype WHERE billid = :arg_develop.billid AND (flag = 0 or flag = 1); IF sqlca.SQLCode <> 0 OR sqlca.SQLNRows <= 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF uo_billid = arg_develop.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 audit2 (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Int li_flag string ls_billemp 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 SELECT billemp INTO :ls_billemp FROM u_develop Where billid = :arg_billid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = '查询单据开发员失败'+sqlca.SQLErrText GOTO ext END IF IF Trim(ls_billemp) = '' THEN rslt = 0 ARG_MSG = '请输入开发员再进行二审' GOTO ext END IF //更新审核标记 UPDATE u_develop SET auditemp2 = :arg_opemp, auditdate2 = getdate(), flag = 2 WHERE billid = :arg_billid 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 ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer audit3 (long arg_billid, string arg_opemp, datetime arg_finishdate, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Int 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 <> 2 THEN rslt = 0 ARG_MSG = '单据不是在待终审状态,不能执行终审操作' GOTO ext END IF //更新审核标记 UPDATE u_develop SET auditemp3 = :arg_opemp, auditdate3 = getdate(), flag = 3, finishdate = :arg_finishdate WHERE billid = :arg_billid AND flag = 2; 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 caudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Int li_flag DateTime null_dt SetNull(null_dt) 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 //更新审核标记 UPDATE u_develop SET auditemp = '', auditdate = :null_dt, flag = 0 WHERE billid = :arg_billid AND flag = 1; 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 caudit2 (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Int li_flag DateTime null_dt SetNull(null_dt) 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 <> 2 THEN rslt = 0 ARG_MSG = '单据不是在二审状态,不能撤销二审' GOTO ext END IF //更新审核标记 UPDATE u_develop SET auditemp2 = '', auditdate2 = :null_dt, flag = 1 WHERE billid = :arg_billid AND flag = 2; 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 caudit3 (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Int li_flag DateTime null_dt SetNull(null_dt) 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 <> 3 THEN rslt = 0 ARG_MSG = '单据不是在终审状态,不能撤销终审' GOTO ext END IF //更新审核标记 UPDATE u_develop SET auditemp3 = '', auditdate3 = :null_dt, flag = 2, finishdate = :null_dt WHERE billid = :arg_billid AND flag = 3; 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 on uo_develop.create call super::create TriggerEvent( this, "constructor" ) end on on uo_develop.destroy TriggerEvent( this, "destructor" ) call super::destroy end on