uo_mtrlpz.sru 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. $PBExportHeader$uo_mtrlpz.sru
  2. forward
  3. global type uo_mtrlpz from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_mtrlpz from nonvisualobject
  7. end type
  8. global uo_mtrlpz uo_mtrlpz
  9. type variables
  10. end variables
  11. forward prototypes
  12. public function integer save_mtrlpz (s_mtrl_pz arg_s_mp, ref string arg_msg)
  13. public function integer delete_configuretype (long arg_configutetypeid, ref string arg_msg)
  14. public function s_mtrlpz_array getconfiguremx (long arg_configuretypeid)
  15. public function integer add_configuretype (s_mtrlpz_array arg_s_ma, string arg_contfigtypename, integer arg_contfigtype, ref string arg_msg)
  16. public function integer setdefaultpz (integer arg_flag, long arg_mtrlid, ref string arg_msg, long arg_cid)
  17. public function s_mtrlpzmx getpzmx (long arg_cid)
  18. end prototypes
  19. public function integer save_mtrlpz (s_mtrl_pz arg_s_mp, ref string arg_msg);Long cnt = 0,ls_i
  20. string ls_pzname
  21. long ll_mtrlid
  22. IF arg_s_mp.mode = 2 THEN //如果是删除
  23. select name,mtrlid into :ls_pzname,:ll_mtrlid
  24. from u_mtrl_configure
  25. where cid = :arg_s_mp.cid;
  26. IF sqlca.SQLCode <> 0 THEN
  27. arg_msg = '查询物料配置信息失败,'+sqlca.sqlerrtext
  28. ROLLBACK;
  29. RETURN 0
  30. END IF
  31. delete from u_mtrl_planprice where mtrlid = :ll_mtrlid and status = :ls_pzname;
  32. IF sqlca.SQLCode <> 0 THEN
  33. arg_msg = '查询物料配置计划成本价资料失败,'+sqlca.sqlerrtext
  34. ROLLBACK;
  35. RETURN 0
  36. END IF
  37. DELETE FROM u_mtrl_configure Where cid = :arg_s_mp.cid;
  38. IF sqlca.SQLCode <> 0 THEN
  39. arg_msg = '删除物料配置失败'
  40. ROLLBACK;
  41. RETURN 0
  42. END IF
  43. RETURN 1
  44. END IF
  45. IF arg_s_mp.mode = 0 THEN //如果是新建,则获取新id,并检查重复的配置
  46. //获得新的cid
  47. arg_s_mp.cid = f_sys_scidentity(0,"u_mtrl_configure","cid",arg_msg,TRUE,sqlca)
  48. IF arg_s_mp.cid < 0 THEN
  49. ROLLBACK;
  50. RETURN 0
  51. END IF
  52. //检查重复配置
  53. SELECT count(*) INTO :cnt FROM u_mtrl_configure Where mtrlid = :arg_s_mp.mtrlid AND code = :arg_s_mp.code;
  54. IF sqlca.SQLCode <> 0 THEN
  55. arg_msg = '检查配置失败'
  56. RETURN 0
  57. END IF
  58. IF IsNull(cnt) THEN
  59. cnt = 0
  60. END IF
  61. IF cnt > 0 THEN
  62. arg_msg = '更新失败,重复的配置码'
  63. RETURN 0
  64. END IF
  65. END IF
  66. IF arg_s_mp.mode = 0 THEN
  67. INSERT INTO u_mtrl_configure (mtrlid,cid,code,Name,TYPE) Values(:arg_s_mp.mtrlid,:arg_s_mp.cid,:arg_s_mp.code,:arg_s_mp.Name,2);
  68. IF sqlca.SQLCode <> 0 THEN
  69. arg_msg = '插入物料配置失败'
  70. ROLLBACK;
  71. RETURN 0
  72. END IF
  73. ELSE
  74. UPDATE u_mtrl_configure Set mtrlid = :arg_s_mp.mtrlid,code = :arg_s_mp.code,Name = :arg_s_mp.Name Where cid = :arg_s_mp.cid;
  75. IF sqlca.SQLCode <> 0 THEN
  76. arg_msg = '更新物料配置失败'
  77. ROLLBACK;
  78. RETURN 0
  79. END IF
  80. END IF
  81. RETURN 1
  82. end function
  83. public function integer delete_configuretype (long arg_configutetypeid, ref string arg_msg);Long cnt = 0
  84. //SELECT count(*) INTO :cnt FROM u_mtrldef Where colorprp = :arg_configutetypeid;
  85. //IF sqlca.SQLCode <> 0 THEN
  86. // arg_msg = "删除配置类型失败,不能检查类型是否已经使用"
  87. // RETURN 0
  88. //END IF
  89. //IF cnt > 0 THEN
  90. // arg_msg = "删除配置类型失败,该类型已经在使用,不允许删除"
  91. // RETURN 0
  92. //END IF
  93. //
  94. //DELETE FROM u_configure_typemx Where contfigtypeid = :arg_configutetypeid;
  95. //IF sqlca.SQLCode <> 0 THEN
  96. // arg_msg = '删除配置类型明细失败'
  97. // ROLLBACK;
  98. // RETURN 0
  99. //END IF
  100. //
  101. //DELETE FROM u_configure_type Where contfigtypeid = :arg_configutetypeid;
  102. //IF sqlca.SQLCode <> 0 THEN
  103. // arg_msg = '删除配置类型失败'
  104. // ROLLBACK;
  105. // RETURN 0
  106. //END IF
  107. RETURN 1
  108. end function
  109. public function s_mtrlpz_array getconfiguremx (long arg_configuretypeid);s_mtrlpz_array s_mpz
  110. // long cur_pzid
  111. // string cur_name,cur_pzcode
  112. //
  113. //
  114. // declare cur_pz cursor for
  115. // SELECT u_configure_code.pzcode, u_configure_code.name,u_configure_code.pzid
  116. // FROM u_configure_typemx INNER JOIN
  117. // u_configure_code ON u_configure_typemx.pzid = u_configure_code.pzid
  118. // where u_configure_typemx.contfigtypeid = :arg_configuretypeid;
  119. // open cur_pz;
  120. // fetch cur_pz into :cur_pzcode,:cur_name,:cur_pzid;
  121. // long ls_mxrow=0
  122. // long cnt=0
  123. // if sqlca.sqlcode <> 0 then
  124. // s_mpz.pzcode[1] = ''
  125. // s_mpz.pzname[1] = ''
  126. // s_mpz.pzid[1] = 0
  127. // end if
  128. // do while sqlca.sqlcode = 0
  129. // cnt++
  130. // s_mpz.pzcode[cnt] = cur_pzcode
  131. // s_mpz.pzname[cnt] = cur_name
  132. // s_mpz.pzid[cnt] = cur_pzid
  133. // fetch cur_pz into :cur_pzcode,:cur_name,:cur_pzid;
  134. // loop
  135. // close cur_pz;
  136. return s_mpz
  137. end function
  138. public function integer add_configuretype (s_mtrlpz_array arg_s_ma, string arg_contfigtypename, integer arg_contfigtype, ref string arg_msg);Long ls_configuretypeid,ls_i
  139. ls_configuretypeid = f_sys_scidentity(0,"u_configure_type","contfigtypeid",arg_msg,TRUE,sqlca)
  140. IF ls_configuretypeid <= 0 THEN
  141. RETURN 0
  142. END IF
  143. INSERT INTO u_configure_type (contfigtypeid, contfigtypename , contfigtype ) Values (:ls_configuretypeid,:arg_contfigtypename,:arg_contfigtype);
  144. IF sqlca.SQLCode <> 0 THEN
  145. arg_msg = '插入新配置类型失败'
  146. ROLLBACK;
  147. RETURN 0
  148. END IF
  149. //FOR ls_i = 1 TO UpperBound(arg_s_ma.pzid )
  150. // INSERT INTO u_configure_typemx (contfigtypeid, pzid ) Values (:ls_configuretypeid,:arg_s_ma.pzid[ls_i]);
  151. // IF sqlca.SQLCode <> 0 THEN
  152. // arg_msg = '插入新配置类型明细失败'
  153. // ROLLBACK;
  154. // RETURN 0
  155. // END IF
  156. //NEXT
  157. RETURN 1
  158. end function
  159. public function integer setdefaultpz (integer arg_flag, long arg_mtrlid, ref string arg_msg, long arg_cid);Long cnt = 0,cur_cid
  160. cur_cid = arg_cid
  161. IF arg_flag = 0 THEN
  162. //检查arg_cid是否是物料arg_mtrld的配置
  163. SELECT count(*) INTO :cnt FROM u_mtrl_configure Where Mtrlid = :arg_mtrlid AND cid = :arg_cid ;
  164. IF sqlca.SQLCode <> 0 THEN
  165. arg_msg = "检查物料配置ID失败"
  166. RETURN 0
  167. END IF
  168. IF IsNull(cnt) THEN cnt = 0
  169. //检查物料原来的默认配置数
  170. Long cnt1 = 0
  171. SELECT count(*) INTO :cnt1 FROM u_mtrl_configure Where Mtrlid = :arg_mtrlid AND DefaultPZ = 1;
  172. IF sqlca.SQLCode <> 0 THEN
  173. arg_msg = "查询物料默认配置失败"
  174. RETURN 0
  175. END IF
  176. IF IsNull(cnt1) THEN cnt1 = 0
  177. IF cnt = 0 THEN //如果arg_cid不是物料arg_mtrlid的配置
  178. IF cnt1 > 1 THEN //如果该物料有多于一个默认配置,则选他的最新的物料配置作为默认配置
  179. UPDATE u_mtrl_configure Set DefaultPZ = 0 Where Mtrlid = :arg_mtrlid AND DefaultPZ = 1;
  180. IF sqlca.SQLCode <> 0 THEN
  181. arg_msg = "初始化物料默认配置失败"
  182. ROLLBACK;
  183. RETURN 0
  184. END IF
  185. ELSEIF cnt1 = 1 THEN
  186. //如果物料已经有一个默认配置,则返回
  187. RETURN 1
  188. END IF
  189. //获得物料最新配置的id
  190. SELECT Max (cid) INTO :cur_cid FROM u_mtrl_configure Where Mtrlid = :arg_mtrlid;
  191. IF sqlca.SQLCode <> 0 THEN
  192. arg_msg = "查找最新物料配置失败"
  193. RETURN 0
  194. END IF
  195. IF IsNull(cur_cid) OR cur_cid <= 0 THEN RETURN 1 //如果该物料没有配置,则返回
  196. ELSEIF cnt = 1 THEN //arg_cid是物料arg_mtrlid的配置
  197. IF cnt1 >= 1 THEN //取消物料原来的默认配置
  198. UPDATE u_mtrl_configure Set DefaultPZ = 0 Where Mtrlid = :arg_mtrlid AND DefaultPZ = 1;
  199. IF sqlca.SQLCode <> 0 THEN
  200. arg_msg = "初始化物料默认配置失败"
  201. ROLLBACK;
  202. RETURN 0
  203. END IF
  204. END IF
  205. END IF
  206. //把arg_cid设成默认配置
  207. UPDATE u_mtrl_configure Set DefaultPZ = 1 Where cid = :cur_cid;
  208. IF sqlca.SQLCode <> 0 THEN
  209. arg_msg = "设置默认物料配置失败"
  210. ROLLBACK;
  211. RETURN 0
  212. END IF
  213. ELSE
  214. UPDATE u_mtrl_configure Set DefaultPZ = 0 Where cid = :cur_cid;
  215. IF sqlca.SQLCode <> 0 THEN
  216. arg_msg = "设置默认物料配置失败"
  217. ROLLBACK;
  218. RETURN 0
  219. END IF
  220. END IF
  221. RETURN 1
  222. end function
  223. public function s_mtrlpzmx getpzmx (long arg_cid);s_mtrlpzmx s_mm
  224. //declare cur cursor for
  225. //SELECT
  226. // u_configure_code.pzid,
  227. // u_configure_codemx.pzcodemx,
  228. // u_configure_codemx.namemx,
  229. // u_configure_codemx.printid
  230. //FROM u_configure_code INNER JOIN
  231. // u_configure_codemx ON
  232. // u_configure_code.pzid = u_configure_codemx.pzid INNER JOIN
  233. // u_mtrl_configuremx ON
  234. // u_configure_codemx.printid = u_mtrl_configuremx.printid AND
  235. // u_configure_code.pzid = u_mtrl_configuremx.pzid
  236. //where u_mtrl_configuremx.cid = :arg_cid;
  237. //
  238. //open cur;
  239. //
  240. //long cnt = 0
  241. //long ls_pzid,ls_printid
  242. //string ls_pzcodemx,ls_namemx
  243. //fetch cur into :ls_pzid,:ls_pzcodemx,:ls_namemx,:ls_printid;
  244. //do while sqlca.sqlcode = 0
  245. // cnt++
  246. // s_mm.pzid[cnt] = ls_pzid
  247. // s_mm.pzcodemx[cnt] = ls_pzcodemx
  248. // s_mm.namemx[cnt] = ls_namemx
  249. // s_mm.printid[cnt] = ls_printid
  250. // fetch cur into :ls_pzid,:ls_pzcodemx,:ls_namemx,:ls_printid;
  251. //loop
  252. //
  253. //close cur;
  254. return s_mm
  255. end function
  256. on uo_mtrlpz.create
  257. call super::create
  258. TriggerEvent( this, "constructor" )
  259. end on
  260. on uo_mtrlpz.destroy
  261. TriggerEvent( this, "destructor" )
  262. call super::destroy
  263. end on