uo_mtrl_structure.sru 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307
  1. $PBExportHeader$uo_mtrl_structure.sru
  2. forward
  3. global type uo_mtrl_structure from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_mtrl_structure from nonvisualobject
  7. end type
  8. global uo_mtrl_structure uo_mtrl_structure
  9. type variables
  10. long ul_mtrlid
  11. end variables
  12. forward prototypes
  13. public function integer uof_chk_rand (long arg_mtrlid)
  14. public function integer uof_prdpf_add (long arg_mtrlid, string arg_pfcode, s_structuremx arg_mx[], boolean arg_ifcommit, ref string arg_msg)
  15. public function integer uof_prdpf_del (long arg_mtrlid, string arg_pfcode, boolean arg_ifcommit, ref string arg_msg)
  16. public function integer uof_gy_del (long arg_mtrlid, string arg_pfcode, boolean arg_ifcommit, ref string arg_msg)
  17. public function integer uof_gy_add (long arg_mtrlid, string arg_pfcode, string arg_pf_gy, boolean arg_ifcommit, ref string arg_msg)
  18. public function integer uof_update_sopdate (long arg_mtrlid, boolean arg_ifcommit, ref string arg_msg)
  19. public function long uof_get_maxprintid (long arg_mtrlid, string arg_pfcode)
  20. public function integer uof_chk_prdpf (long arg_mtrlid, string arg_pfcode, string arg_pfgroup, long arg_sonmtrlid)
  21. end prototypes
  22. public function integer uof_chk_rand (long arg_mtrlid);//==============================================================================
  23. // 函数: uo_mtrl_structore::uof_chk_rand()
  24. //------------------------------------------------------------------------------
  25. // 描述: 检查环, 需先定义ul_mtrlid
  26. // ul_mtrlid = XXX
  27. // uof_chk_rand(YYY)
  28. //------------------------------------------------------------------------------
  29. // 参数:
  30. // value long arg_mtrlid
  31. //------------------------------------------------------------------------------
  32. // 返回值: integer
  33. //------------------------------------------------------------------------------
  34. // 作者: HD Lee 日期: 2011.11.06
  35. //------------------------------------------------------------------------------
  36. // 修改历史:
  37. //
  38. //==============================================================================
  39. Int rslt = 1
  40. Long count
  41. Long mtrlid[],ls_i
  42. IF arg_mtrlid = ul_mtrlid THEN RETURN 0
  43. DECLARE pf_cur CURSOR FOR
  44. SELECT u_PrdPF.SonMtrlid
  45. FROM u_PrdPF
  46. Where ( u_PrdPF.mtrlid = :arg_mtrlid );
  47. OPEN pf_cur;
  48. count = 1
  49. FETCH pf_cur INTO :mtrlid[count];
  50. DO WHILE sqlca.SQLCode = 0
  51. count++
  52. FETCH pf_cur INTO :mtrlid[count];
  53. LOOP
  54. count = count - 1
  55. CLOSE pf_cur;
  56. FOR ls_i = 1 TO count
  57. rslt = uof_chk_rand(mtrlid[ls_i])
  58. IF rslt <> 1 THEN RETURN rslt
  59. NEXT
  60. RETURN rslt
  61. end function
  62. public function integer uof_prdpf_add (long arg_mtrlid, string arg_pfcode, s_structuremx arg_mx[], boolean arg_ifcommit, ref string arg_msg);
  63. Int rslt = 1
  64. Long i
  65. FOR i = 1 TO UpperBound(arg_mx)
  66. INSERT INTO u_prdpf
  67. ( mtrlid,
  68. pfcode,
  69. sonmtrlid,
  70. sonscale,
  71. sonloss,
  72. sondecloss,
  73. sonahead,
  74. dscrp,
  75. updownrate,
  76. ifreputate,
  77. ifover,
  78. pfgroup,
  79. pfgroupqty,
  80. pfgroupmode,
  81. promode,
  82. printid,
  83. wrkgrpid,
  84. status,
  85. pcode,
  86. woodcode)
  87. VALUES ( :arg_mtrlid,
  88. :arg_pfcode,
  89. :arg_mx[i].mtrlid,
  90. :arg_mx[i].sonscale,
  91. :arg_mx[i].sonloss,
  92. :arg_mx[i].sondecloss,
  93. :arg_mx[i].sonahead,
  94. :arg_mx[i].dscrp,
  95. :arg_mx[i].updownrate,
  96. :arg_mx[i].ifreputate,
  97. :arg_mx[i].ifover,
  98. :arg_mx[i].pfgroup,
  99. :arg_mx[i].pfgroupqty,
  100. :arg_mx[i].pfgroupmode,
  101. :arg_mx[i].promode,
  102. :arg_mx[i].printid,
  103. :arg_mx[i].wrkgrpid,
  104. :arg_mx[i].status,
  105. :arg_mx[i].pcode,
  106. :arg_mx[i].woodcode) ;
  107. IF sqlca.SQLCode <> 0 THEN
  108. arg_msg = "因为网络或其他原因,插入物料清单操作失败!"+sqlca.SQLErrText
  109. rslt = 0
  110. GOTO ext
  111. END IF
  112. NEXT
  113. ext:
  114. IF rslt = 0 THEN
  115. ROLLBACK;
  116. ELSEIF rslt = 1 AND arg_ifcommit THEN
  117. COMMIT;
  118. END IF
  119. RETURN rslt
  120. end function
  121. public function integer uof_prdpf_del (long arg_mtrlid, string arg_pfcode, boolean arg_ifcommit, ref string arg_msg);
  122. Int rslt = 1
  123. DELETE FROM u_prdpf
  124. WHERE ( u_prdpf.mtrlid = :arg_mtrlid ) AND
  125. ( u_prdpf.pfcode = :arg_pfcode );
  126. IF sqlca.SQLCode <> 0 THEN
  127. arg_msg = "因为网络或其他原因,删除物料清单操作失败!"+sqlca.SQLErrText
  128. rslt = 0
  129. GOTO ext
  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_gy_del (long arg_mtrlid, string arg_pfcode, boolean arg_ifcommit, ref string arg_msg);
  140. Int rslt = 1
  141. DELETE FROM u_mtrl_structure_gy
  142. WHERE ( mtrlid = :arg_mtrlid ) AND
  143. ( pfcode = :arg_pfcode );
  144. IF sqlca.SQLCode <> 0 THEN
  145. arg_msg = "因为网络或其他原因,删除物料清单工艺说明操作失败!"+sqlca.SQLErrText
  146. rslt = 0
  147. GOTO ext
  148. END IF
  149. ext:
  150. IF rslt = 0 THEN
  151. ROLLBACK;
  152. ELSEIF rslt = 1 AND arg_ifcommit THEN
  153. COMMIT;
  154. END IF
  155. RETURN rslt
  156. end function
  157. public function integer uof_gy_add (long arg_mtrlid, string arg_pfcode, string arg_pf_gy, boolean arg_ifcommit, ref string arg_msg);//==============================================================================
  158. // 函数: uo_mtrl_structore::uof_gy_add()
  159. //------------------------------------------------------------------------------
  160. // 描述: 新建/更新工艺说明
  161. //------------------------------------------------------------------------------
  162. // 参数:
  163. // value long arg_mtrlid
  164. // value string arg_pfcode
  165. // value string arg_pf_gy
  166. // value boolean arg_ifcommit
  167. // reference string arg_msg
  168. //------------------------------------------------------------------------------
  169. // 返回值: integer
  170. //------------------------------------------------------------------------------
  171. // 作者: HD Lee 日期: 2011.11.06
  172. //------------------------------------------------------------------------------
  173. // 修改历史:
  174. //
  175. //==============================================================================
  176. Int rslt = 1
  177. UPDATE u_mtrl_structure_gy
  178. SET pfgy = :arg_pf_gy
  179. WHERE ( mtrlid = :arg_mtrlid ) AND
  180. ( pfcode = :arg_pfcode ) ;
  181. IF sqlca.SQLCode = 0 THEN
  182. IF sqlca.SQLNRows = 0 THEN
  183. INSERT INTO u_mtrl_structure_gy (mtrlid,pfcode, pfgy )
  184. Values (:arg_mtrlid,:arg_pfcode, :arg_pf_gy);
  185. IF sqlca.SQLCode <> 0 THEN
  186. arg_msg = "因为网络或其他原因,插入物料清单工艺说明操作失败!"+sqlca.SQLErrText
  187. rslt = 0
  188. GOTO ext
  189. END IF
  190. END IF
  191. ELSE
  192. arg_msg = "因为网络或其他原因,更新物料清单工艺说明操作失败!"+sqlca.SQLErrText
  193. rslt = 0
  194. GOTO ext
  195. END IF
  196. ext:
  197. IF rslt = 0 THEN
  198. ROLLBACK;
  199. ELSEIF rslt = 1 AND arg_ifcommit THEN
  200. COMMIT;
  201. END IF
  202. RETURN rslt
  203. end function
  204. public function integer uof_update_sopdate (long arg_mtrlid, boolean arg_ifcommit, ref string arg_msg);
  205. Int rslt = 1
  206. UPDATE u_mtrldef
  207. SET sopdate = getdate() ,
  208. spopemp = :publ_operator
  209. Where mtrlid = :arg_mtrlid;
  210. IF sqlca.SQLCode <> 0 THEN
  211. arg_msg = "因为网络或其他原因,更新产品物料构成修改时间操作失败!"+sqlca.SQLErrText
  212. rslt = 0
  213. GOTO ext
  214. END IF
  215. ext:
  216. IF rslt = 0 THEN
  217. ROLLBACK;
  218. ELSEIF rslt = 1 AND arg_ifcommit THEN
  219. COMMIT;
  220. END IF
  221. RETURN rslt
  222. end function
  223. public function long uof_get_maxprintid (long arg_mtrlid, string arg_pfcode);Long ll_printid
  224. SELECT Max(printid)
  225. INTO :ll_printid
  226. FROM u_prdpf
  227. WHERE mtrlid = :arg_mtrlid
  228. AND pfcode = :arg_pfcode;
  229. IF sqlca.SQLCode <> 0 THEN
  230. ll_printid = 0
  231. END IF
  232. IF IsNull(ll_printid) THEN ll_printid = 0
  233. RETURN ll_printid
  234. end function
  235. public function integer uof_chk_prdpf (long arg_mtrlid, string arg_pfcode, string arg_pfgroup, long arg_sonmtrlid);Long cnt
  236. SELECT count(*)
  237. INTO :cnt
  238. FROM u_prdpf
  239. WHERE mtrlid = :arg_mtrlid
  240. AND pfcode = :arg_pfcode
  241. AND pfgroup = :arg_pfgroup
  242. AND sonmtrlid = :arg_sonmtrlid;
  243. IF sqlca.SQLCode <> 0 THEN
  244. cnt = 0
  245. END IF
  246. IF cnt > 0 THEN
  247. RETURN 0
  248. ELSE
  249. RETURN 1
  250. END IF
  251. end function
  252. on uo_mtrl_structure.create
  253. call super::create
  254. TriggerEvent( this, "constructor" )
  255. end on
  256. on uo_mtrl_structure.destroy
  257. TriggerEvent( this, "destructor" )
  258. call super::destroy
  259. end on