$PBExportHeader$w_order_ml_mrp.srw forward global type w_order_ml_mrp from w_publ_base end type type dw_1 from u_dw_rbtnfilter within w_order_ml_mrp end type type cb_save from uo_imflatbutton within w_order_ml_mrp end type type cb_re_cmpl from uo_imflatbutton within w_order_ml_mrp end type type cb_lock from uo_imflatbutton within w_order_ml_mrp end type type ln_bar from line within w_order_ml_mrp end type type ln_bar2 from line within w_order_ml_mrp end type type r_bar from rectangle within w_order_ml_mrp end type type cb_cmpl from uo_imflatbutton within w_order_ml_mrp end type type cb_undo from uo_imflatbutton within w_order_ml_mrp end type type cb_copyrow from uo_imflatbutton within w_order_ml_mrp end type type cbx_if_allowuse from checkbox within w_order_ml_mrp end type type cb_change from uo_imflatbutton within w_order_ml_mrp end type type st_dscrp from statictext within w_order_ml_mrp end type type cb_change_pz from uo_imflatbutton within w_order_ml_mrp end type type cb_cancel_scll from uo_imflatbutton within w_order_ml_mrp end type type cbx_ifwx_mtrl_not_useqty from checkbox within w_order_ml_mrp end type type cb_sort from uo_imflatbutton within w_order_ml_mrp end type type cb_help from uo_imflatbutton within w_order_ml_mrp end type type cbx_ifbuy_mtrl_not_useqty from checkbox within w_order_ml_mrp end type type em_1 from editmask within w_order_ml_mrp end type type st_1 from statictext within w_order_ml_mrp end type type ln_1 from line within w_order_ml_mrp end type type ln_2 from line within w_order_ml_mrp end type type ln_3 from line within w_order_ml_mrp end type type ln_4 from line within w_order_ml_mrp end type end forward global type w_order_ml_mrp from w_publ_base integer width = 3621 integer height = 2460 string title = "用料运算" boolean minbox = false windowtype windowtype = response! windowstate windowstate = maximized! event ue_sort_1 ( ) event ue_sort_2 ( ) event ue_help ( ) dw_1 dw_1 cb_save cb_save cb_re_cmpl cb_re_cmpl cb_lock cb_lock ln_bar ln_bar ln_bar2 ln_bar2 r_bar r_bar cb_cmpl cb_cmpl cb_undo cb_undo cb_copyrow cb_copyrow cbx_if_allowuse cbx_if_allowuse cb_change cb_change st_dscrp st_dscrp cb_change_pz cb_change_pz cb_cancel_scll cb_cancel_scll cbx_ifwx_mtrl_not_useqty cbx_ifwx_mtrl_not_useqty cb_sort cb_sort cb_help cb_help cbx_ifbuy_mtrl_not_useqty cbx_ifbuy_mtrl_not_useqty em_1 em_1 st_1 st_1 ln_1 ln_1 ln_2 ln_2 ln_3 ln_3 ln_4 ln_4 end type global w_order_ml_mrp w_order_ml_mrp type variables Long i_taskid,i_scid Int i_printid Int i_Ordertype Long ll_unlock_row Boolean if_cmpl = TRUE Decimal i_d_cmplqty_old Int i_i_plantype_old Long i_l_scid_old end variables forward prototypes public function integer wf_face () end prototypes event ue_sort_1();IF MessageBox ("IF","是否确定要重新排序已运算的数据,重新排序后可能会影响下级换料,是否继续?",Question!,YesNo! ) = 2 THEN RETURN dw_1.SetSort('u_orderrqmtrl_tree_ifmainmtrlid ds,u_orderrqmtrl_tree_wrkgrpid as') dw_1.Sort( ) end event event ue_sort_2();IF MessageBox ("IF","是否确定要重新排序已运算的数据,重新排序后可能会影响下级换料,是否继续?",Question!,YesNo! ) = 2 THEN RETURN dw_1.SetSort('u_orderrqmtrl_tree_ifmainmtrlid ds,u_mtrldef_mtrltype as') dw_1.Sort( ) end event event ue_help();Int i i = htmlhelpA(Handle(THIS), sys_help_chm, 0, THIS.Title+".htm") end event public function integer wf_face ();Long ll_row dw_1.AcceptText() ll_row = dw_1.GetRow() IF ll_row <= 0 THEN cb_save.Enabled = FALSE cb_re_cmpl.Enabled = FALSE cb_cmpl.Enabled = FALSE cb_lock.Enabled = FALSE cb_undo.Enabled = FALSE cb_copyrow.Enabled = FALSE cb_change.Enabled = FALSE cb_change_pz.Enabled = FALSE cb_cancel_scll.Enabled = FALSE cb_sort.Enabled = FALSE ELSE IF dw_1.Object.ifcmpl[ll_row] = 0 THEN cb_save.Enabled = FALSE cb_re_cmpl.Enabled = FALSE cb_cmpl.Enabled = TRUE cb_lock.Enabled = FALSE cb_undo.Enabled = TRUE cb_copyrow.Enabled = FALSE cb_change.Enabled = FALSE cb_change_pz.Enabled = FALSE cb_cancel_scll.Enabled = FALSE cb_sort.Enabled = FALSE ELSE cb_save.Enabled = TRUE cb_re_cmpl.Enabled = TRUE cb_cmpl.Enabled = FALSE cb_lock.Enabled = TRUE cb_undo.Enabled = FALSE cb_copyrow.Enabled = TRUE cb_change.Enabled = TRUE cb_change_pz.Enabled = true cb_cancel_scll.Enabled = TRUE cb_sort.Enabled = TRUE END IF END IF RETURN 1 end function on w_order_ml_mrp.create int iCurrent call super::create this.dw_1=create dw_1 this.cb_save=create cb_save this.cb_re_cmpl=create cb_re_cmpl this.cb_lock=create cb_lock this.ln_bar=create ln_bar this.ln_bar2=create ln_bar2 this.r_bar=create r_bar this.cb_cmpl=create cb_cmpl this.cb_undo=create cb_undo this.cb_copyrow=create cb_copyrow this.cbx_if_allowuse=create cbx_if_allowuse this.cb_change=create cb_change this.st_dscrp=create st_dscrp this.cb_change_pz=create cb_change_pz this.cb_cancel_scll=create cb_cancel_scll this.cbx_ifwx_mtrl_not_useqty=create cbx_ifwx_mtrl_not_useqty this.cb_sort=create cb_sort this.cb_help=create cb_help this.cbx_ifbuy_mtrl_not_useqty=create cbx_ifbuy_mtrl_not_useqty this.em_1=create em_1 this.st_1=create st_1 this.ln_1=create ln_1 this.ln_2=create ln_2 this.ln_3=create ln_3 this.ln_4=create ln_4 iCurrent=UpperBound(this.Control) this.Control[iCurrent+1]=this.dw_1 this.Control[iCurrent+2]=this.cb_save this.Control[iCurrent+3]=this.cb_re_cmpl this.Control[iCurrent+4]=this.cb_lock this.Control[iCurrent+5]=this.ln_bar this.Control[iCurrent+6]=this.ln_bar2 this.Control[iCurrent+7]=this.r_bar this.Control[iCurrent+8]=this.cb_cmpl this.Control[iCurrent+9]=this.cb_undo this.Control[iCurrent+10]=this.cb_copyrow this.Control[iCurrent+11]=this.cbx_if_allowuse this.Control[iCurrent+12]=this.cb_change this.Control[iCurrent+13]=this.st_dscrp this.Control[iCurrent+14]=this.cb_change_pz this.Control[iCurrent+15]=this.cb_cancel_scll this.Control[iCurrent+16]=this.cbx_ifwx_mtrl_not_useqty this.Control[iCurrent+17]=this.cb_sort this.Control[iCurrent+18]=this.cb_help this.Control[iCurrent+19]=this.cbx_ifbuy_mtrl_not_useqty this.Control[iCurrent+20]=this.em_1 this.Control[iCurrent+21]=this.st_1 this.Control[iCurrent+22]=this.ln_1 this.Control[iCurrent+23]=this.ln_2 this.Control[iCurrent+24]=this.ln_3 this.Control[iCurrent+25]=this.ln_4 end on on w_order_ml_mrp.destroy call super::destroy destroy(this.dw_1) destroy(this.cb_save) destroy(this.cb_re_cmpl) destroy(this.cb_lock) destroy(this.ln_bar) destroy(this.ln_bar2) destroy(this.r_bar) destroy(this.cb_cmpl) destroy(this.cb_undo) destroy(this.cb_copyrow) destroy(this.cbx_if_allowuse) destroy(this.cb_change) destroy(this.st_dscrp) destroy(this.cb_change_pz) destroy(this.cb_cancel_scll) destroy(this.cbx_ifwx_mtrl_not_useqty) destroy(this.cb_sort) destroy(this.cb_help) destroy(this.cbx_ifbuy_mtrl_not_useqty) destroy(this.em_1) destroy(this.st_1) destroy(this.ln_1) destroy(this.ln_2) destroy(this.ln_3) destroy(this.ln_4) end on event resize;call super::resize;ln_bar.EndX = THIS.Width ln_bar2.EndX = THIS.Width r_bar.Width = THIS.Width ln_1.EndX = THIS.Width ln_2.EndX = THIS.Width ln_3.EndX = THIS.Width ln_4.EndX = THIS.Width dw_1.Width = THIS.Width - dw_1.X - 40 dw_1.Height = THIS.Height - dw_1.Y - 150 st_dscrp.Width = THIS.Width - st_dscrp.X - 40 end event event open;call super::open;Int rslt = 1 s_order_ml_mrp s_mrp s_order_ml_rqmtrl s_ref_mtrl s_mrp = Message.PowerObjectParm uo_order_ml_mrp uo_ml_mrp uo_ml_mrp = Create uo_order_ml_mrp Int li_if_allowuse,li_if_date li_if_allowuse = s_mrp.if_allowuse li_if_date = s_mrp.if_date IF li_if_allowuse = 1 THEN cbx_if_allowuse.Checked = True ELSE cbx_if_allowuse.Checked = False END IF cbx_if_allowuse.TriggerEvent(Clicked!) cbx_ifwx_mtrl_not_useqty.Checked = s_mrp.ifwx_mtrl_not_useqty cbx_ifbuy_mtrl_not_useqty.Checked = s_mrp.ifbuy_mtrl_not_useqty st_dscrp.Text = '销售订单明细备注:'+s_mrp.dscrp i_taskid = s_mrp.taskid i_scid = s_mrp.scid i_printid = s_mrp.printid dw_1.SetTransObject(sqlca) IF dw_1.Retrieve(i_scid,i_taskid,i_printid) = 0 THEN cb_re_cmpl.TriggerEvent(Clicked!) END IF ////???? //==================================================================== // 添加成品行 //==================================================================== Long ll_mtrlid String ls_pfcode String ls_status,ls_woodcode,ls_pcode Decimal ld_orderqty Long ll_i DateTime ld_requiredate String arg_msg Long ll_ordertype SELECT mtrlid, orderqty, status, woodcode, pcode INTO :ll_mtrlid, :ld_orderqty, :ls_status, :ls_woodcode, :ls_pcode FROM u_saletaskmx WHERE u_saletaskmx.scid = :i_scid AND u_saletaskmx.taskid = :i_taskid AND u_saletaskmx.printid = :i_printid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询销售订单明细资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF cbx_if_allowuse.Checked THEN li_if_allowuse = 1 ELSE li_if_allowuse = 0 END IF uo_ml_mrp.ifbuy_mtrl_not_useqty = cbx_ifbuy_mtrl_not_useqty.Checked uo_ml_mrp.ifwx_mtrl_not_useqty = cbx_ifwx_mtrl_not_useqty.Checked IF uo_ml_mrp.uof_cmpl_rqmtrl(i_scid,i_taskid,i_printid,0,ll_mtrlid,& ls_status,ls_woodcode,ls_pcode,ld_orderqty,0,& li_if_allowuse,s_ref_mtrl,arg_msg,0,'') = 0 THEN rslt = 0 GOTO ext END IF Long ll_row String ls_exp = '' FOR ll_i = UpperBound(s_ref_mtrl.mtrlid) To 1 Step -1 IF s_ref_mtrl.ifmainmtrlid[ll_i] = 1 THEN ls_exp += 'u_OrderRqMtrl_tree_scid = ' + String(i_scid) ls_exp += ' AND u_OrderRqMtrl_tree_taskid = ' + String(i_taskid) ls_exp += ' AND u_OrderRqMtrl_tree_mtrlid = ' + String(s_ref_mtrl.mtrlid[ll_i]) ls_exp += ' AND u_orderrqmtrl_tree_wrkgrpid = ' + String(s_ref_mtrl.produce_wrkgrpid[ll_i]) ls_exp += ' AND u_OrderRqMtrl_tree_printid = ' + String(i_printid) IF dw_1.Find(ls_exp, 1, dw_1.RowCount()) <= 0 THEN ll_row = dw_1.InsertRow(1) i_d_cmplqty_old = s_ref_mtrl.cmplqty[ll_i] dw_1.Object.u_OrderRqMtrl_tree_scid[ll_row] = i_scid dw_1.Object.u_OrderRqMtrl_tree_taskid[ll_row] = i_taskid dw_1.Object.u_OrderRqMtrl_tree_printid[ll_row] = i_printid dw_1.Object.u_mtrldef_mtrlcode[ll_row] = s_ref_mtrl.mtrlcode[ll_i] dw_1.Object.u_mtrldef_mtrlname[ll_row] = s_ref_mtrl.mtrlname[ll_i] dw_1.Object.u_mtrldef_mtrlmode[ll_row] = s_ref_mtrl.mtrlmode[ll_i] dw_1.Object.u_mtrldef_unit[ll_row] = s_ref_mtrl.unit[ll_i] dw_1.Object.u_mtrldef_mtrlorigin[ll_row] = s_ref_mtrl.mtrlorigin[ll_i] dw_1.Object.u_mtrldef_mtrltype[ll_row] = s_ref_mtrl.mtrltype[ll_i] dw_1.Object.u_mtrldef_mtrlprp[ll_row] = s_ref_mtrl.mtrlprp[ll_i] dw_1.Object.u_orderrqmtrl_tree_pcode[ll_row] = s_ref_mtrl.pcode[ll_i] dw_1.Object.u_orderrqmtrl_tree_wrkgrpid[ll_row] = s_ref_mtrl.produce_wrkgrpid[ll_i] dw_1.Object.u_OrderRqMtrl_tree_lp[ll_row] = s_ref_mtrl.lp[ll_i] dw_1.Object.u_OrderRqMtrl_tree_mtrlid[ll_row] = s_ref_mtrl.mtrlid[ll_i] dw_1.Object.u_OrderRqMtrl_tree_plantype[ll_row] = s_ref_mtrl.plantype[ll_i] dw_1.Object.u_OrderRqMtrl_tree_rqqty[ll_row] = s_ref_mtrl.qty[ll_i] dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_row] = s_ref_mtrl.cmplqty[ll_i] dw_1.Object.u_OrderRqMtrl_tree_mqty[ll_row] = s_ref_mtrl.mqty[ll_i] dw_1.Object.u_OrderRqMtrl_tree_bqty[ll_row] = s_ref_mtrl.bqty[ll_i] dw_1.Object.u_OrderRqMtrl_tree_wqty[ll_row] = s_ref_mtrl.wqty[ll_i] dw_1.Object.u_OrderRqMtrl_tree_pqty[ll_row] = s_ref_mtrl.pqty[ll_i] dw_1.Object.u_OrderRqMtrl_tree_otherrqqty[ll_row] = s_ref_mtrl.otherrqqty[ll_i] dw_1.Object.u_OrderRqMtrl_tree_samerqqty[ll_row] = s_ref_mtrl.samerqqty[ll_i] dw_1.Object.minqty[ll_row] = s_ref_mtrl.minqty[ll_i] dw_1.Object.maxqty[ll_row] = s_ref_mtrl.maxqty[ll_i] dw_1.Object.ckwareqty[ll_row] = s_ref_mtrl.ckwareqty[ll_i] dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_row] = s_ref_mtrl.pmtrlid[ll_i] dw_1.Object.u_OrderRqMtrl_tree_ifchanged[ll_row] = s_ref_mtrl.ifchanged[ll_i] dw_1.Object.u_OrderRqMtrl_tree_ifmainmtrlid[ll_row] = s_ref_mtrl.ifmainmtrlid[ll_i] END IF END IF NEXT wf_face() ext: Destroy uo_ml_mrp IF rslt = 0 THEN MessageBox('错误', arg_msg) END IF end event event ue_before_open;call super::ue_before_open;if_ue_sort = TRUE end event event key;call super::key;IF KeyDown(KeyF1!) THEN This.TriggerEvent('ue_help') END IF end event type cb_func from w_publ_base`cb_func within w_order_ml_mrp boolean visible = false integer x = 2738 integer height = 164 boolean enabled = false end type type cb_exit from w_publ_base`cb_exit within w_order_ml_mrp integer x = 1989 integer width = 165 integer height = 164 integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type type dw_1 from u_dw_rbtnfilter within w_order_ml_mrp integer y = 388 integer width = 3543 integer height = 1872 integer taborder = 20 boolean bringtotop = true string dataobject = "dw_order_ml_mrp_tree" boolean hscrollbar = true boolean vscrollbar = true boolean hsplitscroll = true end type event itemchanged;call super::itemchanged;THIS.AcceptText() CHOOSE CASE dwo.Name CASE 'u_ordermtrl_plantype' IF THIS.Object.u_ordermtrl_tree_plantype[row] = 2 THEN THIS.Object.u_ordermtrl_tree_produce_wrkgrpid[row] = 0 END IF CASE 'u_ordermtrl_scid' Long ll_produce_wrkgrpid,ll_scid_wrkgrpid,ll_produce_scid ll_produce_wrkgrpid = THIS.Object.u_ordermtrl_tree_produce_wrkgrpid[row] ll_produce_scid = THIS.Object.u_ordermtrl_tree_produce_scid[row] SELECT scid INTO :ll_scid_wrkgrpid FROM u_sc_wkp Where wrkgrpid = :ll_produce_wrkgrpid; IF sqlca.SQLCode <> 0 THEN ll_scid_wrkgrpid = 0 IF ll_scid_wrkgrpid <> ll_produce_scid THEN THIS.Object.u_ordermtrl_tree_produce_wrkgrpid[row] = 0 END IF END CHOOSE end event event rowfocuschanged;call super::rowfocuschanged;THIS.AcceptText() IF NOT if_cmpl AND currentrow <> ll_unlock_row THEN MessageBox('提示','系统处理解锁状态,请先计算') THIS.SelectRow(0,FALSE) THIS.SetRow(ll_unlock_row) THIS.SelectRow(ll_unlock_row,TRUE) RETURN END IF IF currentrow > 0 THEN THIS.SelectRow(0,FALSE) THIS.SetRow(currentrow) THIS.SelectRow(currentrow,TRUE) END IF end event event clicked;call super::clicked;THIS.AcceptText() IF NOT if_cmpl and row <> ll_unlock_row THEN MessageBox('提示','系统处理解锁状态,请先计算') THIS.SelectRow(0,FALSE) THIS.SetRow(ll_unlock_row) THIS.SelectRow(ll_unlock_row,TRUE) RETURN END IF IF row > 0 THEN THIS.SelectRow(0,FALSE) THIS.SetRow(row) THIS.SelectRow(row,TRUE) END IF end event event rbuttondown;Long ll_row,ll_column ll_row = THIS.GetRow() ll_column = THIS.GetColumn() IF ll_row <= 0 THEN RETURN IF ll_column <= 0 THEN RETURN IF Left( THIS.Describe( dwo.Name+ ".coltype"),4) = 'date' THEN s_calender_arg s_calender s_calender.PointerX = xpos s_calender.PointerY = ypos s_calender.X = THIS.X + PARENT.X s_calender.Y = THIS.Y + PARENT.Y OpenWithParm(w_calendar,s_calender) THIS.SetItem(ll_row,ll_column,id_date_selected) END IF end event type cb_save from uo_imflatbutton within w_order_ml_mrp integer x = 658 integer width = 165 integer height = 164 integer taborder = 30 boolean bringtotop = true string text = "保存" string normalpicname = "save.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;Long ll_i,ch,ch_tree String arg_msg s_order_ml_rqmtrl s_mtrl,s_mtrl_tree dw_1.AcceptText() IF dw_1.RowCount() <= 0 THEN MessageBox('提示','没有可保存的数据') RETURN END IF FOR ll_i = 1 TO dw_1.RowCount() ch_tree++ s_mtrl_tree.taskid[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_taskid[ll_i] s_mtrl_tree.printid[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_printid[ll_i] s_mtrl_tree.mxpkid[ch_tree] = ch_tree //dw_1.Object.u_orderrqmtrl_tree_mxpkid[ll_i] s_mtrl_tree.scid[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_scid[ll_i] s_mtrl_tree.mtrlid[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_mtrlid[ll_i] s_mtrl_tree.status[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_status[ll_i] s_mtrl_tree.woodcode[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_woodcode[ll_i] s_mtrl_tree.pcode[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_pcode[ll_i] s_mtrl_tree.qty[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_rqqty[ll_i]//用料数 s_mtrl_tree.cmplqty[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_i] //需生产制造采购数 s_mtrl_tree.mqty[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_mqty[ll_i] s_mtrl_tree.bqty[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_bqty[ll_i] s_mtrl_tree.wqty[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_wqty[ll_i] s_mtrl_tree.pqty[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_pqty[ll_i] s_mtrl_tree.otherrqqty[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_otherrqqty[ll_i] s_mtrl_tree.samerqqty[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_samerqqty[ll_i] s_mtrl_tree.minqty[ch_tree] = dw_1.Object.minqty[ll_i] s_mtrl_tree.maxqty[ch_tree] = dw_1.Object.maxqty[ll_i] s_mtrl_tree.ckwareqty[ch_tree] = dw_1.Object.ckwareqty[ll_i] s_mtrl_tree.ifmainmtrlid[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_ifmainmtrlid[ll_i] s_mtrl_tree.plantype[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_plantype[ll_i] s_mtrl_tree.produce_scid[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_produce_scid[ll_i] s_mtrl_tree.produce_wrkgrpid[ch_tree] = dw_1.Object.u_orderrqmtrl_tree_wrkgrpid[ll_i] s_mtrl_tree.wrkgrpid_scll[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_wrkgrpid[ll_i] s_mtrl_tree.lp[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_lp[ll_i] s_mtrl_tree.pmtrlid[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_i] s_mtrl_tree.ifchanged[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_ifchanged[ll_i] s_mtrl_tree.pfgroup[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_pfgroup[ll_i] s_mtrl_tree.promode[ch_tree] = dw_1.Object.u_orderrqmtrl_tree_promode[ll_i] s_mtrl_tree.pfgroupmode[ch_tree] = dw_1.Object.u_orderrqmtrl_tree_pfgroupmode[ll_i] s_mtrl_tree.pfklmode[ch_tree] = dw_1.Object.u_orderrqmtrl_tree_pfklmode[ll_i] s_mtrl_tree.pfgroupqty[ch_tree] = dw_1.Object.u_orderrqmtrl_tree_pfgroupqty[ll_i] //if dw_1.Object.u_orderrqmtrl_tree_ifmainmtrlid[ll_i] = 1 then continue; IF dw_1.Object.u_OrderRqMtrl_tree_rqqty[ll_i] = 0 AND dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_i] = 0 THEN CONTINUE ch++ s_mtrl.taskid[ch] = dw_1.Object.u_OrderRqMtrl_tree_taskid[ll_i] s_mtrl.printid[ch] = dw_1.Object.u_OrderRqMtrl_tree_printid[ll_i] s_mtrl.scid[ch] = dw_1.Object.u_OrderRqMtrl_tree_scid[ll_i] s_mtrl.mtrlid[ch] = dw_1.Object.u_OrderRqMtrl_tree_mtrlid[ll_i] s_mtrl.qty[ch] = dw_1.Object.u_OrderRqMtrl_tree_rqqty[ll_i] s_mtrl.cmplqty[ch] = dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_i] s_mtrl.mqty[ch] = dw_1.Object.u_OrderRqMtrl_tree_mqty[ll_i] s_mtrl.bqty[ch] = dw_1.Object.u_OrderRqMtrl_tree_bqty[ll_i] s_mtrl.wqty[ch] = dw_1.Object.u_OrderRqMtrl_tree_wqty[ll_i] s_mtrl.pqty[ch] = dw_1.Object.u_OrderRqMtrl_tree_pqty[ll_i] s_mtrl.otherrqqty[ch] = dw_1.Object.u_OrderRqMtrl_tree_otherrqqty[ll_i] s_mtrl.minqty[ch] = dw_1.Object.minqty[ll_i] s_mtrl.ifmainmtrlid[ch] = dw_1.Object.u_OrderRqMtrl_tree_ifmainmtrlid[ll_i] s_mtrl.plantype[ch] = dw_1.Object.u_OrderRqMtrl_tree_plantype[ll_i] s_mtrl.produce_scid[ch] = dw_1.Object.u_OrderRqMtrl_tree_produce_scid[ll_i] s_mtrl.produce_wrkgrpid[ch] = dw_1.Object.u_orderrqmtrl_tree_wrkgrpid[ll_i] s_mtrl.wrkgrpid_scll[ch] = dw_1.Object.u_OrderRqMtrl_tree_wrkgrpid[ll_i] s_mtrl.lp[ch] = dw_1.Object.u_OrderRqMtrl_tree_lp[ll_i] s_mtrl.status[ch] = dw_1.Object.u_OrderRqMtrl_tree_status[ll_i] s_mtrl.woodcode[ch] = dw_1.Object.u_OrderRqMtrl_tree_woodcode[ll_i] s_mtrl.pcode[ch] = dw_1.Object.u_OrderRqMtrl_tree_pcode[ll_i] s_mtrl.pmtrlid[ch] = dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_i] s_mtrl.ifchanged[ch] = dw_1.Object.u_OrderRqMtrl_tree_ifchanged[ll_i] s_mtrl.promode[ch] = dw_1.Object.u_orderrqmtrl_tree_promode[ll_i] s_mtrl.pfgroupmode[ch] = dw_1.Object.u_orderrqmtrl_tree_pfgroupmode[ll_i] s_mtrl.pfklmode[ch] = dw_1.Object.u_orderrqmtrl_tree_pfklmode[ll_i] s_mtrl.pfgroupqty[ch] = dw_1.Object.u_orderrqmtrl_tree_pfgroupqty[ll_i] NEXT uo_order_ml_mrp uo_ml_mrp uo_ml_mrp = CREATE uo_order_ml_mrp IF uo_ml_mrp.uof_add_rqmtrl(s_mtrl,FALSE,arg_msg) = 0 THEN MessageBox('提示','保存物料需求表失败,'+arg_msg) RETURN END IF IF uo_ml_mrp.uof_add_rqmtrl_tree(s_mtrl_tree,FALSE,arg_msg) = 0 THEN MessageBox('提示','保存物料需求结构表失败,'+arg_msg) RETURN END IF IF uo_ml_mrp.uof_del_rqmtrl_scll(i_scid,i_taskid,i_printid,FALSE,arg_msg) = 0 THEN MessageBox('提示','删除领料明细表失败,'+arg_msg) RETURN END IF IF uo_ml_mrp.uof_add_rqmtrl_scll(s_mtrl,TRUE,arg_msg) = 0 THEN MessageBox('提示','保存用料明细表失败,'+arg_msg) RETURN END IF DESTROY uo_ml_mrp MessageBox('提示','保存成功') CLOSE(PARENT) end event type cb_re_cmpl from uo_imflatbutton within w_order_ml_mrp integer width = 165 integer height = 164 integer taborder = 10 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;Int rslt = 1 Long ll_mtrlid String ls_pfcode String ls_status,ls_woodcode,ls_pcode Decimal ld_orderqty Long ll_i DateTime ld_requiredate String arg_msg Int li_if_allowuse,li_if_date Long ll_ordertype s_order_ml_rqmtrl s_ref_mtrl uo_order_ml_mrp uo_ml_mrp uo_ml_mrp = CREATE uo_order_ml_mrp SELECT mtrlid, orderqty, status, woodcode, pcode INTO :ll_mtrlid, :ld_orderqty, :ls_status, :ls_woodcode, :ls_pcode FROM u_saletaskmx WHERE u_saletaskmx.scid = :i_scid AND u_saletaskmx.taskid = :i_taskid AND u_saletaskmx.printid = :i_printid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询销售订单明细资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF dw_1.accepttext() IF cbx_if_allowuse.Checked THEN li_if_allowuse = 1 ELSE li_if_allowuse = 0 END IF uo_ml_mrp.ifbuy_mtrl_not_useqty = cbx_ifbuy_mtrl_not_useqty.Checked uo_ml_mrp.ifwx_mtrl_not_useqty = cbx_ifwx_mtrl_not_useqty.Checked IF uo_ml_mrp.uof_cmpl_rqmtrl(i_scid,i_taskid,i_printid,0,ll_mtrlid,& ls_status,ls_woodcode,ls_pcode,ld_orderqty,0,& li_if_allowuse,s_ref_mtrl,arg_msg,0,'') = 0 THEN rslt = 0 GOTO ext END IF dw_1.Reset() dec{2} em em = dec(em_1.text) Long ll_row FOR ll_i = 1 TO UpperBound(s_ref_mtrl.mtrlid) ll_row = dw_1.InsertRow(0) i_d_cmplqty_old = s_ref_mtrl.cmplqty[ll_i] dw_1.Object.u_OrderRqMtrl_tree_scid[ll_row] = i_scid dw_1.Object.u_OrderRqMtrl_tree_taskid[ll_row] = i_taskid dw_1.Object.u_OrderRqMtrl_tree_printid[ll_row] = i_printid dw_1.Object.u_orderrqmtrl_tree_mxpkid[ll_row] = s_ref_mtrl.mxpkid[ll_i] dw_1.Object.u_OrderRqMtrl_tree_mtrlid[ll_row] = s_ref_mtrl.mtrlid[ll_i] dw_1.Object.u_OrderRqMtrl_tree_rqqty[ll_row] = s_ref_mtrl.qty[ll_i] dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_row] = s_ref_mtrl.cmplqty[ll_i] * em dw_1.Object.u_mtrldef_mtrlcode[ll_row] = s_ref_mtrl.mtrlcode[ll_i] dw_1.Object.u_mtrldef_mtrlname[ll_row] = s_ref_mtrl.mtrlname[ll_i] dw_1.Object.u_mtrldef_mtrlmode[ll_row] = s_ref_mtrl.mtrlmode[ll_i] dw_1.Object.u_mtrldef_unit[ll_row] = s_ref_mtrl.unit[ll_i] dw_1.Object.u_mtrldef_mtrlorigin[ll_row] = s_ref_mtrl.mtrlorigin[ll_i] dw_1.Object.u_mtrldef_mtrltype[ll_row] = s_ref_mtrl.mtrltype[ll_i] dw_1.Object.u_mtrldef_mtrlprp[ll_row] = s_ref_mtrl.mtrlprp[ll_i] dw_1.Object.u_orderrqmtrl_tree_pcode[ll_row] = s_ref_mtrl.pcode[ll_i] dw_1.Object.u_orderrqmtrl_tree_wrkgrpid[ll_row] = s_ref_mtrl.produce_wrkgrpid[ll_i] dw_1.Object.u_OrderRqMtrl_tree_pfgroup[ll_row] = s_ref_mtrl.pfgroup[ll_i] dw_1.Object.u_OrderRqMtrl_tree_lp[ll_row] = s_ref_mtrl.lp[ll_i] dw_1.Object.u_OrderRqMtrl_tree_plantype[ll_row] = s_ref_mtrl.plantype[ll_i] dw_1.Object.u_OrderRqMtrl_tree_mqty[ll_row] = s_ref_mtrl.mqty[ll_i] dw_1.Object.u_OrderRqMtrl_tree_bqty[ll_row] = s_ref_mtrl.bqty[ll_i] dw_1.Object.u_OrderRqMtrl_tree_wqty[ll_row] = s_ref_mtrl.wqty[ll_i] dw_1.Object.u_OrderRqMtrl_tree_pqty[ll_row] = s_ref_mtrl.pqty[ll_i] dw_1.Object.u_OrderRqMtrl_tree_otherrqqty[ll_row] = s_ref_mtrl.otherrqqty[ll_i] dw_1.Object.u_OrderRqMtrl_tree_samerqqty[ll_row] = s_ref_mtrl.samerqqty[ll_i] dw_1.Object.minqty[ll_row] = s_ref_mtrl.minqty[ll_i] dw_1.Object.maxqty[ll_row] = s_ref_mtrl.maxqty[ll_i] dw_1.Object.ckwareqty[ll_row] = s_ref_mtrl.ckwareqty[ll_i] //dw_1.Object.ckwareqty[ll_row] = s_ref_mtrl.mqty[ll_i] + s_ref_mtrl.bqty[ll_i] + s_ref_mtrl.wqty[ll_i] + s_ref_mtrl.pqty[ll_i] - s_ref_mtrl.otherrqqty[ll_i] - s_ref_mtrl.samerqqty[ll_i] - dw_1.Object.minqty[ll_row] dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_row] = s_ref_mtrl.pmtrlid[ll_i] dw_1.Object.u_OrderRqMtrl_tree_ifchanged[ll_row] = s_ref_mtrl.ifchanged[ll_i] dw_1.Object.u_OrderRqMtrl_tree_ifmainmtrlid[ll_row] = s_ref_mtrl.ifmainmtrlid[ll_i] dw_1.Object.u_OrderRqMtrl_tree_promode[ll_row] = s_ref_mtrl.promode[ll_i] dw_1.Object.u_OrderRqMtrl_tree_pfgroupmode[ll_row] = s_ref_mtrl.pfgroupmode[ll_i] dw_1.Object.u_OrderRqMtrl_tree_pfklmode[ll_row] = s_ref_mtrl.pfklmode[ll_i] dw_1.Object.u_OrderRqMtrl_tree_pfgroupqty[ll_row] = s_ref_mtrl.pfgroupqty[ll_i] NEXT ext: DESTROY uo_ml_mrp IF rslt = 0 THEN MessageBox('提示',arg_msg) dw_1.Reset() END IF end event type cb_lock from uo_imflatbutton within w_order_ml_mrp integer x = 165 integer width = 165 integer height = 164 integer taborder = 20 boolean bringtotop = true string text = "解锁" string normalpicname = "mx.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;Long ll_row,i dw_1.AcceptText() ll_row = dw_1.GetRow() IF ll_row <= 0 THEN MessageBox('提示','请选择行') RETURN END IF IF dw_1.Object.u_OrderRqMtrl_tree_ifmainmtrlid[ll_row] = 1 THEN MessageBox('提示','生产计划物料不能解锁运算') RETURN END IF FOR i = ll_row TO dw_1.RowCount() IF dw_1.Object.u_orderrqmtrl_tree_lp[i] > dw_1.Object.u_orderrqmtrl_tree_lp[ll_row] THEN IF dw_1.Object.u_orderrqmtrl_tree_ifchanged[i] = 1 THEN MessageBox('提示','下级物料已有修改,不能解锁运算') RETURN END IF ELSE EXIT END IF NEXT IF dw_1.Object.iflock[ll_row] = 1 THEN IF NOT if_cmpl THEN MessageBox('提示','有物料已修改,未重新计算,请重新计算') RETURN ELSE if_cmpl = FALSE dw_1.Object.iflock[ll_row] = 0 dw_1.Object.ifcmpl[ll_row] = 0 ll_unlock_row = ll_row i_d_cmplqty_old = dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_row] i_i_plantype_old = dw_1.Object.u_OrderRqMtrl_tree_plantype[ll_row] dw_1.SetFocus() dw_1.SetColumn('u_OrderRqMtrl_tree_truerqqty') END IF END IF wf_face() end event type ln_bar from line within w_order_ml_mrp long linecolor = 268435456 integer linethickness = 4 integer beginy = 176 integer endx = 3323 integer endy = 176 end type type ln_bar2 from line within w_order_ml_mrp long linecolor = 16777215 integer linethickness = 4 integer beginy = 180 integer endx = 3323 integer endy = 180 end type type r_bar from rectangle within w_order_ml_mrp long linecolor = 16777215 long fillcolor = 1073741824 integer x = 2473 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 cb_cmpl from uo_imflatbutton within w_order_ml_mrp integer x = 494 integer width = 165 integer height = 164 integer taborder = 40 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 ("IF","是否确定要计算已修改的数据?",Question!,YesNo! ) = 2 THEN RETURN Int rslt = 1 String arg_msg Long ll_row,ll_i Decimal ld_cmplqty_new,ld_rqqty,ld_cmplqty,ld_samerqqty Long ll_mtrlid,ll_pmtrlid,ll_produde_scid_new String ls_pfcode String ls_status,ls_woodcode,ls_pcode Long ll_produce_wrkgrpid,ll_wrkgrpid DateTime ld_rqdate,ld_sdate Int li_cmpl //0:不用计算,1:重新计算,2:变更计算 Int li_if_add //0:改变时用加,1:改变时用减 Int li_plantype_new Long ll_lp s_order_ml_rqmtrl s_ref_mtrl Int li_if_allowuse IF cbx_if_allowuse.Checked THEN li_if_allowuse = 1 ELSE li_if_allowuse = 0 END IF dw_1.AcceptText( ) ll_row = dw_1.GetRow() IF dw_1.Object.ifcmpl[ll_row] = 1 THEN arg_msg = '该行已经计算,不能再计算' rslt = 0 GOTO ext END IF ld_cmplqty_new = dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_row] IF ld_cmplqty_new < 0 THEN arg_msg = '错误的运算数量,不能计算,请检查' rslt = 0 GOTO ext END IF li_plantype_new = dw_1.Object.u_OrderRqMtrl_tree_plantype[ll_row] ll_produde_scid_new = dw_1.Object.u_orderrqmtrl_tree_produce_scid[ll_row] ld_rqqty = dw_1.Object.u_OrderRqMtrl_tree_rqqty[ll_row] ld_samerqqty = dw_1.Object.u_OrderRqMtrl_tree_samerqqty[ll_row] ll_mtrlid = dw_1.Object.u_OrderRqMtrl_tree_mtrlid[ll_row] ll_pmtrlid = dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_row] ls_status = dw_1.Object.u_OrderRqMtrl_tree_status[ll_row] ls_woodcode = dw_1.Object.u_OrderRqMtrl_tree_woodcode[ll_row] ls_pcode = dw_1.Object.u_OrderRqMtrl_tree_pcode[ll_row] ls_pfcode = dw_1.Object.u_OrderRqMtrl_tree_pfcode[ll_row] ll_lp = dw_1.Object.u_OrderRqMtrl_tree_lp[ll_row] ll_wrkgrpid = dw_1.Object.u_OrderRqMtrl_tree_wrkgrpid[ll_row] IF li_plantype_new = i_i_plantype_old THEN //无改处理方法 IF li_plantype_new = 2 OR li_plantype_new = 6 THEN //采购或客户来料 IF ld_cmplqty_new > ld_rqqty THEN arg_msg = '输入的运算数不能大于损耗数' rslt = 0 GOTO ext END IF rslt = 1 GOTO ext ELSE //自制或外协 IF ld_cmplqty_new = i_d_cmplqty_old THEN //无改数量 IF ll_produde_scid_new = i_l_scid_old THEN //无改分部 rslt = 1 GOTO ext ELSE //改分部 IF ll_produde_scid_new <> i_scid AND i_l_scid_old <> i_scid THEN rslt = 1 GOTO ext ELSEIF ll_produde_scid_new <> i_scid AND i_l_scid_old = i_scid THEN li_cmpl = 2 //(变更) li_if_add = 1 //(-) ld_cmplqty = i_d_cmplqty_old ELSEIF ll_produde_scid_new = i_scid AND i_l_scid_old <> i_scid THEN li_cmpl = 1 //(重计) li_if_add = 0 //(+) ld_cmplqty = ld_cmplqty_new END IF END IF ELSE IF ll_produde_scid_new <> i_scid AND i_l_scid_old <> i_scid THEN rslt = 1 GOTO ext ELSEIF ll_produde_scid_new <> i_scid AND i_l_scid_old = i_scid THEN li_cmpl = 2 //(变更) li_if_add = 1 //(-) ld_cmplqty = i_d_cmplqty_old ELSEIF ll_produde_scid_new = i_scid AND i_l_scid_old <> i_scid THEN li_cmpl = 1 //(重计) li_if_add = 0 //(+) ld_cmplqty = ld_cmplqty_new ELSEIF ll_produde_scid_new = i_scid AND i_l_scid_old = i_scid THEN li_cmpl = 2 //(变更) ld_cmplqty = Abs(ld_cmplqty_new - i_d_cmplqty_old) IF ld_cmplqty_new < i_d_cmplqty_old THEN li_if_add = 1 //(-) ELSE li_if_add = 0 //(+) END IF END IF END IF END IF ELSE //改处理方法 IF i_Ordertype <> 2 THEN //不是来料加工计划 IF li_plantype_new = 6 THEN arg_msg = '只有处理来料加工计划的处理方法才能变为客户来料' rslt = 0 GOTO ext END IF END IF //采购->来料加工,来料加工->采购 IF i_i_plantype_old = 2 AND li_plantype_new = 6 OR & li_plantype_new = 2 AND li_plantype_new = 6 THEN rslt = 1 GOTO ext END IF //自制或外协->采购或客户来料 If ( i_i_plantype_old = 0 OR i_i_plantype_old = 3 ) AND & ( li_plantype_new = 2 OR li_plantype_new = 6 ) THEN IF ll_produde_scid_new <> i_scid AND i_l_scid_old <> i_scid THEN rslt = 1 GOTO ext ELSEIF ll_produde_scid_new <> i_scid AND i_l_scid_old = i_scid THEN li_cmpl = 2 //(变更) li_if_add = 1 //(-) ld_cmplqty = i_d_cmplqty_old ELSEIF ll_produde_scid_new = i_scid AND i_l_scid_old <> i_scid THEN rslt = 1 GOTO ext ELSEIF ll_produde_scid_new = i_scid AND i_l_scid_old = i_scid THEN li_cmpl = 2 //(变更) li_if_add = 1 //(-) ld_cmplqty = i_d_cmplqty_old END IF END IF //采购或客户来料->自制或外协 If ( i_i_plantype_old = 2 OR i_i_plantype_old = 6 ) AND & ( li_plantype_new = 0 OR li_plantype_new = 3 ) THEN IF ll_produde_scid_new <> i_scid AND i_l_scid_old <> i_scid THEN rslt = 1 GOTO ext ELSEIF ll_produde_scid_new <> i_scid AND i_l_scid_old = i_scid THEN rslt = 1 GOTO ext ELSEIF ll_produde_scid_new = i_scid AND i_l_scid_old <> i_scid THEN li_cmpl = 1 //(重计) li_if_add = 0 //(+) ld_cmplqty = ld_cmplqty_new ELSEIF ll_produde_scid_new = i_scid AND i_l_scid_old = i_scid THEN li_cmpl = 1 //(重计) li_if_add = 0 //(+) ld_cmplqty = ld_cmplqty_new END IF END IF END IF IF ld_cmplqty_new > ld_rqqty THEN arg_msg = '输入的运算数不能大于需求数' rslt = 0 GOTO ext END IF uo_order_ml_mrp uo_m uo_m = CREATE uo_order_ml_mrp uo_m.ifbuy_mtrl_not_useqty = cbx_ifbuy_mtrl_not_useqty.Checked uo_m.ifwx_mtrl_not_useqty = cbx_ifwx_mtrl_not_useqty.Checked CHOOSE CASE li_cmpl CASE 1 IF uo_m.uof_cmpl_rqmtrl_re(i_scid,i_taskid,i_printid,ll_pmtrlid,ll_mtrlid,& li_plantype_new,ls_status,ls_woodcode,ls_pcode,ld_cmplqty_new,& ll_wrkgrpid,ll_lp,li_if_allowuse,s_ref_mtrl,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF FOR ll_i = 1 TO UpperBound(s_ref_mtrl.mtrlid) Long ll_new_row ll_new_row = dw_1.InsertRow(ll_row + ll_i) dw_1.Object.u_mtrldef_mtrlcode[ll_new_row] = s_ref_mtrl.mtrlcode[ll_i] dw_1.Object.u_mtrldef_mtrlname[ll_new_row] = s_ref_mtrl.mtrlname[ll_i] dw_1.Object.u_mtrldef_mtrlmode[ll_new_row] = s_ref_mtrl.mtrlmode[ll_i] dw_1.Object.u_mtrldef_unit[ll_new_row] = s_ref_mtrl.unit[ll_i] dw_1.Object.u_mtrldef_mtrlorigin[ll_new_row] = s_ref_mtrl.mtrlorigin[ll_i] dw_1.Object.u_mtrldef_mtrltype[ll_new_row] = s_ref_mtrl.mtrltype[ll_i] dw_1.Object.u_OrderRqMtrl_tree_wrkgrpid[ll_new_row] = s_ref_mtrl.produce_wrkgrpid[ll_i] dw_1.Object.u_OrderRqMtrl_tree_status[ll_new_row] = s_ref_mtrl.status[ll_i] dw_1.Object.u_OrderRqMtrl_tree_woodcode[ll_new_row] = s_ref_mtrl.woodcode[ll_i] dw_1.Object.u_OrderRqMtrl_tree_pcode[ll_new_row] = s_ref_mtrl.pcode[ll_i] dw_1.Object.u_OrderRqMtrl_tree_lp[ll_new_row] = s_ref_mtrl.lp[ll_i] dw_1.Object.u_OrderRqMtrl_tree_scid[ll_new_row] = i_scid dw_1.Object.u_OrderRqMtrl_tree_taskid[ll_new_row] = i_taskid dw_1.Object.u_OrderRqMtrl_tree_printid[ll_new_row] = i_printid dw_1.Object.u_OrderRqMtrl_tree_mtrlid[ll_new_row] = s_ref_mtrl.mtrlid[ll_i] dw_1.Object.u_OrderRqMtrl_tree_rqqty[ll_new_row] = s_ref_mtrl.qty[ll_i] dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_new_row] = s_ref_mtrl.cmplqty[ll_i] dw_1.Object.u_OrderRqMtrl_tree_plantype[ll_new_row] = s_ref_mtrl.plantype[ll_i] dw_1.Object.u_OrderRqMtrl_tree_mqty[ll_new_row] = s_ref_mtrl.mqty[ll_i] dw_1.Object.u_OrderRqMtrl_tree_bqty[ll_new_row] = s_ref_mtrl.bqty[ll_i] dw_1.Object.u_OrderRqMtrl_tree_wqty[ll_new_row] = s_ref_mtrl.wqty[ll_i] dw_1.Object.u_OrderRqMtrl_tree_pqty[ll_new_row] = s_ref_mtrl.pqty[ll_i] dw_1.Object.ckwareqty[ll_new_row] = s_ref_mtrl.mqty[ll_i] + s_ref_mtrl.bqty[ll_i] + s_ref_mtrl.wqty[ll_i] + s_ref_mtrl.pqty[ll_i] - s_ref_mtrl.otherrqqty[ll_i] dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_new_row] = s_ref_mtrl.pmtrlid[ll_i] dw_1.Object.u_OrderRqMtrl_tree_ifchanged[ll_new_row] = s_ref_mtrl.ifchanged[ll_i] dw_1.Object.u_OrderRqMtrl_tree_ifmainmtrlid[ll_new_row] = s_ref_mtrl.ifmainmtrlid[ll_i] dw_1.Object.u_mtrldef_ifselforder[ll_new_row] = s_ref_mtrl.ifselforder[ll_i] dw_1.Object.u_orderrqmtrl_tree_gydscrp[ll_new_row] = s_ref_mtrl.gydscrp[ll_i] dw_1.Object.u_orderrqmtrl_tree_pfklmode[ll_new_row] = s_ref_mtrl.pfklmode[ll_i] dw_1.Object.u_orderrqmtrl_tree_pfgroup[ll_new_row] = s_ref_mtrl.pfgroup[ll_i] dw_1.Object.u_orderrqmtrl_tree_pfgroupmode[ll_new_row] = s_ref_mtrl.pfgroupmode[ll_i] NEXT CASE 2 IF uo_m.uof_cmpl_rqmtrl_change(i_scid,ll_pmtrlid,ll_mtrlid,& ls_status,ls_woodcode,ls_pcode,& ld_cmplqty,ll_wrkgrpid,s_ref_mtrl,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF Long ll_f_row,ll_j FOR ll_i = 1 TO UpperBound(s_ref_mtrl.mtrlid) ll_f_row = 0 ll_j = 0 dw_1.AcceptText() FOR ll_j = ll_row + 1 TO dw_1.RowCount() IF dw_1.Object.u_OrderRqMtrl_tree_mtrlid[ll_j] = s_ref_mtrl.mtrlid[ll_i] AND & dw_1.Object.u_OrderRqMtrl_tree_status[ll_j] = s_ref_mtrl.status[ll_i] AND & dw_1.Object.u_OrderRqMtrl_tree_woodcode[ll_j] = s_ref_mtrl.woodcode[ll_i] AND & dw_1.Object.u_OrderRqMtrl_tree_pcode[ll_j] = s_ref_mtrl.pcode[ll_i] AND & dw_1.Object.u_OrderRqMtrl_tree_produce_wrkgrpid[ll_j] = s_ref_mtrl.produce_wrkgrpid[ll_i] AND & dw_1.Object.u_OrderRqMtrl_tree_wrkgrpid[ll_j] = s_ref_mtrl.wrkgrpid_scll[ll_i] AND & dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_j] = s_ref_mtrl.pmtrlid[ll_i] AND & dw_1.Object.u_orderrqmtrl_tree_pfgroup[ll_j] = s_ref_mtrl.pfgroup[ll_i] AND & dw_1.Object.u_orderrqmtrl_tree_pfgroupmode[ll_j] = s_ref_mtrl.pfgroupmode[ll_i] THEN ll_f_row = ll_j EXIT END IF NEXT IF ll_f_row = 0 THEN MessageBox('提示','查询物料:'+s_ref_mtrl.mtrlcode[ll_i]+',部件名称:'+s_ref_mtrl.pfgroup[ll_i]+',部件规格:'+s_ref_mtrl.pfgroupmode[ll_i]+',变更行数失败') RETURN END IF NEXT FOR ll_i = 1 TO UpperBound(s_ref_mtrl.mtrlid) ll_f_row = 0 ll_j = 0 dw_1.AcceptText() FOR ll_j = ll_row + 1 TO dw_1.RowCount() IF dw_1.Object.u_OrderRqMtrl_tree_mtrlid[ll_j] = s_ref_mtrl.mtrlid[ll_i] AND & dw_1.Object.u_OrderRqMtrl_tree_status[ll_j] = s_ref_mtrl.status[ll_i] AND & dw_1.Object.u_OrderRqMtrl_tree_woodcode[ll_j] = s_ref_mtrl.woodcode[ll_i] AND & dw_1.Object.u_OrderRqMtrl_tree_pcode[ll_j] = s_ref_mtrl.pcode[ll_i] AND & dw_1.Object.u_OrderRqMtrl_tree_produce_wrkgrpid[ll_j] = s_ref_mtrl.produce_wrkgrpid[ll_i] AND & dw_1.Object.u_OrderRqMtrl_tree_wrkgrpid[ll_j] = s_ref_mtrl.wrkgrpid_scll[ll_i] AND & dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_j] = s_ref_mtrl.pmtrlid[ll_i] AND & dw_1.Object.u_orderrqmtrl_tree_pfgroup[ll_j] = s_ref_mtrl.pfgroup[ll_i] AND & dw_1.Object.u_orderrqmtrl_tree_pfgroupmode[ll_j] = s_ref_mtrl.pfgroupmode[ll_i] THEN ll_f_row = ll_j EXIT END IF NEXT IF li_if_add = 0 THEN dw_1.Object.u_OrderRqMtrl_tree_rqqty[ll_f_row] = dw_1.Object.u_OrderRqMtrl_tree_rqqty[ll_f_row] + s_ref_mtrl.qty[ll_i] dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_f_row] = dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_f_row] + s_ref_mtrl.cmplqty[ll_i] ELSE dw_1.Object.u_OrderRqMtrl_tree_rqqty[ll_f_row] = dw_1.Object.u_OrderRqMtrl_tree_rqqty[ll_f_row] - s_ref_mtrl.qty[ll_i] IF dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_f_row] - s_ref_mtrl.cmplqty[ll_i] < 0 THEN dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_f_row] = 0 ELSE dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_f_row] = dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_f_row] - s_ref_mtrl.cmplqty[ll_i] END IF END IF NEXT END CHOOSE ext: DESTROY uo_m IF rslt = 0 THEN MessageBox('提示',arg_msg) RETURN ELSE dw_1.Object.ifcmpl[ll_row] = 1 dw_1.Object.iflock[ll_row] = 1 dw_1.Object.u_OrderRqMtrl_tree_ifchanged[ll_row] = 1 dw_1.SetColumn('u_OrderRqMtrl_tree_plantype') MessageBox('提示','计算成功') if_cmpl = TRUE i_d_cmplqty_old = 0 i_i_plantype_old = 0 i_l_scid_old = 0 END IF wf_face() end event type cb_undo from uo_imflatbutton within w_order_ml_mrp integer x = 329 integer width = 165 integer height = 164 integer taborder = 30 boolean bringtotop = true string text = "放弃" string normalpicname = "undo.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;Long ll_row Decimal ld_cmplqty_new dw_1.AcceptText() ll_row = dw_1.GetRow() IF ll_row <= 0 THEN MessageBox('提示','请选择行') RETURN END IF dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_row] = i_d_cmplqty_old dw_1.Object.u_OrderRqMtrl_tree_plantype[ll_row] = i_i_plantype_old dw_1.Object.iflock[ll_row] = 1 dw_1.Object.ifcmpl[ll_row] = 1 if_cmpl = TRUE i_d_cmplqty_old = 0 i_i_plantype_old = 0 i_l_scid_old = 0 dw_1.SetFocus() dw_1.SetColumn('u_OrderRqMtrl_tree_rqdate') wf_face() end event type cb_copyrow from uo_imflatbutton within w_order_ml_mrp integer x = 823 integer width = 165 integer height = 164 integer taborder = 40 boolean bringtotop = true boolean enabled = false string text = "变更" string normalpicname = "copy.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;Long ll_row,ll_row_insert Int li_cmpl_old,li_cmpl_new dw_1.AcceptText() ll_row = dw_1.GetRow() IF ll_row <= 0 THEN MessageBox('提示','请选择变更行') RETURN END IF IF dw_1.Object.u_OrderRqMtrl_tree_ifmainmtrlid[ll_row] = 1 THEN MessageBox('提示','销售订单明细物料不能变更') RETURN END IF s_order_ml_mrp_change s_chagne,s_rslt s_chagne.s_plantype = dw_1.Object.u_OrderRqMtrl_tree_plantype[ll_row] s_chagne.s_qty = dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_row] s_chagne.ordertype = i_Ordertype OpenWithParm(w_order_ml_mrp_change,s_chagne) s_rslt = Message.PowerObjectParm IF s_rslt.ifchanged = 0 THEN RETURN CHOOSE CASE s_chagne.s_plantype CASE 0 CHOOSE CASE s_rslt.c_plantype CASE 2,6 li_cmpl_old = 1 li_cmpl_new = 0 CASE 3 li_cmpl_old = 1 li_cmpl_new = 1 END CHOOSE CASE 3 CHOOSE CASE s_rslt.c_plantype CASE 2,6 li_cmpl_old = 1 li_cmpl_new = 0 CASE 0 li_cmpl_old = 1 li_cmpl_new = 1 END CHOOSE CASE 2,6 CHOOSE CASE s_rslt.c_plantype CASE 2,6 li_cmpl_old = 0 li_cmpl_new = 0 CASE 0,3 li_cmpl_old = 0 li_cmpl_new = 1 END CHOOSE END CHOOSE dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_row] = s_chagne.s_qty - s_rslt.c_qty IF li_cmpl_old = 1 THEN END IF dw_1.AcceptText() //ll_row_insert = dw_1.InsertRow(0) //ll_row_insert = dw_1.rowcount() + 1 ll_row_insert = ll_row + 1 dw_1.RowsCopy(ll_row,ll_row,Primary!,dw_1,ll_row_insert, Primary!) dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_row_insert] = s_rslt.c_qty dw_1.Object.u_OrderRqMtrl_tree_plantype[ll_row_insert] = s_rslt.c_plantype dw_1.Object.u_orderrqmtrl_tree_ifchanged[ll_row_insert] = 1 dw_1.Object.u_OrderRqMtrl_tree_rqqty[ll_row_insert] = 0 dw_1.Object.u_OrderRqMtrl_tree_mqty[ll_row_insert] = 0 dw_1.Object.u_OrderRqMtrl_tree_bqty[ll_row_insert] = 0 dw_1.Object.u_OrderRqMtrl_tree_wqty[ll_row_insert] = 0 dw_1.Object.u_OrderRqMtrl_tree_pqty[ll_row_insert] = 0 IF li_cmpl_new = 1 THEN END IF end event type cbx_if_allowuse from checkbox within w_order_ml_mrp integer x = 32 integer y = 200 integer width = 471 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;IF THIS.Checked THEN cbx_ifwx_mtrl_not_useqty.Enabled = TRUE cbx_ifbuy_mtrl_not_useqty.Enabled = TRUE ELSE cbx_ifwx_mtrl_not_useqty.Enabled = FALSE cbx_ifwx_mtrl_not_useqty.Checked = FALSE cbx_ifbuy_mtrl_not_useqty.Enabled = FALSE cbx_ifbuy_mtrl_not_useqty.Checked = FALSE END IF end event type cb_change from uo_imflatbutton within w_order_ml_mrp integer x = 987 integer width = 165 integer height = 164 integer taborder = 50 boolean bringtotop = true boolean enabled = false string text = "换料" string normalpicname = "p1.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;Long ll_row,ll_row_insert Int li_plantype_old,li_plantype_new Int li_ifselforder_old,li_ifselforder_new Long ll_scid_old,ll_scid_new Long ll_mtrlid_old,ll_mtrlid_new Decimal ld_cmplqty,ld_rqqty Int li_cmpl_old,li_cmpl_new Boolean if_special_notuse = FALSE dw_1.AcceptText() ll_row = dw_1.GetRow() IF ll_row <= 0 THEN MessageBox(publ_operator,'请选择目标物料') RETURN END IF IF dw_1.Object.u_OrderRqMtrl_tree_ifmainmtrlid[ll_row] = 1 THEN MessageBox('提示','销售订单明细物料不能换料') RETURN END IF ll_mtrlid_old = dw_1.Object.u_orderrqmtrl_tree_mtrlid[ll_row] li_plantype_old = dw_1.Object.u_orderrqmtrl_tree_plantype[ll_row] ld_cmplqty = dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_row] ld_rqqty = dw_1.Object.u_orderrqmtrl_tree_rqqty[ll_row] ll_scid_old = dw_1.Object.u_orderrqmtrl_tree_produce_scid[ll_row] IF NOT IsValid(w_order_ml_orderrqmtrl_change) THEN OpenWithParm(w_order_ml_orderrqmtrl_change,ll_mtrlid_old) s_mtrldef_array s_inscust s_inscust = Message.PowerObjectParm IF s_inscust.mtrlid[1] > 0 THEN ll_mtrlid_new = s_inscust.mtrlid[1] li_plantype_new = s_inscust.mtrlorigin[1] IF ll_mtrlid_new = ll_mtrlid_old THEN RETURN li_cmpl_old = 1 li_cmpl_new = 0 //处理 Int rslt = 1 Long ll_i String arg_msg s_order_ml_rqmtrl s_ref_mtrl s_order_ml_rqmtrl s_ref_mtrl_ch uo_order_ml_mrp uo_m uo_m = CREATE uo_order_ml_mrp uo_m.ifbuy_mtrl_not_useqty = cbx_ifbuy_mtrl_not_useqty.Checked uo_m.ifwx_mtrl_not_useqty = cbx_ifwx_mtrl_not_useqty.Checked Int li_if_allowuse,li_if_date IF cbx_if_allowuse.Checked THEN li_if_allowuse = 1 ELSE li_if_allowuse = 0 END IF li_if_date = 0 //源物料 dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_row] = 0 dw_1.Object.u_orderrqmtrl_tree_rqqty[ll_row] = 0 IF li_cmpl_old = 1 THEN Long ll_j,ll_m Long ll_row_tmp Long ll_pmtrlid_tmp1,ll_pmtrlid_tmp2 FOR ll_j = ll_row + 1 TO dw_1.RowCount() IF dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_j] = dw_1.Object.u_orderrqmtrl_tree_mtrlid[ll_row] THEN dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_j] = 0 dw_1.Object.u_orderrqmtrl_tree_rqqty[ll_j] = 0 ll_pmtrlid_tmp2 = 0 ll_pmtrlid_tmp1 = dw_1.Object.u_orderrqmtrl_tree_mtrlid[ll_j] ll_row_tmp = ll_j + 1 DO WHILE ll_row_tmp <= dw_1.RowCount() ll_pmtrlid_tmp2 = dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_row_tmp] IF ll_pmtrlid_tmp2 = ll_pmtrlid_tmp1 THEN FOR ll_m = ll_row_tmp TO dw_1.RowCount() IF ll_pmtrlid_tmp1 = dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_m] THEN dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_m] = 0 dw_1.Object.u_orderrqmtrl_tree_rqqty[ll_m] = 0 END IF NEXT ll_pmtrlid_tmp1 = dw_1.Object.u_orderrqmtrl_tree_mtrlid[ll_row_tmp] ll_row_tmp = ll_j + 1 ELSE EXIT END IF LOOP END IF NEXT END IF //新物料 IF li_cmpl_new = 1 THEN ll_row_insert = dw_1.InsertRow(0) ELSE ll_row_insert = dw_1.InsertRow(ll_row + 1) END IF dw_1.Object.u_orderrqmtrl_tree_mtrlid[ll_row_insert] = ll_mtrlid_new dw_1.Object.u_mtrldef_mtrlcode[ll_row_insert] = s_inscust.mtrlcode[1] dw_1.Object.u_mtrldef_mtrlname[ll_row_insert] = s_inscust.mtrlname[1] dw_1.Object.u_mtrldef_mtrlmode[ll_row_insert] = s_inscust.mtrlmode[1] dw_1.Object.u_mtrldef_unit[ll_row_insert] = s_inscust.unit[1] dw_1.Object.u_mtrldef_mtrltype[ll_row_insert] = s_inscust.mtrltype[1] dw_1.Object.u_mtrldef_mtrlprp[ll_row_insert] = s_inscust.mtrlprp[1] dw_1.Object.u_orderrqmtrl_tree_plantype[ll_row_insert] = li_plantype_new dw_1.Object.u_mtrldef_mtrlorigin[ll_row_insert] = li_plantype_new dw_1.Object.u_OrderRqMtrl_tree_status[ll_row_insert] = s_inscust.status[1] dw_1.Object.u_OrderRqMtrl_tree_woodcode[ll_row_insert] = s_inscust.woodcode[1] dw_1.Object.u_OrderRqMtrl_tree_pcode[ll_row_insert] = s_inscust.pcode[1] dw_1.Object.iflock[ll_row_insert] = 1 dw_1.Object.ifcmpl[ll_row_insert] = 1 Decimal ld_ckwareqty Decimal ld_mqty Decimal ld_bqty Decimal ld_wqty Decimal ld_pqty Decimal ld_otherrqqty Decimal ld_samerqqty DateTime ldt_rqdate String ls_pfcode String ls_status,ls_woodcode,ls_pcode ldt_rqdate = dw_1.Object.u_OrderRqMtrl_tree_rqdate[ll_row_insert] dw_1.Object.u_orderrqmtrl_tree_rqqty[ll_row_insert] = ld_rqqty ls_status = dw_1.Object.u_OrderRqMtrl_tree_status[ll_row_insert] ls_woodcode = dw_1.Object.u_OrderRqMtrl_tree_woodcode[ll_row_insert] ls_pcode = dw_1.Object.u_OrderRqMtrl_tree_pcode[ll_row_insert] IF uo_m.uof_get_qty(1,i_scid,i_taskid,i_printid,ll_mtrlid_new,ls_status,ls_woodcode,ls_pcode,ld_bqty,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF uo_m.uof_get_qty(2,i_scid,i_taskid,i_printid,ll_mtrlid_new,ls_status,ls_woodcode,ls_pcode,ld_pqty,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF uo_m.uof_get_qty(3,i_scid,i_taskid,i_printid,ll_mtrlid_new,ls_status,ls_woodcode,ls_pcode,ld_wqty,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF // IF uo_m.uof_get_qty(4,li_if_date,ldt_rqdate,i_scid,i_orderid,ll_mtrlid_new,ls_status,ls_woodcode,ls_pcode,ld_mqty,arg_msg) = 0 THEN // rslt = 0 // GOTO ext // END IF // // IF uo_m.uof_get_other_rqqty(i_scid,i_orderid,ll_mtrlid_new,li_plantype_new,ls_status,ls_woodcode,ls_pcode,ld_otherrqqty,li_if_date,ldt_rqdate,arg_msg) = 0 THEN // rslt = 0 // GOTO ext // END IF dw_1.Object.u_orderrqmtrl_tree_mqty[ll_row_insert] = ld_mqty dw_1.Object.u_orderrqmtrl_tree_bqty[ll_row_insert] = ld_bqty dw_1.Object.u_orderrqmtrl_tree_wqty[ll_row_insert] = ld_wqty dw_1.Object.u_orderrqmtrl_tree_pqty[ll_row_insert] = ld_pqty dw_1.Object.u_orderrqmtrl_tree_otherrqqty[ll_row_insert] = ld_otherrqqty dw_1.Object.u_orderrqmtrl_tree_samerqqty[ll_row_insert] = ld_samerqqty ld_ckwareqty = ld_mqty + ld_bqty + ld_wqty + ld_pqty - ld_otherrqqty - ld_samerqqty dw_1.Object.ckwareqty[ll_row_insert] = ld_ckwareqty IF cbx_if_allowuse.Checked THEN IF cbx_ifbuy_mtrl_not_useqty.Checked OR & cbx_ifwx_mtrl_not_useqty.Checked THEN IF li_plantype_new = 2 THEN IF cbx_ifbuy_mtrl_not_useqty.Checked THEN ld_cmplqty = ld_rqqty if_special_notuse = TRUE END IF ELSEIF li_plantype_new = 3 THEN IF cbx_ifwx_mtrl_not_useqty.Checked THEN ld_cmplqty = ld_rqqty if_special_notuse = TRUE END IF END IF END IF IF NOT if_special_notuse THEN IF ld_ckwareqty > 0 THEN IF ld_rqqty <= ld_ckwareqty THEN ld_cmplqty = 0 ELSE ld_cmplqty = ld_rqqty - ld_ckwareqty END IF ELSE ld_cmplqty = ld_rqqty END IF END IF ELSE ld_cmplqty = ld_rqqty END IF dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_row_insert] = ld_cmplqty dw_1.Object.u_OrderRqMtrl_tree_wrkgrpid[ll_row_insert] = dw_1.Object.u_OrderRqMtrl_tree_wrkgrpid[ll_row] dw_1.Object.u_orderrqmtrl_tree_scid[ll_row_insert] = dw_1.Object.u_orderrqmtrl_tree_scid[ll_row] dw_1.Object.u_orderrqmtrl_tree_taskid[ll_row_insert] = dw_1.Object.u_orderrqmtrl_tree_taskid[ll_row] dw_1.Object.u_orderrqmtrl_tree_printid[ll_row_insert] = dw_1.Object.u_orderrqmtrl_tree_printid[ll_row] dw_1.Object.u_orderrqmtrl_tree_ifchanged[ll_row_insert] = 1 dw_1.Object.u_orderrqmtrl_tree_lp[ll_row_insert] = dw_1.Object.u_orderrqmtrl_tree_lp[ll_row] dw_1.Object.u_OrderRqMtrl_tree_ifmainmtrlid[ll_row_insert] = dw_1.Object.u_OrderRqMtrl_tree_ifmainmtrlid[ll_row] dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_row_insert] = dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_row] IF li_cmpl_new = 1 THEN IF uo_m.uof_cmpl_rqmtrl_re(i_scid,i_taskid,i_printid,& dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_row_insert],ll_mtrlid_new,& dw_1.Object.u_orderrqmtrl_tree_plantype[ll_row_insert],& ls_status,ls_woodcode,ls_pcode,ld_cmplqty,& dw_1.Object.u_OrderRqMtrl_tree_wrkgrpid[ll_row_insert],& dw_1.Object.u_orderrqmtrl_tree_lp[ll_row_insert],& li_if_allowuse,s_ref_mtrl,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF FOR ll_i = 1 TO UpperBound(s_ref_mtrl.mtrlid) ll_row_insert = dw_1.InsertRow(0) dw_1.Object.u_orderrqmtrl_tree_scid[ll_row_insert] = i_scid dw_1.Object.u_OrderRqMtrl_tree_taskid[ll_row_insert] = i_taskid dw_1.Object.u_OrderRqMtrl_tree_printid[ll_row_insert] = i_printid dw_1.Object.u_mtrldef_mtrlcode[ll_row_insert] = s_ref_mtrl.mtrlcode[ll_i] dw_1.Object.u_mtrldef_mtrlname[ll_row_insert] = s_ref_mtrl.mtrlname[ll_i] dw_1.Object.u_mtrldef_mtrlmode[ll_row_insert] = s_ref_mtrl.mtrlmode[ll_i] dw_1.Object.u_mtrldef_unit[ll_row_insert] = s_ref_mtrl.unit[ll_i] dw_1.Object.u_mtrldef_mtrlorigin[ll_row_insert] = s_ref_mtrl.mtrlorigin[ll_i] dw_1.Object.u_mtrldef_mtrltype[ll_row_insert] = s_ref_mtrl.mtrltype[ll_i] dw_1.Object.u_OrderRqMtrl_tree_wrkgrpid[ll_row_insert] = s_ref_mtrl.wrkgrpid_scll[ll_i] dw_1.Object.u_OrderRqMtrl_tree_status[ll_row_insert] = s_ref_mtrl.status[ll_i] dw_1.Object.u_OrderRqMtrl_tree_woodcode[ll_row_insert] = s_ref_mtrl.woodcode[ll_i] dw_1.Object.u_OrderRqMtrl_tree_pcode[ll_row_insert] = s_ref_mtrl.pcode[ll_i] dw_1.Object.u_orderrqmtrl_tree_lp[ll_row_insert] = s_ref_mtrl.lp[ll_i] dw_1.Object.u_orderrqmtrl_tree_mtrlid[ll_row_insert] = s_ref_mtrl.mtrlid[ll_i] dw_1.Object.u_orderrqmtrl_tree_rqqty[ll_row_insert] = s_ref_mtrl.qty[ll_i] dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_row_insert] = s_ref_mtrl.cmplqty[ll_i] dw_1.Object.u_orderrqmtrl_tree_plantype[ll_row_insert] = s_ref_mtrl.plantype[ll_i] dw_1.Object.u_orderrqmtrl_tree_mqty[ll_row_insert] = s_ref_mtrl.mqty[ll_i] dw_1.Object.u_orderrqmtrl_tree_bqty[ll_row_insert] = s_ref_mtrl.bqty[ll_i] dw_1.Object.u_orderrqmtrl_tree_wqty[ll_row_insert] = s_ref_mtrl.wqty[ll_i] dw_1.Object.u_orderrqmtrl_tree_pqty[ll_row_insert] = s_ref_mtrl.pqty[ll_i] dw_1.Object.u_orderrqmtrl_tree_otherrqqty[ll_row_insert] = s_ref_mtrl.otherrqqty[ll_i] dw_1.Object.ckwareqty[ll_row_insert] = s_ref_mtrl.mqty[ll_i] + s_ref_mtrl.bqty[ll_i] + s_ref_mtrl.wqty[ll_i] + s_ref_mtrl.pqty[ll_i] - s_ref_mtrl.otherrqqty[ll_i] dw_1.Object.u_orderrqmtrl_tree_samerqqty[ll_row_insert] = s_ref_mtrl.samerqqty[ll_i] dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_row_insert] = s_ref_mtrl.pmtrlid[ll_i] dw_1.Object.u_orderrqmtrl_tree_ifchanged[ll_row_insert] = s_ref_mtrl.ifchanged[ll_i] dw_1.Object.u_OrderRqMtrl_tree_ifmainmtrlid[ll_row_insert] = s_ref_mtrl.ifmainmtrlid[ll_i] NEXT END IF END IF END IF ext: DESTROY uo_m end event type st_dscrp from statictext within w_order_ml_mrp integer x = 23 integer y = 308 integer width = 3543 integer height = 56 boolean bringtotop = true integer textsize = -9 integer weight = 700 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 16711680 long backcolor = 134217739 string text = "销售订单备注:" boolean focusrectangle = false end type type cb_change_pz from uo_imflatbutton within w_order_ml_mrp integer x = 1152 integer width = 219 integer height = 164 integer taborder = 50 boolean bringtotop = true boolean enabled = false string text = "改配置" string normalpicname = "p1.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;Int rslt = 1 Long ll_row Long ll_mtrlid,ll_pmtrlid,ll_wrkgrpid Decimal ld_cmplqty,ld_rqqty,ld_cmplqty_change String ls_status,ls_woodcode,ls_pcode Int li_if_add //0:改变时用加,1:改变时用减 String arg_msg Boolean if_special_notuse = FALSE Decimal ld_ckwareqty Decimal ld_mqty Decimal ld_bqty Decimal ld_wqty Decimal ld_pqty Decimal ld_otherrqqty Decimal ld_samerqqty DateTime ldt_rqdate String ls_pfcode Int li_plantype Int li_ifselforder s_order_ml_rqmtrl s_ref_mtrl dw_1.AcceptText() ll_row = dw_1.GetRow() uo_order_ml_mrp uo_m uo_m = CREATE uo_order_ml_mrp uo_m.ifbuy_mtrl_not_useqty = cbx_ifbuy_mtrl_not_useqty.Checked uo_m.ifwx_mtrl_not_useqty = cbx_ifwx_mtrl_not_useqty.Checked IF ll_row <= 0 THEN arg_msg = '请选择目标物料' rslt = 0 GOTO ext END IF IF dw_1.Object.u_OrderRqMtrl_tree_ifmainmtrlid[ll_row] = 1 THEN arg_msg = '销售订单明细物料不能换配置' rslt = 0 GOTO ext END IF ll_mtrlid = dw_1.Object.u_orderrqmtrl_tree_mtrlid[ll_row] ls_status = dw_1.Object.u_orderrqmtrl_tree_status[ll_row] ls_woodcode = dw_1.Object.u_orderrqmtrl_tree_woodcode[ll_row] ls_pcode = dw_1.Object.u_orderrqmtrl_tree_pcode[ll_row] li_plantype = dw_1.Object.u_orderrqmtrl_tree_plantype[ll_row] ld_rqqty = dw_1.Object.u_orderrqmtrl_tree_rqqty[ll_row] ll_pmtrlid = dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_row] ll_wrkgrpid = dw_1.Object.u_OrderRqMtrl_tree_wrkgrpid[ll_row] s_order_ml_mrp_changepz s_chpz_open,s_chpz_rst s_chpz_open.mtrlid = ll_mtrlid s_chpz_open.status = ls_status s_chpz_open.woodcode = ls_woodcode s_chpz_open.pcode = ls_pcode IF NOT IsValid(w_order_ml_mrp_changepz) THEN OpenWithParm(w_order_ml_mrp_changepz,s_chpz_open) s_chpz_rst = Message.PowerObjectParm IF s_chpz_rst.ifchange = 0 THEN rslt = -1 GOTO ext END IF IF s_chpz_rst.status = ls_status AND & s_chpz_rst.woodcode = ls_woodcode AND & s_chpz_rst.pcode = ls_pcode THEN rslt = 1 GOTO ext END IF Int li_if_allowuse,li_if_date IF cbx_if_allowuse.Checked THEN li_if_allowuse = 1 ELSE li_if_allowuse = 0 END IF li_if_date = 0 IF uo_m.uof_get_qty(1,i_scid,i_taskid,i_printid,ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ld_bqty,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF uo_m.uof_get_qty(2,i_scid,i_taskid,i_printid,ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ld_pqty,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF uo_m.uof_get_qty(3,i_scid,i_taskid,i_printid,ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ld_wqty,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF // IF uo_m.uof_get_qty(4,li_if_date,ldt_rqdate,i_scid,i_orderid,ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ld_mqty,arg_msg) = 0 THEN // rslt = 0 // GOTO ext // END IF // // IF uo_m.uof_get_other_rqqty(i_scid,i_orderid,ll_mtrlid,li_plantype,ls_status,ls_woodcode,ls_pcode,ld_otherrqqty,li_if_date,ldt_rqdate,arg_msg) = 0 THEN // rslt = 0 // GOTO ext // END IF // ld_ckwareqty = ld_mqty + ld_bqty + ld_wqty + ld_pqty - ld_otherrqqty - ld_samerqqty IF cbx_if_allowuse.Checked THEN IF cbx_ifbuy_mtrl_not_useqty.Checked OR & cbx_ifwx_mtrl_not_useqty.Checked THEN IF li_plantype = 2 THEN IF cbx_ifbuy_mtrl_not_useqty.Checked THEN ld_cmplqty = ld_rqqty if_special_notuse = TRUE END IF ELSEIF li_plantype = 3 THEN IF cbx_ifwx_mtrl_not_useqty.Checked THEN ld_cmplqty = ld_rqqty if_special_notuse = TRUE END IF END IF END IF IF NOT if_special_notuse THEN IF ld_ckwareqty > 0 THEN IF ld_rqqty <= ld_ckwareqty THEN ld_cmplqty = 0 ELSE ld_cmplqty = ld_rqqty - ld_ckwareqty END IF ELSE ld_cmplqty = ld_rqqty END IF END IF ELSE ld_cmplqty = ld_rqqty END IF IF cbx_if_allowuse.Checked THEN IF ld_cmplqty = dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_row] THEN ld_cmplqty_change = 0 ELSEIF ld_cmplqty > dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_row] THEN ld_cmplqty_change = ld_cmplqty - dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_row] li_if_add = 0 ELSEIF ld_cmplqty < dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_row] THEN ld_cmplqty_change = dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_row] - ld_cmplqty li_if_add = 1 END IF IF ld_cmplqty_change <> 0 THEN IF uo_m.uof_cmpl_rqmtrl_change(i_scid,ll_pmtrlid,ll_mtrlid,& s_chpz_rst.status,s_chpz_rst.woodcode,s_chpz_rst.pcode,& ld_cmplqty_change,s_ref_mtrl,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF Long ll_f_row,ll_j,ll_i FOR ll_i = 1 TO UpperBound(s_ref_mtrl.mtrlid) ll_f_row = 0 ll_j = 0 dw_1.AcceptText() FOR ll_j = ll_row + 1 TO dw_1.RowCount() IF dw_1.Object.u_orderrqmtrl_tree_mtrlid[ll_j] = s_ref_mtrl.mtrlid[ll_i] AND & dw_1.Object.u_orderrqmtrl_tree_status[ll_j] = s_ref_mtrl.status[ll_i] AND & dw_1.Object.u_orderrqmtrl_tree_woodcode[ll_j] = s_ref_mtrl.woodcode[ll_i] AND & dw_1.Object.u_orderrqmtrl_tree_pcode[ll_j] = s_ref_mtrl.pcode[ll_i] AND & dw_1.Object.u_OrderRqMtrl_tree_wrkgrpid[ll_j] = s_ref_mtrl.wrkgrpid_scll[ll_i] AND & dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_j] = s_ref_mtrl.pmtrlid[ll_i] THEN ll_f_row = ll_j EXIT END IF NEXT IF ll_f_row = 0 THEN arg_msg = '查询物料:'+s_ref_mtrl.mtrlcode[ll_i]+',变更行数失败' rslt = 0 GOTO ext END IF NEXT FOR ll_i = 1 TO UpperBound(s_ref_mtrl.mtrlid) ll_f_row = 0 ll_j = 0 dw_1.AcceptText() FOR ll_j = ll_row + 1 TO dw_1.RowCount() IF dw_1.Object.u_orderrqmtrl_tree_mtrlid[ll_j] = s_ref_mtrl.mtrlid[ll_i] AND & dw_1.Object.u_orderrqmtrl_tree_status[ll_j] = s_ref_mtrl.status[ll_i] AND & dw_1.Object.u_orderrqmtrl_tree_woodcode[ll_j] = s_ref_mtrl.woodcode[ll_i] AND & dw_1.Object.u_orderrqmtrl_tree_pcode[ll_j] = s_ref_mtrl.pcode[ll_i] AND & dw_1.Object.u_OrderRqMtrl_tree_wrkgrpid[ll_j] = s_ref_mtrl.wrkgrpid_scll[ll_i] AND & dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_j] = s_ref_mtrl.pmtrlid[ll_i] THEN ll_f_row = ll_j EXIT END IF NEXT IF li_if_add = 0 THEN dw_1.Object.u_orderrqmtrl_tree_rqqty[ll_f_row] = dw_1.Object.u_orderrqmtrl_tree_rqqty[ll_f_row] + s_ref_mtrl.qty[ll_i] dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_f_row] = dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_f_row] + s_ref_mtrl.cmplqty[ll_i] ELSE dw_1.Object.u_orderrqmtrl_tree_rqqty[ll_f_row] = dw_1.Object.u_orderrqmtrl_tree_rqqty[ll_f_row] - s_ref_mtrl.qty[ll_i] IF dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_f_row] - s_ref_mtrl.cmplqty[ll_i] < 0 THEN dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_f_row] = 0 ELSE dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_f_row] = dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_f_row] - s_ref_mtrl.cmplqty[ll_i] END IF END IF NEXT END IF END IF dw_1.Object.u_orderrqmtrl_tree_mqty[ll_row] = ld_mqty dw_1.Object.u_orderrqmtrl_tree_bqty[ll_row] = ld_bqty dw_1.Object.u_orderrqmtrl_tree_wqty[ll_row] = ld_wqty dw_1.Object.u_orderrqmtrl_tree_pqty[ll_row] = ld_pqty dw_1.Object.u_orderrqmtrl_tree_otherrqqty[ll_row] = ld_otherrqqty dw_1.Object.u_orderrqmtrl_tree_samerqqty[ll_row] = ld_samerqqty dw_1.Object.ckwareqty[ll_row] = ld_ckwareqty dw_1.Object.u_orderrqmtrl_tree_status[ll_row] = s_chpz_rst.status dw_1.Object.u_orderrqmtrl_tree_woodcode[ll_row] = s_chpz_rst.woodcode dw_1.Object.u_orderrqmtrl_tree_pcode[ll_row] = s_chpz_rst.pcode dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_row] = ld_cmplqty END IF ext: IF rslt = 0 THEN MessageBox('提示','操作失败,'+arg_msg) ELSE MessageBox('提示','操作成功') END IF DESTROY uo_m end event type cb_cancel_scll from uo_imflatbutton within w_order_ml_mrp integer x = 1371 integer height = 164 integer taborder = 60 boolean bringtotop = true boolean enabled = false string text = "取消领料" string normalpicname = "mx.BMP" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;Long ll_row dw_1.AcceptText() ll_row = dw_1.GetRow() IF ll_row <= 0 THEN MessageBox('提示','请选择目标物料') RETURN END IF IF dw_1.Object.u_OrderRqMtrl_tree_ifmainmtrlid[ll_row] = 1 THEN MessageBox('提示','生产计划物料不能操作') RETURN END IF IF dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_row] <> 0 THEN MessageBox('提示','物料有需求数,不能取消领料') RETURN END IF IF dw_1.Object.u_orderrqmtrl_tree_rqqty[ll_row] = 0 THEN MessageBox('提示','物料没有领料数,不能取消领料') RETURN END IF dw_1.Object.u_orderrqmtrl_tree_rqqty[ll_row] = 0 dw_1.Object.u_orderrqmtrl_tree_ifchanged[ll_row] = 1 end event type cbx_ifwx_mtrl_not_useqty from checkbox within w_order_ml_mrp integer x = 1056 integer y = 200 integer width = 521 integer height = 60 boolean bringtotop = true 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 cb_sort from uo_imflatbutton within w_order_ml_mrp integer x = 1673 integer width = 165 integer height = 164 integer taborder = 30 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_sort_1" menustr = menustr + "|" + "Text=按物料类别排序~tEvent=ue_sort_2" 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 cb_help from uo_imflatbutton within w_order_ml_mrp integer x = 1838 integer width = 151 integer height = 164 integer taborder = 20 boolean bringtotop = true string text = "帮助" string normalpicname = "help.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;PARENT.TriggerEvent('ue_help') end event type cbx_ifbuy_mtrl_not_useqty from checkbox within w_order_ml_mrp integer x = 517 integer y = 200 integer width = 526 integer height = 60 boolean bringtotop = true 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 em_1 from editmask within w_order_ml_mrp integer x = 2473 integer y = 64 integer width = 155 integer height = 72 integer taborder = 30 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 string text = "1" alignment alignment = right! borderstyle borderstyle = stylelowered! maskdatatype maskdatatype = decimalmask! string mask = "#0.00" end type type st_1 from statictext within w_order_ml_mrp integer x = 2226 integer y = 68 integer width = 247 integer height = 72 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 long backcolor = 67108864 string text = "运算比例" boolean focusrectangle = false end type event constructor;this.backcolor = 14215660 end event type ln_1 from line within w_order_ml_mrp long linecolor = 268435456 integer linethickness = 4 integer beginy = 284 integer endx = 3323 integer endy = 284 end type type ln_2 from line within w_order_ml_mrp long linecolor = 16777215 integer linethickness = 4 integer beginy = 288 integer endx = 3323 integer endy = 288 end type type ln_3 from line within w_order_ml_mrp long linecolor = 268435456 integer linethickness = 4 integer beginy = 380 integer endx = 3323 integer endy = 380 end type type ln_4 from line within w_order_ml_mrp long linecolor = 16777215 integer linethickness = 4 integer beginy = 384 integer endx = 3323 integer endy = 384 end type