1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411 |
- $PBExportHeader$uo_abnormity.sru
- forward
- global type uo_abnormity from nonvisualobject
- end type
- type s_abnormitymx from structure within uo_abnormity
- end type
- end forward
- type s_abnormitymx from structure
- long empid
- string empcode
- string empname
- decimal { 5 } amount
- decimal { 5 } wage
- string mxdscrp
- long printid
- string relcode
- string reason
- string unit
- end type
- global type uo_abnormity from nonvisualobject
- end type
- global uo_abnormity uo_abnormity
- type variables
- public protectedwrite long billid //计件单自动增量id
- Public ProtectedWrite Long scid //分部
- public protectedwrite string billcode //计件单的唯一编号
- public protectedwrite datetime opdate //建立时间,自动
- public protectedwrite string opemp //建立人
- public protectedwrite datetime moddate //修改时间,自动
- public protectedwrite string modemp //修改人
- public protectedwrite int flag=0 //审核标志
- public protectedwrite int secflag=0 //审核标志
- public protectedwrite datetime auditingdate //审核时间
- public protectedwrite string auditingrep //审核操作员
- long wagemth
- datetime billdate //计件日期
- long wageid //工资项目id
- string dscrp='' //备注
- string relcode ='' //相关号码
- long relid
- long wrkgrpid
- long ifzj
- long zjid
- uo_wage u_wage
- int uo_option_taskwork_not_affirm
- int uo_option_abnormity_noorder
- private:
- s_abnormitymx abnormitymx[] //明细结构数组
- long it_mxbt=0 //明细结构数组末指针
- boolean it_newbegin=false //新建标志
- boolean it_updatebegin=false//修改标志
- end variables
- forward prototypes
- public function integer p_clearmx ()
- public function integer p_reset ()
- public function integer save (ref string arg_msg, boolean arg_ifcommit)
- public function integer acceptmx (long arg_empid, string arg_empcode, string arg_empname, decimal arg_amount, decimal arg_wage, string arg_mxdscrp, ref string arg_msg, long arg_printid, string arg_relcode, string arg_reason, string arg_unit)
- public function integer newbegin (long arg_scid, ref string arg_msg)
- public function integer p_getinfo (long arg_scid, long arg_billid, ref string arg_msg)
- public function integer getinfo (long arg_scid, long arg_billid, ref string arg_msg)
- public function integer auditmx (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit)
- public function integer cauditmx (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit)
- public function integer add_dscrp (long arg_scid, long arg_billid, string arg_newdescppart, ref string arg_msg)
- public function integer secauditing (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit)
- public function integer c_secauditing (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit)
- public function integer del (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit)
- public function integer updatebegin (long arg_scid, long arg_billid, ref string arg_msg)
- public function integer auditing (long arg_scid, long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit)
- public function integer c_auditing (long arg_scid, long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit)
- end prototypes
- public function integer p_clearmx ();//INT p_clearmx()
- //清除明细
- it_mxbt=0
- RETURN 1
- end function
- public function integer p_reset ();//INT p_RESET()
- //清除对象及其明细
- billid=0
- billcode=''
- opemp=''
- auditingrep=''
- flag=0
- wageid=0
- dscrp=''
- relcode=''
- wrkgrpid = 0
- scid = 0
- it_newbegin=FALSE
- it_updatebegin=FALSE
- //清除明细
- P_CLEARMX()
- RETURN 1
- end function
- public function integer save (ref string arg_msg, boolean arg_ifcommit);
- Integer rslt = 1,i,cnt = 0
- DateTime server_dt
- Long ls_newid
- IF uo_option_abnormity_noorder = -1000 THEN
- rslt = 0
- arg_msg = '选项:026,读取初始默认值失败!'
- GOTO ext
- END IF
- IF IsNull(wageid) THEN wageid = 0
- IF IsNull(dscrp) THEN dscrp = ''
- IF IsNull(relcode) THEN relcode = ''
- IF IsNull(relid) THEN relid = 0
- IF IsNull(wagemth) THEN wagemth = 0
- if isnull(wrkgrpid) then wrkgrpid = 0
- if isnull(ifzj) then ifzj = 0
- if isnull(zjid) then zjid = 0
- IF it_newbegin = FALSE AND it_updatebegin = FALSE 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
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_gz_wageitem
- Where wageid = :wageid;
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询工资项目失败!"
- GOTO ext
- END IF
- IF cnt <> 1 THEN
- rslt = 0
- arg_msg = "不存在工资项目!"
- GOTO ext
- END IF
- IF uo_option_abnormity_noorder = 0 and ifzj = 0 THEN
- SELECT count(*) INTO :cnt
- FROM u_sc_abnormity_bill
- WHERE billid = :relid
- AND flag = 1;
- 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
- END IF
- IF it_mxbt = 0 THEN //
- rslt = 0
- arg_msg = "没有计件明细"
- GOTO ext
- END IF
- //IF f_check_inoutdate(0,billdate,FALSE,arG_MSG) = 0 THEN
- // rslt = 0
- // GOTO ext
- //END IF
- ////////////////////////////////////////////////开始区分:新建/更新 处理
- IF billid = 0 THEN //新建
- ls_newid = f_sys_scidentity(0,"u_sc_abnormity","billid",arg_msg,TRUE,id_sqlca)
- IF ls_newid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
-
- billcode = getid(0,"YC",Date(server_dt),TRUE,sqlca) //取得新单据编号
- IF billcode = "err" THEN
- billcode = ''
- rslt = 0
- arg_msg = "无法获取计件单编号"
- GOTO ext
- END IF
-
- INSERT INTO u_sc_abnormity (
- billid,
- billcode,
- Wagemth,
- wageid,
- billdate,
- Dscrp,
- opdate,
- opemp,
- relcode,
- relid,
- wrkgrpid,
- ifzj,
- zjid,
- scid)
- VALUES (
- :ls_newid,
- :billcode,
- :Wagemth,
- :wageid,
- :billdate,
- :dscrp,
- :server_dt,
- :publ_operator,
- :relcode,
- :relid,
- :wrkgrpid,
- :ifzj,
- :zjid,
- :scid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入操作失败>>"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- billid = ls_newid
-
- FOR i = 1 TO it_mxbt
- INSERT INTO u_sc_abnormitymx
- ( billid,
- empid,
- empcode,
- empname,
- amount,
- wage,
- mxdscrp,
- printid,
- relcode,
- reason,
- unit,
- scid)
- VALUES (:ls_newid,
- :abnormitymx[i].empid,
- :abnormitymx[i].empcode,
- :abnormitymx[i].empname,
- :abnormitymx[i].amount,
- :abnormitymx[i].wage,
- :abnormitymx[i].mxdscrp,
- :abnormitymx[i].printid,
- :abnormitymx[i].relcode,
- :abnormitymx[i].reason,
- :abnormitymx[i].unit,
- :scid);
- IF sqlca.SQLCode <> 0 THEN
- billid = 0 //还原noticeid
- rslt = 0
- arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
- ROLLBACK ;
- GOTO ext
- END IF
- NEXT
-
- ELSE //////////////////////////////////////////////////更新
- UPDATE u_sc_abnormity
- SET wageid = :wageid,
- billdate = :billdate,
- Dscrp = :Dscrp,
- moddate = :server_dt,
- modemp = :publ_operator,
- relcode = :relcode,
- relid = :relid,
- wagemth = :wagemth,
- wrkgrpid = :wrkgrpid
- WHERE u_sc_abnormity.billid = :billid
- and u_sc_abnormity.scid = :scid
- AND Auditingflag = 0;
- IF sqlca.SQLCode <> 0 OR sqlca.SQLNRows <= 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- //删除原有明细
- DELETE FROM u_sc_abnormitymx
- Where u_sc_abnormitymx.billid = :billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除旧有明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- FOR i = 1 TO it_mxbt
- INSERT INTO u_sc_abnormitymx
- ( billid,
- empid,
- empcode,
- empname,
- amount,
- wage,
- mxdscrp,
- printid,
- relcode,
- reason,
- unit,
- scid)
- VALUES (:billid,
- :abnormitymx[i].empid,
- :abnormitymx[i].empcode,
- :abnormitymx[i].empname,
- :abnormitymx[i].amount,
- :abnormitymx[i].wage,
- :abnormitymx[i].mxdscrp,
- :abnormitymx[i].printid,
- :abnormitymx[i].relcode,
- :abnormitymx[i].reason,
- :abnormitymx[i].unit,
- :scid);
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- NEXT
-
- END IF
- it_newbegin = FALSE
- it_updatebegin = FALSE
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- p_clearmx()
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN(rslt)
- end function
- public function integer acceptmx (long arg_empid, string arg_empcode, string arg_empname, decimal arg_amount, decimal arg_wage, string arg_mxdscrp, ref string arg_msg, long arg_printid, string arg_relcode, string arg_reason, string arg_unit);
- Long rslt = 1,cnt = 0,ls_i
- String ls_empname,ls_empcode
- IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
- rslt = 0
- arg_msg = "非编辑状态不可以使用,操作取消"
- GOTO ext
- END IF
- IF IsNull(arg_empid) THEN arg_empid = 0
- IF IsNull(arg_empcode) THEN arg_empcode = ''
- IF IsNull(arg_empname) THEN arg_empname = ''
- IF IsNull(arg_relcode) THEN arg_relcode = ''
- IF IsNull(arg_amount) THEN arg_amount = 0
- IF IsNull(arg_wage) THEN arg_wage = 0
- IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = ''
- IF IsNull(arg_reason) THEN arg_reason = ''
- if isnull(arg_unit) then arg_unit = ''
- IF arg_wage = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- IF IsNull(arg_empcode) OR Trim(arg_empcode) = '' THEN
- rslt = 0
- arg_msg = '员工编号不能为空'
- GOTO ext
- END IF
- //if arg_amount < 0 then //检查生产数量
- // rslt = 0
- // arg_msg = "数量错误"
- // goto ext
- //end if
- SELECT empcode,empname INTO :ls_empcode,:ls_empname FROM u_rs_empinfo Where empid = :arg_empid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询员工资料失败。>'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF ls_empname <> arg_empname OR ls_empcode <> arg_empcode THEN
- rslt = 0
- arg_msg = arg_empname+'>>该员工的编号或名称不正确。'
- GOTO ext
- END IF
- //写入内容
- it_mxbt++
- abnormitymx[it_mxbt].empid = arg_empid
- abnormitymx[it_mxbt].empcode = arg_empcode
- abnormitymx[it_mxbt].empname = arg_empname
- abnormitymx[it_mxbt].amount = arg_amount
- abnormitymx[it_mxbt].wage = arg_wage
- abnormitymx[it_mxbt].mxdscrp = arg_mxdscrp
- abnormitymx[it_mxbt].printid = arg_printid
- abnormitymx[it_mxbt].relcode = arg_relcode
- abnormitymx[it_mxbt].reason = arg_reason
- abnormitymx[it_mxbt].unit = arg_unit
- ext:
- IF rslt = 0 THEN p_clearmx()
- Return(rslt)
- end function
- public function integer newbegin (long arg_scid, ref string arg_msg);Long rslt = 1
- IF arg_scid < 0 THEN
- arg_msg = '请选择分部'
- rslt = 0
- GOTO ext
- END IF
- p_reset()
- scid = arg_scid
- it_newbegin = True
- it_updatebegin = False
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- public function integer p_getinfo (long arg_scid, long arg_billid, ref string arg_msg);Int rslt = 1
- IF arg_billid <= 0 THEN
- rslt = 0
- arG_MSG = "非法的单据唯一码"
- GOTO ext
- END IF
- SELECT u_sc_abnormity.wageid,
- u_sc_abnormity.billdate,
- u_sc_abnormity.relcode,
- u_sc_abnormity.dscrp,
- u_sc_abnormity.Auditingflag,
- u_sc_abnormity.billcode,
- u_sc_abnormity.Auditingemp,
- u_sc_abnormity.Auditingdate,
- u_sc_abnormity.opdate,
- u_sc_abnormity.opemp,
- u_sc_abnormity.wagemth ,
- u_sc_abnormity.moddate,
- u_sc_abnormity.modemp,
- u_sc_abnormity.relid,
- u_sc_abnormity.secauditingflag,
- u_sc_abnormity.wrkgrpid
- INTO :wageid,
- :billdate,
- :relcode,
- :dscrp,
- :flag,
- :billcode,
- :auditingrep,
- :auditingdate,
- :opdate,
- :opemp,
- :wagemth,
- :moddate,
- :modemp,
- :relid,
- :secflag,
- :wrkgrpid
- FROM u_sc_abnormity
- Where u_sc_abnormity.billid = :arg_billid
- and u_sc_abnormity.scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "查询操作失败(错误单据唯一码),单据"+sqlca.SQLErrText
- GOTO ext
- END IF
- billid = arg_billid
- scid = arg_scid
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- public function integer getinfo (long arg_scid, long arg_billid, ref string arg_msg);Int rslt = 1
- Long i = 1,no_mxcheck = 0
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = "非法出仓单唯一码"
- GOTO ext
- END IF
- rslt = p_getinfo(arg_scid,arg_billid,arg_msg)
- IF rslt = 0 THEN GOTO ext
- //用游标读取明细
- DECLARE cur_mx CURSOR FOR
- SELECT u_sc_abnormitymx.empid,
- u_sc_abnormitymx.amount,
- u_sc_abnormitymx.wage
- FROM u_sc_abnormitymx
- Where u_sc_abnormitymx.billid = :arg_billid
- and u_sc_abnormitymx.scid = :arg_scid;
-
- OPEN cur_mx;
- FETCH cur_mx INTO :abnormitymx[i].empid,:abnormitymx[i].amount,
- :abnormitymx[i].wage;
- DO WHILE sqlca.SQLCode = 0
- i++
- FETCH cur_mx INTO :abnormitymx[i].empid,:abnormitymx[i].amount,
- :abnormitymx[i].wage;
- LOOP
- CLOSE cur_mx;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_sc_abnormitymx
- Where u_sc_abnormitymx.billid = :arg_billid
- and u_sc_abnormitymx.scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,单据明细数量"
- GOTO ext
- END IF
- IF i <> (no_mxcheck+1) THEN
- rslt = 0
- arg_msg = "查询操作失败,单据明细"
- GOTO ext
- END IF
- billid = arg_billid
- scid = arg_scid
- it_mxbt = i - 1
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- public function integer auditmx (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit);Long cnt = 0,i
- Int rslt = 1
- Decimal ls_emp_sumwage
- IF uo_option_taskwork_not_affirm = -1000 THEN
- rslt = 0
- arg_msg = '选项:[080]计件单不使用确认功能,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_billid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF wagemth = 0 THEN
- rslt = 0
- arg_msg = '请输入工资月份'
- GOTO ext
- END IF
- IF flag = 1 THEN
- rslt = 0
- arg_msg = '单据已审核,操作取消'
- GOTO ext
- END IF
- IF uo_option_taskwork_not_affirm = 0 THEN
- IF secflag = 0 THEN
- arg_msg = '单据未确认,不能审核'
- rslt = 0
- GOTO ext
- END IF
- END IF
- cnt = 0
- SELECT count(*) INTO :cnt
- From u_gz_wageitem Where useflag = 1 And wageid = :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
- FOR i = 1 To it_mxbt
- ls_emp_sumwage = 0.00
- ls_emp_sumwage = abnormitymx[i].amount * abnormitymx[i].wage
- IF u_wage.f_setwagemxdata(wagemth,abnormitymx[i].empid,wageid,ls_emp_sumwage,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- IF uo_option_taskwork_not_affirm = 0 THEN
- UPDATE u_sc_abnormity SET
- Auditingflag = 1,
- Auditingemp = :publ_operator,
- Auditingdate = getdate()
- WHERE billid = :arg_billid
- AND scid = :arg_scid
- And Auditingflag = 0;
- ELSE
- UPDATE u_sc_abnormity SET
- Auditingflag = 1,
- Auditingemp = :publ_operator,
- Auditingdate = getdate(),
- secauditingdate = getdate(),
- secauditingemp = :publ_operator,
- secauditingflag = 1
- WHERE billid = :arg_billid
- AND scid = :arg_scid
- And Auditingflag = 0;
- END IF
- 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 cauditmx (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit);Long cnt = 0,i
- Int rslt = 1
- Decimal ls_emp_sumwage
- DateTime ls_null
- SetNull(ls_null)
- IF uo_option_taskwork_not_affirm = -1000 THEN
- rslt = 0
- arg_msg = '选项:080,读取初始默认值失败!'
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_billid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF flag = 0 THEN
- rslt = 0
- arg_msg = '单据还没有审核,操作取消'
- GOTO ext
- END IF
- IF f_check_wage_audit(wagemth,arg_scid,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 = :wageid
- AND wagemth = :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 = :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
- FOR i = 1 TO it_mxbt
- ls_emp_sumwage = 0.00
- ls_emp_sumwage = abnormitymx[i].amount * abnormitymx[i].wage
- IF u_wage.f_setwagemxdata(wagemth,abnormitymx[i].empid,wageid,0 - ls_emp_sumwage,arg_msg,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- IF uo_option_taskwork_not_affirm = 0 THEN
- UPDATE u_sc_abnormity SET
- Auditingflag = 0,
- Auditingemp = '',
- Auditingdate = :ls_null
- WHERE billid = :arg_billid
- and scid = :arg_scid
- AND Auditingflag = 1;
- ELSE
- UPDATE u_sc_abnormity SET
- Auditingflag = 0,
- Auditingemp = '',
- Auditingdate = :ls_null,
- secauditingdate = :ls_null,
- secauditingemp = '',
- secauditingflag = 0
- WHERE billid = :arg_billid
- and scid = :arg_scid
- AND Auditingflag = 1;
- END IF
- 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 add_dscrp (long arg_scid, long arg_billid, string arg_newdescppart, ref string arg_msg);//====================================================================
- // Function: add_dscrp(arg_billid,arg_newdescppart,arg_msg)
- //--------------------------------------------------------------------
- // Description:
- //--------------------------------------------------------------------
- // Arguments:
- // value long arg_billid
- // value string arg_newdescppart
- // reference string arg_msg
- //--------------------------------------------------------------------
- // Returns: integer
- //--------------------------------------------------------------------
- // Author: yyx Date: 2003.11.21
- //--------------------------------------------------------------------
- // Modify History:
- //
- //====================================================================
- Int rslt = 1
- arg_newdescppart = Trim(arg_newdescppart)
- IF arg_billid <= 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
- SELECT u_sc_abnormity.auditingflag
- INTO :flag
- FROM u_sc_abnormity
- Where u_sc_abnormity.billid = :arg_billid
- and u_sc_abnormity.scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询异常计件单操作失败'
- GOTO ext
- END IF
- IF flag = 0 THEN
- rslt = 0
- arg_msg = "非审核状态下不可用"
- GOTO ext
- END IF
- UPDATE u_sc_abnormity
- SET dscrp = dscrp+' '+:arg_newdescppart
- Where u_sc_abnormity.billid = :billid
- and u_sc_abnormity.scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- ROLLBACK ;
- rslt = 0
- arg_msg = "因网络或其它原因导致添加单据备注操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- COMMIT;
- dscrp = dscrp+' '+arg_newdescppart
- ext:
- Return (rslt)
- end function
- public function integer secauditing (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,li_secauditingflag
- IF arg_billid = 0 THEN
- rslt = 0
- arg_msg = "没有审核对象"
- GOTO ext
- END IF
- SELECT secauditingflag INTO :li_secauditingflag
- FROM u_sc_abnormity
- Where billid = :arg_billid
- and scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询异常计件单资料失败'
- GOTO ext
- END IF
- IF li_secauditingflag = 1 THEN
- rslt = 0
- arg_msg = '该单据已确认'
- GOTO ext
- END IF
- UPDATE u_sc_abnormity
- SET secauditingemp = :publ_operator,
- secauditingdate = getdate(),
- secauditingflag = 1
- WHERE u_sc_abnormity.billid = :arg_billid
- and scid = :arg_scid
- AND secauditingflag = 0;
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- ELSEIF sqlca.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在审核,请稍后查询。"+"~n"+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 c_secauditing (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,li_secauditingflag
- DateTime null_dt
- SetNull(null_dt)
- IF arg_billid = 0 THEN
- rslt = 0
- arg_msg = "没有审核对象"
- GOTO ext
- END IF
- SELECT secauditingflag INTO :li_secauditingflag
- FROM u_sc_abnormity
- Where billid = :arg_billid
- and scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询异常计件单资料失败'
- GOTO ext
- END IF
- IF li_secauditingflag = 0 THEN
- rslt = 0
- arg_msg = '该单据未确认,不能反确认'
- GOTO ext
- END IF
- UPDATE u_sc_abnormity
- SET secauditingemp = '',
- secauditingdate = :null_dt,
- secauditingflag = 0
- WHERE u_sc_abnormity.billid = :arg_billid
- and scid = :arg_scid
- AND secauditingflag = 1;
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致反确认单据操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- ELSEIF sqlca.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在反确认,请稍后查询。"+"~n"+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 del (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit);//====================================================================
- // Function: del(arg_billid,arg_msg)
- //--------------------------------------------------------------------
- // Description:
- //--------------------------------------------------------------------
- // Arguments:
- // value long arg_billid
- // reference string arg_msg
- //--------------------------------------------------------------------
- // Returns: integer
- //--------------------------------------------------------------------
- // Author: yyx Date: 2003.11.21
- //--------------------------------------------------------------------
- // Modify History:
- //
- //====================================================================
- Int rslt = 1
- IF arg_billid <= 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
- SELECT u_sc_abnormity.auditingflag
- INTO :flag
- FROM u_sc_abnormity
- WHERE u_sc_abnormity.billid = :arg_billid
- And u_sc_abnormity.scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询异常计件单操作失败'
- GOTO ext
- END IF
- IF flag = 1 THEN
- rslt = 0
- arg_msg = "单据已经审核,不可以删除"
- GOTO ext
- END IF
- DELETE FROM u_sc_abnormity
- WHERE u_sc_abnormity.billid = :arg_billid
- And u_sc_abnormity.scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除计件单操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_sc_abnormitymx
- WHERE u_sc_abnormitymx.billid = :arg_billid
- And u_sc_abnormitymx.scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除计件单明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK ;
- p_reset()
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT ;
- END IF
- Return (rslt)
- end function
- public function integer updatebegin (long arg_scid, long arg_billid, ref string arg_msg);//====================================================================
- // Function: updatebegin(arg_billid,arg_msg)
- //--------------------------------------------------------------------
- // Description:
- //--------------------------------------------------------------------
- // Arguments:
- // value long arg_billid
- // reference string arg_msg
- //--------------------------------------------------------------------
- // Returns: integer
- //--------------------------------------------------------------------
- // Author: yyx Date: 2003.11.21
- //--------------------------------------------------------------------
- // Modify History:
- //
- //====================================================================
- Int rslt = 1
- IF arg_billid <= 0 THEN
- billid = 0
- GOTO ext
- END IF
- SELECT u_sc_abnormity.billcode,
- u_sc_abnormity.wagemth,
- u_sc_abnormity.wageid,
- u_sc_abnormity.billdate,
- u_sc_abnormity.dscrp,
- u_sc_abnormity.auditingflag,
- u_sc_abnormity.secauditingflag
- INTO :billcode,
- :wagemth,
- :wageid,
- :billdate,
- :dscrp,
- :flag,
- :secflag
- From u_sc_abnormity
- Where u_sc_abnormity.billid = :arg_billid
- and u_sc_abnormity.scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询数据操作失败,计件单'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF secflag = 1 THEN
- rslt = 0
- arg_msg = '单据已经确认,不可以修改'
- GOTO ext
- END IF
- IF flag = 1 THEN
- rslt = 0
- arg_msg = '单据已经审核,不可以修改'
- GOTO ext
- END IF
- billid = arg_billid
- scid = arg_scid
- p_clearmx()
- it_newbegin = False
- it_updatebegin = True
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- public function integer auditing (long arg_scid, long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit);Long cnt = 0,i
- Int rslt = 1
- Decimal ls_emp_sumwage
- datastore ds_emp_sumabnormitywage
- IF uo_option_taskwork_not_affirm = -1000 THEN
- rslt = 0
- arg_msg = '选项:080,读取初始默认值失败!'
- GOTO ext
- END IF
- IF uo_option_taskwork_not_affirm = 0 THEN
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_sc_abnormity
- WHERE wagemth = :arg_wagemth
- AND wageid = :arg_wageid
- and (scid = :arg_scid or :arg_scid = -1)
- AND secAuditingflag = 0;
- IF sqlca.SQLCode <> 0 THEN
- ARG_msg = '查询是否有异常计件单未审核失败,原因>>'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF cnt > 0 THEN
- ARG_msg = '还有异常计件单未确认,不能审核'
- rslt = 0
- GOTO ext
- END IF
- END IF
- //cnt = 0
- //SELECT count(*) INTO :cnt FROM u_sc_abnormity
- // WHERE wagemth = :arg_wagemth
- // AND wageid = :arg_wageid
- // 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
- 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_sumabnormitywage = CREATE datastore
- ds_emp_sumabnormitywage.DataObject = 'dw_emp_sumabnormitywage'
- ds_emp_sumabnormitywage.SetTransObject(sqlca)
- IF ds_emp_sumabnormitywage.Retrieve(arg_scid,arg_wagemth,arg_wageid, 0) = 0 THEN
- rslt = 0
- ARG_msg = '本月没有计件单可审核'
- GOTO ext
- END IF
- FOR i = 1 TO ds_emp_sumabnormitywage.RowCount()
- ls_emp_sumwage = 0.00
- ls_emp_sumwage = ds_emp_sumabnormitywage.Object.sumwage[i]
- IF u_wage.f_setwagemxdata(arg_wagemth,ds_emp_sumabnormitywage.Object.u_sc_abnormitymx_empid[i],arg_wageid,ls_emp_sumwage,ARG_msg,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- IF uo_option_taskwork_not_affirm = 0 THEN
- UPDATE u_sc_abnormity SET
- Auditingflag = 1,
- Auditingemp = :publ_operator,
- Auditingdate = getdate()
- WHERE wagemth = :arg_wagemth
- AND wageid = :arg_wageid
- and (scid = :arg_scid or :arg_scid = -1)
- AND Auditingflag = 0;
- ELSE
- UPDATE u_sc_abnormity SET
- Auditingflag = 1,
- Auditingemp = :publ_operator,
- Auditingdate = getdate(),
- secauditingdate = getdate(),
- secauditingemp = :publ_operator,
- secauditingflag = 1
- WHERE wagemth = :arg_wagemth
- AND wageid = :arg_wageid
- and (scid = :arg_scid or :arg_scid = -1)
- AND Auditingflag = 0;
- END IF
- 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 c_auditing (long arg_scid, long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit);
- Long cnt = 0,i
- decimal ls_emp_sumwage
- Int rslt = 1
- DateTime null_server_dt
- SetNull(null_server_dt)
- IF uo_option_taskwork_not_affirm = -1000 THEN
- rslt = 0
- arg_msg = '选项:080,读取初始默认值失败!'
- GOTO ext
- END IF
- IF f_check_wage_audit(arg_wagemth,arg_scid,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
- SELECT count(*) Into :cnt
- From u_sc_abnormity
- Where wagemth = :arg_wagemth
- and (scid = :arg_scid or :arg_scid = -1)
- 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
- 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
- //
- datastore ds_emp_sumabnormitywage
- ds_emp_sumabnormitywage = CREATE datastore
- ds_emp_sumabnormitywage.DataObject = 'dw_emp_sumabnormitywage'
- ds_emp_sumabnormitywage.SetTransObject(sqlca)
- IF ds_emp_sumabnormitywage.Retrieve(arg_scid,arg_wagemth,arg_wageid, 1) = 0 THEN
- rslt = 0
- ARG_msg = '本月没有计件单已审核'
- GOTO ext
- END IF
- FOR i = 1 TO ds_emp_sumabnormitywage.RowCount()
- ls_emp_sumwage = 0.00
- ls_emp_sumwage = 0 - ds_emp_sumabnormitywage.Object.sumwage[i]
- IF u_wage.f_setwagemxdata(arg_wagemth,ds_emp_sumabnormitywage.Object.u_sc_abnormitymx_empid[i],arg_wageid,ls_emp_sumwage,ARG_msg,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- IF uo_option_taskwork_not_affirm = 0 THEN
- UPDATE u_sc_abnormity SET
- Auditingflag = 0,
- Auditingemp = '',
- Auditingdate = :null_server_dt
- Where wagemth = :arg_wagemth
- And Auditingflag = 1
- And wageid = :arg_wageid
- and (scid = :arg_scid or :arg_scid = -1);
- ELSE
- UPDATE u_sc_abnormity SET
- Auditingflag = 0,
- Auditingemp = '',
- Auditingdate = :null_server_dt,
- secauditingdate = :null_server_dt,
- secauditingemp = '',
- secauditingflag = 0
- Where wagemth = :arg_wagemth
- And Auditingflag = 1
- And wageid = :arg_wageid
- and (scid = :arg_scid or :arg_scid = -1);
- END IF
- 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
- on uo_abnormity.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_abnormity.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
- event constructor;u_wage = Create uo_wage
- String str_optionvalue,arg_msg
- f_get_sys_option_value('080',str_optionvalue,arg_msg)
- uo_option_taskwork_not_affirm = Long(str_optionvalue)
- f_get_sys_option_value('026',str_optionvalue,arg_msg)
- uo_option_abnormity_noorder = Long(str_optionvalue)
- end event
- event destructor;DESTROY u_wage
- end event
|