uo_scwg_taskwork_day.sru 67 KB

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