$PBExportHeader$w_storage_edit.srw forward global type w_storage_edit from w_publ_edit_index end type type dw_mx from u_dw_rbtnfilter within w_storage_edit end type type cb_addmx from uo_imflatbutton within w_storage_edit end type type cb_delmx from uo_imflatbutton within w_storage_edit end type type ddlb_1 from dropdownlistbox within w_storage_edit end type type st_2 from statictext within w_storage_edit end type end forward global type w_storage_edit from w_publ_edit_index integer width = 3246 integer height = 1984 string title = "仓库" boolean minbox = true windowtype windowtype = popup! event insert_childrow ( ) event ue_deletemx ( ) event retrieve_mx ( ) dw_mx dw_mx cb_addmx cb_addmx cb_delmx cb_delmx ddlb_1 ddlb_1 st_2 st_2 end type global w_storage_edit w_storage_edit type variables Boolean if_del = FALSE end variables forward prototypes public function integer wf_find_storageid (long arg_scid, ref long arg_storageid) public function integer wf_face_change () public subroutine wf_lock_mx () end prototypes event insert_childrow();Long li_row li_row = dw_mx.InsertRow(0) dw_mx.ScrollToRow(li_row) dw_mx.Object.sortcode[li_row] = String(li_row) dw_mx.SetColumn ('sortcode') end event event ue_deletemx();IF NOT dw_edit_mode THEN MessageBox('系统提示','非编辑状态下不可用') RETURN END IF IF MessageBox ("询问","是否确定要删除当前细目记录?",Question!,YesNo! ) = 2 THEN RETURN IF dw_mx.GetRow() = 0 THEN MessageBox('提示','请选择删除的行对象!') RETURN END IF if_del = TRUE Long ll_i dw_mx.SetRedraw(FALSE) FOR ll_i = dw_mx.RowCount() TO 1 STEP -1 IF dw_mx.IsSelected(ll_i) THEN dw_mx.DeleteRow (ll_i) END IF NEXT dw_mx.SetRedraw(TRUE) if_del = FALSE IF dw_mx.RowCount() = 0 THEN dw_mx.InsertRow(0) dw_mx.TriggerEvent (RowFocusChanged!) end event event retrieve_mx();Long ll_row ,ll_storageid ll_row = dw_index.GetRow() IF ll_row > 0 THEN ll_storageid = dw_index.Object.storageid[ll_row] dw_mx.SetRedraw(FALSE) dw_mx.Retrieve(ll_storageid) dw_mx.SetRedraw(TRUE) IF dw_mx.RowCount() > 0 THEN dw_mx.SetRow(1) dw_mx.SelectRow(0,FALSE) dw_mx.SelectRow(1,TRUE) dw_mx.ScrollToRow(1) END IF ELSE dw_mx.Reset() END IF end event public function integer wf_find_storageid (long arg_scid, ref long arg_storageid);Long ll_count ll_count = 0 arg_storageid = 0 SELECT count(*) INTO :ll_count FROM u_storage Where scid = :arg_scid AND lsflag = 1; IF sqlca.SQLCode <> 0 THEN RETURN 0 END IF IF ll_count = 1 THEN SELECT storageid INTO :arg_storageid FROM u_storage Where scid = :arg_scid AND lsflag = 1; IF sqlca.SQLCode <> 0 THEN RETURN 0 ELSE RETURN 1 END IF ELSEIF ll_count = 0 THEN RETURN 1 ELSE RETURN 0 END IF end function public function integer wf_face_change ();if dw_edit_mode then cb_func.enabled = false cb_retrieve.enabled = false cb_delet.enabled = false cb_print.enabled = false cb_choice.Enabled = FALSE sle_usual_query.Enabled = FALSE cb_edit.text = "放弃&E" cb_add.text = "保存&S" cb_edit.normalpicname = 'Undo.bmp' cb_add.normalpicname = 'Save.bmp' // cb_addmx.enabled = true // cb_delmx.enabled = true else cb_retrieve.enabled = true cb_delet.enabled = true cb_print.enabled = true cb_func.enabled = true sle_usual_query.Enabled = TRUE IF mode = 1 THEN cb_choice.Enabled = TRUE ELSE cb_choice.Enabled = FALSE END IF cb_edit.text = "修改&E" cb_add.text = "新建&S" cb_edit.normalpicname = 'OPEN.bmp' cb_add.normalpicname = 'new.bmp' // cb_addmx.enabled = FALSE // cb_delmx.enabled = FALSE end if cb_edit.of_init_draw() cb_add.of_init_draw() cb_edit.of_paint() cb_add.of_paint() cb_edit.triggerevent('ue_textchange') cb_add.triggerevent('ue_textchange') this.triggerevent('refresh_interface') wf_lock_mx() return 1 end function public subroutine wf_lock_mx ();INT LS_INT long ls_row long uc_column_int IF dw_edit_mode THEN uc_column_int=long(dw_mx.Describe("DataWindow.Column.Count")) FOR LS_INT=1 TO uc_column_int dw_mx.SetTabOrder (LS_INT,LS_INT*10 ) NEXT ELSE uc_column_int=long(dw_mx.Describe("DataWindow.Column.Count")) FOR LS_INT=1 TO uc_column_int dw_mx.SetTabOrder (LS_INT,0 ) NEXT END IF end subroutine on w_storage_edit.create int iCurrent call super::create this.dw_mx=create dw_mx this.cb_addmx=create cb_addmx this.cb_delmx=create cb_delmx this.ddlb_1=create ddlb_1 this.st_2=create st_2 iCurrent=UpperBound(this.Control) this.Control[iCurrent+1]=this.dw_mx this.Control[iCurrent+2]=this.cb_addmx this.Control[iCurrent+3]=this.cb_delmx this.Control[iCurrent+4]=this.ddlb_1 this.Control[iCurrent+5]=this.st_2 end on on w_storage_edit.destroy call super::destroy destroy(this.dw_mx) destroy(this.cb_addmx) destroy(this.cb_delmx) destroy(this.ddlb_1) destroy(this.st_2) end on event ue_usual_query_filt;call super::ue_usual_query_filt;if dw_edit_mode or keydown(keyf4!) or keydown(keyf5!) then return string obj_expr='' if trim(sle_usual_query.text)<>'' then IF POS(trim(sle_usual_query.text),'%')=0 THEN obj_expr=obj_expr+'( storagename LIKE "%'+trim(sle_usual_query.text)+'%" )' ELSE obj_expr=obj_expr+'( storagename LIKE "'+trim(sle_usual_query.text)+'" )' END IF end if dw_UC.setfilter(obj_expr) dw_UC.SetRedraw(False) dw_INDEX.SetRedraw(False) dw_UC.filter() if dw_index.rowcount()>=1 then dw_index.selectrow(0,false) dw_index.selectrow(1,true) end if dw_UC.SetRedraw(TRUE) dw_INDEX.SetRedraw(TRUE) end event event ue_usual_query_retr;call super::ue_usual_query_retr;IF dw_edit_mode OR KeyDown(keyf4!) OR KeyDown(keyf5!) THEN RETURN String ls_querystrpart = '' ls_newselect = Lower(ori_oldselect) IF Trim(sle_usual_query.Text) <> '' THEN IF Pos(Trim(sle_usual_query.Text),'%') = 0 THEN ls_querystrpart = "(storagename like '%"+Trim(sle_usual_query.Text)+"%')" ELSE ls_querystrpart = "(storagename like '"+Trim(sle_usual_query.Text)+"')" END IF IF Pos(ls_newselect," where ") <> 0 THEN ls_newselect = ls_newselect+" AND ("+ls_querystrpart+')' ELSE ls_newselect = ls_newselect+" where ("+ls_querystrpart+')' END IF END IF wf_retrieveuc(dw_uc,ls_newselect,1) //注意必须有此句 end event event ue_before_open;call super::ue_before_open;dw_mx.settransobject (sqlca) end event event retrieve_uc;Boolean cb_firstpage_enabled,cb_nextpage_enabled,cb_retrieveall_enabled Boolean cb_priorpage_enabled,cb_func_enabled,cb_retrieve_enabled cb_firstpage_enabled = cb_firstpage.Enabled cb_nextpage_enabled = cb_nextpage.Enabled cb_retrieveall_enabled = cb_retrieveall.Enabled cb_priorpage_enabled = cb_priorpage.Enabled cb_func_enabled = cb_func.Enabled cb_retrieve_enabled = cb_retrieve.Enabled cb_firstpage.Enabled = False cb_nextpage.Enabled = False cb_retrieveall.Enabled = False cb_priorpage.Enabled = False cb_func.Enabled = False cb_retrieve.Enabled = False dw_UC.SetRedraw(False) dw_index.ShareDataOff() SetPointer(HourGlass!) Int li_inuse IF ddlb_1.Text = '有效' THEN li_inuse = 1 ELSEIF ddlb_1.Text = '无效' THEN li_inuse = 0 ELSE li_inuse = -1 END IF dw_UC.Retrieve(li_inuse) SetPointer(Arrow!) dw_UC.ShareData(dw_index) dw_UC.SetRedraw(True) IF dw_index.RowCount() >= 1 THEN dw_index.SelectRow(0,False) dw_index.SelectRow(1,True) END IF cb_firstpage.Enabled = cb_firstpage_enabled cb_nextpage.Enabled = cb_nextpage_enabled cb_retrieveall.Enabled = cb_retrieveall_enabled cb_priorpage.Enabled = cb_priorpage_enabled cb_func.Enabled = cb_func_enabled cb_retrieve.Enabled = cb_retrieve_enabled end event type cb_func from w_publ_edit_index`cb_func within w_storage_edit end type type cb_exit from w_publ_edit_index`cb_exit within w_storage_edit integer x = 1851 end type type sle_usual_query from w_publ_edit_index`sle_usual_query within w_storage_edit end type type cb_nextpage from w_publ_edit_index`cb_nextpage within w_storage_edit integer x = 759 integer y = 1604 integer width = 137 end type type cb_priorpage from w_publ_edit_index`cb_priorpage within w_storage_edit integer x = 622 integer y = 1604 integer width = 137 end type type cb_firstpage from w_publ_edit_index`cb_firstpage within w_storage_edit integer x = 485 integer y = 1604 integer width = 137 end type type cb_retrieveall from w_publ_edit_index`cb_retrieveall within w_storage_edit integer x = 347 integer y = 1604 integer width = 137 end type type em_pagerowno from w_publ_edit_index`em_pagerowno within w_storage_edit integer x = 219 integer y = 1520 integer width = 215 end type type st_pagerowno from w_publ_edit_index`st_pagerowno within w_storage_edit integer x = 507 integer y = 1516 end type type st_1 from w_publ_edit_index`st_1 within w_storage_edit integer x = 0 integer width = 201 string text = "名称含" alignment alignment = right! end type type cb_add from w_publ_edit_index`cb_add within w_storage_edit end type event cb_add::clicked;Long ll_storageid String errmsg = '' Long i Long lsflag_count Long ll_scid Long lsstorageid Long ll_cnt Long ll_i Long ll_fifo //先进先出 =1 String ls_sortcode,ls_locacode IF dw_edit_mode THEN dw_uc.AcceptText() IF dw_uc.GetNextModified(0, Primary!) = 0 And & dw_mx.GetNextModified(0, Primary!) = 0 THEN MessageBox('系统提示','没有任何修改,不可以保存!') RETURN END IF dw_uc.Object.storagename[dw_uc.GetRow()] = Trim(dw_uc.Object.storagename[dw_uc.GetRow()]) IF dw_uc.Object.storagename[dw_uc.GetRow()] = '' THEN MessageBox('提示','请输入仓库名称!',Information!,OK!) dw_uc.SetFocus() dw_uc.SetColumn("storagename") RETURN END IF IF dw_uc.Object.u_storage_lsflag[dw_uc.GetRow()] = 1 THEN ll_scid = dw_uc.Object.u_storage_scid[dw_uc.GetRow()] IF wf_find_storageid(ll_scid,lsstorageid) = 0 THEN MessageBox("提示",'查询零售仓库失败!',Information!,OK!) RETURN END IF IF lsstorageid > 0 And lsstorageid <> dw_uc.Object.storageid[dw_uc.GetRow()] THEN MessageBox("提示",'一个分部只能建一个零售仓库!',Information!,OK!) RETURN END IF END IF //检查该仓库是否已有库存,有则不允许修改分部 IF dw_uc.Object.storageid[dw_uc.GetRow()] > 0 THEN ll_storageid = dw_uc.Object.storageid[dw_uc.GetRow()] SELECT scid,if_fifo INTO :ll_scid ,:ll_fifo FROM u_storage Where storageid = :ll_storageid; IF sqlca.SQLCode <> 0 THEN MessageBox('错误','查询仓库原有分部失败',StopSign!,OK!) RETURN END IF ll_cnt = 0 SELECT count(*) INTO :ll_cnt FROM u_mtrlware Where storageid = :ll_storageid And scid = :ll_scid; IF sqlca.SQLCode <> 0 THEN MessageBox('错误','查询该仓库是否有库存失败',StopSign!,OK!) RETURN END IF IF ll_cnt > 0 And ll_scid <> dw_uc.Object.u_storage_scid[dw_uc.GetRow()] THEN MessageBox('提示','该仓库已使用库存,分部不允许修改',Information!,OK!) dw_uc.Object.u_storage_scid[dw_uc.GetRow()] = ll_scid dw_uc.SetFocus() dw_uc.SetColumn("u_storage_scid") RETURN END IF //u_mtrlware 有记录不可以改 存货计算方式 IF ll_fifo = 0 And ll_cnt > 0 And dw_uc.Object.u_storage_if_fifo[dw_uc.GetRow()] =1 THEN MessageBox('提示','该仓库已使用不能修改存货计算方式!',Information!,OK!) dw_uc.SetFocus() dw_uc.SetColumn("u_storage_if_fifo") RETURN END IF IF ll_fifo = 1 And ll_cnt > 0 And dw_uc.Object.u_storage_if_fifo[dw_uc.GetRow()] =0 THEN MessageBox('提示','该仓库已使用不能修改存货计算方式!',Information!,OK!) dw_uc.SetFocus() dw_uc.SetColumn("u_storage_if_fifo") RETURN END IF END IF IF dw_uc.Object.u_storage_inwaretype[dw_uc.GetRow()] = 4 THEN IF dw_uc.Object.u_storage_plancodeFM[dw_uc.GetRow()] = '' THEN MessageBox("提示",'使用日期/时间格式的批号,请选择批号格式!',Information!,OK!) RETURN END IF ELSE dw_uc.Object.u_storage_plancodeFM[dw_uc.GetRow()] = '' END IF dw_uc.AcceptText() //////////////////////////////////////////////// // IF dw_uc.Object.storageid[dw_uc.GetRow()] = 0 THEN ll_storageid = f_sys_scidentity(0,"u_storage","storageid",errmsg,False,sqlca) IF ll_storageid <= 0 THEN MessageBox("提示",errmsg,Information!,OK!) RETURN ELSE dw_uc.Object.storageid[dw_uc.GetRow()] = ll_storageid END IF END IF /////////////////////////// // DELETE u_storage_loca Where storageid = :ll_storageid; IF sqlca.SQLCode <> 0 THEN ROLLBACK; MessageBox('Error','删除原有仓位明细失败') RETURN END IF dw_mx.AcceptText() FOR ll_i = 1 To dw_mx.RowCount() ls_sortcode = dw_mx.Object.sortcode[ll_i] ls_locacode = dw_mx.Object.locacode[ll_i] IF Trim(ls_locacode) = '' THEN CONTINUE INSERT INTO u_storage_loca (storageid, sortcode, locacode) VALUES (:ll_storageid, :ls_sortcode, :ls_locacode); IF sqlca.SQLCode <> 0 THEN ROLLBACK; MessageBox('Error','插入仓位明细失败') RETURN END IF NEXT END IF CALL Super::Clicked ddlb_1.Enabled = Not dw_edit_mode IF Not dw_edit_mode THEN Parent.TriggerEvent('retrieve_mx') END IF end event type cb_edit from w_publ_edit_index`cb_edit within w_storage_edit end type event cb_edit::clicked;call super::clicked;IF Not dw_edit_mode THEN Parent.TriggerEvent('retrieve_mx') END IF ddlb_1.Enabled = Not dw_edit_mode end event type cb_delet from w_publ_edit_index`cb_delet within w_storage_edit end type event cb_delet::clicked;long LS_id LONG LS_LONG=0 string ls_name IF DW_UC.GETROW()<=0 THEN MESSAGEBOX('提示','没有操作目标记录!',Information!,OK!) RETURN END IF LS_id=DW_UC.OBJECT.storageid[DW_UC.GETROW()] ls_name=DW_UC.OBJECT.storagename[DW_UC.GETROW()] select COUNT(*) into :LS_LONG from u_inware where u_inware.storageid=:LS_id ; if SQLCA.SQLCode<>0 and sqlca.sqlcode<>100 then rollback; MessageBox ("错误","数据查询操作失败!(请重试!)",StopSign!,OK!) return end if IF LS_LONG>0 THEN MessageBox ("提示","该资料已经使用于进仓记录,不可以删除!",Information!,OK!) RETURN END IF //通过检查,开始删除 string arg_msg = "" dw_uc.setredraw (false) dw_uc.deleterow (DW_UC.GETROW()) dw_uc.triggerevent (rowfocuschanged!) if dw_uc.update() = -1 then rollback; messagebox ("错误","删除记录操作失败!",StopSign!,ok!) return else commit; f_setsysoplog('定义资料','仓库定义资料删除,id:'+string(ls_id)+',name:'+ls_name,arg_msg,true) end if dw_uc.setredraw (true) wf_index_uc() end event type cb_choice from w_publ_edit_index`cb_choice within w_storage_edit integer x = 1701 end type type cb_cancel from w_publ_edit_index`cb_cancel within w_storage_edit end type type cbx_mlselect from w_publ_edit_index`cbx_mlselect within w_storage_edit integer x = 1477 integer y = 200 end type type cbx_allselect from w_publ_edit_index`cbx_allselect within w_storage_edit integer y = 200 integer width = 201 end type type cb_mode_itfchg_b from w_publ_edit_index`cb_mode_itfchg_b within w_storage_edit end type type cb_mode_itfchg from w_publ_edit_index`cb_mode_itfchg within w_storage_edit integer x = 1358 end type type gb_1 from w_publ_edit_index`gb_1 within w_storage_edit end type type dw_uc from w_publ_edit_index`dw_uc within w_storage_edit integer x = 1819 integer y = 296 integer width = 1394 integer height = 1596 string dataobject = "dw_storage_edit" end type type cb_retrieve from w_publ_edit_index`cb_retrieve within w_storage_edit end type type cb_print from w_publ_edit_index`cb_print within w_storage_edit integer x = 1509 end type event cb_print::clicked;call super::clicked;S_print_MSG LS_PRMSG LS_PRMSG.obj_dwNAME = 'dw_rp_storage' LS_PRMSG.SHARE_DW = DW_UC LS_PRMSG.TAG_TEXT = PARENT.Title LS_PRMSG.SETUP_FLAG = 0 LS_PRMSG.PAGECH_FLAG = 1 OpenWithParm(w_publ_preview,LS_PRMSG) end event type ln_bar from w_publ_edit_index`ln_bar within w_storage_edit end type type ln_bar2 from w_publ_edit_index`ln_bar2 within w_storage_edit end type type r_bar from w_publ_edit_index`r_bar within w_storage_edit end type type ln_1 from w_publ_edit_index`ln_1 within w_storage_edit end type type ln_2 from w_publ_edit_index`ln_2 within w_storage_edit end type type dw_index from w_publ_edit_index`dw_index within w_storage_edit integer width = 1806 integer height = 1592 string dataobject = "dw_storage_index" end type event dw_index::rowfocuschanged;call super::rowfocuschanged;IF NOT dw_edit_mode THEN PARENT.TriggerEvent('retrieve_mx') END IF end event type cb_help from w_publ_edit_index`cb_help within w_storage_edit integer x = 1358 end type type dw_mx from u_dw_rbtnfilter within w_storage_edit boolean visible = false integer x = 1819 integer y = 1216 integer width = 1170 integer height = 664 integer taborder = 20 boolean bringtotop = true string dataobject = "dw_storage_loca_edit" end type event rowfocuschanged;call super::rowfocuschanged;THIS.SelectRow(0,FALSE) THIS.SelectRow(currentrow,TRUE) THIS.SetRow(currentrow) end event event dwnkey;call super::dwnkey;IF dw_edit_mode THEN IF KeyDown(keydownarrow!) THEN IF THIS.GetRow() = THIS.RowCount() THEN PARENT.TriggerEvent('insert_childrow') END IF ELSE IF KeyDown(keyenter!) AND NOT KeyDown(keycontrol!) AND NOT KeyDown(keyshift!) THEN IF THIS.GetColumnName( ) = 'locacode' AND THIS.GetRow() = THIS.RowCount() THEN PARENT.TriggerEvent("insert_childrow") 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 IF end event type cb_addmx from uo_imflatbutton within w_storage_edit integer x = 837 integer width = 247 integer height = 164 integer taborder = 40 boolean bringtotop = true boolean enabled = false string text = "增加明细" string normalpicname = "audit.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;parent.triggerevent('insert_childrow') end event type cb_delmx from uo_imflatbutton within w_storage_edit integer x = 1083 integer width = 274 integer height = 164 integer taborder = 190 boolean bringtotop = true boolean enabled = false string text = "删除明细" string normalpicname = "caudit.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;parent.triggerevent('ue_deletemx') end event type ddlb_1 from dropdownlistbox within w_storage_edit integer x = 933 integer y = 188 integer width = 320 integer height = 300 integer taborder = 20 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 st_2 from statictext within w_storage_edit integer x = 786 integer y = 204 integer width = 142 integer height = 48 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long backcolor = 134217739 string text = "状态" boolean focusrectangle = false end type