$PBExportHeader$uo_empinfo.sru forward global type uo_empinfo from nonvisualobject end type end forward global type uo_empinfo from nonvisualobject end type global uo_empinfo uo_empinfo type variables long uo_empid int uo_option_emp_audit end variables forward prototypes public function integer uof_add_empinfo (s_empinfo arg_s_empinfo, string arg_opemp, boolean arg_ifcommit, ref string arg_msg) public function integer uof_del_leftemp (long arg_empid, ref string arg_msg, boolean arg_ifcommit) public function integer uof_del_empinfo (long arg_empid, ref string arg_msg, boolean arg_ifcommit) public function integer uof_add_train (s_train arg_s_train, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer uof_add_record (s_record arg_s_record, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer uof_del_train (long arg_trainid, long arg_empid, ref string arg_msg, boolean arg_ifcommit) public function integer uof_del_record (long arg_mxid, long arg_empid, ref string arg_msg, boolean arg_ifcommit) public function integer uof_move (integer arg_moveflag, s_moverecord arg_s_moverecord, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer uof_add_contract (s_contract arg_s_contract, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer uof_del_contract (long arg_contractid, long arg_empid, ref string arg_msg, boolean arg_ifcommit) public function integer uof_audit_emp (long arg_empid, ref string arg_msg, boolean arg_ifcommit) public function integer uof_caudit_emp (long arg_empid, ref string arg_msg, boolean arg_ifcommit) public function integer uof_add_empmtrl_ly (long arg_empid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_addqty, decimal arg_price, boolean arg_ifcommit, ref string arg_msg) public function integer uof_add_empmtrl_gh (long arg_empid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_addqty, decimal arg_price, boolean arg_ifcommit, ref string arg_msg) public function integer uof_add_emptake (long arg_empid, long arg_relid, long arg_moneyid, string arg_relcode, datetime arg_takedate, decimal arg_amt, string arg_dscrp, integer arg_taketype, boolean arg_ifcommit, ref string arg_msg) public function integer uof_del_emptake (long arg_empid, long arg_relid, long arg_moneyid, string arg_relcode, integer arg_taketype, boolean arg_ifcommit, ref string arg_msg) public function integer uof_add_insure (s_insure arg_s_insure, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer uof_add_idcard (s_idcard arg_s_idcard, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer uof_del_insure (long arg_insureid, long arg_empid, ref string arg_msg, boolean arg_ifcommit) public function integer uof_del_idcard (long arg_mxid, long arg_empid, ref string arg_msg, boolean arg_ifcommit) public function integer uof_audit_contract (long arg_empid, long arg_contractid, ref string arg_msg, boolean arg_ifcommit) public function integer uof_caudit_contract (long arg_empid, long arg_contractid, ref string arg_msg, boolean arg_ifcommit) public function integer uof_add_item (s_item_cust_spt arg_s_item, ref string arg_msg, boolean arg_ifcommit) public function integer uof_add_emppay (long arg_empid, long arg_relid, long arg_moneyid, string arg_relcode, datetime arg_paydate, decimal arg_amt, string arg_dscrp, integer arg_paytype, boolean arg_ifcommit, ref string arg_msg) public function integer uof_del_emppay (long arg_empid, long arg_relid, long arg_moneyid, string arg_relcode, integer arg_paytype, boolean arg_ifcommit, ref string arg_msg) end prototypes public function integer uof_add_empinfo (s_empinfo arg_s_empinfo, string arg_opemp, boolean arg_ifcommit, ref string arg_msg);Int rslt = 1 Long ll_new_empid DateTime server_dt String ls_deptype,ls_handtype Long cnt = 0 IF IsNull(arg_s_empinfo.scid) THEN arg_s_empinfo.scid = 0 IF IsNull(arg_s_empinfo.empid) THEN arg_s_empinfo.empid = 0 IF IsNull(arg_s_empinfo.empcode) THEN arg_s_empinfo.empcode = '' IF IsNull(arg_s_empinfo.empname) THEN arg_s_empinfo.empname = '' IF IsNull(arg_s_empinfo.sex) THEN arg_s_empinfo.sex = '' IF IsNull(arg_s_empinfo.idcard) THEN arg_s_empinfo.idcard = '' IF IsNull(arg_s_empinfo.Homeplace) THEN arg_s_empinfo.Homeplace = '' IF IsNull(arg_s_empinfo.stature) THEN arg_s_empinfo.stature = 0 IF IsNull(arg_s_empinfo.diploma) THEN arg_s_empinfo.diploma = '' IF IsNull(arg_s_empinfo.hometel) THEN arg_s_empinfo.hometel = '' IF IsNull(arg_s_empinfo.handtel) THEN arg_s_empinfo.handtel = '' IF IsNull(arg_s_empinfo.Address) THEN arg_s_empinfo.Address = '' IF IsNull(arg_s_empinfo.Postcode) THEN arg_s_empinfo.Postcode = '' IF IsNull(arg_s_empinfo.Duty) THEN arg_s_empinfo.Duty = '' IF IsNull(arg_s_empinfo.wrktpye) THEN arg_s_empinfo.wrktpye = '' IF IsNull(arg_s_empinfo.deptid) THEN arg_s_empinfo.deptid = 0 IF IsNull(arg_s_empinfo.officetel) THEN arg_s_empinfo.officetel = '' IF IsNull(arg_s_empinfo.Cardcode) THEN arg_s_empinfo.Cardcode = '' IF IsNull(arg_s_empinfo.Bedcode) THEN arg_s_empinfo.Bedcode = '' IF IsNull(arg_s_empinfo.wage) THEN arg_s_empinfo.wage = 0 IF IsNull(arg_s_empinfo.Bankcode) THEN arg_s_empinfo.Bankcode = '' IF IsNull(arg_s_empinfo.Language) THEN arg_s_empinfo.Language = '' IF IsNull(arg_s_empinfo.introducer) THEN arg_s_empinfo.introducer = '' IF IsNull(arg_s_empinfo.dscrp) THEN arg_s_empinfo.dscrp = '' IF IsNull(arg_s_empinfo.jobtype) THEN arg_s_empinfo.jobtype = 0 IF IsNull(arg_s_empinfo.jobid) THEN arg_s_empinfo.jobid = 0 IF IsNull(arg_s_empinfo.hourwage) THEN arg_s_empinfo.hourwage = 0 IF IsNull(arg_s_empinfo.status) THEN arg_s_empinfo.status = 1 IF IsNull(arg_s_empinfo.bankamt) THEN arg_s_empinfo.bankamt = 0 IF IsNull(arg_s_empinfo.pempid) THEN arg_s_empinfo.pempid = 0 IF IsNull(arg_s_empinfo.nation) THEN arg_s_empinfo.nation = '' IF IsNull(arg_s_empinfo.likestr) THEN arg_s_empinfo.likestr = '' IF IsNull(arg_s_empinfo.specialty) THEN arg_s_empinfo.specialty = '' IF IsNull(arg_s_empinfo.computergrade) THEN arg_s_empinfo.computergrade = '' IF IsNull(arg_s_empinfo.health) THEN arg_s_empinfo.health = '' IF IsNull(arg_s_empinfo.ifmarry) THEN arg_s_empinfo.ifmarry = 0 IF IsNull(arg_s_empinfo.gztype) THEN arg_s_empinfo.gztype = 0 IF IsNull(arg_s_empinfo.insurecode) THEN arg_s_empinfo.insurecode = '' IF IsNull(arg_s_empinfo.contractcode) THEN arg_s_empinfo.contractcode = '' IF IsNull(arg_s_empinfo.DayMaxExpend) THEN arg_s_empinfo.DayMaxExpend = 0 IF IsNull(arg_s_empinfo.MonthMaxExpend) THEN arg_s_empinfo.MonthMaxExpend = 0 IF arg_s_empinfo.empname = '' THEN rslt = 0 arg_msg = "姓名不能为空" GOTO ext END IF IF arg_s_empinfo.empcode = '' THEN rslt = 0 arg_msg = "工号不能为空" GOTO ext END IF SELECT count(*) INTO :cnt FROM u_rs_empinfo WHERE Empcode = :arg_s_empinfo.Empcode And empid <> :arg_s_empinfo.empid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询工号失败' GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = '员工编号重复,请重新输入另一个编号' GOTO ext END IF IF arg_s_empinfo.sex = '' THEN rslt = 0 arg_msg = '性别不能为空,请选择' GOTO ext END IF IF arg_s_empinfo.wrktpye = '' THEN rslt = 0 arg_msg = '工种不能为空,请选择' GOTO ext END IF s_idcard_change s_idcard CHOOSE CASE Len(arg_s_empinfo.idcard) CASE 0 //通过 CASE 15,18 f_idcard(arg_s_empinfo.idcard,s_idcard) IF arg_s_empinfo.birthday <> s_idcard.birthday THEN arg_msg = '身份证号的出生日期与出生日期不对应,请核对。' rslt = 0 GOTO ext END IF CASE ELSE arg_msg = '身份证长度不合法' rslt = 0 GOTO ext END CHOOSE IF arg_s_empinfo.Joindate <= arg_s_empinfo.birthday THEN rslt = 0 arg_msg = '出生日期不能大于入职日期' GOTO ext END IF IF arg_s_empinfo.deptid = 0 THEN arg_msg = '请选择部门' rslt = 0 GOTO ext END IF //IF arg_s_empinfo.duty = '' THEN // arg_msg = '请选择职务' // rslt = 0 // GOTO ext //END IF SELECT departmentname,handtype INTO :ls_deptype,:ls_handtype FROM cw_department Where departmentid = :arg_s_empinfo.deptid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询部门资料失败,可能部门资料不存在,请检查' rslt = 0 GOTO ext END IF IF arg_s_empinfo.jobtype <> 1 THEN arg_s_empinfo.jobid = 0 END IF IF arg_s_empinfo.pempid > 0 THEN cnt = 0 SELECT count(*) INTO :cnt FROM u_rs_empinfo Where empid = :arg_s_empinfo.pempid ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询上司资料失败,"+sqlca.SQLErrText GOTO ext END IF IF cnt = 0 THEN rslt = 0 arg_msg = "上司资料不存在" GOTO ext END IF END IF cnt = 0 SELECT count(*) INTO :cnt FROM u_user Where username = :arg_opemp ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,操作员" GOTO ext END IF IF cnt = 0 THEN rslt = 0 arg_msg = "操作员姓名未登记或已取消" GOTO ext END IF SELECT Top 1 getdate() Into :server_dt From u_user; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,日期 " GOTO ext END IF IF arg_s_empinfo.empid = 0 THEN //新建 ll_new_empid = f_sys_scidentity(0,"u_rs_empinfo","empid",arg_msg,True,id_sqlca) IF ll_new_empid <= 0 THEN rslt = 0 GOTO ext END IF INSERT INTO u_rs_empinfo ( scid, empid, Deptid, wrktpye, Empname, Empcode, Sex, Birthday, Homeplace, Stature, introducer, Language, Idcard, Joindate, diploma, hometel, officetel, Bedcode, Cardcode, handtel, Address, Postcode, Bankcode, wage, Duty, status, Dscrp, deptype, handtype, jobtype, jobid, hourwage, ondutydate, Opdate, Opemp, nation, likestr, ifmarry, specialty, computergrade, health, bankamt, gztype, insurecode, contractcode, DayMaxExpend, MonthMaxExpend, pempid) VALUES ( :arg_s_empinfo.scid, :ll_new_empid, :arg_s_empinfo.Deptid, :arg_s_empinfo.wrktpye, :arg_s_empinfo.Empname, :arg_s_empinfo.Empcode, :arg_s_empinfo.Sex, :arg_s_empinfo.Birthday, :arg_s_empinfo.Homeplace, :arg_s_empinfo.Stature, :arg_s_empinfo.introducer, :arg_s_empinfo.Language, :arg_s_empinfo.Idcard, :arg_s_empinfo.Joindate, :arg_s_empinfo.diploma, :arg_s_empinfo.hometel, :arg_s_empinfo.officetel, :arg_s_empinfo.Bedcode, :arg_s_empinfo.Cardcode, :arg_s_empinfo.handtel, :arg_s_empinfo.Address, :arg_s_empinfo.Postcode, :arg_s_empinfo.Bankcode, :arg_s_empinfo.wage, :arg_s_empinfo.Duty, :arg_s_empinfo.status, :arg_s_empinfo.Dscrp, :ls_deptype, :ls_handtype, :arg_s_empinfo.jobtype, :arg_s_empinfo.jobid, :arg_s_empinfo.hourwage, :arg_s_empinfo.ondutydate, :server_dt, :arg_opemp, :arg_s_empinfo.nation, :arg_s_empinfo.likestr, :arg_s_empinfo.ifmarry, :arg_s_empinfo.specialty, :arg_s_empinfo.computergrade, :arg_s_empinfo.health, :arg_s_empinfo.bankamt, :arg_s_empinfo.gztype, :arg_s_empinfo.insurecode, :arg_s_empinfo.contractcode, :arg_s_empinfo.DayMaxExpend, :arg_s_empinfo.MonthMaxExpend, :arg_s_empinfo.pempid); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致插入操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF uo_empid = ll_new_empid ELSE UPDATE u_rs_empinfo SET scid = :arg_s_empinfo.scid, Deptid = :arg_s_empinfo.Deptid, deptype = :ls_deptype, handtype = :ls_handtype, wrktpye = :arg_s_empinfo.wrktpye, Empname = :arg_s_empinfo.Empname, Empcode = :arg_s_empinfo.Empcode, Sex = :arg_s_empinfo.Sex, Birthday = :arg_s_empinfo.Birthday, Homeplace = :arg_s_empinfo.Homeplace, Stature = :arg_s_empinfo.Stature, introducer = :arg_s_empinfo.introducer, Language = :arg_s_empinfo.Language, Idcard = :arg_s_empinfo.Idcard, Joindate = :arg_s_empinfo.Joindate, diploma = :arg_s_empinfo.diploma, hometel = :arg_s_empinfo.hometel, officetel = :arg_s_empinfo.officetel, Bedcode = :arg_s_empinfo.Bedcode, Cardcode = :arg_s_empinfo.Cardcode, handtel = :arg_s_empinfo.handtel, Address = :arg_s_empinfo.Address, Postcode = :arg_s_empinfo.Postcode, Bankcode = :arg_s_empinfo.Bankcode, wage = :arg_s_empinfo.wage, Duty = :arg_s_empinfo.Duty, Dscrp = :arg_s_empinfo.Dscrp, status = :arg_s_empinfo.status, jobtype = :arg_s_empinfo.jobtype, jobid = :arg_s_empinfo.jobid, hourwage = :arg_s_empinfo.hourwage, ondutydate = :arg_s_empinfo.ondutydate, moddate = :server_dt, modemp = :arg_opemp, nation = :arg_s_empinfo.nation, likestr = :arg_s_empinfo.likestr, ifmarry = :arg_s_empinfo.ifmarry, specialty = :arg_s_empinfo.specialty, computergrade = :arg_s_empinfo.computergrade, health = :arg_s_empinfo.health, bankamt = :arg_s_empinfo.bankamt, gztype = :arg_s_empinfo.gztype, insurecode = :arg_s_empinfo.insurecode, contractcode = :arg_s_empinfo.contractcode, DayMaxExpend = :arg_s_empinfo.DayMaxExpend, MonthMaxExpend = :arg_s_empinfo.MonthMaxExpend, pempid = :arg_s_empinfo.pempid Where u_rs_empinfo.empid = :arg_s_empinfo.empid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致更新人员资料操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF uo_empid = arg_s_empinfo.empid END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uof_del_leftemp (long arg_empid, ref string arg_msg, boolean arg_ifcommit);//删除离职员工 Int rslt = 1 Long ls_newid Int ls_status SELECT status INTO :ls_status From u_rs_empinfo Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF ls_status <> 0 THEN arg_msg = '该员工不是离职状态,不能进行删除。' rslt = 0 GOTO ext END IF DELETE From u_gz_wage Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '删除员工相关工资表资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF DELETE From u_gz_wagemx Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '删除员工相关工资表明细资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF DELETE From u_rs_emprecord Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '删除员工相关简历资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF DELETE From u_rs_insure Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '删除员工相关社保资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF DELETE From u_rs_Train Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '删除员工相关培训资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF DELETE From u_rs_moverecord Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '删除员工相关调动资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF DELETE From u_rs_emppic Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '删除员工相关相片资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF DELETE From u_rs_empinfo Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '删除员工基本资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; END IF IF rslt = 1 And arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uof_del_empinfo (long arg_empid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long cnt Long ll_status IF uo_option_emp_audit = -1000 THEN rslt = 0 arg_msg = '选项:[221]员工资料需要审核,读取初始默认值失败,操作取消!' GOTO ext END IF IF uo_option_emp_audit = 1 THEN SELECT status INTO :ll_status FROM u_rs_empinfo Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询员工相关资料出错(员工状态)' rslt = 0 GOTO ext END IF IF ll_status = 1 THEN rslt = 0 arg_msg = '员工必须先撤审后才能删除' GOTO ext END IF END IF SELECT count(*) INTO :cnt From u_gz_wagemx Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询员工相关资料出错(工资明细)' rslt = 0 GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = '该员工已在工资明细中存在,不能删除' GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt From u_gz_wage Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询员工相关资料出错(工资表)' rslt = 0 GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = '该员工已在工资表中存在,不能删除' GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt From u_gz_wage Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询员工相关资料出错(工资表)' rslt = 0 GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = '该员工已在工资表中存在,不能删除' GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt From u_gz_loanwage Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询员工相关资料出错(借支单)' rslt = 0 GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = '该员工已在借支单中存在,不能删除' GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt From u_kq_cworkmx Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询员工相关资料出错(考勤单)' rslt = 0 GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = '该员工已在考勤单中存在,不能删除' GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt From u_gz_award_punish Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询员工相关资料出错(奖罚单)' rslt = 0 GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = '该员工已在奖罚单中存在,不能删除' GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt From U_Test Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询员工相关资料出错(职位绩效考核单)' rslt = 0 GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = '该员工已在职位绩效考核单中存在,不能删除' GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt From u_sc_taskworkmx Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询员工相关资料出错(计件单)' rslt = 0 GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = '该员工已在计件单中存在,不能删除' GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt From u_sc_abnormitymx Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询员工相关资料出错(异常计件单)' rslt = 0 GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = '该员工已在异常计件单中存在,不能删除' GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt FROM u_scwg_taskwork_2 WHERE wrkGrpid = :arg_empid And billtype = 1; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询员工相关资料出错(计件单2)' rslt = 0 GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = '该员工已在计件单2中存在,不能删除' GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt From u_scwg_taskwork_money Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询员工相关资料出错(工作组计件单工资分配)' rslt = 0 GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = '该员工已在工作组计件单工资分配中存在,不能删除' GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt FROM u_outware WHERE relid = :arg_empid And billtype = 10; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询员工相关资料出错(扣费品领用单)' rslt = 0 GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = '该员工已在扣费品领用单中存在,不能删除' GOTO ext END IF DELETE From u_rs_emprecord Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '删除员工相关简历资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF DELETE From u_rs_insure Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '删除员工相关社保资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF DELETE From u_rs_Train Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '删除员工相关培训资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF DELETE From u_rs_moverecord Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '删除员工相关调动资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF DELETE From u_rs_emppic Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '删除员工相关相片资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF DELETE From u_rs_empinfo Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '删除员工基本资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uof_add_train (s_train arg_s_train, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ls_newid Int ls_status string ls_empname DateTime server_dt IF IsNull(arg_s_train.trainid) THEN arg_s_train.trainid = 0 IF IsNull(arg_s_train.empid) THEN arg_s_train.empid = 0 IF IsNull(arg_s_train.content) THEN arg_s_train.content = '' IF IsNull(arg_s_train.result) THEN arg_s_train.result = '' IF IsNull(arg_s_train.othercode) THEN arg_s_train.othercode = '' IF IsNull(arg_s_train.dscrp) THEN arg_s_train.dscrp = '' IF IsNull(arg_s_train.relid) THEN arg_s_train.relid = 0 IF IsNull(arg_s_train.relcode) THEN arg_s_train.relcode = '' SELECT status,empname INTO :ls_status,:ls_empname FROM u_rs_empinfo Where empid = :arg_s_train.empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF ls_status = 0 THEN arg_msg = '员工:'+ls_empname+' 不在职,不能进行增加培训内容' rslt = 0 GOTO ext END IF IF arg_s_train.content = '' THEN arg_msg = '请输入培训内容' rslt = 0 GOTO ext END IF IF arg_s_train.trainid = 0 THEN ls_newid = f_sys_scidentity(0,"u_rs_train","trainid",arg_msg,TRUE,id_sqlca) IF ls_newid <= 0 THEN rslt = 0 GOTO ext END IF SELECT Top 1 getdate() INTO :server_dt FROM u_user; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,日期 " GOTO ext END IF INSERT INTO u_rs_Train (Trainid, empid, Traindate, content, Result, Othercode, Dscrp, relid, relcode, Opemp, Opdate) VALUES( :ls_newid, :arg_s_train.empid, :arg_s_train.Traindate, :arg_s_train.content, :arg_s_train.Result, :arg_s_train.Othercode, :arg_s_train.Dscrp, :arg_s_train.relid, :arg_s_train.relcode, :arg_opemp, :server_dt); IF sqlca.SQLCode <> 0 THEN arg_msg = '增加培训内容失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ELSE UPDATE u_rs_Train SET Traindate = :arg_s_train.Traindate, content = :arg_s_train.content, Result = :arg_s_train.Result, Othercode = :arg_s_train.Othercode, Dscrp = :arg_s_train.Dscrp, relid = :arg_s_train.relid, relcode = :arg_s_train.relcode, moddate = :server_dt, modemp = :arg_opemp Where trainid = :arg_s_train.trainid; IF sqlca.SQLCode <> 0 THEN arg_msg = '更新培训内容失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uof_add_record (s_record arg_s_record, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ls_newid Int ls_status DateTime server_dt IF IsNull(arg_s_record.mxid) THEN arg_s_record.mxid = 0 IF IsNull(arg_s_record.empid) THEN arg_s_record.empid = 0 IF IsNull(arg_s_record.rectype) THEN arg_s_record.rectype = 0 IF IsNull(arg_s_record.techlevel) THEN arg_s_record.techlevel = '' IF IsNull(arg_s_record.cmpname) THEN arg_s_record.cmpname = '' IF IsNull(arg_s_record.reljob) THEN arg_s_record.reljob = '' IF IsNull(arg_s_record.wage) THEN arg_s_record.wage = 0 IF IsNull(arg_s_record.cause) THEN arg_s_record.cause = '' IF IsNull(arg_s_record.dscrp) THEN arg_s_record.dscrp = '' SELECT status INTO :ls_status FROM u_rs_empinfo Where empid = :arg_s_record.empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF ls_status = 0 THEN arg_msg = '该员工不在职,不能进行增加简历内容' rslt = 0 GOTO ext END IF IF arg_s_record.cmpname = '' THEN arg_msg = '请输入单位名称' rslt = 0 GOTO ext END IF IF arg_s_record.mxid = 0 THEN ls_newid = f_sys_scidentity(0,"u_rs_emprecord","mxid",arg_msg,TRUE,id_sqlca) IF ls_newid <= 0 THEN rslt = 0 GOTO ext END IF SELECT Top 1 getdate() INTO :server_dt FROM u_user; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,日期 " GOTO ext END IF INSERT INTO u_rs_emprecord (mxid, empid, Techlevel, Rectype, Cmpname, Address, Reljob, wage, Start_date, End_date, Cause, Dscrp, Opemp, Opdate) VALUES( :ls_newid, :arg_s_record.empid, :arg_s_record.Techlevel, :arg_s_record.Rectype, :arg_s_record.Cmpname, :arg_s_record.Address, :arg_s_record.Reljob, :arg_s_record.wage, :arg_s_record.Start_date, :arg_s_record.End_date, :arg_s_record.Cause, :arg_s_record.Dscrp, :arg_opemp, :server_dt); IF sqlca.SQLCode <> 0 THEN arg_msg = '增加简历内容失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ELSE UPDATE u_rs_emprecord SET Techlevel = :arg_s_record.Techlevel, Rectype = :arg_s_record.Rectype, Cmpname = :arg_s_record.Cmpname, Address = :arg_s_record.Address, Reljob = :arg_s_record.Reljob, wage = :arg_s_record.wage, Start_date = :arg_s_record.Start_date, End_date = :arg_s_record.End_date, Cause = :arg_s_record.Cause, Dscrp = :arg_s_record.Dscrp, moddate = :server_dt, modemp = :arg_opemp Where mxid = :arg_s_record.mxid; IF sqlca.SQLCode <> 0 THEN arg_msg = '更新简历内容失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uof_del_train (long arg_trainid, long arg_empid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ll_empid Int ls_status String ls_empname Long ll_relid String ls_relcode IF IsNull(arg_trainid) THEN arg_trainid = 0 SELECT u_rs_empinfo.status, u_rs_train.empid, u_rs_empinfo.empname, u_rs_train.relid, u_rs_train.relcode INTO :ls_status, :ll_empid, :ls_empname, :ll_relid, :ls_relcode FROM u_rs_empinfo,u_rs_train WHERE u_rs_empinfo.empid = u_rs_train.empid AND u_rs_train.trainid = :arg_trainid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF ll_relid > 0 THEN rslt = 0 arg_msg = '该培训资料是员工培训单:'+ls_relcode+'审核自动建立的,不能手动删除' GOTO ext END IF IF ll_empid <> arg_empid THEN arg_msg = '选择删除培训资料的员工资料不相符' rslt = 0 GOTO ext END IF IF ls_status = 0 THEN arg_msg = '员工:'+ls_empname+' 不在职,不能进行删除培训内容' rslt = 0 GOTO ext END IF DELETE FROM u_rs_train Where trainid = :arg_trainid; IF sqlca.SQLCode <> 0 THEN arg_msg = '删除培训内容失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uof_del_record (long arg_mxid, long arg_empid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ll_empid Int ls_status IF IsNull(arg_mxid) THEN arg_mxid = 0 SELECT status,u_rs_emprecord.empid INTO :ls_status,:ll_empid FROM u_rs_empinfo,u_rs_emprecord WHERE u_rs_empinfo.empid = u_rs_emprecord.empid AND u_rs_emprecord.mxid = :arg_mxid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF ll_empid <> arg_empid THEN arg_msg = '选择删除简历资料的员工资料不相符' rslt = 0 GOTO ext END IF IF ls_status = 0 THEN arg_msg = '该员工不在职,不能进行删除简历内容' rslt = 0 GOTO ext END IF DELETE FROM u_rs_emprecord Where mxid = :arg_mxid; IF sqlca.SQLCode <> 0 THEN arg_msg = '删除社保内容失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uof_move (integer arg_moveflag, s_moverecord arg_s_moverecord, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ls_newid Int ls_status String ls_empcode DateTime server_dt String ls_sdeptype,ls_shandtype String ls_ddeptype,ls_dhandtype IF IsNull(arg_s_moverecord.moveid) THEN arg_s_moverecord.moveid = 0 IF IsNull(arg_s_moverecord.empid) THEN arg_s_moverecord.empid = 0 IF IsNull(arg_s_moverecord.movetype) THEN arg_s_moverecord.movetype = 0 IF IsNull(arg_s_moverecord.cause) THEN arg_s_moverecord.cause = '' IF IsNull(arg_s_moverecord.sjob) THEN arg_s_moverecord.sjob = '' IF IsNull(arg_s_moverecord.djob) THEN arg_s_moverecord.djob = '' IF IsNull(arg_s_moverecord.sdeptid) THEN arg_s_moverecord.sdeptid = 0 IF IsNull(arg_s_moverecord.ddeptid) THEN arg_s_moverecord.ddeptid = 0 IF IsNull(arg_s_moverecord.filecode) THEN arg_s_moverecord.filecode = '' IF IsNull(arg_s_moverecord.wage) THEN arg_s_moverecord.wage = 0 IF IsNull(arg_s_moverecord.firetype) THEN arg_s_moverecord.firetype = '' IF IsNull(arg_s_moverecord.dscrp) THEN arg_s_moverecord.dscrp = '' IF IsNull(arg_s_moverecord.scid) THEN arg_s_moverecord.scid = 0 IF IsNull(arg_s_moverecord.ifBlackList) THEN arg_s_moverecord.ifBlackList = 0 IF arg_s_moverecord.moveid = 0 THEN //新建 SELECT status,empcode INTO :ls_status,:ls_empcode FROM u_rs_empinfo Where empid = :arg_s_moverecord.empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF //arg_moveflag 1-入职,0-其它 IF arg_moveflag = 0 And ls_status = 0 THEN arg_msg = '该员工不在职,不能进行操作' rslt = 0 GOTO ext END IF IF arg_s_moverecord.movetype = 1 Or arg_s_moverecord.movetype = 2 THEN IF arg_s_moverecord.sdeptid = 0 THEN arg_msg = '不存在的调出部门。' rslt = 0 GOTO ext END IF IF arg_s_moverecord.sjob = '' THEN arg_msg = '调动前职位不能为空或不存在的职位。' rslt = 0 GOTO ext END IF END IF IF arg_s_moverecord.movetype = 1 Or arg_s_moverecord.movetype = 0 THEN IF arg_s_moverecord.ddeptid = 0 THEN arg_msg = '不存在的调入部门。' rslt = 0 GOTO ext END IF IF arg_s_moverecord.djob = '' THEN arg_msg = '调动后职位不能为空或不存在的职位。' rslt = 0 GOTO ext END IF END IF IF arg_s_moverecord.sdeptid > 0 THEN SELECT departmentname,handtype INTO :ls_sdeptype,:ls_shandtype FROM cw_department Where departmentid = :arg_s_moverecord.sdeptid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询调出部门资料失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF END IF IF arg_s_moverecord.ddeptid > 0 THEN SELECT departmentname,handtype INTO :ls_ddeptype,:ls_dhandtype FROM cw_department Where departmentid = :arg_s_moverecord.ddeptid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询调入部门资料失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF END IF ls_newid = f_sys_scidentity(0,"u_rs_moverecord","moveid",arg_msg,True,id_sqlca) IF ls_newid <= 0 THEN rslt = 0 GOTO ext END IF SELECT Top 1 getdate() Into :server_dt From u_user; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,日期 " GOTO ext END IF INSERT INTO u_rs_moverecord (Moveid, empid, Movedate, Movetype, cause, Sdept, Ddept, Sdeptid, Ddeptid, Sjob, Djob, wage, Filecode, Opemp, Opdate, dscrp) VALUES(:ls_newid, :arg_s_moverecord.empid, :arg_s_moverecord.Movedate, :arg_s_moverecord.movetype, :arg_s_moverecord.cause, :ls_Sdeptype, :ls_Ddeptype, :arg_s_moverecord.Sdeptid, :arg_s_moverecord.Ddeptid, :arg_s_moverecord.sjob, :arg_s_moverecord.djob, :arg_s_moverecord.wage, :arg_s_moverecord.filecode, :arg_opemp, :server_dt, :arg_s_moverecord.dscrp); IF sqlca.SQLCode <> 0 THEN arg_msg = '操作失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF arg_s_moverecord.movetype = 1 THEN UPDATE u_rs_empinfo SET Deptid = :arg_s_moverecord.Ddeptid, deptype = :ls_ddeptype, handtype = :ls_dhandtype, duty = :arg_s_moverecord.djob, wage = :arg_s_moverecord.wage, scid = :arg_s_moverecord.scid Where empid = :arg_s_moverecord.empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '更新员工资料失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ELSEIF arg_s_moverecord.movetype = 2 THEN //离职 String ls_ordercode Long cnt = 0 SELECT count(*) INTO :cnt FROM u_rs_empinfo WHERE empcode LIKE 'LZ_'+:ls_empcode+'%' And status = 0; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询员工编号失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ls_ordercode = String(cnt+1) UPDATE u_rs_empinfo SET empcode = 'LZ'+rtrim(empcode)+'-'+:ls_ordercode, status = 0, ifBlackList = :arg_s_moverecord.ifBlackList Where empid = :arg_s_moverecord.empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '更新员工资料失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF //更新用户资料, u_user UPDATE u_user SET ifnotin = 1 , descrp = '员工离职自动禁用' Where (empid = :arg_s_moverecord.empid); IF sqlca.SQLCode <> 0 THEN arg_msg = '更新员工用户权限失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF END IF ELSE //修改 UPDATE u_rs_moverecord SET cause = :arg_s_moverecord.cause, dscrp = :arg_s_moverecord.dscrp Where moveid = :arg_s_moverecord.moveid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '更新调动记录失败,' + sqlca.SQLErrText GOTO ext END IF UPDATE u_rs_empinfo SET ifBlackList = :arg_s_moverecord.ifBlackList Where empid = :arg_s_moverecord.empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '更新员工资料失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF END IF ext: IF rslt = 0 THEN ROLLBACK; END IF IF rslt = 1 And arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uof_add_contract (s_contract arg_s_contract, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ls_newid Int ls_status DateTime server_dt IF IsNull(arg_s_contract.contractid) THEN arg_s_contract.contractid = 0 IF IsNull(arg_s_contract.empid) THEN arg_s_contract.empid = 0 IF IsNull(arg_s_contract.dscrp) THEN arg_s_contract.dscrp = '' SELECT status INTO :ls_status FROM u_rs_empinfo Where empid = :arg_s_contract.empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF ls_status = 0 THEN arg_msg = '该员工不在职,不能进行增加合同内容' rslt = 0 GOTO ext END IF IF arg_s_contract.contractid = 0 THEN ls_newid = f_sys_scidentity(0,"u_rs_contract","contractid",arg_msg,TRUE,id_sqlca) IF ls_newid <= 0 THEN rslt = 0 GOTO ext END IF SELECT Top 1 getdate() INTO :server_dt FROM u_user; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,日期 " GOTO ext END IF INSERT INTO u_rs_contract (contractid, empid, bdate, edate, Dscrp, Opemp, Opdate) VALUES( :ls_newid, :arg_s_contract.empid, :arg_s_contract.bdate, :arg_s_contract.edate, :arg_s_contract.Dscrp, :arg_opemp, :server_dt); IF sqlca.SQLCode <> 0 THEN arg_msg = '增加合同内容失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ELSE UPDATE u_rs_contract SET edate = :arg_s_contract.edate, Bdate = :arg_s_contract.Bdate, Dscrp = :arg_s_contract.Dscrp, moddate = :server_dt, modemp = :arg_opemp Where contractid = :arg_s_contract.contractid; IF sqlca.SQLCode <> 0 THEN arg_msg = '更新合同内容失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uof_del_contract (long arg_contractid, long arg_empid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ll_empid Int ls_status, li_flag IF IsNull(arg_contractid) THEN arg_contractid = 0 SELECT status,u_rs_contract.empid INTO :ls_status,:ll_empid FROM u_rs_empinfo,u_rs_contract WHERE u_rs_empinfo.empid = u_rs_contract.empid AND u_rs_contract.contractid = :arg_contractid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF ll_empid <> arg_empid THEN arg_msg = '选择删除合同资料的员工资料不相符' rslt = 0 GOTO ext END IF IF ls_status = 0 THEN arg_msg = '该员工不在职,不能进行删除社保内容' rslt = 0 GOTO ext END IF SELECT flag INTO :li_flag FROM u_rs_contract WHERE empid = :arg_empid And contractid = :arg_contractid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询员工合同审核状态失败,'+sqlca.SQLErrText GOTO ext END IF IF li_flag = 1 THEN rslt = 0 arg_msg = '员工合同已审核' GOTO ext END IF DELETE FROM u_rs_contract Where contractid = :arg_contractid; IF sqlca.SQLCode <> 0 THEN arg_msg = '删除社保内容失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uof_audit_emp (long arg_empid, ref string arg_msg, boolean arg_ifcommit);Int rslt rslt = 1 Int li_status datetime server_dt SELECT Top 1 getdate() INTO :server_dt FROM u_user; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,日期 " GOTO ext END IF SELECT status INTO :li_status FROM u_rs_empinfo Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询员工状态失败,'+sqlca.SQLErrText GOTO ext END IF IF li_status <> 3 THEN rslt = 0 arg_msg = '员工状态不是待审核,不能执行审核操作' GOTO ext END IF UPDATE u_rs_empinfo SET status = 1, auditemp = :publ_operator, auditdate = :server_dt WHERE empid = :arg_empid And status = 3 ; IF sqlca.SQLCode = 0 THEN IF sqlca.SQLNRows = 0 THEN rslt = 0 arg_msg = '员工正在审核,请稍后查询' GOTO ext END IF ELSE rslt = 0 arg_msg = '更新员工状态失败,'+sqlca.SQLErrText GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uof_caudit_emp (long arg_empid, ref string arg_msg, boolean arg_ifcommit);Int rslt rslt = 1 Int li_status datetime ld_nulldt IF uo_option_emp_audit = -1000 THEN rslt = 0 arg_msg = '选项:[221]员工资料需要审核,读取初始默认值失败,操作取消!' GOTO ext END IF setnull(ld_nulldt) IF uo_option_emp_audit = 0 THEN rslt = 0 arg_msg = '系统选项 "(221)员工资料需要审核" 已关闭,不能执行员工撤审操作' GOTO ext END IF SELECT status INTO :li_status FROM u_rs_empinfo Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询员工状态失败,'+sqlca.SQLErrText GOTO ext END IF IF li_status <> 1 THEN rslt = 0 arg_msg = '员工状态不是在职,不能执行撤审操作' GOTO ext END IF UPDATE u_rs_empinfo SET status = 3, auditemp = '', auditdate = :ld_nulldt WHERE empid = :arg_empid And status = 1 ; IF sqlca.SQLCode = 0 THEN IF sqlca.SQLNRows = 0 THEN rslt = 0 arg_msg = '员工正在撤审,请稍后查询' GOTO ext END IF ELSE rslt = 0 arg_msg = '更新员工状态失败,'+sqlca.SQLErrText GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uof_add_empmtrl_ly (long arg_empid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_addqty, decimal arg_price, boolean arg_ifcommit, ref string arg_msg);Int rslt = 1 Int li_status Decimal lde_qty, lde_billqty IF IsNull(arg_empid) THEN arg_empid = 0 IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0 IF IsNull(arg_status) THEN arg_status = '' IF IsNull(arg_woodcode) THEN arg_woodcode = '' IF IsNull(arg_pcode) THEN arg_pcode = '' IF IsNull(arg_addqty) THEN arg_addqty = 0 IF arg_addqty = 0 THEN rslt = 1 GOTO ext END IF SELECT status INTO :li_status FROM u_rs_empinfo Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF //IF li_status = 0 THEN // arg_msg = '该员工不在职,不能操作' // rslt = 0 // GOTO ext //END IF IF arg_addqty > 0 THEN UPDATE u_rs_empmtrl_ly SET qty = qty + :arg_addqty, wareamt = case qty + :arg_addqty when 0 then 0 else wareamt + :arg_addqty * :arg_price end , cost = case qty + :arg_addqty when 0 then cost else (wareamt + :arg_addqty * :arg_price) / (qty + :arg_addqty) end WHERE empid = :arg_empid AND mtrlid = :arg_mtrlid AND status = :arg_status AND woodcode = :arg_woodcode And pcode = :arg_pcode; IF sqlca.SQLCode = 0 THEN IF sqlca.SQLNRows = 0 THEN INSERT INTO u_rs_empmtrl_ly (empid, mtrlid, status, woodcode, pcode, qty, cost, wareamt) VALUES (:arg_empid, :arg_mtrlid, :arg_status, :arg_woodcode, :arg_pcode, :arg_addqty, :arg_price, :arg_price * :arg_addqty); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "插入员工物品领用信息失败,"+sqlca.SQLErrText GOTO ext END IF END IF ELSE rslt = 0 arg_msg = "更新员工物品领用信息失败,"+sqlca.SQLErrText GOTO ext END IF ELSE SELECT qty INTO :lde_qty FROM u_rs_empmtrl_ly WHERE empid = :arg_empid AND mtrlid = :arg_mtrlid AND status = :arg_status AND woodcode = :arg_woodcode And pcode = :arg_pcode; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询员工物品领用信息失败,"+sqlca.SQLErrText GOTO ext END IF SELECT sum(qty) INTO :lde_billqty FROM u_inware INNER join u_inwaremx on u_inware.inwareid = u_inwaremx.inwareid WHERE sptid = :arg_empid AND mtrlid = :arg_mtrlid AND status = :arg_status AND woodcode = :arg_woodcode AND pcode = :arg_pcode AND billtype = 28 And flag = 0; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询员工物品归还单开单未审数信息失败,"+sqlca.SQLErrText GOTO ext END IF IF Abs(arg_addqty) > lde_qty - lde_billqty THEN rslt = 0 arg_msg = "员工剩余领用物品数量只有["+String(lde_qty, '#,##0.##')+"],开单未审数["+String(lde_billqty, '#,##0.##')+"],不能撤审["+String(Abs(arg_addqty), '#,##0.##')+"]" GOTO ext END IF UPDATE u_rs_empmtrl_ly SET qty = qty + :arg_addqty, wareamt = case qty + :arg_addqty when 0 then 0 else wareamt + :arg_addqty * :arg_price end , cost = case qty + :arg_addqty when 0 then cost else (wareamt + :arg_addqty * :arg_price) / (qty + :arg_addqty) end WHERE empid = :arg_empid AND mtrlid = :arg_mtrlid AND status = :arg_status AND woodcode = :arg_woodcode And pcode = :arg_pcode; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "更新员工物品领用信息失败,"+sqlca.SQLErrText GOTO ext END IF END IF ext: IF rslt = 0 THEN ROLLBACK Using sqlca; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT Using sqlca; END IF RETURN rslt end function public function integer uof_add_empmtrl_gh (long arg_empid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_addqty, decimal arg_price, boolean arg_ifcommit, ref string arg_msg);Int rslt = 1 Int li_status Decimal lde_qty IF IsNull(arg_empid) THEN arg_empid = 0 IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0 IF IsNull(arg_status) THEN arg_status = '' IF IsNull(arg_woodcode) THEN arg_woodcode = '' IF IsNull(arg_pcode) THEN arg_pcode = '' IF IsNull(arg_addqty) THEN arg_addqty = 0 IF arg_addqty = 0 THEN rslt = 1 GOTO ext END IF SELECT status INTO :li_status FROM u_rs_empinfo Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF //IF li_status = 0 THEN // arg_msg = '该员工不在职,不能操作' // rslt = 0 // GOTO ext //END IF IF arg_addqty < 0 THEN //arg_addqty = abs(arg_addqty) UPDATE u_rs_empmtrl_ly SET qty = qty - :arg_addqty, wareamt = case qty - :arg_addqty when 0 then 0 else wareamt - :arg_addqty * :arg_price END , cost = case qty - :arg_addqty when 0 then cost else (wareamt - :arg_addqty * :arg_price) / (qty - :arg_addqty) END WHERE empid = :arg_empid AND mtrlid = :arg_mtrlid AND status = :arg_status AND woodcode = :arg_woodcode And pcode = :arg_pcode; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "更新员工物品领用信息失败,"+sqlca.SQLErrText GOTO ext END IF ELSE SELECT qty INTO :lde_qty FROM u_rs_empmtrl_ly WHERE empid = :arg_empid AND mtrlid = :arg_mtrlid AND status = :arg_status AND woodcode = :arg_woodcode And pcode = :arg_pcode; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询员工物品领用信息失败,"+sqlca.SQLErrText GOTO ext END IF IF arg_addqty > lde_qty THEN rslt = 0 arg_msg = "员工剩余领用物品数量只有["+String(lde_qty, '#,##0.##')+"],不能归还["+String(arg_addqty, '#,##0.##')+"]" GOTO ext END IF UPDATE u_rs_empmtrl_ly SET qty = qty - :arg_addqty, wareamt = case qty - :arg_addqty when 0 then 0 else wareamt - :arg_addqty * :arg_price END , cost = case qty - :arg_addqty when 0 then cost else (wareamt - :arg_addqty * :arg_price) / (qty - :arg_addqty) END WHERE empid = :arg_empid AND mtrlid = :arg_mtrlid AND status = :arg_status AND woodcode = :arg_woodcode And pcode = :arg_pcode; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "更新员工物品领用信息失败,"+sqlca.SQLErrText GOTO ext END IF END IF ext: IF rslt = 0 THEN ROLLBACK Using sqlca; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT Using sqlca; END IF RETURN rslt end function public function integer uof_add_emptake (long arg_empid, long arg_relid, long arg_moneyid, string arg_relcode, datetime arg_takedate, decimal arg_amt, string arg_dscrp, integer arg_taketype, boolean arg_ifcommit, ref string arg_msg);//==================================================================== // 事件: uo_empinfo.uof_add_emptake() //-------------------------------------------------------------------- // 描述: //-------------------------------------------------------------------- // 参数: // value long arg_empid //人员ID // value long arg_relid //单据ID // value long arg_moneyid //币种 // value string arg_relcode //单据编号 // value datetime arg_takedate //发生日期 // value decimal arg_amt //发生金额 // value string arg_dscrp //备注 // value integer arg_taketype //0:借 1:还 // value boolean arg_ifcommit // reference string arg_msg //-------------------------------------------------------------------- // 返回: integer //-------------------------------------------------------------------- // 作者: LHD 日期: 2011年10月20日 //-------------------------------------------------------------------- // Copyright (c) 2002-2018 RICHTA(TM), All rights reserved. //-------------------------------------------------------------------- // 修改历史: // //==================================================================== Int rslt = 1 Int li_status Decimal lde_Msttakeamt, lde_takeamt IF IsNull(arg_empid) THEN arg_empid = 0 IF IsNull(arg_relid) THEN arg_relid = 0 IF IsNull(arg_moneyid) THEN arg_moneyid = 0 IF IsNull(arg_relcode) THEN arg_relcode = '' IF IsNull(arg_amt) THEN arg_amt = 0 IF IsNull(arg_dscrp) THEN arg_dscrp = '' IF IsNull(arg_taketype) THEN arg_taketype = 0 IF arg_amt = 0 THEN rslt = 1 GOTO ext END IF SELECT status INTO :li_status FROM u_rs_empinfo Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF //默认 arg_amt > 0 IF arg_taketype = 0 THEN //借 lde_Msttakeamt = arg_amt lde_takeamt = 0 ELSE lde_Msttakeamt = 0 lde_takeamt = arg_amt arg_amt = 0 - arg_amt END IF UPDATE u_rs_emptake SET amt = amt + :arg_amt WHERE empid = :arg_empid And moneyid = :arg_moneyid; IF sqlca.SQLCode = 0 THEN IF sqlca.SQLNRows = 0 THEN INSERT INTO u_rs_emptake (empid, moneyid, amt) VALUES (:arg_empid, :arg_moneyid, :arg_amt); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "插入员工借/还款信息失败,"+sqlca.SQLErrText GOTO ext END IF END IF ELSE rslt = 0 arg_msg = "更新员工借/还款信息失败,"+sqlca.SQLErrText GOTO ext END IF INSERT INTO u_rs_emptakemx (empid, relid, moneyid, takedate, Msttakeamt, takeamt, dscrp, relcode, taketype) VALUES (:arg_empid, :arg_relid, :arg_moneyid, :arg_takedate, :lde_Msttakeamt, :lde_takeamt, :arg_dscrp, :arg_relcode, :arg_taketype); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "插入员工借/还款明细信息失败,"+sqlca.SQLErrText GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK Using sqlca; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT Using sqlca; END IF RETURN rslt end function public function integer uof_del_emptake (long arg_empid, long arg_relid, long arg_moneyid, string arg_relcode, integer arg_taketype, boolean arg_ifcommit, ref string arg_msg);//==================================================================== // 事件: uo_empinfo.uof_del_emptake() //-------------------------------------------------------------------- // 描述: //-------------------------------------------------------------------- // 参数: // value long arg_empid //人员ID // value long arg_relid //单据ID // value long arg_moneyid //币种 // value string arg_relcode //单据编号 // value integer arg_taketype //0:借 1:还 // value boolean arg_ifcommit // reference string arg_msg //-------------------------------------------------------------------- // 返回: integer //-------------------------------------------------------------------- // 作者: LHD 日期: 2011年10月20日 //-------------------------------------------------------------------- // Copyright (c) 2002-2018 RICHTA(TM), All rights reserved. //-------------------------------------------------------------------- // 修改历史: // //==================================================================== Int rslt = 1 Int li_status, li_cnt dec lde_amt IF IsNull(arg_empid) THEN arg_empid = 0 IF IsNull(arg_relid) THEN arg_relid = 0 IF IsNull(arg_moneyid) THEN arg_moneyid = 0 IF IsNull(arg_relcode) THEN arg_relcode = '' IF IsNull(arg_taketype) THEN arg_taketype = 0 SELECT status INTO :li_status FROM u_rs_empinfo Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF SELECT count(*) INTO :li_cnt FROM u_rs_emptakemx WHERE empid = :arg_empid AND relid = :arg_relid AND relcode = :arg_relcode And moneyid = :arg_moneyid; IF sqlca.SQLCode <> 0 THEN arg_msg = "查询员工借/还款明细信息失败,"+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF li_cnt = 0 THEN arg_msg = "没有对应的员工借/还款明细信息" rslt = 0 GOTO ext END IF SELECT case :arg_taketype when 0 then msttakeamt else takeamt end INTO :lde_amt FROM u_rs_emptakemx WHERE empid = :arg_empid AND relid = :arg_relid AND relcode = :arg_relcode And moneyid = :arg_moneyid; IF sqlca.SQLCode <> 0 THEN arg_msg = "查询员工借/还款明细信息失败,"+sqlca.SQLErrText rslt = 0 GOTO ext END IF ////默认 arg_amt < 0 //lde_amt = 0 - lde_amt if arg_taketype = 0 then lde_amt = 0 - lde_amt else lde_amt = lde_amt end if UPDATE u_rs_emptake SET amt = amt + :lde_amt WHERE empid = :arg_empid And moneyid = :arg_moneyid; IF sqlca.SQLCode = 0 THEN IF sqlca.SQLNRows = 0 THEN INSERT INTO u_rs_emptake (empid, moneyid, amt) VALUES (:arg_empid, :arg_moneyid, :lde_amt); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "插入员工借/还款信息失败,"+sqlca.SQLErrText GOTO ext END IF END IF ELSE rslt = 0 arg_msg = "更新员工借/还款信息失败,"+sqlca.SQLErrText GOTO ext END IF DELETE FROM u_rs_emptakemx WHERE empid = :arg_empid AND relid = :arg_relid AND relcode = :arg_relcode And moneyid = :arg_moneyid; IF sqlca.SQLCode <> 0 THEN arg_msg = "查询员工借/还款明细信息失败,"+sqlca.SQLErrText rslt = 0 GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK Using sqlca; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT Using sqlca; END IF RETURN rslt end function public function integer uof_add_insure (s_insure arg_s_insure, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ls_newid Int ls_status DateTime server_dt IF IsNull(arg_s_insure.insureid) THEN arg_s_insure.insureid = 0 IF IsNull(arg_s_insure.empid) THEN arg_s_insure.empid = 0 IF IsNull(arg_s_insure.BuyMth) THEN arg_s_insure.BuyMth = 0 IF IsNull(arg_s_insure.Subsidy) THEN arg_s_insure.Subsidy = 0 IF IsNull(arg_s_insure.Payself) THEN arg_s_insure.Payself = 0 IF IsNull(arg_s_insure.dscrp) THEN arg_s_insure.dscrp = '' SELECT status INTO :ls_status FROM u_rs_empinfo Where empid = :arg_s_insure.empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF ls_status = 0 THEN arg_msg = '该员工不在职,不能进行增加社保内容' rslt = 0 GOTO ext END IF IF arg_s_insure.BuyMth = 0 THEN arg_msg = '请输入购买月份' rslt = 0 GOTO ext END IF IF arg_s_insure.insureid = 0 THEN ls_newid = f_sys_scidentity(0,"u_rs_insure","insureid",arg_msg,TRUE,id_sqlca) IF ls_newid <= 0 THEN rslt = 0 GOTO ext END IF SELECT Top 1 getdate() INTO :server_dt FROM u_user; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,日期 " GOTO ext END IF INSERT INTO u_rs_insure (insureid, empid, BuyMth, Buydate, Subsidy, Payself, Dscrp, Opemp, Opdate) VALUES( :ls_newid, :arg_s_insure.empid, :arg_s_insure.BuyMth, :arg_s_insure.Buydate, :arg_s_insure.Subsidy, :arg_s_insure.Payself, :arg_s_insure.Dscrp, :arg_opemp, :server_dt); IF sqlca.SQLCode <> 0 THEN arg_msg = '增加社保内容失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ELSE UPDATE u_rs_insure SET BuyMth = :arg_s_insure.BuyMth, Buydate = :arg_s_insure.Buydate, Subsidy = :arg_s_insure.Subsidy, Payself = :arg_s_insure.Payself, Dscrp = :arg_s_insure.Dscrp, moddate = :server_dt, modemp = :arg_opemp Where insureid = :arg_s_insure.insureid; IF sqlca.SQLCode <> 0 THEN arg_msg = '更新社保内容失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uof_add_idcard (s_idcard arg_s_idcard, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ls_newid Int ls_status DateTime server_dt IF IsNull(arg_s_idcard.mxid) THEN arg_s_idcard.mxid = 0 IF IsNull(arg_s_idcard.empid) THEN arg_s_idcard.empid = 0 IF IsNull(arg_s_idcard.idcard) THEN arg_s_idcard.idcard = '' IF IsNull(arg_s_idcard.fzjg) THEN arg_s_idcard.fzjg = '' SELECT status INTO :ls_status FROM u_rs_empinfo Where empid = :arg_s_idcard.empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF ls_status = 0 THEN arg_msg = '该员工不在职,不能进行增加身份证' rslt = 0 GOTO ext END IF SELECT Top 1 getdate() INTO :server_dt FROM u_user; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,日期 " GOTO ext END IF IF arg_s_idcard.mxid = 0 THEN ls_newid = f_sys_scidentity(0,"u_rs_emp_idcard","mxid",arg_msg,TRUE,id_sqlca) IF ls_newid <= 0 THEN rslt = 0 GOTO ext END IF INSERT INTO u_rs_emp_idcard (mxid, empid, idcard, fzjg, limit_date, Opemp, Opdate) VALUES( :ls_newid, :arg_s_idcard.empid, :arg_s_idcard.idcard, :arg_s_idcard.fzjg, :arg_s_idcard.limit_date, :arg_opemp, :server_dt); IF sqlca.SQLCode <> 0 THEN arg_msg = '增加身份证内容失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ELSE UPDATE u_rs_emp_idcard SET idcard = :arg_s_idcard.idcard, fzjg = :arg_s_idcard.fzjg, limit_date = :arg_s_idcard.limit_date, empid = :arg_s_idcard.empid, moddate = :server_dt, modemp = :arg_opemp Where mxid = :arg_s_idcard.mxid; IF sqlca.SQLCode <> 0 THEN arg_msg = '更新社保内容失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uof_del_insure (long arg_insureid, long arg_empid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ll_empid Int ls_status IF IsNull(arg_insureid) THEN arg_insureid = 0 SELECT status,u_rs_insure.empid INTO :ls_status,:ll_empid FROM u_rs_empinfo,u_rs_insure WHERE u_rs_empinfo.empid = u_rs_insure.empid AND u_rs_insure.insureid = :arg_insureid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF ll_empid <> arg_empid THEN arg_msg = '选择删除社保资料的员工资料不相符' rslt = 0 GOTO ext END IF IF ls_status = 0 THEN arg_msg = '该员工不在职,不能进行删除社保内容' rslt = 0 GOTO ext END IF DELETE FROM u_rs_insure Where insureid = :arg_insureid; IF sqlca.SQLCode <> 0 THEN arg_msg = '删除社保内容失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uof_del_idcard (long arg_mxid, long arg_empid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ll_empid Int ls_status IF IsNull(arg_mxid) THEN arg_mxid = 0 SELECT u_rs_empinfo.status, u_rs_emp_idcard.empid INTO :ls_status, :ll_empid FROM u_rs_empinfo INNER JOIN u_rs_emp_idcard ON u_rs_empinfo.empid = u_rs_emp_idcard.empid Where (u_rs_emp_idcard.mxid = :arg_mxid); IF sqlca.SQLCode <> 0 THEN arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF ll_empid <> arg_empid THEN arg_msg = '选择删除身份证资料的员工资料不相符' rslt = 0 GOTO ext END IF IF ls_status = 0 THEN arg_msg = '该员工不在职,不能进行删除身份证内容' rslt = 0 GOTO ext END IF DELETE From u_rs_emp_idcard Where mxid = :arg_mxid; IF sqlca.SQLCode <> 0 THEN arg_msg = '删除社保内容失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uof_audit_contract (long arg_empid, long arg_contractid, ref string arg_msg, boolean arg_ifcommit);Int rslt rslt = 1 Int li_status, li_flag DateTime server_dt SELECT Top 1 getdate() Into :server_dt From u_user; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,日期 " GOTO ext END IF SELECT status INTO :li_status FROM u_rs_empinfo Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询员工状态失败,'+sqlca.SQLErrText GOTO ext END IF IF li_status = 0 THEN arg_msg = '该员工不在职,不能进行审核合同' rslt = 0 GOTO ext END IF SELECT flag INTO :li_flag FROM u_rs_contract WHERE empid = :arg_empid And contractid = :arg_contractid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询员工合同审核状态失败,'+sqlca.SQLErrText GOTO ext END IF IF li_flag = 1 THEN rslt = 0 arg_msg = '员工合同已审核' GOTO ext END IF UPDATE u_rs_contract SET flag = 1, auditemp = :publ_operator, auditdate = :server_dt WHERE empid = :arg_empid AND contractid = :arg_contractid And flag = 0; IF sqlca.SQLCode = 0 THEN IF sqlca.SQLNRows = 0 THEN rslt = 0 arg_msg = '员工合同正在审核,请稍后查询' GOTO ext END IF ELSE rslt = 0 arg_msg = '更新员工合同状态失败,'+sqlca.SQLErrText GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uof_caudit_contract (long arg_empid, long arg_contractid, ref string arg_msg, boolean arg_ifcommit);Int rslt, li_flag rslt = 1 SELECT flag INTO :li_flag FROM u_rs_contract WHERE empid = :arg_empid And contractid = :arg_contractid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询员工合同审核状态失败,'+sqlca.SQLErrText GOTO ext END IF IF li_flag <> 1 THEN rslt = 0 arg_msg = '员工合同未审核' GOTO ext END IF UPDATE u_rs_contract SET flag = 0, auditemp = '', auditdate = null WHERE empid = :arg_empid And contractid = :arg_contractid and flag = 1; IF sqlca.SQLCode = 0 THEN IF sqlca.SQLNRows = 0 THEN rslt = 0 arg_msg = '员工合同正在撤审,请稍后查询' GOTO ext END IF ELSE rslt = 0 arg_msg = '更新员工合同状态失败,'+sqlca.SQLErrText GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uof_add_item (s_item_cust_spt arg_s_item, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long cnt,ll_repid IF IsNull(arg_s_item.itemid) THEN arg_s_item.itemid = 0 IF IsNull(arg_s_item.relid) THEN arg_s_item.relid = 0 IF IsNull(arg_s_item.reltype) THEN arg_s_item.reltype = 0 IF IsNull(arg_s_item.dscrp) THEN arg_s_item.dscrp = '' cnt = 0 SELECT count(*) INTO :cnt FROM u_item_cust_spt_def Where itemid = :arg_s_item.itemid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询辅助项目资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF cnt = 0 IF arg_s_item.reltype = 2 THEN SELECT count(*) INTO :cnt FROM u_rs_empinfo Where empid = :arg_s_item.relid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询人事资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ELSE arg_msg = '错误的项目类型' rslt = 0 GOTO ext END IF UPDATE u_item_cust_spt SET dscrp = :arg_s_item.dscrp WHERE itemid = :arg_s_item.itemid AND relid = :arg_s_item.relid AND reltype = :arg_s_item.reltype; IF sqlca.SQLCode = 0 THEN IF sqlca.SQLNRows = 0 THEN INSERT INTO u_item_cust_spt (itemid, relid, reltype, dscrp) VALUES(:arg_s_item.itemid, :arg_s_item.relid, :arg_s_item.reltype, :arg_s_item.dscrp); IF sqlca.SQLCode <> 0 THEN arg_msg = '建立辅助项目资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF END IF ELSE arg_msg = '更新辅助项目资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uof_add_emppay (long arg_empid, long arg_relid, long arg_moneyid, string arg_relcode, datetime arg_paydate, decimal arg_amt, string arg_dscrp, integer arg_paytype, boolean arg_ifcommit, ref string arg_msg);//==================================================================== // 事件: uo_empinfo.uof_add_emppay() //-------------------------------------------------------------------- // 描述: //-------------------------------------------------------------------- // 参数: // value long arg_empid //人员ID // value long arg_relid //单据ID // value long arg_moneyid //币种 // value string arg_relcode //单据编号 // value datetime arg_paydate //发生日期 // value decimal arg_amt //发生金额 // value string arg_dscrp //备注 // value integer arg_paytype //0:计算增加 1:发工资,减少 // value boolean arg_ifcommit // reference string arg_msg //-------------------------------------------------------------------- // 返回: integer //-------------------------------------------------------------------- // 作者: LHD 日期: 2011年10月20日 //-------------------------------------------------------------------- // Copyright (c) 2002-2018 RICHTA(TM), All rights reserved. //-------------------------------------------------------------------- // 修改历史: // //==================================================================== Int rslt = 1 Int li_status Decimal lde_Mstpayamt, lde_payamt IF IsNull(arg_empid) THEN arg_empid = 0 IF IsNull(arg_relid) THEN arg_relid = 0 IF IsNull(arg_moneyid) THEN arg_moneyid = 0 IF IsNull(arg_relcode) THEN arg_relcode = '' IF IsNull(arg_amt) THEN arg_amt = 0 IF IsNull(arg_dscrp) THEN arg_dscrp = '' IF IsNull(arg_paytype) THEN arg_paytype = 0 IF arg_amt = 0 THEN rslt = 1 GOTO ext END IF SELECT status INTO :li_status FROM u_rs_empinfo Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF //默认 arg_amt > 0 IF arg_paytype = 0 THEN //借 lde_Mstpayamt = arg_amt lde_payamt = 0 ELSE lde_Mstpayamt = 0 lde_payamt = arg_amt arg_amt = 0 - arg_amt END IF UPDATE u_rs_emppay SET amt = amt + :arg_amt WHERE empid = :arg_empid And moneyid = :arg_moneyid; IF sqlca.SQLCode = 0 THEN IF sqlca.SQLNRows = 0 THEN INSERT INTO u_rs_emppay (empid, moneyid, amt) VALUES (:arg_empid, :arg_moneyid, :arg_amt); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "插入员工借/还款信息失败,"+sqlca.SQLErrText GOTO ext END IF END IF ELSE rslt = 0 arg_msg = "更新员工借/还款信息失败,"+sqlca.SQLErrText GOTO ext END IF INSERT INTO u_rs_emppaymx (empid, relid, moneyid, paydate, Mstpayamt, payamt, dscrp, relcode, paytype) VALUES (:arg_empid, :arg_relid, :arg_moneyid, :arg_paydate, :lde_Mstpayamt, :lde_payamt, :arg_dscrp, :arg_relcode, :arg_paytype); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "插入员工借/还款明细信息失败,"+sqlca.SQLErrText GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK Using sqlca; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT Using sqlca; END IF RETURN rslt end function public function integer uof_del_emppay (long arg_empid, long arg_relid, long arg_moneyid, string arg_relcode, integer arg_paytype, boolean arg_ifcommit, ref string arg_msg);//==================================================================== // 事件: uo_empinfo.uof_del_emppay() //-------------------------------------------------------------------- // 描述: //-------------------------------------------------------------------- // 参数: // value long arg_empid //人员ID // value long arg_relid //单据ID // value long arg_moneyid //币种 // value string arg_relcode //单据编号 // value integer arg_paytype //0:计算增加 1:发工资,减少 // value boolean arg_ifcommit // reference string arg_msg //-------------------------------------------------------------------- // 返回: integer //-------------------------------------------------------------------- // 作者: LHD 日期: 2011年10月20日 //-------------------------------------------------------------------- // Copyright (c) 2002-2018 RICHTA(TM), All rights reserved. //-------------------------------------------------------------------- // 修改历史: // //==================================================================== Int rslt = 1 Int li_status, li_cnt Dec lde_amt IF IsNull(arg_empid) THEN arg_empid = 0 IF IsNull(arg_relid) THEN arg_relid = 0 IF IsNull(arg_moneyid) THEN arg_moneyid = 0 IF IsNull(arg_relcode) THEN arg_relcode = '' IF IsNull(arg_paytype) THEN arg_paytype = 0 SELECT status INTO :li_status FROM u_rs_empinfo Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询员工资料失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF SELECT count(*) INTO :li_cnt FROM u_rs_emppaymx WHERE empid = :arg_empid AND relid = :arg_relid AND relcode = :arg_relcode And moneyid = :arg_moneyid; IF sqlca.SQLCode <> 0 THEN arg_msg = "查询员工工资记录明细信息失败,"+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF li_cnt = 0 THEN //没有找到的,成功返回//有些旧程序没有的,这里提示出错 rslt = 1 goto ext // arg_msg = "没有对应的员工工资记录明细信息" // rslt = 0 // GOTO ext END IF SELECT CASE :arg_paytype when 0 THEN mstpayamt ELSE payamt END Into :lde_amt From u_rs_emppaymx Where empid = :arg_empid And relid = :arg_relid And relcode = :arg_relcode And moneyid = :arg_moneyid; IF sqlca.SQLCode <> 0 THEN arg_msg = "查询员工工资记录明细信息失败,"+sqlca.SQLErrText rslt = 0 GOTO ext END IF // //默认 arg_amt < 0 //lde_amt = 0 - lde_amt IF arg_paytype = 0 THEN lde_amt = 0 - lde_amt ELSE lde_amt = lde_amt END IF UPDATE u_rs_emppay SET amt = amt + :lde_amt WHERE empid = :arg_empid And moneyid = :arg_moneyid; IF sqlca.SQLCode = 0 THEN IF sqlca.SQLNRows = 0 THEN INSERT INTO u_rs_emppay (empid, moneyid, amt) VALUES (:arg_empid, :arg_moneyid, :lde_amt); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "插入员工工资记录信息失败,"+sqlca.SQLErrText GOTO ext END IF END IF ELSE rslt = 0 arg_msg = "更新员工工资记录信息失败,"+sqlca.SQLErrText GOTO ext END IF DELETE FROM u_rs_emppaymx WHERE empid = :arg_empid AND relid = :arg_relid AND relcode = :arg_relcode And moneyid = :arg_moneyid; IF sqlca.SQLCode <> 0 THEN arg_msg = "查询员工工资记录明细信息失败,"+sqlca.SQLErrText rslt = 0 GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK Using sqlca; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT Using sqlca; END IF RETURN rslt end function on uo_empinfo.create call super::create TriggerEvent( this, "constructor" ) end on on uo_empinfo.destroy TriggerEvent( this, "destructor" ) call super::destroy end on event constructor;String str_optionvalue,arg_msg f_get_sys_option_value('221',str_optionvalue,arg_msg) uo_option_emp_audit = Long(str_optionvalue) end event