uo_mtrlpz.sru 9.8 KB

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