$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