123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822 |
- $PBExportHeader$uo_oa_workremind.sru
- forward
- global type uo_oa_workremind from nonvisualobject
- end type
- end forward
- global type uo_oa_workremind from nonvisualobject
- end type
- global uo_oa_workremind uo_oa_workremind
- forward prototypes
- PUBLIC FUNCTION Boolean uf_delete (Long arg_wrmid, REF String arg_msg)
- PUBLIC FUNCTION Boolean uf_get_userworkremind (REF String arg_remindstr, String arg_userid, REF String arg_msg)
- PUBLIC FUNCTION Boolean uf_add_userworkremind (String arg_remindstr, String arg_userid, REF String arg_msg)
- public function boolean uf_save (s_userworkremind arg_uwrm, ref string arg_msg)
- PUBLIC FUNCTION String uf_test (String arg)
- public function boolean uf_retr_userworkremind (long arg_wrmid, ref s_userworkremindrslt arg_result[], ref string arg_funcname, ref long arg_funcid, ref string arg_msg)
- PUBLIC FUNCTION Boolean uf_get_cansee (String arg_userid, REF String arg_cansee, REF String arg_msg)
- PUBLIC FUNCTION Boolean uf_add_canseestr (String arg_remindstr, String arg_userid, REF String arg_msg)
- public function boolean uf_chk_synax (ref string arg_sqlstr, ref string arg_msg)
- public function boolean uf_chk_synaxmx (ref string arg_sqlstr, ref string arg_msg)
- public function boolean uf_get_userworkremind_mx (long arg_wrmid, ref string arg_result, ref string arg_msg)
- end prototypes
- PUBLIC FUNCTION Boolean uf_delete (Long arg_wrmid, REF String arg_msg);
- //删除工作提醒
- DELETE oa_workremindDef
- Where wrmid = :arg_wrmid;
- IF sqlca.SQLCode <> 0 THEN
- ROLLBACK;
- arg_msg = "删除工作提醒失败~n"+sqlca.SQLErrText
- RETURN FALSE
- ELSE
- COMMIT;
- END IF
- RETURN TRUE
- END FUNCTION
- PUBLIC FUNCTION Boolean uf_get_userworkremind (REF String arg_remindstr, String arg_userid, REF String arg_msg);
- //获取用户订阅的工作提醒,返回用户有效提醒
- SELECT WrmIdStr
- INTO :arg_remindStr
- FROM u_user
- Where UserID = :arg_userid;
-
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = "获取用户订阅提醒失败~n"+sqlca.SQLErrText
- RETURN FALSE
- END IF
- RETURN TRUE
- END FUNCTION
- PUBLIC FUNCTION Boolean uf_add_userworkremind (String arg_remindstr, String arg_userid, REF String arg_msg);
- //保存或更新用户订阅的工作提醒
- UPDATE u_user
- SET WrmIdStr = :arg_remindStr
- Where UserID = :arg_userid;
-
- IF sqlca.SQLCode <> 0 THEN
- ROLLBACK;
- arg_msg = "保存用户工作提醒失败~n"+sqlca.SQLErrText
- RETURN FALSE
- ELSE
- COMMIT;
- END IF
- RETURN TRUE
- END FUNCTION
- public function boolean uf_save (s_userworkremind arg_uwrm, ref string arg_msg);
- //保存或更新工作提醒
- Boolean rslt = True
- //检查语句
- IF Not uf_chk_synax(arg_uwrm.Expressions,arg_msg) THEN
- rslt = False
- GOTO ext
- END IF
- IF arg_uwrm.ifdftwin = 1 THEN
- IF arg_uwrm.ExpressionsMx = "" THEN
- rslt = False
- arg_msg = "使用默认窗口, 提醒SQL明细语句不能为空"
- GOTO ext
- END IF
-
- //检查明细语句
- IF Not uf_chk_synaxMx(arg_uwrm.ExpressionsMx,arg_msg) THEN
- rslt = False
- GOTO ext
- END IF
-
- arg_uwrm.Funcid = 809
- arg_uwrm.WinName = "自定义订阅明细窗口"
- END IF
- IF arg_uwrm.ifautoopen = 1 THEN
- IF arg_uwrm.Funcid = 0 THEN
- rslt = False
- arg_msg = "使用自动打开窗口, 请选择关联窗口"
- GOTO ext
- END IF
- END IF
- //检查权限限制的使用
- IF arg_uwrm.Ifsc = 1 THEN
-
- END IF
- IF arg_uwrm.Ifstorage = 1 THEN
-
- END IF
- //订单的业务员 u_saletask.assign_emp
- //发货单的业务员 u_outware.outrep
- //客户区域 ( u_cust.cusareaid in (:arg_cusareaid) or u_cust.cusareaid = 0 )
- //供应商类别 (u_spt.spttypeid in (:arg_spttypeid)
- IF arg_uwrm.ifcusarea = 1 THEN
- IF Pos(Lower(arg_uwrm.Expressions), ' u_cust ') <= 0 THEN
- arg_msg = "使用客户区域限制, 提醒SQL语句必须包含客户定义表[u_cust]"
- rslt = False
- GOTO ext
- END IF
- IF Pos(Lower(arg_uwrm.ExpressionsMx), ' u_cust ') <= 0 THEN
- arg_msg = "使用客户区域限制, 提醒SQL明细语句必须包含客户定义表[u_cust]"
- rslt = False
- GOTO ext
- END IF
-
- END IF
- IF arg_uwrm.ifoutrep = 1 THEN
- IF Pos(Lower(arg_uwrm.Expressions), ' u_saletask ') <= 0 And &
- Pos(Lower(arg_uwrm.Expressions), ' u_outware ') <= 0 THEN
- arg_msg = "使用业务员限制, 提醒SQL语句必须最少包含销售订单表[u_saletask]或销售发货单表[u_outware]之一"
- rslt = False
- GOTO ext
- END IF
- IF Pos(Lower(arg_uwrm.ExpressionsMx), ' u_saletask ') <= 0 And &
- Pos(Lower(arg_uwrm.ExpressionsMx), ' u_outware ') <= 0 THEN
- arg_msg = "使用业务员限制, 提醒SQL明细语句必须最少包含销售订单表[u_saletask]或销售发货单表[u_outware]之一"
- rslt = False
- GOTO ext
- END IF
- END IF
- IF arg_uwrm.ifspttype = 1 THEN
- IF Pos(Lower(arg_uwrm.Expressions), ' u_spt ') <= 0 THEN
- arg_msg = "使用供应商类别限制, 提醒SQL语句必须包含供应商定义表[u_spt]"
- rslt = False
- GOTO ext
- END IF
- IF Pos(Lower(arg_uwrm.ExpressionsMx), ' u_spt ') <= 0 THEN
- arg_msg = "使用供应商类别限制, 提醒SQL明细语句必须包含供应商定义表[u_spt]"
- rslt = False
- GOTO ext
- END IF
- END IF
- //执行更新语句
- UPDATE oa_workremindDef
- SET wrmcode = :arg_uwrm.wrmcode,
- Expressions = :arg_uwrm.Expressions,
- ExpressionsMx = :arg_uwrm.ExpressionsMx,
- WrmType = :arg_uwrm.WrmType,
- ChkTimeRule = :arg_uwrm.ChkTimeRule,
- Funcid = :arg_uwrm.Funcid,
- WinName = :arg_uwrm.WinName,
- ModuleName = :arg_uwrm.ModuleName,
- Operationstr = :arg_uwrm.Operationstr,
- Ifsc = :arg_uwrm.Ifsc,
- Ifstorage = :arg_uwrm.Ifstorage,
- ifcusarea = :arg_uwrm.ifcusarea,
- ifoutrep = :arg_uwrm.ifoutrep,
- ifspttype = :arg_uwrm.ifspttype,
- ifdftwin = :arg_uwrm.ifdftwin,
- ifautoopen = :arg_uwrm.ifautoopen,
- WrmName = :arg_uwrm.WrmName,
- ChkTimeDir = :arg_uwrm.timedirection
- Where wrmid = :arg_uwrm.wrmid;
- IF sqlca.SQLCode = 0 THEN
- IF sqlca.SQLNRows = 0 THEN
- //执行插入语句
- INSERT INTO oa_workremindDef(wrmid,wrmcode,Expressions,
- ExpressionsMx,
- WrmType,
- ChkTimeRule,Funcid,
- WinName,ModuleName,
- Operationstr,Ifsc,
- Ifstorage,
- ifcusarea ,
- ifoutrep ,
- ifspttype ,
- ifdftwin ,
- ifautoopen,
- WrmName,
- ChkTimeDir)
- VALUES(:arg_uwrm.wrmid,
- :arg_uwrm.wrmcode,
- :arg_uwrm.Expressions,
- :arg_uwrm.ExpressionsMx,
- :arg_uwrm.WrmType,
- :arg_uwrm.ChkTimeRule,
- :arg_uwrm.Funcid,
- :arg_uwrm.WinName,
- :arg_uwrm.ModuleName,
- :arg_uwrm.Operationstr,
- :arg_uwrm.Ifsc,
- :arg_uwrm.Ifstorage,
- :arg_uwrm.ifcusarea ,
- :arg_uwrm.ifoutrep ,
- :arg_uwrm.ifspttype ,
- :arg_uwrm.ifdftwin ,
- :arg_uwrm.ifautoopen,
- :arg_uwrm.WrmName,
- :arg_uwrm.timedirection);
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = "插入数据失败~n"+sqlca.SQLErrText
- rslt = False
- GOTO ext
- END IF
- // ELSE
- // arg_msg = "更新数据失败~n"+sqlca.SQLErrText
- // RETURN FALSE
- END IF
- ELSE
- arg_msg = "更新数据失败~n"+sqlca.SQLErrText
- rslt = False
- GOTO ext
- END IF
- ext:
- IF Not rslt THEN
- ROLLBACK;
- ELSE
- COMMIT ;
- END IF
- RETURN rslt
- end function
- PUBLIC FUNCTION String uf_test (String arg);
- RETURN arg
- END FUNCTION
- public function boolean uf_retr_userworkremind (long arg_wrmid, ref s_userworkremindrslt arg_result[], ref string arg_funcname, ref long arg_funcid, ref string arg_msg);
- //根据类型查询工作提醒,返回查询结果
- String ls_result
- String ls_Expressions,ls_ExpressionsMx,ls_sqlstr,sc,stor
- Long ll_ifsc,ll_ifstorage
- Int li_ifCusarea, li_ifOutrep, li_ifSpttype
- Int li_IfAutoopen, li_ifDftwin
- String ls_scList[],ls_storList[]
- Long cnt,cnt_stor,cnt_sc,cnt2,cnt_rslt = 1
- String ls_name_wrm,ls_name_sc[],ls_name_stor[]
- String ls_curname_sc,ls_curname_stor,ls_name_operate
- s_userworkremindrslt param
- Long arg_wrmtype
- SELECT WrmType,funcid,winname
- INTO :arg_wrmtype,:arg_funcid,:arg_funcname
- FROM oa_workreminddef
- Where wrmid = :arg_wrmid;
-
- IF arg_wrmtype = 0 THEN
- //前台工作提醒
- SELECT Expressions,
- ExpressionsMx,
- ifsc,ifstorage,
- ifcusarea,
- ifoutrep,
- ifspttype,
- ifautoopen,
- ifdftwin,
- wrmname,Operationstr
- INTO :ls_Expressions,
- :ls_ExpressionsMx,
- :ll_ifsc,:ll_ifstorage,
- :li_ifcusarea,
- :li_ifoutrep,
- :li_ifspttype,
- :li_ifautoopen,
- :li_ifdftwin,
- :ls_name_wrm,:ls_name_operate
- FROM oa_workremindDef
- Where wrmid = :arg_wrmid;
-
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = "获取提醒查询语句失败~n"+sqlca.SQLErrText
- RETURN FALSE
- END IF
-
- //考虑分部
- IF ll_ifsc = 1 THEN
- SELECT count(0)
- INTO :cnt_sc
- FROM u_scdef;
- IF cnt_sc <> 0 THEN
- DECLARE cr_sc CURSOR FOR
- SELECT scid,scname
- FROM u_scdef;
- OPEN cr_sc;
- FOR cnt = 1 TO cnt_sc
- FETCH cr_sc INTO :ls_scList[cnt],:ls_name_sc[cnt];
- NEXT
- CLOSE cr_sc;
- ls_Expressions+= " and scid=?"
- ELSE
- ls_Expressions+= " and -1=?"
- END IF
- ELSE
- cnt_sc = 0
- ls_Expressions+= " and -1=?"
- END IF
-
- //考虑仓库
- IF ll_ifstorage = 1 THEN
- SELECT count(0)
- INTO :cnt_stor
- FROM u_storage;
- IF cnt_stor <> 0 THEN
- DECLARE cr_stor CURSOR FOR
- SELECT storageid,storagename
- FROM u_storage;
- OPEN cr_stor;
- FOR cnt = 1 TO cnt_stor
- FETCH cr_stor INTO :ls_storList[cnt],:ls_name_stor[cnt];
- NEXT
- CLOSE cr_stor;
- ls_Expressions+= " and storageid=?"
- ELSE
- ls_Expressions+= " and -1=?"
- END IF
- ELSE
- cnt_stor = 0
- ls_Expressions+= " and -1=?"
- END IF
-
- //订单的业务员 u_saletask.assign_emp
- //发货单的业务员 u_outware.outrep
- //客户区域 ( u_cust.cusareaid in (:arg_cusareaid) or u_cust.cusareaid = 0 )
- //供应商类别 (u_spt.spttypeid in (:arg_spttypeid)
- String ls_areastr, ls_outrepstr, ls_spttypest
- String ls_outrep_arr[], ls_table_outrep
- Long i
- ls_areastr = sys_areastr
- ls_outrepstr = sys_user_outrepstr
- ls_spttypest = sys_user_spttypestr
- IF li_ifCusarea = 1 THEN
- IF sys_areastr <> '' THEN
- IF ls_areastr = '-1' THEN
- ls_Expressions+= " and u_cust.cusareaid in ( 0 ) "
- ELSEIF ls_areastr <> '0' THEN
- ls_Expressions+= " and u_cust.cusareaid in ( 0 " + ls_areastr + " 0 ) "
- END IF
- END IF
- END IF
- IF li_ifOutrep = 1 THEN
- IF ls_outrepstr <> '' THEN
- IF Pos(Trim(ls_Expressions), "u_outware") > 0 THEN
- ls_table_outrep = "u_outware.outrep"
- ELSEIF Pos(Trim(ls_Expressions), "u_saletask") > 0 THEN
- ls_table_outrep = "u_saletask.assign_emp"
- END IF
-
- IF ls_outrepstr = '-1' THEN
- ls_Expressions+= " and "+ls_table_outrep+" in ( '' ) "
- ELSEIF ls_outrepstr <> '0' THEN
- f_oa_workremind_splitstr(ls_outrepstr, ',', ls_outrep_arr)
- ls_outrepstr = ""
- FOR i = 1 TO UpperBound(ls_outrep_arr)
- IF ls_outrep_arr[i] <> '' THEN
- ls_outrepstr += "'"+ls_outrep_arr[i]+"',"
- END IF
- NEXT
- IF ls_outrepstr <> "" THEN
- ls_outrepstr = Left(ls_outrepstr, Len(ls_outrepstr) - 1)
- ls_Expressions+= " and "+ls_table_outrep+" in (" + ls_outrepstr + " ) "
- END IF
- END IF
- END IF
- END IF
- IF li_ifSpttype = 1 THEN
- IF ls_spttypest <> '' THEN
- IF ls_spttypest = '-1' THEN
- ls_Expressions+= " and u_spt.spttypeid in ( 0 ) "
- ELSEIF ls_spttypest <> '0' THEN
- ls_Expressions+= " and u_spt.spttypeid in ( 0 " + ls_spttypest + " 0 ) "
- END IF
- END IF
- END IF
-
-
- DECLARE cr DYNAMIC CURSOR FOR sqlsa;
- PREPARE sqlsa FROM :ls_Expressions;
- FOR cnt = 0 TO cnt_sc
- IF cnt_sc <> 0 THEN
- IF cnt = 0 THEN
- cnt = 1
- END IF
- ls_curname_sc = "["+ls_name_sc[cnt]+"]"
- sc = string(ls_scList[cnt])
- ELSE
- sc = "-1"
- ls_curname_sc = ""
- END IF
- FOR cnt2 = 0 TO cnt_stor
- IF cnt_stor <> 0 THEN
- IF cnt2 = 0 THEN
- cnt2 = 1
- END IF
- ls_curname_stor = "["+ls_name_stor[cnt2]+"]"
- stor = string(ls_storList[cnt2])
- ELSE
- stor = "-1"
- ls_curname_stor = ""
- END IF
- OPEN DYNAMIC cr USING :sc,:stor;
- FETCH cr INTO :ls_result;
- DO WHILE sqlca.SQLCode = 0
- arg_result[cnt_rslt].wrmid = arg_wrmid
- arg_result[cnt_rslt].QueryTime = DateTime(Today(),Now())
- arg_result[cnt_rslt].Result = ls_curname_sc+ls_curname_stor+ls_result+"待"+publ_operator+"您"+ls_name_operate
- arg_result[cnt_rslt].scid = Long(sc)
- arg_result[cnt_rslt].storageid = Long(stor)
- arg_result[cnt_rslt].wrmname = ls_name_wrm
- FETCH cr INTO :ls_result;
- LOOP
- CLOSE cr;
-
- NEXT
- NEXT
- // close cr;
- ELSE
- //后台工作提醒
- DECLARE cr1 CURSOR FOR
- SELECT QueryTime,Result,Scid,Storageid,WrmName
- FROM oa_workremindRslt
- Where wrmid = :arg_wrmid;
- OPEN cr1;
- cnt = 1
- FETCH cr INTO :param.QueryTime,:param.Result,:param.scid,:param.storageid,:param.wrmname;
-
- DO WHILE sqlca.SQLCode = 0
- Long a
- a = Len("*用户*")
- MessageBox('',String(a))
- param.Result = Replace(param.Result,Pos(param.Result,"*用户*"),a,publ_operator)
- arg_result[cnt].QueryTime = param.QueryTime
- arg_result[cnt].Result = param.Result
- arg_result[cnt].scid = param.scid
- arg_result[cnt].storageid = param.storageid
- arg_result[cnt].wrmname = param.wrmname
-
- cnt++
- FETCH cr1 INTO :param.QueryTime,:param.Result,:param.scid,:param.storageid,:param.wrmname;
- LOOP
- CLOSE cr1;
- END IF
- IF UpperBound(arg_result) = 0 THEN
- RETURN FALSE
- ELSE
- RETURN TRUE
- END IF
- end function
- PUBLIC FUNCTION Boolean uf_get_cansee (String arg_userid, REF String arg_cansee, REF String arg_msg);
- SELECT CanSeeWrm
- INTO :arg_CanSee
- FROM u_user
- Where UserID = :arg_userid;
-
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = "获取用户订阅提醒失败~n"+sqlca.SQLErrText
- RETURN FALSE
- END IF
- RETURN TRUE
- END FUNCTION
- PUBLIC FUNCTION Boolean uf_add_canseestr (String arg_remindstr, String arg_userid, REF String arg_msg);
- //保存或更新用户的可视工作提醒
- UPDATE u_user
- SET CanSeeWrm = :arg_remindStr
- Where UserID = :arg_userid;
-
- IF sqlca.SQLCode <> 0 THEN
- ROLLBACK;
- arg_msg = "保存用户可视工作提醒列表失败~n"+sqlca.SQLErrText
- RETURN FALSE
- ELSE
- COMMIT;
- END IF
- RETURN TRUE
- END FUNCTION
- public function boolean uf_chk_synax (ref string arg_sqlstr, ref string arg_msg);
- //检查SQL语句的合法性
- Long selectPlace,fromPlace,wherePlace
- String newstr
- selectPlace = Pos(lower(arg_sqlstr),"select ")
- fromPlace = Pos(lower(arg_sqlstr),"from ")
- wherePlace = Pos(lower(arg_sqlstr),"where ")
- IF selectPlace = 0 THEN
- arg_msg = "语句有误,缺少select部分"
- RETURN FALSE
- END IF
- IF fromPlace = 0 THEN
- arg_msg = "语句有误,缺少from部分"
- RETURN FALSE
- END IF
- IF wherePlace = 0 THEN
- newstr = arg_sqlstr
- arg_sqlstr+= " where 1=1"
- ELSE
- newstr = Mid(arg_sqlstr,1,wherePlace - 1)
- END IF
- //try
- PREPARE sqlsa FROM : newstr ;
- DESCRIBE sqlsa INTO SQLDA ;
- DECLARE my_cursor DYNAMIC CURSOR FOR sqlsa ;
- OPEN DYNAMIC my_cursor USING DESCRIPTOR SQLDA ;
- FETCH my_cursor USING DESCRIPTOR SQLDA ;
- //If SQLCA.Sqlcode = 100 Then
- // arg_msg="没有找到指定的数据! "
- // Close my_cursor;
- // Return false
- //End If
- IF SQLDA.NumOutputs > 1 THEN
- arg_msg = "SQL语句返回值个数不能大于1"
- CLOSE my_cursor;
- RETURN FALSE
- END IF
- IF SQLDA.OutParmType[1] = TypeString! THEN
- ELSEIF SQLDA.OutParmType[1] = typelong! THEN
- ELSEIF SQLDA.OutParmType[1] = TypeInteger! THEN
-
- ELSE
- arg_msg = "SQL语句返回值必须是字符串或者数字类型!"
- CLOSE my_cursor;
- RETURN FALSE
- END IF
- CLOSE my_cursor ;
- RETURN TRUE
- //catch (Transcation)
- // arg_msg=Transcation
- //end try
- end function
- public function boolean uf_chk_synaxmx (ref string arg_sqlstr, ref string arg_msg);
- //检查SQL明细语句的合法性
- Boolean rslt = TRUE
- Long selectPlace,fromPlace,wherePlace
- String newstr
- Int li_chk_NumOutput
- IF Trim(arg_sqlstr) = "" THEN
- arg_msg = "语句不能为空"
- RETURN FALSE
- END IF
- selectPlace = Pos(lower(arg_sqlstr),"select ")
- fromPlace = Pos(lower(arg_sqlstr),"from ")
- wherePlace = Pos(lower(arg_sqlstr),"where ")
- IF selectPlace = 0 THEN
- arg_msg = "语句有误,缺少select部分"
- RETURN FALSE
- END IF
- IF fromPlace = 0 THEN
- arg_msg = "语句有误,缺少from部分"
- RETURN FALSE
- END IF
- IF wherePlace = 0 THEN
- newstr = arg_sqlstr
- arg_sqlstr+= " where 1=1"
- ELSE
- newstr = Mid(arg_sqlstr,1,wherePlace - 1)
- END IF
- //try
- PREPARE sqlsa FROM : newstr ;
- DESCRIBE sqlsa INTO SQLDA ;
- DECLARE my_cursor DYNAMIC CURSOR FOR sqlsa ;
- OPEN DYNAMIC my_cursor USING DESCRIPTOR SQLDA ;
- FETCH my_cursor USING DESCRIPTOR SQLDA ;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = "SQL明细语句执行错误,"+sqlca.SQLErrText
- rslt = FALSE
- GOTO ext
- END IF
- IF SQLDA.NumOutputs > 5 THEN
- arg_msg = "SQL明细语句返回值个数不能大于5"
- rslt = FALSE
- GOTO ext
- END IF
- IF SQLDA.NumOutputs <= 0 THEN
- arg_msg = "SQL明细语句没有返回值或执行错误"
- rslt = FALSE
- GOTO ext
- END IF
- //
- //1) 单据编号:字符型,作为明细唯一标识,能根据此号双击打开对应的单据窗口;
- //2) 单据摘要:字符型,由用户自定义设置;
- //3) 相关数值:数值型,由用户自定义设置;
- //4) 相关日期:日期型,由用户自定义设置;
- //5) 相关人员:字符型,由用户自定义设置;
- li_chk_NumOutput = 1
- IF SQLDA.NumOutputs >= li_chk_NumOutput THEN
- IF SQLDA.OutParmType[li_chk_NumOutput] <> TypeString! THEN
- arg_msg = "SQL明细语句返回值"+String(li_chk_NumOutput)+", 必须是字符类型!"
- rslt = FALSE
- GOTO ext
- END IF
- END IF
- li_chk_NumOutput = 2
- IF SQLDA.NumOutputs >= li_chk_NumOutput THEN
- IF SQLDA.OutParmType[li_chk_NumOutput] <> TypeString! THEN
- arg_msg = "SQL明细语句返回值"+String(li_chk_NumOutput)+", 必须是字符类型!"
- rslt = FALSE
- GOTO ext
- END IF
- END IF
- li_chk_NumOutput = 3
- IF SQLDA.NumOutputs >= li_chk_NumOutput THEN
- IF SQLDA.OutParmType[li_chk_NumOutput] <> typelong! &
- AND SQLDA.OutParmType[li_chk_NumOutput] <> TypeInteger! &
- AND SQLDA.OutParmType[li_chk_NumOutput] <> TypeDecimal! THEN
- arg_msg = "SQL明细语句返回值"+String(li_chk_NumOutput)+", 必须是数值类型!"
- rslt = FALSE
- GOTO ext
- END IF
- END IF
- li_chk_NumOutput = 4
- IF SQLDA.NumOutputs >= li_chk_NumOutput THEN
- IF SQLDA.OutParmType[li_chk_NumOutput] <> TypeDateTime! &
- AND SQLDA.OutParmType[li_chk_NumOutput] <> TypeDate! THEN
- arg_msg = "SQL明细语句返回值"+String(li_chk_NumOutput)+", 必须是日期类型!"
- rslt = FALSE
- GOTO ext
- END IF
- END IF
- li_chk_NumOutput = 5
- IF SQLDA.NumOutputs >= li_chk_NumOutput THEN
- IF SQLDA.OutParmType[li_chk_NumOutput] <> TypeString! THEN
- arg_msg = "SQL明细语句返回值"+String(li_chk_NumOutput)+", 必须是字符类型!"
- rslt = FALSE
- GOTO ext
- END IF
- END IF
- ext:
- CLOSE my_cursor ;
- RETURN rslt
- //catch (Transcation)
- // arg_msg=Transcation
- //end try
- end function
- public function boolean uf_get_userworkremind_mx (long arg_wrmid, ref string arg_result, ref string arg_msg);//根据类型查询工作提醒,返回查询结果
- String ls_result
- String ls_ExpressionsMx
- Long ll_ifsc,ll_ifstorage
- Int li_ifCusarea, li_ifOutrep, li_ifSpttype
- Int li_IfAutoopen, li_ifDftwin
- Long cnt,cnt_stor,cnt_sc,cnt2,cnt_rslt = 1
- //前台工作提醒
- SELECT
- ExpressionsMx,
- ifsc,ifstorage,
- ifcusarea,
- ifoutrep,
- ifspttype
- INTO
- :ls_ExpressionsMx,
- :ll_ifsc,:ll_ifstorage,
- :li_ifCusarea,
- :li_ifOutrep,
- :li_ifSpttype
- FROM oa_workremindDef
- Where wrmid = :arg_wrmid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = "获取提醒查询语句失败~n"+sqlca.SQLErrText
- RETURN FALSE
- END IF
- IF NOT Pos(Lower(ls_ExpressionsMx), 'where ') > 0 THEN
- ls_ExpressionsMx += " where 1 = 1 "
- END IF
- //订单的业务员 u_saletask.assign_emp
- //发货单的业务员 u_outware.outrep
- //客户区域 ( u_cust.cusareaid in (:arg_cusareaid) or u_cust.cusareaid = 0 )
- //供应商类别 (u_spt.spttypeid in (:arg_spttypeid)
- String ls_scstr, ls_storagestr
- String ls_areastr, ls_outrepstr, ls_spttypest
- String ls_outrep_arr[], ls_table_outrep
- Long i
- ls_scstr = sys_user_scstr
- ls_storagestr = sys_user_storagestr
- ls_areastr = sys_areastr
- ls_outrepstr = sys_user_outrepstr
- ls_spttypest = sys_user_spttypestr
- IF ll_ifsc = 1 THEN
- IF ls_scstr <> '' THEN
- IF ls_scstr = '-1' THEN
- ls_ExpressionsMx+= " and scid in ( 0 ) "
- ELSEIF ls_areastr <> '0' THEN
- ls_ExpressionsMx+= " and scid in ( 0 " + ls_scstr + " 0 ) "
- END IF
- END IF
- END IF
- IF ll_ifstorage = 1 THEN
- IF ls_storagestr <> '' THEN
- IF ls_storagestr = '-1' THEN
- ls_ExpressionsMx+= " and storageid in ( 0 ) "
- ELSEIF ls_storagestr <> '0' THEN
- ls_ExpressionsMx+= " and storageid in ( 0 " + ls_storagestr + " 0 ) "
- END IF
- END IF
- END IF
- IF li_ifCusarea = 1 THEN
- IF ls_areastr <> '' THEN
- IF ls_areastr = '-1' THEN
- ls_ExpressionsMx+= " and u_cust.cusareaid in ( 0 ) "
- ELSEIF ls_areastr <> '0' THEN
- ls_ExpressionsMx+= " and u_cust.cusareaid in ( 0 " + ls_areastr + " 0 ) "
- END IF
- END IF
- END IF
- IF li_ifOutrep = 1 THEN
- IF ls_outrepstr <> '' THEN
- IF Pos(Trim(ls_ExpressionsMx), "u_outware") > 0 THEN
- ls_table_outrep = "u_outware.outrep"
- ELSEIF Pos(Trim(ls_ExpressionsMx), "u_saletask") > 0 THEN
- ls_table_outrep = "u_saletask.assign_emp"
- END IF
-
- IF ls_outrepstr = '-1' THEN
- ls_ExpressionsMx+= " and "+ls_table_outrep+" in ( '' ) "
- ELSEIF ls_outrepstr <> '0' THEN
- f_oa_workremind_splitstr(ls_outrepstr, ',', ls_outrep_arr)
- ls_outrepstr = ""
- FOR i = 1 TO UpperBound(ls_outrep_arr)
- IF ls_outrep_arr[i] <> '' THEN
- ls_outrepstr += "'"+ls_outrep_arr[i]+"',"
- END IF
- NEXT
- IF ls_outrepstr <> "" THEN
- ls_outrepstr = Left(ls_outrepstr, Len(ls_outrepstr) - 1)
- ls_ExpressionsMx+= " and "+ls_table_outrep+" in (" + ls_outrepstr + " ) "
- END IF
- END IF
- END IF
- END IF
- IF li_ifSpttype = 1 THEN
- IF ls_spttypest <> '' THEN
- IF ls_spttypest = '-1' THEN
- ls_ExpressionsMx+= " and u_spt.spttypeid in ( 0 ) "
- ELSEIF ls_spttypest <> '0' THEN
- ls_ExpressionsMx+= " and u_spt.spttypeid in ( 0 " + ls_spttypest + " 0 ) "
- END IF
- END IF
- END IF
- arg_result = ls_ExpressionsMx
- RETURN TRUE
- end function
- on uo_oa_workremind.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_oa_workremind.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
|