$PBExportHeader$w_rp_cmpl_mtrlcost.srw forward global type w_rp_cmpl_mtrlcost from w_publ_easyq end type type cb_3 from uo_imflatbutton within w_rp_cmpl_mtrlcost end type type cb_5 from uo_imflatbutton within w_rp_cmpl_mtrlcost end type type ddlb_mtrlprp from uo_ddlb_mtrlorigin within w_rp_cmpl_mtrlcost end type type tv_1 from uo_tv_mtrltype within w_rp_cmpl_mtrlcost end type type cb_planprice from uo_imflatbutton within w_rp_cmpl_mtrlcost end type type cb_4 from commandbutton within w_rp_cmpl_mtrlcost end type type cb_6 from commandbutton within w_rp_cmpl_mtrlcost end type type cbx_auto_copy from checkbox within w_rp_cmpl_mtrlcost end type type cb_7 from commandbutton within w_rp_cmpl_mtrlcost end type type cb_8 from commandbutton within w_rp_cmpl_mtrlcost end type type ddlb_ptoplp from dropdownlistbox within w_rp_cmpl_mtrlcost end type type em_ptoplp from editmask within w_rp_cmpl_mtrlcost end type type cb_ptoplp from commandbutton within w_rp_cmpl_mtrlcost end type type cb_add_mtrl from uo_imflatbutton within w_rp_cmpl_mtrlcost end type type cb_edit from uo_imflatbutton within w_rp_cmpl_mtrlcost end type type cb_save from uo_imflatbutton within w_rp_cmpl_mtrlcost end type type cbx_isuse from checkbox within w_rp_cmpl_mtrlcost end type end forward global type w_rp_cmpl_mtrlcost from w_publ_easyq string title = "产品最新成本统计表" event ue_view_workprice ( ) event ue_view_bom ( ) event ue_view_his ( ) cb_3 cb_3 cb_5 cb_5 ddlb_mtrlprp ddlb_mtrlprp tv_1 tv_1 cb_planprice cb_planprice cb_4 cb_4 cb_6 cb_6 cbx_auto_copy cbx_auto_copy cb_7 cb_7 cb_8 cb_8 ddlb_ptoplp ddlb_ptoplp em_ptoplp em_ptoplp cb_ptoplp cb_ptoplp cb_add_mtrl cb_add_mtrl cb_edit cb_edit cb_save cb_save cbx_isuse cbx_isuse end type global w_rp_cmpl_mtrlcost w_rp_cmpl_mtrlcost type variables String cur_handtype = '' Long cur_mtrlorigin = 0 end variables forward prototypes public subroutine wf_face () end prototypes event ue_view_workprice();Long ll_row String ls_mtrlcode ll_row = dw_1.GetRow() IF ll_row <= 0 THEN MessageBox(publ_operator,'请选择产品') RETURN END IF ls_mtrlcode = dw_1.Object.mtrlcode[ll_row] s_edit_index_tran s_tran s_tran.arg_string_code = ls_mtrlcode s_tran.if_retrieve_all = local_retrieve_all OpenWithParm(w_sc_workpricetable,s_tran) end event event ue_view_bom();Long ll_row String ls_mtrlcode ll_row = dw_1.GetRow() IF ll_row <= 0 THEN MessageBox(publ_operator,'请选择产品') RETURN END IF ls_mtrlcode = dw_1.Object.mtrlcode[ll_row] s_edit_index_tran s_tran s_tran.arg_string_code = ls_mtrlcode s_tran.if_retrieve_all = local_retrieve_all OpenWithParm(w_mtrl_structure,s_tran) end event event ue_view_his();Long ll_row s_rp_mtrlcost_cmpl s_open ll_row = dw_1.GetRow() IF ll_row <= 0 THEN MessageBox(publ_operator,'请选择产品') RETURN END IF s_open.mtrlid = dw_1.Object.mtrlid[ll_row] s_open.pfcode = dw_1.Object.pfcode[ll_row] OpenWithParm(w_rp_mtrlprice_his_sum,s_open) end event public subroutine wf_face ();cb_1.Enabled = Not dw_edit_mode cb_save.Enabled = dw_edit_mode cb_func.Enabled = Not dw_edit_mode cb_psetup.Enabled = Not dw_edit_mode cb_2.Enabled = Not dw_edit_mode cbx_yl.Enabled = Not dw_edit_mode ddlb_mtrlprp.Enabled = Not dw_edit_mode cb_add_mtrl.Enabled = Not dw_edit_mode cb_3.Enabled = Not dw_edit_mode cb_planprice.Enabled = Not dw_edit_mode dw_1.setredraw(false) IF dw_edit_mode THEN dw_1.SetTabOrder('price',20) dw_1.SetTabOrder('jgprice',30) dw_1.SetTabOrder('wfjgprice',40) dw_1.SetTabOrder('outcost',50) dw_1.SetTabOrder('eqprice',60) dw_1.SetTabOrder('otherprice',70) dw_1.modify('price.Color = "16711680" ') dw_1.modify('jgprice.Color = "16711680" ') dw_1.modify('wfjgprice.Color = "16711680" ') dw_1.modify('outcost.Color = "16711680" ') dw_1.modify('eqprice.Color = "16711680" ') cb_edit.Text = '放弃' cb_edit.normalpicname = 'Undo.bmp' ELSE dw_1.SetTabOrder('price',0) dw_1.SetTabOrder('jgprice',0) dw_1.SetTabOrder('wfjgprice',0) dw_1.SetTabOrder('outcost',0) dw_1.SetTabOrder('eqprice',0) dw_1.SetTabOrder('otherprice',0) dw_1.modify('price.Color = "0" ') dw_1.modify('jgprice.Color = "0" ') dw_1.modify('wfjgprice.Color = "0" ') dw_1.modify('outcost.Color = "0" ') dw_1.modify('eqprice.Color = "0" ') cb_edit.Text = '手动修改' cb_edit.normalpicname = 'OPEN.bmp' END IF dw_1.setredraw(true) cb_edit.of_init_draw() cb_edit.of_paint() cb_edit.TriggerEvent('ue_textchange') end subroutine on w_rp_cmpl_mtrlcost.create int iCurrent call super::create this.cb_3=create cb_3 this.cb_5=create cb_5 this.ddlb_mtrlprp=create ddlb_mtrlprp this.tv_1=create tv_1 this.cb_planprice=create cb_planprice this.cb_4=create cb_4 this.cb_6=create cb_6 this.cbx_auto_copy=create cbx_auto_copy this.cb_7=create cb_7 this.cb_8=create cb_8 this.ddlb_ptoplp=create ddlb_ptoplp this.em_ptoplp=create em_ptoplp this.cb_ptoplp=create cb_ptoplp this.cb_add_mtrl=create cb_add_mtrl this.cb_edit=create cb_edit this.cb_save=create cb_save this.cbx_isuse=create cbx_isuse iCurrent=UpperBound(this.Control) this.Control[iCurrent+1]=this.cb_3 this.Control[iCurrent+2]=this.cb_5 this.Control[iCurrent+3]=this.ddlb_mtrlprp this.Control[iCurrent+4]=this.tv_1 this.Control[iCurrent+5]=this.cb_planprice this.Control[iCurrent+6]=this.cb_4 this.Control[iCurrent+7]=this.cb_6 this.Control[iCurrent+8]=this.cbx_auto_copy this.Control[iCurrent+9]=this.cb_7 this.Control[iCurrent+10]=this.cb_8 this.Control[iCurrent+11]=this.ddlb_ptoplp this.Control[iCurrent+12]=this.em_ptoplp this.Control[iCurrent+13]=this.cb_ptoplp this.Control[iCurrent+14]=this.cb_add_mtrl this.Control[iCurrent+15]=this.cb_edit this.Control[iCurrent+16]=this.cb_save this.Control[iCurrent+17]=this.cbx_isuse end on on w_rp_cmpl_mtrlcost.destroy call super::destroy destroy(this.cb_3) destroy(this.cb_5) destroy(this.ddlb_mtrlprp) destroy(this.tv_1) destroy(this.cb_planprice) destroy(this.cb_4) destroy(this.cb_6) destroy(this.cbx_auto_copy) destroy(this.cb_7) destroy(this.cb_8) destroy(this.ddlb_ptoplp) destroy(this.em_ptoplp) destroy(this.cb_ptoplp) destroy(this.cb_add_mtrl) destroy(this.cb_edit) destroy(this.cb_save) destroy(this.cbx_isuse) end on event ue_before_open;call super::ue_before_open;if_ue_retr=true if_ue_filter=true if_ue_sort=true if_ue_sentdataout=true end event event resize;call super::resize;tv_1.Height = dw_1.Height end event event open;call super::open;IF cbx_loginretr.Checked THEN cb_1.TriggerEvent(Clicked!) END IF end event type cb_func from w_publ_easyq`cb_func within w_rp_cmpl_mtrlcost integer x = 1883 string text = "功能" end type type cb_exit from w_publ_easyq`cb_exit within w_rp_cmpl_mtrlcost integer x = 2592 end type type cb_2 from w_publ_easyq`cb_2 within w_rp_cmpl_mtrlcost integer x = 2290 end type type cb_psetup from w_publ_easyq`cb_psetup within w_rp_cmpl_mtrlcost integer x = 2034 end type type cb_1 from w_publ_easyq`cb_1 within w_rp_cmpl_mtrlcost end type event cb_1::clicked;call super::clicked;Int li_ifuse IF cbx_isuse.Checked THEN li_ifuse = 1 ELSE li_ifuse = -1 END IF dw_1.Retrieve(cur_mtrlorigin,cur_handtype,li_ifuse) end event type st_3 from w_publ_easyq`st_3 within w_rp_cmpl_mtrlcost integer x = 9 integer y = 204 integer width = 169 integer height = 48 string text = "来源:" end type type st_4 from w_publ_easyq`st_4 within w_rp_cmpl_mtrlcost boolean visible = false integer x = 1714 integer y = 644 end type type em_1 from w_publ_easyq`em_1 within w_rp_cmpl_mtrlcost boolean visible = false integer x = 1618 integer y = 424 end type type em_2 from w_publ_easyq`em_2 within w_rp_cmpl_mtrlcost boolean visible = false integer x = 1650 integer y = 524 end type type ddlb_yl from w_publ_easyq`ddlb_yl within w_rp_cmpl_mtrlcost integer x = 2985 integer y = 12 end type type cbx_yl from w_publ_easyq`cbx_yl within w_rp_cmpl_mtrlcost integer x = 2761 integer y = 12 end type event cbx_yl::clicked;call super::clicked;if this.checked then dw_1.selectrow(0,false) end if end event type dw_1 from w_publ_easyq`dw_1 within w_rp_cmpl_mtrlcost integer x = 882 integer width = 2574 integer height = 1592 string dataobject = "dw_rp_mtrlprice" boolean rbutton_filter_use = false boolean rbutton_setposition_use = false boolean titleclick_sort_use = false end type event dw_1::doubleclicked;call super::doubleclicked;PARENT.TriggerEvent('ue_view_his') end event event dw_1::clicked;call super::clicked;IF row > 0 THEN THIS.SelectRow(0,FALSE) THIS.SelectRow(row,TRUE) this.setrow(row) END IF end event type sle_mtrl from w_publ_easyq`sle_mtrl within w_rp_cmpl_mtrlcost integer x = 1641 integer y = 604 end type type sle_cust from w_publ_easyq`sle_cust within w_rp_cmpl_mtrlcost integer x = 480 integer y = 604 end type type st_mtrl from w_publ_easyq`st_mtrl within w_rp_cmpl_mtrlcost integer x = 1184 integer y = 620 end type type st_cust from w_publ_easyq`st_cust within w_rp_cmpl_mtrlcost integer x = 18 integer y = 620 end type type cbx_loginretr from w_publ_easyq`cbx_loginretr within w_rp_cmpl_mtrlcost boolean visible = true integer x = 2761 integer y = 100 end type type pb_em1 from w_publ_easyq`pb_em1 within w_rp_cmpl_mtrlcost boolean visible = false integer x = 626 integer y = 712 end type type pb_em2 from w_publ_easyq`pb_em2 within w_rp_cmpl_mtrlcost boolean visible = false integer x = 1239 integer y = 712 end type type pb_2 from w_publ_easyq`pb_2 within w_rp_cmpl_mtrlcost boolean visible = false integer x = 1349 integer y = 712 end type type cb_help from w_publ_easyq`cb_help within w_rp_cmpl_mtrlcost integer x = 2441 end type type cb_copyself from w_publ_easyq`cb_copyself within w_rp_cmpl_mtrlcost integer x = 1627 end type type gb_1 from w_publ_easyq`gb_1 within w_rp_cmpl_mtrlcost integer x = 1714 integer y = 840 integer width = 306 integer height = 88 end type type ln_bar from w_publ_easyq`ln_bar within w_rp_cmpl_mtrlcost end type type ln_bar2 from w_publ_easyq`ln_bar2 within w_rp_cmpl_mtrlcost end type type r_bar from w_publ_easyq`r_bar within w_rp_cmpl_mtrlcost integer x = 3392 end type type ln_1 from w_publ_easyq`ln_1 within w_rp_cmpl_mtrlcost end type type ln_2 from w_publ_easyq`ln_2 within w_rp_cmpl_mtrlcost end type type ln_3 from w_publ_easyq`ln_3 within w_rp_cmpl_mtrlcost end type type ln_4 from w_publ_easyq`ln_4 within w_rp_cmpl_mtrlcost end type type cb_3 from uo_imflatbutton within w_rp_cmpl_mtrlcost integer x = 873 integer width = 151 integer height = 164 integer taborder = 90 boolean bringtotop = true string text = "统计" string normalpicname = "update.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;Long i,ll_row,ll_mtrlid,sumdate Decimal ld_price,ld_wfjgprice,ld_outcost,ld_wageprice,ld_otherprice,ld_eqprice String ls_mtrlcode Decimal ld_outcost_self uo_cmplcost uo_cmpl String ls_pfcode,arg_msg,ls_msg Long ll_fail = 0 Long ll_scid Long ch String ls_status,ls_woodcode,ls_pcode Int li_statusflag,li_woodcodeflag,li_pcodeflag String ls_status_config,ls_woodcode_config,ls_pcode_config IF dw_1.RowCount() <= 0 THEN MessageBox('提示','没有可统计的资料') RETURN END IF IF dw_1.Object.ch_sum[1] = 0 THEN MessageBox('提示','没有可统计的资料,请先选择') RETURN END IF sumdate = Year(Date(Today())) * 10000 + Month(Date(Today())) * 100 + Day(Date(Today())) IF MessageBox (publ_operator,"是否确定要进行统计操作吗?"+'~n'+& '统计时间: '+String(sumdate),Question!,YesNo! ) = 2 THEN RETURN ll_row = dw_1.RowCount() Open(w_sys_wait_jdt) w_sys_wait_jdt.wf_set_msg('正在计算中....') w_sys_wait_jdt.wf_accepttol(ll_row) uo_cmpl = Create uo_cmplcost FOR i = 1 To ll_row ll_mtrlid = dw_1.Object.mtrlid[i] ls_mtrlcode = dw_1.Object.mtrlcode[i] ls_pfcode = dw_1.Object.pfcode[i] ll_scid = 0 //dw_1.Object.u_mtrldef_scid[i] ls_status = dw_1.Object.status[i] ls_woodcode = dw_1.Object.woodcode[i] ls_pcode = dw_1.Object.pcode[i] li_statusflag = dw_1.Object.statusflag[i] li_woodcodeflag = dw_1.Object.woodcodeflag[i] li_pcodeflag = dw_1.Object.pcodeflag[i] ls_status_config = dw_1.Object.status_config[i] ls_woodcode_config = dw_1.Object.woodcode_config[i] ls_pcode_config = dw_1.Object.pcode_config[i] w_sys_wait_jdt.wf_inc(i) w_sys_wait_jdt.wf_set_msg(ls_mtrlcode+',清单:'+ls_pfcode+',正在计算中....') IF ls_pfcode = '' THEN CONTINUE IF dw_1.Object.ch[i] = 0 THEN CONTINUE ld_price = 0 ld_wfjgprice = 0 ld_outcost_self = 0 ld_outcost = 0 ld_wageprice = 0 ld_otherprice = 0 ld_eqprice = 0 arg_msg = '' uo_cmpl.deep = 0 uo_cmpl.ifcmpl_1 = True If (li_statusflag = 4 And ls_status <> ls_status_config Or & li_woodcodeflag = 4 And ls_woodcode <> ls_woodcode_config Or & li_pcodeflag = 4 And ls_pcode <> ls_pcode_config) THEN // IF uo_cmpl.uof_get_cost_dz(ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ld_price,ld_wfjgprice,ld_outcost,ld_wageprice,ld_eqprice,arg_msg) = 0 THEN IF true THEN arg_msg = '物料:'+ls_mtrlcode+'取成本失败,'+arg_msg ls_msg = ls_msg + arg_msg + '~n' ll_fail++ CONTINUE ld_price = 0 ld_wfjgprice = 0 ld_outcost = 0 ld_wageprice = 0 ld_eqprice = 0 END IF ELSE IF uo_cmpl.uof_get_cost(ll_scid,ll_mtrlid,ls_mtrlcode,ls_pfcode,1,1,ld_price,ld_wfjgprice,ld_outcost,ld_wageprice,arg_msg) = 0 THEN arg_msg = '物料:'+ls_mtrlcode+'取成本失败,'+arg_msg ls_msg = ls_msg + arg_msg + '~n' ll_fail++ CONTINUE ld_price = 0 ld_wfjgprice = 0 ld_outcost = 0 ld_wageprice = 0 ld_eqprice = 0 END IF END IF ld_price = Round(ld_price,2) ld_wfjgprice = Round(ld_wfjgprice,2) ld_outcost = Round(ld_outcost,2) ld_wageprice = Round(ld_wageprice,2) ld_eqprice = Round(ld_eqprice,2) IF cbx_auto_copy.Checked THEN SELECT top 1 otherprice INTO :ld_otherprice FROM u_mtrlprice_sum WHERE mtrlid = :ll_mtrlid AND pfcode = :ls_pfcode AND sumdate < :sumdate AND status = :ls_status AND woodcode = :ls_woodcode AND pcode = :ls_pcode Order By sumdate Desc; IF sqlca.SQLCode <> 0 THEN arg_msg = '物料:'+ls_mtrlcode+'取上次附加成本失败,'+arg_msg ls_msg = ls_msg + arg_msg + '~n' ll_fail++ CONTINUE END IF IF IsNull(ld_otherprice) THEN ld_otherprice = 0 END IF UPDATE u_mtrlprice_sum SET price = :ld_price, cost = :ld_price + :ld_wfjgprice + :ld_wageprice + :ld_outcost + :ld_otherprice + :ld_eqprice, wfjgprice = :ld_wfjgprice, jgprice = :ld_wageprice, outcost = :ld_outcost, otherprice = :ld_otherprice, eqprice = :ld_eqprice, dscrp = :arg_msg, sumdate = :sumdate WHERE mtrlid = :ll_mtrlid AND pfcode = :ls_pfcode AND (sumdate = :sumdate OR sumdate = 0 ) AND status = :ls_status AND woodcode = :ls_woodcode And pcode = :ls_pcode; IF sqlca.SQLCode = 0 THEN IF sqlca.SQLNRows = 0 THEN INSERT INTO u_mtrlprice_sum (sumdate, pfcode, mtrlid, price, cost, wfjgprice, jgprice, eqprice, outcost, otherprice, dscrp, status, woodcode, pcode) VALUES(:sumdate, :ls_pfcode, :ll_mtrlid, :ld_price, :ld_price + :ld_wfjgprice + :ld_wageprice + :ld_outcost + :ld_eqprice, :ld_wfjgprice, :ld_wageprice, :ld_eqprice, :ld_outcost, :ld_otherprice, :arg_msg, :ls_status, :ls_woodcode, :ls_pcode); IF sqlca.SQLCode <> 0 THEN arg_msg = '新增物料:'+ls_mtrlcode+'成本失败,'+sqlca.SQLErrText ls_msg = ls_msg + arg_msg + '~n' ll_fail++ CONTINUE END IF END IF ELSE arg_msg = '更新物料:'+ls_mtrlcode+'成本失败,'+sqlca.SQLErrText ls_msg = ls_msg + arg_msg + '~n' ll_fail++ CONTINUE END IF NEXT Close(w_sys_wait_jdt) COMMIT; IF ll_fail > 0 THEN MessageBox('提示','统计失败: ~n'+ls_msg) ELSE MessageBox('提示','统计成功!') END IF Destroy uo_cmpl cb_1.TriggerEvent(Clicked!) end event type cb_5 from uo_imflatbutton within w_rp_cmpl_mtrlcost integer x = 1024 integer width = 274 integer height = 164 integer taborder = 30 boolean bringtotop = true string text = "查看相关" string normalpicname = "find.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_view_bom" menustr = menustr + "|" + "Text=查看工价表~tEvent=ue_view_workprice" menustr = menustr + "|" + "Text=查看统计历史~tEvent=ue_view_his" 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 ddlb_mtrlprp from uo_ddlb_mtrlorigin within w_rp_cmpl_mtrlcost integer x = 192 integer y = 192 integer width = 517 integer height = 480 integer taborder = 40 boolean bringtotop = true string text = "自制" string item[] = {"自制","客户来料","采购","外协","全部来源"} end type event selectionchanged;CHOOSE CASE Index CASE 1 uo_mtrlorigin = 0 CASE 2 uo_mtrlorigin = 1 CASE 3 uo_mtrlorigin = 2 CASE 4 uo_mtrlorigin = 3 CASE 5 uo_mtrlorigin = -1 CASE ELSE uo_mtrlorigin = -1 END CHOOSE cur_mtrlorigin = this.uo_mtrlorigin cb_1.triggerevent(clicked!) end event type tv_1 from uo_tv_mtrltype within w_rp_cmpl_mtrlcost integer y = 412 integer width = 882 integer height = 1740 integer taborder = 20 boolean bringtotop = true integer textsize = -9 fontcharset fontcharset = gb2312charset! fontfamily fontfamily = anyfont! string facename = "宋体" boolean hideselection = false string picturename[] = {"Application!","Structure5!",""} end type event selectionchanged;call super::selectionchanged;if dw_edit_mode then return cur_handtype = THIS.uo_cur_info.handtype cur_handtype = cur_handtype + '%' cb_1.TriggerEvent(Clicked!) end event type cb_planprice from uo_imflatbutton within w_rp_cmpl_mtrlcost integer x = 1298 integer width = 329 integer height = 164 integer taborder = 40 boolean bringtotop = true string text = "更新计划价" string normalpicname = "update2.BMP" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;Long ll_mtrlid Long ll_i String ls_mtrlcode Int li_ifdft Decimal ld_planprice Decimal ld_wageprice Decimal ld_cost Decimal ld_wfjgprice Decimal ld_outcost Decimal ld_otherprice,ld_eqprice String ls_msg String ls_pfcode String ls_status,ls_woodcode,ls_pcode String ls_status_f,ls_woodcode_f,ls_pcode_f Int li_pricepztype s_rp_cmpl_mtrlcost_update_planprice s_rst Open(w_rp_cmpl_mtrlcost_update_planprice) s_rst = Message.PowerObjectParm IF s_rst.ifupdate = 0 THEN RETURN Open(w_sys_wait_jdt) w_sys_wait_jdt.wf_set_msg('正在计算中....') w_sys_wait_jdt.wf_accepttol(dw_1.RowCount()) FOR ll_i = 1 To dw_1.RowCount() ll_mtrlid = dw_1.Object.mtrlid[ll_i] ld_planprice = dw_1.Object.cost[ll_i] ls_mtrlcode = dw_1.Object.mtrlcode[ll_i] li_ifdft = 1 //dw_1.Object.ifdft[ll_i] li_pricepztype = 0 //dw_1.Object.pricepztype[ll_i] ls_status_f = dw_1.Object.status[ll_i] ls_woodcode_f = dw_1.Object.woodcode[ll_i] ls_pcode_f = dw_1.Object.pcode[ll_i] ld_wageprice = dw_1.Object.jgprice[ll_i] ld_cost = dw_1.Object.price[ll_i] ld_wfjgprice = dw_1.Object.wfjgprice[ll_i] ld_outcost = dw_1.Object.outcost[ll_i] ld_otherprice = dw_1.Object.otherprice[ll_i] ld_eqprice = dw_1.Object.eqprice[ll_i] ls_pfcode = dw_1.Object.pfcode[ll_i] CHOOSE CASE li_pricepztype CASE 0 ls_status = '' ls_woodcode = '' ls_pcode = '' CASE 1 ls_status = ls_status_f ls_woodcode = '' ls_pcode = '' CASE 2 ls_status = '' ls_woodcode = ls_woodcode_f ls_pcode = '' CASE 3 ls_status = '' ls_woodcode = '' ls_pcode = ls_pcode_f CASE 4 ls_status = ls_status_f ls_woodcode = ls_woodcode_f ls_pcode = '' CASE 5 ls_status = '' ls_woodcode = ls_woodcode_f ls_pcode = ls_pcode_f CASE 6 ls_status = ls_status_f ls_woodcode = '' ls_pcode = ls_pcode_f CASE 7 ls_status = ls_status_f ls_woodcode = ls_woodcode_f ls_pcode = ls_pcode_f END CHOOSE w_sys_wait_jdt.wf_inc(ll_i) // // IF li_ifdft = 0 THEN CONTINUE // IF s_rst.ifprice = 1 And ld_cost = 0 THEN CONTINUE IF s_rst.ifjgprice = 1 And ld_wageprice = 0 THEN CONTINUE IF s_rst.ifwfjgprice = 1 And ld_wfjgprice = 0 THEN CONTINUE IF s_rst.ifoutcost = 1 And ld_outcost = 0 THEN CONTINUE IF s_rst.ifotherprice = 1 And ld_otherprice = 0 THEN CONTINUE IF s_rst.ifeqprice = 1 And ld_eqprice = 0 THEN CONTINUE w_sys_wait_jdt.wf_set_msg(ls_mtrlcode+',清单:'+ls_pfcode+',正在建立计划价历史....') // UPDATE u_mtrl_planprice_his // SET planprice = :ld_planprice, // cost = :ld_cost, // wageprice = :ld_wageprice, // wfjgprice = :ld_wfjgprice, // fprice = :ld_outcost, // buildtype = 1, // eqprice = :ld_eqprice // WHERE mtrlid = :ll_mtrlid // AND status = :ls_status // AND woodcode = :ls_woodcode // AND pcode = :ls_pcode // And cmpldate = getdate(); // IF sqlca.SQLCode = 0 THEN // IF sqlca.SQLNRows = 0 THEN // INSERT INTO u_mtrl_planprice_his // (mtrlid, // cmpldate, // planprice, // wageprice, // cost, // wfjgprice, // fprice, // buildtype, // status, // woodcode, // pcode, // eqprice) // VALUES // (:ll_mtrlid, // getdate(), // :ld_planprice, // :ld_wageprice, // :ld_cost, // :ld_wfjgprice, // :ld_outcost, // 1, // :ls_status, // :ls_woodcode, // :ls_pcode, // :ld_eqprice); // IF sqlca.SQLCode <> 0 THEN // ls_msg = sqlca.SQLErrText // ROLLBACK; // MessageBox('错误','物料:'+ls_mtrlcode+'建立计划价历史失败,'+ls_msg) // Close(w_sys_wait_jdt) // RETURN // END IF // ELSE // IF sqlca.SQLCode <> 0 THEN // ls_msg = sqlca.SQLErrText // ROLLBACK; // MessageBox('错误','物料:'+ls_mtrlcode+'更新计划价失败,'+ls_msg) // Close(w_sys_wait_jdt) // RETURN // END IF // END IF // END IF w_sys_wait_jdt.wf_set_msg(ls_mtrlcode+',清单:'+ls_pfcode+',正在更新计划价....') UPDATE u_mtrldef SET planprice = :ld_planprice WHERE mtrlid = :ll_mtrlid ; IF sqlca.SQLCode <> 0 THEN ls_msg = sqlca.SQLErrText ROLLBACK; MessageBox('错误','物料:'+ls_mtrlcode+'更新计划价失败,'+ls_msg) Close(w_sys_wait_jdt) RETURN END IF // UPDATE u_mtrldef_planprice // SET planprice = :ld_planprice // WHERE mtrlid = :ll_mtrlid // AND status = :ls_status // AND woodcode = :ls_woodcode // And pcode = :ls_pcode ; // IF sqlca.SQLCode = 0 THEN // IF sqlca.SQLNRows = 0 THEN // INSERT INTO u_mtrldef_planprice // (mtrlid, // status, // woodcode, // pcode, // planprice) // VALUES // (:ll_mtrlid, // :ls_status, // :ls_woodcode, // :ls_pcode, // :ld_planprice); // IF sqlca.SQLCode <> 0 THEN // ls_msg = sqlca.SQLErrText // ROLLBACK; // MessageBox('错误','物料:'+ls_mtrlcode+'更新计划价失败,'+ls_msg) // Close(w_sys_wait_jdt) // RETURN // END IF // END IF // // ELSE // IF sqlca.SQLCode <> 0 THEN // ls_msg = sqlca.SQLErrText // ROLLBACK; // MessageBox('错误','物料:'+ls_mtrlcode+'更新计划价失败,'+ls_msg) // Close(w_sys_wait_jdt) // RETURN // END IF // END IF NEXT Close(w_sys_wait_jdt) COMMIT; MessageBox('系统提示','更新计划价成功!') end event type cb_4 from commandbutton within w_rp_cmpl_mtrlcost integer x = 1344 integer y = 192 integer width = 187 integer height = 76 integer taborder = 50 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 dw_1.AcceptText() dw_1.SetRedraw(False) FOR i = 1 To dw_1.RowCount() dw_1.Object.ch[i] = 1 NEXT dw_1.SetRedraw(True) end event type cb_6 from commandbutton within w_rp_cmpl_mtrlcost integer x = 1536 integer y = 192 integer width = 219 integer height = 76 integer taborder = 60 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 dw_1.AcceptText() dw_1.SetRedraw(False) FOR i = 1 To dw_1.RowCount() dw_1.Object.ch[i] = 0 NEXT dw_1.SetRedraw(True) end event type cbx_auto_copy from checkbox within w_rp_cmpl_mtrlcost integer x = 1778 integer y = 200 integer width = 795 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 string text = "统计时自动复制上次附加成本" end type event clicked;Int if_autocopy IF THIS.Checked THEN if_autocopy = 1 ELSE if_autocopy = 0 END IF f_SetProfileString (sys_empid,dw_1.DataObject, "if_autocopy", String(if_autocopy)) end event event constructor;Int if_autocopy if_autocopy = Integer(f_ProfileString (sys_empid,dw_1.DataObject, "if_autocopy", '0')) IF if_autocopy = 0 THEN THIS.Checked = FALSE ELSE THIS.Checked = TRUE END IF end event type cb_7 from commandbutton within w_rp_cmpl_mtrlcost integer x = 2999 integer y = 188 integer width = 402 integer height = 84 integer taborder = 70 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" string text = "批设附加成本" end type event clicked;Int rslt = 1 Long i,ll_row,ll_sumdate Decimal ld_otherprice String ls_mtrlcode String ls_pfcode dw_1.AcceptText() ll_row = dw_1.RowCount() IF MessageBox (publ_operator,"是否确定要按第一行附加成本批设置全部附加成本吗?",Question!,YesNo! ) = 2 THEN RETURN IF ll_row > 0 THEN ld_otherprice = dw_1.Object.otherprice[1] END IF Open(w_sys_wait_jdt) w_sys_wait_jdt.wf_set_msg('正在设置....') w_sys_wait_jdt.wf_accepttol(ll_row - 1) dw_1.SetRedraw(FALSE) FOR i = 2 TO ll_row ls_mtrlcode = dw_1.Object.mtrlcode[i] ls_pfcode = dw_1.Object.pfcode[i] ll_sumdate = dw_1.Object.u_mtrlprice_sum_sumdate[i] w_sys_wait_jdt.wf_inc(i) w_sys_wait_jdt.wf_set_msg(ls_mtrlcode+',清单:'+ls_pfcode+',正在设置中....') IF ls_pfcode = '' THEN CONTINUE IF ll_sumdate = 0 THEN CONTINUE dw_1.Object.otherprice[i] = ld_otherprice NEXT dw_1.SetRedraw(TRUE) Close(w_sys_wait_jdt) end event type cb_8 from commandbutton within w_rp_cmpl_mtrlcost integer x = 2592 integer y = 188 integer width = 402 integer height = 84 integer taborder = 70 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" string text = "保存附加成本" end type event clicked;int rslt = 1 Long i,ll_row,ll_mtrlid,ll_sumdate Decimal ld_otherprice,ld_eqprice String ls_mtrlcode String ls_pfcode,arg_msg dw_1.AcceptText() ll_row = dw_1.RowCount() IF MessageBox (publ_operator,"是否确定要保存附加成本吗?",Question!,YesNo! ) = 2 THEN RETURN OPEN(w_sys_wait_jdt) w_sys_wait_jdt.wf_set_msg('正在保存....') w_sys_wait_jdt.wf_accepttol(ll_row) FOR i = 1 TO ll_row ll_mtrlid = dw_1.Object.mtrlid[i] ls_mtrlcode = dw_1.Object.mtrlcode[i] ls_pfcode = dw_1.Object.pfcode[i] ll_sumdate = dw_1.Object.u_mtrlprice_sum_sumdate[i] ld_otherprice = dw_1.Object.otherprice[i] ld_eqprice = dw_1.Object.eqprice[i] w_sys_wait_jdt.wf_inc(i) w_sys_wait_jdt.wf_set_msg(ls_mtrlcode+',清单:'+ls_pfcode+',正在保存中....') IF ls_pfcode = '' THEN CONTINUE IF ll_sumdate = 0 THEN CONTINUE UPDATE u_mtrlprice_sum SET cost = price + wfjgprice + jgprice + outcost + :ld_otherprice + :ld_eqprice, otherprice = :ld_otherprice WHERE mtrlid = :ll_mtrlid AND pfcode = :ls_pfcode AND sumdate = :ll_sumdate; IF sqlca.SQLCode <> 0 THEN arg_msg = '更新物料:'+ls_mtrlcode+'成本失败,'+sqlca.SQLErrText rslt = 0 goto ext END IF NEXT ext: CLOSE(w_sys_wait_jdt) IF rslt = 0 THEN ROLLBACK; MessageBox('提示','保存失败: ~n'+arg_msg) ELSE COMMIT; MessageBox('提示','保存成功!') END IF cb_1.TriggerEvent(Clicked!) end event type ddlb_ptoplp from dropdownlistbox within w_rp_cmpl_mtrlcost integer x = 5 integer y = 312 integer width = 2066 integer height = 596 integer taborder = 210 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 string text = "(材料成本 + 人力成本 + 外协成本) ×" boolean sorted = false boolean vscrollbar = true string item[] = {"材料成本×","人力成本×","外协成本×","费用成本×","(材料成本 + 人力成本) ×","(材料成本 + 人力成本 + 外协成本) ×","(材料成本 + 人力成本 + 外协成本 + 费用成本) ×"} borderstyle borderstyle = stylelowered! end type type em_ptoplp from editmask within w_rp_cmpl_mtrlcost integer x = 2075 integer y = 312 integer width = 197 integer height = 80 integer taborder = 220 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 long backcolor = 16777215 string text = "1.00" alignment alignment = right! borderstyle borderstyle = stylelowered! string mask = "#0.00" end type event modified;this.text=string(dec(this.text),'#0.00') end event type cb_ptoplp from commandbutton within w_rp_cmpl_mtrlcost integer x = 2281 integer y = 312 integer width = 402 integer height = 84 integer taborder = 230 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" string text = "-> 附加成本" end type event clicked;Long ls_i,ls_count ls_count = dw_1.RowCount() dw_1.AcceptText() OPEN(w_sys_wait_jdt) w_sys_wait_jdt.wf_set_msg('正在计算....') w_sys_wait_jdt.wf_accepttol(ls_count) dw_1.SetRedraw(FALSE) FOR ls_i = 1 TO ls_count w_sys_wait_jdt.wf_inc(ls_i) w_sys_wait_jdt.wf_set_msg('行:'+String(ls_i)+',正在计算中....') IF dw_1.Object.ch[ls_i] = 0 THEN CONTINUE IF dw_1.Object.u_mtrlprice_sum_sumdate[ls_i] = 0 THEN CONTINUE IF ddlb_ptoplp.Text = '材料成本×' THEN dw_1.Object.otherprice[ls_i] = Round(dw_1.Object.price[ls_i] * Dec(em_ptoplp.Text),2) ELSEIF ddlb_ptoplp.Text = '人力成本×' THEN dw_1.Object.otherprice[ls_i] = Round(dw_1.Object.jgprice[ls_i] * Dec(em_ptoplp.Text),2) ELSEIF ddlb_ptoplp.Text = '外协成本×' THEN dw_1.Object.otherprice[ls_i] = Round(dw_1.Object.wfjgprice[ls_i] * Dec(em_ptoplp.Text),2) ELSEIF ddlb_ptoplp.Text = '费用成本×' THEN dw_1.Object.otherprice[ls_i] = Round(dw_1.Object.outcost[ls_i] * Dec(em_ptoplp.Text),2) ELSEIF ddlb_ptoplp.Text = '(材料成本 + 人力成本) ×' THEN dw_1.Object.otherprice[ls_i] = Round((dw_1.Object.price[ls_i] + dw_1.Object.jgprice[ls_i]) * Dec(em_ptoplp.Text),2) ELSEIF ddlb_ptoplp.Text = '(材料成本 + 人力成本 + 外协成本) ×' THEN dw_1.Object.otherprice[ls_i] = Round((dw_1.Object.price[ls_i] + dw_1.Object.jgprice[ls_i] + dw_1.Object.wfjgprice[ls_i]) * Dec(em_ptoplp.Text),2) ELSEIF ddlb_ptoplp.Text = '(材料成本 + 人力成本 + 外协成本 + 费用成本) ×' THEN dw_1.Object.otherprice[ls_i] = Round((dw_1.Object.price[ls_i] + dw_1.Object.jgprice[ls_i] + dw_1.Object.wfjgprice[ls_i] + dw_1.Object.outcost[ls_i]) * Dec(em_ptoplp.Text),2) END IF NEXT dw_1.SetRedraw(TRUE) CLOSE(w_sys_wait_jdt) end event type cb_add_mtrl from uo_imflatbutton within w_rp_cmpl_mtrlcost integer x = 581 integer width = 288 integer height = 164 integer taborder = 30 boolean bringtotop = true string text = "增加资料" string normalpicname = "OPEN.BMP" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;IF MessageBox('询问','是否确认要插入新增的物料资料?',question!,yesno!) = 2 THEN RETURN w_sys_wait.wf_set_msg('正在插入新增资料...') w_sys_wait.Show() INSERT INTO u_mtrlprice_sum (mtrlid, status, woodcode, pcode, pfcode, sumdate) SELECT u_mtrl_configure.Mtrlid, u_mtrl_configure.name, '' AS woodcode, '' AS pcode, u_mtrl_configure.name , 0 FROM u_mtrl_configure INNER JOIN u_mtrldef ON u_mtrl_configure.Mtrlid = u_mtrldef.mtrlid WHERE (u_mtrldef.statusflag = 2) AND (NOT EXISTS (SELECT * FROM u_mtrlprice_sum WHERE mtrlid = u_mtrl_configure.mtrlid AND status = u_mtrl_configure.name AND woodcode = '' And pcode = '')); IF sqlca.SQLCode <> 0 THEN w_sys_wait.Hide() MessageBox('Error','插入新增的组合配置失败,'+sqlca.SQLErrText) ROLLBACK; RETURN END IF INSERT INTO u_mtrlprice_sum (mtrlid, status, woodcode, pcode, pfcode, sumdate) SELECT u_mtrldef.mtrlid, CASE statusflag WHEN 4 THEN status_config ELSE '' END AS status, CASE woodcodeflag WHEN 4 THEN woodcode_config ELSE '' END AS woodcode, CASE pcodeflag WHEN 4 THEN pcode_config ELSE '' END AS pcode, u_mtrl_pf.pfcode, 0 FROM u_mtrldef INNER JOIN (select distinct mtrlid, pfcode from u_PrdPF) u_mtrl_pf ON u_mtrldef.mtrlid = u_mtrl_pf.Mtrlid WHERE (u_mtrldef.statusflag <> 2) AND (NOT EXISTS (SELECT * FROM u_mtrlprice_sum WHERE mtrlid = u_mtrldef.mtrlid AND status = CASE statusflag WHEN 4 THEN status_config ELSE '' END AND woodcode = CASE woodcodeflag WHEN 4 THEN woodcode_config ELSE '' END And pcode = CASE pcodeflag WHEN 4 THEN pcode_config ELSE '' END)); IF sqlca.SQLCode <> 0 THEN w_sys_wait.Hide() MessageBox('Error','插入新增的产品及物料失败,'+sqlca.SQLErrText) ROLLBACK; RETURN END IF //INSERT INTO u_mtrlprice_sum // (mtrlid, // status, // woodcode, // pcode, // pfcode, // sumdate) // SELECT DISTINCT // u_Order_ml.mtrlid, // u_Order_ml.status_mode, // u_Order_ml.woodcode, // u_Order_ml.pcode, // CASE u_mtrldef.statusflag WHEN 2 THEN u_Order_ml.status_mode ELSE u_order_ml.pfcode // END AS pfcode, // 0 // FROM u_Order_ml INNER JOIN // u_mtrldef ON u_Order_ml.mtrlid = u_mtrldef.mtrlid // WHERE (NOT EXISTS // (SELECT * // FROM u_mtrlprice_sum // WHERE mtrlid = u_order_ml.mtrlid AND status = u_Order_ml.status_mode AND // woodcode = u_Order_ml.woodcode AND pcode = u_Order_ml.pcode)) AND // (u_Order_ml.status <> 0) And (u_mtrldef.statusflag = 4 Or u_mtrldef.woodcodeflag = 4 Or u_mtrldef.pcodeflag = 4); //IF sqlca.SQLCode <> 0 THEN // w_sys_wait.Hide() // MessageBox('Error','插入生产中涉及到的新部件选配产品失败,'+sqlca.SQLErrText) // ROLLBACK; // RETURN //END IF COMMIT; w_sys_wait.Hide() messagebox('系统提示','操作成功!') cb_1.TriggerEvent(Clicked!) end event type cb_edit from uo_imflatbutton within w_rp_cmpl_mtrlcost integer x = 302 integer width = 274 integer height = 164 integer taborder = 50 boolean bringtotop = true string text = "手动修改" string normalpicname = "open.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;IF NOT f_power_ind(1631) THEN MessageBox(publ_operator,"你没有使用权限") RETURN END IF IF dw_edit_mode THEN IF MessageBox(publ_operator,'是否要确定放弃保存资料', Exclamation!, YesNo!, 2) = 2 THEN RETURN END IF END IF dw_edit_mode = NOT dw_edit_mode wf_face() IF NOT dw_edit_mode THEN cb_1.TriggerEvent(Clicked!) END IF end event type cb_save from uo_imflatbutton within w_rp_cmpl_mtrlcost integer x = 151 integer width = 151 integer height = 164 integer taborder = 50 boolean bringtotop = true boolean enabled = false string text = "保存" string normalpicname = "save.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked; IF NOT f_power_ind(1631) THEN MessageBox(publ_operator,"你没有使用权限") RETURN END IF int rslt = 1 Long i,ll_row,ll_mtrlid,ll_sumdate Decimal ld_otherprice,ld_eqprice String ls_mtrlcode String ls_pfcode,arg_msg decimal ld_price,ld_wfjgprice,ld_jgprice,ld_outcost dw_1.AcceptText() ll_row = dw_1.RowCount() IF MessageBox (publ_operator,"是否确定要保存修改后的成本吗?",Question!,YesNo! ) = 2 THEN RETURN OPEN(w_sys_wait_jdt) w_sys_wait_jdt.wf_set_msg('正在保存....') w_sys_wait_jdt.wf_accepttol(ll_row) FOR i = 1 TO ll_row ll_mtrlid = dw_1.Object.mtrlid[i] ls_mtrlcode = dw_1.Object.mtrlcode[i] ls_pfcode = dw_1.Object.pfcode[i] ll_sumdate = dw_1.Object.u_mtrlprice_sum_sumdate[i] ld_price = dw_1.Object.price[i] ld_jgprice = dw_1.Object.jgprice[i] ld_wfjgprice = dw_1.Object.wfjgprice[i] ld_outcost = dw_1.Object.outcost[i] ld_eqprice = dw_1.Object.eqprice[i] ld_otherprice = dw_1.Object.otherprice[i] w_sys_wait_jdt.wf_inc(i) w_sys_wait_jdt.wf_set_msg(ls_mtrlcode+',清单:'+ls_pfcode+',正在保存中....') IF ls_pfcode = '' THEN CONTINUE IF ll_sumdate = 0 THEN CONTINUE UPDATE u_mtrlprice_sum SET price = :ld_price, cost = :ld_price + :ld_wfjgprice + :ld_jgprice + :ld_outcost + :ld_otherprice + :ld_eqprice, wfjgprice = :ld_wfjgprice, jgprice = :ld_jgprice, outcost = :ld_outcost, otherprice = :ld_otherprice, eqprice = :ld_eqprice WHERE mtrlid = :ll_mtrlid AND pfcode = :ls_pfcode AND sumdate = :ll_sumdate; IF sqlca.SQLCode <> 0 THEN arg_msg = '更新物料:'+ls_mtrlcode+'成本失败,'+sqlca.SQLErrText rslt = 0 goto ext END IF NEXT ext: CLOSE(w_sys_wait_jdt) IF rslt = 0 THEN ROLLBACK; MessageBox('提示','保存失败: ~n'+arg_msg) ELSE COMMIT; MessageBox('提示','保存成功!') END IF cb_1.TriggerEvent(Clicked!) dw_edit_mode = NOT dw_edit_mode wf_face() end event type cbx_isuse from checkbox within w_rp_cmpl_mtrlcost integer x = 814 integer y = 200 integer width = 466 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 string text = "不显示无效资料" boolean checked = true end type event clicked;Int if_isuse IF THIS.Checked THEN if_isuse = 1 ELSE if_isuse = 0 END IF f_SetProfileString (sys_empid,dw_1.DataObject, "if_isuse", String(if_isuse)) cb_1.triggerevent(clicked!) end event event constructor;Int if_isuse if_isuse = Integer(f_ProfileString (sys_empid,dw_1.DataObject, "if_isuse", '1')) IF if_isuse = 0 THEN This.Checked = False ELSE This.Checked = True END IF end event