$PBExportHeader$uo_wage.sru forward global type uo_wage from nonvisualobject end type end forward global type uo_wage from nonvisualobject end type global uo_wage uo_wage forward prototypes public function integer f_delone (long arg_mth, long arg_empid, ref string arg_msg, boolean arg_ifcommit) public function integer f_setwagemxdata (long arg_mth, long arg_empid, long arg_wageid, decimal arg_wageamt, ref string arg_msg, boolean arg_ifcommit) public function integer f_addemp (long arg_wagemth, long arg_empid, ref string arg_msg, boolean arg_ifcommit) public function integer f_delemp (long arg_wagemth, long arg_empid, ref string arg_msg, boolean arg_ifcommit) public function integer f_init (long arg_scid, long arg_mth, ref string arg_msg) public function integer f_init_wagemx_0 (long arg_scid, long arg_mth, long arg_wageid, ref string arg_msg, boolean arg_ifcommit) public function integer f_uninit (long arg_scid, long arg_mth, ref string arg_msg) public function integer f_auditing (long arg_mth, long arg_scid, long arg_empid, string arg_ademp, ref string arg_msg) public function integer f_wage_cmpl (long arg_scid, long arg_mth, ref string arg_msg, boolean arg_ifcommit) public function integer f_unauditing (long arg_mth, long arg_scid, long arg_empid, string arg_ademp, ref string arg_msg) public function integer f_wage_clear (long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit) end prototypes public function integer f_delone (long arg_mth, long arg_empid, ref string arg_msg, boolean arg_ifcommit);//f_delone //1,删除一工资记录 //2.删除对应工资明细记录 long rslt=1,cnt string ls_msg select count(*) into :cnt from u_gz_wage where u_gz_wage.wagemth=:arg_mth and Auditingflag = 0 and empid=:arg_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 //1,删除一工资记录 delete u_gz_wage where wagemth=:arg_mth and empid=:arg_empid; if sqlca.sqlcode<>0 then ls_msg=sqlca.sqlerrtext rslt=0 arg_msg="删除个人工资记录失败>>"+ls_msg goto ext end if //2.删除工资明细记录 delete u_gz_wagemx where wagemth=:arg_mth and empid=:arg_empid ; if sqlca.sqlcode<>0 then ls_msg=sqlca.sqlerrtext rslt=0 arg_msg="删除个人工资对应项目明细记录失败>>"+ls_msg goto ext end if ext: if rslt=0 then rollback; else if arg_ifcommit then commit; end if end if arg_msg = '工资表,'+ arg_msg return rslt end function public function integer f_setwagemxdata (long arg_mth, long arg_empid, long arg_wageid, decimal arg_wageamt, ref string arg_msg, boolean arg_ifcommit);//f_setwagemxdata(arg_mth,arg_empid,arg_wageid,arg_wageamt,arg_msg,arg_ifcommit) //审核检查 //删除旧的 //插入新的 Long rslt = 1,cnt,ls_wagetype String ls_msg,ls_wagename String ls_empcode,ls_empname SELECT empcode,Empname INTO :ls_empcode,:ls_empname FROM u_rs_empinfo Where empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN rslt = 0 IF Pos(Lower(sqlca.SQLErrText),'more than') > 0 THEN arg_msg = '查询人员资料失败,查询数据返回值多于一个' ELSE arg_msg = '查询人员资料失败(错误人员唯一码):'+String(arg_empid) END IF GOTO ext END IF SELECT count(*) INTO :cnt FROM u_gz_wage WHERE u_gz_wage.wagemth = :arg_mth AND Auditingflag = 0 AND empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询人员:"+String(ls_empcode+ls_empname)+"月份:"+String(arg_mth)+"工资记录是否已经审核失败>>" GOTO ext END IF IF cnt = 0 THEN rslt = 0 arg_msg = "人员:"+String(ls_empcode+ls_empname)+"月份:"+String(arg_mth)+"目标工资记录已经审核或还没有初始化!" GOTO ext END IF SELECT u_gz_wageitem.wagetype,u_gz_wageitem.wagename INTO :ls_wagetype,:ls_wagename FROM u_gz_wageitem Where u_gz_wageitem.wageid = :arg_wageid ; IF sqlca.SQLCode <> 0 THEN ls_msg = sqlca.SQLErrText rslt = 0 IF Pos(Lower(sqlca.SQLErrText),'more than') > 0 THEN arg_msg = '查询工资项目增减类型失败,查询数据返回值多于一个' ELSE arg_msg = "查询工资项目增减类型失败(错误工资项目唯一码)" END IF GOTO ext END IF UPDATE u_gz_wagemx SET Wagename = :ls_wagename, wagetype = :ls_wagetype, Wageamt = Wageamt + :arg_wageamt Where wageid = :arg_wageid AND empid = :arg_empid AND wagemth = :arg_mth ; IF sqlca.SQLCode = 0 AND sqlca.SQLNRows = 0 THEN INSERT INTO u_gz_wagemx ( wageid, empid, wagemth, Wagename, wagetype, Wageamt ) VALUES ( :arg_wageid, :arg_empid, :arg_mth, :ls_wagename, :ls_wagetype, :arg_wageamt ) ; IF sqlca.SQLCode <> 0 THEN ls_msg = sqlca.SQLErrText rslt = 0 IF Pos(Lower(sqlca.SQLErrText),'pk_u_wagemx') > 0 THEN arg_msg = '插入新工资明细数据记录失败,关键字人员ID、工资项目、工资月份重复' ELSE arg_msg = "插入新工资明细数据记录失败>"+String(arg_wageid)+">>"+ls_msg END IF GOTO ext END IF ELSEIF sqlca.SQLCode <> 0 THEN ls_msg = sqlca.SQLErrText rslt = 0 IF Pos(Lower(sqlca.SQLErrText),'pk_u_wagemx') > 0 THEN arg_msg = '更新工资明细数据记录失败,关键字人员ID、工资项目、工资月份重复' ELSE arg_msg = "更新工资明细数据记录失败>"+String(arg_wageid)+">>"+ls_msg END IF GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSE IF arg_ifcommit THEN COMMIT; END IF END IF arg_msg = '工资表,'+ arg_msg RETURN rslt end function public function integer f_addemp (long arg_wagemth, long arg_empid, ref string arg_msg, boolean arg_ifcommit);//f_addemp(long wagemth,long empid,ref string arg_msg,boolean arg_ifcommit) //在工资表中追加人员 int cnt=0 int rslt=1 long ll_deptid,ll_flag=0 select top 1 Auditingflag into :ll_flag from u_gz_wage where wagemth=:arg_wagemth; if sqlca.sqlcode<>0 then rslt=0 arg_msg='查询工资表失败' goto ext end if if ll_flag=1 then rslt=0 arg_msg='该月工资表已审核,不能增加人员!' goto ext end if select count(*) into :cnt from u_gz_wage where wagemth=:arg_wagemth and empid=:arg_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 select deptid into :ll_deptid from u_rs_empinfo where empid=:arg_empid; if sqlca.sqlcode<>0 then rslt=0 if pos(lower(sqlca.SQLErrText),'more than') > 0 then arg_msg = '查询操作失败,查询数据返回值多于一个' else arg_msg='查询人员部门失败!(错误人员ID唯一码)' end if goto ext end if if ll_deptid<=0 then rslt=0 arg_msg='非法部门唯一码' goto ext end if insert into u_gz_wage (wagemth, empid, deptid) values (:arg_wagemth, :arg_empid, :ll_deptid); if sqlca.sqlcode<>0 then rslt=0 if pos(lower(sqlca.SQLErrText),'pk_u_wage') > 0 then arg_msg = '插入工资表失败,关键字员工ID、月份重复' else arg_msg='插入工资表失败,原因:'+sqlca.sqlerrtext end if goto ext end if ext: if rslt=0 then rollback; elseif rslt=1 and arg_ifcommit then commit; end if arg_msg = '工资表,'+ arg_msg return rslt end function public function integer f_delemp (long arg_wagemth, long arg_empid, ref string arg_msg, boolean arg_ifcommit);int rslt=1 long ll_flag=0,cnt=0 select top 1 Auditingflag into :ll_flag from u_gz_wage where wagemth=:arg_wagemth; if sqlca.sqlcode<>0 then rslt=0 arg_msg='查询工资表失败' goto ext end if if ll_flag=1 then rslt=0 arg_msg='该月工资表已审核,不能增加人员!' goto ext end if SELECT count(*) into :cnt FROM u_sc_abnormitymx,u_sc_abnormity where u_sc_abnormity.billid = u_sc_abnormitymx.billid and ( u_sc_abnormity.Wagemth = :arg_wagemth or u_sc_abnormity.wagemth = 0 ) and empid=:arg_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 select count(*) into :cnt from u_sc_taskworkmx,u_sc_taskwork where u_sc_taskworkmx.billid = u_sc_taskwork.billid and ( u_sc_taskwork.Wagemth = :arg_wagemth or u_sc_taskwork.wagemth = 0 ) and empid=:arg_empid; 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 select count(*) into :cnt from u_scwg_taskwork_2 where ( u_scwg_taskwork_2.Wagemth = :arg_wagemth or u_scwg_taskwork_2.wagemth = 0 ) and wrkgrpid=:arg_empid; if cnt>0 then rslt=0 arg_msg='该员工在该月的个人产品工序计件单中存在,不能删除!' goto ext end if delete from u_gz_wagemx where wagemth=:arg_wagemth and empid=:arg_empid; if sqlca.sqlcode<>0 then rslt=0 arg_msg='删除失败!原因:'+sqlca.sqlerrtext goto ext end if delete from u_gz_wage where wagemth=:arg_wagemth and empid=:arg_empid; if sqlca.sqlcode<>0 then 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 arg_msg = '工资表,'+ arg_msg return rslt end function public function integer f_init (long arg_scid, long arg_mth, ref string arg_msg);//f_init //更新人员部门ID //1,补充生成工资记录 //2.更新离职人人员资标记 Long rslt = 1 String ls_msg Long a_wageid[],p_wageid,ls_i //未注册限制 IF sys_if_register = 0 THEN Long ll_bill_count SELECT count( distinct wagemth) INTO :ll_bill_count FROM u_gz_wage; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,工资表月份数量 " GOTO ext END IF IF ll_bill_count > 2 THEN rslt = 0 arg_msg = "未注册版本,只能初始化2个月工资表!" GOTO ext END IF END IF Long cnt cnt =0 SELECT count(*) INTO :cnt FROM u_scdef Where scid = :arg_scid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询分部资料失败,可能分部不存在' rslt = 0 GOTO ext END IF IF cnt <> 1 THEN arg_msg = '查询分部资料失败,可能分部不存在' rslt = 0 GOTO ext END IF cnt =0 SELECT count(*) INTO :cnt FROM u_gz_wageitem ; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询工资项目资料失败' rslt = 0 GOTO ext END IF IF cnt = 0 THEN arg_msg = '没有工资项目,请先设定工资项目再初始化工资表' rslt = 0 GOTO ext END IF //1 补充生成工资记录 INSERT INTO u_gz_wage ( empid, wagemth, deptid, Tolwageamt, Havpaywageamt, Payflag, ispay, Dscrp, Auditingflag, Auditingemp, leaveflag) SELECT u_rs_empinfo.empid,:arg_mth,u_rs_empinfo.deptid,0,0,1,0,'',0,'',0 FROM u_rs_empinfo WHERE u_rs_empinfo.status = 1 AND u_rs_empinfo.scid = :arg_scid AND u_rs_empinfo.empid NOT IN (SELECT empid FROM u_gz_wage Where wagemth = :arg_mth) ; IF sqlca.SQLCode <> 0 THEN ls_msg = sqlca.SQLErrText rslt = 0 if pos(lower(sqlca.SQLErrText),'pk_u_wage') > 0 then arg_msg = '插入新工资数据记录失败,关键字人员ID、工资月份重复' else arg_msg = "补充插入新工资数据记录失败>>"+ls_msg end if GOTO ext END IF //2.更新离职人人员资标记 UPDATE u_gz_wage SET leaveflag = 1 FROM u_gz_wage, u_rs_empinfo WHERE ( u_gz_wage.empid = u_rs_empinfo.empid ) AND ( u_rs_empinfo.status = 0 ) AND ( u_rs_empinfo.scid = :arg_scid ) AND ( u_gz_wage.wagemth = :arg_mth ) ; IF sqlca.SQLCode <> 0 THEN ls_msg = sqlca.SQLErrText rslt = 0 arg_msg = "更新离职人人员资标记录失败>>"+ls_msg GOTO ext END IF COMMIT; //工资记录初始化成功则提交 //游标查询全部的 项目 String ls_wageitem = '' DECLARE wageitem_cur CURSOR FOR SELECT u_gz_wageitem.Wageid FROM u_gz_wageitem Where ( u_gz_wageitem.useflag = 1 ) ; OPEN wageitem_cur; p_wageid = 1 FETCH wageitem_cur INTO :a_wageid[p_wageid]; DO WHILE sqlca.SQLCode = 0 p_wageid++ FETCH wageitem_cur INTO :a_wageid[p_wageid]; LOOP CLOSE wageitem_cur; p_wageid = p_wageid - 1 FOR ls_i = 1 TO p_wageid //循环初始化项目 ,直接提交 rslt = f_init_wagemx_0(arg_scid,arg_mth,a_wageid[ls_i],arg_msg,FALSE) IF rslt = 0 THEN GOTO ext END IF NEXT ext: IF rslt = 0 THEN ROLLBACK; ELSE COMMIT; END IF arg_msg = '工资表,'+ arg_msg RETURN rslt end function public function integer f_init_wagemx_0 (long arg_scid, long arg_mth, long arg_wageid, ref string arg_msg, boolean arg_ifcommit);//f_init_wagemx_0(arg_mth,arg_wageid,arg_msg,arg_ifcommit) //1,补充生成工资明细0项目记录 //2.删除废弃记录 Long rslt = 1 String ls_msg //1 补充生成工资明细0项目记录 INSERT INTO u_gz_wagemx ( wageid, empid, wagemth, Wagename, wagetype, Wageamt ) SELECT u_gz_wageitem.wageid, u_gz_wage.empid, u_gz_wage.wagemth, u_gz_wageitem.Wagename, u_gz_wageitem.wagetype, 0 as amt FROM u_gz_wage, u_gz_wageitem, u_rs_empinfo WHERE ( u_gz_wageitem.useflag = 1 ) AND ( u_rs_empinfo.scid = :arg_scid ) AND ( u_rs_empinfo.empid = u_gz_wage.empid ) AND ( u_gz_wage.wagemth = :arg_mth ) AND ( u_gz_wageitem.wageid = :arg_wageid) AND ( u_gz_wage.empid NOT IN ( SELECT u_gz_wagemx.empid FROM u_gz_wagemx WHERE u_gz_wagemx.wagemth = :arg_mth AND u_gz_wagemx.wageid = :arg_wageid)) ; IF sqlca.SQLCode <> 0 THEN ls_msg = sqlca.SQLErrText rslt = 0 if pos(lower(sqlca.SQLErrText),'pk_u_wagemx') > 0 then arg_msg = '初始化工资[月直接输入]明细项目记录失败,关键字人员ID、工资项目、工资月份重复' else arg_msg = "初始化工资[月直接输入]明细项目记录失败>"+String(arg_wageid)+">>"+ls_msg end if GOTO ext END IF DELETE FROM u_gz_wagemx WHERE u_gz_wagemx.wagemth = :arg_mth AND u_gz_wagemx.wageid = :arg_wageid AND u_gz_wagemx.empid NOT IN (SELECT u_gz_wage.empid FROM u_gz_wage WHERE ( u_gz_wage.wagemth = :arg_mth ) ); IF sqlca.SQLCode <> 0 THEN ls_msg = sqlca.SQLErrText rslt = 0 arg_msg = "删除无效工资[月直接输入]明细项目记录失败>"+String(arg_wageid)+">>"+ls_msg GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF arg_msg = '工资表,'+ arg_msg RETURN rslt end function public function integer f_uninit (long arg_scid, long arg_mth, ref string arg_msg);//f_uninit //1,删除工资记录 //2.删除工资明细记录 Long rslt = 1,cnt String ls_msg cnt = 0 select count(*) into :cnt from u_scdef where scid = :arg_scid; if sqlca.sqlcode <> 0 then arg_msg = '查询分部资料失败,可能分部不存在' rslt = 0 goto ext end if if cnt <> 1 then arg_msg = '查询分部资料失败,可能分部不存在' rslt = 0 goto ext end if cnt = 0 SELECT count(*) INTO :cnt FROM u_gz_wage,u_rs_empinfo WHERE u_gz_wage.wagemth = :arg_mth AND u_gz_wage.empid = u_rs_empinfo.empid AND u_rs_empinfo.scid = :arg_scid AND Auditingflag = 1; //有已经审核的记录即认为是已经审核,不可以反初始化 IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询工资表是否已经审核失败" GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = String(arg_mth)+"工资表已经审核,不可以反初始化" GOTO ext END IF //1,删除工资记录 DELETE u_gz_wage FROM u_gz_wage,u_rs_empinfo WHERE wagemth = :arg_mth AND u_gz_wage.empid = u_rs_empinfo.empid AND u_rs_empinfo.scid = :arg_scid; IF sqlca.SQLCode <> 0 THEN ls_msg = sqlca.SQLErrText rslt = 0 arg_msg = "删除"+String(arg_mth)+"工资记录失败>>"+ls_msg GOTO ext END IF //2.删除工资明细记录 DELETE u_gz_wagemx FROM u_gz_wagemx,u_rs_empinfo WHERE u_gz_wagemx.wagemth = :arg_mth AND u_gz_wagemx.empid = u_rs_empinfo.empid AND u_rs_empinfo.scid = :arg_scid; IF sqlca.SQLCode <> 0 THEN ls_msg = sqlca.SQLErrText rslt = 0 arg_msg = "删除"+String(arg_mth)+"工资项目明细记录失败>>"+ls_msg GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSE COMMIT; END IF arg_msg = '工资表,'+ arg_msg RETURN rslt end function public function integer f_auditing (long arg_mth, long arg_scid, long arg_empid, string arg_ademp, ref string arg_msg);//f_auditing // //1.计算工资金额 //3.查询是否已经审核:if arg_empid=0,全月[部门]审核; else 单条审核 //4. Long rslt = 1,cnt = 0 String ls_msg select count(*) into :cnt from u_scdef where scid = :arg_scid; if sqlca.sqlcode <> 0 then arg_msg = '查询分部资料失败,可能分部不存在' rslt = 0 goto ext end if if cnt <> 1 then arg_msg = '查询分部资料失败,可能分部不存在' rslt = 0 goto ext end if IF arg_empid < 0 OR arg_mth < 200001 THEN rslt = 0 arg_msg = '参数错误' END IF rslt = f_wage_cmpl(arg_scid,arg_mth,arg_msg,FALSE) IF rslt = 0 THEN GOTO ext END IF //更新人员部门ID UPDATE u_gz_wage SET u_gz_wage.Deptid = isnull(u_rs_empinfo.Deptid,0) FROM u_gz_wage, u_rs_empinfo WHERE ( u_gz_wage.empid = u_rs_empinfo.empid ) AND ( u_rs_empinfo.scid = :arg_scid ) and ( u_gz_wage.wagemth = :arg_mth ) ; IF sqlca.SQLCode <> 0 THEN ls_msg = sqlca.SQLErrText rslt = 0 arg_msg = "更新工资数据人员部门信息失败>>"+ls_msg GOTO ext END IF IF arg_empid = 0 THEN //全月数据审核[部门审核] cnt = 0 SELECT count(*) INTO :cnt FROM u_gz_wage,u_rs_empinfo WHERE u_gz_wage.wagemth = :arg_mth and u_gz_wage.empid = u_rs_empinfo.empid and u_rs_empinfo.scid = :arg_scid AND Auditingflag = 0 ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询工资表是否已经审核失败" GOTO ext END IF IF cnt = 0 THEN rslt = 0 arg_msg = String(arg_mth)+"工资表已经全部审核!" GOTO ext END IF UPDATE u_gz_wage SET Auditingdate = getdate(), Auditingemp = :arg_ademp, Auditingflag = 1 from u_gz_wage,u_rs_empinfo Where u_gz_wage.wagemth = :arg_mth and u_gz_wage.empid = u_rs_empinfo.empid and u_rs_empinfo.scid = :arg_scid AND Auditingflag = 0 ; IF sqlca.SQLCode <> 0 THEN ls_msg = sqlca.SQLErrText rslt = 0 arg_msg = "审核"+String(arg_mth)+"工资表失败>>"+ls_msg GOTO ext END IF rslt = sqlca.SQLNRows ELSE //单记录审核 cnt = 0 SELECT count(*) INTO :cnt FROM u_gz_wage,u_rs_empinfo WHERE u_gz_wage.wagemth = :arg_mth and u_gz_wage.empid = u_rs_empinfo.empid and u_rs_empinfo.scid = :arg_scid AND Auditingflag = 0 AND u_gz_wage.empid = :arg_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 UPDATE u_gz_wage SET Auditingdate = getdate(), Auditingemp = :arg_ademp, Auditingflag = 1 from u_gz_wage,u_rs_empinfo Where u_gz_wage.wagemth = :arg_mth and u_gz_wage.empid = u_rs_empinfo.empid and u_rs_empinfo.scid = :arg_scid AND Auditingflag = 0 AND u_gz_wage.empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN ls_msg = sqlca.SQLErrText rslt = 0 arg_msg = "审核个人的工资记录失败!>>"+ls_msg GOTO ext END IF rslt = sqlca.SQLNRows END IF ext: if rslt = 0 then rollback; else commit; end if arg_msg = '工资表,'+ arg_msg RETURN rslt end function public function integer f_wage_cmpl (long arg_scid, long arg_mth, ref string arg_msg, boolean arg_ifcommit);//f_wage_cmpl Long rslt = 1 String ls_msg UPDATE u_gz_wage SET u_gz_wage.Tolwageamt = uv_getnew_Tolwageamt .Tolwageamt FROM u_gz_wage, u_rs_empinfo, uv_getnew_Tolwageamt WHERE u_gz_wage.empid = uv_getnew_Tolwageamt.empid AND u_gz_wage.empid = u_rs_empinfo.empid AND u_rs_empinfo.scid = :arg_scid AND u_gz_wage.wagemth = uv_getnew_Tolwageamt.wagemth AND u_gz_wage.wagemth = :arg_mth AND u_gz_wage.Auditingflag = 0; IF sqlca.SQLCode <> 0 THEN ls_msg = sqlca.SQLErrText rslt = 0 arg_msg = "计算"+String(arg_mth)+"工资金额记录失败>>"+ls_msg GOTO ext END IF if rslt = 0 then rollback; elseIF rslt = 1 and arg_ifcommit THEN COMMIT; END IF ext: arg_msg = '工资表,'+ arg_msg RETURN rslt end function public function integer f_unauditing (long arg_mth, long arg_scid, long arg_empid, string arg_ademp, ref string arg_msg);//f_unauditing //2.查询是否已经审核:if arg_empid=0,全月[部门]审核; else 单条审核 //3. //4. Long rslt = 1,cnt = 0 String ls_msg select count(*) into :cnt from u_scdef where scid = :arg_scid; if sqlca.sqlcode <> 0 then arg_msg = '查询分部资料失败,可能分部不存在' rslt = 0 goto ext end if if cnt <> 1 then arg_msg = '查询分部资料失败,可能分部不存在' rslt = 0 goto ext end if IF arg_empid < 0 OR arg_mth < 200001 THEN rslt = 0 arg_msg = '参数错误' END IF IF arg_empid = 0 THEN //全月数据撤销审核[单部门] cnt = 0 SELECT count(*) INTO :cnt FROM u_gz_wage,u_rs_empinfo WHERE u_gz_wage.wagemth = :arg_mth and u_gz_wage.empid = u_rs_empinfo.empid and u_rs_empinfo.scid = :arg_scid AND Auditingflag = 1 ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询工资表是否已经审核失败" GOTO ext END IF IF cnt = 0 THEN rslt = 0 arg_msg = String(arg_mth)+"工资表全部未经审核!" GOTO ext END IF UPDATE u_gz_wage SET Auditingdate = getdate(), Auditingemp = :arg_ademp, Auditingflag = 0 from u_gz_wage,u_rs_empinfo Where u_gz_wage.wagemth = :arg_mth and u_gz_wage.empid = u_rs_empinfo.empid and u_rs_empinfo.scid = :arg_scid AND Auditingflag = 1 ; IF sqlca.SQLCode <> 0 THEN ls_msg = sqlca.SQLErrText rslt = 0 arg_msg = "撤审"+String(arg_mth)+"工资表失败>>"+ls_msg GOTO ext END IF rslt = sqlca.SQLNRows ELSE //单记录撤销审核 cnt = 0 SELECT count(*) INTO :cnt FROM u_gz_wage,u_rs_empinfo WHERE u_gz_wage.wagemth = :arg_mth and u_gz_wage.empid = u_rs_empinfo.empid and u_rs_empinfo.scid = :arg_scid AND u_gz_wage.Auditingflag = 1 AND u_gz_wage.empid = :arg_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 UPDATE u_gz_wage SET Auditingdate = getdate(), Auditingemp = :arg_ademp, Auditingflag = 0 from u_gz_wage,u_rs_empinfo Where u_gz_wage.wagemth = :arg_mth and u_gz_wage.empid = u_rs_empinfo.empid and u_rs_empinfo.scid = :arg_scid AND u_gz_wage.Auditingflag = 1 AND u_gz_wage.empid = :arg_empid; IF sqlca.SQLCode <> 0 THEN ls_msg = sqlca.SQLErrText rslt = 0 arg_msg = "撤销审核个人的工资记录失败!>>"+ls_msg GOTO ext END IF rslt = sqlca.SQLNRows END IF ext: if rslt = 0 then rollback; else commit; end if arg_msg = '工资表,'+ arg_msg RETURN rslt end function public function integer f_wage_clear (long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long cnt SELECT count(*) INTO :cnt FROM u_gz_wage WHERE wagemth = :arg_wagemth AND Auditingflag = 1; 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 UPDATE u_gz_wagemx SET wageamt = 0 WHERE wageid = :arg_wageid AND wagemth = :arg_wagemth; IF sqlca.SQLCode <> 0 THEN 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 on uo_wage.create call super::create TriggerEvent( this, "constructor" ) end on on uo_wage.destroy TriggerEvent( this, "destructor" ) call super::destroy end on