123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011 |
- $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
|