f_get_empson.srf 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. $PBExportHeader$f_get_empson.srf
  2. global type f_get_empson from function_object
  3. end type
  4. forward prototypes
  5. global function string f_get_empson (s_pzwin_open arg_s_open)
  6. global subroutine f_get_empson (long arg_pempid, ref long arg_empid_arr[])
  7. end prototypes
  8. global function string f_get_empson (s_pzwin_open arg_s_open);String rslt_pz
  9. String ls_col_name
  10. Int li_flag_status,li_flag_woodcode,li_flag_pcode
  11. Long ll_statustype,ll_woodcodetype,ll_pcodetype
  12. IF arg_s_open.arg_mtrlid = 0 THEN
  13. rslt_pz = ''
  14. GOTO ext
  15. END IF
  16. ls_col_name = Lower(arg_s_open.arg_col)
  17. IF Pos(ls_col_name,'status') > 0 THEN
  18. SELECT statusflag,statustype
  19. INTO :li_flag_status,:ll_statustype
  20. FROM u_mtrldef
  21. Where mtrlid = :arg_s_open.arg_mtrlid;
  22. IF sqlca.SQLCode <> 0 THEN
  23. rslt_pz = ''
  24. GOTO ext
  25. END IF
  26. CHOOSE CASE li_flag_status
  27. CASE 0
  28. arg_s_open.arg_mtrlid = 0
  29. arg_s_open.arg_dwname = 'dw_pz_ch_color'
  30. OpenWithParm(w_pz_ch,arg_s_open)
  31. rslt_pz = Message.StringParm
  32. CASE 1
  33. arg_s_open.arg_mtrlid = ll_statustype
  34. arg_s_open.arg_dwname = 'dw_pz_ch_pztype'
  35. OpenWithParm(w_pz_ch,arg_s_open)
  36. rslt_pz = Message.StringParm
  37. CASE 2
  38. OpenWithParm(w_configure_ch,arg_s_open)
  39. rslt_pz = Message.StringParm
  40. CASE 3
  41. rslt_pz = ''
  42. GOTO ext
  43. CASE 4
  44. arg_s_open.arg_id = arg_s_open.arg_mtrlid
  45. arg_s_open.arg_mtrlid = ll_statustype
  46. arg_s_open.arg_editmode = true
  47. OpenWithParm(w_configure_pzmx_ch,arg_s_open)
  48. rslt_pz = Message.StringParm
  49. CASE ELSE
  50. rslt_pz = ''
  51. GOTO ext
  52. END CHOOSE
  53. ELSEIF Pos(ls_col_name,'woodcode') > 0 THEN
  54. SELECT woodcodeflag,woodcodetype
  55. INTO :li_flag_woodcode,:ll_woodcodetype
  56. FROM u_mtrldef
  57. Where mtrlid = :arg_s_open.arg_mtrlid;
  58. IF sqlca.SQLCode <> 0 THEN
  59. rslt_pz = ''
  60. GOTO ext
  61. END IF
  62. CHOOSE CASE li_flag_woodcode
  63. CASE 0
  64. arg_s_open.arg_mtrlid = 0
  65. arg_s_open.arg_dwname = 'dw_pz_ch_woodcode'
  66. OpenWithParm(w_pz_ch,arg_s_open)
  67. rslt_pz = Message.StringParm
  68. CASE 1
  69. arg_s_open.arg_mtrlid = ll_woodcodetype
  70. arg_s_open.arg_dwname = 'dw_pz_ch_pztype'
  71. OpenWithParm(w_pz_ch,arg_s_open)
  72. rslt_pz = Message.StringParm
  73. CASE 4
  74. arg_s_open.arg_id = arg_s_open.arg_mtrlid
  75. arg_s_open.arg_mtrlid = ll_woodcodetype
  76. arg_s_open.arg_editmode = true
  77. OpenWithParm(w_configure_pzmx_ch,arg_s_open)
  78. rslt_pz = Message.StringParm
  79. CASE ELSE
  80. rslt_pz = ''
  81. GOTO ext
  82. END CHOOSE
  83. ELSEIF Pos(ls_col_name,'pcode') > 0 THEN
  84. SELECT pcodeflag,pcodetype
  85. INTO :li_flag_pcode,:ll_pcodetype
  86. FROM u_mtrldef
  87. Where mtrlid = :arg_s_open.arg_mtrlid;
  88. IF sqlca.SQLCode <> 0 THEN
  89. rslt_pz = ''
  90. GOTO ext
  91. END IF
  92. CHOOSE CASE li_flag_pcode
  93. CASE 0
  94. arg_s_open.arg_mtrlid = 0
  95. arg_s_open.arg_dwname = 'dw_pz_ch_pcode'
  96. OpenWithParm(w_pz_ch,arg_s_open)
  97. rslt_pz = Message.StringParm
  98. CASE 1
  99. arg_s_open.arg_mtrlid = ll_pcodetype
  100. arg_s_open.arg_dwname = 'dw_pz_ch_pztype'
  101. OpenWithParm(w_pz_ch,arg_s_open)
  102. rslt_pz = Message.StringParm
  103. CASE 4
  104. arg_s_open.arg_id = arg_s_open.arg_mtrlid
  105. arg_s_open.arg_mtrlid = ll_pcodetype
  106. arg_s_open.arg_editmode = true
  107. OpenWithParm(w_configure_pzmx_ch,arg_s_open)
  108. rslt_pz = Message.StringParm
  109. CASE ELSE
  110. rslt_pz = ''
  111. GOTO ext
  112. END CHOOSE
  113. ELSE
  114. rslt_pz = ''
  115. GOTO ext
  116. END IF
  117. ext:
  118. RETURN rslt_pz
  119. end function
  120. global subroutine f_get_empson (long arg_pempid, ref long arg_empid_arr[]);Long ll_empid, ll_empid_arr[]
  121. Long cnt, i
  122. string list
  123. DECLARE find_empson CURSOR FOR
  124. SELECT empid
  125. FROM u_user
  126. Where pempid = :arg_pempid
  127. and empid <> 0;
  128. OPEN find_empson;
  129. FETCH find_empson Into :ll_empid ;
  130. DO WHILE sqlca.SQLCode = 0
  131. cnt = UpperBound(arg_empid_arr)
  132. arg_empid_arr[cnt+1] = ll_empid
  133. i++
  134. ll_empid_arr[i] = ll_empid
  135. FETCH find_empson Into :ll_empid ;
  136. LOOP
  137. CLOSE find_empson;
  138. FOR i = 1 To UpperBound(ll_empid_arr)
  139. f_get_empson(ll_empid_arr[i], arg_empid_arr)
  140. NEXT
  141. end subroutine