f_open_check.srf 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. $PBExportHeader$f_open_check.srf
  2. global type f_open_check from function_object
  3. end type
  4. forward prototypes
  5. global function integer f_open_check (long arg_scid, string arg_code)
  6. global function integer f_open_check (long arg_scid, string arg_code, ref string arg_msg)
  7. end prototypes
  8. global function integer f_open_check (long arg_scid, string arg_code);//arg_w_name 可为空
  9. s_edit_index_tran s_tran
  10. s_tran.work_mode = 0
  11. s_tran.arg_pkid = 0
  12. s_tran.arg_string_code = arg_code
  13. s_tran.c_long = arg_scid
  14. s_tran.d_long = 2
  15. s_tran.if_retrieve_all = local_retrieve_all
  16. String ls_scname,ls_sccode
  17. String ls_space
  18. Int li_spacenum
  19. String ls_d_string
  20. Boolean if_f
  21. IF arg_scid = -1 THEN
  22. Long i, ll_scid
  23. String ls_code, ls_char
  24. ls_code = Reverse (arg_code)
  25. FOR i = 1 To Len(ls_code)
  26. IF Not IsNumber(Mid(ls_code, i, 1)) THEN
  27. EXIT
  28. END IF
  29. NEXT
  30. ls_sccode = Reverse (Mid(ls_code, i, 2))
  31. SELECT scid
  32. INTO :ll_scid
  33. FROM u_scdef
  34. Where sccode = :ls_sccode;
  35. IF sqlca.SQLCode <> 0 THEN
  36. ll_scid = 0
  37. END IF
  38. arg_scid = ll_scid
  39. END IF
  40. SELECT scname,sccode
  41. INTO :ls_scname,:ls_sccode
  42. FROM u_scdef
  43. Where scid = :arg_scid;
  44. IF sqlca.SQLCode <> 0 Or IsNull(ls_scname) THEN ls_scname = ''
  45. li_spacenum = 50 - Len(Trim(ls_scname)) - 2 - Len(String(arg_scid))
  46. ls_space = Fill(' ',li_spacenum)
  47. ls_d_string = ls_scname+ls_space+'['+String(arg_scid)+']'
  48. s_tran.d_string = ls_d_string
  49. String ls_billcode,ls_win1,ls_win2
  50. ls_billcode = Mid(Trim(arg_code),Len(ls_sccode) + 1,2)
  51. SELECT win1,win2
  52. INTO :ls_win1,:ls_win2
  53. FROM u_billcode
  54. Where firststr = :ls_billcode;
  55. IF sqlca.SQLCode <> 0 THEN
  56. if_f = False
  57. ELSE
  58. if_f = True
  59. END IF
  60. IF Not if_f THEN
  61. SELECT win1,win2
  62. INTO :ls_win1,:ls_win2
  63. FROM u_billcode
  64. Where oldfirststr = :ls_billcode;
  65. IF sqlca.SQLCode <> 0 THEN
  66. if_f = False
  67. ELSE
  68. if_f = True
  69. END IF
  70. END IF
  71. IF if_f THEN
  72. window openwin
  73. OpenWithParm(openwin,s_tran,ls_win1)
  74. END IF
  75. RETURN 1
  76. end function
  77. global function integer f_open_check (long arg_scid, string arg_code, ref string arg_msg);//XS 销售发货 104
  78. //Jc 其他进仓 304
  79. //LL 领料出仓 208
  80. //CG 采购收货 403
  81. //CP 生产进仓 207
  82. LONG RSLT =1
  83. string code,ls_billstyle
  84. Long ll_funcid,arg_mainid
  85. Boolean if_power_ind = False
  86. String ls_funcid_str
  87. IF arg_code = '' THEN RETURN 1
  88. CODE = LEFT(arg_code,2)
  89. CHOOSE CASE CODE
  90. CASE 'XS'
  91. arg_mainid = 104
  92. CASE 'JC'
  93. arg_mainid = 304
  94. CASE 'LL'
  95. arg_mainid = 208
  96. CASE 'CG'
  97. arg_mainid = 403
  98. CASE 'CP'
  99. arg_mainid = 207
  100. CASE ELSE
  101. RETURN 1
  102. END CHOOSE
  103. IF Pos(s_sys_win_open[arg_mainid].funcid,',') > 0 THEN
  104. ls_funcid_str = s_sys_win_open[arg_mainid].funcid
  105. IF Left(ls_funcid_str, 1) <> ',' THEN ls_funcid_str = ','+ls_funcid_str
  106. IF right(ls_funcid_str, 1) <> ',' THEN ls_funcid_str = ls_funcid_str+','
  107. ls_funcid_str = Mid(ls_funcid_str,Pos(ls_funcid_str,',') + 1)
  108. DO WHILE ls_funcid_str <> ''
  109. ll_funcid = Long(Left(ls_funcid_str,Pos(ls_funcid_str,',') - 1))
  110. IF f_power_ind(ll_funcid) THEN
  111. if_power_ind = True
  112. EXIT
  113. END IF
  114. ls_funcid_str = Mid(ls_funcid_str,Pos(ls_funcid_str,',') + 1)
  115. LOOP
  116. IF Not if_power_ind THEN
  117. RSLT =0
  118. arg_msg = '窗口:'+s_sys_win_open[arg_mainid].Title+',你没有使用权限'
  119. GOTO EXT
  120. END IF
  121. END IF
  122. EXT:
  123. RETURN RSLT
  124. end function