$PBExportHeader$w_rs_emp_incheck.srw forward global type w_rs_emp_incheck from w_publ_base end type type dw_baseinfo from datawindow within w_rs_emp_incheck end type type st_1 from statictext within w_rs_emp_incheck end type type sle_idcarcode from singlelineedit within w_rs_emp_incheck end type type cb_query from uo_imflatbutton within w_rs_emp_incheck end type type cb_save from uo_imflatbutton within w_rs_emp_incheck end type type cb_cancel from uo_imflatbutton within w_rs_emp_incheck end type type st_2 from statictext within w_rs_emp_incheck end type type ln_bar from line within w_rs_emp_incheck end type type ln_bar2 from line within w_rs_emp_incheck end type type r_bar from rectangle within w_rs_emp_incheck end type end forward global type w_rs_emp_incheck from w_publ_base integer width = 2505 integer height = 2340 string title = "新员工入职" boolean minbox = false windowtype windowtype = response! event user_key ( ) dw_baseinfo dw_baseinfo st_1 st_1 sle_idcarcode sle_idcarcode cb_query cb_query cb_save cb_save cb_cancel cb_cancel st_2 st_2 ln_bar ln_bar ln_bar2 ln_bar2 r_bar r_bar end type global w_rs_emp_incheck w_rs_emp_incheck type variables Boolean newflag = FALSE s_edit_index_tran s_tran Long updatecount = 0 s_empinfo_array s_emp_array uo_empinfo u_empinfo end variables forward prototypes public subroutine wf_emp_add (integer i) public subroutine wf_facechange () public subroutine wf_faceprocess () public subroutine wf_setmod (integer mode) public function integer wf_idcardcheck (string cardcode, ref string arg_msg) end prototypes public subroutine wf_emp_add (integer i); s_emp_array.empid[i]=dw_baseinfo.object.empid[dw_baseinfo.getrow()] s_emp_array.empcode[i]=dw_baseinfo.object.empcode[dw_baseinfo.getrow()] s_emp_array.empname[i]=dw_baseinfo.object.empname[dw_baseinfo.getrow()] s_emp_array.sex[i]=dw_baseinfo.object.sex[dw_baseinfo.getrow()] s_emp_array.birthday[i]=dw_baseinfo.object.birthday[dw_baseinfo.getrow()] s_emp_array.idcard[i]=dw_baseinfo.object.idcard[dw_baseinfo.getrow()] s_emp_array.homeplace[i]=dw_baseinfo.object.homeplace[dw_baseinfo.getrow()] s_emp_array.stature[i]=dw_baseinfo.object.stature[dw_baseinfo.getrow()] s_emp_array.diploma[i]=dw_baseinfo.object.diploma[dw_baseinfo.getrow()] s_emp_array.hometel[i]=dw_baseinfo.object.hometel[dw_baseinfo.getrow()] s_emp_array.postcode[i]=dw_baseinfo.object.postcode[dw_baseinfo.getrow()] s_emp_array.handtel[i]=dw_baseinfo.object.handtel[dw_baseinfo.getrow()] s_emp_array.address[i]=dw_baseinfo.object.address[dw_baseinfo.getrow()] s_emp_array.joindate[i]=dw_baseinfo.object.joindate[dw_baseinfo.getrow()] s_emp_array.duty[i]=dw_baseinfo.object.duty[dw_baseinfo.getrow()] s_emp_array.wrktpye[i]=dw_baseinfo.object.wrktpye[dw_baseinfo.getrow()] s_emp_array.deptid[i]=dw_baseinfo.object.deptid[dw_baseinfo.getrow()] s_emp_array.wrkgrpid[i]=dw_baseinfo.object.wrkgrpid[dw_baseinfo.getrow()] s_emp_array.officetel[i]=dw_baseinfo.object.officetel[dw_baseinfo.getrow()] s_emp_array.cardcode[i]=dw_baseinfo.object.cardcode[dw_baseinfo.getrow()] s_emp_array.bedcode[i]=dw_baseinfo.object.bedcode[dw_baseinfo.getrow()] s_emp_array.wage[i]=dw_baseinfo.object.wage[dw_baseinfo.getrow()] s_emp_array.bankcode[i]=dw_baseinfo.object.bankcode[dw_baseinfo.getrow()] s_emp_array.language[i]=dw_baseinfo.object.language[dw_baseinfo.getrow()] s_emp_array.introducer[i]=dw_baseinfo.object.introducer[dw_baseinfo.getrow()] s_emp_array.dscrp[i]=dw_baseinfo.object.dscrp[dw_baseinfo.getrow()] s_emp_array.opdate[i]=dw_baseinfo.object.opdate[dw_baseinfo.getrow()] s_emp_array.opemp[i]=dw_baseinfo.object.opemp[dw_baseinfo.getrow()] s_emp_array.status[i]=dw_baseinfo.object.status[dw_baseinfo.getrow()] end subroutine public subroutine wf_facechange ();cb_save.enabled= dw_edit_mode cb_cancel.enabled= dw_edit_mode sle_idcarcode.enabled= not dw_edit_mode cb_query.enabled= not dw_edit_mode cb_exit.enabled= not dw_edit_mode end subroutine public subroutine wf_faceprocess ();dw_baseinfo.reset() dw_baseinfo.insertrow(0) sle_idcarcode.text='' sle_idcarcode.setfocus() end subroutine public subroutine wf_setmod (integer mode);int baseinfo_ccount,i baseinfo_ccount=32 dw_baseinfo.setredraw(false) for i=1 to baseinfo_ccount dw_baseinfo.settaborder(dw_baseinfo.Describe("#"+string(i)+ ".name"),i*10*mode) next dw_baseinfo.setredraw(true) end subroutine public function integer wf_idcardcheck (string cardcode, ref string arg_msg);Int codelen,rslt = 1 String ls_year,idcardcode,ls_date IF Trim(sle_idcarcode.Text) = '' THEN rslt = 1 GOTO ext END IF codelen = Len(cardcode) IF codelen <> 15 AND codelen <> 18 THEN rslt = 0 arg_msg = '身份证号长度不正确!' GOTO ext END IF CHOOSE CASE codelen CASE 15 ls_year = Mid(cardcode,7,2) IF Mid(ls_year,1,1) = '0' THEN ls_year = '20'+ls_year ELSE ls_year = '19'+ls_year END IF ls_date = ls_year+'/'+Mid(cardcode,9,2)+'/'+Mid(cardcode,11,2) IF NOT IsDate(ls_date) THEN arg_msg = '身分证号中出现非法出生年月。' rslt = 0 GOTO ext END IF CASE 18 ls_year = Mid(cardcode,7,4) ls_date = ls_year+'/'+Mid(cardcode,11,2)+'/'+Mid(cardcode,13,2) IF NOT IsDate(ls_date) THEN arg_msg = '身分证号中出现非法出生年月。' rslt = 0 GOTO ext END IF END CHOOSE ext: RETURN(rslt) end function on w_rs_emp_incheck.create int iCurrent call super::create this.dw_baseinfo=create dw_baseinfo this.st_1=create st_1 this.sle_idcarcode=create sle_idcarcode this.cb_query=create cb_query this.cb_save=create cb_save this.cb_cancel=create cb_cancel this.st_2=create st_2 this.ln_bar=create ln_bar this.ln_bar2=create ln_bar2 this.r_bar=create r_bar iCurrent=UpperBound(this.Control) this.Control[iCurrent+1]=this.dw_baseinfo this.Control[iCurrent+2]=this.st_1 this.Control[iCurrent+3]=this.sle_idcarcode this.Control[iCurrent+4]=this.cb_query this.Control[iCurrent+5]=this.cb_save this.Control[iCurrent+6]=this.cb_cancel this.Control[iCurrent+7]=this.st_2 this.Control[iCurrent+8]=this.ln_bar this.Control[iCurrent+9]=this.ln_bar2 this.Control[iCurrent+10]=this.r_bar end on on w_rs_emp_incheck.destroy call super::destroy destroy(this.dw_baseinfo) destroy(this.st_1) destroy(this.sle_idcarcode) destroy(this.cb_query) destroy(this.cb_save) destroy(this.cb_cancel) destroy(this.st_2) destroy(this.ln_bar) destroy(this.ln_bar2) destroy(this.r_bar) end on event close;call super::close;DESTROY u_empinfo closewithreturn(this,s_emp_array) end event event key;call super::key;this.triggerevent('userkey') end event event open;call super::open;dw_baseinfo.settransobject(sqlca) datawindowchild childdw dw_baseinfo.SetTransObject (sqlca) dw_baseinfo.getchild("scid",childdw) childdw.SetTransObject (sqlca) childdw.retrieve(sys_user_scid) dw_baseinfo.insertrow(0) u_empinfo=create uo_empinfo wf_facechange() end event event resize;call super::resize;ln_bar.endx = this.width ln_bar2.endx = this.width r_bar.width = this.width end event type cb_func from w_publ_base`cb_func within w_rs_emp_incheck boolean visible = false integer x = 2181 integer width = 315 integer taborder = 50 boolean enabled = false end type type cb_exit from w_publ_base`cb_exit within w_rs_emp_incheck integer x = 1742 integer y = 4 integer width = 151 integer height = 172 integer taborder = 20 integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type type dw_baseinfo from datawindow within w_rs_emp_incheck event dwnkey pbm_dwnkey integer y = 184 integer width = 2469 integer height = 2064 integer taborder = 70 boolean bringtotop = true string title = "none" string dataobject = "dw_rs_empinfo_incheck" boolean livescroll = true borderstyle borderstyle = stylelowered! end type event dwnkey;parent.triggerevent('userkey') If key = KeyEnter! Then // keybd_event ( 9, 0, 0 , 0 ) // 按下tab keybd_event ( 9, 0, 2, 0 ) // 释放tab Return 1 End If end event type st_1 from statictext within w_rs_emp_incheck integer x = 27 integer y = 64 integer width = 480 integer height = 48 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 long backcolor = 134217739 string text = "身份证或离职编号:" boolean focusrectangle = false end type event constructor;this.backcolor = 14215660 end event type sle_idcarcode from singlelineedit within w_rs_emp_incheck event keydown pbm_keydown integer x = 475 integer y = 40 integer width = 681 integer height = 96 integer taborder = 10 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 integer limit = 18 borderstyle borderstyle = stylelowered! end type event keydown;If key = KeyEnter! Then cb_query.TriggerEvent(clicked!) end event type cb_query from uo_imflatbutton within w_rs_emp_incheck integer x = 1166 integer y = 4 integer width = 192 integer height = 172 integer taborder = 60 boolean bringtotop = true string text = "查询&Q" string normalpicname = "find.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;Int Findcount = 0,ls_newrow String errmsg String ls_idcarcode, ls_empcode s_idcard_change s_idcard //if wf_idcardcheck(trim(sle_idcarcode.text),errmsg)=0 then // Messagebox('提示',errmsg,information!,OK!) // return //end if ls_idcarcode = Trim(sle_idcarcode.Text) IF ls_idcarcode <> '' THEN Findcount = dw_baseinfo.Retrieve(ls_idcarcode) END IF //IF Trim(sle_idcarcode.Text) <> '' THEN Findcount = dw_baseinfo.Retrieve(Trim(sle_idcarcode.Text)) dw_baseinfo.Object.sex.Protect = ('' <> Trim(sle_idcarcode.Text)) dw_baseinfo.Object.birthday.Protect = ('' <> Trim(sle_idcarcode.Text)) dw_baseinfo.Object.idcard.Protect = ('' <> Trim(sle_idcarcode.Text)) IF Findcount = 0 THEN IF MessageBox("询问", '不存在该人员资料,是否添加?', Exclamation!, YESNO!, 1) = 1 THEN dw_baseinfo.SetRedraw(False) WF_setmod(1) newflag = True dw_baseinfo.Reset() ls_newrow = dw_baseinfo.InsertRow(0) dw_baseinfo.SetFocus() dw_baseinfo.SetColumn('scid') dw_baseinfo.Object.idcard[dw_baseinfo.GetRow()] = Trim(sle_idcarcode.Text) f_idcard(Trim(sle_idcarcode.Text),s_idcard) dw_baseinfo.Object.birthday[dw_baseinfo.GetRow()] = s_idcard.birthday dw_baseinfo.Object.sex[dw_baseinfo.GetRow()] = s_idcard.sex dw_baseinfo.Object.homeplace[dw_baseinfo.GetRow()] = s_idcard.homeplace // IF Len(Trim(sle_idcarcode.Text)) = 15 THEN // f_idcard_process(Trim(sle_idcarcode.Text),s_idcard,1) // dw_baseinfo.Object.birthday[dw_baseinfo.GetRow()] = s_idcard.birthday // dw_baseinfo.Object.sex[dw_baseinfo.GetRow()] = s_idcard.sex // END IF // IF Len(Trim(sle_idcarcode.Text)) = 18 THEN // f_idcard_process(Trim(sle_idcarcode.Text),s_idcard,0) // dw_baseinfo.Object.birthday[dw_baseinfo.GetRow()] = s_idcard.birthday // dw_baseinfo.Object.sex[dw_baseinfo.GetRow()] = s_idcard.sex // END IF dw_baseinfo.SetRedraw(True) dw_edit_mode = Not dw_edit_mode wf_facechange() END IF ELSE IF Findcount = 1 THEN IF dw_baseinfo.Object.status[dw_baseinfo.GetRow()] = 1 THEN MessageBox('提示','该人员的状态为在职,不须进行入职!',information!,OK!) RETURN END IF IF MessageBox("询问", '该人员已存在资料,是否进行恢职及资料修改?', Exclamation!, YESNO!, 2) = 1 THEN ls_empcode = dw_baseinfo.Object.empcode[dw_baseinfo.GetRow()] WF_setmod(1) IF ls_idcarcode = ls_empcode THEN ELSE f_idcard(ls_idcarcode,s_idcard) dw_baseinfo.Object.birthday[dw_baseinfo.GetRow()] = s_idcard.birthday dw_baseinfo.Object.sex[dw_baseinfo.GetRow()] = s_idcard.sex dw_baseinfo.Object.homeplace[dw_baseinfo.GetRow()] = s_idcard.homeplace // IF Len(Trim(sle_idcarcode.Text)) = 15 THEN // f_idcard_process(Trim(sle_idcarcode.Text),s_idcard,1) // dw_baseinfo.Object.birthday[dw_baseinfo.GetRow()] = s_idcard.birthday // dw_baseinfo.Object.sex[dw_baseinfo.GetRow()] = s_idcard.sex // END IF // IF Len(Trim(sle_idcarcode.Text)) = 18 THEN // f_idcard_process(Trim(sle_idcarcode.Text),s_idcard,0) // dw_baseinfo.Object.birthday[dw_baseinfo.GetRow()] = s_idcard.birthday // dw_baseinfo.Object.sex[dw_baseinfo.GetRow()] = s_idcard.sex // END IF END IF dw_baseinfo.SetFocus() dw_baseinfo.SetColumn('Empcode') newflag = False dw_edit_mode = Not dw_edit_mode wf_facechange() END IF ELSE MessageBox("提示", '找到'+String(Findcount)+'条相同的记录,请进行核对。',information!,OK!) END IF END IF end event type cb_save from uo_imflatbutton within w_rs_emp_incheck integer x = 1358 integer y = 4 integer width = 192 integer height = 172 integer taborder = 30 boolean bringtotop = true boolean enabled = false string text = "入职&S" string normalpicname = "save.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;Long ls_newid,rslt = 1,cnt = 0,ls_empid String errmsg,ls_empcode dw_baseinfo.AcceptText() ls_empcode = dw_baseinfo.Object.empcode[dw_baseinfo.GetRow()] IF Trim(ls_empcode) = '' OR IsNull(ls_empcode) THEN MessageBox('提示','不能进行入职,请输入人员编号',information!,OK!) RETURN END IF SELECT count(*) INTO :cnt FROM u_rs_empinfo Where empcode = :ls_empcode; IF sqlca.SQLCode <> 0 AND sqlca.SQLCode <> 100 THEN MessageBox('错误','查询人员编号出错,原因:'+sqlca.SQLErrText,stopsign!,OK!) RETURN END IF IF cnt > 0 THEN MessageBox('提示','该人员编号已存在,请输入其他编号。',information!,OK!) dw_baseinfo.SetFocus() dw_baseinfo.SetColumn('Empcode') RETURN END IF IF Trim(dw_baseinfo.Object.empname[dw_baseinfo.GetRow()]) = '' OR IsNull(dw_baseinfo.Object.empname[dw_baseinfo.GetRow()]) THEN MessageBox('提示','不能进行入职,请输入人员姓名',information!,OK!) RETURN END IF IF Trim(dw_baseinfo.Object.sex[dw_baseinfo.GetRow()]) = '' OR IsNull(dw_baseinfo.Object.sex[dw_baseinfo.GetRow()]) THEN MessageBox('提示','不能进行入职,请输入性别',information!,OK!) RETURN END IF IF dw_baseinfo.Object.deptid[dw_baseinfo.GetRow()] = 0 OR IsNull(dw_baseinfo.Object.deptid[dw_baseinfo.GetRow()]) THEN MessageBox('提示','不能进行入职,请选择部门',information!,OK!) RETURN END IF //if sys_option_idcardcheck=1 then CHOOSE CASE Len(String(dw_baseinfo.Object.idcard[dw_baseinfo.GetRow()])) CASE 0 //通过 CASE 15 IF dw_baseinfo.Object.birthday[dw_baseinfo.GetRow()] <> f_idcard_to_date(Trim(dw_baseinfo.Object.idcard[dw_baseinfo.GetRow()]),1) THEN MessageBox('提示','身份证号的出生日期与出生日期不对应,请核对。',information!,OK!) RETURN END IF CASE 18 IF dw_baseinfo.Object.birthday[dw_baseinfo.GetRow()] <> f_idcard_to_date(Trim(dw_baseinfo.Object.idcard[dw_baseinfo.GetRow()]),2) THEN MessageBox('提示','身份证号的出生日期与出生日期不对应,请核对。',information!,OK!) RETURN END IF CASE ELSE MessageBox('提示','身份证长度不合法。',information!,OK!) RETURN END CHOOSE //if trim(dw_baseinfo.object.idcard[dw_baseinfo.getrow()])='' or isnull(dw_baseinfo.object.idcard[dw_baseinfo.getrow()]) then // Messagebox('系统提示','不能进行入职,请输入身份证号码') // return //end if //end if //yyx0129 //if trim(dw_baseinfo.object.duty[dw_baseinfo.getrow()])='' then // Messagebox('系统提示','请选择人员职务') // return //end if ///// IF newflag THEN ls_newid = f_sys_scidentity(0,"u_rs_empinfo","empid",errmsg,FALSE,sqlca) IF ls_newid <= 0 THEN MessageBox("错误",errmsg,stopsign!,OK!) RETURN ELSE dw_baseinfo.Object.empid[dw_baseinfo.GetRow()] = ls_newid ls_empid = ls_newid END IF ELSE ls_empid = dw_baseinfo.Object.empid[dw_baseinfo.GetRow()] END IF dw_baseinfo.Object.status[dw_baseinfo.GetRow()] = 1 dw_baseinfo.AcceptText() Long ll_departmentid String ls_deptype,lls_handtype if dw_baseinfo.getrow()>0 then ll_departmentid = dw_baseinfo.Object.deptid[dw_baseinfo.GetRow()] end if IF ll_departmentid > 0 THEN SELECT departmentname,handtype INTO :ls_deptype,:lls_handtype FROM cw_department Where departmentid = :ll_departmentid; IF sqlca.SQLCode <> 0 THEN ls_deptype = '' lls_handtype = '' END IF END IF dw_baseinfo.Object.deptype[dw_baseinfo.GetRow()] = ls_deptype dw_baseinfo.Object.handtype[dw_baseinfo.GetRow()] = lls_handtype IF dw_baseinfo.Update(TRUE,FALSE) = -1 THEN errmsg = sqlca.SQLErrText rslt = 0 ROLLBACK; MessageBox('错误','更新人员基本资料出错!'+errmsg,stopsign!,OK!) RETURN END IF Long ls_mvoeid String arg_job arg_job = dw_baseinfo.Object.duty[dw_baseinfo.GetRow()] ls_mvoeid = f_sys_scidentity(0,"u_rs_moverecord","moveid",errmsg,FALSE,sqlca) IF ls_mvoeid < 0 THEN MessageBox("错误",errmsg,stopsign!,OK!) rslt = 0 ROLLBACK; RETURN ELSE INSERT INTO u_rs_moverecord (moveid, empid, Movedate, Movetype, cause, Sjob, Djob, sdept, Ddept, Filecode, opdate, Opemp) VALUES (:ls_mvoeid, :ls_empid, getdate(), 0, '', :arg_job, :arg_job, :ls_deptype, :ll_departmentid, '', getdate(), :publ_operator); IF sqlca.SQLCode <> 0 THEN rslt = 0 MessageBox('错误','插入调动资料失败'+sqlca.SQLErrText,stopsign!,OK!) ROLLBACK; RETURN END IF END IF IF rslt = 1 THEN COMMIT; MessageBox('提示','入职成功。',information!,OK!) dw_baseinfo.ResetUpdate() UPDATECOUNT++ wf_emp_add(UPDATECOUNT) END IF dw_edit_mode = NOT dw_edit_mode wf_facechange() wf_setmod(0) ////入职登记及其他信息 //if cbx_otherinfo.checked then // s_tran.if_retrieve_all=true //是否一次RETRIEVE所有行 // s_tran.work_mode=0 //0-单纯编辑模式, 1-选择模式 // s_tran.arg_pkid=0 //目标定位PKID (备用) // s_tran.arg_string_code='' //查询列部分内容,用于初步筛选 // s_tran.if_select_all=false // s_tran.if_select_any=false // s_tran.b_long=1 //入职登记及其他信息 // s_tran.b_string=trim(sle_idcarcode.text) // if IsValid(w_rs_empinfo) then // wf_faceprocess() // cb_exit.TriggerEvent(clicked!) //// else //// Openwithparm(w_rs_empinfo,s_tran) // end if //else wf_faceprocess() //end if end event type cb_cancel from uo_imflatbutton within w_rs_emp_incheck integer x = 1550 integer y = 4 integer width = 192 integer height = 172 integer taborder = 40 boolean bringtotop = true boolean enabled = false string text = "放弃&E" string normalpicname = "undo.bmp" integer picsize = 16 toolbaralignment pic_align = alignattop! boolean border = false end type event clicked;call super::clicked;dw_edit_mode= not dw_edit_mode wf_facechange() wf_setmod(0) wf_faceprocess() end event type st_2 from statictext within w_rs_emp_incheck integer x = 2066 integer y = 36 integer width = 398 integer height = 100 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 255 long backcolor = 67108864 string text = "提示:不输入身份证的直接回车" boolean focusrectangle = false end type event constructor;this.backcolor = 14215660 end event type ln_bar from line within w_rs_emp_incheck long linecolor = 268435456 integer linethickness = 4 integer beginy = 176 integer endx = 2478 integer endy = 176 end type type ln_bar2 from line within w_rs_emp_incheck long linecolor = 16777215 integer linethickness = 4 integer beginy = 180 integer endx = 2478 integer endy = 180 end type type r_bar from rectangle within w_rs_emp_incheck long linecolor = 16777215 long fillcolor = 1073741824 integer x = 2048 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