$PBExportHeader$w_mtrl_structure.srw forward global type w_mtrl_structure from w_publ_pageretr end type type cb_moveone from commandbutton within w_mtrl_structure end type type cb_removeone from commandbutton within w_mtrl_structure end type type cb_moveall from commandbutton within w_mtrl_structure end type type cb_removeall from commandbutton within w_mtrl_structure end type type st_codetitle from statictext within w_mtrl_structure end type type st_codetitleb from statictext within w_mtrl_structure end type type gb_4 from groupbox within w_mtrl_structure end type type mle_pfgy from multilineedit within w_mtrl_structure end type type cb_print from uo_imflatbutton within w_mtrl_structure end type type cb_refresh_tree from uo_imflatbutton within w_mtrl_structure end type type cb_save from uo_imflatbutton within w_mtrl_structure end type type cb_edit from uo_imflatbutton within w_mtrl_structure end type type cb_audit from uo_imflatbutton within w_mtrl_structure end type type cb_pfcopy from uo_imflatbutton within w_mtrl_structure end type type cb_pfpaste from uo_imflatbutton within w_mtrl_structure end type type ddlb_storageid from uo_ddlb_storageid within w_mtrl_structure end type type cb_help from uo_imflatbutton within w_mtrl_structure end type type st_msg from statictext within w_mtrl_structure end type type tab_1 from tab within w_mtrl_structure end type type tabpage_1 from userobject within tab_1 end type type dw_mtrl_prdpfmx from u_dw_rbtnfilter within tabpage_1 end type type tabpage_1 from userobject within tab_1 dw_mtrl_prdpfmx dw_mtrl_prdpfmx end type type tabpage_2 from userobject within tab_1 end type type tv_2 from treeview within tabpage_2 end type type tabpage_2 from userobject within tab_1 tv_2 tv_2 end type type tab_1 from tab within w_mtrl_structure tabpage_1 tabpage_1 tabpage_2 tabpage_2 end type type cb_other from uo_imflatbutton within w_mtrl_structure end type type st_2 from statictext within w_mtrl_structure end type type st_3 from statictext within w_mtrl_structure end type type cb_xls from uo_imflatbutton within w_mtrl_structure end type type ddlb_mtrlorigin from uo_ddlb_mtrlorigin within w_mtrl_structure end type type cbx_packqty_cmpl from checkbox within w_mtrl_structure end type type ln_bar from line within w_mtrl_structure end type type ln_bar2 from line within w_mtrl_structure end type type r_bar from rectangle within w_mtrl_structure end type type ln_1 from line within w_mtrl_structure end type type ln_2 from line within w_mtrl_structure end type type ln_5 from line within w_mtrl_structure end type type ln_6 from line within w_mtrl_structure end type type cbx_auto_printid from checkbox within w_mtrl_structure end type type cbx_auto_zc from checkbox within w_mtrl_structure end type type cb_1 from commandbutton within w_mtrl_structure end type end forward global type w_mtrl_structure from w_publ_pageretr integer x = 14 integer y = 16 integer width = 3602 integer height = 2300 string title = "物料清单" boolean maxbox = true windowstate windowstate = maximized! event insert_childrow ( ) event ue_viewprint_gy ( ) event ue_viewprint ( ) event ue_f8 ( ) event ue_retrieve_info ( ) event ue_insertmx ( ) event ue_deletemx ( ) event ue_help ( ) event ue_viewprint_tree ( ) event ue_xls ( ) event ue_mtrl_info ( ) event ue_checkrand ( ) event ue_replace_p ( ) cb_moveone cb_moveone cb_removeone cb_removeone cb_moveall cb_moveall cb_removeall cb_removeall st_codetitle st_codetitle st_codetitleb st_codetitleb gb_4 gb_4 mle_pfgy mle_pfgy cb_print cb_print cb_refresh_tree cb_refresh_tree cb_save cb_save cb_edit cb_edit cb_audit cb_audit cb_pfcopy cb_pfcopy cb_pfpaste cb_pfpaste ddlb_storageid ddlb_storageid cb_help cb_help st_msg st_msg tab_1 tab_1 cb_other cb_other st_2 st_2 st_3 st_3 cb_xls cb_xls ddlb_mtrlorigin ddlb_mtrlorigin cbx_packqty_cmpl cbx_packqty_cmpl ln_bar ln_bar ln_bar2 ln_bar2 r_bar r_bar ln_1 ln_1 ln_2 ln_2 ln_5 ln_5 ln_6 ln_6 cbx_auto_printid cbx_auto_printid cbx_auto_zc cbx_auto_zc cb_1 cb_1 end type global w_mtrl_structure w_mtrl_structure type variables long obj_mtrlid=0 int obj_SAuditflag=0 string obj_pfcode='组装' Long cur_cmpl_zc = 0 string obj_mtrlcode='' string obj_source='' string obj_mtrlname='' long deep=0 long pfcopy_mtrlid=0 string pfcopy_pfcode='' string pfcopy_mtrlcode='' string pfcopy_source='' string pfcopy_mtrlname='' s_structuremx pfmx[] long p_pfmx=0 long cur_storageid = -1 int cur_mtrlorigin=0 long page_mtrlid=0 string ol_tvi_label datawindow dw_mtrl_prdpfmx treeview tv_1 string ls_newname Long ll_xls_billid,ll_xls_Templatesid String ls_xls_DefaultDataWindow String ins_openfile_log[] //用于退出后删除 Long ins_openfile_log_p = 0 //用于退出后删除 long cur_isuse long cur_auto_printid end variables forward prototypes public function integer wf_save () public function integer wf_checkrand (long checked_mtrlid) public function integer wf_changemtrl (long arg_mtrlid) public function integer wf_moveone (long sor_row) public function integer wf_removeone (long sor_row) public function integer wf_modefacechg () private function integer wf_retrieve_childrenmtrl (long arg_mtrlid) public function integer pf_treegrowth (long arg_handl, long arg_mtrlid, decimal arg_num, integer arg_lp) public function integer wf_pfcopy () public function integer wf_pfpaste () public subroutine wf_flagstatus_rf (integer arg_sauditflag) public function integer wf_maketree () public function integer wf_maketree_sub () public function integer wf_refresh_curuc (long arg_mtrlid) public function integer wf_xls_retrievedata (long arg_ationid, ref s_xls_billlist arg_str_billlist, ref uo_sendtoexcel arg_obj_st, ref string arg_msg) public subroutine wf_addlog_tempfilepathname (string arg_filepathname) public subroutine wf_del_tempfilepathname () public subroutine wf_add_mx () end prototypes event insert_childrow();long li_row li_row=dw_mtrl_prdpfmx.insertrow(0) dw_mtrl_prdpfmx.scrolltorow(li_row) dw_mtrl_prdpfmx.object.u_prdpf_printid[li_row] = li_row dw_mtrl_prdpfmx.SetColumn ('u_prdpf_printid') end event event ue_viewprint_gy();Long LS_ROW LS_ROW = dw_pageretr.GetRow() IF LS_ROW <= 0 THEN MessageBox('提示','没有打印目标单据!', Information!, OK! ) RETURN END IF String ls_pf ls_pf = obj_pfcode S_print_MSG LS_PRMSG String ls_windowname ls_windowname = THIS.ClassName ( ) String ls_old_dwname,ls_new_dwname = '' ls_old_dwname = 'dw_rp_prdstruct' ls_new_dwname = f_get_dwprint_dynamic_chname(ls_old_dwname,ls_windowname) IF ls_new_dwname = '' THEN ls_new_dwname = ls_old_dwname END IF LS_PRMSG.obj_dwNAME = ls_new_dwname LS_PRMSG.TAG_TEXT = '产品物料明细表[工艺]' LS_PRMSG.FILTER_STRING = '' LS_PRMSG.retr_pram_falg = 14 LS_PRMSG.PAGECH_FLAG = 0 LS_PRMSG.retr_pramnmb = dw_pageretr.Object.mtrlid[dw_pageretr.GetRow()] LS_PRMSG.retr_pramstr = ls_pf OpenWithParm(w_publ_preview,LS_PRMSG) end event event ue_viewprint(); Long ls_msgprintid ls_msgprintid = Message.LongParm SELECT dft_new_dwname INTO :ls_newname FROM sys_dft_dwprint_dynamic Where sys_dft_dwprint_dynamic.dwprintid = :ls_msgprintid USING sqlca; IF sqlca.SQLCode <> 0 THEN ls_newname = '' END IF Long LS_ROW LS_ROW = dw_pageretr.GetRow() IF LS_ROW <= 0 THEN MessageBox('提示','没有打印目标单据!',Information!,OK!) RETURN END IF S_print_MSG LS_PRMSG IF ls_newname <> '' THEN LS_PRMSG.obj_dwNAME = ls_newname ELSE LS_PRMSG.obj_dwNAME = 'dw_rp_prdstruct_yl' END IF LS_PRMSG.TAG_TEXT = '物料清单' LS_PRMSG.FILTER_STRING = '' LS_PRMSG.retr_pram_falg = 15 LS_PRMSG.PAGECH_FLAG = 0 LS_PRMSG.retr_pramnmb = dw_pageretr.Object.mtrlid[LS_ROW] OpenWithParm(w_publ_preview,LS_PRMSG) end event event ue_f8();//用于选择明细内容,被F8[默认]\dw_mtrl_prdpfmx.doubleclicked调用 IF NOT dw_edit_mode THEN RETURN Long child_row Long ins_storageid = 0 child_row = dw_mtrl_prdpfmx.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 = TRUE s_ch_tran.b_long = 2 Long chc = 1,ls_j dw_mtrl_prdpfmx.AcceptText() IF dw_mtrl_prdpfmx.GetRow() > 0 THEN s_ch_tran.arg_string_code = Trim(dw_mtrl_prdpfmx.Object.mtrlcode[dw_mtrl_prdpfmx.GetRow()]) 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 IF dw_mtrl_prdpfmx.GetRow() > 0 THEN IF dw_mtrl_prdpfmx.Object.mtrlid[child_row] <> 0 THEN child_row = dw_mtrl_prdpfmx.InsertRow (0) ELSE child_row = dw_mtrl_prdpfmx.GetRow() END IF ELSE child_row = dw_mtrl_prdpfmx.InsertRow (0) END IF dw_mtrl_prdpfmx.Object.u_prdpf_printid[child_row] = child_row dw_mtrl_prdpfmx.Object.mtrlcode[child_row] = S_INSCUST.mtrlcode[ls_j] dw_mtrl_prdpfmx.Object.unit[child_row] = S_INSCUST.unit[ls_j] dw_mtrl_prdpfmx.Object.mtrlid[child_row] = S_INSCUST.mtrlid[ls_j] dw_mtrl_prdpfmx.Object.mtrlname[child_row] = S_INSCUST.mtrlname[ls_j] dw_mtrl_prdpfmx.Object.u_mtrldef_mtrlengname[child_row] = S_INSCUST.mtrlengname[ls_j] dw_mtrl_prdpfmx.Object.u_mtrldef_mtrlmode[child_row] = S_INSCUST.mtrlmode[ls_j] dw_mtrl_prdpfmx.Object.u_mtrldef_mtrlsectype[child_row] = S_INSCUST.mtrlsectype[ls_j] dw_mtrl_prdpfmx.Object.u_mtrldef_zxmtrlmode[child_row] = S_INSCUST.zxmtrlmode[ls_j] IF NOT Len(Trim(dw_mtrl_prdpfmx.Object.u_prdpf_dscrp[child_row])) > 0 THEN dw_mtrl_prdpfmx.Object.u_prdpf_dscrp[child_row] = S_INSCUST.dscrp[ls_j] END IF END IF NEXT dw_mtrl_prdpfmx.SetFocus() END IF end event event ue_retrieve_info();Long ll_row Long ll_mtrlid ll_row = dw_pageretr.GetRow() IF ll_row <= 0 THEN ll_mtrlid = 0 ELSE ll_mtrlid = dw_pageretr.Object.mtrlid[ll_row] END IF IF IsValid(w_mtrl_info) THEN w_mtrl_info.WindowState = Normal! w_mtrl_info.ins_mtrlid = ll_mtrlid w_mtrl_info.wf_retrieve(ll_mtrlid) END IF end event event ue_deletemx;if not keydown(KeyControl!) then IF MessageBox ('提示',"是否确定要删除当前组成原料吗",Question!,YesNo! ) = 2 THEN RETURN end if long find_row=0,sor_row sor_row=dw_mtrl_prdpfmx.getrow() if sor_row<=0 then Beep(1) return end if wf_removeone(sor_row) end event event ue_help();Int i i = htmlhelpA(Handle(THIS), sys_help_chm, 0, THIS.Title+".html") end event event ue_viewprint_tree(); Long LS_ROW LS_ROW = dw_pageretr.GetRow() IF LS_ROW <= 0 THEN MessageBox('提示','没有打印目标单据!', Information!, OK! ) RETURN END IF String ls_pf ls_pf = obj_pfcode S_print_MSG LS_PRMSG String ls_windowname ls_windowname = THIS.ClassName ( ) String ls_old_dwname,ls_new_dwname = '' ls_old_dwname = 'dw_rp_prdstruct_tree' ls_new_dwname = f_get_dwprint_dynamic_chname(ls_old_dwname,ls_windowname) IF ls_new_dwname = '' THEN ls_new_dwname = ls_old_dwname END IF LS_PRMSG.obj_dwNAME = ls_new_dwname LS_PRMSG.TAG_TEXT = '产品物料明细表[树型结构]' LS_PRMSG.FILTER_STRING = '' LS_PRMSG.retr_pram_falg = 2 LS_PRMSG.PAGECH_FLAG = 0 LS_PRMSG.retr_pramnmb = dw_pageretr.Object.mtrlid[dw_pageretr.GetRow()] OpenWithParm(w_publ_preview,LS_PRMSG) end event event ue_xls();String arg_msg Long ll_Templatesid,ll_ationid ll_Templatesid = Message.LongParm ll_ationid = Long(Message.WordParm ) IF IsNull(ll_Templatesid) THEN ll_Templatesid = 0 IF IsNull(ll_ationid) THEN ll_ationid = 0 IF ll_Templatesid = 0 THEN RETURN ll_xls_Templatesid = ll_Templatesid uo_xls_constant uo_constant //Excel全局设置对象 uo_constant = CREATE uo_xls_constant uo_sendtoexcel obj_st //实例化数据处理对象 obj_st = CREATE uo_sendtoexcel obj_st.commit_transaction = sqlca //事务对象 建议显示设置 默认等于sqlca obj_st.uo_const = uo_constant //全局配置对象 s_xls_billlist str_billlist str_billlist = obj_st.of_getbillinfo(ll_Templatesid,arg_msg) //根据模版获取相应的单据信息 IF str_billlist.count <= 0 THEN MessageBox('错误',arg_msg) RETURN END IF if wf_xls_retrievedata(ll_ationid,str_billlist,obj_st,arg_msg) <> 1 then MessageBox('错误',arg_msg) return end if //发送数据 obj_st.EVENT oe_sendtoexcel(str_billlist) end event event ue_mtrl_info();Long ll_row ll_row = dw_pageretr.GetRow() IF ll_row <= 0 THEN MessageBox('提示','请选择物料', Information!, OK! ) RETURN END IF Long ll_mtrlid ll_mtrlid = dw_pageretr.Object.mtrlid[ll_row] IF IsValid(w_mtrl_info) THEN w_mtrl_info.WindowState = Normal! w_mtrl_info.ins_mtrlid = ll_mtrlid w_mtrl_info.wf_retrieve(ll_mtrlid) ELSE OpenWithParm(w_mtrl_info,ll_mtrlid) END IF return end event event ue_checkrand;//检查有否环// Long ls_cr_rsl,LS_i FOR LS_i = 1 TO dw_mtrl_prdpfmx.RowCount() ls_cr_rsl = wf_checkrand(dw_mtrl_prdpfmx.Object.mtrlid[LS_i]) IF ls_cr_rsl = 1 THEN MessageBox(String(dw_mtrl_prdpfmx.Object.mtrlid[LS_i]),'发现环!在 '+String(dw_mtrl_prdpfmx.Object.mtrlcode[LS_i])+' ,请核对!', Information!, OK! ) RETURN ELSEIF ls_cr_rsl < 0 THEN MessageBox('系统提示','因为网络或其他原因导致查环操作失败!['+String(dw_mtrl_prdpfmx.Object.mtrlcode[LS_i])+']', Information!, OK! ) RETURN END IF NEXT MessageBox('系统提示','没有发现闭环!', Information!, OK! ) end event event ue_replace_p();IF NOT f_power_ind(32,sys_msg_pow) THEN MessageBox(publ_operator,sys_msg_pow) RETURN END IF Long ll_row Long ll_mtrlid ll_row = dw_pageretr.GetRow() IF ll_row <= 0 THEN ll_mtrlid = 0 ELSE ll_mtrlid = dw_pageretr.Object.mtrlid[ll_row] END IF IF ll_mtrlid = 0 THEN MessageBox('系统提示','请选择物料') RETURN END IF OpenWithParm(w_mtrl_structure_replace_p,ll_mtrlid) wf_changemtrl(obj_mtrlid) //wf_maketree2() end event public function integer wf_save ();//wf_save //检查值有效性 //查询环 //删除原有明细 //插入新明细 // // Long rslt = 1,ls_i,ls_cr_rsl String arg_msg String u_prdpf_pfgroup,u_prdpf_dscrp Decimal u_prdpf_sonscale,u_prdpf_sonloss,u_prdpf_sondecloss,u_prdpf_sonahead,u_prdpf_updownrate Long ll_sonmtrlid,u_prdpf_ifreputate,u_prdpf_ifover String ls_status Long u_prdpf_printid,ll_printid_new Long u_prdpf_wrkgrpid String ls_woodcode,ls_pcode String ls_mtrlcode,u_prdpf_promode,u_prdpf_pfgroupmode,u_prdpf_pfklmode Decimal u_prdpf_pfgroupqty,ld_qgqty Long u_prdpf_dipztype dw_mtrl_prdpfmx.AcceptText() ////检查有否环 // Open(w_sys_wait_jdt) //打开进度窗口 w_sys_wait_jdt.wf_set_msg('正在检查新BOM组成数量的合法性,请稍候...') IF cur_cmpl_zc = 1 THEN FOR ls_i = 1 To dw_mtrl_prdpfmx.RowCount() IF dw_mtrl_prdpfmx.Object.u_prdpf_qgqty[ls_i] = 0 THEN CONTINUE dw_mtrl_prdpfmx.Object.u_prdpf_sonscale[ls_i] = 1 / dw_mtrl_prdpfmx.Object.u_prdpf_qgqty[ls_i] * dw_mtrl_prdpfmx.Object.u_prdpf_pfgroupqty[ls_i] Next END IF dw_mtrl_prdpfmx.AcceptText() FOR ls_i = 1 To dw_mtrl_prdpfmx.RowCount() IF dw_mtrl_prdpfmx.Object.mtrlid[ls_i] <= 0 THEN CONTINUE ls_mtrlcode = dw_mtrl_prdpfmx.Object.mtrlcode[ls_i] IF dw_mtrl_prdpfmx.Object.u_prdpf_sonscale[ls_i] = 0 THEN arg_msg = '行:'+String(ls_i)+',物料:'+ls_mtrlcode+',请输入组成数量!' rslt = 0 GOTO ext END IF IF dw_mtrl_prdpfmx.Object.u_prdpf_sonscale[ls_i] < 0 THEN arg_msg = '行:'+String(ls_i)+',物料:'+ls_mtrlcode+',不合理组成数量!' rslt = 0 GOTO ext END IF IF dw_mtrl_prdpfmx.Object.u_prdpf_wrkgrpid[ls_i] <= 0 THEN arg_msg = '行:'+String(ls_i)+',物料:'+ls_mtrlcode+',请选择领料组!' rslt = 0 GOTO ext END IF NEXT // w_sys_wait_jdt.wf_accepttol(dw_mtrl_prdpfmx.RowCount()) //初始化进度条 w_sys_wait_jdt.wf_set_msg('正在检查新BOM是否存在环,请稍候...') FOR ls_i = 1 To dw_mtrl_prdpfmx.RowCount() IF dw_mtrl_prdpfmx.Object.mtrlid[ls_i] <= 0 THEN CONTINUE //处理 w_sys_wait_jdt.wf_set_msg('正在检查新BOM是否存在环,请稍候...'+'行:'+String(ls_i)+',['+Trim(dw_mtrl_prdpfmx.Object.mtrlcode[ls_i])+']') ls_cr_rsl = wf_checkrand(dw_mtrl_prdpfmx.Object.mtrlid[ls_i]) IF ls_cr_rsl = 1 THEN arg_msg = '行:'+String(ls_i)+',发现环!在 '+String(dw_mtrl_prdpfmx.Object.mtrlcode[ls_i])+' ,请核对!' rslt = 0 GOTO ext ELSEIF ls_cr_rsl < 0 THEN arg_msg = '查询闭环操作失败!['+String(dw_mtrl_prdpfmx.Object.mtrlcode[ls_i])+']' rslt = 0 GOTO ext END IF w_sys_wait_jdt.wf_inc(ls_i) //进度 NEXT DELETE FROM u_prdpf WHERE ( u_prdpf.mtrlid = :obj_mtrlid ) AND ( u_prdpf.pfcode = :obj_pfcode ); IF sqlca.SQLCode <> 0 THEN arg_msg = "删除原始BOM操作失败,"+sqlca.SQLErrText rslt = 0 GOTO ext END IF //插入新记录 w_sys_wait_jdt.wf_accepttol(dw_mtrl_prdpfmx.RowCount()) //初始化进度条 w_sys_wait_jdt.wf_set_msg('正在生成新BOM,请稍候...') FOR ls_i = 1 To dw_mtrl_prdpfmx.RowCount() IF dw_mtrl_prdpfmx.Object.mtrlid[ls_i] <= 0 THEN CONTINUE IF dw_mtrl_prdpfmx.Object.u_prdpf_sonscale[ls_i] = 0 THEN CONTINUE //处理 w_sys_wait_jdt.wf_set_msg('正在生成新BOM,请稍候...'+'['+Trim(dw_mtrl_prdpfmx.Object.mtrlcode[ls_i])+']') ll_printid_new++ u_prdpf_sonscale = dw_mtrl_prdpfmx.Object.u_prdpf_sonscale[ls_i] u_prdpf_sonloss = dw_mtrl_prdpfmx.Object.u_prdpf_sonloss[ls_i] u_prdpf_sondecloss = dw_mtrl_prdpfmx.Object.u_prdpf_sondecloss[ls_i] u_prdpf_sonahead = 0 u_prdpf_pfgroup = dw_mtrl_prdpfmx.Object.u_prdpf_pfgroup[ls_i] ll_sonmtrlid = dw_mtrl_prdpfmx.Object.mtrlid[ls_i] u_prdpf_dscrp = Trim(dw_mtrl_prdpfmx.Object.u_prdpf_dscrp[ls_i]) u_prdpf_promode = dw_mtrl_prdpfmx.Object.u_prdpf_promode[ls_i] u_prdpf_pfgroupmode = dw_mtrl_prdpfmx.Object.u_prdpf_pfgroupmode[ls_i] u_prdpf_pfklmode = dw_mtrl_prdpfmx.Object.u_prdpf_pfklmode[ls_i] u_prdpf_pfgroupqty = dw_mtrl_prdpfmx.Object.u_prdpf_pfgroupqty[ls_i] u_prdpf_updownrate = 0 u_prdpf_ifreputate = 0 u_prdpf_ifover = dw_mtrl_prdpfmx.Object.u_prdpf_ifover[ls_i] //改了 u_prdpf_dipztype = dw_mtrl_prdpfmx.Object.u_prdpf_dipztype[ls_i] IF IsNull(u_prdpf_ifover) THEN u_prdpf_ifover = 0 IF IsNull(u_prdpf_dipztype) THEN u_prdpf_dipztype = -1 IF cur_auto_printid = 1 THEN u_prdpf_printid = ll_printid_new ELSE u_prdpf_printid = dw_mtrl_prdpfmx.Object.u_prdpf_printid[ls_i] END IF u_prdpf_wrkgrpid = dw_mtrl_prdpfmx.Object.u_prdpf_wrkgrpid[ls_i] ls_status = Trim(dw_mtrl_prdpfmx.Object.u_prdpf_status[ls_i]) ls_woodcode = Trim(dw_mtrl_prdpfmx.Object.u_prdpf_woodcode[ls_i]) ls_pcode = Trim(dw_mtrl_prdpfmx.Object.u_prdpf_pcode[ls_i]) ld_qgqty = dw_mtrl_prdpfmx.Object.u_prdpf_qgqty[ls_i] INSERT INTO u_prdpf ( mtrlid, pfcode, sonmtrlid, sonscale, sonloss, sondecloss, sonahead, dscrp, updownrate, ifreputate, ifover, dipztype, pfgroup, promode, pfgroupmode, pfklmode, pfgroupqty, printid, wrkgrpid, status, pcode, woodcode, qgqty) VALUES ( :obj_mtrlid, :obj_pfcode, :ll_sonmtrlid, :u_prdpf_sonscale, :u_prdpf_sonloss, :u_prdpf_sondecloss, :u_prdpf_sonahead, :u_prdpf_dscrp, :u_prdpf_updownrate, :u_prdpf_ifreputate, :u_prdpf_ifover, :u_prdpf_dipztype, :u_prdpf_pfgroup, :u_prdpf_promode, :u_prdpf_pfgroupmode, :u_prdpf_pfklmode, :u_prdpf_pfgroupqty, :u_prdpf_printid, :u_prdpf_wrkgrpid, :ls_status, :ls_pcode, :ls_woodcode, :ld_qgqty) ; IF sqlca.SQLCode <> 0 THEN arg_msg ="行"+string(ls_i)+" 物料:" +Trim(dw_mtrl_prdpfmx.Object.mtrlcode[ls_i])+" 插入新BOM操作失败,"+sqlca.SQLErrText rslt = 0 GOTO ext END IF dw_mtrl_prdpfmx.Object.u_prdpf_printid[ls_i] = u_prdpf_printid w_sys_wait_jdt.wf_inc(ls_i) //进度 NEXT //Close(w_sys_wait_jdt) //==================================================================== // 工艺说明 //==================================================================== String ls_pf_gy ls_pf_gy = mle_pfgy.Text UPDATE u_mtrl_structure_gy SET pfgy = :ls_pf_gy WHERE ( mtrlid = :obj_mtrlid ) AND ( pfcode = :obj_pfcode ) ; IF sqlca.SQLCode = 0 THEN IF sqlca.SQLNRows = 0 THEN INSERT Into u_mtrl_structure_gy (mtrlid,pfcode, pfgy ) Values (:obj_mtrlid,:obj_pfcode, :ls_pf_gy); IF sqlca.SQLCode <> 0 THEN arg_msg = "插入新清单工艺说明操作失败,"+sqlca.SQLErrText rslt = 0 GOTO ext END IF END IF ELSE arg_msg = "更新清单工艺说明操作失败,"+sqlca.SQLErrText rslt = 0 GOTO ext END IF //DELETE FROM u_mtrl_structure_gy // WHERE ( u_mtrl_structure_gy.mtrlid = :obj_mtrlid ) AND // ( u_mtrl_structure_gy.pfcode = :obj_pfcode ) ; //IF sqlca.SQLCode <> 0 THEN // arg_msg = "删除旧清单工艺说明操作失败,"+sqlca.SQLErrText // rslt = 0 // GOTO ext //END IF // //INSERT Into u_mtrl_structure_gy (mtrlid,pfcode, pfgy ) Values (:obj_mtrlid,:obj_pfcode, :ls_pf_gy); //IF sqlca.SQLCode <> 0 THEN // arg_msg = "插入新清单工艺说明操作失败,"+sqlca.SQLErrText // rslt = 0 // GOTO ext //END IF //==================================================================== // 更新时间 //==================================================================== UPDATE u_mtrldef SET sopdate = getdate() , spopemp = :publ_operator Where mtrlid = :obj_mtrlid; IF sqlca.SQLCode <> 0 THEN arg_msg = "更新产品物料构成修改时间操作失败,"+sqlca.SQLErrText rslt = 0 GOTO ext END IF wf_changemtrl(obj_mtrlid) page_mtrlid = obj_mtrlid ext: Close(w_sys_wait_jdt) IF rslt = 0 THEN ROLLBACK; MessageBox ("提示",arg_msg, Information!, OK! ) ELSE COMMIT; MessageBox ("提示","清单保存成功!", Information!, OK! ) wf_maketree() END IF RETURN rslt end function public function integer wf_checkrand (long checked_mtrlid);//wf_checkrand IF checked_mtrlid = obj_mtrlid THEN RETURN 1 Long ls_mtrlid Long rt_b,rt_s,count Long mtrlid[],ls_i DECLARE pf_cur CURSOR FOR SELECT u_PrdPF.SonMtrlid FROM u_PrdPF Where ( u_PrdPF.mtrlid = :checked_mtrlid ); OPEN pf_cur; count = 1 FETCH pf_cur Into :mtrlid[count]; DO WHILE sqlca.SQLCode = 0 count++ FETCH pf_cur Into :mtrlid[count]; LOOP count = count - 1 CLOSE pf_cur; FOR ls_i = 1 To count rt_b = wf_checkrand(mtrlid[ls_i]) IF rt_b <> 0 THEN RETURN rt_b NEXT RETURN 0 //DO // //LOOP WHILE end function public function integer wf_changemtrl (long arg_mtrlid); SELECT u_mtrldef.mtrlname, u_mtrldef.mtrlcode, u_mtrldef.SAuditflag INTO :obj_mtrlname, :obj_mtrlcode, :obj_SAuditflag FROM u_mtrldef WHERE u_mtrldef.mtrlid = :arg_mtrlid ; if sqlca.sqlcode<>0 then obj_mtrlid=0 obj_SAuditflag=0 return 0 end if obj_mtrlid=arg_mtrlid st_codetitle.text=" "+trim(obj_mtrlname)+'/'+trim(obj_mtrlcode) +' 清单' wf_retrieve_childrenmtrl(obj_mtrlid) sle_usual_query.setfocus() wf_flagstatus_rf(obj_SAuditflag) return 1 end function public function integer wf_moveone (long sor_row);//wf_moveone long new_row if sor_row<=0 then return 0 end if new_row=dw_mtrl_prdpfmx.insertrow(dw_mtrl_prdpfmx.rowcount()) dw_mtrl_prdpfmx.object.u_prdpf_printid[new_row] = new_row dw_mtrl_prdpfmx.object.mtrlcode[new_row]=dw_pageretr.object.mtrlcode[sor_row] dw_mtrl_prdpfmx.object.u_mtrldef_mtrlmode[new_row]=dw_pageretr.object.mtrlmode[sor_row] dw_mtrl_prdpfmx.object.mtrlname[new_row]=dw_pageretr.object.mtrlname[sor_row] dw_mtrl_prdpfmx.object.unit[new_row]=dw_pageretr.object.unit[sor_row] dw_mtrl_prdpfmx.object.mtrlid[new_row] =dw_pageretr.object.mtrlid[sor_row] dw_mtrl_prdpfmx.object.u_prdpf_dscrp[new_row] =dw_pageretr.object.dscrp[sor_row] return 1 end function public function integer wf_removeone (long sor_row);//wf_removeone if sor_row<=0 then return 0 end if dw_mtrl_prdpfmx.deleterow(sor_row) dw_mtrl_prdpfmx.triggerevent(rowfocuschanged!) return 1 end function public function integer wf_modefacechg ();//wf_modefacechg Int LS_INT Int child_column_int = 18//可修改的前N个字段 IF dw_edit_mode THEN cb_save.Enabled = TRUE cb_edit.Text = '放弃&E' cb_edit.normalpicname = 'undo.bmp' cb_removeall.Enabled = TRUE cb_removeone.Enabled = TRUE cb_moveall.Enabled = TRUE cb_moveone.Enabled = TRUE cb_pfpaste.Enabled = TRUE dw_pageretr.Title = '供选择物料' mle_pfgy.DisplayOnly = FALSE cb_audit.Enabled = FALSE cb_print.Enabled = FALSE FOR LS_INT = 1 TO child_column_int dw_mtrl_prdpfmx.SetTabOrder (LS_INT,LS_INT*10 ) NEXT dw_mtrl_prdpfmx.SetFocus() if dw_mtrl_prdpfmx.rowcount()<=0 then this.triggerevent('insert_childrow') end if cb_refresh_tree.Enabled = FALSE ELSE cb_save.Enabled = FALSE cb_edit.Text = '修改&E' cb_edit.normalpicname = 'open.bmp' cb_removeall.Enabled = FALSE cb_removeone.Enabled = FALSE cb_moveall.Enabled = FALSE cb_moveone.Enabled = FALSE cb_pfpaste.Enabled = FALSE dw_pageretr.Title = '当前的清单产品(物料)' mle_pfgy.DisplayOnly = TRUE cb_audit.Enabled = TRUE cb_print.Enabled = TRUE FOR LS_INT = 1 TO child_column_int dw_mtrl_prdpfmx.SetTabOrder (LS_INT, 0) NEXT cb_refresh_tree.Enabled = TRUE END IF cb_edit.of_init_draw() cb_edit.of_paint() cb_edit.triggerevent('textchange') RETURN 0 end function private function integer wf_retrieve_childrenmtrl (long arg_mtrlid);//wf_retrieve_childrenmtrl Int rslt = 1 String ls_pf,l_pf_gy ls_pf = obj_pfcode obj_pfcode = ls_pf dw_mtrl_prdpfmx.Retrieve(arg_mtrlid,ls_pf) //============================================================================== datawindowchild childdw dw_mtrl_prdpfmx.SetTransObject (sqlca) dw_mtrl_prdpfmx.GetChild("u_prdpf_wrkgrpid",childdw) childdw.SetTransObject (sqlca) childdw.InsertRow(0) //============================================================================== SELECT u_mtrl_structure_gy.pfgy INTO :l_pf_gy FROM u_mtrl_structure_gy WHERE ( u_mtrl_structure_gy.mtrlid = :obj_mtrlid ) AND ( u_mtrl_structure_gy.pfcode = :obj_pfcode ) ; IF sqlca.SQLCode <> 0 AND sqlca.SQLCode <> 100 THEN MessageBox('提示','查询清单工艺说明内容失败!', Information!, OK! ) END IF mle_pfgy.Text = l_pf_gy wf_maketree() RETURN rslt end function public function integer pf_treegrowth (long arg_handl, long arg_mtrlid, decimal arg_num, integer arg_lp);//pf_treegrowth(arg_handl,arg_mtrlid,arg_num,arg_lp) long rslt=1 decimal Sonscale, SonLoss, SonDECLosS, Sonahead,num long SonMtrlid,count=0,ls_i string mtrlcode, mtrlname string ls_pf='' s_pfmx ls_s_pfmx[] //if arg_lp=2 then ls_pf=obj_pfcode //首层可以选择不同配方 ls_pf=obj_pfcode long handl deep++ if deep>1000 then //防止死递归 return 0 end if DECLARE pf_cur CURSOR FOR SELECT u_PrdPF.Sonscale, u_PrdPF.SonLoss, u_PrdPF.SonDECLosS, u_PrdPF.Sonahead, u_PrdPF.SonMtrlid, u_mtrldef.mtrlcode, u_mtrldef.mtrlname FROM u_PrdPF, u_mtrldef WHERE ( u_PrdPF.SonMtrlid = u_mtrldef.mtrlid ) and ( ( u_PrdPF.mtrlid = :arg_mtrlid ) AND ( u_PrdPF.pfcode = :ls_pf ) ); open pf_cur; count=1 fetch pf_cur into :ls_s_pfmx[count].Sonscale,:ls_s_pfmx[count].SonLoss,& :ls_s_pfmx[count].SonDECLosS,:ls_s_pfmx[count].Sonahead,& :ls_s_pfmx[count].SonMtrlid,:ls_s_pfmx[count].mtrlcode,:ls_s_pfmx[count].mtrlname; do while sqlca.sqlcode=0 count++ fetch pf_cur into :ls_s_pfmx[count].Sonscale,:ls_s_pfmx[count].SonLoss,& :ls_s_pfmx[count].SonDECLosS,:ls_s_pfmx[count].Sonahead,& :ls_s_pfmx[count].SonMtrlid,:ls_s_pfmx[count].mtrlcode,:ls_s_pfmx[count].mtrlname; loop count=count - 1 close pf_cur; for ls_i=1 to count if ls_s_pfmx[ls_i].SonLoss<>1 then num=arg_num*ls_s_pfmx[ls_i].Sonscale/(1 - ls_s_pfmx[ls_i].SonLoss)+ls_s_pfmx[ls_i].SonDECLosS else num=0 end if handl=tv_1.insertitemsort(arg_handl,ls_s_pfmx[ls_i].mtrlcode+'['+ls_s_pfmx[ls_i].mtrlname+']*'+string(num,'#0.####'),arg_lp) //生成树 pf_treegrowth(handl,ls_s_pfmx[ls_i].SonMtrlid,num,arg_lp+1) //下级生成树 next return 1 end function public function integer wf_pfcopy ();//wf_pfcopy //记录当前复制的产品 //记录复制的明细内容 //界面提示 IF dw_mtrl_prdpfmx.RowCount() = 0 THEN st_msg.Text = '' pfcopy_mtrlid = 0 RETURN 0 END IF Long ls_i = 0 //记录当前复制的产品 pfcopy_mtrlid = obj_mtrlid pfcopy_pfcode = obj_pfcode pfcopy_mtrlcode = obj_mtrlcode pfcopy_source = obj_source pfcopy_mtrlname = obj_mtrlname FOR ls_i = 1 TO dw_mtrl_prdpfmx.RowCount() pfmx[ls_i].sonscale = dw_mtrl_prdpfmx.Object.u_prdpf_sonscale[ls_i] // 注释开始 pfmx[ls_i].sonloss = dw_mtrl_prdpfmx.Object.u_prdpf_sonloss[ls_i] pfmx[ls_i].sondecloss = dw_mtrl_prdpfmx.Object.u_prdpf_sondecloss[ls_i] // pfmx[ls_i].sonahead = dw_mtrl_prdpfmx.Object.u_prdpf_sonahead[ls_i] // 注释结束 pfmx[ls_i].mtrlcode = dw_mtrl_prdpfmx.Object.mtrlcode[ls_i] pfmx[ls_i].mtrlid = dw_mtrl_prdpfmx.Object.mtrlid[ls_i] pfmx[ls_i].mtrlname = dw_mtrl_prdpfmx.Object.mtrlname[ls_i] pfmx[ls_i].unit = dw_mtrl_prdpfmx.Object.unit[ls_i] pfmx[ls_i].planprice = dw_mtrl_prdpfmx.Object.u_mtrldef_planprice[ls_i] // 注释开始 pfmx[ls_i].promode= dw_mtrl_prdpfmx.Object.u_prdpf_promode[ls_i] pfmx[ls_i].pfgroup = dw_mtrl_prdpfmx.Object.u_prdpf_pfgroup[ls_i] pfmx[ls_i].pfgroupmode = dw_mtrl_prdpfmx.Object.u_prdpf_pfgroupmode[ls_i] pfmx[ls_i].pfgroupqty = dw_mtrl_prdpfmx.Object.u_prdpf_pfgroupqty[ls_i] pfmx[ls_i].pfklmode = dw_mtrl_prdpfmx.Object.u_prdpf_pfklmode[ls_i] // 注释结束 pfklmode pfmx[ls_i].dscrp = dw_mtrl_prdpfmx.Object.u_prdpf_dscrp[ls_i] // 注释开始 // pfmx[ls_i].updownrate = dw_mtrl_prdpfmx.Object.u_prdpf_updownrate[ls_i] // pfmx[ls_i].ifover = dw_mtrl_prdpfmx.Object.u_prdpf_ifover[ls_i] // pfmx[ls_i].ifreputate = dw_mtrl_prdpfmx.Object.u_prdpf_ifreputate[ls_i] pfmx[ls_i].wrkgrpid = dw_mtrl_prdpfmx.Object.u_prdpf_wrkgrpid[ls_i] // 注释结束 pfmx[ls_i].status = dw_mtrl_prdpfmx.Object.u_prdpf_status[ls_i] p_pfmx = ls_i NEXT st_msg.Text = '已复制 产品: '+pfcopy_mtrlcode+'/'+pfcopy_mtrlname+' 清单: '+pfcopy_pfcode RETURN 0 end function public function integer wf_pfpaste ();//wf_pfpaste //没有复制则返回 //循环删除原有的明细 //循环写入新明细 Long ls_i = 0,ls_row IF NOT dw_edit_mode THEN RETURN 0 IF pfcopy_mtrlid = 0 THEN RETURN 0 //DO WHILE dw_mtrl_prdpfmx.RowCount() > 0 // dw_mtrl_prdpfmx.DeleteRow(0) //LOOP FOR ls_i = 1 TO p_pfmx ls_row = dw_mtrl_prdpfmx.InsertRow(0) dw_mtrl_prdpfmx.Object.u_prdpf_printid[ls_row] = ls_row dw_mtrl_prdpfmx.Object.u_prdpf_sonscale[ls_row] = pfmx[ls_i].sonscale // 注释开始 // dw_mtrl_prdpfmx.Object.u_prdpf_sonloss[ls_row] = pfmx[ls_i].sonloss // dw_mtrl_prdpfmx.Object.u_prdpf_sondecloss[ls_row] = pfmx[ls_i].sondecloss // dw_mtrl_prdpfmx.Object.u_prdpf_sonahead[ls_row] = pfmx[ls_i].sonahead // 注释结束 dw_mtrl_prdpfmx.Object.mtrlcode[ls_row] = pfmx[ls_i].mtrlcode dw_mtrl_prdpfmx.Object.mtrlid[ls_row] = pfmx[ls_i].mtrlid dw_mtrl_prdpfmx.Object.mtrlname[ls_row] = pfmx[ls_i].mtrlname dw_mtrl_prdpfmx.Object.unit[ls_row] = pfmx[ls_i].unit dw_mtrl_prdpfmx.Object.u_mtrldef_planprice[ls_row] = pfmx[ls_i].planprice // 注释开始 dw_mtrl_prdpfmx.Object.u_prdpf_promode[ls_row] = pfmx[ls_i].promode dw_mtrl_prdpfmx.Object.u_prdpf_pfgroup[ls_row] = pfmx[ls_i].pfgroup dw_mtrl_prdpfmx.Object.u_prdpf_pfgroupmode[ls_row] = pfmx[ls_i].pfgroupmode dw_mtrl_prdpfmx.Object.u_prdpf_pfgroupqty[ls_row] = pfmx[ls_i].pfgroupqty dw_mtrl_prdpfmx.Object.u_prdpf_pfklmode[ls_row] = pfmx[ls_i].pfklmode // 注释结束 dw_mtrl_prdpfmx.Object.u_prdpf_dscrp[ls_row] = pfmx[ls_i].dscrp // 注释开始 // dw_mtrl_prdpfmx.Object.u_prdpf_updownrate[ls_row] = pfmx[ls_i].updownrate // dw_mtrl_prdpfmx.Object.u_prdpf_ifover[ls_row] = pfmx[ls_i].ifover // dw_mtrl_prdpfmx.Object.u_prdpf_ifreputate[ls_row] = pfmx[ls_i].ifreputate dw_mtrl_prdpfmx.Object.u_prdpf_wrkgrpid[ls_row] = pfmx[ls_i].wrkgrpid // // 注释结束 dw_mtrl_prdpfmx.Object.u_prdpf_status[ls_row] = pfmx[ls_i].status NEXT RETURN 0 end function public subroutine wf_flagstatus_rf (integer arg_sauditflag);IF arg_sauditflag = 1 THEN cb_audit.Text = '撤审' cb_audit.normalpicname = 'caudit.bmp' ELSE cb_audit.Text = '审核' cb_audit.normalpicname = 'audit.bmp' END IF cb_audit.of_init_draw() cb_audit.of_paint() cb_audit.TriggerEvent('ue_textchange') end subroutine public function integer wf_maketree ();//wf_maketree() long hand deep=1 long tvi_hdl = 0 DO UNTIL tv_1.FindItem(RootTreeItem!, 0) = -1 tv_1.DeleteItem(tvi_hdl) LOOP hand=tv_1.insertitemlast(0,obj_mtrlcode+'['+obj_mtrlname+'] '+obj_pfcode,1) pf_treegrowth(hand,obj_mtrlid,1,2) tv_1.expanditem(hand) return 0 end function public function integer wf_maketree_sub ();//wf_maketree_sub() long hand long ll_tvi,ll_tvi_child ll_tvi = tv_1.FindItem(CurrentTreeItem!, 0) ll_tvi_child=tv_1.FindItem(ChildTreeItem!, ll_tvi) DO UNTIL ll_tvi_child = -1 tv_1.DeleteItem(ll_tvi_child) ll_tvi_child=tv_1.FindItem(ChildTreeItem!, ll_tvi) LOOP pf_treegrowth(ll_tvi,obj_mtrlid,1,2) tv_1.expanditem(ll_tvi) return 0 end function public function integer wf_refresh_curuc (long arg_mtrlid); Int rslt = 1 IF arg_mtrlid <= 0 OR IsNull(arg_mtrlid) THEN rslt = 0 GOTO ext END IF Long uc_row uc_row = dw_pageretr.GetRow() IF uc_row <= 0 THEN rslt = 0 GOTO ext END IF Int sauditflag String saudit_emp DateTime saudit_date SELECT sauditflag, saudit_emp, saudit_date INTO :sauditflag, :saudit_emp, :saudit_date FROM u_mtrldef Where mtrlid = :arg_mtrlid; IF sqlca.SQLCode <> 0 THEN MessageBox('提示',"查询操作失败(错误订单唯一码)", Information!, OK! ) rslt = 0 GOTO ext END IF dw_pageretr.Object.sauditflag[uc_row] = sauditflag dw_pageretr.Object.saudit_emp[uc_row] = saudit_emp dw_pageretr.Object.saudit_date[uc_row] = saudit_date ext: RETURN rslt end function public function integer wf_xls_retrievedata (long arg_ationid, ref s_xls_billlist arg_str_billlist, ref uo_sendtoexcel arg_obj_st, ref string arg_msg);Long LS_ROW,ll_mtrlid_obj,i LS_ROW = dw_pageretr.GetRow() IF LS_ROW <= 0 THEN arg_msg = '没有目标单据!' RETURN 0 END IF //修改点:获取 指定retriev参数 //ll_id = dw_1.Object.#1[LS_ROW] //ll_scid = dw_1.Object.scid[LS_ROW] ll_mtrlid_obj = obj_mtrlid //查询所选模版是否含有图片信息 Long ll_ifpic Long ll_classid SELECT ifpic INTO :ll_ifpic FROM U_XLS_Templates Where id = :ll_xls_Templatesid; IF sqlca.SQLCode <> 0 THEN ll_ifpic = 0 END IF Long ll_i,ll_j Long ll_mtrlid Long ll_fileid Blob ls_filedata SetNull(ls_filedata) String Pathname,ls_filename,ls_filetype String errmsg uo_fj_mng_billtype ls_uo_fjbt ls_uo_fjbt = CREATE uo_fj_mng_billtype ////可选设置/ // arg_obj_st.uo_const.create_new_pwd( ) //创建随机密码 IF sys_option_xls_ifuse_passwd = 1 THEN arg_obj_st.uo_const.pwd = Trim(sys_option_xls_user_passwd) //默认加密密码 默认为随即密码 Boolean xls_locked xls_locked = Not (sys_option_xls_lock = 1) // Excel 的可选设置 IF arg_obj_st.of_setoption(arg_ationid, xls_locked,TRUE,arg_msg) <> 1 THEN RETURN 0 END IF s_xls_pic_list s_pic //结构数组-用于保存图片路径 FOR i = 1 TO arg_str_billlist.count ////可选操作/ // arg_str_billlist.bill[i].ds_data = CREATE datastore // arg_str_billlist.bill[i].ds_data.DataObject = arg_str_billlist.bill[i].datawindow // arg_str_billlist.bill[i].ds_data.SetTransObject(sqlca) arg_str_billlist.bill[i].ds_data.Retrieve(ll_mtrlid_obj ) IF ll_ifpic = 1 THEN //如果含有图片信息,则查询本类型单据需要带出哪类附件 SELECT classid INTO :ll_classid FROM u_billpic_fileclass Where (billtype = 202); IF sqlca.SQLCode <> 0 THEN ll_classid = 0 END IF IF ll_classid > 0 THEN //如果已经指定好附件类型,则循环明细表查询每个明细的图片信息. If arg_str_billlist.bill[i].ds_data.RowCount() > 0 THEN //设置图片路径 ///(arg_str_billlist.bill[i].datawindow = 'dw_xls_prdstruct_mx_tree' or arg_str_billlist.bill[i].datawindow = 'dw_xls_prdstruct_mx_tree2' ) AND FOR ll_j = 1 TO arg_str_billlist.bill[i].ds_data.RowCount() if arg_str_billlist.bill[i].datawindow = 'dw_xls_prdstruct_mx_tree' then ll_mtrlid = arg_str_billlist.bill[i].ds_data.Object.u_prdpf_sonmtrlid[ll_j] else ll_mtrlid = arg_str_billlist.bill[i].ds_data.Object.u_mtrldef_mtrlid[ll_j] end if //取该附件类型中的第一个附件. SELECT top 1 fileid,DisplayName,FileType INTO :ll_fileid,:ls_filename,:ls_filetype FROM u_file WHERE relid = :ll_mtrlid AND classid = :ll_classid AND (filetype = 'bmp' OR filetype = 'rle' OR filetype = 'wmf' OR filetype = 'tif' OR filetype = 'jpg' OR filetype = 'gif' OR filetype = 'jpeg') USING sys_fileDB_sqlca; IF sys_fileDB_sqlca.SQLCode <> 0 THEN ll_fileid = 0 END IF IF ll_fileid > 0 THEN Pathname = sys_cur_path+ins_fjtemppath+'\'+String(Today(),'yymmdd')+String(Now(),'hhmmss')+'_'+ls_filename+'.'+ls_filetype IF Trim(Pathname) <> '' THEN IF ls_uo_fjbt.uf_getfjbolb_fromdb( ll_fileid, ls_filedata, sys_fileDB_sqlca, arg_msg) = 0 THEN RETURN 0 END IF IF f_saveblobtofile(ls_filedata,Pathname,errmsg) = 0 THEN RETURN 0 ELSE s_pic.path[ll_j] = Pathname //记录临时文件位置,本窗口退出后删除 wf_addlog_tempfilepathname(Pathname) END IF ELSE s_pic.path[ll_j] = '' END IF ELSE s_pic.path[ll_j] = '' END IF NEXT END IF END IF // END IF IF ll_ifpic = 1 AND ll_classid > 0 THEN If arg_str_billlist.bill[i].ds_data.RowCount() > 0 THEN //设置图片路径 FOR ll_j = 1 TO arg_str_billlist.bill[i].ds_data.RowCount() arg_str_billlist.bill[i].ds_data.Object.pic[ll_j] = s_pic.path[ll_j] NEXT END IF END IF NEXT DESTROY ls_uo_fjbt RETURN 1 end function public subroutine wf_addlog_tempfilepathname (string arg_filepathname);//wf_addlog_tempfilepathname if isnull(arg_filepathname) or len(trim(arg_filepathname))<3 then return ins_openfile_log_p++ ins_openfile_log[ins_openfile_log_p]=arg_filepathname // string ins_openfile_log[] //用于退出后删除 // long ins_openfile_log_p=0 //用于退出后删除 // end subroutine public subroutine wf_del_tempfilepathname ();//wf_del_tempfilepathname // 删除临时文件 Long li FOR li = 1 TO ins_openfile_log_p IF Len(Trim(ins_openfile_log[li])) <= 0 THEN ELSE FileDelete(ins_openfile_log[li]) END IF NEXT end subroutine public subroutine wf_add_mx ();Long i, ll_row FOR i = 1 To s_tran.dw_share.RowCount() ll_row = dw_mtrl_prdpfmx.InsertRow(0) dw_mtrl_prdpfmx.Object.mtrlid[ll_row] = s_tran.dw_share.Object.u_quoterqmtrl_mtrlid[i] dw_mtrl_prdpfmx.Object.mtrlcode[ll_row] = s_tran.dw_share.Object.u_mtrldef_mtrlcode[i] dw_mtrl_prdpfmx.Object.u_mtrldef_mtrlmode[ll_row] = s_tran.dw_share.Object.u_mtrldef_mtrlmode[i] dw_mtrl_prdpfmx.Object.mtrlname[ll_row] = s_tran.dw_share.Object.u_mtrldef_mtrlname[i] dw_mtrl_prdpfmx.Object.unit[ll_row] = s_tran.dw_share.Object.u_mtrldef_unit[i] // dw_mtrl_prdpfmx.Object.u_prdpf_status[ll_row] = s_tran.dw_share.Object.u_quoteworkprice_workqty[i] // dw_mtrl_prdpfmx.Object.u_prdpf_woodcode[ll_row] = s_tran.dw_share.Object.u_quoteworkprice_workqty[i] // dw_mtrl_prdpfmx.Object.u_prdpf_pcode[ll_row] = s_tran.dw_share.Object.u_quoteworkprice_workqty[i] dw_mtrl_prdpfmx.Object.u_prdpf_sonscale[ll_row] = s_tran.dw_share.Object.u_quoterqmtrl_rqqty[i] dw_mtrl_prdpfmx.Object.u_prdpf_sonloss[ll_row] = 0 dw_mtrl_prdpfmx.Object.u_prdpf_sondecloss[ll_row] = 0 dw_mtrl_prdpfmx.Object.u_prdpf_dscrp[ll_row] = '' dw_mtrl_prdpfmx.Object.u_prdpf_printid[ll_row] = ll_row dw_mtrl_prdpfmx.Object.u_prdpf_pfgroup[ll_row] = '' dw_mtrl_prdpfmx.Object.u_prdpf_wrkgrpid[ll_row] = 0 NEXT end subroutine on w_mtrl_structure.create int iCurrent call super::create this.cb_moveone=create cb_moveone this.cb_removeone=create cb_removeone this.cb_moveall=create cb_moveall this.cb_removeall=create cb_removeall this.st_codetitle=create st_codetitle this.st_codetitleb=create st_codetitleb this.gb_4=create gb_4 this.mle_pfgy=create mle_pfgy this.cb_print=create cb_print this.cb_refresh_tree=create cb_refresh_tree this.cb_save=create cb_save this.cb_edit=create cb_edit this.cb_audit=create cb_audit this.cb_pfcopy=create cb_pfcopy this.cb_pfpaste=create cb_pfpaste this.ddlb_storageid=create ddlb_storageid this.cb_help=create cb_help this.st_msg=create st_msg this.tab_1=create tab_1 this.cb_other=create cb_other this.st_2=create st_2 this.st_3=create st_3 this.cb_xls=create cb_xls this.ddlb_mtrlorigin=create ddlb_mtrlorigin this.cbx_packqty_cmpl=create cbx_packqty_cmpl this.ln_bar=create ln_bar this.ln_bar2=create ln_bar2 this.r_bar=create r_bar this.ln_1=create ln_1 this.ln_2=create ln_2 this.ln_5=create ln_5 this.ln_6=create ln_6 this.cbx_auto_printid=create cbx_auto_printid this.cbx_auto_zc=create cbx_auto_zc this.cb_1=create cb_1 iCurrent=UpperBound(this.Control) this.Control[iCurrent+1]=this.cb_moveone this.Control[iCurrent+2]=this.cb_removeone this.Control[iCurrent+3]=this.cb_moveall this.Control[iCurrent+4]=this.cb_removeall this.Control[iCurrent+5]=this.st_codetitle this.Control[iCurrent+6]=this.st_codetitleb this.Control[iCurrent+7]=this.gb_4 this.Control[iCurrent+8]=this.mle_pfgy this.Control[iCurrent+9]=this.cb_print this.Control[iCurrent+10]=this.cb_refresh_tree this.Control[iCurrent+11]=this.cb_save this.Control[iCurrent+12]=this.cb_edit this.Control[iCurrent+13]=this.cb_audit this.Control[iCurrent+14]=this.cb_pfcopy this.Control[iCurrent+15]=this.cb_pfpaste this.Control[iCurrent+16]=this.ddlb_storageid this.Control[iCurrent+17]=this.cb_help this.Control[iCurrent+18]=this.st_msg this.Control[iCurrent+19]=this.tab_1 this.Control[iCurrent+20]=this.cb_other this.Control[iCurrent+21]=this.st_2 this.Control[iCurrent+22]=this.st_3 this.Control[iCurrent+23]=this.cb_xls this.Control[iCurrent+24]=this.ddlb_mtrlorigin this.Control[iCurrent+25]=this.cbx_packqty_cmpl this.Control[iCurrent+26]=this.ln_bar this.Control[iCurrent+27]=this.ln_bar2 this.Control[iCurrent+28]=this.r_bar this.Control[iCurrent+29]=this.ln_1 this.Control[iCurrent+30]=this.ln_2 this.Control[iCurrent+31]=this.ln_5 this.Control[iCurrent+32]=this.ln_6 this.Control[iCurrent+33]=this.cbx_auto_printid this.Control[iCurrent+34]=this.cbx_auto_zc this.Control[iCurrent+35]=this.cb_1 end on on w_mtrl_structure.destroy call super::destroy destroy(this.cb_moveone) destroy(this.cb_removeone) destroy(this.cb_moveall) destroy(this.cb_removeall) destroy(this.st_codetitle) destroy(this.st_codetitleb) destroy(this.gb_4) destroy(this.mle_pfgy) destroy(this.cb_print) destroy(this.cb_refresh_tree) destroy(this.cb_save) destroy(this.cb_edit) destroy(this.cb_audit) destroy(this.cb_pfcopy) destroy(this.cb_pfpaste) destroy(this.ddlb_storageid) destroy(this.cb_help) destroy(this.st_msg) destroy(this.tab_1) destroy(this.cb_other) destroy(this.st_2) destroy(this.st_3) destroy(this.cb_xls) destroy(this.ddlb_mtrlorigin) destroy(this.cbx_packqty_cmpl) destroy(this.ln_bar) destroy(this.ln_bar2) destroy(this.r_bar) destroy(this.ln_1) destroy(this.ln_2) destroy(this.ln_5) destroy(this.ln_6) destroy(this.cbx_auto_printid) destroy(this.cbx_auto_zc) destroy(this.cb_1) end on event open;call super::open;IF NOT f_power_ind(1439) THEN dw_mtrl_prdpfmx.Modify('destroy u_prdpf_sptprice_t ~n u_prdpf_sptprice.visible=0 ~n ') END IF s_hide_col s_col s_col.col_1 = 'planprice' f_hide_col(1451,dw_pageretr,s_col) s_hide_col s_col2 s_col2.col_1 = 'amt' s_col2.col_2 = 'u_mtrldef_planprice' f_hide_col(1451,dw_mtrl_prdpfmx,s_col2) s_hide_col s_col3 s_col3.col_1 = 'u_prdpf_sptprice' s_col3.col_2 = 'buyamt' f_hide_col(121,dw_mtrl_prdpfmx,s_col3) s_hide_col s_col_mtrlsectype s_col_mtrlsectype.col_1 = 'u_mtrldef_mtrlsectype' f_hide_col(1308,dw_pageretr,s_col_mtrlsectype) s_hide_col s_col_zxmtrlmode s_col_zxmtrlmode.col_1 = 'u_mtrldef_zxmtrlmode' f_hide_col(1309,dw_pageretr,s_col_zxmtrlmode) wf_modefacechg() IF s_tran.b_long > 0 THEN IF dw_pageretr.GetRow() > 0 THEN IF dw_pageretr.Object.mtrlid[dw_pageretr.GetRow()] = s_tran.b_long THEN //修改 cb_edit.TriggerEvent(Clicked!) //清空明细 dw_mtrl_prdpfmx.Reset() //插入明细 wf_add_mx() END IF END IF END IF end event event user_key;call super::user_key;IF KeyDown(KeyF1!) THEN if cb_moveone.enabled then cb_moveone.TRIGGEREVENT(CLICKED!) ELSEIF KeyDown(KeyF3!) then if cb_moveall.enabled then cb_moveall.TRIGGEREVENT(CLICKED!) end if end event event key;this.TRIGGEREVENT('user_key') end event event ue_usual_query_filt;call super::ue_usual_query_filt;string obj_expr='' if trim(sle_usual_query.text)<>'' then IF POS(trim(sle_usual_query.text),'%')=0 THEN obj_expr=obj_expr+'( mtrlcode LIKE "%'+trim(sle_usual_query.text)+'%" )' obj_expr = obj_expr+' or (mtrlname LIKE "%'+Trim(sle_usual_query.Text)+'%")' ELSE obj_expr=obj_expr+'( mtrlcode LIKE "'+trim(sle_usual_query.text)+'" )' obj_expr = obj_expr+' or (mtrlname LIKE "'+Trim(sle_usual_query.Text)+'")' END IF end if dw_pageretr.setfilter(obj_expr) dw_pageretr.SetRedraw(False) dw_pageretr.filter() dw_pageretr.SetRedraw(TRUE) end event event ue_usual_query_retr;call super::ue_usual_query_retr;string ls_querystrpart='' ls_newselect=lower(ori_oldselect) if trim(sle_usual_query.text)<>'' then if pos(trim(sle_usual_query.text),'%')=0 then ls_querystrpart="mtrlcode like '%"+trim(sle_usual_query.text)+"%'" else ls_querystrpart="mtrlcode like '"+trim(sle_usual_query.text)+"'" end if if Pos(ls_newselect," where ") <> 0 then ls_newselect=ls_newselect+" AND ( "+ls_querystrpart+')' else ls_newselect=ls_newselect+" where ("+ls_querystrpart+')' end if end if wf_retrieveuc(dw_pageretr,ls_newselect,1) this.TRIGGEREVENT('RETRIEVE_pageretr') end event event ue_before_open;tv_1 = tab_1.tabpage_2.tv_2 dw_mtrl_prdpfmx = tab_1.tabpage_1.dw_mtrl_prdpfmx dw_mtrl_prdpfmx.settransobject(sqlca) if_ue_retr=true if_ue_filter=true if_ue_sort=true end event event retrieve_pageretr;Boolean cb_firstpage_enabled,cb_nextpage_enabled,cb_retrieveall_enabled Boolean cb_priorpage_enabled,cb_func_enabled,cb_retrieve_enabled cb_nextpage_enabled = cb_nextpage.Enabled cb_retrieveall_enabled = cb_retrieveall.Enabled cb_func_enabled = cb_func.Enabled cb_nextpage.Enabled = FALSE cb_retrieveall.Enabled = FALSE cb_func.Enabled = FALSE SetPointer(HourGlass!) dw_pageretr.Retrieve(cur_mtrlorigin,cur_storageid,cur_isuse) IF dw_pageretr.RowCount() > 0 AND dw_pageretr.GetRow() = 0 THEN dw_pageretr.SetRow(1) SetPointer(Arrow!) cb_nextpage.Enabled = cb_nextpage_enabled cb_retrieveall.Enabled = cb_retrieveall_enabled cb_func.Enabled = cb_func_enabled IF NOT dw_edit_mode AND dw_pageretr.GetRow() > 0 THEN wf_changemtrl(dw_pageretr.Object.mtrlid[dw_pageretr.GetRow()]) END IF end event event resize;call super::resize;ln_bar.endx = this.width ln_bar2.endx = this.width ln_1.endx = this.width ln_2.endx = this.width r_bar.width = this.width long w_width,w_height w_width = 3600 w_height = 2300 if newwidth < w_width then this.width = w_width if newheight < w_height then this.height = w_height dw_pageretr.width=this.width - (w_width - 2650) gb_4.x = dw_pageretr.x + dw_pageretr.width + 20 mle_pfgy.x = gb_4.x + 20 st_codetitle.width=this.width - (w_width - 3544) st_codetitleb.width=this.width - (w_width - 3552) tab_1.width=this.width - (w_width - 3552) tab_1.height=this.height - (w_height - 650) tv_1.width=this.width - (w_width - 3552) tv_1.height = tab_1.height - 100 dw_mtrl_prdpfmx.width=this.width - (w_width - 3552) dw_mtrl_prdpfmx.height = tab_1.height - 100 cbx_auto_printid.y = tab_1.y + 10 cbx_auto_printid.x = tab_1.x + 700 cbx_auto_zc.y = tab_1.y + 10 cbx_auto_zc.x = tab_1.x + cbx_auto_printid.width +800 end event event close;call super::close;wf_del_tempfilepathname() end event type cb_func from w_publ_pageretr`cb_func within w_mtrl_structure integer x = 151 integer y = 0 integer width = 151 integer height = 172 integer taborder = 290 end type event cb_func::clicked;call super::clicked;PARENT.TriggerEvent('ue_help') end event type cb_exit from w_publ_pageretr`cb_exit within w_mtrl_structure integer x = 2057 integer y = 0 integer width = 151 integer height = 172 integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type type sle_usual_query from w_publ_pageretr`sle_usual_query within w_mtrl_structure integer x = 1664 integer y = 192 integer width = 494 integer height = 96 boolean bringtotop = true long backcolor = 16777215 end type type cb_retrieveall from w_publ_pageretr`cb_retrieveall within w_mtrl_structure integer x = 2619 integer height = 172 integer taborder = 240 string normalpicname = "p1.ico" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type type em_pagerowno from w_publ_pageretr`em_pagerowno within w_mtrl_structure integer x = 2290 integer y = 44 integer width = 320 integer taborder = 130 boolean bringtotop = true long backcolor = 16777215 end type type dw_pageretr from w_publ_pageretr`dw_pageretr within w_mtrl_structure integer y = 316 integer width = 2665 integer height = 976 integer taborder = 100 string dragicon = "WinLogo!" boolean bringtotop = true string title = "物料列表" string dataobject = "dw_mtrl_index_structure" boolean rbutton_filter_use = true boolean rbutton_setposition_use = true boolean titleclick_sort_use = true end type event dw_pageretr::doubleclicked;call super::doubleclicked;if dw_edit_mode and row>0 then cb_moveone.TRIGGEREVENT(CLICKED!) end event event dw_pageretr::rowfocuschanged;IF currentrow > 0 THEN THIS.SelectRow(0,FALSE) THIS.SelectRow(currentrow,TRUE) END IF IF NOT dw_edit_mode AND dw_pageretr.GetRow() > 0 THEN wf_changemtrl(dw_pageretr.Object.mtrlid[dw_pageretr.GetRow()]) page_mtrlid = dw_pageretr.Object.mtrlid[dw_pageretr.GetRow()] END IF PARENT.TriggerEvent('ue_retrieve_info') end event event dw_pageretr::rowfocuschanging;//IF dw_edit_mode THEN RETURN 1 end event type st_1 from w_publ_pageretr`st_1 within w_mtrl_structure integer x = 1463 integer y = 220 integer width = 192 integer height = 60 string text = "编码含" alignment alignment = right! end type type cb_nextpage from w_publ_pageretr`cb_nextpage within w_mtrl_structure integer x = 2784 integer width = 64 integer height = 172 integer taborder = 280 toolbaralignment pic_align = alignattop! boolean border = false end type type cb_moveone from commandbutton within w_mtrl_structure integer x = 27 integer y = 1300 integer width = 151 integer height = 84 integer taborder = 170 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" string text = "选择" end type event clicked;long find_row=0,new_row,sor_row sor_row=dw_pageretr.getrow() if sor_row<=0 then messagebox('提示','请选择要加入的目标物料!', Information!, OK! ) return 0 end if //find_row=dw_mtrl_prdpfmx.find('mtrlid='+string(dw_pageretr.object.mtrlid[sor_row]),0,dw_pageretr.rowcount()) //if find_row>0 then // Beep(1) // return 0 //end if wf_moveone(sor_row) end event type cb_removeone from commandbutton within w_mtrl_structure integer x = 178 integer y = 1300 integer width = 151 integer height = 84 integer taborder = 180 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" string text = "删除" end type event clicked;parent.triggerevent('ue_deletemx') end event type cb_moveall from commandbutton within w_mtrl_structure integer x = 352 integer y = 1300 integer width = 151 integer height = 84 integer taborder = 190 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" string text = "全选" end type event clicked;long i for i=1 to dw_pageretr.rowcount() wf_moveone(i) next end event type cb_removeall from commandbutton within w_mtrl_structure integer x = 498 integer y = 1300 integer width = 151 integer height = 84 integer taborder = 200 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" string text = "全删" end type event clicked; DO WHILE dw_mtrl_prdpfmx.rowcount()>0 wf_removeone(dw_mtrl_prdpfmx.rowcount()) LOOP end event type st_codetitle from statictext within w_mtrl_structure integer x = 5 integer y = 1412 integer width = 3543 integer height = 92 boolean bringtotop = true integer textsize = -12 integer weight = 700 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 long backcolor = 79216776 boolean enabled = false string text = "**************的组装构成" boolean border = true borderstyle borderstyle = styleraised! boolean focusrectangle = false end type type st_codetitleb from statictext within w_mtrl_structure integer y = 1404 integer width = 3552 integer height = 108 integer textsize = -12 integer weight = 700 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 long backcolor = 79216776 boolean enabled = false boolean border = true boolean focusrectangle = false end type type gb_4 from groupbox within w_mtrl_structure integer x = 2683 integer y = 316 integer width = 846 integer height = 1072 integer taborder = 110 integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 16711680 long backcolor = 134217739 string text = "清单说明[保存]" end type type mle_pfgy from multilineedit within w_mtrl_structure integer x = 2697 integer y = 384 integer width = 818 integer height = 988 integer taborder = 40 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 boolean vscrollbar = true integer limit = 1000 borderstyle borderstyle = stylelowered! end type type cb_print from uo_imflatbutton within w_mtrl_structure integer x = 1413 integer width = 192 integer height = 172 integer taborder = 90 boolean bringtotop = true string text = "预览&P" string normalpicname = "preview.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;String ls_dft_old_dwname, ls_dft_new_dwname,ls_chnname,ls_dwtype Long ls_dwprintid String ls_windowname Int ls_i Long ll_billid Int li_ifuse Long ll_row String Name,ll_rpname Long ll_RpID,ll_flag,ll_ifuse w_curwin = PARENT ls_windowname = PARENT.ClassName ( ) SELECT billid,ifuse INTO :ll_billid, :li_ifuse FROM u_report_bill Where winName = :ls_windowname; IF sqlca.SQLCode <> 0 THEN li_ifuse = 0 END IF li_ifuse = 0 IF li_ifuse = 0 THEN DECLARE dft_dwprint CURSOR FOR SELECT dwprintid,dft_old_dwname, dft_new_dwname, chnname, dwtype FROM sys_dft_dwprint_dynamic WHERE dwtype = :ls_windowname AND ptype = 0 and ifuse = 1; OPEN dft_dwprint; FETCH dft_dwprint INTO :ls_dwprintid,:ls_dft_old_dwname, :ls_dft_new_dwname,:ls_chnname, :ls_dwtype; IF sqlca.SQLCode <> 0 THEN PARENT.TriggerEvent('ue_viewprint',0,0) ELSE m_dft_dwprint_item m_1 m_1 = CREATE m_dft_dwprint_item ls_i = 1 DO WHILE sqlca.SQLCode = 0 f_add_menuItem_dft(m_1,ls_i,ls_chnname,String(ls_dwprintid)) FETCH dft_dwprint INTO :ls_dwprintid,:ls_dft_old_dwname, :ls_dft_new_dwname,:ls_chnname, :ls_dwtype; ls_i++ LOOP CLOSE dft_dwprint; m_1.PopMenu(THIS.X+50,THIS.Y+50) END IF ELSE DECLARE rpt_dwprint CURSOR FOR SELECT RpID,RpName,Flag,Ifuse FROM U_report_list WHERE billid = :ll_billid Order By RpName; OPEN rpt_dwprint; FETCH rpt_dwprint INTO :ll_RpID,:ll_rpname,:ll_flag,:ll_ifuse; IF sqlca.SQLCode <> 0 THEN PARENT.TriggerEvent('ue_rpt_viewprint',0,0) ELSE m_rpt_dwprint_item m_2 m_2 = CREATE m_rpt_dwprint_item ls_i = 1 DO WHILE sqlca.SQLCode = 0 IF f_pow_rpt(ll_RpID) AND ll_ifuse = 1 AND ll_flag = 1 THEN //权限检查f_pow_rpt( ) f_add_menuItem_rpt(m_2,ls_i,ll_rpname,String(ll_RpID)) END IF FETCH rpt_dwprint INTO :ll_RpID,:ll_rpname,:ll_flag,:ll_ifuse; ls_i++ LOOP CLOSE rpt_dwprint; m_2.Item[1].Visible = FALSE m_2.PopMenu(THIS.X+50,THIS.Y+50) END IF END IF end event type cb_refresh_tree from uo_imflatbutton within w_mtrl_structure integer width = 151 integer height = 172 integer taborder = 290 boolean bringtotop = true string text = "刷新" string normalpicname = "refresh.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;wf_changemtrl(page_mtrlid) end event type cb_save from uo_imflatbutton within w_mtrl_structure integer x = 306 integer width = 192 integer height = 172 integer taborder = 210 boolean enabled = false string text = "保存&S" string normalpicname = "save.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;IF dw_edit_mode THEN IF wf_save() = 0 THEN RETURN END IF dw_edit_mode = Not dw_edit_mode wf_modefacechg() //cb_edit.triggerevent('textchange') end event type cb_edit from uo_imflatbutton within w_mtrl_structure integer x = 494 integer width = 192 integer height = 172 integer taborder = 20 boolean bringtotop = true string text = "修改&E" string normalpicname = "undo.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;IF NOT f_power_ind(32) THEN MessageBox('提示','你没有使用权限!', Information!, OK! ) RETURN END IF IF dw_edit_mode THEN IF MessageBox ("询问","是否确定要放弃保存当前产品的物料构成,放弃后所修改的资料不作保存",Question!,YesNo! ) = 2 THEN RETURN END IF wf_retrieve_childrenmtrl(obj_mtrlid) ELSE IF obj_sauditflag = 1 THEN MessageBox('提示','产品的物料构成已审核,不能修改', Information!, OK! ) RETURN END IF END IF dw_edit_mode = NOT dw_edit_mode wf_modefacechg() end event type cb_audit from uo_imflatbutton within w_mtrl_structure integer x = 690 integer width = 151 integer height = 172 integer taborder = 20 boolean bringtotop = true string text = "审核" string normalpicname = "audit.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;IF Not f_power_ind(56) THEN MessageBox('提示','你没有使用权限!', Information!, OK! ) RETURN END IF DateTime null_dt SetNull(null_dt) String ls_msg IF MessageBox ('提示',"是否确定要审核前产品的物料构成,审核后不能作修改操作",Question!,YesNo! ) = 2 THEN RETURN END IF IF obj_sauditflag = 1 THEN ls_msg = '撤审' UPDATE u_mtrldef SET SAuditflag = 0, SAudit_emp = '', SAudit_date = :null_dt Where mtrlid = :obj_mtrlid; ELSE ls_msg = '审核' UPDATE u_mtrldef SET SAuditflag = 1, SAudit_emp = :publ_operator, SAudit_date = getdate() Where mtrlid = :obj_mtrlid; END IF IF sqlca.SQLCode <> 0 THEN ls_msg = ls_msg+'产品物料构成失改>>'+sqlca.SQLErrText ROLLBACK; ELSE COMMIT; IF obj_sauditflag = 1 THEN obj_sauditflag = 0 ELSE obj_sauditflag = 1 END IF ls_msg = ls_msg+'产品物料构成成功' END IF wf_refresh_curuc(obj_mtrlid) wf_flagstatus_rf(obj_sauditflag) MessageBox('提示',ls_msg, Information!, OK! ) end event type cb_pfcopy from uo_imflatbutton within w_mtrl_structure integer x = 837 integer width = 151 integer height = 172 integer taborder = 20 boolean bringtotop = true string text = "复制" string normalpicname = "copy.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;IF NOT f_power_ind(32) THEN MessageBox('提示','你没有使用权限!', Information!, OK! ) RETURN END IF wf_pfcopy() end event type cb_pfpaste from uo_imflatbutton within w_mtrl_structure integer x = 987 integer width = 151 integer height = 172 integer taborder = 20 boolean bringtotop = true boolean enabled = false string text = "粘贴" string normalpicname = "paste.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;wf_pfpaste() end event type ddlb_storageid from uo_ddlb_storageid within w_mtrl_structure integer x = 270 integer y = 200 integer width = 695 integer height = 812 integer taborder = 30 boolean bringtotop = true end type event constructor;call super::constructor;cur_storageid = uo_storageid end event event selectionchanged;call super::selectionchanged;cur_storageid = uo_storageid parent.triggerevent('retrieve_pageretr') end event type cb_help from uo_imflatbutton within w_mtrl_structure string tag = "帮助[F1]" integer x = 1906 integer width = 151 integer height = 172 integer taborder = 300 boolean bringtotop = true string text = "帮助" string normalpicname = "help.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type type st_msg from statictext within w_mtrl_structure integer x = 2583 integer y = 212 integer width = 1019 integer height = 60 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 long backcolor = 134217739 alignment alignment = right! boolean focusrectangle = false end type type tab_1 from tab within w_mtrl_structure event create ( ) event destroy ( ) integer x = 9 integer y = 1520 integer width = 3543 integer height = 612 integer taborder = 190 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long backcolor = 134217739 boolean raggedright = true boolean focusonbuttondown = true integer selectedtab = 1 tabpage_1 tabpage_1 tabpage_2 tabpage_2 end type on tab_1.create this.tabpage_1=create tabpage_1 this.tabpage_2=create tabpage_2 this.Control[]={this.tabpage_1,& this.tabpage_2} end on on tab_1.destroy destroy(this.tabpage_1) destroy(this.tabpage_2) end on event selectionchanged;IF THIS.SelectedTab = 1 THEN cbx_auto_printid.visible = true cbx_auto_zc.visible = true ELSE cbx_auto_printid.visible = false cbx_auto_zc.visible = false END IF end event type tabpage_1 from userobject within tab_1 event create ( ) event destroy ( ) integer x = 18 integer y = 96 integer width = 3506 integer height = 500 long backcolor = 134217739 string text = "直接构成物料" long tabtextcolor = 33554432 long tabbackcolor = 134217739 long picturemaskcolor = 536870912 dw_mtrl_prdpfmx dw_mtrl_prdpfmx end type on tabpage_1.create this.dw_mtrl_prdpfmx=create dw_mtrl_prdpfmx this.Control[]={this.dw_mtrl_prdpfmx} end on on tabpage_1.destroy destroy(this.dw_mtrl_prdpfmx) end on type dw_mtrl_prdpfmx from u_dw_rbtnfilter within tabpage_1 integer width = 2482 integer height = 492 integer taborder = 20 string dataobject = "dw_mtrl_structuremx" boolean hscrollbar = true boolean vscrollbar = true boolean rbutton_filter_use = true boolean rbutton_setposition_use = true boolean titleclick_sort_use = true end type event rowfocuschanged;call super::rowfocuschanged;IF currentrow > 0 THEN THIS.SelectRow(0,FALSE) THIS.SelectRow(currentrow,TRUE) END IF end event event clicked;call super::clicked;if row>0 then this.setrow(row) this.selectrow(0,false) this.selectrow(row,true) end if end event event doubleclicked;call super::doubleclicked;IF dw_edit_mode THEN PARENT.GetParent().GetParent().TriggerEvent('ue_f8') END IF end event event dwnkey;call super::dwnkey;PARENT.getparent().getparent().TriggerEvent('user_key') String ls_mtrlcode,ls_mtrlname,ls_unit,ls_dscrp,ls_mtrlmode, ls_mtrlengname Long ls_mtrlid Long child_row Long ls_null SetNull(ls_null) IF dw_edit_mode THEN IF KeyDown(Keydownarrow!) THEN Long li_row IF dw_mtrl_prdpfmx.GetRow() = dw_mtrl_prdpfmx.RowCount() THEN PARENT.getparent().getparent().TriggerEvent("insert_childrow") END IF ELSE IF (KeyDown(KeyEnter!) OR KeyDown(KeyTab!)) AND NOT KeyDown(KeyControl!) AND NOT KeyDown(KeyShift!) THEN IF dw_mtrl_prdpfmx.GetColumnName() = 'mtrlcode' THEN dw_mtrl_prdpfmx.AcceptText() child_row = dw_mtrl_prdpfmx.GetRow() ls_mtrlcode = dw_mtrl_prdpfmx.Object.mtrlcode[child_row] SELECT u_mtrldef.mtrlid, u_mtrldef.mtrlname, u_mtrldef.unit, u_mtrldef.dscrp, u_mtrldef.mtrlmode, u_mtrldef.mtrlengname INTO :ls_mtrlid,:ls_mtrlname,:ls_unit,:ls_dscrp,:ls_mtrlmode,:ls_mtrlengname FROM u_mtrldef Where ( u_mtrldef.mtrlcode = :ls_mtrlcode); IF sqlca.SQLCode <> 0 THEN parent.getparent().getparent().triggerevent('ue_f8') return 1 ELSE dw_mtrl_prdpfmx.Object.mtrlid[child_row] = ls_mtrlid dw_mtrl_prdpfmx.Object.mtrlname[child_row] = ls_mtrlname dw_mtrl_prdpfmx.Object.u_mtrldef_mtrlengname[child_row] = ls_mtrlengname dw_mtrl_prdpfmx.Object.unit[child_row] = ls_unit if not len(trim(dw_mtrl_prdpfmx.object.u_prdpf_dscrp[child_row])) > 0 then dw_mtrl_prdpfmx.object.u_prdpf_dscrp[child_row] =ls_dscrp end if END IF IF Key = KeyEnter! THEN keybd_event ( 9, 0, 0 , 0 ) // 按下tab keybd_event ( 9, 0, 2, 0 ) // 释放tab RETURN 1 END IF ELSEIF dw_mtrl_prdpfmx.GetColumnName( ) = 'u_prdpf_dscrp' AND dw_mtrl_prdpfmx.GetRow() = dw_mtrl_prdpfmx.RowCount() THEN PARENT.getparent().getparent().TriggerEvent("insert_childrow") RETURN 1 ELSE IF Key = KeyEnter! THEN keybd_event ( 9, 0, 0 , 0 ) // 按下tab keybd_event ( 9, 0, 2, 0 ) // 释放tab RETURN 1 END IF END IF END IF END IF END IF //u_mtrldef_mtrlcode //u_mtrldef_unit //u_inwaremx_mtrlid //u_inwaremx_planprice //u_inwaremx_price //u_mtrldef_mtrlname end event event rbuttondown;Long ll_row S_INPUTBOX_DECIMAL s_parm IF dw_edit_mode THEN IF dwo.Name = 'u_prdpf_wrkgrpid_t' THEN // DONE: 批设领料组 Open(w_workgroup_edit_ch) Long ll_workgroupid ll_workgroupid = Message.DoubleParm IF ll_workgroupid > 0 THEN FOR ll_row = 1 To dw_mtrl_prdpfmx.RowCount() dw_mtrl_prdpfmx.Object.u_prdpf_wrkgrpid[ll_row] = ll_workgroupid NEXT END IF ELSEIF dwo.Name = 'u_prdpf_sonscale_t' THEN // DONE: 批设组成数 s_parm.Title = '批设组成数' s_parm.Value = 0 OpenWithParm(w_inputbox_decimal, s_parm) s_parm = Message.PowerObjectParm IF s_parm.has_rslt = 1 THEN FOR ll_row = 1 To dw_mtrl_prdpfmx.RowCount() dw_mtrl_prdpfmx.Object.u_prdpf_sonscale[ll_row] = s_parm.Value NEXT END IF ELSEIF dwo.Name = 'u_prdpf_sonloss_t' THEN // DONE: 批设损耗率 s_parm.Title = '批设损耗率' s_parm.Value = 0 OpenWithParm(w_inputbox_decimal, s_parm) s_parm = Message.PowerObjectParm IF s_parm.has_rslt = 1 THEN FOR ll_row = 1 To dw_mtrl_prdpfmx.RowCount() dw_mtrl_prdpfmx.Object.u_prdpf_sonloss[ll_row] = s_parm.Value NEXT END IF ELSE m_Dfc_Control_PopupMenu dmPopupMenu String menustr menustr = "Text=增明细~tEvent=insert_childrow" menustr = menustr + "|" + "Text=删明细~tEvent=ue_deletemx" IF Len(Trim(menustr)) <> 0 THEN dmPopupMenu = Create m_Dfc_Control_PopupMenu dmPopupMenu.mf_BuildMenu(This, menustr) dmPopupMenu.mf_PopMenu() Destroy dmPopupMenu END IF END IF ELSE CALL Super::RButtonDown END IF end event type tabpage_2 from userobject within tab_1 event create ( ) event destroy ( ) integer x = 18 integer y = 96 integer width = 3506 integer height = 500 long backcolor = 134217739 string text = "清单树" long tabtextcolor = 33554432 long tabbackcolor = 134217739 long picturemaskcolor = 536870912 tv_2 tv_2 end type on tabpage_2.create this.tv_2=create tv_2 this.Control[]={this.tv_2} end on on tabpage_2.destroy destroy(this.tv_2) end on type tv_2 from treeview within tabpage_2 integer width = 2473 integer height = 500 integer taborder = 100 integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 long backcolor = 16777215 borderstyle borderstyle = stylelowered! string picturename[] = {"Project!","Custom030!","Custom028!","Custom031!","Custom029!","Custom041!","Custom032!"} long picturemaskcolor = 536870912 long statepicturemaskcolor = 536870912 end type type cb_other from uo_imflatbutton within w_mtrl_structure integer x = 1138 integer width = 274 integer height = 172 integer taborder = 150 boolean bringtotop = true string text = "辅助功能" string normalpicname = "other.BMP" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked; m_Dfc_Control_PopupMenu dmPopupMenu string menustr menustr="Text=查闭环~tEvent=ue_checkrand" menustr = menustr + "|" + "Text=批替换物料~tEvent=ue_replace_p" menustr = menustr + "|" + "Text=-" menustr = menustr + "|" + "Text=物料相关查询~tEvent=ue_mtrl_info" if len(trim(menustr))<>0 then dmPopupMenu = Create m_Dfc_Control_PopupMenu dmPopupMenu.mf_BuildMenu(This, menustr) dmPopupMenu.mf_PopMenu() Destroy dmPopupMenu end if end event type st_2 from statictext within w_mtrl_structure integer x = 704 integer y = 1324 integer width = 891 integer height = 48 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 255 long backcolor = 134217739 string text = "操作说明:( 热键:>-[F1], >>-[F3])" alignment alignment = right! boolean focusrectangle = false end type type st_3 from statictext within w_mtrl_structure integer x = 1637 integer y = 1324 integer width = 919 integer height = 48 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 255 long backcolor = 134217739 string text = "右键标题批设 领料组 组成数 损耗率" alignment alignment = right! boolean focusrectangle = false end type type cb_xls from uo_imflatbutton within w_mtrl_structure integer x = 1605 integer width = 306 integer height = 172 integer taborder = 30 boolean bringtotop = true string text = "Excel打印" string normalpicname = "excel.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;//检查是否已确认或已审核,否则不允许打印 Long LS_ROW,ll_mtrlid_obj,i String arg_msg LS_ROW = dw_pageretr.GetRow() IF LS_ROW <= 0 THEN arg_msg = '没有目标单据!' RETURN 0 END IF /////////// // uo_sendtoexcel obj_st obj_st = CREATE uo_sendtoexcel obj_st.commit_transaction = sqlca obj_st.TriggerEventObject = THIS.GetParent() obj_st.TriggerEventname = 'ue_xls' menu m1 m1 = obj_st.of_createmenu( PARENT.ClassName ( ),sys_user_xls_print_str,sys_user_xls_send_str) IF UpperBound( m1.Item) = 2 THEN MessageBox('错误','当前单据还没有设置Excel打印模板.') ELSE m1.PopMenu(THIS.X ,THIS.Y+THIS.Height) END IF end event type ddlb_mtrlorigin from uo_ddlb_mtrlorigin within w_mtrl_structure integer x = 974 integer y = 204 integer height = 812 integer taborder = 20 boolean bringtotop = true end type event selectionchanged;call super::selectionchanged;cur_mtrlorigin = this.uo_mtrlorigin //wf_retrieveuc(dw_pageretr,ls_newselect,1) parent.triggerevent('retrieve_pageretr') f_SetProfileString (sys_empid,dw_pageretr.DataObject, "ddlb_mtrlorigin",String(cur_mtrlorigin)) end event event constructor;call super::constructor;String ls_str ls_str = f_ProfileString (sys_empid,dw_pageretr.DataObject, "ddlb_mtrlorigin",'0') cur_mtrlorigin = integer(ls_str) ddlb_mtrlorigin.uf_setitem(cur_mtrlorigin) end event type cbx_packqty_cmpl from checkbox within w_mtrl_structure integer x = 2185 integer y = 212 integer width = 375 integer height = 68 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;IF THIS.Checked THEN cur_isuse = 1 ELSE cur_isuse = -1 END IF f_SetProfileString (sys_empid,publ_userid+'_'+'isuse', "isuse",String(cur_isuse)) parent.triggerevent('retrieve_pageretr') end event event constructor;//this.backcolor = 14215660 cur_isuse = Long(f_ProfileString (sys_empid,publ_userid+'_'+'isuse', "isuse",'1')) IF cur_isuse = 1 THEN THIS.Checked = TRUE ELSE THIS.Checked = FALSE END IF end event type ln_bar from line within w_mtrl_structure long linecolor = 268435456 integer linethickness = 4 integer beginy = 176 integer endx = 3429 integer endy = 176 end type type ln_bar2 from line within w_mtrl_structure long linecolor = 16777215 integer linethickness = 4 integer beginy = 180 integer endx = 3429 integer endy = 180 end type type r_bar from rectangle within w_mtrl_structure long linecolor = 16777215 long fillcolor = 1073741824 integer x = 3200 integer width = 73 integer height = 172 end type event constructor;this.fillcolor = 14215660 this.linecolor = 14215660 this.x = -1 this.y = -1 this.height = ln_bar2.beginy - 5 end event type ln_1 from line within w_mtrl_structure long linecolor = 268435456 integer linethickness = 4 integer beginy = 300 integer endx = 3429 integer endy = 300 end type type ln_2 from line within w_mtrl_structure long linecolor = 16777215 integer linethickness = 4 integer beginy = 304 integer endx = 3429 integer endy = 304 end type type ln_5 from line within w_mtrl_structure long linecolor = 268435456 integer beginx = 2267 integer endx = 2267 integer endy = 176 end type type ln_6 from line within w_mtrl_structure long linecolor = 16777215 integer beginx = 2272 integer endx = 2272 integer endy = 180 end type type cbx_auto_printid from checkbox within w_mtrl_structure integer x = 649 integer y = 1532 integer width = 411 integer height = 68 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;IF THIS.Checked THEN cur_auto_printid = 1 ELSE cur_auto_printid = 0 END IF f_SetProfileString (sys_empid,publ_userid+'_'+'auto_printid', "printid",String(cur_auto_printid)) end event event constructor;cur_auto_printid = Long(f_ProfileString (sys_empid,publ_userid+'_'+'auto_printid', "printid",'0')) IF cur_auto_printid = 1 THEN THIS.Checked = TRUE ELSE THIS.Checked = FALSE END IF end event type cbx_auto_zc from checkbox within w_mtrl_structure integer x = 1079 integer y = 1532 integer width = 686 integer height = 68 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;IF THIS.Checked THEN cur_cmpl_zc = 1 ELSE cur_cmpl_zc = 0 END IF f_SetProfileString (sys_empid,publ_userid+'_'+'autozc', "autozc",String(cur_cmpl_zc)) end event event constructor;//this.backcolor = 14215660 cur_cmpl_zc = Long(f_ProfileString (sys_empid,publ_userid+'_'+'autozc', "autozc",'0')) IF cur_cmpl_zc = 1 THEN THIS.Checked = TRUE ELSE THIS.Checked = FALSE END IF end event type cb_1 from commandbutton within w_mtrl_structure integer y = 196 integer width = 251 integer height = 84 integer taborder = 40 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" string text = "刷新" end type event clicked;parent.triggerevent('retrieve_pageretr') end event