uo_oa_emp_workplan.sru 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. $PBExportHeader$uo_oa_emp_workplan.sru
  2. forward
  3. global type uo_oa_emp_workplan from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_oa_emp_workplan from nonvisualobject
  7. end type
  8. global uo_oa_emp_workplan uo_oa_emp_workplan
  9. type variables
  10. Long uo_planid
  11. end variables
  12. forward prototypes
  13. public function integer uof_add_workplan (s_oa_emp_workplan arg_workplan, ref string arg_msg, boolean arg_ifcommit)
  14. public function integer uof_del_workplan (long arg_planid, ref string arg_msg, boolean arg_ifcommit)
  15. end prototypes
  16. public function integer uof_add_workplan (s_oa_emp_workplan arg_workplan, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  17. Long ls_newid
  18. Long cnt
  19. Long ll_planrule_ori
  20. IF IsNull(arg_workplan.planid) THEN arg_workplan.planid = 0
  21. IF IsNull(arg_workplan.empid) THEN arg_workplan.empid = 0
  22. IF IsNull(arg_workplan.planrule) THEN arg_workplan.planrule = 0
  23. IF IsNull(arg_workplan.relplanid) THEN arg_workplan.relplanid = 0
  24. IF IsNull(arg_workplan.topic) THEN arg_workplan.topic = ''
  25. IF IsNull(arg_workplan.Address) THEN arg_workplan.Address = ''
  26. IF IsNull(arg_workplan.content) THEN arg_workplan.content = ''
  27. SELECT count(*)
  28. INTO :cnt
  29. FROM u_user
  30. Where empid = :arg_workplan.empid;
  31. IF sqlca.SQLCode <> 0 THEN
  32. arg_msg = '查询用户资料失败,原因:'+sqlca.SQLErrText
  33. rslt = 0
  34. GOTO ext
  35. END IF
  36. IF cnt = 0 THEN
  37. arg_msg = '用户不存在,请检查'
  38. rslt = 0
  39. GOTO ext
  40. END IF
  41. IF arg_workplan.topic = '' THEN
  42. arg_msg = '请输入主题'
  43. rslt = 0
  44. GOTO ext
  45. END IF
  46. IF arg_workplan.stime > arg_workplan.etime THEN
  47. arg_msg = '开始时间不能大于结束时间,请检查'
  48. rslt = 0
  49. GOTO ext
  50. END IF
  51. IF arg_workplan.planrule > 0 THEN
  52. IF DaysAfter ( Date(arg_workplan.stime), Date(arg_workplan.etime) ) > 0 THEN
  53. arg_msg = '规律出现的计划日期范围不能超过一天'
  54. rslt = 0
  55. GOTO ext
  56. END IF
  57. END IF
  58. IF arg_workplan.planid = 0 THEN
  59. ls_newid = f_sys_scidentity(0,"oa_emp_workplan","planid",arg_msg,TRUE,id_sqlca)
  60. IF ls_newid <= 0 THEN
  61. rslt = 0
  62. GOTO ext
  63. END IF
  64. INSERT INTO oa_emp_workplan
  65. (planid,
  66. empid,
  67. stime,
  68. etime,
  69. topic,
  70. address,
  71. content,
  72. opdate,
  73. planrule,
  74. kind,
  75. perdaynum)
  76. VALUES(
  77. :ls_newid,
  78. :arg_workplan.empid,
  79. :arg_workplan.stime,
  80. :arg_workplan.etime,
  81. :arg_workplan.topic,
  82. :arg_workplan.address,
  83. :arg_workplan.content,
  84. getdate(),
  85. :arg_workplan.planrule,
  86. 0,
  87. :arg_workplan.perdaynum);
  88. IF sqlca.SQLCode <> 0 THEN
  89. arg_msg = '增加工作计划失败,原因:'+sqlca.SQLErrText
  90. rslt = 0
  91. GOTO ext
  92. END IF
  93. uo_planid = ls_newid
  94. ELSE
  95. SELECT planrule INTO :ll_planrule_ori
  96. FROM oa_emp_workplan
  97. Where planid = :arg_workplan.planid;
  98. IF sqlca.SQLCode <> 0 THEN
  99. arg_msg = '查询工作计划原出现规律失败,原因:'+sqlca.SQLErrText
  100. rslt = 0
  101. GOTO ext
  102. END IF
  103. UPDATE oa_emp_workplan
  104. SET stime = :arg_workplan.stime,
  105. etime = :arg_workplan.etime,
  106. topic = :arg_workplan.topic,
  107. address = :arg_workplan.address,
  108. content = :arg_workplan.content,
  109. planrule = :arg_workplan.planrule,
  110. moddate = getdate(),
  111. perdaynum = :arg_workplan.perdaynum
  112. Where planid = :arg_workplan.planid
  113. and kind = 0;
  114. IF sqlca.SQLCode <> 0 THEN
  115. arg_msg = '更新工作计划失败,原因:'+sqlca.SQLErrText
  116. rslt = 0
  117. GOTO ext
  118. END IF
  119. IF ll_planrule_ori > 0 THEN
  120. DELETE FROM oa_emp_workplan
  121. Where relplanid = :arg_workplan.planid
  122. and kind = 0 ;
  123. IF sqlca.SQLCode <> 0 THEN
  124. arg_msg = '删除相关生成工作计划失败,原因:'+sqlca.SQLErrText
  125. rslt = 0
  126. GOTO ext
  127. END IF
  128. END IF
  129. uo_planid = arg_workplan.planid
  130. END IF
  131. ext:
  132. IF rslt = 0 THEN
  133. ROLLBACK;
  134. ELSEIF rslt = 1 AND arg_ifcommit THEN
  135. COMMIT;
  136. END IF
  137. RETURN rslt
  138. end function
  139. public function integer uof_del_workplan (long arg_planid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  140. IF IsNull(arg_planid) THEN arg_planid = 0
  141. DELETE FROM oa_emp_workplan
  142. Where relplanid = :arg_planid
  143. and kind = 0 ;
  144. IF sqlca.SQLCode <> 0 THEN
  145. arg_msg = '删除相关生成工作计划失败,原因:'+sqlca.SQLErrText
  146. rslt = 0
  147. GOTO ext
  148. END IF
  149. DELETE FROM oa_emp_workplan
  150. Where planid = :arg_planid
  151. and kind = 0;
  152. IF sqlca.SQLCode <> 0 THEN
  153. arg_msg = '删除工作计划失败,原因:'+sqlca.SQLErrText
  154. rslt = 0
  155. GOTO ext
  156. END IF
  157. ext:
  158. IF rslt = 0 THEN
  159. ROLLBACK;
  160. ELSEIF rslt = 1 AND arg_ifcommit THEN
  161. COMMIT;
  162. END IF
  163. RETURN rslt
  164. end function
  165. on uo_oa_emp_workplan.create
  166. call super::create
  167. TriggerEvent( this, "constructor" )
  168. end on
  169. on uo_oa_emp_workplan.destroy
  170. TriggerEvent( this, "destructor" )
  171. call super::destroy
  172. end on