$PBExportHeader$w_mtrl_structure_replace_p.srw forward global type w_mtrl_structure_replace_p from w_publ_base end type type dw_s from u_dw_rbtnfilter within w_mtrl_structure_replace_p end type type dw_o from u_dw_rbtnfilter within w_mtrl_structure_replace_p end type type dw_mx from u_dw_rbtnfilter within w_mtrl_structure_replace_p end type type st_1 from statictext within w_mtrl_structure_replace_p end type type st_2 from statictext within w_mtrl_structure_replace_p end type type cbx_1 from checkbox within w_mtrl_structure_replace_p end type type cb_pset from uo_imflatbutton within w_mtrl_structure_replace_p end type type gb_1 from groupbox within w_mtrl_structure_replace_p end type type gb_2 from groupbox within w_mtrl_structure_replace_p end type end forward global type w_mtrl_structure_replace_p from w_publ_base integer width = 3611 integer height = 2304 string title = "BOM替换" boolean minbox = false windowtype windowtype = response! event ue_f8 ( ) dw_s dw_s dw_o dw_o dw_mx dw_mx st_1 st_1 st_2 st_2 cbx_1 cbx_1 cb_pset cb_pset gb_1 gb_1 gb_2 gb_2 end type global w_mtrl_structure_replace_p w_mtrl_structure_replace_p type variables long i_mtrlid end variables event ue_f8();Long child_row child_row = dw_o.GetRow() IF NOT IsValid(W_mtrldef_edit) THEN s_edit_index_tran s_ch_tran //传递参数使用 s_ch_tran.if_retrieve_all = FALSE //是否一次RETRIEVE所有行 s_ch_tran.work_mode = 1 //0-单纯编辑模式 1-选择\编辑模式 s_ch_tran.arg_pkid = 0 //目标定位PKID (备用) s_ch_tran.arg_string_code = '' //查询列(物料编码)部分内容,用于初步筛选 s_ch_tran.if_select_all = false s_ch_tran.b_long = 2 s_ch_tran.c_long = -1 s_ch_tran.f_long = -1 Long chc = 1,ls_j dw_o.AcceptText() OpenWithParm(W_mtrldef_edit,s_ch_tran) s_mtrldef_array S_INSCUST S_INSCUST = Message.PowerObjectParm FOR ls_j = 1 TO UpperBound(S_INSCUST.mtrlid) IF S_INSCUST.mtrlid[ls_j] > 0 THEN dw_o.Object.mtrlcode[child_row] = S_INSCUST.mtrlcode[ls_j] dw_o.Object.unit[child_row] = S_INSCUST.unit[ls_j] dw_o.Object.mtrlid[child_row] = S_INSCUST.mtrlid[ls_j] dw_o.Object.mtrlname[child_row] = S_INSCUST.mtrlname[ls_j] dw_o.Object.mtrlmode[child_row] = S_INSCUST.mtrlmode[ls_j] END IF NEXT END IF end event on w_mtrl_structure_replace_p.create int iCurrent call super::create this.dw_s=create dw_s this.dw_o=create dw_o this.dw_mx=create dw_mx this.st_1=create st_1 this.st_2=create st_2 this.cbx_1=create cbx_1 this.cb_pset=create cb_pset this.gb_1=create gb_1 this.gb_2=create gb_2 iCurrent=UpperBound(this.Control) this.Control[iCurrent+1]=this.dw_s this.Control[iCurrent+2]=this.dw_o this.Control[iCurrent+3]=this.dw_mx this.Control[iCurrent+4]=this.st_1 this.Control[iCurrent+5]=this.st_2 this.Control[iCurrent+6]=this.cbx_1 this.Control[iCurrent+7]=this.cb_pset this.Control[iCurrent+8]=this.gb_1 this.Control[iCurrent+9]=this.gb_2 end on on w_mtrl_structure_replace_p.destroy call super::destroy destroy(this.dw_s) destroy(this.dw_o) destroy(this.dw_mx) destroy(this.st_1) destroy(this.st_2) destroy(this.cbx_1) destroy(this.cb_pset) destroy(this.gb_1) destroy(this.gb_2) end on event open;call super::open;i_mtrlid = message.doubleparm dw_s.settransobject(sqlca) dw_o.settransobject(sqlca) dw_mx.settransobject(sqlca) dw_s.retrieve(i_mtrlid) dw_mx.retrieve(i_mtrlid) dw_o.insertrow(0) end event type cb_func from w_publ_base`cb_func within w_mtrl_structure_replace_p integer x = 1755 integer y = 2072 integer width = 311 integer height = 96 string text = "确定" string normalpicname = "ok.bmp" integer picsize = 0 toolbaralignment pic_align = alignatleft! boolean border = true end type event cb_func::clicked;call super::clicked;Int rslt = 1 Long ll_mtrlid_s,ll_mtrlid_o,ll_mtrlid String ls_mtrlcode, ls_mtrlcode_o, ls_mtrlcode_s String ls_pfcode,ls_pfgroup Decimal lde_sonscale Long ll_i,ll_cnt,count,i String arg_msg Long ll_billid dw_mx.SetFilter('') dw_mx.Filter() dw_s.AcceptText() dw_o.AcceptText() dw_mx.AcceptText() ll_mtrlid_s = dw_s.Object.mtrlid[1] ls_mtrlcode_s = dw_s.Object.mtrlcode[1] ll_mtrlid_o = dw_o.Object.mtrlid[1] ls_mtrlcode_o = dw_o.Object.mtrlcode[1] IF ll_mtrlid_s = 0 THEN MessageBox('系统提示','没有原物料') RETURN END IF IF ll_mtrlid_o = 0 THEN MessageBox('系统提示','没有替换物料') RETURN END IF IF ll_mtrlid_s = ll_mtrlid_o THEN MessageBox('系统提示','原物料不能和替换物料相同,请检查') RETURN END IF IF dw_mx.Find('choice = 1', 1, dw_mx.RowCount()) <= 0 THEN MessageBox('系统提示','请勾选需替换物料的物料列表') RETURN END IF FOR i = 1 To dw_mx.RowCount() IF dw_mx.Object.choice[i] = 0 THEN CONTINUE IF dw_mx.Object.mtrlid[i] > 0 THEN ll_mtrlid = dw_mx.Object.mtrlid[i] //产品 lde_sonscale = dw_mx.Object.u_prdpf_sonscale_new[i] ls_pfcode = dw_mx.Object.u_prdpf_pfcode[i] ls_pfgroup = dw_mx.Object.u_prdpf_pfgroup[i] UPDATE u_prdpf SET sonmtrlid = :ll_mtrlid_o, sonscale = :lde_sonscale WHERE ( u_prdpf.mtrlid = :ll_mtrlid ) AND ( u_prdpf.sonmtrlid = :ll_mtrlid_s ) AND ( u_prdpf.pfcode = :ls_pfcode )AND ( u_prdpf.pfgroup = :ls_pfgroup ); IF sqlca.SQLCode <> 0 THEN arg_msg = "行:"+String(i)+",替换物料操作失败,"+sqlca.SQLErrText rslt = 0 GOTO ext ELSEIF sqlca.SQLNRows <> 1 THEN arg_msg = "行:"+String(i)+",替换物料操作失败,BOM不存在该物料或关键字变更!" rslt = 0 GOTO ext END IF END IF NEXT ext: IF rslt = 0 THEN ROLLBACK; MessageBox('错误',arg_msg) RETURN ELSE COMMIT; MessageBox('系统提示','批替换物料BOM成功') //日志 f_setsysoplog('BOM物料批替换','物料:'+ls_mtrlcode_s+'批替换成物料:'+ls_mtrlcode_o,arg_msg,True) //-- Close(Parent) END IF end event type cb_exit from w_publ_base`cb_exit within w_mtrl_structure_replace_p integer x = 2208 integer y = 2072 end type type dw_s from u_dw_rbtnfilter within w_mtrl_structure_replace_p integer x = 261 integer y = 56 integer width = 1842 integer height = 352 boolean bringtotop = true string dataobject = "dw_mtrl_structure_replace_s" end type event constructor;int i = 0 end event event destructor;int i = 0 end event type dw_o from u_dw_rbtnfilter within w_mtrl_structure_replace_p integer x = 261 integer y = 484 integer width = 1842 integer height = 352 integer taborder = 20 boolean bringtotop = true string dataobject = "dw_mtrl_structure_replace_o" end type event destructor;int i = 0 end event event constructor;int i = 0 end event event doubleclicked;call super::doubleclicked;parent.triggerevent('ue_f8') end event event dwnkey;call super::dwnkey;Long child_row String ls_mtrlcode,ls_mtrlname,ls_unit,ls_mtrlmode Long ls_mtrlid If (KeyDown(KeyEnter!) Or KeyDown(KeyTab!)) And Not KeyDown(KeyControl!) And Not KeyDown(KeyShift!) THEN IF dw_o.GetColumnName() = 'mtrlcode' THEN dw_o.AcceptText() child_row = dw_o.GetRow() ls_mtrlcode = dw_o.Object.mtrlcode[child_row] SELECT u_mtrldef.mtrlid, u_mtrldef.mtrlname, u_mtrldef.unit, u_mtrldef.mtrlmode INTO :ls_mtrlid, :ls_mtrlname, :ls_unit, :ls_mtrlmode FROM u_mtrldef Where ( u_mtrldef.mtrlcode = :ls_mtrlcode); IF sqlca.SQLCode <> 0 THEN Parent.TriggerEvent('ue_f8') RETURN 1 ELSE dw_o.Object.unit[child_row] = ls_unit dw_o.Object.mtrlid[child_row] = ls_mtrlid dw_o.Object.mtrlname[child_row] = ls_mtrlname dw_o.Object.mtrlmode[child_row] = ls_mtrlmode END IF END IF END IF end event type dw_mx from u_dw_rbtnfilter within w_mtrl_structure_replace_p integer y = 880 integer width = 3543 integer height = 1148 integer taborder = 20 boolean bringtotop = true string dataobject = "dw_mtrl_structure_replace_mx" boolean hscrollbar = true boolean vscrollbar = true boolean hsplitscroll = true boolean rbutton_filter_use = true boolean titleclick_sort_use = true end type event rowfocuschanged;call super::rowfocuschanged;IF currentrow <=0 THEN RETURN this.selectrow(0,false) this.selectrow(currentrow,true) this.setrow(currentrow) end event event clicked;call super::clicked;IF row <= 0 THEN RETURN This.SelectRow(0,False) This.SelectRow(row,True) This.SetRow(row) end event type st_1 from statictext within w_mtrl_structure_replace_p integer x = 9 integer y = 196 integer width = 247 integer height = 48 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 long backcolor = 134217739 string text = "原物料" alignment alignment = center! boolean focusrectangle = false end type type st_2 from statictext within w_mtrl_structure_replace_p integer x = 9 integer y = 616 integer width = 247 integer height = 48 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 long backcolor = 134217739 string text = "替换物料" alignment alignment = center! boolean focusrectangle = false end type type cbx_1 from checkbox within w_mtrl_structure_replace_p integer x = 672 integer y = 2084 integer width = 197 integer height = 76 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 long backcolor = 134217739 string text = "全选" end type event clicked;Long ll_i dw_mx.SetRedraw(FALSE) FOR ll_i = 1 TO dw_mx.RowCount() IF THIS.Checked THEN dw_mx.Object.choice[ll_i] = 1 ELSE dw_mx.Object.choice[ll_i] = 0 END IF NEXT dw_mx.SetRedraw(TRUE) end event type cb_pset from uo_imflatbutton within w_mtrl_structure_replace_p integer x = 983 integer y = 2072 integer width = 631 integer taborder = 20 boolean bringtotop = true string text = "按比例设置新用料量" string normalpicname = "p1.bmp" integer picsize = 16 end type event clicked;call super::clicked;Long ll_i Decimal ld_rate Long ll_if_all Long ll_row Long ll_dec Long ll_way ll_row = dw_mx.GetRow() IF ll_row <= 0 THEN MessageBox('系统提示','请选择明细内容') RETURN END IF s_edit_index_tran s_ins_rate Open(w_prdpf_change_rate_edit) s_ins_rate = Message.PowerObjectParm ld_rate = s_ins_rate.b_decimal ll_if_all = s_ins_rate.b_long ll_dec = s_ins_rate.c_long ll_way = s_ins_rate.d_long IF ll_if_all = -1 THEN RETURN dw_mx.AcceptText() IF ll_if_all = 0 THEN IF ll_way = 0 THEN dw_mx.Object.u_prdpf_sonscale_new[ll_row] = Round(dw_mx.Object.u_prdpf_sonscale[ll_row] + ld_rate,ll_dec) ELSEIF ll_way = 1 THEN dw_mx.Object.u_prdpf_sonscale_new[ll_row] = Round(dw_mx.Object.u_prdpf_sonscale[ll_row] - ld_rate,ll_dec) ELSEIF ll_way = 2 THEN dw_mx.Object.u_prdpf_sonscale_new[ll_row] = Round(dw_mx.Object.u_prdpf_sonscale[ll_row] * ld_rate,ll_dec) ELSEIF ll_way = 3 THEN dw_mx.Object.u_prdpf_sonscale_new[ll_row] = Round(dw_mx.Object.u_prdpf_sonscale[ll_row] / ld_rate,ll_dec) END IF ELSEIF ll_if_all = 1 THEN dw_mx.SetRedraw(False) FOR ll_i = 1 To dw_mx.RowCount() IF dw_mx.Object.choice[ll_i] = 0 THEN CONTINUE IF ll_way = 0 THEN dw_mx.Object.u_prdpf_sonscale_new[ll_i] = Round(dw_mx.Object.u_prdpf_sonscale[ll_i] + ld_rate,ll_dec) ELSEIF ll_way = 1 THEN dw_mx.Object.u_prdpf_sonscale_new[ll_i] = Round(dw_mx.Object.u_prdpf_sonscale[ll_i] - ld_rate,ll_dec) ELSEIF ll_way = 2 THEN dw_mx.Object.u_prdpf_sonscale_new[ll_i] = Round(dw_mx.Object.u_prdpf_sonscale[ll_i] * ld_rate,ll_dec) ELSEIF ll_way = 3 THEN dw_mx.Object.u_prdpf_sonscale_new[ll_i] = Round(dw_mx.Object.u_prdpf_sonscale[ll_i] / ld_rate,ll_dec) END IF NEXT dw_mx.SetRedraw(True) END IF end event type gb_1 from groupbox within w_mtrl_structure_replace_p integer x = 151 integer y = 4 integer width = 2043 integer height = 452 integer taborder = 10 integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 long backcolor = 134217739 end type type gb_2 from groupbox within w_mtrl_structure_replace_p integer x = 151 integer y = 424 integer width = 2043 integer height = 452 integer taborder = 10 integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 long backcolor = 134217739 end type