$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_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) public function integer sec_auditmx (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer c_sec_auditmx (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit) end prototypes public function integer c_sec_auditing (long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit);Long cnt = 0,i Int rslt = 1 DateTime null_server_dt SetNull(null_server_dt) IF f_check_wage_audit(arg_wagemth,-1,arg_msg) = 0 THEN rslt = 0 arg_msg = arg_msg + ',不能撤审' GOTO ext END IF //检查该月份,该工资项目是否已开工资变更单 cnt = 0 SELECT count(*) INTO :cnt FROM u_wage_change WHERE wageid = :arg_wageid AND wagemth = :arg_wagemth; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询该月份该工资项目是否已开工资变更单失败'+"~n"+sqlca.SQLErrText GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = '该月份该工资项目已开工资变更单,不能撤审' GOTO ext END IF uo_wage u_wage u_wage = CREATE uo_wage 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 = '查询扣费单失败,原因>>'+sqlca.SQLErrText 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 = '查询工资项目失败,原因>>'+sqlca.SQLErrText GOTO ext END IF IF cnt = 0 THEN rslt = 0 arg_msg = '不存在该工资项目,原因>>'+sqlca.SQLErrText GOTO ext END IF IF u_wage.f_wage_clear(arg_wageid,arg_wagemth,arg_msg,FALSE) = 0 THEN rslt = 0 GOTO ext END IF UPDATE u_outware SET secflag = 0, secauditingrep = '', secAuditingdate = :null_server_dt, wagemth = 0 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 secflag = 0 ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF DESTROY u_wage 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 = '查询扣费单明细失败!原因:'+sqlca.SQLErrText // 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 = '查询工资项目失败!原因>>'+sqlca.SQLErrText GOTO ext END IF IF cnt = 0 THEN rslt = 0 arg_msg = '不存在该工资项目!原因>>'+sqlca.SQLErrText 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 RETURN rslt end function public function integer sec_auditmx (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long cnt = 0,i Decimal ls_emp_sumwage uo_wage u_wage u_wage = CREATE uo_wage Long ll_wagemth IF getinfo(arg_scid,arg_billid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF secflag = 1 THEN rslt = 0 arg_msg = '单据还已经财审,操作取消' GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt FROM u_gz_wageitem Where useflag = 1 AND wageid = :relid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询工资项目失败!原因>>'+sqlca.SQLErrText GOTO ext END IF IF cnt = 0 THEN rslt = 0 arg_msg = '不存在该工资项目!原因>>'+sqlca.SQLErrText GOTO ext END IF ll_wagemth = Year(Date(outdate)) * 100 + Month(Date(outdate)) FOR i = 1 TO it_mxbt ls_emp_sumwage = 0.00 ls_emp_sumwage = outwaremx[i].qty * outwaremx[i].fprice * outwaremx[i].rebate IF u_wage.f_setwagemxdata(ll_wagemth,cusid,relid,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 = :ll_wagemth WHERE scid = :arg_scid AND outwareid = :arg_billid AND billtype = 10 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 RETURN rslt end function public function integer c_sec_auditmx (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long cnt = 0,i Decimal ls_emp_sumwage DateTime null_server_dt SetNull(null_server_dt) uo_wage u_wage u_wage = CREATE uo_wage Long ll_wagemth IF getinfo(arg_scid,arg_billid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF secflag = 0 THEN rslt = 0 arg_msg = '单据还没有财审,操作取消' GOTO ext END IF ll_wagemth = Year(Date(outdate)) * 100 + Month(Date(outdate)) IF f_check_wage_audit(ll_wagemth,-1,arg_msg) = 0 THEN rslt = 0 arg_msg = arg_msg + ',不能撤审' GOTO ext END IF //检查该月份,该工资项目是否已开工资变更单 cnt = 0 SELECT count(*) INTO :cnt FROM u_wage_change WHERE wageid = :relid AND wagemth = :ll_wagemth; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询该月份该工资项目是否已开工资变更单失败'+"~n"+sqlca.SQLErrText 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 = :relid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询工资项目失败!原因>>'+sqlca.SQLErrText GOTO ext END IF IF cnt = 0 THEN rslt = 0 arg_msg = '不存在该工资项目!原因>>'+sqlca.SQLErrText GOTO ext END IF FOR i = 1 TO it_mxbt ls_emp_sumwage = 0.00 ls_emp_sumwage = outwaremx[i].qty * outwaremx[i].fprice * outwaremx[i].rebate IF u_wage.f_setwagemxdata(ll_wagemth,cusid,relid,0 - ls_emp_sumwage,arg_msg,FALSE) = 0 THEN rslt = 0 GOTO ext END IF NEXT UPDATE u_outware SET secflag = 0, secauditingrep = '', secAuditingdate = :null_server_dt, wagemth = 0 WHERE scid = :arg_scid and outwareid = :arg_billid AND billtype = 10 AND flag = 1 AND secflag = 1; IF sqlca.SQLCode <> 0 THEN arg_msg = '审核扣费单失败,原因>>'+sqlca.SQLErrText rslt = 0 GOTO ext END IF secflag = 0 ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF DESTROY u_wage RETURN rslt end function on uo_outware_gj.create call super::create end on on uo_outware_gj.destroy call super::destroy end on