$PBExportHeader$w_add_mtrlware.srw forward global type w_add_mtrlware from w_publ_base end type type cb_addware from uo_imflatbutton within w_add_mtrlware end type type dw_1 from datawindow within w_add_mtrlware end type end forward global type w_add_mtrlware from w_publ_base integer width = 2080 integer height = 1616 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 w_add_mtrlware type variables long ins_warepdbid long ins_storageid datetime ins_waredate s_mtrlware_noalloc_array INS_RT_STRU end variables event ue_f8();//用于选择明细内容,被F8[默认]\dw_1.doubleclicked调用 Long child_row Long li_statusflag,li_woodcodeflag,li_pcodeflag 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 = True s_ch_tran.b_long = -1 s_ch_tran.c_long = ins_storageid 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_mtrldef_array arg_s_mtrldef 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.u_warepdb_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] IF f_find_mtrl_by_id(S_INSCUST.mtrlid[ls_j],arg_s_mtrldef) = 1 THEN li_statusflag = arg_s_mtrldef.statusflag[1] li_pcodeflag = arg_s_mtrldef.pcodeflag[1] li_woodcodeflag = arg_s_mtrldef.woodcodeflag[1] END IF dw_1.Object.u_mtrldef_statusflag[child_row] = li_statusflag dw_1.Object.u_mtrldef_woodcodeflag[child_row] = li_woodcodeflag dw_1.Object.u_mtrldef_pcodeflag[child_row] = li_pcodeflag END IF NEXT dw_1.SetFocus() This.TriggerEvent('ue_allowedit') END IF end event event ue_f9(); Long uc_row uc_row = dw_1.GetRow() dw_1.AcceptText() IF Not IsValid(W_cust_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_cust_cuscode[dw_1.GetRow()])) OpenWithParm(W_cust_edit,s_ch_tran) //调用 s_custom S_INSCUST S_INSCUST = Message.PowerObjectParm //接受返回结构 IF S_INSCUST.cusid > 0 THEN //正常返回值则可以取以下值 dw_1.SetRedraw(False) dw_1.Object.u_warepdb_sptid[uc_row] = S_INSCUST.cusid dw_1.Object.u_cust_name[uc_row] = S_INSCUST.Name dw_1.Object.u_cust_cuscode[uc_row] = S_INSCUST.cuscode 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.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.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 if not isnull(s_tran) then // ins_warepdbid=s_tran.d_long ins_storageid=s_tran.c_long // ins_waredate=s_tran.arr_datetime[1] end if long ls_row dw_1.settransobject(sqlca) dw_1.retrieve( ) ls_row=dw_1.insertrow(0) dw_1.object.u_warepdb_storageid[ls_row]=ins_storageid 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 boolean visible = false integer x = 123 integer y = 1388 end type type cb_exit from w_publ_base`cb_exit within w_add_mtrlware integer x = 1682 integer y = 1384 end type type cb_addware from uo_imflatbutton within w_add_mtrlware integer x = 1371 integer y = 1384 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,ls_addqty Long ls_cusid String arg_msg dw_1.accepttext( ) i = dw_1.GetRow() ls_storageid = dw_1.Object.u_warepdb_storageid[i] ls_mtrlwareid = dw_1.Object.u_warepdb_mtrlwareid[i] ls_mtrlid = dw_1.Object.u_warepdb_mtrlid[i] ls_mtrlcode = dw_1.Object.u_mtrldef_mtrlcode[i] ls_plancode = dw_1.Object.u_warepdb_plancode[i] //ls_dxflag = dw_1.Object.u_warepdb_dxflag[i] ls_cusid = dw_1.Object.u_warepdb_sptid[i] ls_status = dw_1.Object.u_warepdb_status[i] ls_woodcode = dw_1.Object.u_warepdb_woodcode[i] ls_pcode = dw_1.Object.u_warepdb_pcode[i] ls_qty = dw_1.Object.u_warepdb_factqty[i] ls_addqty = dw_1.Object.u_warepdb_factaddqty[i] ls_cost = dw_1.Object.u_warepdb_cost[i] IF f_insert_0_mtrlware(ls_mtrlwareid,ls_mtrlid,ls_mtrlcode,ls_storageid,ls_cusid,ls_status,ls_woodcode,ls_pcode,ls_plancode,ls_cost,arg_msg) = 0 THEN rslt = 0 GOTO ext else dw_1.Object.u_warepdb_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.allocqty[1] = ls_addqty INS_RT_STRU.status[1] = ls_status INS_RT_STRU.woodcode[1] = ls_woodcode INS_RT_STRU.pcode[1] = ls_pcode 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 INS_RT_STRU.sptid[1] = ls_cusid INS_RT_STRU.sptcode[1] = dw_1.Object.u_cust_cuscode[i] INS_RT_STRU.sptname[1] = dw_1.Object.u_cust_name[i] ext: IF rslt = 0 THEN MessageBox('错误',arg_msg,stopsign!,OK!) END IF CLOSE(PARENT) end event type dw_1 from datawindow within w_add_mtrlware event key pbm_dwnkey event ue_dwndropdown pbm_dwndropdown integer x = 50 integer y = 40 integer width = 1993 integer height = 1300 integer taborder = 10 boolean bringtotop = true string title = "none" string dataobject = "dw_add_mtrlware" 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 Long li_statusflag,li_woodcodeflag,li_pcodeflag 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.woodcodeflag, u_mtrldef.pcodeflag INTO :ls_mtrlid,:ls_mtrlname,:ls_unit,:ls_planprice, :ls_mtrlmode,:ls_prdpackcode,:ls_packqty,:li_statusflag,:li_woodcodeflag,:li_pcodeflag FROM u_mtrldef Where ( u_mtrldef.mtrlcode = :ls_mtrlcode); IF sqlca.SQLCode = 100 THEN Parent.TriggerEvent('ue_f8') RETURN END IF This.Object.u_warepdb_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_woodcodeflag[child_row] = li_woodcodeflag This.Object.u_mtrldef_pcodeflag[child_row] = li_pcodeflag 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 ELSEIF dw_1.GetColumnName ( ) = 'u_cust_cuscode' And Key = KeyEnter! THEN String ls_code,ls_name,ls_find_code Long ls_cusid Long cnt = 0 Boolean if_find = False dw_1.AcceptText() ls_code = Upper(Trim(dw_1.Object.u_cust_cuscode[dw_1.GetRow()])) SELECT u_cust.cusid, u_cust.name, u_cust.cuscode INTO :ls_cusid,:ls_name,:ls_code FROM u_cust Where ( cuscode = :ls_code Or Name = :ls_code ); IF sqlca.SQLCode <> 0 THEN IF Pos(Trim(ls_code),'%') = 0 THEN ls_find_code = '%'+ Trim(ls_code) + '%' ELSE ls_find_code = Trim(ls_code) END IF SELECT count(*) INTO :cnt FROM u_cust Where ( cuscode Like :ls_find_code Or Name Like :ls_find_code ); IF sqlca.SQLCode <> 0 THEN Parent.TriggerEvent('ue_f9') RETURN 1 END IF IF cnt <> 1 THEN Parent.TriggerEvent('ue_f9') RETURN 1 ELSE SELECT u_cust.cusid, u_cust.cuscode, u_cust.name INTO :ls_cusid,:ls_code,:ls_name FROM u_cust Where ( cuscode Like :ls_find_code Or Name Like :ls_find_code ); IF sqlca.SQLCode <> 0 THEN Parent.TriggerEvent('ue_f9') RETURN 1 ELSE if_find = True END IF END IF ELSE if_find = True END IF IF if_find THEN dw_1.SetRedraw(False) dw_1.Object.u_warepdb_sptid[dw_1.GetRow()] = ls_cusid dw_1.Object.u_cust_cuscode[dw_1.GetRow()] = ls_code dw_1.Object.u_cust_name[dw_1.GetRow()] = ls_name dw_1.SetRedraw(True) dw_1.SetColumn("indate") 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;//IF NOT dw_edit_mode THEN RETURN String ls_col_pz,ls_col_mtrlid String ls_pz_ch String ls_col_value String ls_data_type 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( ) ls_data_type = this.Describe(ls_col_pz+".ColType") IF Pos(Lower(ls_data_type),"char") > 0 THEN ls_col_value = THIS.GetItemString(ll_row,ls_col_pz) END IF 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 arg_s_win.arg_col_value = ls_col_value 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') case 'u_cust_cuscode' parent.triggerevent('ue_f9') end choose end event event clicked;CHOOSE CASE dwo.Name CASE 'b_mtrl' PARENT.TriggerEvent('ue_f8') CASE 'b_cust' PARENT.TriggerEvent('ue_f9') END CHOOSE end event event constructor;f_title_change(this) end event