12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640 |
- $PBExportHeader$uo_taskwork.sru
- forward
- global type uo_taskwork from nonvisualobject
- end type
- type s_taskworkmx from structure within uo_taskwork
- end type
- end forward
- type s_taskworkmx from structure
- long empid
- string procode
- string proname
- string empcode
- string empname
- decimal { 10 } amount
- decimal { 10 } workprice
- decimal { 5 } workhour
- string mxdscrp
- long printid
- string status
- long proorder
- end type
- global type uo_taskwork from nonvisualobject
- end type
- global uo_taskwork uo_taskwork
- type variables
- PUBLIC PROTECTEDWRITE Long scid //分部
- PUBLIC PROTECTEDWRITE Long billid //计件单自动增量id
- //工资月份
- PUBLIC PROTECTEDWRITE String billcode //计件单的唯一编号
- PUBLIC PROTECTEDWRITE DateTime opdate //建立时间,自动
- PUBLIC PROTECTEDWRITE String opemp //建立人
- PUBLIC PROTECTEDWRITE DateTime moddate //修改时间,自动
- PUBLIC PROTECTEDWRITE String modemp //修改人
- PUBLIC PROTECTEDWRITE Int flag //审核标志
- PUBLIC PROTECTEDWRITE DateTime auditingdate //审核时间
- PUBLIC PROTECTEDWRITE String auditingrep //审核操作员
- PUBLIC PROTECTEDWRITE datetime affirmdate //确认时间
- PUBLIC PROTECTEDWRITE String affirmemp //确认人
- PUBLIC PROTECTEDWRITE int affirmflag //确认标志
- Long wagemth
- Long orderid //订单号
- DateTime billdate //计件日期
- Long wrkgrpid //工组id
- String wrkgrpname = ''//工组
- Long wageid //工资项目id
- Long mtrlid // 产品id
- Decimal qty //数量
- String dscrp = '' //备注
- String relcode = '' //相关号码
- long relid = 0
- uo_wage u_wage
- PRIVATE:
- s_taskworkmx taskworkmx[] //明细结构数组
- 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 c_auditing (long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit)
- public function integer save (ref string arg_msg, boolean arg_ifcommit)
- public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg)
- 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 affirm (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit)
- public function integer c_affirm (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 acceptmx (long arg_empid, string arg_empcode, string arg_empname, string arg_procode, string arg_proname, decimal arg_amount, decimal arg_workprice, decimal arg_workhour, string arg_mxdscrp, ref string arg_msg, long arg_printid, string arg_status, long arg_proorder)
- 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 auditing (long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit)
- public function integer del (long arg_scid, long arg_billid, 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
- orderid=0
- wrkgrpid=0
- wrkgrpname=''
- wageid=0
- mtrlid=0
- qty=0
- dscrp=''
- relcode=''
- it_newbegin=FALSE
- it_updatebegin=FALSE
- //清除明细
- P_CLEARMX()
- RETURN 1
- end function
- public function integer c_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)
- //检查该月份,该工资项目是否已开工资变更单
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_sc_taskwork
- 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
- IF u_wage.f_wage_clear(arg_wageid,arg_wagemth,arg_msg,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF sys_option_taskwork_not_affirm = 0 THEN
- UPDATE u_sc_taskwork SET
- Auditingflag = 0,
- Auditingrep = '',
- Auditingdate = :null_server_dt
- Where wagemth = :arg_wagemth AND Auditingflag = 1 AND wageid = :arg_wageid;
- ELSE
- UPDATE u_sc_taskwork SET
- Auditingflag = 0,
- Auditingrep = '',
- Auditingdate = :null_server_dt,
- affirmdate = :null_server_dt,
- affirmemp = '',
- affirmflag = 0
- Where wagemth = :arg_wagemth AND Auditingflag = 1 AND wageid = :arg_wageid;
- 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 save (ref string arg_msg, boolean arg_ifcommit);//====================================================================
- // Function: save(arg_msg,arg_ifcommit)
- //--------------------------------------------------------------------
- // Description:
- //--------------------------------------------------------------------
- // Arguments:
- // reference string arg_msg
- // value boolean arg_ifcommit
- //--------------------------------------------------------------------
- // Returns: integer
- //--------------------------------------------------------------------
- // Author: yyx Date: 2003.11.21
- //--------------------------------------------------------------------
- // Modify History:
- //
- //====================================================================
- Integer rslt = 1,cnt = 0,i
- DateTime server_dt
- Long ls_newid
- IF IsNull(wrkgrpid) THEN wrkgrpid = 0
- IF IsNull(wrkgrpname) THEN wrkgrpname = ''
- IF IsNull(wageid) THEN wageid = 0
- IF IsNull(mtrlid) THEN mtrlid = 0
- IF IsNull(dscrp) THEN dscrp = ''
- IF IsNull(wagemth) THEN wagemth = 0
- IF IsNull(orderid) THEN orderid = 0
- if isnull(relid) then relid = 0
- IF IsNull(relcode) THEN relcode = ''
- 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
- IF mtrlid <= 0 THEN
- rslt = 0
- arg_msg = '请先选择产品'
- GOTO ext
- END IF
- if wagemth = 0 then
- rslt = 0
- arg_msg = '请输入工资月份'
- GOTO ext
- 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
- 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 billid = 0 THEN //新建
- ls_newid = f_sys_scidentity(0,"u_sc_taskwork","billid",arg_msg,TRUE,sqlca)
- IF ls_newid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
-
- billcode = getid(0,"JJ",Date(server_dt),TRUE,sqlca) //取得新单据编号
- IF billcode = "err" THEN
- billcode = ''
- rslt = 0
- arg_msg = "无法获取计件单编号"
- GOTO ext
- END IF
-
- INSERT INTO u_sc_taskwork (
- scid,
- billid,
- billcode,
- Wagemth,
- orderid,
- wrkGrpid,
- WrkGrpname,
- wageid,
- billdate,
- Dscrp,
- opdate,
- opemp,
- mtrlid,
- relcode,
- relid )
- VALUES (
- :scid,
- :ls_newid,
- :billcode,
- :Wagemth,
- :orderid,
- :wrkGrpid,
- :WrkGrpname,
- :wageid,
- :billdate,
- :dscrp,
- :server_dt,
- :publ_operator,
- :mtrlid,
- :relcode,
- :relid );
- 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_taskworkmx
- ( scid,
- billid,
- empid,
- empcode,
- empname,
- procode,
- proname,
- amount,
- workprice,
- workhour,
- mxdscrp,
- printid,
- status,
- proorder)
- VALUES (
- :scid,
- :ls_newid,
- :taskworkmx[i].empid,
- :taskworkmx[i].empcode,
- :taskworkmx[i].empname,
- :taskworkmx[i].procode,
- :taskworkmx[i].proname,
- :taskworkmx[i].amount,
- :taskworkmx[i].workprice,
- :taskworkmx[i].workhour,
- :taskworkmx[i].mxdscrp,
- :taskworkmx[i].printid,
- :taskworkmx[i].status,
- :taskworkmx[i].proorder);
- 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_taskwork
- SET orderid = :orderid,
- Mtrlid = :Mtrlid,
- wrkGrpid = :wrkGrpid,
- WrkGrpname = :WrkGrpname,
- wageid = :wageid,
- billdate = :billdate,
- Dscrp = :Dscrp,
- moddate = :server_dt,
- modemp = :publ_operator,
- relcode = :relcode,
- wagemth = :wagemth,
- relid = :relid
- WHERE u_sc_taskwork.billid = :billid
- AND u_sc_taskwork.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_taskworkmx
- Where u_sc_taskworkmx.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_taskworkmx
- (scid,
- billid,
- empid,
- empcode,
- empname,
- procode,
- proname,
- amount,
- workprice,
- workhour,
- mxdscrp,
- printid,
- status,
- proorder)
- VALUES (
- :scid,
- :billid,
- :taskworkmx[i].empid,
- :taskworkmx[i].empcode,
- :taskworkmx[i].empname,
- :taskworkmx[i].procode,
- :taskworkmx[i].proname,
- :taskworkmx[i].amount,
- :taskworkmx[i].workprice,
- :taskworkmx[i].workhour,
- :taskworkmx[i].mxdscrp,
- :taskworkmx[i].printid,
- :taskworkmx[i].status,
- :taskworkmx[i].proorder);
-
- 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 add_dscrp (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_taskwork.auditingflag
- into :flag
- from u_sc_taskwork
- where u_sc_taskwork.billid = :arg_billid;
- 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_taskwork
- set dscrp = dscrp+' '+:arg_newdescppart
- where u_sc_taskwork.billid = :billid;
- 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 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
- billcode,
- Wagemth,
- orderid,
- wrkGrpid,
- WrkGrpname,
- wageid,
- billdate,
- Dscrp,
- mtrlid,
- relcode,
- AuditingFlag,
- affirmflag,
- relid
- INTO
- :billcode,
- :Wagemth,
- :orderid,
- :wrkGrpid,
- :WrkGrpname,
- :wageid,
- :billdate,
- :Dscrp,
- :mtrlid,
- :relcode,
- :flag,
- :affirmflag,
- :relid
- FROM u_sc_taskwork
- Where billid = :arg_billid
- and 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 Empid, Procode, Proname, Empcode, Empname, Amount, Workprice, Workhour,
- MXDscrp, printid,status,proorder
- FROM u_sc_taskworkmx
- Where billid = :arg_billid;
-
- OPEN cur_mx;
- FETCH cur_mx INTO :taskworkmx[i].empid,:taskworkmx[i].procode,:taskworkmx[i].proname,
- :taskworkmx[i].empcode,:taskworkmx[i].empname,:taskworkmx[i].amount,:taskworkmx[i].workprice,
- :taskworkmx[i].Workhour,:taskworkmx[i].MXDscrp,:taskworkmx[i].printid,:taskworkmx[i].status,:taskworkmx[i].proorder;
-
- DO WHILE sqlca.SQLCode = 0
- i++
- FETCH cur_mx INTO :taskworkmx[i].empid,:taskworkmx[i].procode,:taskworkmx[i].proname,
- :taskworkmx[i].empcode,:taskworkmx[i].empname,:taskworkmx[i].amount,:taskworkmx[i].workprice,
- :taskworkmx[i].Workhour,:taskworkmx[i].MXDscrp,:taskworkmx[i].printid,:taskworkmx[i].status,:taskworkmx[i].proorder;
-
- LOOP
- CLOSE cur_mx;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_sc_taskworkmx
- WHERE u_sc_taskworkmx.billid = :arg_billid;
- 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
- it_mxbt = i - 1
- ext:
- IF rslt = 0 THEN p_reset()
- RETURN rslt
- end function
- public function integer affirm (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long i
- uo_order_ml uo_ml
- uo_ml = CREATE uo_order_ml
- IF arg_billid = 0 THEN
- rslt = 0
- arg_msg = "没有审核对象"
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_billid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF affirmflag = 1 THEN
- rslt = 0
- arg_msg = '该单据已确认'
- GOTO ext
- END IF
- UPDATE u_sc_taskwork
- SET affirmemp = :publ_operator,
- affirmdate = getdate(),
- affirmflag = 1
- WHERE u_sc_taskwork.billid = :arg_billid
- AND affirmflag = 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
- IF sys_option_add_orderrqwp_fqty = 1 THEN
- IF orderid > 0 AND relid > 0 THEN
- FOR i = 1 TO it_mxbt
- IF uo_ml.uof_add_procode_qty(scid,orderid,relid,&
- taskworkmx[i].procode,taskworkmx[i].amount,arg_msg,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- END IF
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- DESTROY uo_ml
- RETURN rslt
- end function
- public function integer c_affirm (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- DateTime null_dt
- SetNull(null_dt)
- Long i
- uo_order_ml uo_ml
- uo_ml = CREATE uo_order_ml
- IF arg_billid = 0 THEN
- rslt = 0
- arg_msg = "没有审核对象"
- GOTO ext
- END IF
- IF getinfo(arg_scid,arg_billid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF affirmflag = 0 THEN
- rslt = 0
- arg_msg = '该单据未确认,不能反确认'
- GOTO ext
- END IF
- UPDATE u_sc_taskwork
- SET affirmemp = '',
- affirmdate = :null_dt,
- affirmflag = 0
- WHERE u_sc_taskwork.billid = :arg_billid
- AND u_sc_taskwork.scid = :arg_scid
- AND affirmflag = 1
- AND AuditingFlag = 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
- IF sys_option_add_orderrqwp_fqty = 1 THEN
- IF orderid > 0 AND relid > 0 THEN
- FOR i = 1 TO it_mxbt
- IF uo_ml.uof_add_procode_qty(scid,orderid,relid,&
- taskworkmx[i].procode,0 - taskworkmx[i].amount,arg_msg,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- END IF
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK ;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT ;
- END IF
- DESTROY uo_ml
- 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
- if p_getinfo(arg_scid,arg_billid,arg_msg) = 0 then
- rslt = 0
- goto ext
- end if
- if affirmflag = 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
- p_clearmx()
- it_newbegin = false
- it_updatebegin = true
- ext:
- if rslt = 0 then p_reset()
- return rslt
- end function
- public function integer acceptmx (long arg_empid, string arg_empcode, string arg_empname, string arg_procode, string arg_proname, decimal arg_amount, decimal arg_workprice, decimal arg_workhour, string arg_mxdscrp, ref string arg_msg, long arg_printid, string arg_status, long arg_proorder);
- Long rslt = 1,cnt = 0,ls_i
- String ls_empname,ls_empcode
- Decimal lde_workqty,ld_othertask_qty
- Decimal ld_Otherbill_qty,ld_Otherbill_qty_2
- Decimal ld_finish_qty
- Decimal lde_orderqty, lde_assignqty, lde_cp_rate, lde_gz_qty
- String ls_assmsg
- 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_procode) THEN arg_procode = ''
- IF IsNull(arg_proname) THEN arg_proname = ''
- IF IsNull(arg_amount) THEN arg_amount = 0
- IF IsNull(arg_workprice) THEN arg_workprice = 0
- IF IsNull(arg_workhour) THEN arg_workhour = 0
- IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = ''
- IF IsNull(arg_status) THEN arg_status = ''
- IF arg_amount = 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 Trim(arg_proname) = '' THEN
- rslt = 0
- arg_msg = '工序名称不能为空'
- GOTO ext
- END IF
- IF arg_amount < 0 Or arg_workhour < 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
- /////////////// //
- IF orderid > 0 THEN //选订单的
- //查订单数
- // u_saletaskmx.orderqty, u_saletaskmx.assignqty
- //按已进仓的比例, 限制计件总数
- SELECT orderqty , assignqty
- INTO :lde_orderqty, :lde_assignqty
- FROM u_saletaskmx
- WHERE scid = :scid
- AND taskid = :orderid
- And printid = :relid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询工序:'+arg_procode+',订单相关信息失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- //计划总数 lde_workqty
- //已完成数 ld_finish_qty
- IF sys_option_add_orderrqwp_fqty = 1 THEN
- //查数量顺带查是否有该工序
- SELECT proqty, finishqty INTO :lde_workqty, :ld_finish_qty
- FROM U_OrderRqwp
- WHERE scid = :scid
- AND printid = :relid
- AND procode = :arg_procode
- AND taskid = :orderid
- And mtrlid = :mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询工序:'+arg_procode+',计划数量失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
-
-
- //计划总数
- // IF sys_option_taskwork_procode_order = 0 THEN
- // SELECT workqty * :qty INTO :lde_workqty
- // FROM u_sc_workprice
- // WHERE mtrlid = :mtrlid
- // And procode = :arg_procode;
- // IF sqlca.SQLCode <> 0 THEN
- // arg_msg = '查询产品工序数失败,'+sqlca.SQLErrText
- // rslt = 0
- // GOTO ext
- // END IF
- // ld_finish_qty = 0
- // END IF
-
- IF sys_option_taskwork_not_affirm = 1 THEN
- ld_finish_qty = 0
- END IF
-
-
- IF sys_opton_taskwork_gz_qty = 0 THEN //按订单已进仓数 开计件单
- lde_gz_qty = lde_assignqty
- ls_assmsg = "订单已进仓数"
- ELSEIF sys_opton_taskwork_gz_qty = 1 THEN //按订单安排生产数 开计件单
- IF sys_option_taskwork_procode_order = 1 THEN
- SELECT proqty INTO :lde_workqty
- FROM U_OrderRqwp
- WHERE scid = :scid
- AND printid = :relid
- AND procode = :arg_procode
- AND taskid = :orderid
- And mtrlid = :mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询工序:'+arg_procode+',计划数量失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- lde_gz_qty = lde_workqty
- ELSE
- SELECT workqty INTO :lde_workqty
- FROM u_sc_workprice
- WHERE mtrlid = :mtrlid
- And procode = :arg_procode;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '行:'+String(arg_printid)+',查询工序:'+arg_procode+',工价表数量失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- lde_gz_qty = lde_orderqty * lde_workqty
- END IF
- ls_assmsg = "订单安排生产数"
- ELSEIF sys_opton_taskwork_gz_qty = 2 THEN //不限制
- lde_gz_qty =100000
- END IF
-
-
- //产品个人工序 已开单数 And (u_sc_taskwork.affirmflag = 0 Or :sys_option_taskwork_not_affirm = 1 )
- SELECT isnull(sum(Amount),0) INTO :ld_othertask_qty
- FROM u_sc_taskworkmx,u_sc_taskwork
- WHERE u_sc_taskworkmx.billid = u_sc_taskwork.billid
- AND u_sc_taskworkmx.scid = u_sc_taskwork.scid
- AND u_sc_taskwork.mtrlid = :mtrlid
- AND u_sc_taskwork.orderid = :orderid
- AND u_sc_taskwork.relid = :relid
- AND u_sc_taskworkmx.procode = :arg_procode
- AND u_sc_taskwork.billid <> :billid
- ;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询工序:'+arg_procode+'其它已开单未确认数失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- //个人产品工序 已开单数 And (u_scwg_taskwork_2.affirmflag = 0 Or :sys_option_taskwork_not_affirm = 1 )
- SELECT isnull(sum(qty),0) INTO :ld_Otherbill_qty_2
- FROM u_scwg_taskwork_2,u_scwg_taskwork_2_mx
- WHERE u_scwg_taskwork_2_mx.billid = u_scwg_taskwork_2.billid
- AND u_scwg_taskwork_2_mx.mtrlid = :mtrlid
- AND u_scwg_taskwork_2_mx.orderid = :orderid
- AND u_scwg_taskwork_2_mx.procode = :arg_procode
- AND u_scwg_taskwork_2_mx.relprintid = :relid
- AND u_scwg_taskwork_2.scid = :scid
- ;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询工序:'+arg_procode+'个人产品计件单开单未确认数失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
-
- Decimal ld_mx_qty = 0
- Long l
- //找本单总数
- FOR l = 1 To it_mxbt
- IF taskworkmx[l].procode = arg_procode THEN
- ld_mx_qty = ld_mx_qty + taskworkmx[l].Amount
- END IF
- NEXT
-
- IF arg_amount + Max(ld_finish_qty , ld_othertask_qty + ld_Otherbill_qty + ld_Otherbill_qty_2) + ld_mx_qty > lde_gz_qty THEN
- rslt = 0
- arg_msg = '第 '+String(arg_printid)+' 行,工序:'+arg_procode+',员工:'+arg_empname+',计件数量不能大于'+ls_assmsg+', 系统选项[081]限制~r~n' &
- + '订单安排生产数:'+String(lde_orderqty,'####0.####')+',已进仓数:'+String(lde_assignqty,'####0.####')+',可计件总数:'+String(lde_gz_qty,'####0.####')+'~r~n' &
- + '计件已完成数:'+String(ld_finish_qty,'####0.####')+',本单已开单:'+String(ld_mx_qty,'####0.####')+',其他已开单数:'+String(ld_othertask_qty + ld_Otherbill_qty + ld_Otherbill_qty_2,'####0.####')+'~r~n' &
- + '不能开单:'+String(arg_amount,'####0.####')+'~r~n' &
- + String(lde_gz_qty,'####0.####') +' < '+String(ld_finish_qty,'####0.####')+' + '+String(ld_mx_qty,'####0.####')+' + '+String(ld_othertask_qty + ld_Otherbill_qty + ld_Otherbill_qty_2,'####0.####')+' + '+String(arg_amount,'####0.####')
- GOTO ext
- END IF
- END IF
- //***检查工价表工序是否已审核工价
- Int ll_auditflag
- IF sys_option_taskwork_procode_order = 0 THEN
- SELECT auditflag
- INTO :ll_auditflag
- FROM u_sc_workprice
- WHERE mtrlid = :mtrlid
- And procode = :arg_procode;
- IF sqlca.SQLCode = 0 THEN
- IF ll_auditflag = 0 THEN
- arg_msg = '工序工价未审核:'+arg_procode+arg_proname
- rslt = 0
- GOTO ext
- END IF
- ELSE
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_sc_workprocedure
- WHERE code = :arg_procode
- And ifpubl = 1;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询工序:'+arg_procode+arg_proname+' 审核标记失败'
- rslt = 0
- GOTO ext
- END IF
-
- IF cnt = 0 THEN
- arg_msg = '查询工序:'+arg_procode+arg_proname+' 审核标记失败'
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- //******************************
- Decimal ld_workprice
- //检查限价
- IF sys_option_taskwork_price_if_mod = 1 THEN //启用检查限价选项
- IF sys_option_taskwork_procode_order = 0 THEN //按工价表限价
- SELECT workPrice INTO :ld_workprice
- FROM u_sc_workprice
- WHERE mtrlid = :mtrlid
- And procode = :arg_procode;
- IF sqlca.SQLCode = 0 THEN
- IF ld_workprice <> arg_workprice THEN
- rslt = 0
- arg_msg = '工序:'+arg_procode+' 工价表工价为:'+String(ld_workprice,'#,##0.00########')+',不能输入工价:'+String(arg_workprice,'#,##0.00########')
- GOTO ext
- END IF
- ELSE
- SELECT workprice INTO :ld_workprice
- FROM u_sc_workprocedure
- WHERE code = :arg_procode
- And ifpubl = 1;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询公共工序:'+arg_procode+' 工价失败'+'~n'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF ld_workprice <> arg_workprice THEN
- rslt = 0
- arg_msg = '公共工序:'+arg_procode+' 工价为:'+String(ld_workprice,'#,##0.00########')+',不能输入工价:'+String(arg_workprice,'#,##0.00########')
- GOTO ext
- END IF
- END IF
- ELSE //按生产计划工序明细限价
- SELECT workPrice INTO :ld_workprice
- FROM U_OrderRqwp
- WHERE scid = :scid
- AND taskid = :orderid
- AND printid = :relid
- And procode = :arg_procode;
- IF sqlca.SQLCode = 0 THEN
- IF ld_workprice <> arg_workprice THEN
- rslt = 0
- arg_msg = '工序:'+arg_procode+' 生产计划工序明细工价为:'+String(ld_workprice,'#,##0.00########')+',不能输入工价:'+String(arg_workprice,'#,##0.00########')
- GOTO ext
- END IF
- ELSE
- SELECT workprice INTO :ld_workprice
- FROM u_sc_workprocedure
- WHERE code = :arg_procode
- And ifpubl = 1;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询公共工序:'+arg_procode+' 工价失败'+'~n'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF ld_workprice <> arg_workprice THEN
- rslt = 0
- arg_msg = '公共工序:'+arg_procode+' 工价为:'+String(ld_workprice,'#,##0.00########')+',不能输入工价:'+String(arg_workprice,'#,##0.00########')
- GOTO ext
- END IF
- END IF
- END IF
- END IF
- /////////////////////////// //
- FOR ls_i = 1 To it_mxbt //合并重复项
- IF taskworkmx[ls_i].empid = arg_empid And &
- taskworkmx[ls_i].procode = arg_procode THEN
- taskworkmx[ls_i].Amount = taskworkmx[ls_i].Amount+arg_amount
- taskworkmx[ls_i].workhour = taskworkmx[ls_i].workhour+arg_workhour
- rslt = 1
- GOTO ext
- END IF
- NEXT
- //写入内容
- it_mxbt++
- taskworkmx[it_mxbt].empid = arg_empid
- taskworkmx[it_mxbt].empcode = arg_empcode
- taskworkmx[it_mxbt].empname = arg_empname
- taskworkmx[it_mxbt].procode = arg_procode
- taskworkmx[it_mxbt].proname = arg_proname
- taskworkmx[it_mxbt].Amount = arg_amount
- taskworkmx[it_mxbt].workPrice = arg_workprice
- taskworkmx[it_mxbt].workhour = arg_workhour
- taskworkmx[it_mxbt].mxdscrp = arg_mxdscrp
- taskworkmx[it_mxbt].printid = arg_printid
- taskworkmx[it_mxbt].status = arg_status
- taskworkmx[it_mxbt].proorder = arg_proorder
- ext:
- IF rslt = 0 THEN p_clearmx()
- 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
- uo_order_ml uo_ml
- uo_ml = Create uo_order_ml
- 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 sys_option_taskwork_not_affirm = 0 THEN
- IF affirmflag = 0 THEN
- rslt = 0
- arg_msg = '单据需要先确认后审核,请检查'
- GOTO ext
- END IF
- END IF
- IF flag = 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 = :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 = taskworkmx[i].amount * taskworkmx[i].workprice
- IF u_wage.f_setwagemxdata(wagemth,taskworkmx[i].empid,wageid,ls_emp_sumwage,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- IF sys_option_taskwork_not_affirm = 0 THEN
- UPDATE u_sc_taskwork SET
- Auditingflag = 1,
- Auditingrep = :publ_operator,
- Auditingdate = getdate()
- WHERE Auditingflag = 0
- AND billid = :arg_billid
- And scid = :arg_scid;
- ELSE
- UPDATE u_sc_taskwork SET
- Auditingflag = 1,
- Auditingrep = :publ_operator,
- Auditingdate = getdate(),
- affirmdate = getdate(),
- affirmemp = :publ_operator,
- affirmflag = 1
- WHERE Auditingflag = 0
- AND billid = :arg_billid
- And scid = :arg_scid;
- END IF
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新计件明细单失败,原因>>'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF sys_option_taskwork_not_affirm = 1 THEN
- IF sys_option_add_orderrqwp_fqty = 1 THEN
- IF orderid > 0 And relid > 0 THEN
- FOR i = 1 To it_mxbt
- IF uo_ml.uof_add_procode_qty(scid,orderid,relid,&
- taskworkmx[i].procode,taskworkmx[i].amount,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- END IF
- END IF
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- Destroy uo_ml
- 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
- DateTime null_server_dt
- Decimal ls_emp_sumwage
- SetNull(null_server_dt)
- uo_order_ml uo_ml
- uo_ml = Create uo_order_ml
- 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
- 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 = taskworkmx[i].amount * taskworkmx[i].workprice
- IF u_wage.f_setwagemxdata(wagemth,taskworkmx[i].empid,wageid,0 - ls_emp_sumwage,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- IF sys_option_taskwork_not_affirm = 0 THEN
- UPDATE u_sc_taskwork SET
- Auditingflag = 0,
- Auditingrep = '',
- Auditingdate = :null_server_dt
- WHERE Auditingflag = 1
- AND scid = :arg_scid
- And billid = :arg_billid;
- ELSE
- UPDATE u_sc_taskwork SET
- Auditingflag = 0,
- Auditingrep = '',
- Auditingdate = :null_server_dt,
- affirmdate = :null_server_dt,
- affirmemp = '',
- affirmflag = 0
- WHERE Auditingflag = 1
- AND scid = :arg_scid
- And billid = :arg_billid;
- END IF
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新计件明细单失败,原因:'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF sys_option_taskwork_not_affirm = 1 THEN
- IF sys_option_add_orderrqwp_fqty = 1 THEN
- IF orderid > 0 And relid > 0 THEN
- FOR i = 1 To it_mxbt
- IF uo_ml.uof_add_procode_qty(scid,orderid,relid,&
- taskworkmx[i].procode,0 - taskworkmx[i].amount,arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- END IF
- END IF
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- Destroy uo_ml
- RETURN rslt
- end function
- public function integer auditing (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_sumworktaskwage
- IF sys_option_taskwork_not_affirm = 0 THEN
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_sc_taskwork
- WHERE wagemth = :arg_wagemth
- AND wageid = :arg_wageid
- AND affirmflag = 0;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询是否有单未确认操作失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF cnt > 0 THEN
- rslt = 0
- arg_msg = '该月份存在未确认的单据('+String(cnt)+'),请先全部确认'
- GOTO ext
- END IF
- END IF
- //cnt = 0
- //SELECT count(*) INTO :cnt
- // FROM u_sc_taskwork
- // 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_sumworktaskwage = CREATE datastore
- ds_emp_sumworktaskwage.DataObject = 'dw_emp_sumtaskworkwage'
- ds_emp_sumworktaskwage.SetTransObject(sqlca)
- IF ds_emp_sumworktaskwage.Retrieve(arg_wagemth,arg_wageid) <= 0 THEN
- rslt = 0
- arg_msg = '本月没有计件单可审核或查询计件单失败'
- GOTO ext
- END IF
- FOR i = 1 TO ds_emp_sumworktaskwage.RowCount()
- ls_emp_sumwage = 0.00
- ls_emp_sumwage = ds_emp_sumworktaskwage.Object.sumwage[i]
- IF u_wage.f_setwagemxdata(arg_wagemth,ds_emp_sumworktaskwage.Object.empid[i],arg_wageid,ls_emp_sumwage,arg_msg,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- IF sys_option_taskwork_not_affirm = 0 THEN
- UPDATE u_sc_taskwork SET
- Auditingflag = 1,
- Auditingrep = :publ_operator,
- Auditingdate = getdate()
- WHERE wagemth = :arg_wagemth
- AND Auditingflag = 0
- AND wageid = :arg_wageid;
- ELSE
- UPDATE u_sc_taskwork SET
- Auditingflag = 1,
- Auditingrep = :publ_operator,
- Auditingdate = getdate(),
- affirmdate = getdate(),
- affirmemp = :publ_operator,
- affirmflag = 1
- WHERE wagemth = :arg_wagemth
- AND Auditingflag = 0
- AND wageid = :arg_wageid;
- 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 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 p_getinfo(arg_scid,arg_billid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF affirmflag = 1 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_taskwork
- WHERE u_sc_taskwork.billid = :arg_billid
- AND u_sc_taskwork.scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除计件单操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_sc_taskworkmx
- WHERE u_sc_taskworkmx.billid = :arg_billid
- AND u_sc_taskworkmx.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
- on uo_taskwork.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_taskwork.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
- event constructor; u_wage=create uo_wage
- end event
- event destructor;DESTROY u_wage
- end event
|