uo_scwg_taskwork_2.sru 74 KB

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