uo_scwg_taskwork_2.sru 82 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050
  1. $PBExportHeader$uo_scwg_taskwork_2.sru
  2. forward
  3. global type uo_scwg_taskwork_2 from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_scwg_taskwork_2 from nonvisualobject
  7. end type
  8. global uo_scwg_taskwork_2 uo_scwg_taskwork_2
  9. type variables
  10. PUBLIC PROTECTEDWRITE Long billid
  11. PUBLIC PROTECTEDWRITE Long scid
  12. PUBLIC PROTECTEDWRITE String billcode
  13. PUBLIC PROTECTEDWRITE DateTime opdate
  14. PUBLIC PROTECTEDWRITE String opemp
  15. PUBLIC PROTECTEDWRITE DateTime moddate
  16. PUBLIC PROTECTEDWRITE String modemp
  17. PUBLIC PROTECTEDWRITE Int flag
  18. PUBLIC PROTECTEDWRITE DateTime auditingdate
  19. PUBLIC PROTECTEDWRITE String auditingrep
  20. PUBLIC PROTECTEDWRITE Int affirmflag
  21. PUBLIC PROTECTEDWRITE DateTime affirmdate
  22. PUBLIC PROTECTEDWRITE String affirmemp
  23. Int billtype
  24. DateTime billdate
  25. String dscrp
  26. Long wagemth
  27. String rep
  28. String relcode
  29. Long wageid
  30. Long wrkgrpid
  31. string relempstr
  32. long relid
  33. long wkpid
  34. Boolean if_getid_ture = false
  35. s_scwg_taskwork_2 taskworkmx[]
  36. Transaction commit_transaction
  37. Long it_mxbt = 0
  38. Boolean it_newbegin = FALSE
  39. Boolean it_updatebegin = FALSE
  40. Int uo_option_taskwork_not_affirm
  41. Int uo_option_taskwork2_noorder
  42. Int uo_option_taskwork_person_noorder
  43. Int uo_option_taskwork_procode_order
  44. Int uo_option_taskwork_price_if_mod
  45. Int uo_option_if_taskwork_acmpqty
  46. int uo_option_check_noworkprice
  47. end variables
  48. forward prototypes
  49. public function integer p_clearmx ()
  50. public function integer p_reset ()
  51. public function integer updatebegin (long arg_billid, ref string arg_msg)
  52. public function integer save (ref string arg_msg, boolean arg_ifcommit)
  53. public function integer newbegin (long arg_scid, ref string arg_msg)
  54. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
  55. public function integer affirm (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  56. public function integer c_affirm (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  57. public function integer p_getinfo (long arg_billid, ref string arg_msg)
  58. public function integer getinfo (long arg_billid, string arg_msg)
  59. public function integer auditmx_1 (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  60. public function integer cauditmx_1 (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  61. public function integer auditing_0 (long arg_wageid, long arg_wagemth, long arg_wrkgrpid, ref string arg_msg, boolean arg_ifcommit)
  62. public function integer auditing_2 (long arg_wageid, long arg_wagemth, long arg_wrkgrpid, ref string arg_msg, boolean arg_ifcommit)
  63. public function integer c_auditing_0 (long arg_wageid, long arg_wagemth, long arg_wrkgrpid, ref string arg_msg, boolean arg_ifcommit)
  64. public function integer c_auditing_2 (long arg_wageid, long arg_wagemth, long arg_wrkgrpid, ref string arg_msg, boolean arg_ifcommit)
  65. public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  66. public function decimal uo_wage_fp_formula (string arg_formula, decimal arg_amt, decimal arg_assignamt, decimal arg_assignamt_sm, decimal arg_assignscore, decimal arg_assignscore_sm, decimal arg_assignday, decimal arg_assignday_sm)
  67. public function integer acceptmx (long arg_mtrlid, string arg_procode, string arg_proname, decimal arg_qty, decimal arg_price, string arg_mxdscrp, ref string arg_msg, long arg_printid, string arg_status, string arg_woodcode, string arg_pcode, string arg_ycreason, long arg_orderid, string arg_reason, string arg_unit, decimal arg_failqty, decimal arg_facthours, string arg_wpcode)
  68. public function integer auditing_1 (long arg_scid, long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit)
  69. public function integer c_auditing_1 (long arg_scid, long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit)
  70. end prototypes
  71. public function integer p_clearmx ();//INT p_clearmx()
  72. //清除明细
  73. it_mxbt=0
  74. RETURN 1
  75. end function
  76. public function integer p_reset ();//INT p_RESET()
  77. //清除对象及其明细
  78. billid=0
  79. billcode=''
  80. opemp=''
  81. auditingrep=''
  82. flag=0
  83. wagemth=0
  84. rep=""
  85. wageid=0
  86. dscrp=''
  87. relcode=''
  88. wkpid = 0
  89. it_newbegin=FALSE
  90. it_updatebegin=FALSE
  91. //清除明细
  92. P_CLEARMX()
  93. RETURN 1
  94. end function
  95. public function integer updatebegin (long arg_billid, ref string arg_msg);int rslt = 1
  96. if arg_billid <= 0 then
  97. rslt = 0
  98. goto ext
  99. end if
  100. if p_getinfo(arg_billid,arg_msg) = 0 then
  101. rslt = 0
  102. goto ext
  103. end if
  104. IF affirmflag = 1 THEN
  105. rslt = 0
  106. arg_msg = '单据已经确认,不可以修改'
  107. GOTO ext
  108. END IF
  109. if flag = 1 then
  110. rslt = 0
  111. arg_msg = '单据已经审核,不可以修改'
  112. goto ext
  113. end if
  114. billid = arg_billid
  115. p_clearmx()
  116. it_newbegin = false
  117. it_updatebegin = true
  118. ext:
  119. if rslt = 0 then p_reset()
  120. return rslt
  121. end function
  122. public function integer save (ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1,cnt = 0,i
  123. DateTime server_dt
  124. Long ls_newid
  125. IF IsNull(wageid) THEN wageid = 0
  126. IF IsNull(wrkgrpid) THEN wrkgrpid = 0
  127. IF IsNull(relcode) THEN relcode = ''
  128. IF IsNull(rep) THEN rep = ''
  129. IF IsNull(wagemth) THEN wagemth = 0
  130. IF IsNull(dscrp) THEN dscrp = ''
  131. IF IsNull(relid) THEN relid = 0
  132. IF IsNull(wkpid) THEN wkpid = 0
  133. IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
  134. rslt = 0
  135. arg_msg = "非编辑状态不可以提交"
  136. GOTO ext
  137. END IF
  138. SELECT Top 1 getdate() INTO :server_dt FROM u_user USING commit_transaction;
  139. IF commit_transaction.SQLCode <> 0 THEN
  140. rslt = 0
  141. arg_msg = "查询操作失败,日期 "
  142. GOTO ext
  143. END IF
  144. IF it_mxbt = 0 THEN //
  145. rslt = 0
  146. arg_msg = "没有计件明细"
  147. GOTO ext
  148. END IF
  149. IF Year(Date(billdate)) < 2000 OR IsNull(billdate) THEN
  150. rslt = 0
  151. arg_msg = "缺少计件时间或不合理"
  152. GOTO ext
  153. END IF
  154. cnt = 0
  155. SELECT count(*) INTO :cnt
  156. FROM u_gz_wageitem
  157. Where wageid = :wageid USING commit_transaction;
  158. IF commit_transaction.SQLCode <> 0 THEN
  159. rslt = 0
  160. arg_msg = "查询工资项目失败!"
  161. GOTO ext
  162. END IF
  163. IF cnt <> 1 THEN
  164. rslt = 0
  165. arg_msg = "不存在工资项目!"
  166. GOTO ext
  167. END IF
  168. if trim(rep) = '' then
  169. rslt = 0
  170. arg_msg = '请填写经手人'
  171. goto ext
  172. end if
  173. cnt = 0
  174. IF billtype = 0 OR billtype = 2 THEN
  175. SELECT count(*) INTO :cnt
  176. FROM u_workgroup
  177. Where workgroupid = :wrkgrpid USING commit_transaction;
  178. IF commit_transaction.SQLCode <> 0 THEN
  179. rslt = 0
  180. arg_msg = "查询工作组失败!"
  181. GOTO ext
  182. END IF
  183. IF cnt <> 1 THEN
  184. rslt = 0
  185. arg_msg = "不存在工作组!"
  186. GOTO ext
  187. END IF
  188. ELSEIF billtype = 1 THEN
  189. SELECT count(*) INTO :cnt
  190. FROM u_rs_empinfo
  191. Where empid = :wrkgrpid USING commit_transaction;
  192. IF commit_transaction.SQLCode <> 0 THEN
  193. rslt = 0
  194. arg_msg = "查询员工资料失败!"
  195. GOTO ext
  196. END IF
  197. IF cnt <> 1 THEN
  198. rslt = 0
  199. arg_msg = "不存在员工资料!"
  200. GOTO ext
  201. END IF
  202. END IF
  203. String ls_empname[]
  204. Long ll_i,ll_j
  205. ll_i = 1
  206. relempstr = ''
  207. IF billtype = 0 OR billtype = 2 THEN
  208. DECLARE cur_emp CURSOR FOR
  209. SELECT
  210. u_rs_empinfo.Empname
  211. FROM u_rs_empinfo,
  212. u_workgroupmx
  213. WHERE
  214. ( u_rs_empinfo.empid = u_workgroupmx.empid ) AND
  215. (u_workgroupmx.workgroupid = :wrkgrpid);
  216. OPEN cur_emp;
  217. FETCH cur_emp INTO :ls_empname[ll_i];
  218. DO WHILE sqlca.SQLCode = 0
  219. ll_i++
  220. FETCH cur_emp INTO :ls_empname[ll_i];
  221. LOOP
  222. CLOSE cur_emp;
  223. FOR ll_j = 1 TO ll_i - 1
  224. relempstr = relempstr + ls_empname[ll_j] + ','
  225. NEXT
  226. END IF
  227. //cnt = 0
  228. //SELECT count(*) INTO :cnt
  229. // FROM u_scwg_taskwork_2
  230. // WHERE flag = 1
  231. // AND wagemth = :wagemth
  232. // AND wrkgrpid = :wrkgrpid
  233. // AND billtype = :billtype
  234. // AND wageid = :wageid USING commit_transaction;
  235. //IF commit_transaction.SQLCode <> 0 THEN
  236. // arg_msg = '查询本月是否有单审核失败,'+commit_transaction.SQLErrText
  237. // rslt = 0
  238. // GOTO ext
  239. //END IF
  240. //
  241. //IF cnt > 0 THEN
  242. // arg_msg = '查询本月已有单审核,不能保存'
  243. // rslt = 0
  244. // GOTO ext
  245. //END IF
  246. ////////////////////////////////////////////// //开始区分:新建/更新 处理
  247. IF billid = 0 THEN //新建
  248. ls_newid = f_sys_scidentity(0,"u_scwg_taskwork_2","billid",arg_msg,TRUE,id_sqlca)
  249. IF ls_newid <= 0 THEN
  250. rslt = 0
  251. GOTO ext
  252. END IF
  253. IF billtype = 0 THEN
  254. billcode = getid(0,"JW",Date(server_dt),if_getid_ture,commit_transaction) //取得新单据编号
  255. ELSEIF billtype = 1 THEN
  256. billcode = getid(0,"JP",Date(server_dt),if_getid_ture,commit_transaction) //取得新单据编号
  257. ELSEIF billtype = 2 THEN //工作组月分配异常计件单
  258. billcode = getid(0,"AW",Date(server_dt),if_getid_ture,commit_transaction) //取得新单据编号
  259. END IF
  260. IF billcode = "err" THEN
  261. billcode = ''
  262. rslt = 0
  263. arg_msg = "无法获取单据编号"
  264. GOTO ext
  265. END IF
  266. INSERT INTO u_scwg_taskwork_2 (
  267. billid,
  268. billdate,
  269. wagemth,
  270. rep,
  271. relcode,
  272. dscrp,
  273. scid,
  274. billcode,
  275. wrkgrpid,
  276. opemp,
  277. opdate,
  278. wageid,
  279. billtype,
  280. relempstr,
  281. relid,
  282. wkpid)
  283. VALUES (
  284. :ls_newid,
  285. :billdate,
  286. :wagemth,
  287. :rep,
  288. :relcode,
  289. :dscrp,
  290. :scid,
  291. :billcode,
  292. :wrkgrpid,
  293. :publ_operator,
  294. :server_dt ,
  295. :wageid,
  296. :billtype,
  297. :relempstr,
  298. :relid,
  299. :wkpid) USING commit_transaction;
  300. IF commit_transaction.SQLCode <> 0 THEN
  301. rslt = 0
  302. arg_msg = "因网络或其它原因导致插入操作失败>>"+"~n"+sqlca.SQLErrText
  303. GOTO ext
  304. END IF
  305. //
  306. billid = ls_newid
  307. FOR i = 1 TO it_mxbt
  308. INSERT INTO u_scwg_taskwork_2_mx (
  309. billid,
  310. procode,
  311. proname,
  312. qty,
  313. price,
  314. mxdscrp,
  315. mtrlid,
  316. printid,
  317. status,
  318. woodcode,
  319. pcode,
  320. ycreason,
  321. orderid,
  322. ordercode,
  323. reason,
  324. unit,
  325. failqty,
  326. facthours,
  327. wpcode)
  328. VALUES (
  329. :ls_newid,
  330. :taskworkmx[i].procode,
  331. :taskworkmx[i].proname,
  332. :taskworkmx[i].qty,
  333. :taskworkmx[i].price,
  334. :taskworkmx[i].mxdscrp,
  335. :taskworkmx[i].mtrlid,
  336. :taskworkmx[i].printid,
  337. :taskworkmx[i].status,
  338. :taskworkmx[i].woodcode,
  339. :taskworkmx[i].pcode,
  340. :taskworkmx[i].ycreason,
  341. :taskworkmx[i].orderid,
  342. :taskworkmx[i].ordercode,
  343. :taskworkmx[i].reason,
  344. :taskworkmx[i].unit,
  345. :taskworkmx[i].failqty,
  346. :taskworkmx[i].facthours,
  347. :taskworkmx[i].wpcode) USING commit_transaction;
  348. IF commit_transaction.SQLCode <> 0 THEN
  349. billid = 0 //还原noticeid
  350. rslt = 0
  351. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
  352. ROLLBACK ;
  353. GOTO ext
  354. END IF
  355. NEXT
  356. ELSE //////////////////////////////////////////////// //更新
  357. UPDATE u_scwg_taskwork_2
  358. SET billdate = :billdate,
  359. wagemth = :wagemth,
  360. rep = :rep,
  361. relcode = :relcode,
  362. dscrp = :dscrp,
  363. billcode = :billcode,
  364. wrkgrpid = :wrkgrpid,
  365. modemp = :publ_operator,
  366. moddate = :server_dt,
  367. wageid = :wageid,
  368. relempstr = :relempstr,
  369. relid = :relid,
  370. wkpid = :wkpid
  371. WHERE billid = :billid
  372. AND flag = 0 USING commit_transaction;
  373. IF commit_transaction.SQLCode <> 0 OR commit_transaction.SQLNRows <= 0 THEN
  374. rslt = 0
  375. arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText
  376. GOTO ext
  377. END IF
  378. // 删除原有明细
  379. DELETE FROM u_scwg_taskwork_2_mx
  380. Where billid = :billid USING commit_transaction;
  381. IF commit_transaction.SQLCode <> 0 THEN
  382. rslt = 0
  383. arg_msg = "删除旧有明细操作失败"+"~n"+sqlca.SQLErrText
  384. GOTO ext
  385. END IF
  386. FOR i = 1 TO it_mxbt
  387. INSERT INTO u_scwg_taskwork_2_mx (
  388. billid,
  389. procode,
  390. proname,
  391. qty,
  392. price,
  393. mxdscrp,
  394. mtrlid,
  395. printid,
  396. status,
  397. woodcode,
  398. pcode,
  399. ycreason,
  400. orderid,
  401. ordercode,
  402. reason,
  403. unit,
  404. failqty,
  405. facthours,
  406. wpcode)
  407. VALUES (
  408. :billid,
  409. :taskworkmx[i].procode,
  410. :taskworkmx[i].proname,
  411. :taskworkmx[i].qty,
  412. :taskworkmx[i].price,
  413. :taskworkmx[i].mxdscrp,
  414. :taskworkmx[i].mtrlid,
  415. :taskworkmx[i].printid,
  416. :taskworkmx[i].status,
  417. :taskworkmx[i].woodcode,
  418. :taskworkmx[i].pcode,
  419. :taskworkmx[i].ycreason,
  420. :taskworkmx[i].orderid,
  421. :taskworkmx[i].ordercode,
  422. :taskworkmx[i].reason,
  423. :taskworkmx[i].unit,
  424. :taskworkmx[i].failqty,
  425. :taskworkmx[i].facthours,
  426. :taskworkmx[i].wpcode) USING commit_transaction;
  427. IF commit_transaction.SQLCode <> 0 THEN
  428. rslt = 0
  429. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
  430. GOTO ext
  431. END IF
  432. NEXT
  433. //
  434. END IF
  435. it_newbegin = FALSE
  436. it_updatebegin = FALSE
  437. ext:
  438. IF rslt = 0 THEN
  439. ROLLBACK;
  440. p_clearmx()
  441. ELSEIF rslt = 1 AND arg_ifcommit THEN
  442. COMMIT;
  443. END IF
  444. Return(rslt)
  445. end function
  446. public function integer newbegin (long arg_scid, ref string arg_msg);long rslt = 1
  447. if arg_scid < 0 then
  448. arg_msg = '请选择分部'
  449. rslt = 0
  450. goto ext
  451. end if
  452. p_reset()
  453. scid=arg_scid
  454. it_newbegin=TRUE
  455. it_updatebegin=FALSE
  456. ext:
  457. if rslt = 0 then p_reset()
  458. return rslt
  459. end function
  460. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);//====================================================================
  461. // Function: add_dscrp(arg_billid,arg_newdescppart,arg_msg)
  462. //--------------------------------------------------------------------
  463. // Description:
  464. //--------------------------------------------------------------------
  465. // Arguments:
  466. // value long arg_billid
  467. // value string arg_newdescppart
  468. // reference string arg_msg
  469. //--------------------------------------------------------------------
  470. // Returns: integer
  471. //--------------------------------------------------------------------
  472. // Author: yyx Date: 2003.11.21
  473. //--------------------------------------------------------------------
  474. // Modify History:
  475. //
  476. //====================================================================
  477. int rslt = 1
  478. arg_newdescppart = trim(arg_newdescppart)
  479. if arg_billid <= 0 then
  480. rslt = 0
  481. arg_msg = "没有删除对象,操作取消"
  482. goto ext
  483. end if
  484. if it_newbegin or it_updatebegin then
  485. rslt=0
  486. arg_msg="编辑状态下不可以执行,操作取消"
  487. goto ext
  488. end if
  489. if p_getinfo(arg_billid,arg_msg) = 0 then
  490. rslt = 0
  491. goto ext
  492. end if
  493. if flag = 0 then
  494. rslt = 0
  495. arg_msg = "非审核状态下不可用"
  496. goto ext
  497. end if
  498. update u_scwg_taskwork_2
  499. set dscrp = dscrp+' '+:arg_newdescppart
  500. where u_scwg_taskwork_2.billid = :billid
  501. using commit_transaction;
  502. if commit_transaction.sqlcode <> 0 then
  503. rslt = 0
  504. arg_msg = "因网络或其它原因导致添加单据备注操作失败"+"~n"+sqlca.sqlerrtext
  505. goto ext
  506. end if
  507. dscrp = dscrp+' '+arg_newdescppart
  508. ext:
  509. if rslt = 0 then
  510. rollback;
  511. elseif rslt = 1 and arg_ifcommit then
  512. commit;
  513. end if
  514. return rslt
  515. end function
  516. public function integer affirm (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  517. Long i
  518. uo_order_ml uo_ml
  519. uo_ml = CREATE uo_order_ml
  520. IF arg_billid = 0 THEN
  521. rslt = 0
  522. arg_msg = "没有审核对象"
  523. GOTO ext
  524. END IF
  525. IF getinfo(arg_billid,arg_msg) = 0 THEN
  526. rslt = 0
  527. GOTO ext
  528. END IF
  529. IF affirmflag = 1 THEN
  530. rslt = 0
  531. arg_msg = '该单据已确认'
  532. GOTO ext
  533. END IF
  534. UPDATE u_scwg_taskwork_2
  535. SET affirmemp = :publ_operator,
  536. affirmdate = getdate(),
  537. affirmflag = 1
  538. WHERE u_scwg_taskwork_2.billid = :arg_billid
  539. AND affirmflag = 0
  540. USING commit_transaction;
  541. IF commit_transaction.SQLCode <> 0 THEN
  542. rslt = 0
  543. arg_msg = "因网络或其它原因导致确认单据操作失败"+"~n"+commit_transaction.SQLErrText
  544. GOTO ext
  545. ELSEIF commit_transaction.SQLNRows = 0 THEN
  546. rslt = 0
  547. arg_msg = "单据正在确认,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  548. GOTO ext
  549. END IF
  550. FOR i = 1 TO it_mxbt
  551. IF taskworkmx[i].orderid > 0 THEN
  552. IF uo_ml.uof_add_procode_qty(scid,taskworkmx[i].orderid,&
  553. taskworkmx[i].procode,billdate, taskworkmx[i].qty,arg_msg,FALSE) = 0 THEN
  554. arg_msg = '第'+string(i)+'行,'+arg_msg
  555. rslt = 0
  556. GOTO ext
  557. END IF
  558. END IF
  559. NEXT
  560. ext:
  561. IF rslt = 0 THEN
  562. ROLLBACK USING commit_transaction;
  563. ELSEIF rslt = 1 AND arg_ifcommit THEN
  564. COMMIT USING commit_transaction;
  565. END IF
  566. DESTROY uo_ml
  567. RETURN rslt
  568. end function
  569. public function integer c_affirm (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  570. DateTime null_dt
  571. SetNull(null_dt)
  572. Long i
  573. uo_order_ml uo_ml
  574. uo_ml = CREATE uo_order_ml
  575. IF arg_billid = 0 THEN
  576. rslt = 0
  577. arg_msg = "没有审核对象"
  578. GOTO ext
  579. END IF
  580. IF getinfo(arg_billid,arg_msg) = 0 THEN
  581. rslt = 0
  582. GOTO ext
  583. END IF
  584. IF affirmflag = 0 THEN
  585. rslt = 0
  586. arg_msg = '该单据未确认,不能反确认'
  587. GOTO ext
  588. END IF
  589. UPDATE u_scwg_taskwork_2
  590. SET affirmemp = '',
  591. affirmdate = :null_dt,
  592. affirmflag = 0
  593. WHERE u_scwg_taskwork_2.billid = :arg_billid
  594. AND affirmflag = 1
  595. AND flag = 0
  596. USING commit_transaction;
  597. IF commit_transaction.SQLCode <> 0 THEN
  598. rslt = 0
  599. arg_msg = "因网络或其它原因导致反确认单据操作失败"+"~n"+commit_transaction.SQLErrText
  600. GOTO ext
  601. ELSEIF commit_transaction.SQLNRows = 0 THEN
  602. rslt = 0
  603. arg_msg = "单据正在反确认,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  604. GOTO ext
  605. END IF
  606. FOR i = 1 TO it_mxbt
  607. IF taskworkmx[i].orderid > 0 THEN
  608. IF uo_ml.uof_add_procode_qty(scid,taskworkmx[i].orderid,&
  609. taskworkmx[i].procode,billdate,0 - taskworkmx[i].qty,arg_msg,FALSE) = 0 THEN
  610. arg_msg = '第'+string(i)+'行,'+arg_msg
  611. rslt = 0
  612. GOTO ext
  613. END IF
  614. END IF
  615. NEXT
  616. ext:
  617. IF rslt = 0 THEN
  618. ROLLBACK USING commit_transaction;
  619. ELSEIF rslt = 1 AND arg_ifcommit THEN
  620. COMMIT USING commit_transaction;
  621. END IF
  622. DESTROY uo_ml
  623. RETURN rslt
  624. end function
  625. public function integer p_getinfo (long arg_billid, ref string arg_msg);Int rslt = 1
  626. IF arg_billid <= 0 THEN
  627. rslt = 0
  628. arG_MSG = "非法的单据唯一码"
  629. GOTO ext
  630. END IF
  631. SELECT billid,
  632. billdate,
  633. wagemth,
  634. rep,
  635. relcode,
  636. dscrp,
  637. scid,
  638. billcode,
  639. wrkgrpid,
  640. flag,
  641. affirmflag,
  642. scid,
  643. wageid
  644. INTO
  645. :billid,
  646. :billdate,
  647. :wagemth,
  648. :rep,
  649. :relcode,
  650. :dscrp,
  651. :scid,
  652. :billcode,
  653. :wrkgrpid,
  654. :flag,
  655. :affirmflag,
  656. :scid,
  657. :wageid
  658. FROM u_scwg_taskwork_2
  659. WHERE u_scwg_taskwork_2.billid = :arg_billid
  660. USING commit_transaction;
  661. IF commit_transaction.SQLCode <> 0 THEN
  662. rslt = 0
  663. arG_MSG = "查询操作失败(错误单据唯一码),单据"+commit_transaction.SQLErrText
  664. GOTO ext
  665. END IF
  666. billid = arg_billid
  667. ext:
  668. IF rslt = 0 THEN p_reset()
  669. RETURN rslt
  670. end function
  671. public function integer getinfo (long arg_billid, string arg_msg);
  672. Int rslt = 1
  673. Long i = 1,no_mxcheck = 0
  674. IF arg_billid <= 0 THEN
  675. rslt = 0
  676. arg_msg = "非法出仓单唯一码"
  677. GOTO ext
  678. END IF
  679. rslt = p_getinfo(arg_billid,arg_msg)
  680. IF rslt = 0 THEN GOTO ext
  681. //用游标读取明细
  682. DECLARE cur_mx CURSOR FOR
  683. SELECT u_scwg_taskwork_2_mx.mtrlid,
  684. u_scwg_taskwork_2_mx.qty,
  685. u_scwg_taskwork_2_mx.orderid,
  686. u_scwg_taskwork_2_mx.ordercode,
  687. u_scwg_taskwork_2_mx.procode,
  688. u_scwg_taskwork_2_mx.price,
  689. u_scwg_taskwork_2_mx.wpcode
  690. FROM u_scwg_taskwork_2_mx
  691. WHERE u_scwg_taskwork_2_mx.billid = :arg_billid
  692. USING commit_transaction;
  693. OPEN cur_mx;
  694. FETCH cur_mx INTO :taskworkmx[i].mtrlid,:taskworkmx[i].qty,
  695. :taskworkmx[i].orderid,:taskworkmx[i].ordercode,
  696. :taskworkmx[i].procode,:taskworkmx[i].price,:taskworkmx[i].wpcode;
  697. DO WHILE commit_transaction.SQLCode = 0
  698. i++
  699. FETCH cur_mx INTO :taskworkmx[i].mtrlid,:taskworkmx[i].qty,
  700. :taskworkmx[i].orderid,:taskworkmx[i].ordercode,
  701. :taskworkmx[i].procode,:taskworkmx[i].price,:taskworkmx[i].wpcode;
  702. LOOP
  703. CLOSE cur_mx;
  704. //检验明细是否读入完整
  705. SELECT count(*) INTO :no_mxcheck
  706. FROM u_scwg_taskwork_2_mx
  707. WHERE u_scwg_taskwork_2_mx.billid = :arg_billid
  708. USING commit_transaction;
  709. IF commit_transaction.SQLCode <> 0 THEN
  710. rslt = 0
  711. arg_msg = "查询操作失败,单据明细数量"
  712. GOTO ext
  713. END IF
  714. IF i <> (no_mxcheck+1) THEN
  715. rslt = 0
  716. arg_msg = "查询操作失败,单据明细"
  717. GOTO ext
  718. END IF
  719. billid = arg_billid
  720. it_mxbt = i - 1
  721. ext:
  722. IF rslt = 0 THEN p_reset()
  723. RETURN rslt
  724. end function
  725. public function integer auditmx_1 (long arg_billid, ref string arg_msg, boolean arg_ifcommit);//arg_wrkgrpid : -1 全部工作组
  726. Long cnt,i
  727. Int rslt = 1
  728. Decimal ls_emp_sumwage
  729. uo_wage u_wage
  730. u_wage = CREATE uo_wage
  731. IF uo_option_taskwork_not_affirm = -1000 THEN
  732. arg_msg = '选项:[080]计件单不使用确认功能,读取初始默认值失败,操作取消!'
  733. rslt = 0
  734. GOTO ext
  735. END IF
  736. IF uo_option_check_noworkprice = -1000 THEN
  737. arg_msg = '选项:[240]计件单没有工价不能审核,读取初始默认值失败,操作取消!'
  738. rslt = 0
  739. GOTO ext
  740. END IF
  741. IF getinfo(arg_billid,arg_msg) = 0 THEN
  742. rslt = 0
  743. GOTO ext
  744. END IF
  745. IF uo_option_taskwork_not_affirm = 0 THEN
  746. IF affirmflag = 0 THEN
  747. rslt = 0
  748. arg_msg = '单据还没有确认,不能审核,请先确认'
  749. GOTO ext
  750. END IF
  751. END IF
  752. IF flag = 1 THEN
  753. rslt = 0
  754. arg_msg = '单据已经审核,操作取消'
  755. GOTO ext
  756. END IF
  757. FOR i = 1 TO it_mxbt
  758. ls_emp_sumwage = 0.00
  759. ls_emp_sumwage = taskworkmx[i].price * taskworkmx[i].qty
  760. IF uo_option_check_noworkprice = 1 THEN
  761. IF taskworkmx[i].price = 0 THEN
  762. rslt = 0
  763. arg_msg = '行'+String(i)+',没有填写工价,不允许审核'
  764. GOTO ext
  765. END IF
  766. END IF
  767. IF u_wage.f_setwagemxdata(wagemth,wrkgrpid,wageid,ls_emp_sumwage,arg_msg,FALSE) = 0 THEN
  768. rslt = 0
  769. GOTO ext
  770. END IF
  771. NEXT
  772. IF uo_option_taskwork_not_affirm = 0 THEN
  773. UPDATE u_scwg_taskwork_2
  774. SET u_scwg_taskwork_2.flag = 1,
  775. u_scwg_taskwork_2.auditingrep = :publ_operator,
  776. u_scwg_taskwork_2.auditingdate = getdate()
  777. WHERE u_scwg_taskwork_2.billid = :arg_billid
  778. AND u_scwg_taskwork_2.flag = 0
  779. AND u_scwg_taskwork_2.billtype = 1
  780. USING commit_transaction;
  781. ELSE
  782. UPDATE u_scwg_taskwork_2
  783. SET u_scwg_taskwork_2.flag = 1,
  784. u_scwg_taskwork_2.auditingrep = :publ_operator,
  785. u_scwg_taskwork_2.auditingdate = getdate(),
  786. u_scwg_taskwork_2.affirmdate = getdate(),
  787. u_scwg_taskwork_2.affirmemp = :publ_operator,
  788. u_scwg_taskwork_2.affirmflag = 1
  789. WHERE u_scwg_taskwork_2.billid = :arg_billid
  790. AND u_scwg_taskwork_2.flag = 0
  791. AND u_scwg_taskwork_2.billtype = 1
  792. USING commit_transaction;
  793. END IF
  794. IF commit_transaction.SQLCode <> 0 THEN
  795. rslt = 0
  796. arg_msg = '更新审核标志失败,原因:'+commit_transaction.SQLErrText
  797. GOTO ext
  798. ELSEIF commit_transaction.SQLNRows = 0 THEN
  799. rslt = 0
  800. arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  801. GOTO ext
  802. END IF
  803. ext:
  804. IF rslt = 0 THEN
  805. ROLLBACK USING commit_transaction;
  806. ELSEif rslt = 1 and arg_ifcommit then
  807. COMMIT USING commit_transaction;
  808. END IF
  809. DESTROY u_wage
  810. RETURN rslt
  811. end function
  812. public function integer cauditmx_1 (long arg_billid, ref string arg_msg, boolean arg_ifcommit);//arg_wrkgrpid : -1 全部工作组
  813. Long cnt,i
  814. Int rslt = 1
  815. Decimal ls_emp_sumwage
  816. DateTime ls_null
  817. SetNull(ls_null)
  818. IF uo_option_taskwork_not_affirm = -1000 THEN
  819. arg_msg = '选项:[080]计件单不使用确认功能,读取初始默认值失败,操作取消!'
  820. rslt = 0
  821. GOTO ext
  822. END IF
  823. uo_wage u_wage
  824. u_wage = CREATE uo_wage
  825. IF getinfo(arg_billid,arg_msg) = 0 THEN
  826. rslt = 0
  827. GOTO ext
  828. END IF
  829. IF flag = 0 THEN
  830. rslt = 0
  831. arg_msg = '单据还没有审核,操作取消'
  832. GOTO ext
  833. END IF
  834. IF f_check_wage_audit(wagemth,scid,arg_msg) = 0 THEN
  835. rslt = 0
  836. arg_msg = arg_msg + ',不能撤审'
  837. GOTO ext
  838. END IF
  839. //检查该月份,该工资项目是否已开工资变更单
  840. cnt = 0
  841. SELECT count(*)
  842. INTO :cnt
  843. FROM u_wage_change
  844. WHERE wageid = :wageid
  845. AND wagemth = :wagemth;
  846. IF sqlca.SQLCode <> 0 THEN
  847. rslt = 0
  848. arg_msg = '查询该月份该工资项目是否已开工资变更单失败'+"~n"+sqlca.SQLErrText
  849. GOTO ext
  850. END IF
  851. IF cnt > 0 THEN
  852. rslt = 0
  853. arg_msg = '该月份该工资项目已开工资变更单,不能撤审'
  854. GOTO ext
  855. END IF
  856. FOR i = 1 TO it_mxbt
  857. ls_emp_sumwage = 0.00
  858. ls_emp_sumwage = taskworkmx[i].price * taskworkmx[i].qty
  859. IF u_wage.f_setwagemxdata(wagemth,wrkgrpid,wageid,0 - ls_emp_sumwage,arg_msg,FALSE) = 0 THEN
  860. rslt = 0
  861. GOTO ext
  862. END IF
  863. NEXT
  864. IF uo_option_taskwork_not_affirm = 0 THEN
  865. UPDATE u_scwg_taskwork_2
  866. SET u_scwg_taskwork_2.flag = 0,
  867. u_scwg_taskwork_2.auditingrep = '',
  868. u_scwg_taskwork_2.auditingdate = :ls_null
  869. WHERE u_scwg_taskwork_2.billid = :arg_billid
  870. AND u_scwg_taskwork_2.flag = 1
  871. AND u_scwg_taskwork_2.billtype = 1
  872. USING commit_transaction;
  873. ELSE
  874. UPDATE u_scwg_taskwork_2
  875. SET u_scwg_taskwork_2.flag = 0,
  876. u_scwg_taskwork_2.auditingrep = '',
  877. u_scwg_taskwork_2.auditingdate = :ls_null,
  878. u_scwg_taskwork_2.affirmdate = :ls_null,
  879. u_scwg_taskwork_2.affirmemp = '',
  880. u_scwg_taskwork_2.affirmflag = 0
  881. WHERE u_scwg_taskwork_2.billid = :arg_billid
  882. AND u_scwg_taskwork_2.flag = 1
  883. AND u_scwg_taskwork_2.billtype = 1
  884. USING commit_transaction;
  885. END IF
  886. IF commit_transaction.SQLCode <> 0 THEN
  887. rslt = 0
  888. arg_msg = '更新审核标志失败,原因:'+commit_transaction.SQLErrText
  889. GOTO ext
  890. ELSEIF commit_transaction.SQLNRows = 0 THEN
  891. rslt = 0
  892. arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  893. GOTO ext
  894. END IF
  895. ext:
  896. IF rslt = 0 THEN
  897. ROLLBACK USING commit_transaction;
  898. ELSEif rslt = 1 and arg_ifcommit then
  899. COMMIT USING commit_transaction;
  900. END IF
  901. DESTROY u_wage
  902. RETURN rslt
  903. end function
  904. public function integer auditing_0 (long arg_wageid, long arg_wagemth, long arg_wrkgrpid, ref string arg_msg, boolean arg_ifcommit);//arg_wrkgrpid : -1 全部工作组
  905. Int rslt = 1
  906. Long ll_wgid,ll_wgid_arr[],count,ll_i
  907. Long ll_workgroupid
  908. Long ll_empid,ll_empid_arr[],ll_mxt,ll_j
  909. String ls_empcode,ls_empcode_arr[]
  910. Decimal ld_assignscore_arr[]
  911. Decimal ld_assignday_arr[]
  912. Long ll_assigntype,ll_assigntype_arr[]
  913. Decimal ll_assignamt,ll_assignamt_arr[]
  914. Decimal ld_prwageamt_arr[],ld_prwagerate_arr[],ld_prwageamt_arr_insert[]
  915. Int cnt_wg_emp = 0
  916. String ls_workgroupcode
  917. Long ll_flagnum
  918. Long ll_0_price_cnt
  919. String ls_0_price_billcode
  920. String ls_0_price_msg
  921. Long ll_k
  922. Decimal temp_sumscore = 0,temp_empscore = 0
  923. Decimal temp_sumdays = 0,temp_empdays = 0,temp_wageamt_sum = 0,temp_sumrate,temp_wageamt_cmp
  924. Decimal ld_empamt_insert
  925. Decimal ld_wageamt_sum,ld_prwageamt,ld_prwagerate
  926. DateTime ldt_getdate
  927. Decimal ld_wageamt_cmp
  928. If uo_option_taskwork_not_affirm = -1000 Then
  929. arg_msg = '选项:[080]计件单不使用确认功能,读取初始默认值失败,操作取消!'
  930. rslt = 0
  931. Goto ext
  932. End If
  933. String ls_ifuse_formula
  934. ls_ifuse_formula = f_ProfileString(-1,'w_workgroup_wage_money_formula', "formula", '')
  935. If uo_option_taskwork_not_affirm = 0 Then
  936. ll_flagnum = 0
  937. Select count(*)
  938. Into :ll_flagnum
  939. From u_scwg_taskwork_2
  940. Where u_scwg_taskwork_2.wageid = :arg_wageid
  941. And u_scwg_taskwork_2.wagemth = :arg_wagemth
  942. And u_scwg_taskwork_2.affirmflag = 0
  943. And u_scwg_taskwork_2.billtype = 0
  944. And ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid Or :arg_wrkgrpid = -1 )
  945. Using commit_transaction;
  946. If commit_transaction.SQLCode <> 0 Then
  947. rslt = 0
  948. arg_msg = '查询是否有单未确认操作失败,'+commit_transaction.SQLErrText
  949. Goto ext
  950. End If
  951. If ll_flagnum > 0 Then
  952. rslt = 0
  953. arg_msg = '该月份存在未确认的单据('+String(ll_flagnum)+'),请先全部确认'
  954. Goto ext
  955. End If
  956. End If
  957. ll_flagnum = 0
  958. Select count(*)
  959. Into :ll_flagnum
  960. From u_scwg_taskwork_2
  961. Where u_scwg_taskwork_2.wageid = :arg_wageid
  962. And u_scwg_taskwork_2.wagemth = :arg_wagemth
  963. And u_scwg_taskwork_2.flag = 0
  964. And u_scwg_taskwork_2.billtype = 0
  965. And ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid Or :arg_wrkgrpid = -1 )
  966. Using commit_transaction;
  967. If commit_transaction.SQLCode <> 0 Then
  968. rslt = 0
  969. arg_msg = '查询是否有单要审核操作失败,'+commit_transaction.SQLErrText
  970. Goto ext
  971. End If
  972. If ll_flagnum = 0 Then
  973. // rslt = 0
  974. // arg_msg = '该月份不存在要审核的单据,请检查'
  975. rslt = 1
  976. Goto ext
  977. End If
  978. ll_flagnum = 0
  979. Select count(*)
  980. Into :ll_flagnum
  981. From u_scwg_taskwork_2
  982. Where u_scwg_taskwork_2.wageid = :arg_wageid
  983. And u_scwg_taskwork_2.wagemth = :arg_wagemth
  984. And u_scwg_taskwork_2.flag = 1
  985. And u_scwg_taskwork_2.billtype = 0
  986. And ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid Or :arg_wrkgrpid = -1 )
  987. Using commit_transaction;
  988. If commit_transaction.SQLCode <> 0 Then
  989. rslt = 0
  990. arg_msg = '查询是否有单已经审核操作失败,'+commit_transaction.SQLErrText
  991. Goto ext
  992. End If
  993. If ll_flagnum > 0 Then
  994. rslt = 0
  995. arg_msg = '该月份的工资项目存在部分已审核的记录('+String(ll_flagnum)+'),请先撤审'
  996. Goto ext
  997. End If
  998. //检查0单价
  999. Declare cur_0_price_wkp Cursor For
  1000. Select distinct u_scwg_taskwork_2.billcode
  1001. From u_scwg_taskwork_2,u_scwg_taskwork_2_mx
  1002. Where u_scwg_taskwork_2.wageid = :arg_wageid
  1003. And u_scwg_taskwork_2.wagemth = :arg_wagemth
  1004. And u_scwg_taskwork_2.flag = 0
  1005. And u_scwg_taskwork_2.billtype = 0
  1006. And ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid Or :arg_wrkgrpid = -1 )
  1007. And ( u_scwg_taskwork_2.billid = u_scwg_taskwork_2_mx.billid )
  1008. And ( u_scwg_taskwork_2_mx.price = 0 )
  1009. Order By u_scwg_taskwork_2.billcode Asc
  1010. Using commit_transaction;
  1011. Open cur_0_price_wkp;
  1012. Fetch cur_0_price_wkp Into :ls_0_price_billcode;
  1013. Do While sqlca.SQLCode = 0
  1014. ll_0_price_cnt++
  1015. ls_0_price_msg = ls_0_price_msg + '单据:'+ls_0_price_billcode+',0单价 ~n'
  1016. Fetch cur_0_price_wkp Into :ls_0_price_billcode;
  1017. Loop
  1018. Close cur_0_price_wkp;
  1019. If ll_0_price_cnt > 0 Then
  1020. arg_msg = ls_0_price_msg
  1021. rslt = 0
  1022. Goto ext
  1023. End If
  1024. Declare wgid Cursor For
  1025. Select distinct wrkgrpid
  1026. From u_scwg_taskwork_2
  1027. Where u_scwg_taskwork_2.wageid = :arg_wageid
  1028. And u_scwg_taskwork_2.wagemth = :arg_wagemth
  1029. And u_scwg_taskwork_2.flag = 0
  1030. And u_scwg_taskwork_2.billtype = 0
  1031. And ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid Or :arg_wrkgrpid = -1 )
  1032. Order By u_scwg_taskwork_2.wrkgrpid Asc
  1033. Using commit_transaction;
  1034. Open wgid;
  1035. Fetch wgid Into :ll_wgid;
  1036. Do While commit_transaction.SQLCode = 0
  1037. count++
  1038. ll_wgid_arr[count] = ll_wgid
  1039. Fetch wgid Into :ll_wgid;
  1040. Loop
  1041. Close wgid;
  1042. For ll_i = 1 To count
  1043. cnt_wg_emp = 0
  1044. temp_sumrate = 0
  1045. Select count(*),
  1046. u_workgroupmx.workgroupid,
  1047. u_workgroup.workgroupcode
  1048. Into :cnt_wg_emp,:ll_workgroupid,:ls_workgroupcode
  1049. From u_workgroupmx Inner join
  1050. u_workgroup on u_workgroupmx.workgroupid = u_workgroup.workgroupid
  1051. Where (u_workgroupmx.workgroupid = :ll_wgid_arr[ll_i])
  1052. Group By u_workgroup.workgroupcode, u_workgroupmx.workgroupid;
  1053. If commit_transaction.SQLCode <> 0 Then
  1054. rslt = 0
  1055. arg_msg = '查询操作失败,组成员!'
  1056. Goto ext
  1057. End If
  1058. If cnt_wg_emp <= 0 Then
  1059. rslt = 0
  1060. arg_msg = '编号为:'+ls_workgroupcode+'的工作组没有成员,请先建立工作组成员!'
  1061. Goto ext
  1062. End If
  1063. ll_mxt = 0
  1064. Declare wg_emp Cursor For
  1065. Select u_workgroupmx.empid,
  1066. u_workgroupmx.assigntype,
  1067. u_workgroupmx.assignamt,
  1068. u_rs_empinfo.empcode,
  1069. u_workgroupmx.prwageamt,
  1070. u_workgroupmx.prwagerate
  1071. From u_workgroupmx,u_rs_empinfo
  1072. Where u_workgroupmx.workgroupid = :ll_wgid_arr[ll_i]
  1073. And u_workgroupmx.empid = u_rs_empinfo.empid
  1074. Order By u_workgroupmx.empid Asc
  1075. Using commit_transaction;
  1076. Open wg_emp;
  1077. Fetch wg_emp Into :ll_empid,:ll_assigntype,:ll_assignamt,:ls_empcode,:ld_prwageamt,:ld_prwagerate;
  1078. Do While commit_transaction.SQLCode = 0
  1079. ll_mxt++
  1080. ll_empid_arr[ll_mxt] = ll_empid
  1081. ll_assigntype_arr[ll_mxt] = ll_assigntype
  1082. if ll_assigntype = 0 then ll_assignamt = 1
  1083. ll_assignamt_arr[ll_mxt] = ll_assignamt
  1084. ls_empcode_arr[ll_mxt] = ls_empcode
  1085. ld_assignday_arr[ll_mxt] = 0
  1086. ld_assignscore_arr[ll_mxt] = 0
  1087. ld_prwageamt_arr[ll_mxt] = ld_prwageamt
  1088. ld_prwagerate_arr[ll_mxt] = ld_prwagerate
  1089. ld_prwageamt_arr_insert[ll_mxt] = 0
  1090. temp_sumrate = temp_sumrate + ll_assignamt
  1091. Fetch wg_emp Into :ll_empid,:ll_assigntype,:ll_assignamt,:ls_empcode,:ld_prwageamt,:ld_prwagerate;
  1092. Loop
  1093. Close wg_emp;
  1094. //计算各种分配模式的比例0:手动,1:固定比例,2:按天数,3:按天数+分数
  1095. ld_wageamt_sum = 0
  1096. Select sum(u_scwg_taskwork_2_mx.price * u_scwg_taskwork_2_mx.qty),
  1097. getdate()
  1098. Into :ld_wageamt_sum,
  1099. :ldt_getdate
  1100. From u_scwg_taskwork_2_mx,u_scwg_taskwork_2
  1101. Where u_scwg_taskwork_2.wageid = :arg_wageid
  1102. And u_scwg_taskwork_2.wagemth = :arg_wagemth
  1103. And u_scwg_taskwork_2.wrkgrpid = :ll_wgid_arr[ll_i]
  1104. And u_scwg_taskwork_2.flag = 0
  1105. And u_scwg_taskwork_2.billtype = 0
  1106. And u_scwg_taskwork_2.billid = u_scwg_taskwork_2_mx.billid Using commit_transaction;
  1107. If commit_transaction.SQLCode <> 0 Then
  1108. rslt = 0
  1109. arg_msg = '查询当月该工组计件总工资失败,原因:'+commit_transaction.SQLErrText
  1110. Goto ext
  1111. End If
  1112. temp_wageamt_sum = ld_wageamt_sum
  1113. For ll_k = 1 To ll_mxt
  1114. Select isnull(sum(U_TestMx_bd.bdday),0),
  1115. isnull(sum(U_TestMx_bd.bdday * U_TestMx_bd.Score),0)
  1116. Into :temp_sumdays,:temp_sumscore
  1117. From u_test_bd Inner JOIN
  1118. U_TestMx_bd ON u_test_bd.TestID = U_TestMx_bd.TestID
  1119. Where u_test_bd.flag = 1 And u_test_bd.wagemth = :arg_wagemth
  1120. And U_TestMx_bd.empid In (
  1121. Select empid
  1122. From u_workgroupmx
  1123. Where u_workgroupmx.workgroupid = :ll_wgid_arr[ll_i] )Using commit_transaction;
  1124. If commit_transaction.SQLCode <> 0 Then
  1125. rslt = 0
  1126. arg_msg = '查询小组的考核总(天数),总(分数*天数)失败,原因:'+commit_transaction.SQLErrText
  1127. Goto ext
  1128. End If
  1129. Select isnull(sum(U_TestMx_bd.bdday),0),
  1130. isnull(sum(U_TestMx_bd.bdday * U_TestMx_bd.Score),0)
  1131. Into :temp_empdays,:temp_empscore
  1132. From u_test_bd Inner JOIN
  1133. U_TestMx_bd ON u_test_bd.TestID = U_TestMx_bd.TestID
  1134. Where u_test_bd.flag = 1 And u_test_bd.wagemth = :arg_wagemth
  1135. And U_TestMx_bd.empid = :ll_empid_arr[ll_k] Using commit_transaction;
  1136. If commit_transaction.SQLCode <> 0 Then
  1137. rslt = 0
  1138. arg_msg = '查询员工:'+ls_empcode_arr[ll_k]+',的考核总(天数),总(分数*天数)失败,原因:'+commit_transaction.SQLErrText
  1139. Goto ext
  1140. End If
  1141. If temp_wageamt_sum < ld_wageamt_sum * ld_prwagerate_arr[ll_k] + ld_prwageamt_arr[ll_k] Then
  1142. ld_prwageamt_arr_insert[ll_k] = temp_wageamt_sum
  1143. temp_wageamt_sum = 0
  1144. Else
  1145. ld_prwageamt_arr_insert[ll_k] = ld_wageamt_sum * ld_prwagerate_arr[ll_k] + ld_prwageamt_arr[ll_k]
  1146. temp_wageamt_sum = temp_wageamt_sum - ld_wageamt_sum * ld_prwagerate_arr[ll_k] - ld_prwageamt_arr[ll_k]
  1147. End If
  1148. If ll_assigntype_arr[ll_k] = 2 Then
  1149. If temp_sumdays = 0 Then
  1150. rslt = 0
  1151. arg_msg = '工资月份['+String(arg_wagemth)+']有小组工资分配按天数计算比例进行分配,但没有对应该月份的绩效考核天数!请检查'
  1152. Goto ext
  1153. Else
  1154. ll_assignamt_arr[ll_k] = Round(temp_empdays/temp_sumdays,5)
  1155. ld_assignday_arr[ll_k] = temp_empdays
  1156. ld_assignscore_arr[ll_k] = temp_empscore
  1157. End If
  1158. ElseIf ll_assigntype_arr[ll_k] = 3 Then
  1159. If temp_sumscore = 0 Then
  1160. rslt = 0
  1161. arg_msg = '工资月份['+String(arg_wagemth)+']有小组工资分配按天数+分数计算比例进行分配,但没有对应该月份的绩效考核天数!请检查'
  1162. Goto ext
  1163. Else
  1164. ll_assignamt_arr[ll_k] = Round(temp_empscore/temp_sumscore,5)
  1165. ld_assignday_arr[ll_k] = temp_empdays
  1166. ld_assignscore_arr[ll_k] = temp_empscore
  1167. End If
  1168. End If
  1169. Next
  1170. temp_wageamt_cmp = temp_wageamt_sum
  1171. If ll_mxt > 0 Then
  1172. If ll_assigntype_arr[1] = 0 Then
  1173. If ls_ifuse_formula = '' Then
  1174. ld_empamt_insert = temp_wageamt_sum + ld_prwageamt_arr_insert[1]
  1175. Else
  1176. ld_wageamt_cmp = uo_wage_fp_formula(ls_ifuse_formula,temp_wageamt_sum,ll_assignamt_arr[1],temp_sumrate,ld_assignscore_arr[1],temp_sumscore,ld_assignday_arr[1],temp_sumdays)
  1177. If ld_wageamt_cmp > temp_wageamt_cmp Then
  1178. ld_empamt_insert = temp_wageamt_cmp + ld_prwageamt_arr_insert[1]
  1179. temp_wageamt_cmp = 0
  1180. Else
  1181. ld_empamt_insert = ld_wageamt_cmp + ld_prwageamt_arr_insert[1]
  1182. temp_wageamt_cmp = temp_wageamt_cmp - ld_wageamt_cmp
  1183. End If
  1184. End If
  1185. Else
  1186. ld_empamt_insert = temp_wageamt_sum * ll_assignamt_arr[1] + ld_prwageamt_arr_insert[1]
  1187. End If
  1188. //该组金额转移到组中第一人
  1189. Insert Into u_scwg_taskwork_money
  1190. (wageid,
  1191. workgroupid ,
  1192. empid ,
  1193. wagemth ,
  1194. groupamt,
  1195. empamt,
  1196. auditingflag,
  1197. opdate,
  1198. opemp,
  1199. billtype,
  1200. assigntype,
  1201. assignamt,
  1202. assignscore,
  1203. assignday,
  1204. prwageamt)
  1205. Values( :arg_wageid,
  1206. :ll_wgid_arr[ll_i],
  1207. :ll_empid_arr[1],
  1208. :arg_wagemth,
  1209. :ld_wageamt_sum,
  1210. :ld_empamt_insert ,
  1211. 0,
  1212. :ldt_getdate,
  1213. :publ_operator,
  1214. 0,
  1215. :ll_assigntype_arr[1] ,
  1216. :ll_assignamt_arr[1],
  1217. :ld_assignscore_arr[1] ,
  1218. :ld_assignday_arr[1],
  1219. :ld_prwageamt_arr_insert[1])
  1220. Using commit_transaction;
  1221. If commit_transaction.SQLCode <> 0 Then
  1222. rslt = 0
  1223. arg_msg = '建立小组首名员工工资操作失败,原因:'+commit_transaction.SQLErrText
  1224. Goto ext
  1225. End If
  1226. //其他组员的金额为0
  1227. If ll_mxt >= 2 Then
  1228. For ll_j = 2 To ll_mxt
  1229. If ll_assigntype_arr[ll_j] = 0 Then
  1230. If ls_ifuse_formula = '' Then
  1231. ld_empamt_insert = ld_prwageamt_arr_insert[ll_j]
  1232. Else
  1233. ld_wageamt_cmp = uo_wage_fp_formula(ls_ifuse_formula,temp_wageamt_sum,ll_assignamt_arr[ll_j],temp_sumrate,ld_assignscore_arr[ll_j],temp_sumscore,ld_assignday_arr[ll_j],temp_sumdays)
  1234. If ld_wageamt_cmp > temp_wageamt_cmp Then
  1235. ld_empamt_insert = temp_wageamt_cmp + ld_prwageamt_arr_insert[ll_j]
  1236. temp_wageamt_cmp = 0
  1237. Else
  1238. ld_empamt_insert = ld_wageamt_cmp + ld_prwageamt_arr_insert[ll_j]
  1239. temp_wageamt_cmp = temp_wageamt_cmp - ld_wageamt_cmp
  1240. End If
  1241. End If
  1242. Else
  1243. ld_empamt_insert = temp_wageamt_sum* ll_assignamt_arr[ll_j] + ld_prwageamt_arr_insert[ll_j]
  1244. End If
  1245. Insert Into u_scwg_taskwork_money
  1246. (wageid,
  1247. workgroupid ,
  1248. empid ,
  1249. wagemth ,
  1250. groupamt,
  1251. empamt,
  1252. auditingflag,
  1253. opdate,
  1254. opemp,
  1255. billtype,
  1256. assigntype,
  1257. assignamt,
  1258. assignscore,
  1259. assignday,
  1260. prwageamt)
  1261. Values( :arg_wageid,
  1262. :ll_wgid_arr[ll_i],
  1263. :ll_empid_arr[ll_j],
  1264. :arg_wagemth,
  1265. :ld_wageamt_sum,
  1266. :ld_empamt_insert,
  1267. 0,
  1268. :ldt_getdate,
  1269. :publ_operator,
  1270. 0,
  1271. :ll_assigntype_arr[ll_j] ,
  1272. :ll_assignamt_arr[ll_j],
  1273. :ld_assignscore_arr[ll_j] ,
  1274. :ld_assignday_arr[ll_j],
  1275. :ld_prwageamt_arr_insert[ll_j]) Using commit_transaction;
  1276. If commit_transaction.SQLCode <> 0 Then
  1277. rslt = 0
  1278. arg_msg = '建立小组其它员工工资操作失败,原因:'+commit_transaction.SQLErrText
  1279. Goto ext
  1280. End If
  1281. Next
  1282. End If
  1283. End If
  1284. Next
  1285. If uo_option_taskwork_not_affirm = 0 Then
  1286. Update u_scwg_taskwork_2
  1287. Set u_scwg_taskwork_2.flag = 1,
  1288. u_scwg_taskwork_2.auditingrep = :publ_operator,
  1289. u_scwg_taskwork_2.auditingdate = getdate()
  1290. Where u_scwg_taskwork_2.wageid = :arg_wageid
  1291. And u_scwg_taskwork_2.wagemth = :arg_wagemth
  1292. And u_scwg_taskwork_2.flag = 0
  1293. And u_scwg_taskwork_2.billtype = 0
  1294. And ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid Or :arg_wrkgrpid = -1 )
  1295. Using commit_transaction;
  1296. Else
  1297. Update u_scwg_taskwork_2
  1298. Set u_scwg_taskwork_2.flag = 1,
  1299. u_scwg_taskwork_2.affirmflag = 1,
  1300. u_scwg_taskwork_2.auditingrep = :publ_operator,
  1301. u_scwg_taskwork_2.auditingdate = getdate(),
  1302. u_scwg_taskwork_2.affirmdate = getdate(),
  1303. u_scwg_taskwork_2.affirmemp = :publ_operator
  1304. Where u_scwg_taskwork_2.wageid = :arg_wageid
  1305. And u_scwg_taskwork_2.wagemth = :arg_wagemth
  1306. And u_scwg_taskwork_2.flag = 0
  1307. And u_scwg_taskwork_2.billtype = 0
  1308. And ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid Or :arg_wrkgrpid = -1 )
  1309. Using commit_transaction;
  1310. End If
  1311. If commit_transaction.SQLCode <> 0 Then
  1312. rslt = 0
  1313. arg_msg = '更新审核标志失败,原因:'+commit_transaction.SQLErrText
  1314. Goto ext
  1315. ElseIf commit_transaction.SQLNRows = 0 Then
  1316. rslt = 0
  1317. arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  1318. Goto ext
  1319. End If
  1320. ext:
  1321. If rslt = 0 Then
  1322. Rollback Using commit_transaction;
  1323. ElseIf rslt = 1 And arg_ifcommit Then
  1324. Commit Using commit_transaction;
  1325. End If
  1326. Return rslt
  1327. end function
  1328. public function integer auditing_2 (long arg_wageid, long arg_wagemth, long arg_wrkgrpid, ref string arg_msg, boolean arg_ifcommit);//arg_wrkgrpid : -1 全部工作组
  1329. Int rslt = 1
  1330. Long ll_wgid,ll_wgid_arr[],count,ll_i
  1331. Long ll_workgroupid
  1332. Long ll_empid,ll_empid_arr[],ll_mxt,ll_j
  1333. String ls_empcode,ls_empcode_arr[]
  1334. Decimal ld_assignscore_arr[]
  1335. Decimal ld_assignday_arr[]
  1336. Long ll_assigntype,ll_assigntype_arr[]
  1337. Decimal ll_assignamt,ll_assignamt_arr[]
  1338. Int cnt_wg_emp = 0
  1339. String ls_workgroupcode
  1340. Long ll_flagnum
  1341. Long ll_0_price_cnt
  1342. String ls_0_price_billcode
  1343. String ls_0_price_msg
  1344. IF uo_option_taskwork_not_affirm = -1000 THEN
  1345. arg_msg = '选项:[080]计件单不使用确认功能,读取初始默认值失败,操作取消!'
  1346. rslt = 0
  1347. GOTO ext
  1348. END IF
  1349. IF uo_option_taskwork_not_affirm = 0 THEN
  1350. ll_flagnum = 0
  1351. SELECT count(*)
  1352. INTO :ll_flagnum
  1353. FROM u_scwg_taskwork_2
  1354. WHERE u_scwg_taskwork_2.wageid = :arg_wageid
  1355. AND u_scwg_taskwork_2.wagemth = :arg_wagemth
  1356. AND u_scwg_taskwork_2.affirmflag = 0
  1357. AND u_scwg_taskwork_2.billtype = 2
  1358. AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 )
  1359. USING commit_transaction;
  1360. IF commit_transaction.SQLCode <> 0 THEN
  1361. rslt = 0
  1362. arg_msg = '查询是否有单未确认操作失败,'+commit_transaction.SQLErrText
  1363. GOTO ext
  1364. END IF
  1365. IF ll_flagnum > 0 THEN
  1366. rslt = 0
  1367. arg_msg = '该月份存在未确认的单据('+String(ll_flagnum)+'),请先全部确认'
  1368. GOTO ext
  1369. END IF
  1370. END IF
  1371. ll_flagnum = 0
  1372. SELECT count(*)
  1373. INTO :ll_flagnum
  1374. FROM u_scwg_taskwork_2
  1375. WHERE u_scwg_taskwork_2.wageid = :arg_wageid
  1376. AND u_scwg_taskwork_2.wagemth = :arg_wagemth
  1377. AND u_scwg_taskwork_2.flag = 0
  1378. AND u_scwg_taskwork_2.billtype = 2
  1379. AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 )
  1380. USING commit_transaction;
  1381. IF commit_transaction.SQLCode <> 0 THEN
  1382. rslt = 0
  1383. arg_msg = '查询是否有单要审核操作失败,'+commit_transaction.SQLErrText
  1384. GOTO ext
  1385. END IF
  1386. IF ll_flagnum = 0 THEN
  1387. rslt = 0
  1388. arg_msg = '该月份不存在要审核的单据,请检查'
  1389. GOTO ext
  1390. END IF
  1391. ll_flagnum = 0
  1392. SELECT count(*)
  1393. INTO :ll_flagnum
  1394. FROM u_scwg_taskwork_2
  1395. WHERE u_scwg_taskwork_2.wageid = :arg_wageid
  1396. AND u_scwg_taskwork_2.wagemth = :arg_wagemth
  1397. AND u_scwg_taskwork_2.flag = 1
  1398. AND u_scwg_taskwork_2.billtype = 2
  1399. AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 )
  1400. USING commit_transaction;
  1401. IF commit_transaction.SQLCode <> 0 THEN
  1402. rslt = 0
  1403. arg_msg = '查询是否有单已经审核操作失败,'+commit_transaction.SQLErrText
  1404. GOTO ext
  1405. END IF
  1406. IF ll_flagnum > 0 THEN
  1407. rslt = 0
  1408. arg_msg = '该月份的工资项目存在部分已审核的记录('+String(ll_flagnum)+'),请先撤审'
  1409. GOTO ext
  1410. END IF
  1411. //检查0单价
  1412. DECLARE cur_0_price_wkp CURSOR FOR
  1413. SELECT distinct u_scwg_taskwork_2.billcode
  1414. FROM u_scwg_taskwork_2,u_scwg_taskwork_2_mx
  1415. WHERE u_scwg_taskwork_2.wageid = :arg_wageid
  1416. AND u_scwg_taskwork_2.wagemth = :arg_wagemth
  1417. AND u_scwg_taskwork_2.flag = 0
  1418. AND u_scwg_taskwork_2.billtype = 2
  1419. AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 )
  1420. AND ( u_scwg_taskwork_2.billid = u_scwg_taskwork_2_mx.billid )
  1421. AND ( u_scwg_taskwork_2_mx.price = 0 )
  1422. ORDER BY u_scwg_taskwork_2.billcode ASC
  1423. USING commit_transaction;
  1424. OPEN cur_0_price_wkp;
  1425. FETCH cur_0_price_wkp INTO :ls_0_price_billcode;
  1426. DO WHILE sqlca.SQLCode = 0
  1427. ll_0_price_cnt++
  1428. ls_0_price_msg = ls_0_price_msg + '单据:'+ls_0_price_billcode+',0单价 ~n'
  1429. FETCH cur_0_price_wkp INTO :ls_0_price_billcode;
  1430. LOOP
  1431. CLOSE cur_0_price_wkp;
  1432. IF ll_0_price_cnt > 0 THEN
  1433. arg_msg = ls_0_price_msg
  1434. rslt = 0
  1435. GOTO ext
  1436. END IF
  1437. DECLARE wgid CURSOR FOR
  1438. SELECT distinct wrkgrpid
  1439. FROM u_scwg_taskwork_2
  1440. WHERE u_scwg_taskwork_2.wageid = :arg_wageid
  1441. AND u_scwg_taskwork_2.wagemth = :arg_wagemth
  1442. AND u_scwg_taskwork_2.flag = 0
  1443. AND u_scwg_taskwork_2.billtype = 2
  1444. AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 )
  1445. ORDER BY u_scwg_taskwork_2.wrkgrpid ASC
  1446. USING commit_transaction;
  1447. OPEN wgid;
  1448. FETCH wgid INTO :ll_wgid;
  1449. DO WHILE commit_transaction.SQLCode = 0
  1450. count++
  1451. ll_wgid_arr[count] = ll_wgid
  1452. FETCH wgid INTO :ll_wgid;
  1453. LOOP
  1454. CLOSE wgid;
  1455. FOR ll_i = 1 TO count
  1456. cnt_wg_emp = 0
  1457. SELECT count(*),
  1458. u_workgroupmx.workgroupid,
  1459. u_workgroup.workgroupcode
  1460. INTO :cnt_wg_emp,:ll_workgroupid,:ls_workgroupcode
  1461. FROM u_workgroupmx INNER join
  1462. u_workgroup on u_workgroupmx.workgroupid = u_workgroup.workgroupid
  1463. WHERE (u_workgroupmx.workgroupid = :ll_wgid_arr[ll_i])
  1464. Group By u_workgroup.workgroupcode, u_workgroupmx.workgroupid;
  1465. IF commit_transaction.SQLCode <> 0 THEN
  1466. rslt = 0
  1467. arg_msg = '查询操作失败,组成员!'
  1468. GOTO ext
  1469. END IF
  1470. IF cnt_wg_emp <= 0 THEN
  1471. rslt = 0
  1472. arg_msg = '编号为:'+ls_workgroupcode+'的工作组没有成员,请先建立工作组成员!'
  1473. GOTO ext
  1474. END IF
  1475. ll_mxt = 0
  1476. DECLARE wg_emp CURSOR FOR
  1477. SELECT u_workgroupmx.empid,
  1478. u_workgroupmx.assigntype,
  1479. u_workgroupmx.assignamt,
  1480. u_rs_empinfo.empcode
  1481. FROM u_workgroupmx,u_rs_empinfo
  1482. WHERE u_workgroupmx.workgroupid = :ll_wgid_arr[ll_i]
  1483. AND u_workgroupmx.empid = u_rs_empinfo.empid
  1484. ORDER BY u_workgroupmx.empid ASC
  1485. USING commit_transaction;
  1486. OPEN wg_emp;
  1487. FETCH wg_emp INTO :ll_empid,:ll_assigntype,:ll_assignamt,:ls_empcode;
  1488. DO WHILE commit_transaction.SQLCode = 0
  1489. ll_mxt++
  1490. ll_empid_arr[ll_mxt] = ll_empid
  1491. ll_assigntype_arr[ll_mxt] = ll_assigntype
  1492. ll_assignamt_arr[ll_mxt] = ll_assignamt
  1493. ls_empcode_arr[ll_mxt] = ls_empcode
  1494. ld_assignday_arr[ll_mxt] = 0
  1495. ld_assignscore_arr[ll_mxt] = 0
  1496. FETCH wg_emp INTO :ll_empid,:ll_assigntype,:ll_assignamt,:ls_empcode;
  1497. LOOP
  1498. CLOSE wg_emp;
  1499. //计算各种分配模式的比例0:手动,1:固定比例,2:按天数,3:按天数+分数
  1500. Long ll_k
  1501. Decimal temp_sumscore = 0,temp_empscore = 0
  1502. Decimal temp_sumdays = 0,temp_empdays = 0
  1503. FOR ll_k = 1 TO ll_mxt
  1504. SELECT isnull(sum(U_TestMx_bd.bdday),0),
  1505. isnull(sum(U_TestMx_bd.bdday * U_TestMx_bd.Score),0)
  1506. INTO :temp_sumdays,:temp_sumscore
  1507. FROM u_test_bd INNER JOIN
  1508. U_TestMx_bd ON u_test_bd.TestID = U_TestMx_bd.TestID
  1509. WHERE u_test_bd.flag = 1 AND u_test_bd.wagemth = :arg_wagemth
  1510. AND U_TestMx_bd.empid IN (
  1511. SELECT empid
  1512. FROM u_workgroupmx
  1513. Where u_workgroupmx.workgroupid = :ll_wgid_arr[ll_i] )USING commit_transaction;
  1514. IF commit_transaction.SQLCode <> 0 THEN
  1515. rslt = 0
  1516. arg_msg = '查询小组的考核总(天数),总(分数*天数)失败,原因:'+commit_transaction.SQLErrText
  1517. GOTO ext
  1518. END IF
  1519. SELECT isnull(sum(U_TestMx_bd.bdday),0),
  1520. isnull(sum(U_TestMx_bd.bdday * U_TestMx_bd.Score),0)
  1521. INTO :temp_empdays,:temp_empscore
  1522. FROM u_test_bd INNER JOIN
  1523. U_TestMx_bd ON u_test_bd.TestID = U_TestMx_bd.TestID
  1524. WHERE u_test_bd.flag = 1 AND u_test_bd.wagemth = :arg_wagemth
  1525. AND U_TestMx_bd.empid = :ll_empid_arr[ll_k] USING commit_transaction;
  1526. IF commit_transaction.SQLCode <> 0 THEN
  1527. rslt = 0
  1528. arg_msg = '查询员工:'+ls_empcode_arr[ll_k]+',的考核总(天数),总(分数*天数)失败,原因:'+commit_transaction.SQLErrText
  1529. GOTO ext
  1530. END IF
  1531. IF ll_assigntype_arr[ll_k] = 2 THEN
  1532. IF temp_sumdays = 0 THEN
  1533. rslt = 0
  1534. arg_msg = '工资月份['+String(arg_wagemth)+']有小组工资分配按天数计算比例进行分配,但没有对应该月份的绩效考核天数!请检查'
  1535. GOTO ext
  1536. ELSE
  1537. ll_assignamt_arr[ll_k] = Round(temp_empdays/temp_sumdays,5)
  1538. ld_assignday_arr[ll_k] = temp_empdays
  1539. ld_assignscore_arr[ll_k] = temp_empscore
  1540. END IF
  1541. ELSEIF ll_assigntype_arr[ll_k] = 3 THEN
  1542. IF temp_sumscore = 0 THEN
  1543. rslt = 0
  1544. arg_msg = '工资月份['+String(arg_wagemth)+']有小组工资分配按天数+分数计算比例进行分配,但没有对应该月份的绩效考核天数!请检查'
  1545. GOTO ext
  1546. ELSE
  1547. ll_assignamt_arr[ll_k] = Round(temp_empscore/temp_sumscore,5)
  1548. ld_assignday_arr[ll_k] = temp_empdays
  1549. ld_assignscore_arr[ll_k] = temp_empscore
  1550. END IF
  1551. END IF
  1552. NEXT
  1553. IF ll_mxt > 0 THEN
  1554. //该组金额转移到组中第一人
  1555. INSERT INTO u_scwg_taskwork_money
  1556. (wageid,
  1557. workgroupid ,
  1558. empid ,
  1559. wagemth ,
  1560. groupamt,
  1561. empamt,
  1562. auditingflag,
  1563. opdate,
  1564. opemp,
  1565. billtype,
  1566. assigntype,
  1567. assignamt,
  1568. assignscore,
  1569. assignday)
  1570. SELECT wageid,
  1571. wrkgrpid,
  1572. :ll_empid_arr[1],
  1573. wagemth,
  1574. sum(u_scwg_taskwork_2_mx.price * u_scwg_taskwork_2_mx.qty),
  1575. case :ll_assigntype_arr[1] when 0 then sum(u_scwg_taskwork_2_mx.price * u_scwg_taskwork_2_mx.qty) else (sum(u_scwg_taskwork_2_mx.price * u_scwg_taskwork_2_mx.qty))*(:ll_assignamt_arr[1]) END ,
  1576. 0,
  1577. getdate(),
  1578. :publ_operator,
  1579. 2,
  1580. :ll_assigntype_arr[1] ,
  1581. :ll_assignamt_arr[1],
  1582. :ld_assignscore_arr[1] ,
  1583. :ld_assignday_arr[1]
  1584. FROM u_scwg_taskwork_2_mx,u_scwg_taskwork_2
  1585. WHERE u_scwg_taskwork_2.wageid = :arg_wageid
  1586. AND u_scwg_taskwork_2.wagemth = :arg_wagemth
  1587. AND u_scwg_taskwork_2.wrkgrpid = :ll_wgid_arr[ll_i]
  1588. AND u_scwg_taskwork_2.flag = 0
  1589. AND u_scwg_taskwork_2.billtype = 2
  1590. AND u_scwg_taskwork_2.billid = u_scwg_taskwork_2_mx.billid
  1591. GROUP BY u_scwg_taskwork_2.wageid,
  1592. u_scwg_taskwork_2.wagemth,
  1593. u_scwg_taskwork_2.wrkgrpid
  1594. USING commit_transaction;
  1595. IF commit_transaction.SQLCode <> 0 THEN
  1596. rslt = 0
  1597. arg_msg = '建立小组首名员工工资操作失败,原因:'+commit_transaction.SQLErrText
  1598. GOTO ext
  1599. END IF
  1600. //其他组员的金额为0
  1601. IF ll_mxt >= 2 THEN
  1602. FOR ll_j = 2 TO ll_mxt
  1603. INSERT INTO u_scwg_taskwork_money
  1604. (wageid,
  1605. workgroupid ,
  1606. empid ,
  1607. wagemth ,
  1608. groupamt,
  1609. empamt,
  1610. auditingflag,
  1611. opdate,
  1612. opemp,
  1613. billtype,
  1614. assigntype,
  1615. assignamt,
  1616. assignscore,
  1617. assignday)
  1618. SELECT wageid,
  1619. wrkgrpid,
  1620. :ll_empid_arr[ll_j],
  1621. wagemth,
  1622. sum(u_scwg_taskwork_2_mx.price * u_scwg_taskwork_2_mx.qty),
  1623. case :ll_assigntype_arr[ll_j] when 0 then 0 else (sum(u_scwg_taskwork_2_mx.price * u_scwg_taskwork_2_mx.qty))*(:ll_assignamt_arr[ll_j]) END,
  1624. 0,
  1625. getdate(),
  1626. :publ_operator,
  1627. 2,
  1628. :ll_assigntype_arr[ll_j] ,
  1629. :ll_assignamt_arr[ll_j],
  1630. :ld_assignscore_arr[ll_j] ,
  1631. :ld_assignday_arr[ll_j]
  1632. FROM u_scwg_taskwork_2_mx,u_scwg_taskwork_2
  1633. WHERE u_scwg_taskwork_2.wageid = :arg_wageid
  1634. AND u_scwg_taskwork_2.wagemth = :arg_wagemth
  1635. AND u_scwg_taskwork_2.wrkgrpid = :ll_wgid_arr[ll_i]
  1636. AND u_scwg_taskwork_2.flag = 0
  1637. AND u_scwg_taskwork_2.billtype = 2
  1638. AND u_scwg_taskwork_2.billid = u_scwg_taskwork_2_mx.billid
  1639. GROUP BY u_scwg_taskwork_2.wageid,
  1640. u_scwg_taskwork_2.wagemth,
  1641. u_scwg_taskwork_2.wrkgrpid
  1642. USING commit_transaction;
  1643. IF commit_transaction.SQLCode <> 0 THEN
  1644. rslt = 0
  1645. arg_msg = '建立小组其它员工工资操作失败,原因:'+commit_transaction.SQLErrText
  1646. GOTO ext
  1647. END IF
  1648. NEXT
  1649. END IF
  1650. END IF
  1651. NEXT
  1652. IF uo_option_taskwork_not_affirm = 0 THEN
  1653. UPDATE u_scwg_taskwork_2
  1654. SET u_scwg_taskwork_2.flag = 1,
  1655. u_scwg_taskwork_2.auditingrep = :publ_operator,
  1656. u_scwg_taskwork_2.auditingdate = getdate()
  1657. WHERE u_scwg_taskwork_2.wageid = :arg_wageid
  1658. AND u_scwg_taskwork_2.wagemth = :arg_wagemth
  1659. AND u_scwg_taskwork_2.flag = 0
  1660. AND u_scwg_taskwork_2.billtype = 2
  1661. AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 )
  1662. USING commit_transaction;
  1663. ELSE
  1664. UPDATE u_scwg_taskwork_2
  1665. SET u_scwg_taskwork_2.flag = 1,
  1666. u_scwg_taskwork_2.auditingrep = :publ_operator,
  1667. u_scwg_taskwork_2.auditingdate = getdate(),
  1668. u_scwg_taskwork_2.affirmemp = :publ_operator,
  1669. u_scwg_taskwork_2.affirmdate = getdate()
  1670. WHERE u_scwg_taskwork_2.wageid = :arg_wageid
  1671. AND u_scwg_taskwork_2.wagemth = :arg_wagemth
  1672. AND u_scwg_taskwork_2.flag = 0
  1673. AND u_scwg_taskwork_2.billtype = 2
  1674. AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 )
  1675. USING commit_transaction;
  1676. END IF
  1677. IF commit_transaction.SQLCode <> 0 THEN
  1678. rslt = 0
  1679. arg_msg = '更新审核标志失败,原因:'+commit_transaction.SQLErrText
  1680. GOTO ext
  1681. ELSEIF commit_transaction.SQLNRows = 0 THEN
  1682. rslt = 0
  1683. arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  1684. GOTO ext
  1685. END IF
  1686. ext:
  1687. IF rslt = 0 THEN
  1688. ROLLBACK USING commit_transaction;
  1689. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1690. COMMIT USING commit_transaction;
  1691. END IF
  1692. RETURN rslt
  1693. end function
  1694. public function integer c_auditing_0 (long arg_wageid, long arg_wagemth, long arg_wrkgrpid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1695. Long ll_flagnum
  1696. DateTime ls_null
  1697. SetNull(ls_null)
  1698. IF uo_option_taskwork_not_affirm = -1000 THEN
  1699. arg_msg = '选项:[080]计件单不使用确认功能,读取初始默认值失败,操作取消!'
  1700. rslt = 0
  1701. GOTO ext
  1702. END IF
  1703. SELECT count(*)
  1704. INTO :ll_flagnum
  1705. FROM u_scwg_taskwork_2
  1706. WHERE u_scwg_taskwork_2.wageid = :arg_wageid
  1707. AND u_scwg_taskwork_2.wagemth = :arg_wagemth
  1708. AND u_scwg_taskwork_2.flag = 1
  1709. AND u_scwg_taskwork_2.billtype = 0
  1710. AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 )
  1711. USING commit_transaction;
  1712. IF commit_transaction.SQLCode <> 0 THEN
  1713. rslt = 0
  1714. arg_msg = '查询是否已有单据已审核操作失败,'+commit_transaction.SQLErrText
  1715. GOTO ext
  1716. END IF
  1717. IF ll_flagnum <= 0 THEN
  1718. rslt = 0
  1719. arg_msg = '该月份的工资项目不存在审核的记录'
  1720. GOTO ext
  1721. END IF
  1722. //查询相关工资表是否已经通过审核
  1723. ll_flagnum = 0
  1724. SELECT count(*)
  1725. INTO :ll_flagnum
  1726. FROM u_scwg_taskwork_money
  1727. WHERE u_scwg_taskwork_money.wageid = :arg_wageid
  1728. AND u_scwg_taskwork_money.wagemth = :arg_wagemth
  1729. AND u_scwg_taskwork_money.Auditingflag = 1
  1730. AND u_scwg_taskwork_money.billtype = 0
  1731. AND ( u_scwg_taskwork_money.workgroupid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 )
  1732. USING commit_transaction;
  1733. IF commit_transaction.SQLCode <> 0 THEN
  1734. rslt = 0
  1735. arg_msg = '查询操作失败,已经审核数量,工资表'
  1736. GOTO ext
  1737. END IF
  1738. IF ll_flagnum > 0 THEN
  1739. rslt = 0
  1740. arg_msg = '该月份的工资项目部分已通过分配审核'
  1741. GOTO ext
  1742. END IF
  1743. //先删除工资表记录
  1744. DELETE FROM u_scwg_taskwork_money
  1745. WHERE u_scwg_taskwork_money.wageid = :arg_wageid
  1746. AND u_scwg_taskwork_money.wagemth = :arg_wagemth
  1747. AND u_scwg_taskwork_money.billtype = 0
  1748. AND ( u_scwg_taskwork_money.workgroupid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 )
  1749. USING commit_transaction;
  1750. IF commit_transaction.SQLCode <> 0 THEN
  1751. rslt = 0
  1752. arg_msg = '删除工资表操作失败,原因:'+commit_transaction.SQLErrText
  1753. GOTO ext
  1754. END IF
  1755. //更新审核标志
  1756. IF uo_option_taskwork_not_affirm = 0 THEN
  1757. UPDATE u_scwg_taskwork_2
  1758. SET u_scwg_taskwork_2.flag = 0,
  1759. u_scwg_taskwork_2.Auditingrep = '',
  1760. u_scwg_taskwork_2.Auditingdate = :ls_null
  1761. WHERE u_scwg_taskwork_2.wageid = :arg_wageid
  1762. AND u_scwg_taskwork_2.wagemth = :arg_wagemth
  1763. AND u_scwg_taskwork_2.billtype = 0
  1764. AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 )
  1765. AND u_scwg_taskwork_2.flag = 1 USING commit_transaction;
  1766. ELSE
  1767. UPDATE u_scwg_taskwork_2
  1768. SET u_scwg_taskwork_2.flag = 0,
  1769. u_scwg_taskwork_2.Auditingrep = '',
  1770. u_scwg_taskwork_2.Auditingdate = :ls_null,
  1771. u_scwg_taskwork_2.affirmemp = '',
  1772. u_scwg_taskwork_2.affirmdate = :ls_null,
  1773. u_scwg_taskwork_2.affirmflag = 0
  1774. WHERE u_scwg_taskwork_2.wageid = :arg_wageid
  1775. AND u_scwg_taskwork_2.wagemth = :arg_wagemth
  1776. AND u_scwg_taskwork_2.billtype = 0
  1777. AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 )
  1778. AND u_scwg_taskwork_2.flag = 1 USING commit_transaction;
  1779. END IF
  1780. IF commit_transaction.SQLCode <> 0 THEN
  1781. rslt = 0
  1782. arg_msg = '更新审核标志失败,原因:'+commit_transaction.SQLErrText
  1783. GOTO ext
  1784. ELSEIF commit_transaction.SQLNRows = 0 THEN
  1785. rslt = 0
  1786. arg_msg = "单据正在撤审,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  1787. GOTO ext
  1788. END IF
  1789. ext:
  1790. IF rslt = 0 THEN
  1791. ROLLBACK USING commit_transaction;
  1792. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1793. COMMIT USING commit_transaction;
  1794. END IF
  1795. RETURN rslt
  1796. end function
  1797. public function integer c_auditing_2 (long arg_wageid, long arg_wagemth, long arg_wrkgrpid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1798. Long ll_flagnum
  1799. DateTime ls_null
  1800. SetNull(ls_null)
  1801. IF uo_option_taskwork_not_affirm = -1000 THEN
  1802. arg_msg = '选项:[080]计件单不使用确认功能,读取初始默认值失败,操作取消!'
  1803. rslt = 0
  1804. GOTO ext
  1805. END IF
  1806. SELECT count(*)
  1807. INTO :ll_flagnum
  1808. FROM u_scwg_taskwork_2
  1809. WHERE u_scwg_taskwork_2.wageid = :arg_wageid
  1810. AND u_scwg_taskwork_2.wagemth = :arg_wagemth
  1811. AND u_scwg_taskwork_2.flag = 1
  1812. AND u_scwg_taskwork_2.billtype = 2
  1813. AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 )
  1814. USING commit_transaction;
  1815. IF commit_transaction.SQLCode <> 0 THEN
  1816. rslt = 0
  1817. arg_msg = '查询是否已有单据已审核操作失败,'+commit_transaction.SQLErrText
  1818. GOTO ext
  1819. END IF
  1820. IF ll_flagnum <= 0 THEN
  1821. rslt = 0
  1822. arg_msg = '该月份的工资项目不存在审核的记录'
  1823. GOTO ext
  1824. END IF
  1825. //查询相关工资表是否已经通过审核
  1826. ll_flagnum = 0
  1827. SELECT count(*)
  1828. INTO :ll_flagnum
  1829. FROM u_scwg_taskwork_money
  1830. WHERE u_scwg_taskwork_money.wageid = :arg_wageid
  1831. AND u_scwg_taskwork_money.wagemth = :arg_wagemth
  1832. AND u_scwg_taskwork_money.Auditingflag = 1
  1833. AND u_scwg_taskwork_money.billtype = 2
  1834. AND ( u_scwg_taskwork_money.workgroupid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 )
  1835. USING commit_transaction;
  1836. IF commit_transaction.SQLCode <> 0 THEN
  1837. rslt = 0
  1838. arg_msg = '查询操作失败,已经审核数量,工资表'
  1839. GOTO ext
  1840. END IF
  1841. IF ll_flagnum > 0 THEN
  1842. rslt = 0
  1843. arg_msg = '该月份的工资项目部分已通过分配审核'
  1844. GOTO ext
  1845. END IF
  1846. //先删除工资表记录
  1847. DELETE FROM u_scwg_taskwork_money
  1848. WHERE u_scwg_taskwork_money.wageid = :arg_wageid
  1849. AND u_scwg_taskwork_money.wagemth = :arg_wagemth
  1850. AND u_scwg_taskwork_money.billtype = 2
  1851. AND ( u_scwg_taskwork_money.workgroupid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 )
  1852. USING commit_transaction;
  1853. IF commit_transaction.SQLCode <> 0 THEN
  1854. rslt = 0
  1855. arg_msg = '删除工资表操作失败,原因:'+commit_transaction.SQLErrText
  1856. GOTO ext
  1857. END IF
  1858. //更新审核标志
  1859. IF uo_option_taskwork_not_affirm = 0 THEN
  1860. UPDATE u_scwg_taskwork_2
  1861. SET u_scwg_taskwork_2.flag = 0,
  1862. u_scwg_taskwork_2.Auditingrep = '',
  1863. u_scwg_taskwork_2.Auditingdate = :ls_null
  1864. WHERE u_scwg_taskwork_2.wageid = :arg_wageid
  1865. AND u_scwg_taskwork_2.wagemth = :arg_wagemth
  1866. AND u_scwg_taskwork_2.billtype = 2
  1867. AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 )
  1868. AND u_scwg_taskwork_2.flag = 1 USING commit_transaction;
  1869. ELSE
  1870. UPDATE u_scwg_taskwork_2
  1871. SET u_scwg_taskwork_2.flag = 0,
  1872. u_scwg_taskwork_2.Auditingrep = '',
  1873. u_scwg_taskwork_2.Auditingdate = :ls_null,
  1874. u_scwg_taskwork_2.affirmemp = '',
  1875. u_scwg_taskwork_2.affirmdate = :ls_null,
  1876. u_scwg_taskwork_2.affirmflag = 0
  1877. WHERE u_scwg_taskwork_2.wageid = :arg_wageid
  1878. AND u_scwg_taskwork_2.wagemth = :arg_wagemth
  1879. AND u_scwg_taskwork_2.billtype = 2
  1880. AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 )
  1881. AND u_scwg_taskwork_2.flag = 1 USING commit_transaction;
  1882. END IF
  1883. IF commit_transaction.SQLCode <> 0 THEN
  1884. rslt = 0
  1885. arg_msg = '更新审核标志失败,原因:'+commit_transaction.SQLErrText
  1886. GOTO ext
  1887. ELSEIF commit_transaction.SQLNRows = 0 THEN
  1888. rslt = 0
  1889. arg_msg = "单据正在撤审,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  1890. GOTO ext
  1891. END IF
  1892. ext:
  1893. IF rslt = 0 THEN
  1894. ROLLBACK USING commit_transaction;
  1895. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1896. COMMIT USING commit_transaction;
  1897. END IF
  1898. RETURN rslt
  1899. end function
  1900. public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1901. IF arg_billid <= 0 THEN
  1902. rslt = 0
  1903. arg_msg = "没有删除对象,操作取消"
  1904. GOTO ext
  1905. END IF
  1906. rslt = p_getinfo(arg_billid,arg_msg)
  1907. IF rslt = 0 THEN GOTO ext
  1908. IF affirmflag = 1 THEN
  1909. rslt = 0
  1910. arg_msg = '单据已经确认,不可以修改'
  1911. GOTO ext
  1912. END IF
  1913. IF flag = 1 THEN
  1914. rslt = 0
  1915. arg_msg = "单据已经审核,不可以删除"
  1916. GOTO ext
  1917. END IF
  1918. DELETE FROM u_scwg_taskwork_2 WHERE u_scwg_taskwork_2.billid = :arg_billid
  1919. USING commit_transaction;
  1920. IF commit_transaction.SQLCode <> 0 THEN
  1921. rslt = 0
  1922. arg_msg = "删除单据操作失败"+"~n"+sqlca.SQLErrText
  1923. GOTO ext
  1924. END IF
  1925. DELETE FROM u_scwg_taskwork_2_mx WHERE u_scwg_taskwork_2_mx.billid = :arg_billid
  1926. USING commit_transaction;
  1927. IF commit_transaction.SQLCode <> 0 THEN
  1928. rslt = 0
  1929. arg_msg = "删除单据明细操作失败"+"~n"+sqlca.SQLErrText
  1930. GOTO ext
  1931. END IF
  1932. ext:
  1933. IF rslt = 0 THEN
  1934. ROLLBACK ;
  1935. p_reset()
  1936. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1937. COMMIT ;
  1938. END IF
  1939. Return (rslt)
  1940. end function
  1941. public function decimal uo_wage_fp_formula (string arg_formula, decimal arg_amt, decimal arg_assignamt, decimal arg_assignamt_sm, decimal arg_assignscore, decimal arg_assignscore_sm, decimal arg_assignday, decimal arg_assignday_sm);Decimal ld_rst_amt
  1942. String ls_formula
  1943. ls_formula = arg_formula
  1944. datastore ds_formula
  1945. ds_formula = Create datastore
  1946. ds_formula.DataObject = 'ds_scwg_taskwork_day_formula'
  1947. ds_formula.InsertRow(0)
  1948. DO WHILE Pos(ls_formula,'[组工资]') > 0
  1949. ls_formula = Replace(ls_formula,Pos(ls_formula,'[组工资]'),Len('[组工资]'),String(arg_amt))
  1950. LOOP
  1951. DO WHILE Pos(ls_formula,'[分配比例]') > 0
  1952. ls_formula = Replace(ls_formula,Pos(ls_formula,'[分配比例]'),Len('[分配比例]'),String(arg_assignamt))
  1953. LOOP
  1954. DO WHILE Pos(ls_formula,'[比例总和]') > 0
  1955. ls_formula = Replace(ls_formula,Pos(ls_formula,'[比例总和]'),Len('[比例总和]'),String(arg_assignamt_sm))
  1956. LOOP
  1957. DO WHILE Pos(ls_formula,'[分数]') > 0
  1958. ls_formula = Replace(ls_formula,Pos(ls_formula,'[分数]'),Len('[分数]'),String(arg_assignscore))
  1959. LOOP
  1960. DO WHILE Pos(ls_formula,'[分数总和]') > 0
  1961. ls_formula = Replace(ls_formula,Pos(ls_formula,'[分数总和]'),Len('[分数总和]'),String(arg_assignscore_sm))
  1962. LOOP
  1963. DO WHILE Pos(ls_formula,'[考勤天数]') > 0
  1964. ls_formula = Replace(ls_formula,Pos(ls_formula,'[考勤天数]'),Len('[考勤天数]'),String(arg_assignday))
  1965. LOOP
  1966. DO WHILE Pos(ls_formula,'[天数总和]') > 0
  1967. ls_formula = Replace(ls_formula,Pos(ls_formula,'[天数总和]'),Len('[天数总和]'),String(arg_assignday_sm))
  1968. LOOP
  1969. ds_formula.Modify("compute.expression='"+ls_formula+"'")
  1970. ld_rst_amt = Round(Dec(ds_formula.Object.compute[1]),2)
  1971. if isnull(ld_rst_amt) then ld_rst_amt = 0
  1972. RETURN ld_rst_amt
  1973. end function
  1974. public function integer acceptmx (long arg_mtrlid, string arg_procode, string arg_proname, decimal arg_qty, decimal arg_price, string arg_mxdscrp, ref string arg_msg, long arg_printid, string arg_status, string arg_woodcode, string arg_pcode, string arg_ycreason, long arg_orderid, string arg_reason, string arg_unit, decimal arg_failqty, decimal arg_facthours, string arg_wpcode);
  1975. Int rslt = 1
  1976. Long cnt = 0,ls_i,ll_i
  1977. String ls_ordercode
  1978. IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
  1979. rslt = 0
  1980. arg_msg = "非编辑状态不可以使用,操作取消"
  1981. GOTO ext
  1982. END IF
  1983. IF uo_option_taskwork_not_affirm = -1000 THEN
  1984. arg_msg = '选项:[080]计件单不使用确认功能,读取初始默认值失败,操作取消!'
  1985. rslt = 0
  1986. GOTO ext
  1987. END IF
  1988. IF uo_option_if_taskwork_acmpqty = -1000 THEN
  1989. arg_msg = '选项:[202]计件单选生产计划时按已进仓数限制,读取初始默认值失败,操作取消!'
  1990. rslt = 0
  1991. GOTO ext
  1992. END IF
  1993. IF uo_option_taskwork_price_if_mod = -1000 THEN
  1994. arg_msg = '选项:[081]计件单限制工价,读取初始默认值失败,操作取消!'
  1995. rslt = 0
  1996. GOTO ext
  1997. END IF
  1998. IF uo_option_taskwork_procode_order = -1000 THEN
  1999. arg_msg = '选项:[064]计件单按生产计划工序,读取初始默认值失败,操作取消!'
  2000. rslt = 0
  2001. GOTO ext
  2002. END IF
  2003. IF uo_option_taskwork2_noorder = -1000 THEN
  2004. arg_msg = '选项:[104]月分配计件单可以不选计划,读取初始默认值失败,操作取消!'
  2005. rslt = 0
  2006. GOTO ext
  2007. END IF
  2008. IF uo_option_taskwork_person_noorder = -1000 THEN
  2009. arg_msg = '选项:[106]个人产品计件单可以不选计划,读取初始默认值失败,操作取消!'
  2010. rslt = 0
  2011. GOTO ext
  2012. END IF
  2013. IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0
  2014. IF IsNull(arg_procode) THEN arg_procode = ''
  2015. IF IsNull(arg_proname) THEN arg_proname = ''
  2016. IF IsNull(arg_qty) THEN arg_qty = 0
  2017. IF IsNull(arg_price) THEN arg_price = 0
  2018. IF IsNull(arg_printid) THEN arg_printid = 0
  2019. IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = ''
  2020. IF IsNull(arg_status) THEN arg_status = ''
  2021. IF IsNull(arg_woodcode) THEN arg_woodcode = ''
  2022. IF IsNull(arg_pcode) THEN arg_pcode = ''
  2023. IF IsNull(arg_ycreason) THEN arg_ycreason = ''
  2024. IF IsNull(arg_orderid) THEN arg_orderid = 0
  2025. IF IsNull(arg_reason) THEN arg_reason = ''
  2026. IF IsNull(arg_unit) THEN arg_unit = ''
  2027. IF IsNull(arg_failqty) THEN arg_failqty = 0
  2028. IF IsNull(arg_facthours) THEN arg_facthours = 0
  2029. if isnull(arg_wpcode) then arg_wpcode = ''
  2030. IF billtype = 0 OR billtype = 1 THEN
  2031. IF Trim(arg_procode) = '' THEN
  2032. rslt = 0
  2033. arg_msg = '行:'+String(arg_printid)+',工序编号不能为空!'
  2034. GOTO ext
  2035. END IF
  2036. IF Trim(arg_proname) = '' THEN
  2037. rslt = 0
  2038. arg_msg = '行:'+String(arg_printid)+',工序名称不能为空'
  2039. GOTO ext
  2040. END IF
  2041. END IF
  2042. IF arg_qty = 0 THEN
  2043. rslt = 1
  2044. GOTO ext
  2045. END IF
  2046. IF billtype = 0 AND uo_option_taskwork2_noorder = 0 AND arg_orderid = 0 THEN
  2047. rslt = 0
  2048. arg_msg = '请选择生产计划,第'+String(arg_printid)+'行'
  2049. GOTO ext
  2050. ELSEIF billtype = 1 AND uo_option_taskwork_person_noorder = 0 AND arg_orderid = 0 THEN
  2051. rslt = 0
  2052. arg_msg = '请选择生产计划,第'+String(arg_printid)+'行'
  2053. GOTO ext
  2054. END IF
  2055. IF arg_orderid > 0 THEN
  2056. Decimal ld_orderqty,ld_acmpqty,ld_trueqty
  2057. SELECT ordercode,orderqty,acmpqty
  2058. INTO :ls_ordercode,:ld_orderqty,:ld_acmpqty
  2059. FROM u_order_ml
  2060. WHERE scid = :scid
  2061. AND orderid = :arg_orderid;
  2062. IF sqlca.SQLCode <> 0 THEN
  2063. arg_msg = '行:'+String(arg_printid)+',查询生产计划号失败,'+sqlca.SQLErrText
  2064. rslt = 0
  2065. GOTO ext
  2066. END IF
  2067. IF uo_option_if_taskwork_acmpqty = 1 THEN
  2068. ld_trueqty = ld_acmpqty
  2069. ELSE
  2070. ld_trueqty = ld_orderqty
  2071. END IF
  2072. Decimal ld_othertask_qty
  2073. Decimal ld_Otherbill_qty,ld_Otherbill_qty_2
  2074. Decimal ld_workqty
  2075. Decimal ld_mx_qty
  2076. Decimal ld_finish_qty,ld_collect_qty
  2077. Long l
  2078. IF uo_option_taskwork_procode_order = 1 THEN
  2079. SELECT (proqty / :ld_orderqty) * :ld_trueqty INTO :ld_workqty
  2080. FROM U_OrderRqwp
  2081. WHERE scid = :scid
  2082. AND orderid = :arg_orderid
  2083. AND procode = :arg_procode;
  2084. IF sqlca.SQLCode <> 0 THEN
  2085. arg_msg = '行:'+String(arg_printid)+',查询计划:'+ls_ordercode+',工序:'+arg_procode+',计划数量失败,'+sqlca.SQLErrText
  2086. rslt = 0
  2087. GOTO ext
  2088. END IF
  2089. ELSE
  2090. //查询产品是否组合配置
  2091. Long ll_statusflag
  2092. Decimal ld_pzqty
  2093. Boolean lb_iffind = FALSE
  2094. String ls_pz_status
  2095. s_mtrlcfg_expr s_pz[]
  2096. SELECT statusflag INTO :ll_statusflag
  2097. FROM u_mtrldef
  2098. Where mtrlid = :arg_mtrlid ;
  2099. IF sqlca.SQLCode <> 0 THEN
  2100. rslt = 0
  2101. arg_msg = '查询产品是否使用组合配置失败'+sqlca.SQLErrText
  2102. GOTO ext
  2103. END IF
  2104. SELECT status INTO :ls_pz_status
  2105. FROM u_sc_workprice
  2106. WHERE mtrlid = :arg_mtrlid
  2107. AND procode = :arg_procode
  2108. and wpcode = :arg_wpcode;
  2109. IF sqlca.SQLCode <> 0 THEN
  2110. arg_msg = '行:'+String(arg_printid)+',查询产品工序配置失败,'+sqlca.SQLErrText
  2111. rslt = 0
  2112. GOTO ext
  2113. END IF
  2114. IF ll_statusflag = 2 AND ls_pz_status <> '' THEN
  2115. f_checkpz(arg_status,s_pz[])
  2116. lb_iffind = FALSE
  2117. FOR ll_i = 1 TO UpperBound(s_pz)
  2118. IF s_pz[ll_i].cfgname = ls_pz_status THEN
  2119. ld_pzqty = Dec(s_pz[ll_i].qty)
  2120. lb_iffind = TRUE
  2121. EXIT
  2122. END IF
  2123. NEXT
  2124. IF lb_iffind = FALSE THEN
  2125. ld_pzqty = 1
  2126. END IF
  2127. ELSE
  2128. ld_pzqty = 1
  2129. END IF
  2130. SELECT workqty * :ld_trueqty * :ld_pzqty INTO :ld_workqty
  2131. FROM u_sc_workprice
  2132. WHERE mtrlid = :arg_mtrlid
  2133. AND procode = :arg_procode
  2134. and wpcode = :arg_wpcode;
  2135. IF sqlca.SQLCode <> 0 THEN
  2136. arg_msg = '行:'+String(arg_printid)+',查询单件产品工序数失败,'+sqlca.SQLErrText
  2137. rslt = 0
  2138. GOTO ext
  2139. END IF
  2140. END IF
  2141. SELECT isnull(sum(finishqty),0) INTO :ld_finish_qty
  2142. FROM U_OrderRqwp
  2143. WHERE orderid = :arg_orderid
  2144. AND scid = :scid
  2145. AND procode = :arg_procode;
  2146. IF sqlca.SQLCode <> 0 THEN
  2147. arg_msg = '行:'+String(arg_printid)+',查询指令单号:'+ls_ordercode+',工序:'+arg_procode+'已确认数失败,orderid:'+string(arg_orderid)+',scid:'+string(scid)+sqlca.SQLErrText
  2148. rslt = 0
  2149. GOTO ext
  2150. END IF
  2151. SELECT isnull(sum(qty),0) INTO :ld_othertask_qty
  2152. FROM u_scwg_taskwork_2,u_scwg_taskwork_2_mx
  2153. WHERE u_scwg_taskwork_2_mx.billid = u_scwg_taskwork_2.billid
  2154. AND u_scwg_taskwork_2_mx.mtrlid = :arg_mtrlid
  2155. AND u_scwg_taskwork_2_mx.orderid = :arg_orderid
  2156. AND u_scwg_taskwork_2_mx.procode = :arg_procode
  2157. AND u_scwg_taskwork_2_mx.billid <> :billid
  2158. And (u_scwg_taskwork_2.affirmflag = 0 OR :uo_option_taskwork_not_affirm = 1 );
  2159. IF sqlca.SQLCode = -1 THEN
  2160. arg_msg = '行:'+String(arg_printid)+',查询指令单号:'+ls_ordercode+',工序:'+arg_procode+'其它已开单未确认数失败,'+sqlca.SQLErrText
  2161. rslt = 0
  2162. GOTO ext
  2163. END IF
  2164. SELECT isnull(sum(qty),0) INTO :ld_Otherbill_qty
  2165. FROM u_scwg_taskwork_day,u_scwg_taskwork_day_mx
  2166. WHERE u_scwg_taskwork_day_mx.billid = u_scwg_taskwork_day.billid
  2167. AND u_scwg_taskwork_day_mx.mtrlid = :arg_mtrlid
  2168. AND u_scwg_taskwork_day_mx.orderid = :arg_orderid
  2169. AND u_scwg_taskwork_day_mx.procode = :arg_procode
  2170. AND u_scwg_taskwork_day.scid = :scid
  2171. And ( u_scwg_taskwork_day.affirmflag = 0 OR :uo_option_taskwork_not_affirm = 1 );
  2172. IF sqlca.SQLCode = -1 THEN
  2173. arg_msg = '行:'+String(arg_printid)+',查询指令单号:'+ls_ordercode+',工序:'+arg_procode+'工作组产品日分配计件单开单未确认数失败,'+sqlca.SQLErrText
  2174. rslt = 0
  2175. GOTO ext
  2176. END IF
  2177. SELECT isnull(sum(Amount),0) INTO :ld_Otherbill_qty_2
  2178. FROM u_sc_taskwork,u_sc_taskworkmx
  2179. WHERE u_sc_taskworkmx.scid = u_sc_taskwork.scid
  2180. AND u_sc_taskworkmx.billid = u_sc_taskwork.billid
  2181. AND u_sc_taskwork.mtrlid = :arg_mtrlid
  2182. AND u_sc_taskwork.orderid = :arg_orderid
  2183. AND u_sc_taskworkmx.procode = :arg_procode
  2184. AND u_sc_taskwork.scid = :scid
  2185. And (u_sc_taskwork.affirmflag = 0 OR :uo_option_taskwork_not_affirm = 1 );
  2186. IF sqlca.SQLCode = -1 THEN
  2187. arg_msg = '行:'+String(arg_printid)+',查询指令单号:'+ls_ordercode+',工序:'+arg_procode+'产品个人计件单开单未确认数失败,'+sqlca.SQLErrText
  2188. rslt = 0
  2189. GOTO ext
  2190. END IF
  2191. SELECT isnull(sum(u_data_wage.zx_qty),0)
  2192. INTO :ld_collect_qty
  2193. FROM u_data_collect INNER JOIN
  2194. u_data_wage ON u_data_collect.collectid = u_data_wage.collectid
  2195. WHERE u_data_collect.scid = :scid
  2196. and u_data_collect.orderid = :arg_orderid
  2197. and u_data_wage.procode = :arg_procode;
  2198. IF sqlca.SQLCode = -1 THEN
  2199. arg_msg = '行:'+String(arg_printid)+',查询工序:'+arg_procode+'注塑质检单杂项数量失败,'+sqlca.SQLErrText
  2200. rslt = 0
  2201. GOTO ext
  2202. END IF
  2203. FOR l = 1 TO it_mxbt
  2204. IF taskworkmx[l].procode = arg_procode AND &
  2205. taskworkmx[l].orderid = arg_orderid THEN
  2206. ld_mx_qty = ld_mx_qty + taskworkmx[l].qty
  2207. END IF
  2208. NEXT
  2209. IF uo_option_taskwork_not_affirm = 1 THEN
  2210. ld_finish_qty = 0
  2211. END IF
  2212. IF arg_qty + ld_finish_qty + ld_othertask_qty + ld_Otherbill_qty + ld_Otherbill_qty_2 + ld_mx_qty + ld_collect_qty > ld_workqty THEN
  2213. rslt = 0
  2214. IF uo_option_if_taskwork_acmpqty = 0 THEN
  2215. arg_msg = '第 '+String(arg_printid)+' 行,指令单号:'+ls_ordercode+',工序:'+arg_procode+',计件数量不能大于计划生产数,计划工序数:'+String(ld_workqty,'####0.####')+',已完成数:'+String(ld_finish_qty,'####0.####')+',本单已开单:'+String(ld_mx_qty,'####0.####')+',其它单已开单:'+String(ld_othertask_qty + ld_Otherbill_qty + ld_Otherbill_qty_2 + ld_collect_qty,'####0.####')+',不能开单:'+String(arg_qty,'####0.####')
  2216. ELSE
  2217. arg_msg = '第 '+String(arg_printid)+' 行,指令单号:'+ls_ordercode+',工序:'+arg_procode+',计件数量不能大于计划已进仓数,已进仓工序数:'+String(ld_workqty,'####0.####')+',已完成数:'+String(ld_finish_qty,'####0.####')+',本单已开单:'+String(ld_mx_qty,'####0.####')+',其它单已开单:'+String(ld_othertask_qty + ld_Otherbill_qty + ld_Otherbill_qty_2 + ld_collect_qty,'####0.####')+',不能开单:'+String(arg_qty,'####0.####')
  2218. END IF
  2219. GOTO ext
  2220. END IF
  2221. END IF
  2222. IF billtype = 0 OR billtype = 1 THEN
  2223. Decimal ld_workprice
  2224. //检查限价
  2225. IF uo_option_taskwork_price_if_mod = 1 THEN //启用检查限价选项
  2226. IF uo_option_taskwork_procode_order = 0 OR arg_orderid = 0 THEN //按工价表限价
  2227. SELECT workPrice INTO :ld_workprice
  2228. FROM u_sc_workprice
  2229. WHERE mtrlid = :arg_mtrlid
  2230. AND procode = :arg_procode
  2231. and wpcode = :arg_wpcode;
  2232. IF sqlca.SQLCode = 0 THEN
  2233. IF ld_workprice <> arg_price THEN
  2234. rslt = 0
  2235. arg_msg = '行:'+String(arg_printid)+',工序:'+arg_procode+' 工价表工价为:'+String(ld_workprice,'#,##0.00########')+',不能输入工价:'+String(arg_price,'#,##0.00########')
  2236. GOTO ext
  2237. END IF
  2238. ELSE
  2239. SELECT workprice INTO :ld_workprice
  2240. FROM u_sc_workprocedure
  2241. WHERE code = :arg_procode
  2242. AND ifpubl = 1;
  2243. IF sqlca.SQLCode <> 0 THEN
  2244. rslt = 0
  2245. arg_msg = '行:'+String(arg_printid)+',查询公共工序:'+arg_procode+' 工价失败'+'~n'+sqlca.SQLErrText
  2246. GOTO ext
  2247. END IF
  2248. IF ld_workprice <> arg_price THEN
  2249. rslt = 0
  2250. arg_msg = '行:'+String(arg_printid)+',公共工序:'+arg_procode+' 工价为:'+String(ld_workprice,'#,##0.00########')+',不能输入工价:'+String(arg_price,'#,##0.00########')
  2251. GOTO ext
  2252. END IF
  2253. END IF
  2254. ELSE //按生产计划工序明细限价
  2255. SELECT workPrice INTO :ld_workprice
  2256. FROM U_OrderRqwp
  2257. WHERE scid = :scid
  2258. AND orderid = :arg_orderid
  2259. AND procode = :arg_procode;
  2260. IF sqlca.SQLCode = 0 THEN
  2261. IF ld_workprice <> arg_price THEN
  2262. rslt = 0
  2263. arg_msg = '行:'+String(arg_printid)+',工序:'+arg_procode+' 生产计划工序明细工价为:'+String(ld_workprice,'#,##0.00########')+',不能输入工价:'+String(arg_price,'#,##0.00########')
  2264. GOTO ext
  2265. END IF
  2266. ELSE
  2267. SELECT workprice INTO :ld_workprice
  2268. FROM u_sc_workprocedure
  2269. WHERE code = :arg_procode
  2270. AND ifpubl = 1;
  2271. IF sqlca.SQLCode <> 0 THEN
  2272. rslt = 0
  2273. arg_msg = '行:'+String(arg_printid)+',查询公共工序:'+arg_procode+' 工价失败'+'~n'+sqlca.SQLErrText
  2274. GOTO ext
  2275. END IF
  2276. IF ld_workprice <> arg_price THEN
  2277. rslt = 0
  2278. arg_msg = '行:'+String(arg_printid)+',公共工序:'+arg_procode+' 工价为:'+String(ld_workprice,'#,##0.00########')+',不能输入工价:'+String(arg_price,'#,##0.00########')
  2279. GOTO ext
  2280. END IF
  2281. END IF
  2282. END IF
  2283. END IF
  2284. END IF
  2285. //写入内容
  2286. it_mxbt++
  2287. taskworkmx[it_mxbt].mtrlid = arg_mtrlid
  2288. taskworkmx[it_mxbt].procode = arg_procode
  2289. taskworkmx[it_mxbt].proname = arg_proname
  2290. taskworkmx[it_mxbt].qty = arg_qty
  2291. taskworkmx[it_mxbt].price = arg_price
  2292. taskworkmx[it_mxbt].mxdscrp = arg_mxdscrp
  2293. taskworkmx[it_mxbt].printid = arg_printid
  2294. taskworkmx[it_mxbt].status = arg_status
  2295. taskworkmx[it_mxbt].woodcode = arg_woodcode
  2296. taskworkmx[it_mxbt].pcode = arg_pcode
  2297. taskworkmx[it_mxbt].ycreason = arg_ycreason
  2298. taskworkmx[it_mxbt].orderid = arg_orderid
  2299. taskworkmx[it_mxbt].ordercode = ls_ordercode
  2300. taskworkmx[it_mxbt].reason = arg_reason
  2301. taskworkmx[it_mxbt].unit = arg_unit
  2302. taskworkmx[it_mxbt].failqty = arg_failqty
  2303. taskworkmx[it_mxbt].facthours = arg_facthours
  2304. taskworkmx[it_mxbt].wpcode = arg_wpcode
  2305. ext:
  2306. IF rslt = 0 THEN p_clearmx()
  2307. Return(rslt)
  2308. end function
  2309. public function integer auditing_1 (long arg_scid, long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit);//arg_wrkgrpid : -1 全部工作组
  2310. Long cnt,i
  2311. Int rslt = 1
  2312. Decimal ls_emp_sumwage
  2313. datastore ds_emp_sumwage
  2314. uo_wage u_wage
  2315. u_wage = Create uo_wage
  2316. IF uo_option_taskwork_not_affirm = -1000 THEN
  2317. arg_msg = '选项:[080]计件单不使用确认功能,读取初始默认值失败,操作取消!'
  2318. rslt = 0
  2319. GOTO ext
  2320. END IF
  2321. IF uo_option_check_noworkprice = -1000 THEN
  2322. arg_msg = '选项:[240]计件单没有工价不能审核,读取初始默认值失败,操作取消!'
  2323. rslt = 0
  2324. GOTO ext
  2325. END IF
  2326. IF uo_option_taskwork_not_affirm = 0 THEN
  2327. cnt = 0
  2328. SELECT count(*)
  2329. INTO :cnt
  2330. FROM u_scwg_taskwork_2
  2331. WHERE u_scwg_taskwork_2.wageid = :arg_wageid
  2332. AND u_scwg_taskwork_2.wagemth = :arg_wagemth
  2333. and (u_scwg_taskwork_2.scid = :arg_scid or :arg_scid = -1)
  2334. AND u_scwg_taskwork_2.affirmflag = 0
  2335. AND u_scwg_taskwork_2.billtype = 1
  2336. Using commit_transaction;
  2337. IF commit_transaction.SQLCode <> 0 THEN
  2338. rslt = 0
  2339. arg_msg = '查询是否有单未确认操作失败,'+commit_transaction.SQLErrText
  2340. GOTO ext
  2341. END IF
  2342. IF cnt > 0 THEN
  2343. rslt = 0
  2344. arg_msg = '该月份存在未确认的单据('+String(cnt)+'),请先全部确认'
  2345. GOTO ext
  2346. END IF
  2347. END IF
  2348. cnt = 0
  2349. SELECT count(*)
  2350. INTO :cnt
  2351. FROM u_scwg_taskwork_2
  2352. WHERE u_scwg_taskwork_2.wageid = :arg_wageid
  2353. AND u_scwg_taskwork_2.wagemth = :arg_wagemth
  2354. and (u_scwg_taskwork_2.scid = :arg_scid or :arg_scid = -1)
  2355. AND u_scwg_taskwork_2.flag = 0
  2356. AND u_scwg_taskwork_2.billtype = 1
  2357. Using commit_transaction;
  2358. IF commit_transaction.SQLCode <> 0 THEN
  2359. rslt = 0
  2360. arg_msg = '查询是否有单要审核操作失败,'+commit_transaction.SQLErrText
  2361. GOTO ext
  2362. END IF
  2363. IF cnt = 0 THEN
  2364. rslt = 0
  2365. arg_msg = '该月份不存在要审核的单据,请检查'
  2366. GOTO ext
  2367. END IF
  2368. //SELECT count(*)
  2369. // INTO :cnt
  2370. // FROM u_scwg_taskwork_2
  2371. // WHERE u_scwg_taskwork_2.wageid = :arg_wageid
  2372. // AND u_scwg_taskwork_2.wagemth = :arg_wagemth
  2373. // AND u_scwg_taskwork_2.flag = 1
  2374. // AND u_scwg_taskwork_2.billtype = 1
  2375. // USING commit_transaction;
  2376. //IF commit_transaction.SQLCode <> 0 THEN
  2377. // rslt = 0
  2378. // arg_msg = '查询是否有单已经审核操作失败,'+commit_transaction.SQLErrText
  2379. // GOTO ext
  2380. //END IF
  2381. //
  2382. //IF cnt > 0 THEN
  2383. // rslt = 0
  2384. // arg_msg = '该月份的工资项目存在部分已审核的记录,请先撤审'
  2385. // GOTO ext
  2386. //END IF
  2387. ds_emp_sumwage = Create datastore
  2388. ds_emp_sumwage.DataObject = 'dw_emp_sumwage_12'
  2389. ds_emp_sumwage.SetTransObject(sqlca)
  2390. IF ds_emp_sumwage.Retrieve(arg_scid,arg_wagemth,arg_wageid,0) <= 0 THEN
  2391. rslt = 0
  2392. arg_msg = '本月没有单据可审核或查询单据失败'
  2393. GOTO ext
  2394. END IF
  2395. FOR i = 1 To ds_emp_sumwage.RowCount()
  2396. ls_emp_sumwage = 0.00
  2397. ls_emp_sumwage = ds_emp_sumwage.Object.sumwage[i]
  2398. IF uo_option_check_noworkprice = 1 And ls_emp_sumwage = 0 THEN
  2399. rslt = 0
  2400. arg_msg = '行'+String(i)+',没有填写工价,不允许审核'
  2401. GOTO ext
  2402. END IF
  2403. IF u_wage.f_setwagemxdata(arg_wagemth,ds_emp_sumwage.Object.u_scwg_taskwork_2_empid[i],arg_wageid,ls_emp_sumwage,arg_msg,False) = 0 THEN
  2404. rslt = 0
  2405. GOTO ext
  2406. END IF
  2407. NEXT
  2408. IF uo_option_taskwork_not_affirm = 0 THEN
  2409. UPDATE u_scwg_taskwork_2
  2410. SET u_scwg_taskwork_2.flag = 1,
  2411. u_scwg_taskwork_2.auditingrep = :publ_operator,
  2412. u_scwg_taskwork_2.auditingdate = getdate()
  2413. WHERE u_scwg_taskwork_2.wageid = :arg_wageid
  2414. AND u_scwg_taskwork_2.wagemth = :arg_wagemth
  2415. and (u_scwg_taskwork_2.scid = :arg_scid or :arg_scid = -1)
  2416. AND u_scwg_taskwork_2.flag = 0
  2417. AND u_scwg_taskwork_2.billtype = 1
  2418. Using commit_transaction;
  2419. ELSE
  2420. UPDATE u_scwg_taskwork_2
  2421. SET u_scwg_taskwork_2.flag = 1,
  2422. u_scwg_taskwork_2.auditingrep = :publ_operator,
  2423. u_scwg_taskwork_2.auditingdate = getdate(),
  2424. u_scwg_taskwork_2.affirmdate = getdate(),
  2425. u_scwg_taskwork_2.affirmemp = :publ_operator,
  2426. u_scwg_taskwork_2.affirmflag = 1
  2427. WHERE u_scwg_taskwork_2.wageid = :arg_wageid
  2428. AND u_scwg_taskwork_2.wagemth = :arg_wagemth
  2429. and (u_scwg_taskwork_2.scid = :arg_scid or :arg_scid = -1)
  2430. AND u_scwg_taskwork_2.flag = 0
  2431. AND u_scwg_taskwork_2.billtype = 1
  2432. Using commit_transaction;
  2433. END IF
  2434. IF commit_transaction.SQLCode <> 0 THEN
  2435. rslt = 0
  2436. arg_msg = '更新审核标志失败,原因:'+commit_transaction.SQLErrText
  2437. GOTO ext
  2438. ELSEIF commit_transaction.SQLNRows = 0 THEN
  2439. rslt = 0
  2440. arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  2441. GOTO ext
  2442. END IF
  2443. ext:
  2444. IF rslt = 0 THEN
  2445. ROLLBACK Using commit_transaction;
  2446. ELSEIF rslt = 1 And arg_ifcommit THEN
  2447. COMMIT Using commit_transaction;
  2448. END IF
  2449. Destroy u_wage
  2450. RETURN rslt
  2451. end function
  2452. public function integer c_auditing_1 (long arg_scid, long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  2453. Long ll_flagnum,i
  2454. Decimal ls_emp_sumwage
  2455. DateTime ls_null
  2456. SetNull(ls_null)
  2457. IF uo_option_taskwork_not_affirm = -1000 THEN
  2458. arg_msg = '选项:[080]计件单不使用确认功能,读取初始默认值失败,操作取消!'
  2459. rslt = 0
  2460. GOTO ext
  2461. END IF
  2462. IF f_check_wage_audit(arg_wagemth,arg_scid,arg_msg) = 0 THEN
  2463. rslt = 0
  2464. arg_msg = arg_msg + ',不能撤审'
  2465. GOTO ext
  2466. END IF
  2467. Long cnt
  2468. cnt = 0
  2469. SELECT count(*)
  2470. INTO :cnt
  2471. FROM u_wage_change
  2472. WHERE wagemth = :arg_wagemth
  2473. And wageid = :arg_wageid;
  2474. IF sqlca.SQLCode <> 0 THEN
  2475. rslt = 0
  2476. arg_msg = '查询该月份该工资项目是否已开工资变更单失败'+"~n"+sqlca.SQLErrText
  2477. GOTO ext
  2478. END IF
  2479. IF cnt > 0 THEN
  2480. rslt = 0
  2481. arg_msg = '该月份该工资项目已开工资变更单,不能重复开单'
  2482. GOTO ext
  2483. END IF
  2484. uo_wage u_wage
  2485. u_wage = Create uo_wage
  2486. SELECT count(*)
  2487. INTO :ll_flagnum
  2488. FROM u_scwg_taskwork_2
  2489. WHERE u_scwg_taskwork_2.wageid = :arg_wageid
  2490. AND u_scwg_taskwork_2.wagemth = :arg_wagemth
  2491. AND u_scwg_taskwork_2.flag = 1
  2492. AND u_scwg_taskwork_2.billtype = 1
  2493. Using commit_transaction;
  2494. IF commit_transaction.SQLCode <> 0 THEN
  2495. rslt = 0
  2496. arg_msg = '查询是否已有单据已审核操作失败,'+commit_transaction.SQLErrText
  2497. GOTO ext
  2498. END IF
  2499. IF ll_flagnum <= 0 THEN
  2500. rslt = 0
  2501. arg_msg = '该月份的工资项目不存在审核的记录'
  2502. GOTO ext
  2503. END IF
  2504. //IF u_wage.f_wage_clear(arg_wageid,arg_wagemth,arg_msg,FALSE) = 0 THEN
  2505. // rslt = 0
  2506. // GOTO ext
  2507. //END IF
  2508. datastore ds_emp_sumwage
  2509. ds_emp_sumwage = Create datastore
  2510. ds_emp_sumwage.DataObject = 'dw_emp_sumwage_12'
  2511. ds_emp_sumwage.SetTransObject(sqlca)
  2512. IF ds_emp_sumwage.Retrieve(arg_scid,arg_wagemth,arg_wageid,1) <= 0 THEN
  2513. rslt = 0
  2514. arg_msg = '本月没有单据已审核或查询单据失败'
  2515. GOTO ext
  2516. END IF
  2517. FOR i = 1 To ds_emp_sumwage.RowCount()
  2518. ls_emp_sumwage = 0.00
  2519. ls_emp_sumwage = 0 - ds_emp_sumwage.Object.sumwage[i]
  2520. IF u_wage.f_setwagemxdata(arg_wagemth,ds_emp_sumwage.Object.u_scwg_taskwork_2_empid[i],arg_wageid,ls_emp_sumwage,arg_msg,False) = 0 THEN
  2521. rslt = 0
  2522. GOTO ext
  2523. END IF
  2524. NEXT
  2525. //更新审核标志
  2526. IF uo_option_taskwork_not_affirm = 0 THEN
  2527. UPDATE u_scwg_taskwork_2
  2528. SET u_scwg_taskwork_2.flag = 0,
  2529. u_scwg_taskwork_2.Auditingrep = '',
  2530. u_scwg_taskwork_2.Auditingdate = :ls_null
  2531. WHERE u_scwg_taskwork_2.wageid = :arg_wageid
  2532. AND u_scwg_taskwork_2.wagemth = :arg_wagemth
  2533. AND (u_scwg_taskwork_2.scid = :arg_scid OR :arg_scid = -1)
  2534. AND u_scwg_taskwork_2.billtype = 1
  2535. And u_scwg_taskwork_2.flag = 1 Using commit_transaction;
  2536. ELSE
  2537. UPDATE u_scwg_taskwork_2
  2538. SET u_scwg_taskwork_2.flag = 0,
  2539. u_scwg_taskwork_2.Auditingrep = '',
  2540. u_scwg_taskwork_2.Auditingdate = :ls_null,
  2541. u_scwg_taskwork_2.affirmemp = '',
  2542. u_scwg_taskwork_2.affirmdate = :ls_null,
  2543. u_scwg_taskwork_2.affirmflag = 0
  2544. WHERE u_scwg_taskwork_2.wageid = :arg_wageid
  2545. AND u_scwg_taskwork_2.wagemth = :arg_wagemth
  2546. AND (u_scwg_taskwork_2.scid = :arg_scid OR :arg_scid = -1)
  2547. AND u_scwg_taskwork_2.billtype = 1
  2548. And u_scwg_taskwork_2.flag = 1 Using commit_transaction;
  2549. END IF
  2550. IF commit_transaction.SQLCode <> 0 THEN
  2551. rslt = 0
  2552. arg_msg = '更新审核标志失败,原因:'+commit_transaction.SQLErrText
  2553. GOTO ext
  2554. ELSEIF commit_transaction.SQLNRows = 0 THEN
  2555. rslt = 0
  2556. arg_msg = "单据正在撤审,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  2557. GOTO ext
  2558. END IF
  2559. ext:
  2560. IF rslt = 0 THEN
  2561. ROLLBACK Using commit_transaction;
  2562. ELSEIF rslt = 1 And arg_ifcommit THEN
  2563. COMMIT Using commit_transaction;
  2564. END IF
  2565. Destroy u_wage
  2566. RETURN rslt
  2567. end function
  2568. on uo_scwg_taskwork_2.create
  2569. call super::create
  2570. TriggerEvent( this, "constructor" )
  2571. end on
  2572. on uo_scwg_taskwork_2.destroy
  2573. TriggerEvent( this, "destructor" )
  2574. call super::destroy
  2575. end on
  2576. event constructor;String arg_msg
  2577. String str_optionvalue
  2578. str_optionvalue = ''
  2579. f_get_sys_option_value('080',str_optionvalue,arg_msg)
  2580. uo_option_taskwork_not_affirm = Long(str_optionvalue)
  2581. str_optionvalue = ''
  2582. f_get_sys_option_value('104',str_optionvalue,arg_msg)
  2583. uo_option_taskwork2_noorder = Long(str_optionvalue)
  2584. str_optionvalue = ''
  2585. f_get_sys_option_value('106',str_optionvalue,arg_msg)
  2586. uo_option_taskwork_person_noorder = Long(str_optionvalue)
  2587. str_optionvalue = ''
  2588. f_get_sys_option_value('064',str_optionvalue,arg_msg)
  2589. uo_option_taskwork_procode_order = Long(str_optionvalue)
  2590. str_optionvalue = ''
  2591. f_get_sys_option_value('081',str_optionvalue,arg_msg)
  2592. uo_option_taskwork_price_if_mod = Long(str_optionvalue)
  2593. str_optionvalue = ''
  2594. f_get_sys_option_value('202',str_optionvalue,arg_msg)
  2595. uo_option_if_taskwork_acmpqty = Long(str_optionvalue)
  2596. str_optionvalue = ''
  2597. f_get_sys_option_value('240',str_optionvalue,arg_msg)
  2598. uo_option_check_noworkprice = Long(str_optionvalue)
  2599. end event