$PBExportHeader$uo_outware_gj.sru forward global type uo_outware_gj from uo_outware end type end forward global type uo_outware_gj from uo_outware end type global uo_outware_gj uo_outware_gj forward prototypes public function integer c_auditing (boolean arg_ifcommit, ref string arg_msg) public function integer c_sec_auditing (long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit) public function integer sec_auditing (long arg_wagemth, long arg_wageid, boolean arg_ifcommit, ref string arg_msg) end prototypes public function integer c_auditing (boolean arg_ifcommit, ref string arg_msg);//==================================================================== // Function: c_auditing(arg_ifcommit,arg_msg) //-------------------------------------------------------------------- // Description: //-------------------------------------------------------------------- // Arguments: // value boolean arg_ifcommit // reference string arg_msg //-------------------------------------------------------------------- // Returns: integer //-------------------------------------------------------------------- // Author: yyx Date: 2003.11.19 //-------------------------------------------------------------------- // Modify History: // //==================================================================== long rslt = 1,cnt = 0,i long ls_newid datetime null_dt setnull(null_dt) if outwareid = 0 then rslt = 0 arg_msg = "没有审核对象" goto ext end if if it_newbegin or it_updatebegin then rslt = 0 arg_msg = "编辑状态下不可以执行审核" goto ext end if if flag = 0 then rslt = 0 arg_msg = "单据还未审核" goto ext end if if balcflag=1 then rslt = 0 arg_msg = "单据已经结存,不能撤审" goto ext end if if secflag = 1 then rslt = 0 arg_msg = "单据已经财务审核,不能撤审" goto ext end if UPDATE u_outware SET Auditingrep = '', Auditingdate = :null_dt, flag = 0 WHERE u_outware.outwareid = :outwareid and flag = 1 and secflag = 0 using commit_transaction; if commit_transaction.sqlcode <> 0 then rslt = 0 arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.sqlerrtext goto ext elseif commit_transaction.sqlnrows = 0 then rslt = 0 arg_msg = "单据正在审核,请稍后查询。" goto ext end if for i=1 to it_mxbt if p_update_mtrlware ( outwaremx[i].mtrlwareid, outwaremx[i].mtrlid, & outwaremx[i].mtrlcode, storageid, outwaremx[i].plancode,& outwaremx[i].status, 0 - outwaremx[i].qty,0,0 - outwaremx[i].costamt,& outwaremx[i].planprice, outwaremx[i].sptid, outwaremx[i].dxflag,& outwaremx[i].woodcode, outwaremx[i].pcode,arg_msg,0 - outwaremx[i].costamt)=0 then rslt=0 goto ext end if next flag = 0 ext: if rslt = 0 then rollback using commit_transaction; elseif rslt = 1 and arg_ifcommit then commit using commit_transaction; end if arg_msg = '扣费品领用单,'+ arg_msg return rslt end function public function integer c_sec_auditing (long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit);//==================================================================== // Function: c_sec_auditing() //-------------------------------------------------------------------- // Description: //-------------------------------------------------------------------- // Arguments: // value long arg_wageid // value long arg_wagemth // reference string arg_msg // value boolean arg_ifcommit //-------------------------------------------------------------------- // Returns: integer //-------------------------------------------------------------------- // Author: yyx Date: 2004.10.19 //-------------------------------------------------------------------- // Modify History: // //==================================================================== Long cnt = 0,i Int rslt = 1 DateTime null_server_dt SetNull(null_server_dt) SELECT count(*) INTO :cnt FROM u_outware WHERE wagemth = :arg_wagemth AND relid = :arg_wageid AND secflag = 1 AND billtype = 10; 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_gz_wage Where wagemth = :arg_wagemth AND Auditingflag = 1; 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 cnt = 0 SELECT count(*) INTO :cnt FROM u_gz_wageitem Where useflag = 1 AND wageid = :arg_wageid; 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_outware SET secflag = 0, secauditingrep = '', secAuditingdate = :null_server_dt, wagemth = :arg_wagemth WHERE wagemth = :arg_wagemth AND billtype = 10 AND relid = :arg_wageid AND flag = 1 AND secflag = 1; IF sqlca.SQLCode <> 0 THEN arg_msg = '审核扣费单失败,原因>>'+sqlca.SQLErrText rslt = 0 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 secflag = 0 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 sec_auditing (long arg_wagemth, long arg_wageid, boolean arg_ifcommit, ref string arg_msg);Int rslt = 1 Long cnt = 0,i Decimal ls_emp_sumwage datastore ds_emp_sumgjwage Long li_year,li_month uo_wage u_wage u_wage = CREATE uo_wage li_year = Long(Left(String(arg_wagemth),4)) li_month = Long(Right(String(arg_wagemth),2)) cnt = 0 SELECT count(*) INTO :cnt FROM u_outware WHERE wagemth = :arg_wagemth AND billtype = 10 AND relid = :arg_wageid AND flag = 1 AND secflag = 1; 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 cnt = 0 SELECT count(*) INTO :cnt FROM u_gz_wageitem Where useflag = 1 AND wageid = :arg_wageid; 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 ds_emp_sumgjwage = CREATE datastore ds_emp_sumgjwage.DataObject = 'dw_emp_sumgjwage' ds_emp_sumgjwage.SetTransObject(sqlca) IF ds_emp_sumgjwage.Retrieve(li_year,li_month,arg_wageid) <= 0 THEN rslt = 0 arg_msg = '本月没有扣费单可审核或查询计件单失败' GOTO ext END IF FOR i = 1 TO ds_emp_sumgjwage.RowCount() ls_emp_sumwage = 0.00 ls_emp_sumwage = ds_emp_sumgjwage.Object.sumwage[i] IF u_wage.f_setwagemxdata(arg_wagemth,ds_emp_sumgjwage.Object.u_outware_empid[i],arg_wageid,ls_emp_sumwage,arg_msg,FALSE) = 0 THEN rslt = 0 GOTO ext END IF NEXT UPDATE u_outware SET secflag = 1, secauditingrep = :publ_operator, secAuditingdate = getdate(), wagemth = :arg_wagemth WHERE year(outdate) <= :li_year AND month(outdate) <= :li_month AND billtype = 10 AND relid = :arg_wageid AND flag = 1 AND secflag = 0; IF sqlca.SQLCode <> 0 THEN arg_msg = '审核扣费单失败,原因>>'+sqlca.SQLErrText rslt = 0 GOTO ext END IF secflag = 1 ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF DESTROY u_wage arg_msg = '扣费品领用单,'+ arg_msg RETURN rslt end function on uo_outware_gj.create call super::create end on on uo_outware_gj.destroy call super::destroy end on