uo_rp.sru 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342
  1. $PBExportHeader$uo_rp.sru
  2. forward
  3. global type uo_rp from nonvisualobject
  4. end type
  5. type s_rp from structure within uo_rp
  6. end type
  7. end forward
  8. type s_rp from structure
  9. long printid
  10. string col1name0
  11. decimal { 4 } col1name1
  12. decimal { 4 } col1name2
  13. string col2name0
  14. decimal { 4 } col2name1
  15. decimal { 4 } col2name2
  16. end type
  17. global type uo_rp from nonvisualobject
  18. end type
  19. global uo_rp uo_rp
  20. type variables
  21. private:
  22. s_rp ss_rp[]
  23. public:
  24. Long it_MXBT = 0
  25. Long billid=0
  26. Long rpid=0
  27. string billname=''
  28. datetime sdate
  29. datetime edate
  30. end variables
  31. forward prototypes
  32. public function integer save (ref string arg_msg)
  33. public subroutine p_reset ()
  34. public function integer acceptmx (long arg_printid, string arg_col1name0, decimal arg_col1name1, decimal arg_col1name2, string arg_col2name0, decimal arg_col2name1, decimal arg_col2name2, ref string arg_msg)
  35. public function integer f_delete (long arg_billid, ref string arg_msg)
  36. end prototypes
  37. public function integer save (ref string arg_msg);Integer rslt = 1,cnt = 0,i,j,k
  38. DateTime server_dt
  39. Long ll_cpid,ll_ppid,ll_cusid,ll_crid,ll_billid
  40. String ls_sccode
  41. //////////////////////////////////////////////////// //开始区分:新建/更新 处理
  42. IF billid = 0 THEN //新建
  43. ll_billid = f_sys_scidentity(0,"u_sp_rp","billid",arG_MSG,True,sqlca) //数据commit事务)
  44. IF ll_billid <= 0 THEN
  45. rslt = 0
  46. GOTO ext
  47. END IF
  48. billid = ll_billid //更新客户id
  49. INSERT INTO u_sp_rp
  50. ( billid,
  51. rpid ,
  52. billname,
  53. sdate,
  54. edate
  55. )
  56. VALUES (
  57. :billid,
  58. :rpid ,
  59. :billname,
  60. :sdate,
  61. :edate
  62. ) Using sqlca;
  63. IF sqlca.SQLCode <> 0 THEN
  64. rslt = 0
  65. arG_MSG = "因网络或其它原因导致插入单据操作失败"+"~n"+sqlca.SQLErrText
  66. ROLLBACK Using sqlca;
  67. GOTO ext
  68. END IF
  69. FOR j = 1 To it_mxbt
  70. INSERT INTO u_sp_rp_mx
  71. ( billid,
  72. printid,
  73. col1name0,
  74. col1name1,
  75. col1name2,
  76. Col2name0,
  77. Col2name1,
  78. Col2name2
  79. )
  80. VALUES (
  81. :billid,
  82. :ss_rp[j].printid,
  83. :ss_rp[j].col1name0,
  84. :ss_rp[j].col1name1,
  85. :ss_rp[j].col1name2,
  86. :ss_rp[j].Col2name0,
  87. :ss_rp[j].Col2name1,
  88. :ss_rp[j].Col2name2
  89. ) Using sqlca;
  90. IF sqlca.SQLCode <> 0 THEN
  91. rslt = 0
  92. arG_MSG = "因网络或其它原因导致插入单据操作失败"+"~n"+sqlca.SQLErrText
  93. ROLLBACK Using sqlca;
  94. GOTO ext
  95. END IF
  96. NEXT
  97. ELSE //rpid<>0
  98. UPDATE u_sp_rp
  99. SET
  100. billname = :billname,
  101. sdate = :sdate,
  102. edate = :edate
  103. WHERE u_sp_rp.billid = :billid
  104. Using sqlca;
  105. IF sqlca.SQLCode <> 0 THEN
  106. rslt = 0
  107. arG_MSG = "因网络或其它原因导致插入单据操作失败"+"~n"+sqlca.SQLErrText
  108. ROLLBACK Using sqlca;
  109. GOTO ext
  110. END IF
  111. DELETE From u_sp_rp_mx Where u_sp_rp_mx.billid = :billid Using sqlca;
  112. IF sqlca.SQLCode <> 0 THEN
  113. rslt = 0
  114. arG_MSG = "因网络或其它原因导致删除明细费用操作失败"+"~n"+sqlca.SQLErrText
  115. ROLLBACK Using sqlca;
  116. GOTO ext
  117. END IF
  118. FOR j = 1 To it_mxbt
  119. INSERT INTO u_sp_rp_mx
  120. ( billid,
  121. printid,
  122. col1name0,
  123. col1name1,
  124. col1name2,
  125. Col2name0,
  126. Col2name1,
  127. Col2name2
  128. )
  129. VALUES (
  130. :billid,
  131. :ss_rp[j].printid,
  132. :ss_rp[j].col1name0,
  133. :ss_rp[j].col1name1,
  134. :ss_rp[j].col1name2,
  135. :ss_rp[j].Col2name0,
  136. :ss_rp[j].Col2name1,
  137. :ss_rp[j].Col2name2
  138. ) Using sqlca;
  139. IF sqlca.SQLCode <> 0 THEN
  140. rslt = 0
  141. arG_MSG = "因网络或其它原因导致插入单据操作失败"+"~n"+sqlca.SQLErrText
  142. ROLLBACK Using sqlca;
  143. GOTO ext
  144. END IF
  145. next
  146. END IF
  147. ext:
  148. IF rslt = 0 THEN
  149. p_reset()
  150. ROLLBACK Using sqlca;
  151. ELSEIF rslt = 1 THEN
  152. p_reset()
  153. COMMIT Using sqlca;
  154. END IF
  155. Return(rslt)
  156. end function
  157. public subroutine p_reset ();it_MXBT = 0
  158. billid=0
  159. rpid=0
  160. end subroutine
  161. public function integer acceptmx (long arg_printid, string arg_col1name0, decimal arg_col1name1, decimal arg_col1name2, string arg_col2name0, decimal arg_col2name1, decimal arg_col2name2, ref string arg_msg);Int rslt = 1
  162. Long cnt = 0,LS_i,ls_j
  163. //清除空值
  164. IF IsNull(arg_printid) THEN arg_printid =0
  165. IF IsNull(arg_col1name0) THEN arg_col1name0 =''
  166. IF IsNull(arg_col1name1) THEN arg_col1name1= 0
  167. IF IsNull(arg_col1name2) THEN arg_col1name2 = 0
  168. IF IsNull(arg_col2name0) THEN arg_col2name0 =''
  169. IF IsNull(arg_col2name1) THEN arg_col2name1= 0
  170. IF IsNull(arg_col2name2) THEN arg_col2name2 = 0
  171. IF IsNull(arg_msg) THEN arg_msg =''
  172. if arg_printid=0 then
  173. arg_msg="行printid错误"
  174. rslt = 0
  175. goto ext
  176. end if
  177. //写入内容
  178. it_mxbt++
  179. ss_rp[it_mxbt].printid = arg_printid
  180. ss_rp[it_mxbt].col1name0 = arg_col1name0
  181. ss_rp[it_mxbt].col1name1 = arg_col1name1
  182. ss_rp[it_mxbt].col1name2 = arg_col1name2
  183. ss_rp[it_mxbt].col2name0 = arg_col2name0
  184. ss_rp[it_mxbt].col2name1 = arg_col2name1
  185. ss_rp[it_mxbt].col2name2 = arg_col2name2
  186. ext:
  187. if rslt=0 then p_reset()
  188. return rslt
  189. end function
  190. public function integer f_delete (long arg_billid, ref string arg_msg);Integer rslt = 1,cnt = 0,i,j,k
  191. DateTime server_dt
  192. Long ll_cpid,ll_ppid,ll_cusid,ll_crid
  193. String ls_sccode
  194. if arg_billid=0 then
  195. rslt = 0
  196. arg_msg = "错误的单据ID,billid"
  197. GOTO ext
  198. end if
  199. DELETE From u_sp_rp Where u_sp_rp.billid = :arg_billid
  200. Using sqlca;
  201. IF sqlca.SQLCode <> 0 THEN
  202. rslt = 0
  203. arg_msg = "因网络或其它原因导致删除单据操作失败"+"~n"+sqlca.SQLErrText
  204. ROLLBACK Using sqlca;
  205. GOTO ext
  206. END IF
  207. DELETE From u_sp_rp_mx Where u_sp_rp_mx.billid = :arg_billid
  208. Using sqlca;
  209. IF sqlca.SQLCode <> 0 THEN
  210. rslt = 0
  211. arg_msg = "因网络或其它原因导致删除单据操作失败"+"~n"+sqlca.SQLErrText
  212. ROLLBACK Using sqlca;
  213. GOTO ext
  214. END IF
  215. ext:
  216. IF rslt = 0 THEN
  217. p_reset()
  218. ROLLBACK Using sqlca;
  219. ELSEIF rslt = 1 THEN
  220. COMMIT Using sqlca;
  221. END IF
  222. Return(rslt)
  223. end function
  224. on uo_rp.create
  225. call super::create
  226. TriggerEvent( this, "constructor" )
  227. end on
  228. on uo_rp.destroy
  229. TriggerEvent( this, "destructor" )
  230. call super::destroy
  231. end on