w_mtrl_structure_replace_p.srw 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518
  1. $PBExportHeader$w_mtrl_structure_replace_p.srw
  2. forward
  3. global type w_mtrl_structure_replace_p from w_publ_base
  4. end type
  5. type dw_s from u_dw_rbtnfilter within w_mtrl_structure_replace_p
  6. end type
  7. type dw_o from u_dw_rbtnfilter within w_mtrl_structure_replace_p
  8. end type
  9. type dw_mx from u_dw_rbtnfilter within w_mtrl_structure_replace_p
  10. end type
  11. type st_1 from statictext within w_mtrl_structure_replace_p
  12. end type
  13. type st_2 from statictext within w_mtrl_structure_replace_p
  14. end type
  15. type cbx_1 from checkbox within w_mtrl_structure_replace_p
  16. end type
  17. type cb_pset from uo_imflatbutton within w_mtrl_structure_replace_p
  18. end type
  19. type gb_1 from groupbox within w_mtrl_structure_replace_p
  20. end type
  21. type gb_2 from groupbox within w_mtrl_structure_replace_p
  22. end type
  23. end forward
  24. global type w_mtrl_structure_replace_p from w_publ_base
  25. integer width = 3611
  26. integer height = 2304
  27. string title = "BOM替换"
  28. boolean minbox = false
  29. windowtype windowtype = response!
  30. event ue_f8 ( )
  31. dw_s dw_s
  32. dw_o dw_o
  33. dw_mx dw_mx
  34. st_1 st_1
  35. st_2 st_2
  36. cbx_1 cbx_1
  37. cb_pset cb_pset
  38. gb_1 gb_1
  39. gb_2 gb_2
  40. end type
  41. global w_mtrl_structure_replace_p w_mtrl_structure_replace_p
  42. type variables
  43. long i_mtrlid
  44. end variables
  45. event ue_f8();Long child_row
  46. child_row = dw_o.GetRow()
  47. IF NOT IsValid(W_mtrldef_edit) THEN
  48. s_edit_index_tran s_ch_tran //传递参数使用
  49. s_ch_tran.if_retrieve_all = FALSE //是否一次RETRIEVE所有行
  50. s_ch_tran.work_mode = 1 //0-单纯编辑模式 1-选择\编辑模式
  51. s_ch_tran.arg_pkid = 0 //目标定位PKID (备用)
  52. s_ch_tran.arg_string_code = '' //查询列(物料编码)部分内容,用于初步筛选
  53. s_ch_tran.if_select_all = false
  54. s_ch_tran.b_long = 2
  55. s_ch_tran.c_long = -1
  56. s_ch_tran.f_long = -1
  57. Long chc = 1,ls_j
  58. dw_o.AcceptText()
  59. OpenWithParm(W_mtrldef_edit,s_ch_tran)
  60. s_mtrldef_array S_INSCUST
  61. S_INSCUST = Message.PowerObjectParm
  62. FOR ls_j = 1 TO UpperBound(S_INSCUST.mtrlid)
  63. IF S_INSCUST.mtrlid[ls_j] > 0 THEN
  64. dw_o.Object.mtrlcode[child_row] = S_INSCUST.mtrlcode[ls_j]
  65. dw_o.Object.unit[child_row] = S_INSCUST.unit[ls_j]
  66. dw_o.Object.mtrlid[child_row] = S_INSCUST.mtrlid[ls_j]
  67. dw_o.Object.mtrlname[child_row] = S_INSCUST.mtrlname[ls_j]
  68. dw_o.Object.mtrlmode[child_row] = S_INSCUST.mtrlmode[ls_j]
  69. END IF
  70. NEXT
  71. END IF
  72. end event
  73. on w_mtrl_structure_replace_p.create
  74. int iCurrent
  75. call super::create
  76. this.dw_s=create dw_s
  77. this.dw_o=create dw_o
  78. this.dw_mx=create dw_mx
  79. this.st_1=create st_1
  80. this.st_2=create st_2
  81. this.cbx_1=create cbx_1
  82. this.cb_pset=create cb_pset
  83. this.gb_1=create gb_1
  84. this.gb_2=create gb_2
  85. iCurrent=UpperBound(this.Control)
  86. this.Control[iCurrent+1]=this.dw_s
  87. this.Control[iCurrent+2]=this.dw_o
  88. this.Control[iCurrent+3]=this.dw_mx
  89. this.Control[iCurrent+4]=this.st_1
  90. this.Control[iCurrent+5]=this.st_2
  91. this.Control[iCurrent+6]=this.cbx_1
  92. this.Control[iCurrent+7]=this.cb_pset
  93. this.Control[iCurrent+8]=this.gb_1
  94. this.Control[iCurrent+9]=this.gb_2
  95. end on
  96. on w_mtrl_structure_replace_p.destroy
  97. call super::destroy
  98. destroy(this.dw_s)
  99. destroy(this.dw_o)
  100. destroy(this.dw_mx)
  101. destroy(this.st_1)
  102. destroy(this.st_2)
  103. destroy(this.cbx_1)
  104. destroy(this.cb_pset)
  105. destroy(this.gb_1)
  106. destroy(this.gb_2)
  107. end on
  108. event open;call super::open;i_mtrlid = message.doubleparm
  109. dw_s.settransobject(sqlca)
  110. dw_o.settransobject(sqlca)
  111. dw_mx.settransobject(sqlca)
  112. dw_s.retrieve(i_mtrlid)
  113. dw_mx.retrieve(i_mtrlid)
  114. dw_o.insertrow(0)
  115. end event
  116. type cb_func from w_publ_base`cb_func within w_mtrl_structure_replace_p
  117. integer x = 1755
  118. integer y = 2072
  119. integer width = 311
  120. integer height = 96
  121. string text = "确定"
  122. string normalpicname = "ok.bmp"
  123. integer picsize = 0
  124. toolbaralignment pic_align = alignatleft!
  125. boolean border = true
  126. end type
  127. event cb_func::clicked;call super::clicked;Int rslt = 1
  128. Long ll_mtrlid_s,ll_mtrlid_o,ll_mtrlid
  129. String ls_mtrlcode, ls_mtrlcode_o, ls_mtrlcode_s
  130. String ls_pfcode,ls_pfgroup
  131. Decimal lde_sonscale
  132. Long ll_i,ll_cnt,count,i
  133. String arg_msg
  134. Long ll_billid
  135. dw_mx.SetFilter('')
  136. dw_mx.Filter()
  137. dw_s.AcceptText()
  138. dw_o.AcceptText()
  139. dw_mx.AcceptText()
  140. ll_mtrlid_s = dw_s.Object.mtrlid[1]
  141. ls_mtrlcode_s = dw_s.Object.mtrlcode[1]
  142. ll_mtrlid_o = dw_o.Object.mtrlid[1]
  143. ls_mtrlcode_o = dw_o.Object.mtrlcode[1]
  144. IF ll_mtrlid_s = 0 THEN
  145. MessageBox('系统提示','没有原物料')
  146. RETURN
  147. END IF
  148. IF ll_mtrlid_o = 0 THEN
  149. MessageBox('系统提示','没有替换物料')
  150. RETURN
  151. END IF
  152. IF ll_mtrlid_s = ll_mtrlid_o THEN
  153. MessageBox('系统提示','原物料不能和替换物料相同,请检查')
  154. RETURN
  155. END IF
  156. IF dw_mx.Find('choice = 1', 1, dw_mx.RowCount()) <= 0 THEN
  157. MessageBox('系统提示','请勾选需替换物料的物料列表')
  158. RETURN
  159. END IF
  160. FOR i = 1 To dw_mx.RowCount()
  161. IF dw_mx.Object.choice[i] = 0 THEN CONTINUE
  162. IF dw_mx.Object.mtrlid[i] > 0 THEN
  163. ll_mtrlid = dw_mx.Object.mtrlid[i] //产品
  164. lde_sonscale = dw_mx.Object.u_prdpf_sonscale_new[i]
  165. ls_pfcode = dw_mx.Object.u_prdpf_pfcode[i]
  166. ls_pfgroup = dw_mx.Object.u_prdpf_pfgroup[i]
  167. UPDATE u_prdpf
  168. SET sonmtrlid = :ll_mtrlid_o,
  169. sonscale = :lde_sonscale
  170. WHERE ( u_prdpf.mtrlid = :ll_mtrlid ) AND
  171. ( u_prdpf.sonmtrlid = :ll_mtrlid_s ) AND
  172. ( u_prdpf.pfcode = :ls_pfcode )AND
  173. ( u_prdpf.pfgroup = :ls_pfgroup );
  174. IF sqlca.SQLCode <> 0 THEN
  175. arg_msg = "行:"+String(i)+",替换物料操作失败,"+sqlca.SQLErrText
  176. rslt = 0
  177. GOTO ext
  178. ELSEIF sqlca.SQLNRows <> 1 THEN
  179. arg_msg = "行:"+String(i)+",替换物料操作失败,BOM不存在该物料或关键字变更!"
  180. rslt = 0
  181. GOTO ext
  182. END IF
  183. END IF
  184. NEXT
  185. ext:
  186. IF rslt = 0 THEN
  187. ROLLBACK;
  188. MessageBox('错误',arg_msg)
  189. RETURN
  190. ELSE
  191. COMMIT;
  192. MessageBox('系统提示','批替换物料BOM成功')
  193. //日志
  194. f_setsysoplog('BOM物料批替换','物料:'+ls_mtrlcode_s+'批替换成物料:'+ls_mtrlcode_o,arg_msg,True)
  195. //--
  196. Close(Parent)
  197. END IF
  198. end event
  199. type cb_exit from w_publ_base`cb_exit within w_mtrl_structure_replace_p
  200. integer x = 2208
  201. integer y = 2072
  202. end type
  203. type dw_s from u_dw_rbtnfilter within w_mtrl_structure_replace_p
  204. integer x = 261
  205. integer y = 56
  206. integer width = 1842
  207. integer height = 352
  208. boolean bringtotop = true
  209. string dataobject = "dw_mtrl_structure_replace_s"
  210. end type
  211. event constructor;int i = 0
  212. end event
  213. event destructor;int i = 0
  214. end event
  215. type dw_o from u_dw_rbtnfilter within w_mtrl_structure_replace_p
  216. integer x = 261
  217. integer y = 484
  218. integer width = 1842
  219. integer height = 352
  220. integer taborder = 20
  221. boolean bringtotop = true
  222. string dataobject = "dw_mtrl_structure_replace_o"
  223. end type
  224. event destructor;int i = 0
  225. end event
  226. event constructor;int i = 0
  227. end event
  228. event doubleclicked;call super::doubleclicked;parent.triggerevent('ue_f8')
  229. end event
  230. event dwnkey;call super::dwnkey;Long child_row
  231. String ls_mtrlcode,ls_mtrlname,ls_unit,ls_mtrlmode
  232. Long ls_mtrlid
  233. If (KeyDown(KeyEnter!) Or KeyDown(KeyTab!)) And Not KeyDown(KeyControl!) And Not KeyDown(KeyShift!) THEN
  234. IF dw_o.GetColumnName() = 'mtrlcode' THEN
  235. dw_o.AcceptText()
  236. child_row = dw_o.GetRow()
  237. ls_mtrlcode = dw_o.Object.mtrlcode[child_row]
  238. SELECT u_mtrldef.mtrlid,
  239. u_mtrldef.mtrlname,
  240. u_mtrldef.unit,
  241. u_mtrldef.mtrlmode
  242. INTO :ls_mtrlid,
  243. :ls_mtrlname,
  244. :ls_unit,
  245. :ls_mtrlmode
  246. FROM u_mtrldef
  247. Where ( u_mtrldef.mtrlcode = :ls_mtrlcode);
  248. IF sqlca.SQLCode <> 0 THEN
  249. Parent.TriggerEvent('ue_f8')
  250. RETURN 1
  251. ELSE
  252. dw_o.Object.unit[child_row] = ls_unit
  253. dw_o.Object.mtrlid[child_row] = ls_mtrlid
  254. dw_o.Object.mtrlname[child_row] = ls_mtrlname
  255. dw_o.Object.mtrlmode[child_row] = ls_mtrlmode
  256. END IF
  257. END IF
  258. END IF
  259. end event
  260. type dw_mx from u_dw_rbtnfilter within w_mtrl_structure_replace_p
  261. integer y = 880
  262. integer width = 3543
  263. integer height = 1148
  264. integer taborder = 20
  265. boolean bringtotop = true
  266. string dataobject = "dw_mtrl_structure_replace_mx"
  267. boolean hscrollbar = true
  268. boolean vscrollbar = true
  269. boolean hsplitscroll = true
  270. boolean rbutton_filter_use = true
  271. boolean titleclick_sort_use = true
  272. end type
  273. event rowfocuschanged;call super::rowfocuschanged;IF currentrow <=0 THEN RETURN
  274. this.selectrow(0,false)
  275. this.selectrow(currentrow,true)
  276. this.setrow(currentrow)
  277. end event
  278. event clicked;call super::clicked;IF row <= 0 THEN RETURN
  279. This.SelectRow(0,False)
  280. This.SelectRow(row,True)
  281. This.SetRow(row)
  282. end event
  283. type st_1 from statictext within w_mtrl_structure_replace_p
  284. integer x = 9
  285. integer y = 196
  286. integer width = 247
  287. integer height = 48
  288. boolean bringtotop = true
  289. integer textsize = -9
  290. integer weight = 400
  291. fontcharset fontcharset = gb2312charset!
  292. fontpitch fontpitch = variable!
  293. string facename = "宋体"
  294. long textcolor = 33554432
  295. long backcolor = 134217739
  296. string text = "原物料"
  297. alignment alignment = center!
  298. boolean focusrectangle = false
  299. end type
  300. type st_2 from statictext within w_mtrl_structure_replace_p
  301. integer x = 9
  302. integer y = 616
  303. integer width = 247
  304. integer height = 48
  305. boolean bringtotop = true
  306. integer textsize = -9
  307. integer weight = 400
  308. fontcharset fontcharset = gb2312charset!
  309. fontpitch fontpitch = variable!
  310. string facename = "宋体"
  311. long textcolor = 33554432
  312. long backcolor = 134217739
  313. string text = "替换物料"
  314. alignment alignment = center!
  315. boolean focusrectangle = false
  316. end type
  317. type cbx_1 from checkbox within w_mtrl_structure_replace_p
  318. integer x = 672
  319. integer y = 2084
  320. integer width = 197
  321. integer height = 76
  322. boolean bringtotop = true
  323. integer textsize = -9
  324. integer weight = 400
  325. fontcharset fontcharset = gb2312charset!
  326. fontpitch fontpitch = variable!
  327. string facename = "宋体"
  328. long textcolor = 33554432
  329. long backcolor = 134217739
  330. string text = "全选"
  331. end type
  332. event clicked;Long ll_i
  333. dw_mx.SetRedraw(FALSE)
  334. FOR ll_i = 1 TO dw_mx.RowCount()
  335. IF THIS.Checked THEN
  336. dw_mx.Object.choice[ll_i] = 1
  337. ELSE
  338. dw_mx.Object.choice[ll_i] = 0
  339. END IF
  340. NEXT
  341. dw_mx.SetRedraw(TRUE)
  342. end event
  343. type cb_pset from uo_imflatbutton within w_mtrl_structure_replace_p
  344. integer x = 983
  345. integer y = 2072
  346. integer width = 631
  347. integer taborder = 20
  348. boolean bringtotop = true
  349. string text = "按比例设置新用料量"
  350. string normalpicname = "p1.bmp"
  351. integer picsize = 16
  352. end type
  353. event clicked;call super::clicked;Long ll_i
  354. Decimal ld_rate
  355. Long ll_if_all
  356. Long ll_row
  357. Long ll_dec
  358. Long ll_way
  359. ll_row = dw_mx.GetRow()
  360. IF ll_row <= 0 THEN
  361. MessageBox('系统提示','请选择明细内容')
  362. RETURN
  363. END IF
  364. s_edit_index_tran s_ins_rate
  365. Open(w_prdpf_change_rate_edit)
  366. s_ins_rate = Message.PowerObjectParm
  367. ld_rate = s_ins_rate.b_decimal
  368. ll_if_all = s_ins_rate.b_long
  369. ll_dec = s_ins_rate.c_long
  370. ll_way = s_ins_rate.d_long
  371. IF ll_if_all = -1 THEN RETURN
  372. dw_mx.AcceptText()
  373. IF ll_if_all = 0 THEN
  374. IF ll_way = 0 THEN
  375. dw_mx.Object.u_prdpf_sonscale_new[ll_row] = Round(dw_mx.Object.u_prdpf_sonscale[ll_row] + ld_rate,ll_dec)
  376. ELSEIF ll_way = 1 THEN
  377. dw_mx.Object.u_prdpf_sonscale_new[ll_row] = Round(dw_mx.Object.u_prdpf_sonscale[ll_row] - ld_rate,ll_dec)
  378. ELSEIF ll_way = 2 THEN
  379. dw_mx.Object.u_prdpf_sonscale_new[ll_row] = Round(dw_mx.Object.u_prdpf_sonscale[ll_row] * ld_rate,ll_dec)
  380. ELSEIF ll_way = 3 THEN
  381. dw_mx.Object.u_prdpf_sonscale_new[ll_row] = Round(dw_mx.Object.u_prdpf_sonscale[ll_row] / ld_rate,ll_dec)
  382. END IF
  383. ELSEIF ll_if_all = 1 THEN
  384. dw_mx.SetRedraw(False)
  385. FOR ll_i = 1 To dw_mx.RowCount()
  386. IF dw_mx.Object.choice[ll_i] = 0 THEN CONTINUE
  387. IF ll_way = 0 THEN
  388. dw_mx.Object.u_prdpf_sonscale_new[ll_i] = Round(dw_mx.Object.u_prdpf_sonscale[ll_i] + ld_rate,ll_dec)
  389. ELSEIF ll_way = 1 THEN
  390. dw_mx.Object.u_prdpf_sonscale_new[ll_i] = Round(dw_mx.Object.u_prdpf_sonscale[ll_i] - ld_rate,ll_dec)
  391. ELSEIF ll_way = 2 THEN
  392. dw_mx.Object.u_prdpf_sonscale_new[ll_i] = Round(dw_mx.Object.u_prdpf_sonscale[ll_i] * ld_rate,ll_dec)
  393. ELSEIF ll_way = 3 THEN
  394. dw_mx.Object.u_prdpf_sonscale_new[ll_i] = Round(dw_mx.Object.u_prdpf_sonscale[ll_i] / ld_rate,ll_dec)
  395. END IF
  396. NEXT
  397. dw_mx.SetRedraw(True)
  398. END IF
  399. end event
  400. type gb_1 from groupbox within w_mtrl_structure_replace_p
  401. integer x = 151
  402. integer y = 4
  403. integer width = 2043
  404. integer height = 452
  405. integer taborder = 10
  406. integer textsize = -9
  407. integer weight = 400
  408. fontcharset fontcharset = gb2312charset!
  409. fontpitch fontpitch = variable!
  410. string facename = "宋体"
  411. long textcolor = 33554432
  412. long backcolor = 134217739
  413. end type
  414. type gb_2 from groupbox within w_mtrl_structure_replace_p
  415. integer x = 151
  416. integer y = 424
  417. integer width = 2043
  418. integer height = 452
  419. integer taborder = 10
  420. integer textsize = -9
  421. integer weight = 400
  422. fontcharset fontcharset = gb2312charset!
  423. fontpitch fontpitch = variable!
  424. string facename = "宋体"
  425. long textcolor = 33554432
  426. long backcolor = 134217739
  427. end type