$PBExportHeader$w_add_mtrlware_spt.srw forward global type w_add_mtrlware_spt from w_publ_base end type type cb_addware from uo_imflatbutton within w_add_mtrlware_spt end type type dw_1 from datawindow within w_add_mtrlware_spt end type end forward global type w_add_mtrlware_spt from w_publ_base integer width = 2039 integer height = 1224 string title = "增加库存" boolean minbox = false windowtype windowtype = response! event ue_f8 ( ) event ue_f9 ( ) event ue_allowedit ( ) cb_addware cb_addware dw_1 dw_1 end type global w_add_mtrlware_spt w_add_mtrlware_spt type variables long ins_warepdbid long ins_storageid datetime ins_waredate long il_sptid s_mtrlware_noalloc_array INS_RT_STRU end variables event ue_f8();//用于选择明细内容,被F8[默认]\dw_1.doubleclicked调用 Long child_row child_row = dw_1.GetRow() IF NOT IsValid(W_mtrldef_edit) THEN s_edit_index_tran s_ch_tran //传递参数使用 s_ch_tran.if_retrieve_all = FALSE //是否一次RETRIEVE所有行 s_ch_tran.work_mode = 1 //0-单纯编辑模式 1-选择\编辑模式 s_ch_tran.arg_pkid = 0 //目标定位PKID (备用) s_ch_tran.arg_string_code = '' //查询列(物料编码)部分内容,用于初步筛选 s_ch_tran.if_select_all = false s_ch_tran.b_long = -1 s_ch_tran.c_long = ins_storageid s_ch_tran.f_long = -1 Long chc = 1,ls_j dw_1.AcceptText() IF dw_1.GetRow() > 0 THEN s_ch_tran.arg_string_code = Trim(dw_1.Object.u_mtrldef_mtrlcode[dw_1.GetRow()]) OpenWithParm(W_mtrldef_edit,s_ch_tran) s_mtrldef_array S_INSCUST S_INSCUST = Message.PowerObjectParm FOR ls_j = 1 TO UpperBound(S_INSCUST.mtrlid) IF S_INSCUST.mtrlid[ls_j] > 0 THEN dw_1.Object.u_mtrldef_mtrlcode[child_row] = S_INSCUST.mtrlcode[ls_j] dw_1.Object.u_mtrldef_unit[child_row] = S_INSCUST.unit[ls_j] dw_1.Object.ow_wfjg_sptpdb_mtrlid[child_row] = S_INSCUST.mtrlid[ls_j] dw_1.Object.u_mtrldef_mtrlname[child_row] = S_INSCUST.mtrlname[ls_j] dw_1.Object.u_mtrldef_mtrlmode[child_row] = S_INSCUST.mtrlmode[ls_j] dw_1.Object.u_mtrldef_statusflag[child_row] = S_INSCUST.statusflag[ls_j] dw_1.Object.u_mtrldef_statustype[child_row] = S_INSCUST.statustype[ls_j] dw_1.Object.u_mtrldef_woodcodeflag[child_row] = S_INSCUST.woodcodeflag[ls_j] dw_1.Object.u_mtrldef_woodcodetype[child_row] = S_INSCUST.woodcodetype[ls_j] dw_1.Object.u_mtrldef_pcodeflag[child_row] = S_INSCUST.pcodeflag[ls_j] dw_1.Object.u_mtrldef_pcodetype[child_row] = S_INSCUST.pcodetype[ls_j] END IF NEXT this.triggerevent('ue_allowedit') dw_1.SetFocus() dw_1.SetColumn('ow_wfjg_sptpdb_factqty') END IF end event event ue_f9(); long uc_row uc_row=dw_1.getrow() dw_1.accepttext() if not isvalid(W_spt_edit) then s_edit_index_tran s_ch_tran //传递参数使用 s_ch_tran.if_retrieve_all=false //是否一次RETRIEVE所有行 s_ch_tran.work_mode=1 //0-单纯编辑模式 1-选择\编辑模式 s_ch_tran.arg_pkid=0 //目标定位PKID (备用) //查询列(物料编码)部分内容,用于初步筛选 s_ch_tran.arg_string_code=upper(trim(dw_1.object.u_spt_sptcode[dw_1.getrow()])) OPENwithparm(W_spt_edit,s_ch_tran) //调用 S_spt S_INSCUST S_INSCUST=Message.PowerObjectParm //接受返回结构 IF S_INSCUST.sptid>0 THEN //正常返回值则可以取以下值 dw_1.setredraw(false) dw_1.object.ow_wfjg_sptpdb_sptid[uc_row]=S_INSCUST.sptid dw_1.object.u_spt_sptcode[uc_row]=S_INSCUST.Name dw_1.object.u_spt_name[uc_row]= S_INSCUST.sptcode dw_1.setredraw(true) END IF end if end event event ue_allowedit();Long Columns Int i String ls_modify_str Long ll_row Long ll_value Long ll_statusflag,ll_woodcodeflag,ll_pcodeflag String ls_status,ls_woodcode,ls_pcode String ls_data_type ll_row = dw_1.GetRow() IF ll_row <= 0 THEN RETURN Columns = Long(dw_1.Describe("DataWindow.Column.Count")) FOR i = 1 TO Columns ls_modify_str = dw_1.Describe("#" + String(i) + ".name") ls_modify_str = Lower(ls_modify_str) IF i = 1 THEN //第1个字段,约定物料ID ls_data_type = dw_1.Describe(ls_modify_str+".ColType") IF ls_data_type = "long" THEN ll_value = dw_1.GetItemNumber(ll_row,ls_modify_str) END IF END IF IF Pos(ls_modify_str,'statusflag') > 0 THEN ls_data_type = dw_1.Describe(ls_modify_str+".ColType") IF ls_data_type = "long" THEN ll_statusflag = dw_1.GetItemNumber(ll_row,ls_modify_str) END IF END IF IF Pos(ls_modify_str,'woodcodeflag') > 0 THEN ls_data_type = dw_1.Describe(ls_modify_str+".ColType") IF ls_data_type = "long" THEN ll_woodcodeflag = dw_1.GetItemNumber(ll_row,ls_modify_str) END IF END IF IF Pos(ls_modify_str,'pcodeflag') > 0 THEN ls_data_type = dw_1.Describe(ls_modify_str+".ColType") IF ls_data_type = "long" THEN ll_pcodeflag = dw_1.GetItemNumber(ll_row,ls_modify_str) END IF END IF IF Pos(ls_modify_str,'status') > 0 AND Pos(ls_modify_str,'statusflag') = 0 AND Pos(ls_modify_str,'statustype') = 0 THEN IF Len(ls_modify_str) = Len('status') OR Pos(ls_modify_str,'_status') > 0 THEN IF Not (Pos(ls_modify_str,'u_saletask_status') > 0 OR & Pos(ls_modify_str,'u_buytask_status') > 0 OR & Pos(ls_modify_str,'u_order_ml_status') > 0 OR & Pos(ls_modify_str,'u_order_wfjg_status') > 0 OR & Pos(ls_modify_str,'u_rs_empinfo_status') > 0 ) THEN ls_status = ls_modify_str END IF END IF END IF IF Pos(ls_modify_str,'woodcode') > 0 AND Pos(ls_modify_str,'woodcodeflag') = 0 AND Pos(ls_modify_str,'woodcodetype') = 0 THEN IF Len(ls_modify_str) = Len('woodcode') OR Pos(ls_modify_str,'_woodcode') > 0 THEN ls_woodcode = ls_modify_str END IF END IF IF Pos(ls_modify_str,'pcode') > 0 AND Pos(ls_modify_str,'pcodeflag') = 0 AND Pos(ls_modify_str,'pcodetype') = 0 THEN IF Len(ls_modify_str) = Len('pcode') OR Pos(ls_modify_str,'_pcode') > 0 THEN ls_pcode = ls_modify_str END IF END IF NEXT IF ls_status <> '' THEN IF ll_statusflag <> 0 OR ll_value = 0 THEN dw_1.Modify(ls_status+".dddw.allowedit = no") ELSE dw_1.Modify(ls_status+".dddw.allowedit = yes") END IF END IF IF ls_woodcode <> '' THEN IF ll_woodcodeflag <> 0 OR ll_value = 0 THEN dw_1.Modify(ls_woodcode+".dddw.allowedit = no") ELSE dw_1.Modify(ls_woodcode+".dddw.allowedit = yes") END IF END IF IF ls_pcode <> '' THEN IF ll_pcodeflag <> 0 OR ll_value = 0 THEN dw_1.Modify(ls_pcode+".dddw.allowedit = no") ELSE dw_1.Modify(ls_pcode+".dddw.allowedit = yes") END IF END IF end event on w_add_mtrlware_spt.create int iCurrent call super::create this.cb_addware=create cb_addware this.dw_1=create dw_1 iCurrent=UpperBound(this.Control) this.Control[iCurrent+1]=this.cb_addware this.Control[iCurrent+2]=this.dw_1 end on on w_add_mtrlware_spt.destroy call super::destroy destroy(this.cb_addware) destroy(this.dw_1) end on event open;call super::open;s_edit_index_tran s_tran //传递参数使用 s_tran = Message.PowerObjectParm String ls_sptcode,ls_sptname IF NOT IsNull(s_tran) THEN il_sptid = s_tran.c_long SELECT sptcode,name INTO :ls_sptcode,:ls_sptname FROM u_spt Where sptid = :il_sptid; IF sqlca.SQLCode <> 0 THEN MessageBox('Error','查询外协商失败,'+sqlca.SQLErrText) RETURN END IF END IF Long ls_row dw_1.SetTransObject(sqlca) ls_row = dw_1.InsertRow(0) dw_1.SetRedraw(FALSE) dw_1.Object.ow_wfjg_sptpdb_sptid[ls_row] = il_sptid dw_1.Object.u_spt_name[ls_row] = ls_sptname dw_1.Object.u_spt_sptcode[ls_row] = ls_sptcode dw_1.SetColumn('u_mtrldef_mtrlcode') dw_1.SetFocus() dw_1.SetRedraw(TRUE) end event event close;call super::close;CLOSEWITHRETURN(THIS,INS_RT_STRU) end event type cb_func from w_publ_base`cb_func within w_add_mtrlware_spt boolean visible = false integer x = 123 integer y = 1388 end type type cb_exit from w_publ_base`cb_exit within w_add_mtrlware_spt integer x = 1609 integer y = 1008 end type type cb_addware from uo_imflatbutton within w_add_mtrlware_spt integer x = 1257 integer y = 1008 integer width = 311 integer height = 96 integer taborder = 130 boolean bringtotop = true end type event clicked;call super::clicked;// Long i,rowcnt,rslt = 1 Long ls_mtrlwareid,ls_mtrlid,ls_storageid,ls_dxflag String ls_mtrlcode String ls_plancode String ls_status,ls_woodcode,ls_pcode Decimal ls_qty,ls_cost Long ls_cusid Long ll_scid String arg_msg dw_1.AcceptText() i = dw_1.GetRow() ls_mtrlid = dw_1.Object.ow_wfjg_sptpdb_mtrlid[i] ls_mtrlcode = dw_1.Object.u_mtrldef_mtrlcode[i] ls_plancode = dw_1.Object.ow_wfjg_sptpdb_plancode[i] ls_cusid = dw_1.Object.ow_wfjg_sptpdb_sptid[i] ls_status = dw_1.Object.ow_wfjg_sptpdb_status[i] ls_woodcode = dw_1.Object.ow_wfjg_sptpdb_woodcode[i] ls_pcode = dw_1.Object.ow_wfjg_sptpdb_pcode[i] ls_qty = dw_1.Object.ow_wfjg_sptpdb_factqty[i] ls_cost = dw_1.Object.ow_wfjg_sptpdb_cost[i] SELECT scid INTO :ll_scid FROM u_mtrldef Where mtrlid = :ls_mtrlid; IF sqlca.SQLCode <> 0 THEN MessageBox('Error','查询物料所属生产分部失败') RETURN END IF IF f_insert_0_sptware(ll_scid,ls_mtrlwareid,ls_mtrlid,ls_mtrlcode,il_sptid,ls_status,ls_woodcode,ls_pcode,ls_plancode,ls_cost,arg_msg) = 0 THEN rslt = 0 GOTO ext ELSE dw_1.Object.ow_wfjg_sptpdb_mtrlwareid[i] = ls_mtrlwareid END IF INS_RT_STRU.mtrlwareid[1] = ls_mtrlwareid INS_RT_STRU.mtrlid[1] = ls_mtrlid INS_RT_STRU.plancode[1] = ls_plancode INS_RT_STRU.pcode[1] = ls_pcode INS_RT_STRU.noallocqty[1] = ls_qty INS_RT_STRU.woodcode[1] = ls_woodcode INS_RT_STRU.pcode[1] = ls_pcode INS_RT_STRU.status[1] = ls_status INS_RT_STRU.u_mtrldef_mtrlname[1] = dw_1.Object.u_mtrldef_mtrlname[i] INS_RT_STRU.u_mtrldef_mtrlcode[1] = dw_1.Object.u_mtrldef_mtrlcode[i] INS_RT_STRU.u_mtrldef_unit[1] = dw_1.Object.u_mtrldef_unit[i] INS_RT_STRU.cost[1] = ls_cost ext: IF rslt = 0 THEN MessageBox('',arg_msg) END IF Close(PARENT) end event type dw_1 from datawindow within w_add_mtrlware_spt event key pbm_dwnkey event ue_dwndropdown pbm_dwndropdown integer x = 50 integer y = 40 integer width = 1870 integer height = 940 integer taborder = 10 boolean bringtotop = true string title = "none" string dataobject = "dw_add_mtrlware_spt" boolean livescroll = true borderstyle borderstyle = stylelowered! end type event key;String ls_mtrlcode,ls_mtrlname,ls_unit,ls_mtrlmode,ls_prdpackcode Long ls_mtrlid Decimal ls_planprice,ls_packqty Int li_statusflag,li_woodcodeflag,li_pcodeflag Long ll_statustype,ll_woodcodetype,ll_pcodetype Long child_row Long ls_null SetNull(ls_null) If (KeyDown(KeyEnter!) OR KeyDown(KeyTab!)) AND NOT KeyDown(KeyControl!) AND NOT KeyDown(KeyShift!) THEN IF THIS.GetColumnName() = 'u_mtrldef_mtrlcode' THEN THIS.AcceptText() child_row = THIS.GetRow() ls_mtrlcode = THIS.Object.u_mtrldef_mtrlcode[child_row] SELECT u_mtrldef.mtrlid, u_mtrldef.mtrlname, u_mtrldef.unit, u_mtrldef.planprice, u_mtrldef.mtrlmode, u_mtrldef.prdpackcode, u_mtrldef.packqty, u_mtrldef.statusflag, u_mtrldef.statustype, u_mtrldef.woodcodeflag, u_mtrldef.woodcodetype, u_mtrldef.pcodeflag, u_mtrldef.pcodetype INTO :ls_mtrlid, :ls_mtrlname, :ls_unit, :ls_planprice, :ls_mtrlmode, :ls_prdpackcode, :ls_packqty, :li_statusflag, :ll_statustype, :li_woodcodeflag, :ll_woodcodetype, :li_pcodeflag, :ll_pcodetype FROM u_mtrldef Where ( u_mtrldef.mtrlcode = :ls_mtrlcode); IF sqlca.SQLCode = 100 THEN PARENT.TriggerEvent('ue_f8') RETURN END IF THIS.Object.ow_wfjg_sptpdb_mtrlid[child_row] = ls_mtrlid THIS.Object.u_mtrldef_mtrlname[child_row] = ls_mtrlname THIS.Object.u_mtrldef_mtrlmode[child_row] = ls_mtrlmode THIS.Object.u_mtrldef_unit[child_row] = ls_unit THIS.Object.u_mtrldef_statusflag[child_row] = li_statusflag THIS.Object.u_mtrldef_statustype[child_row] = ll_statustype THIS.Object.u_mtrldef_woodcodeflag[child_row] = li_woodcodeflag THIS.Object.u_mtrldef_woodcodetype[child_row] = ll_woodcodetype THIS.Object.u_mtrldef_pcodeflag[child_row] = li_pcodeflag THIS.Object.u_mtrldef_pcodetype[child_row] = ll_pcodetype PARENT.TriggerEvent('ue_allowedit') IF Key = KeyEnter! THEN keybd_event ( 9, 0, 0 , 0 ) // 按下tab keybd_event ( 9, 0, 2, 0 ) // 释放tab RETURN 1 END IF ELSE IF Key = KeyEnter! THEN keybd_event ( 9, 0, 0 , 0 ) // 按下tab keybd_event ( 9, 0, 2, 0 ) // 释放tab RETURN 1 END IF END IF END IF end event event ue_dwndropdown; String ls_col_pz,ls_col_mtrlid String ls_pz_ch Long ll_row,ll_mtrlid s_pzwin_open arg_s_win ll_row = THIS.GetRow() IF ll_row > 0 THEN ls_col_mtrlid = THIS.Describe("#1.Name") IF NOT Pos(Lower(ls_col_mtrlid),'mtrlid') > 0 THEN RETURN ll_mtrlid = THIS.GetItemNumber(ll_row,ls_col_mtrlid) ls_col_pz = THIS.GetColumnName( ) arg_s_win.arg_x = THIS.X + THIS.PointerX() + parent.x arg_s_win.arg_y = THIS.Y + THIS.PointerY() + parent.y arg_s_win.arg_col = ls_col_pz arg_s_win.arg_mtrlid = ll_mtrlid ls_pz_ch = f_mtrl_pz(arg_s_win) IF ls_pz_ch = '' THEN RETURN THIS.SetItem(ll_row,ls_col_pz,ls_pz_ch) END IF end event event doubleclicked; choose case dwo.name case 'u_mtrldef_mtrlcode' parent.triggerevent('ue_f8') end choose end event event constructor;f_title_change(this) end event