uo_taskwork.sru 46 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912
  1. $PBExportHeader$uo_taskwork.sru
  2. forward
  3. global type uo_taskwork from nonvisualobject
  4. end type
  5. type s_taskworkmx from structure within uo_taskwork
  6. end type
  7. end forward
  8. type s_taskworkmx from structure
  9. long empid
  10. string procode
  11. string proname
  12. string empcode
  13. string empname
  14. decimal { 10 } amount
  15. decimal { 10 } workprice
  16. decimal { 5 } workhour
  17. string mxdscrp
  18. long printid
  19. string status
  20. long proorder
  21. string appendname
  22. decimal { 5 } appendprice
  23. string wpcode
  24. end type
  25. global type uo_taskwork from nonvisualobject
  26. end type
  27. global uo_taskwork uo_taskwork
  28. type variables
  29. Public ProtectedWrite Long scid //分部
  30. Public ProtectedWrite Long billid //计件单自动增量id
  31. //工资月份
  32. Public ProtectedWrite String billcode //计件单的唯一编号
  33. Public ProtectedWrite DateTime opdate //建立时间,自动
  34. Public ProtectedWrite String opemp //建立人
  35. Public ProtectedWrite DateTime moddate //修改时间,自动
  36. Public ProtectedWrite String modemp //修改人
  37. Public ProtectedWrite Int flag //审核标志
  38. Public ProtectedWrite DateTime auditingdate //审核时间
  39. Public ProtectedWrite String auditingrep //审核操作员
  40. Public ProtectedWrite DateTime affirmdate //确认时间
  41. Public ProtectedWrite String affirmemp //确认人
  42. Public ProtectedWrite Int affirmflag //确认标志
  43. Long wagemth
  44. Long orderid //订单号
  45. DateTime billdate //计件日期
  46. Long wrkgrpid //工组id
  47. String wrkgrpname = '' //工组
  48. Long wageid //工资项目id
  49. Long mtrlid // 产品id
  50. Decimal qty //数量
  51. String dscrp = '' //备注
  52. String relcode = '' //相关号码 
  53. Long relid = 0
  54. String status
  55. String woodcode
  56. String pcode
  57. long wkpid
  58. uo_wage u_wage
  59. Boolean if_getid_ture = True
  60. Private:
  61. s_taskworkmx taskworkmx[] //明细结构数组
  62. Long it_mxbt = 0 //明细结构数组末指针
  63. Boolean it_newbegin = False //新建标志
  64. Boolean it_updatebegin = False //修改标志
  65. Int uo_option_taskwork_not_affirm
  66. Int uo_option_task_noorder
  67. Int uo_option_taskwork_procode_order
  68. Int uo_option_taskwork_price_if_mod
  69. Int uo_option_if_taskwork_acmpqty
  70. int uo_option_check_noworkprice
  71. end variables
  72. forward prototypes
  73. public function integer p_clearmx ()
  74. public function integer p_reset ()
  75. public function integer save (ref string arg_msg, boolean arg_ifcommit)
  76. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg)
  77. public function integer newbegin (long arg_scid, ref string arg_msg)
  78. public function integer p_getinfo (long arg_scid, long arg_billid, ref string arg_msg)
  79. public function integer getinfo (long arg_scid, long arg_billid, ref string arg_msg)
  80. public function integer affirm (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  81. public function integer c_affirm (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  82. public function integer updatebegin (long arg_scid, long arg_billid, ref string arg_msg)
  83. public function integer auditmx (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  84. public function integer cauditmx (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  85. public function integer del (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  86. public function integer acceptmx (long arg_empid, string arg_empcode, string arg_empname, string arg_procode, string arg_proname, decimal arg_amount, decimal arg_workprice, decimal arg_workhour, string arg_mxdscrp, ref string arg_msg, long arg_printid, string arg_status, long arg_proorder, string arg_appendname, decimal arg_appendprice, string arg_wpcode)
  87. public function integer auditing (long arg_scid, long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit)
  88. public function integer c_auditing (long arg_scid, long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit)
  89. end prototypes
  90. public function integer p_clearmx ();//INT p_clearmx()
  91. //清除明细
  92. it_mxbt=0
  93. RETURN 1
  94. end function
  95. public function integer p_reset ();//INT p_RESET()
  96. //清除对象及其明细
  97. billid=0
  98. billcode=''
  99. opemp=''
  100. auditingrep=''
  101. flag=0
  102. orderid=0
  103. wrkgrpid=0
  104. wrkgrpname=''
  105. wageid=0
  106. mtrlid=0
  107. qty=0
  108. dscrp=''
  109. relcode=''
  110. status = ''
  111. woodcode = ''
  112. pcode = ''
  113. wkpid = 0
  114. it_newbegin=FALSE
  115. it_updatebegin=FALSE
  116. //清除明细
  117. P_CLEARMX()
  118. RETURN 1
  119. end function
  120. public function integer save (ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1,cnt = 0,i
  121. DateTime server_dt
  122. Long ls_newid
  123. IF IsNull(orderid) THEN orderid = 0
  124. IF IsNull(wrkgrpid) THEN wrkgrpid = 0
  125. IF IsNull(wrkgrpname) THEN wrkgrpname = ''
  126. IF IsNull(wageid) THEN wageid = 0
  127. IF IsNull(mtrlid) THEN mtrlid = 0
  128. IF IsNull(dscrp) THEN dscrp = ''
  129. IF IsNull(relcode) THEN relcode = ''
  130. IF IsNull(wagemth) THEN wagemth = 0
  131. if isnull(relid) then relid = 0
  132. if isnull(status) then status = ''
  133. if isnull(woodcode) then woodcode = ''
  134. if isnull(pcode) then pcode = ''
  135. if isnull(wkpid) then wkpid = 0
  136. IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
  137. rslt = 0
  138. arg_msg = "非编辑状态不可以提交"
  139. GOTO ext
  140. END IF
  141. IF uo_option_task_noorder = -1000 THEN
  142. arg_msg = '选项:[018]产品个人计件单可不选生产计划,读取初始默认值失败,操作取消!'
  143. rslt = 0
  144. GOTO ext
  145. END IF
  146. SELECT Top 1 getdate() INTO :server_dt FROM u_user;
  147. //取得系统时间,借用操作员表
  148. IF sqlca.SQLCode <> 0 THEN
  149. rslt = 0
  150. arg_msg = "查询操作失败,日期 "
  151. GOTO ext
  152. END IF
  153. IF mtrlid <= 0 THEN
  154. rslt = 0
  155. arg_msg = '请先选择产品'
  156. GOTO ext
  157. END IF
  158. if wagemth = 0 then
  159. rslt = 0
  160. arg_msg = '请输入工资月份'
  161. GOTO ext
  162. END IF
  163. IF it_mxbt = 0 THEN //
  164. rslt = 0
  165. arg_msg = "没有计件明细"
  166. GOTO ext
  167. END IF
  168. //IF f_check_inoutdate(0,billdate,FALSE,arG_MSG) = 0 THEN
  169. // rslt = 0
  170. // GOTO ext
  171. //END IF
  172. cnt = 0
  173. SELECT count(*) INTO :cnt
  174. FROM u_gz_wageitem
  175. Where wageid = :wageid;
  176. IF sqlca.SQLCode <> 0 THEN
  177. rslt = 0
  178. arg_msg = "查询工资项目失败!"
  179. GOTO ext
  180. END IF
  181. IF cnt <> 1 THEN
  182. rslt = 0
  183. arg_msg = "不存在工资项目!"
  184. GOTO ext
  185. END IF
  186. IF uo_option_task_noorder = 0 THEN
  187. cnt = 0
  188. SELECT count(*) INTO :cnt
  189. FROM u_order_ml
  190. WHERE orderid = :orderid
  191. AND mtrlid = :mtrlid
  192. AND scid = :scid;
  193. IF sqlca.SQLCode <> 0 THEN
  194. rslt = 0
  195. arg_msg = "查询生产计划失败!"
  196. GOTO ext
  197. END IF
  198. IF cnt = 0 THEN
  199. rslt = 0
  200. arg_msg = "不存在生产计划!"
  201. GOTO ext
  202. END IF
  203. END IF
  204. ////////////////////////////////////////////// //开始区分:新建/更新 处理
  205. IF billid = 0 THEN //新建
  206. ls_newid = f_sys_scidentity(0,"u_sc_taskwork","billid",arg_msg,TRUE,id_sqlca)
  207. IF ls_newid <= 0 THEN
  208. rslt = 0
  209. GOTO ext
  210. END IF
  211. billcode = getid(0,"JJ",Date(server_dt),if_getid_ture,sqlca) //取得新单据编号
  212. IF billcode = "err" THEN
  213. billcode = ''
  214. rslt = 0
  215. arg_msg = "无法获取计件单编号"
  216. GOTO ext
  217. END IF
  218. INSERT INTO u_sc_taskwork (
  219. scid,
  220. billid,
  221. billcode,
  222. Wagemth,
  223. orderid,
  224. wrkGrpid,
  225. WrkGrpname,
  226. wageid,
  227. billdate,
  228. Dscrp,
  229. opdate,
  230. opemp,
  231. mtrlid,
  232. relcode,
  233. relid,
  234. status,
  235. woodcode,
  236. pcode,
  237. wkpid)
  238. VALUES (
  239. :scid,
  240. :ls_newid,
  241. :billcode,
  242. :Wagemth,
  243. :orderid,
  244. :wrkGrpid,
  245. :WrkGrpname,
  246. :wageid,
  247. :billdate,
  248. :dscrp,
  249. :server_dt,
  250. :publ_operator,
  251. :mtrlid,
  252. :relcode,
  253. :relid,
  254. :status,
  255. :woodcode,
  256. :pcode,
  257. :wkpid);
  258. IF sqlca.SQLCode <> 0 THEN
  259. rslt = 0
  260. arg_msg = "因网络或其它原因导致插入操作失败>>"+"~n"+sqlca.SQLErrText
  261. GOTO ext
  262. END IF
  263. billid = ls_newid
  264. FOR i = 1 TO it_mxbt
  265. INSERT INTO u_sc_taskworkmx
  266. ( scid,
  267. billid,
  268. empid,
  269. empcode,
  270. empname,
  271. procode,
  272. proname,
  273. amount,
  274. workprice,
  275. workhour,
  276. mxdscrp,
  277. printid,
  278. status,
  279. proorder,
  280. appendname,
  281. appendprice,
  282. wpcode)
  283. VALUES (
  284. :scid,
  285. :ls_newid,
  286. :taskworkmx[i].empid,
  287. :taskworkmx[i].empcode,
  288. :taskworkmx[i].empname,
  289. :taskworkmx[i].procode,
  290. :taskworkmx[i].proname,
  291. :taskworkmx[i].amount,
  292. :taskworkmx[i].workprice,
  293. :taskworkmx[i].workhour,
  294. :taskworkmx[i].mxdscrp,
  295. :taskworkmx[i].printid,
  296. :taskworkmx[i].status,
  297. :taskworkmx[i].proorder,
  298. :taskworkmx[i].appendname,
  299. :taskworkmx[i].appendprice,
  300. :taskworkmx[i].wpcode);
  301. IF sqlca.SQLCode <> 0 THEN
  302. billid = 0 //还原noticeid
  303. rslt = 0
  304. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
  305. ROLLBACK ;
  306. GOTO ext
  307. END IF
  308. NEXT
  309. ELSE //////////////////////////////////////////////// //更新
  310. UPDATE u_sc_taskwork
  311. SET orderid = :orderid,
  312. Mtrlid = :Mtrlid,
  313. wrkGrpid = :wrkGrpid,
  314. WrkGrpname = :WrkGrpname,
  315. wageid = :wageid,
  316. billdate = :billdate,
  317. Dscrp = :Dscrp,
  318. moddate = :server_dt,
  319. modemp = :publ_operator,
  320. relcode = :relcode,
  321. wagemth = :wagemth,
  322. relid = :relid,
  323. status = :status,
  324. woodcode = :woodcode,
  325. pcode = :pcode,
  326. wkpid = :wkpid
  327. WHERE u_sc_taskwork.billid = :billid
  328. AND u_sc_taskwork.scid = :scid
  329. AND Auditingflag = 0;
  330. IF sqlca.SQLCode <> 0 OR sqlca.SQLNRows <= 0 THEN
  331. rslt = 0
  332. arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText
  333. GOTO ext
  334. END IF
  335. //删除原有明细
  336. DELETE FROM u_sc_taskworkmx
  337. Where u_sc_taskworkmx.billid = :billid;
  338. IF sqlca.SQLCode <> 0 THEN
  339. rslt = 0
  340. arg_msg = "删除旧有明细操作失败"+"~n"+sqlca.SQLErrText
  341. GOTO ext
  342. END IF
  343. FOR i = 1 TO it_mxbt
  344. INSERT INTO u_sc_taskworkmx
  345. (scid,
  346. billid,
  347. empid,
  348. empcode,
  349. empname,
  350. procode,
  351. proname,
  352. amount,
  353. workprice,
  354. workhour,
  355. mxdscrp,
  356. printid,
  357. status,
  358. proorder,
  359. appendname,
  360. appendprice,
  361. wpcode)
  362. VALUES (
  363. :scid,
  364. :billid,
  365. :taskworkmx[i].empid,
  366. :taskworkmx[i].empcode,
  367. :taskworkmx[i].empname,
  368. :taskworkmx[i].procode,
  369. :taskworkmx[i].proname,
  370. :taskworkmx[i].amount,
  371. :taskworkmx[i].workprice,
  372. :taskworkmx[i].workhour,
  373. :taskworkmx[i].mxdscrp,
  374. :taskworkmx[i].printid,
  375. :taskworkmx[i].status,
  376. :taskworkmx[i].proorder,
  377. :taskworkmx[i].appendname,
  378. :taskworkmx[i].appendprice,
  379. :taskworkmx[i].wpcode);
  380. IF sqlca.SQLCode <> 0 THEN
  381. rslt = 0
  382. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
  383. GOTO ext
  384. END IF
  385. NEXT
  386. END IF
  387. it_newbegin = FALSE
  388. it_updatebegin = FALSE
  389. ext:
  390. IF rslt = 0 THEN
  391. ROLLBACK;
  392. p_clearmx()
  393. ELSEIF rslt = 1 AND arg_ifcommit THEN
  394. COMMIT;
  395. END IF
  396. Return(rslt)
  397. end function
  398. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg);//====================================================================
  399. // Function: add_dscrp(arg_billid,arg_newdescppart,arg_msg)
  400. //--------------------------------------------------------------------
  401. // Description:
  402. //--------------------------------------------------------------------
  403. // Arguments:
  404. // value long arg_billid
  405. // value string arg_newdescppart
  406. // reference string arg_msg
  407. //--------------------------------------------------------------------
  408. // Returns: integer
  409. //--------------------------------------------------------------------
  410. // Author: yyx Date: 2003.11.21
  411. //--------------------------------------------------------------------
  412. // Modify History:
  413. //
  414. //====================================================================
  415. int rslt = 1
  416. arg_newdescppart = trim(arg_newdescppart)
  417. if arg_billid <= 0 then
  418. rslt = 0
  419. arg_msg = "没有删除对象,操作取消"
  420. goto ext
  421. end if
  422. if it_newbegin or it_updatebegin then
  423. rslt=0
  424. arg_msg="编辑状态下不可以执行,操作取消"
  425. goto ext
  426. end if
  427. select u_sc_taskwork.auditingflag
  428. into :flag
  429. from u_sc_taskwork
  430. where u_sc_taskwork.billid = :arg_billid;
  431. if sqlca.sqlcode <> 0 then
  432. rslt = 0
  433. arg_msg = '查询计件单操作失败'
  434. goto ext
  435. end if
  436. if flag = 0 then
  437. rslt = 0
  438. arg_msg = "非审核状态下不可用"
  439. goto ext
  440. end if
  441. update u_sc_taskwork
  442. set dscrp = dscrp+' '+:arg_newdescppart
  443. where u_sc_taskwork.billid = :billid;
  444. if sqlca.sqlcode <> 0 then
  445. rollback ;
  446. rslt = 0
  447. arg_msg = "因网络或其它原因导致添加单据备注操作失败"+"~n"+sqlca.sqlerrtext
  448. goto ext
  449. end if
  450. commit;
  451. dscrp = dscrp+' '+arg_newdescppart
  452. ext:
  453. return (rslt)
  454. end function
  455. public function integer newbegin (long arg_scid, ref string arg_msg);long rslt = 1
  456. if arg_scid < 0 then
  457. arg_msg = '请选择分部'
  458. rslt = 0
  459. goto ext
  460. end if
  461. p_reset()
  462. scid=arg_scid
  463. it_newbegin=TRUE
  464. it_updatebegin=FALSE
  465. ext:
  466. if rslt = 0 then p_reset()
  467. return rslt
  468. end function
  469. public function integer p_getinfo (long arg_scid, long arg_billid, ref string arg_msg);Int rslt = 1
  470. IF arg_billid <= 0 THEN
  471. rslt = 0
  472. arG_MSG = "非法的单据唯一码"
  473. GOTO ext
  474. END IF
  475. SELECT
  476. billcode,
  477. Wagemth,
  478. orderid,
  479. wrkGrpid,
  480. WrkGrpname,
  481. wageid,
  482. billdate,
  483. Dscrp,
  484. mtrlid,
  485. relcode,
  486. AuditingFlag,
  487. affirmflag,
  488. status,
  489. woodcode,
  490. pcode,
  491. wkpid
  492. INTO
  493. :billcode,
  494. :Wagemth,
  495. :orderid,
  496. :wrkGrpid,
  497. :WrkGrpname,
  498. :wageid,
  499. :billdate,
  500. :Dscrp,
  501. :mtrlid,
  502. :relcode,
  503. :flag,
  504. :affirmflag,
  505. :status,
  506. :woodcode,
  507. :pcode,
  508. :wkpid
  509. FROM u_sc_taskwork
  510. Where billid = :arg_billid
  511. AND scid = :arg_scid;
  512. IF sqlca.SQLCode <> 0 THEN
  513. rslt = 0
  514. arG_MSG = "查询操作失败(错误单据唯一码),单据"+sqlca.SQLErrText
  515. GOTO ext
  516. END IF
  517. billid = arg_billid
  518. scid = arg_scid
  519. ext:
  520. IF rslt = 0 THEN p_reset()
  521. RETURN rslt
  522. end function
  523. public function integer getinfo (long arg_scid, long arg_billid, ref string arg_msg);
  524. Int rslt = 1
  525. Long i = 1,no_mxcheck = 0
  526. IF arg_billid <= 0 THEN
  527. rslt = 0
  528. arg_msg = "非法出仓单唯一码"
  529. GOTO ext
  530. END IF
  531. rslt = p_getinfo(arg_scid,arg_billid,arg_msg)
  532. IF rslt = 0 THEN GOTO ext
  533. DECLARE cur_mx CURSOR FOR
  534. SELECT Empid, Procode, Proname, Empcode, Empname, Amount, Workprice, Workhour,
  535. MXDscrp, printid,status,proorder,appendname,appendprice,wpcode
  536. FROM u_sc_taskworkmx
  537. Where billid = :arg_billid;
  538. OPEN cur_mx;
  539. FETCH cur_mx INTO :taskworkmx[i].empid,:taskworkmx[i].procode,:taskworkmx[i].proname,
  540. :taskworkmx[i].empcode,:taskworkmx[i].empname,:taskworkmx[i].amount,:taskworkmx[i].workprice,
  541. :taskworkmx[i].Workhour,:taskworkmx[i].MXDscrp,:taskworkmx[i].printid,:taskworkmx[i].status,:taskworkmx[i].proorder,
  542. :taskworkmx[i].appendname,:taskworkmx[i].appendprice,:taskworkmx[i].wpcode;
  543. DO WHILE sqlca.SQLCode = 0
  544. i++
  545. FETCH cur_mx INTO :taskworkmx[i].empid,:taskworkmx[i].procode,:taskworkmx[i].proname,
  546. :taskworkmx[i].empcode,:taskworkmx[i].empname,:taskworkmx[i].amount,:taskworkmx[i].workprice,
  547. :taskworkmx[i].Workhour,:taskworkmx[i].MXDscrp,:taskworkmx[i].printid,:taskworkmx[i].status,:taskworkmx[i].proorder,
  548. :taskworkmx[i].appendname,:taskworkmx[i].appendprice,:taskworkmx[i].wpcode;
  549. LOOP
  550. CLOSE cur_mx;
  551. //检验明细是否读入完整
  552. SELECT count(*) INTO :no_mxcheck
  553. FROM u_sc_taskworkmx
  554. WHERE u_sc_taskworkmx.billid = :arg_billid;
  555. IF sqlca.SQLCode <> 0 THEN
  556. rslt = 0
  557. arg_msg = "查询操作失败,单据明细数量"
  558. GOTO ext
  559. END IF
  560. IF i <> (no_mxcheck+1) THEN
  561. rslt = 0
  562. arg_msg = "查询操作失败,单据明细"
  563. GOTO ext
  564. END IF
  565. billid = arg_billid
  566. it_mxbt = i - 1
  567. ext:
  568. IF rslt = 0 THEN p_reset()
  569. RETURN rslt
  570. end function
  571. public function integer affirm (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  572. Long i
  573. uo_order_ml uo_ml
  574. uo_ml = CREATE uo_order_ml
  575. IF arg_billid = 0 THEN
  576. rslt = 0
  577. arg_msg = "没有审核对象"
  578. GOTO ext
  579. END IF
  580. IF getinfo(arg_scid,arg_billid,arg_msg) = 0 THEN
  581. rslt = 0
  582. GOTO ext
  583. END IF
  584. IF affirmflag = 1 THEN
  585. rslt = 0
  586. arg_msg = '该单据已确认'
  587. GOTO ext
  588. END IF
  589. UPDATE u_sc_taskwork
  590. SET affirmemp = :publ_operator,
  591. affirmdate = getdate(),
  592. affirmflag = 1
  593. WHERE u_sc_taskwork.billid = :arg_billid
  594. AND affirmflag = 0;
  595. IF sqlca.SQLCode <> 0 THEN
  596. rslt = 0
  597. arg_msg = "因网络或其它原因导致确认单据操作失败"+"~n"+sqlca.SQLErrText
  598. GOTO ext
  599. ELSEIF sqlca.SQLNRows = 0 THEN
  600. rslt = 0
  601. arg_msg = "单据正在确认,请稍后查询。"+"~n"+sqlca.SQLErrText
  602. GOTO ext
  603. END IF
  604. IF orderid > 0 THEN
  605. FOR i = 1 TO it_mxbt
  606. IF uo_ml.uof_add_procode_qty(scid,orderid,&
  607. taskworkmx[i].procode,billdate,taskworkmx[i].amount,arg_msg,FALSE) = 0 THEN
  608. arg_msg = '第'+string(i)+'行,'+arg_msg
  609. rslt = 0
  610. GOTO ext
  611. END IF
  612. NEXT
  613. END IF
  614. ext:
  615. IF rslt = 0 THEN
  616. ROLLBACK;
  617. ELSEIF rslt = 1 AND arg_ifcommit THEN
  618. COMMIT;
  619. END IF
  620. DESTROY uo_ml
  621. RETURN rslt
  622. end function
  623. public function integer c_affirm (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  624. DateTime null_dt
  625. SetNull(null_dt)
  626. Long i
  627. uo_order_ml uo_ml
  628. uo_ml = CREATE uo_order_ml
  629. IF arg_billid = 0 THEN
  630. rslt = 0
  631. arg_msg = "没有审核对象"
  632. GOTO ext
  633. END IF
  634. IF getinfo(arg_scid,arg_billid,arg_msg) = 0 THEN
  635. rslt = 0
  636. GOTO ext
  637. END IF
  638. IF affirmflag = 0 THEN
  639. rslt = 0
  640. arg_msg = '该单据未确认,不能反确认'
  641. GOTO ext
  642. END IF
  643. UPDATE u_sc_taskwork
  644. SET affirmemp = '',
  645. affirmdate = :null_dt,
  646. affirmflag = 0
  647. WHERE u_sc_taskwork.billid = :arg_billid
  648. AND u_sc_taskwork.scid = :arg_scid
  649. AND affirmflag = 1
  650. AND AuditingFlag = 0;
  651. IF sqlca.SQLCode <> 0 THEN
  652. rslt = 0
  653. arg_msg = "因网络或其它原因导致反确认单据操作失败"+"~n"+sqlca.SQLErrText
  654. GOTO ext
  655. ELSEIF sqlca.SQLNRows = 0 THEN
  656. rslt = 0
  657. arg_msg = "单据正在反确认,请稍后查询。"+"~n"+sqlca.SQLErrText
  658. GOTO ext
  659. END IF
  660. IF orderid > 0 THEN
  661. FOR i = 1 TO it_mxbt
  662. IF uo_ml.uof_add_procode_qty(scid,orderid,&
  663. taskworkmx[i].procode,billdate,0 - taskworkmx[i].amount,arg_msg,FALSE) = 0 THEN
  664. rslt = 0
  665. GOTO ext
  666. END IF
  667. NEXT
  668. END IF
  669. ext:
  670. IF rslt = 0 THEN
  671. ROLLBACK ;
  672. ELSEIF rslt = 1 AND arg_ifcommit THEN
  673. COMMIT ;
  674. END IF
  675. DESTROY uo_ml
  676. RETURN rslt
  677. end function
  678. public function integer updatebegin (long arg_scid, long arg_billid, ref string arg_msg);//====================================================================
  679. // Function: updatebegin(arg_billid,arg_msg)
  680. //--------------------------------------------------------------------
  681. // Description:
  682. //--------------------------------------------------------------------
  683. // Arguments:
  684. // value long arg_billid
  685. // reference string arg_msg
  686. //--------------------------------------------------------------------
  687. // Returns: integer
  688. //--------------------------------------------------------------------
  689. // Author: yyx Date: 2003.11.21
  690. //--------------------------------------------------------------------
  691. // Modify History:
  692. //
  693. //====================================================================
  694. int rslt = 1
  695. if arg_billid <= 0 then
  696. billid = 0
  697. goto ext
  698. end if
  699. if p_getinfo(arg_scid,arg_billid,arg_msg) = 0 then
  700. rslt = 0
  701. goto ext
  702. end if
  703. if affirmflag = 1 then
  704. rslt = 0
  705. arg_msg = '单据已经确认,不可以修改'
  706. goto ext
  707. end if
  708. if flag = 1 then
  709. rslt = 0
  710. arg_msg = '单据已经审核,不可以修改'
  711. goto ext
  712. end if
  713. billid = arg_billid
  714. p_clearmx()
  715. it_newbegin = false
  716. it_updatebegin = true
  717. ext:
  718. if rslt = 0 then p_reset()
  719. return rslt
  720. end function
  721. public function integer auditmx (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit);Long cnt = 0,i
  722. Int rslt = 1
  723. Decimal ls_emp_sumwage
  724. IF uo_option_taskwork_not_affirm = -1000 THEN
  725. arg_msg = '选项:[080]计件单不使用确认功能,读取初始默认值失败,操作取消!'
  726. rslt = 0
  727. GOTO ext
  728. END IF
  729. IF uo_option_check_noworkprice = -1000 THEN
  730. arg_msg = '选项:[240]计件单没有工价不能审核,读取初始默认值失败,操作取消!'
  731. rslt = 0
  732. GOTO ext
  733. END IF
  734. IF getinfo(arg_scid,arg_billid,arg_msg) = 0 THEN
  735. rslt = 0
  736. GOTO ext
  737. END IF
  738. IF wagemth = 0 THEN
  739. rslt = 0
  740. arg_msg = '请输入工资月份'
  741. GOTO ext
  742. END IF
  743. IF uo_option_taskwork_not_affirm = 0 THEN
  744. IF affirmflag = 0 THEN
  745. rslt = 0
  746. arg_msg = '单据需要先确认后审核,请检查'
  747. GOTO ext
  748. END IF
  749. END IF
  750. IF flag = 1 THEN
  751. rslt = 0
  752. arg_msg = '单据已审核,操作取消'
  753. GOTO ext
  754. END IF
  755. cnt = 0
  756. SELECT count(*) INTO :cnt
  757. From u_gz_wageitem Where useflag = 1 And wageid = :wageid;
  758. IF sqlca.SQLCode <> 0 THEN
  759. rslt = 0
  760. arg_msg = '查询工资项目失败!原因>>'+sqlca.SQLErrText
  761. GOTO ext
  762. END IF
  763. IF cnt = 0 THEN
  764. rslt = 0
  765. arg_msg = '不存在该工资项目!原因>>'+sqlca.SQLErrText
  766. GOTO ext
  767. END IF
  768. FOR i = 1 To it_mxbt
  769. ls_emp_sumwage = 0.00
  770. ls_emp_sumwage = taskworkmx[i].amount * taskworkmx[i].workprice
  771. IF uo_option_check_noworkprice = 1 THEN
  772. IF taskworkmx[i].workprice = 0 THEN
  773. rslt = 0
  774. arg_msg = '行'+String(i)+',没有填写工价,不允许审核'
  775. GOTO ext
  776. END IF
  777. END IF
  778. IF u_wage.f_setwagemxdata(wagemth,taskworkmx[i].empid,wageid,ls_emp_sumwage,arg_msg,False) = 0 THEN
  779. rslt = 0
  780. GOTO ext
  781. END IF
  782. NEXT
  783. IF uo_option_taskwork_not_affirm = 0 THEN
  784. UPDATE u_sc_taskwork SET
  785. Auditingflag = 1,
  786. Auditingrep = :publ_operator,
  787. Auditingdate = getdate()
  788. WHERE Auditingflag = 0
  789. AND billid = :arg_billid
  790. And scid = :arg_scid;
  791. ELSE
  792. UPDATE u_sc_taskwork SET
  793. Auditingflag = 1,
  794. Auditingrep = :publ_operator,
  795. Auditingdate = getdate(),
  796. affirmdate = getdate(),
  797. affirmemp = :publ_operator,
  798. affirmflag = 1
  799. WHERE Auditingflag = 0
  800. AND billid = :arg_billid
  801. And scid = :arg_scid;
  802. END IF
  803. IF sqlca.SQLCode <> 0 THEN
  804. arg_msg = '更新计件明细单失败,原因>>'+sqlca.SQLErrText
  805. rslt = 0
  806. GOTO ext
  807. END IF
  808. ext:
  809. IF rslt = 0 THEN
  810. ROLLBACK;
  811. ELSEIF rslt = 1 And arg_ifcommit THEN
  812. COMMIT;
  813. END IF
  814. RETURN rslt
  815. end function
  816. public function integer cauditmx (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit);
  817. Long cnt = 0,i
  818. Int rslt = 1
  819. DateTime null_server_dt
  820. Decimal ls_emp_sumwage
  821. SetNull(null_server_dt)
  822. IF uo_option_taskwork_not_affirm = -1000 THEN
  823. arg_msg = '选项:[080]计件单不使用确认功能,读取初始默认值失败,操作取消!'
  824. rslt = 0
  825. GOTO ext
  826. END IF
  827. IF getinfo(arg_scid,arg_billid,arg_msg) = 0 THEN
  828. rslt = 0
  829. GOTO ext
  830. END IF
  831. IF flag = 0 THEN
  832. rslt = 0
  833. arg_msg = '单据还没有审核,操作取消'
  834. GOTO ext
  835. END IF
  836. IF f_check_wage_audit(wagemth,arg_scid,arg_msg) = 0 THEN
  837. rslt = 0
  838. arg_msg = arg_msg + ',不能撤审'
  839. GOTO ext
  840. END IF
  841. //检查该月份,该工资项目是否已开工资变更单
  842. cnt = 0
  843. SELECT count(*)
  844. INTO :cnt
  845. FROM u_wage_change
  846. WHERE wageid = :wageid
  847. AND wagemth = :wagemth;
  848. IF sqlca.SQLCode <> 0 THEN
  849. rslt = 0
  850. arg_msg = '查询该月份该工资项目是否已开工资变更单失败'+"~n"+sqlca.SQLErrText
  851. GOTO ext
  852. END IF
  853. IF cnt > 0 THEN
  854. rslt = 0
  855. arg_msg = '该月份该工资项目已开工资变更单,不能撤审'
  856. GOTO ext
  857. END IF
  858. cnt = 0
  859. SELECT count(*) INTO :cnt
  860. FROM u_gz_wageitem Where useflag = 1 AND wageid = :wageid;
  861. IF sqlca.SQLCode <> 0 THEN
  862. rslt = 0
  863. arg_msg = '查询工资项目失败,原因>>'+sqlca.SQLErrText
  864. GOTO ext
  865. END IF
  866. IF cnt = 0 THEN
  867. rslt = 0
  868. arg_msg = '不存在该工资项目,原因>>'+sqlca.SQLErrText
  869. GOTO ext
  870. END IF
  871. FOR i = 1 TO it_mxbt
  872. ls_emp_sumwage = 0.00
  873. ls_emp_sumwage = taskworkmx[i].amount * taskworkmx[i].workprice
  874. IF u_wage.f_setwagemxdata(wagemth,taskworkmx[i].empid,wageid,0 - ls_emp_sumwage,arg_msg,FALSE) = 0 THEN
  875. rslt = 0
  876. GOTO ext
  877. END IF
  878. NEXT
  879. IF uo_option_taskwork_not_affirm = 0 THEN
  880. UPDATE u_sc_taskwork SET
  881. Auditingflag = 0,
  882. Auditingrep = '',
  883. Auditingdate = :null_server_dt
  884. WHERE Auditingflag = 1
  885. AND scid = :arg_scid
  886. AND billid = :arg_billid;
  887. ELSE
  888. UPDATE u_sc_taskwork SET
  889. Auditingflag = 0,
  890. Auditingrep = '',
  891. Auditingdate = :null_server_dt,
  892. affirmdate = :null_server_dt,
  893. affirmemp = '',
  894. affirmflag = 0
  895. WHERE Auditingflag = 1
  896. AND scid = :arg_scid
  897. AND billid = :arg_billid;
  898. END IF
  899. IF sqlca.SQLCode <> 0 THEN
  900. arg_msg = '更新计件明细单失败,原因:'+sqlca.SQLErrText
  901. rslt = 0
  902. GOTO ext
  903. END IF
  904. ext:
  905. IF rslt = 0 THEN
  906. ROLLBACK;
  907. ELSEIF rslt = 1 AND arg_ifcommit THEN
  908. COMMIT;
  909. END IF
  910. RETURN rslt
  911. end function
  912. public function integer del (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit);//====================================================================
  913. // Function: del(arg_billid,arg_msg)
  914. //--------------------------------------------------------------------
  915. // Description:
  916. //--------------------------------------------------------------------
  917. // Arguments:
  918. // value long arg_billid
  919. // reference string arg_msg
  920. //--------------------------------------------------------------------
  921. // Returns: integer
  922. //--------------------------------------------------------------------
  923. // Author: yyx Date: 2003.11.21
  924. //--------------------------------------------------------------------
  925. // Modify History:
  926. //
  927. //====================================================================
  928. Int rslt = 1
  929. IF arg_billid <= 0 THEN
  930. rslt = 0
  931. arg_msg = "没有删除对象,操作取消"
  932. GOTO ext
  933. END IF
  934. IF p_getinfo(arg_scid,arg_billid,arg_msg) = 0 THEN
  935. rslt = 0
  936. GOTO ext
  937. END IF
  938. IF affirmflag = 1 THEN
  939. rslt = 0
  940. arg_msg = "单据已经确认,不可以删除"
  941. GOTO ext
  942. END IF
  943. IF flag = 1 THEN
  944. rslt = 0
  945. arg_msg = "单据已经审核,不可以删除"
  946. GOTO ext
  947. END IF
  948. DELETE FROM u_sc_taskwork
  949. WHERE u_sc_taskwork.billid = :arg_billid
  950. AND u_sc_taskwork.scid = :arg_scid;
  951. IF sqlca.SQLCode <> 0 THEN
  952. rslt = 0
  953. arg_msg = "删除计件单操作失败"+"~n"+sqlca.SQLErrText
  954. GOTO ext
  955. END IF
  956. DELETE FROM u_sc_taskworkmx
  957. WHERE u_sc_taskworkmx.billid = :arg_billid
  958. AND u_sc_taskworkmx.scid = :arg_scid;
  959. IF sqlca.SQLCode <> 0 THEN
  960. rslt = 0
  961. arg_msg = "删除计件单明细操作失败"+"~n"+sqlca.SQLErrText
  962. GOTO ext
  963. END IF
  964. ext:
  965. IF rslt = 0 THEN
  966. ROLLBACK ;
  967. p_reset()
  968. ELSEIF rslt = 1 AND arg_ifcommit THEN
  969. COMMIT ;
  970. END IF
  971. Return (rslt)
  972. end function
  973. public function integer acceptmx (long arg_empid, string arg_empcode, string arg_empname, string arg_procode, string arg_proname, decimal arg_amount, decimal arg_workprice, decimal arg_workhour, string arg_mxdscrp, ref string arg_msg, long arg_printid, string arg_status, long arg_proorder, string arg_appendname, decimal arg_appendprice, string arg_wpcode);
  974. Long rslt = 1,cnt = 0,ls_i,ll_i
  975. String ls_empname,ls_empcode
  976. Decimal ls_workqty,ld_othertask_qty
  977. Decimal ld_Otherbill_qty,ld_Otherbill_qty_2
  978. Decimal ld_finish_qty,ld_collect_qty
  979. IF it_newbegin = False And it_updatebegin = False THEN
  980. rslt = 0
  981. arg_msg = "非编辑状态不可以使用,操作取消"
  982. GOTO ext
  983. END IF
  984. IF uo_option_taskwork_not_affirm = -1000 THEN
  985. arg_msg = '选项:[080]计件单不使用确认功能,读取初始默认值失败,操作取消!'
  986. rslt = 0
  987. GOTO ext
  988. END IF
  989. IF uo_option_taskwork_procode_order = -1000 THEN
  990. arg_msg = '选项:[064]计件单按生产计划工序,读取初始默认值失败,操作取消!'
  991. rslt = 0
  992. GOTO ext
  993. END IF
  994. IF uo_option_taskwork_price_if_mod = -1000 THEN
  995. arg_msg = '选项:[081]计件单限制工价,读取初始默认值失败,操作取消!'
  996. rslt = 0
  997. GOTO ext
  998. END IF
  999. IF uo_option_if_taskwork_acmpqty = -1000 THEN
  1000. arg_msg = '选项:[202]计件单选生产计划时按已进仓数限制,读取初始默认值失败,操作取消!'
  1001. rslt = 0
  1002. GOTO ext
  1003. END IF
  1004. IF IsNull(arg_empid) THEN arg_empid = 0
  1005. IF IsNull(arg_empcode) THEN arg_empcode = ''
  1006. IF IsNull(arg_empname) THEN arg_empname = ''
  1007. IF IsNull(arg_procode) THEN arg_procode = ''
  1008. IF IsNull(arg_proname) THEN arg_proname = ''
  1009. IF IsNull(arg_amount) THEN arg_amount = 0
  1010. IF IsNull(arg_workprice) THEN arg_workprice = 0
  1011. IF IsNull(arg_workhour) THEN arg_workhour = 0
  1012. IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = ''
  1013. IF IsNull(arg_status) THEN arg_status = ''
  1014. IF IsNull(arg_appendname) THEN arg_appendname = ''
  1015. IF IsNull(arg_appendprice) THEN arg_appendprice = 0
  1016. IF arg_amount = 0 THEN
  1017. rslt = 1
  1018. GOTO ext
  1019. END IF
  1020. IF IsNull(arg_empcode) Or Trim(arg_empcode) = '' THEN
  1021. rslt = 0
  1022. arg_msg = '行:'+String(arg_printid)+',员工编号不能为空'
  1023. GOTO ext
  1024. END IF
  1025. IF Trim(arg_proname) = '' THEN
  1026. rslt = 0
  1027. arg_msg = '行:'+String(arg_printid)+',工序名称不能为空'
  1028. GOTO ext
  1029. END IF
  1030. IF arg_amount < 0 Or arg_workhour < 0 THEN //检查生产数量
  1031. rslt = 0
  1032. arg_msg = '行:'+String(arg_printid)+",数量或工时错误"
  1033. GOTO ext
  1034. END IF
  1035. SELECT empcode,empname
  1036. INTO :ls_empcode,:ls_empname
  1037. FROM u_rs_empinfo
  1038. Where empid = :arg_empid;
  1039. IF sqlca.SQLCode <> 0 THEN
  1040. rslt = 0
  1041. arg_msg = '行:'+String(arg_printid)+',查询员工资料失败。>'+sqlca.SQLErrText
  1042. GOTO ext
  1043. END IF
  1044. IF ls_empname <> arg_empname Or ls_empcode <> arg_empcode THEN
  1045. rslt = 0
  1046. arg_msg = '行:'+String(arg_printid)+','+arg_empname+'>>该员工的编号或名称不正确。'
  1047. GOTO ext
  1048. END IF
  1049. IF arg_appendprice <> 0 And arg_appendname = '' THEN
  1050. rslt = 0
  1051. arg_msg = '第'+String(arg_printid)+'行,请输入附加工序内容'
  1052. GOTO ext
  1053. END IF
  1054. Decimal ld_orderqty,ld_acmpqty,ld_trueqty
  1055. IF orderid > 0 THEN
  1056. SELECT orderqty,acmpqty
  1057. INTO :ld_orderqty,:ld_acmpqty
  1058. FROM u_order_ml
  1059. WHERE orderid = :orderid
  1060. And scid = :scid;
  1061. IF sqlca.SQLCode <> 0 THEN
  1062. rslt = 0
  1063. arg_msg = '查询生产计划相关数量失败,'+sqlca.SQLErrText
  1064. GOTO ext
  1065. END IF
  1066. IF uo_option_if_taskwork_acmpqty = 1 THEN
  1067. ld_trueqty = ld_acmpqty
  1068. ELSE
  1069. ld_trueqty = ld_orderqty
  1070. END IF
  1071. IF uo_option_taskwork_procode_order = 1 THEN
  1072. SELECT (proqty / :ld_orderqty) * :ld_trueqty INTO :ls_workqty
  1073. FROM U_OrderRqwp
  1074. WHERE scid = :scid
  1075. AND orderid = :orderid
  1076. And procode = :arg_procode;
  1077. IF sqlca.SQLCode <> 0 THEN
  1078. arg_msg = '行:'+String(arg_printid)+',查询工序:'+arg_procode+',计划数量失败,'+sqlca.SQLErrText
  1079. rslt = 0
  1080. GOTO ext
  1081. END IF
  1082. ELSE
  1083. //查询产品是否组合配置
  1084. Long ll_statusflag
  1085. Decimal ld_pzqty
  1086. Boolean lb_iffind = False
  1087. String ls_pz_status
  1088. s_mtrlcfg_expr s_pz[]
  1089. SELECT statusflag INTO :ll_statusflag
  1090. FROM u_mtrldef
  1091. Where mtrlid = :mtrlid ;
  1092. IF sqlca.SQLCode <> 0 THEN
  1093. rslt = 0
  1094. arg_msg = '查询产品是否使用组合配置失败'+sqlca.SQLErrText
  1095. GOTO ext
  1096. END IF
  1097. SELECT status INTO :ls_pz_status
  1098. FROM u_sc_workprice
  1099. WHERE mtrlid = :mtrlid
  1100. AND procode = :arg_procode
  1101. And wpcode = :arg_wpcode;
  1102. IF sqlca.SQLCode <> 0 THEN
  1103. arg_msg = '行:'+String(arg_printid)+',查询产品工序配置失败,'+sqlca.SQLErrText
  1104. rslt = 0
  1105. GOTO ext
  1106. END IF
  1107. IF ll_statusflag = 2 And ls_pz_status <> '' THEN
  1108. f_checkpz(status,s_pz[])
  1109. lb_iffind = False
  1110. FOR ll_i = 1 To UpperBound(s_pz)
  1111. IF s_pz[ll_i].cfgname = ls_pz_status THEN
  1112. ld_pzqty = Dec(s_pz[ll_i].qty)
  1113. lb_iffind = True
  1114. EXIT
  1115. END IF
  1116. NEXT
  1117. IF lb_iffind = False THEN
  1118. ld_pzqty = 1
  1119. END IF
  1120. ELSE
  1121. ld_pzqty = 1
  1122. END IF
  1123. SELECT workqty * :ld_trueqty * :ld_pzqty INTO :ls_workqty
  1124. FROM u_sc_workprice
  1125. WHERE mtrlid = :mtrlid
  1126. AND procode = :arg_procode
  1127. And wpcode = :arg_wpcode;
  1128. IF sqlca.SQLCode <> 0 THEN
  1129. arg_msg = '行:'+String(arg_printid)+',查询单件产品工序数失败,'+sqlca.SQLErrText
  1130. rslt = 0
  1131. GOTO ext
  1132. END IF
  1133. END IF
  1134. SELECT isnull(sum(finishqty),0) INTO :ld_finish_qty
  1135. FROM U_OrderRqwp
  1136. WHERE orderid = :orderid
  1137. AND scid = :scid
  1138. And procode = :arg_procode;
  1139. IF sqlca.SQLCode <> 0 THEN
  1140. arg_msg = '行:'+String(arg_printid)+',查询工序:'+arg_procode+'已确认数失败,'+sqlca.SQLErrText
  1141. rslt = 0
  1142. GOTO ext
  1143. END IF
  1144. SELECT isnull(sum(Amount),0) INTO :ld_othertask_qty
  1145. FROM u_sc_taskworkmx,u_sc_taskwork
  1146. WHERE u_sc_taskworkmx.billid = u_sc_taskwork.billid
  1147. AND u_sc_taskworkmx.scid = u_sc_taskwork.scid
  1148. AND u_sc_taskwork.mtrlid = :mtrlid
  1149. AND u_sc_taskwork.orderid = :orderid
  1150. AND u_sc_taskworkmx.procode = :arg_procode
  1151. AND u_sc_taskwork.billid <> :billid
  1152. And (u_sc_taskwork.affirmflag = 0 Or :uo_option_taskwork_not_affirm = 1 );
  1153. IF sqlca.SQLCode = -1 THEN
  1154. arg_msg = '行:'+String(arg_printid)+',查询工序:'+arg_procode+'其它已开单未确认数失败,'+sqlca.SQLErrText
  1155. rslt = 0
  1156. GOTO ext
  1157. END IF
  1158. SELECT isnull(sum(qty),0) INTO :ld_Otherbill_qty
  1159. FROM u_scwg_taskwork_day,u_scwg_taskwork_day_mx
  1160. WHERE u_scwg_taskwork_day_mx.billid = u_scwg_taskwork_day.billid
  1161. AND u_scwg_taskwork_day_mx.mtrlid = :mtrlid
  1162. AND u_scwg_taskwork_day_mx.orderid = :orderid
  1163. AND u_scwg_taskwork_day_mx.procode = :arg_procode
  1164. AND u_scwg_taskwork_day.scid = :scid
  1165. And (u_scwg_taskwork_day.affirmflag = 0 Or :uo_option_taskwork_not_affirm = 1 );
  1166. IF sqlca.SQLCode = -1 THEN
  1167. arg_msg = '行:'+String(arg_printid)+',查询工序:'+arg_procode+'工作组产品日分配计件单开单未确认数失败,'+sqlca.SQLErrText
  1168. rslt = 0
  1169. GOTO ext
  1170. END IF
  1171. SELECT isnull(sum(qty),0) INTO :ld_Otherbill_qty_2
  1172. FROM u_scwg_taskwork_2,u_scwg_taskwork_2_mx
  1173. WHERE u_scwg_taskwork_2_mx.billid = u_scwg_taskwork_2.billid
  1174. AND u_scwg_taskwork_2_mx.mtrlid = :mtrlid
  1175. AND u_scwg_taskwork_2_mx.orderid = :orderid
  1176. AND u_scwg_taskwork_2_mx.procode = :arg_procode
  1177. AND u_scwg_taskwork_2.scid = :scid
  1178. And (u_scwg_taskwork_2.affirmflag = 0 Or :uo_option_taskwork_not_affirm = 1 );
  1179. IF sqlca.SQLCode = -1 THEN
  1180. arg_msg = '行:'+String(arg_printid)+',查询工序:'+arg_procode+'工作组产品月分配计件单开单未确认数失败,'+sqlca.SQLErrText
  1181. rslt = 0
  1182. GOTO ext
  1183. END IF
  1184. SELECT isnull(sum(u_data_wage.zx_qty),0)
  1185. INTO :ld_collect_qty
  1186. FROM u_data_collect INNER JOIN
  1187. u_data_wage ON u_data_collect.collectid = u_data_wage.collectid
  1188. WHERE u_data_collect.scid = :scid
  1189. and u_data_collect.orderid = :orderid
  1190. and u_data_wage.procode = :arg_procode;
  1191. IF sqlca.SQLCode = -1 THEN
  1192. arg_msg = '行:'+String(arg_printid)+',查询工序:'+arg_procode+'注塑质检单杂项数量失败,'+sqlca.SQLErrText
  1193. rslt = 0
  1194. GOTO ext
  1195. END IF
  1196. Decimal ld_mx_qty = 0
  1197. Long l
  1198. FOR l = 1 To it_mxbt
  1199. IF taskworkmx[l].procode = arg_procode THEN
  1200. ld_mx_qty = ld_mx_qty + taskworkmx[l].Amount
  1201. END IF
  1202. NEXT
  1203. IF uo_option_taskwork_not_affirm = 1 THEN
  1204. ld_finish_qty = 0
  1205. END IF
  1206. IF arg_amount + ld_finish_qty + ld_othertask_qty + ld_Otherbill_qty + ld_Otherbill_qty_2 + ld_mx_qty + ld_collect_qty > ls_workqty THEN
  1207. rslt = 0
  1208. IF uo_option_if_taskwork_acmpqty = 0 THEN
  1209. arg_msg = '第 '+String(arg_printid)+' 行,工序:'+arg_procode+',员工:'+arg_empname+'计件数量不能大于计划生产数,计划工序数:'+String(ls_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_amount,'####0.####')
  1210. ELSE
  1211. arg_msg = '第 '+String(arg_printid)+' 行,工序:'+arg_procode+',员工:'+arg_empname+'计件数量不能大于计划已进仓数,计划进仓数:'+String(ls_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_amount,'####0.####')
  1212. END IF
  1213. GOTO ext
  1214. END IF
  1215. END IF
  1216. //***检查工价表工序是否已审核工价
  1217. Int ll_auditflag
  1218. IF uo_option_taskwork_procode_order = 0 THEN
  1219. SELECT auditflag
  1220. INTO :ll_auditflag
  1221. FROM u_sc_workprice
  1222. WHERE mtrlid = :mtrlid
  1223. AND procode = :arg_procode
  1224. And wpcode = :arg_wpcode;
  1225. IF sqlca.SQLCode = 0 THEN
  1226. IF ll_auditflag = 0 THEN
  1227. arg_msg = '行:'+String(arg_printid)+',工序工价未审核:'+arg_procode+arg_proname
  1228. rslt = 0
  1229. GOTO ext
  1230. END IF
  1231. ELSE
  1232. cnt = 0
  1233. SELECT count(*) INTO :cnt
  1234. FROM u_sc_workprocedure
  1235. WHERE code = :arg_procode
  1236. And ifpubl = 1;
  1237. IF sqlca.SQLCode <> 0 THEN
  1238. arg_msg = '行:'+String(arg_printid)+',查询工序:'+arg_procode+arg_proname+' 审核标记失败'
  1239. rslt = 0
  1240. GOTO ext
  1241. END IF
  1242. IF cnt = 0 THEN
  1243. arg_msg = '查询工序:'+arg_procode+arg_proname+' 审核标记失败'
  1244. rslt = 0
  1245. GOTO ext
  1246. END IF
  1247. END IF
  1248. END IF
  1249. //******************************
  1250. Decimal ld_workprice
  1251. //检查限价
  1252. IF uo_option_taskwork_price_if_mod = 1 THEN //启用检查限价选项
  1253. IF uo_option_taskwork_procode_order = 0 Or orderid = 0 THEN //按工价表限价
  1254. SELECT workPrice INTO :ld_workprice
  1255. FROM u_sc_workprice
  1256. WHERE mtrlid = :mtrlid
  1257. AND procode = :arg_procode
  1258. And wpcode = :arg_wpcode;
  1259. IF sqlca.SQLCode = 0 THEN
  1260. IF ld_workprice <> arg_workprice THEN
  1261. rslt = 0
  1262. arg_msg = '行:'+String(arg_printid)+',工序:'+arg_procode+' 工价表工价为:'+String(ld_workprice,'#,##0.00########')+',不能输入工价:'+String(arg_workprice,'#,##0.00########')
  1263. GOTO ext
  1264. END IF
  1265. ELSE
  1266. SELECT workprice INTO :ld_workprice
  1267. FROM u_sc_workprocedure
  1268. WHERE code = :arg_procode
  1269. And ifpubl = 1;
  1270. IF sqlca.SQLCode <> 0 THEN
  1271. rslt = 0
  1272. arg_msg = '行:'+String(arg_printid)+',查询公共工序:'+arg_procode+' 工价失败'+'~n'+sqlca.SQLErrText
  1273. GOTO ext
  1274. END IF
  1275. IF ld_workprice <> arg_workprice THEN
  1276. rslt = 0
  1277. arg_msg = '行:'+String(arg_printid)+',公共工序:'+arg_procode+' 工价为:'+String(ld_workprice,'#,##0.00########')+',不能输入工价:'+String(arg_workprice,'#,##0.00########')
  1278. GOTO ext
  1279. END IF
  1280. END IF
  1281. ELSE //按生产计划工序明细限价
  1282. SELECT workPrice INTO :ld_workprice
  1283. FROM U_OrderRqwp
  1284. WHERE scid = :scid
  1285. AND orderid = :orderid
  1286. And procode = :arg_procode;
  1287. IF sqlca.SQLCode = 0 THEN
  1288. IF ld_workprice <> arg_workprice THEN
  1289. rslt = 0
  1290. arg_msg = '行:'+String(arg_printid)+',工序:'+arg_procode+' 生产计划工序明细工价为:'+String(ld_workprice,'#,##0.00########')+',不能输入工价:'+String(arg_workprice,'#,##0.00########')
  1291. GOTO ext
  1292. END IF
  1293. ELSE
  1294. SELECT workprice INTO :ld_workprice
  1295. FROM u_sc_workprocedure
  1296. WHERE code = :arg_procode
  1297. And ifpubl = 1;
  1298. IF sqlca.SQLCode <> 0 THEN
  1299. rslt = 0
  1300. arg_msg = '行:'+String(arg_printid)+',查询公共工序:'+arg_procode+' 工价失败'+'~n'+sqlca.SQLErrText
  1301. GOTO ext
  1302. END IF
  1303. IF ld_workprice <> arg_workprice THEN
  1304. rslt = 0
  1305. arg_msg = '行:'+String(arg_printid)+',公共工序:'+arg_procode+' 工价为:'+String(ld_workprice,'#,##0.00########')+',不能输入工价:'+String(arg_workprice,'#,##0.00########')
  1306. GOTO ext
  1307. END IF
  1308. END IF
  1309. END IF
  1310. END IF
  1311. FOR ls_i = 1 To it_mxbt //合并重复项
  1312. IF taskworkmx[ls_i].empid = arg_empid And &
  1313. taskworkmx[ls_i].procode = arg_procode THEN
  1314. taskworkmx[ls_i].Amount = taskworkmx[ls_i].Amount+arg_amount
  1315. taskworkmx[ls_i].workhour = taskworkmx[ls_i].workhour+arg_workhour
  1316. rslt = 1
  1317. GOTO ext
  1318. END IF
  1319. NEXT
  1320. //写入内容
  1321. it_mxbt++
  1322. taskworkmx[it_mxbt].empid = arg_empid
  1323. taskworkmx[it_mxbt].empcode = arg_empcode
  1324. taskworkmx[it_mxbt].empname = arg_empname
  1325. taskworkmx[it_mxbt].procode = arg_procode
  1326. taskworkmx[it_mxbt].proname = arg_proname
  1327. taskworkmx[it_mxbt].Amount = arg_amount
  1328. taskworkmx[it_mxbt].workPrice = arg_workprice
  1329. taskworkmx[it_mxbt].workhour = arg_workhour
  1330. taskworkmx[it_mxbt].mxdscrp = arg_mxdscrp
  1331. taskworkmx[it_mxbt].printid = arg_printid
  1332. taskworkmx[it_mxbt].status = arg_status
  1333. taskworkmx[it_mxbt].proorder = arg_proorder
  1334. taskworkmx[it_mxbt].appendname = arg_appendname
  1335. taskworkmx[it_mxbt].appendprice = arg_appendprice
  1336. taskworkmx[it_mxbt].wpcode = arg_wpcode
  1337. ext:
  1338. IF rslt = 0 THEN p_clearmx()
  1339. Return(rslt)
  1340. end function
  1341. public function integer auditing (long arg_scid, long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit);
  1342. Long cnt = 0,i
  1343. Int rslt = 1
  1344. Decimal ls_emp_sumwage
  1345. datastore ds_emp_sumworktaskwage
  1346. IF uo_option_taskwork_not_affirm = -1000 THEN
  1347. arg_msg = '选项:[080]计件单不使用确认功能,读取初始默认值失败,操作取消!'
  1348. rslt = 0
  1349. GOTO ext
  1350. END IF
  1351. IF uo_option_check_noworkprice = -1000 THEN
  1352. arg_msg = '选项:[240]计件单没有工价不能审核,读取初始默认值失败,操作取消!'
  1353. rslt = 0
  1354. GOTO ext
  1355. END IF
  1356. IF uo_option_taskwork_not_affirm = 0 THEN
  1357. cnt = 0
  1358. SELECT count(*) INTO :cnt
  1359. FROM u_sc_taskwork
  1360. WHERE wagemth = :arg_wagemth
  1361. AND wageid = :arg_wageid
  1362. and (scid = :arg_scid or :arg_scid = -1)
  1363. And affirmflag = 0;
  1364. IF sqlca.SQLCode <> 0 THEN
  1365. rslt = 0
  1366. arg_msg = '查询是否有单未确认操作失败,'+sqlca.SQLErrText
  1367. GOTO ext
  1368. END IF
  1369. IF cnt > 0 THEN
  1370. rslt = 0
  1371. arg_msg = '该月份存在未确认的单据('+String(cnt)+'),请先全部确认'
  1372. GOTO ext
  1373. END IF
  1374. END IF
  1375. //cnt = 0
  1376. //SELECT count(*) INTO :cnt
  1377. // FROM u_sc_taskwork
  1378. // WHERE wagemth = :arg_wagemth
  1379. // AND wageid = :arg_wageid
  1380. // AND Auditingflag = 1;
  1381. //IF sqlca.SQLCode <> 0 THEN
  1382. // rslt = 0
  1383. // arg_msg = '查询计件单明细失败!原因:'+sqlca.SQLErrText
  1384. // GOTO ext
  1385. //END IF
  1386. //
  1387. //IF cnt > 0 THEN
  1388. // rslt = 0
  1389. // arg_msg = '该月的计件单已审核,审核前请先执行撤审!'
  1390. // GOTO ext
  1391. //END IF
  1392. cnt = 0
  1393. SELECT count(*) INTO :cnt
  1394. From u_gz_wageitem Where useflag = 1 And wageid = :arg_wageid;
  1395. IF sqlca.SQLCode <> 0 THEN
  1396. rslt = 0
  1397. arg_msg = '查询工资项目失败!原因>>'+sqlca.SQLErrText
  1398. GOTO ext
  1399. END IF
  1400. IF cnt = 0 THEN
  1401. rslt = 0
  1402. arg_msg = '不存在该工资项目!'
  1403. GOTO ext
  1404. END IF
  1405. IF uo_option_check_noworkprice = 1 THEN
  1406. cnt = 0
  1407. SELECT count(*) INTO :cnt
  1408. FROM u_sc_taskwork INNER JOIN
  1409. u_sc_taskworkmx ON u_sc_taskwork.billid = u_sc_taskworkmx.Billid
  1410. WHERE u_sc_taskwork.wagemth = :arg_wagemth
  1411. AND u_sc_taskwork.Auditingflag = 0
  1412. AND u_sc_taskwork.wageid = :arg_wageid
  1413. and (u_sc_taskwork.scid = :arg_scid or :arg_scid = -1)
  1414. And u_sc_taskworkmx.Workprice = 0;
  1415. IF sqlca.SQLCode <> 0 THEN
  1416. rslt = 0
  1417. arg_msg = '查询是否存在没填工价的单据失败!原因>>'+sqlca.SQLErrText
  1418. GOTO ext
  1419. END IF
  1420. IF cnt > 0 THEN
  1421. rslt = 0
  1422. arg_msg = '当月存在没有填工价的计件单,不能审核!'
  1423. GOTO ext
  1424. END IF
  1425. END IF
  1426. ds_emp_sumworktaskwage = Create datastore
  1427. ds_emp_sumworktaskwage.DataObject = 'dw_emp_sumtaskworkwage'
  1428. ds_emp_sumworktaskwage.SetTransObject(sqlca)
  1429. IF ds_emp_sumworktaskwage.Retrieve(arg_scid,arg_wagemth,arg_wageid,0) <= 0 THEN
  1430. rslt = 0
  1431. arg_msg = '本月没有计件单可审核或查询计件单失败'
  1432. GOTO ext
  1433. END IF
  1434. FOR i = 1 To ds_emp_sumworktaskwage.RowCount()
  1435. ls_emp_sumwage = 0.00
  1436. ls_emp_sumwage = ds_emp_sumworktaskwage.Object.sumwage[i]
  1437. IF u_wage.f_setwagemxdata(arg_wagemth,ds_emp_sumworktaskwage.Object.empid[i],arg_wageid,ls_emp_sumwage,arg_msg,False) = 0 THEN
  1438. rslt = 0
  1439. GOTO ext
  1440. END IF
  1441. NEXT
  1442. IF uo_option_taskwork_not_affirm = 0 THEN
  1443. UPDATE u_sc_taskwork SET
  1444. Auditingflag = 1,
  1445. Auditingrep = :publ_operator,
  1446. Auditingdate = getdate()
  1447. WHERE wagemth = :arg_wagemth
  1448. AND Auditingflag = 0
  1449. And wageid = :arg_wageid
  1450. and (scid = :arg_scid or :arg_scid = -1);
  1451. ELSE
  1452. UPDATE u_sc_taskwork SET
  1453. Auditingflag = 1,
  1454. Auditingrep = :publ_operator,
  1455. Auditingdate = getdate(),
  1456. affirmdate = getdate(),
  1457. affirmemp = :publ_operator,
  1458. affirmflag = 1
  1459. WHERE wagemth = :arg_wagemth
  1460. AND Auditingflag = 0
  1461. And wageid = :arg_wageid
  1462. and (scid = :arg_scid or :arg_scid = -1);
  1463. END IF
  1464. IF sqlca.SQLCode <> 0 THEN
  1465. arg_msg = '更新计件明细单失败,原因>>'+sqlca.SQLErrText
  1466. rslt = 0
  1467. GOTO ext
  1468. END IF
  1469. ext:
  1470. IF rslt = 0 THEN
  1471. ROLLBACK;
  1472. ELSEIF rslt = 1 And arg_ifcommit THEN
  1473. COMMIT;
  1474. END IF
  1475. RETURN rslt
  1476. end function
  1477. public function integer c_auditing (long arg_scid, long arg_wageid, long arg_wagemth, ref string arg_msg, boolean arg_ifcommit);
  1478. Long cnt = 0,i
  1479. Int rslt = 1
  1480. DateTime null_server_dt
  1481. decimal ls_emp_sumwage
  1482. SetNull(null_server_dt)
  1483. IF uo_option_taskwork_not_affirm = -1000 THEN
  1484. arg_msg = '选项:[080]计件单不使用确认功能,读取初始默认值失败,操作取消!'
  1485. rslt = 0
  1486. GOTO ext
  1487. END IF
  1488. IF f_check_wage_audit(arg_wagemth,arg_scid,arg_msg) = 0 THEN
  1489. rslt = 0
  1490. arg_msg = arg_msg + ',不能撤审'
  1491. GOTO ext
  1492. END IF
  1493. //检查该月份,该工资项目是否已开工资变更单
  1494. cnt = 0
  1495. SELECT count(*)
  1496. INTO :cnt
  1497. FROM u_wage_change
  1498. WHERE wageid = :arg_wageid
  1499. AND wagemth = :arg_wagemth;
  1500. IF sqlca.SQLCode <> 0 THEN
  1501. rslt = 0
  1502. arg_msg = '查询该月份该工资项目是否已开工资变更单失败'+"~n"+sqlca.SQLErrText
  1503. GOTO ext
  1504. END IF
  1505. IF cnt > 0 THEN
  1506. rslt = 0
  1507. arg_msg = '该月份该工资项目已开工资变更单,不能撤审'
  1508. GOTO ext
  1509. END IF
  1510. SELECT count(*) INTO :cnt
  1511. FROM u_sc_taskwork
  1512. WHERE wagemth = :arg_wagemth
  1513. AND wageid = :arg_wageid
  1514. and (scid = :arg_scid or :arg_scid = -1)
  1515. AND Auditingflag = 1;
  1516. IF sqlca.SQLCode <> 0 THEN
  1517. rslt = 0
  1518. arg_msg = '查询计件单明细失败,原因>>'+sqlca.SQLErrText
  1519. GOTO ext
  1520. END IF
  1521. IF cnt = 0 THEN
  1522. rslt = 0
  1523. arg_msg = '该月的计件单未审核,不用撤审!'
  1524. GOTO ext
  1525. END IF
  1526. cnt = 0
  1527. SELECT count(*) INTO :cnt
  1528. FROM u_gz_wageitem Where useflag = 1 AND wageid = :arg_wageid;
  1529. IF sqlca.SQLCode <> 0 THEN
  1530. rslt = 0
  1531. arg_msg = '查询工资项目失败,原因>>'+sqlca.SQLErrText
  1532. GOTO ext
  1533. END IF
  1534. IF cnt = 0 THEN
  1535. rslt = 0
  1536. arg_msg = '不存在该工资项目,原因>>'+sqlca.SQLErrText
  1537. GOTO ext
  1538. END IF
  1539. //IF u_wage.f_wage_clear(arg_wageid,arg_wagemth,arg_msg,FALSE) = 0 THEN
  1540. // rslt = 0
  1541. // GOTO ext
  1542. //END IF
  1543. datastore ds_emp_sumworktaskwage
  1544. ds_emp_sumworktaskwage = Create datastore
  1545. ds_emp_sumworktaskwage.DataObject = 'dw_emp_sumtaskworkwage'
  1546. ds_emp_sumworktaskwage.SetTransObject(sqlca)
  1547. IF ds_emp_sumworktaskwage.Retrieve(arg_scid,arg_wagemth,arg_wageid,1) <= 0 THEN
  1548. rslt = 0
  1549. arg_msg = '本月没有计件单已审核或查询计件单失败'
  1550. GOTO ext
  1551. END IF
  1552. FOR i = 1 To ds_emp_sumworktaskwage.RowCount()
  1553. ls_emp_sumwage = 0.00
  1554. ls_emp_sumwage = 0 - ds_emp_sumworktaskwage.Object.sumwage[i]
  1555. IF u_wage.f_setwagemxdata(arg_wagemth,ds_emp_sumworktaskwage.Object.empid[i],arg_wageid,ls_emp_sumwage,arg_msg,False) = 0 THEN
  1556. rslt = 0
  1557. GOTO ext
  1558. END IF
  1559. NEXT
  1560. IF uo_option_taskwork_not_affirm = 0 THEN
  1561. UPDATE u_sc_taskwork SET
  1562. Auditingflag = 0,
  1563. Auditingrep = '',
  1564. Auditingdate = :null_server_dt
  1565. Where wagemth = :arg_wagemth
  1566. AND Auditingflag = 1
  1567. AND wageid = :arg_wageid
  1568. and (scid = :arg_scid or :arg_scid = -1);
  1569. ELSE
  1570. UPDATE u_sc_taskwork SET
  1571. Auditingflag = 0,
  1572. Auditingrep = '',
  1573. Auditingdate = :null_server_dt,
  1574. affirmdate = :null_server_dt,
  1575. affirmemp = '',
  1576. affirmflag = 0
  1577. Where wagemth = :arg_wagemth
  1578. AND Auditingflag = 1
  1579. AND wageid = :arg_wageid
  1580. and (scid = :arg_scid or :arg_scid = -1);
  1581. END IF
  1582. IF sqlca.SQLCode <> 0 THEN
  1583. arg_msg = '更新计件明细单失败,原因:'+sqlca.SQLErrText
  1584. rslt = 0
  1585. GOTO ext
  1586. END IF
  1587. ext:
  1588. IF rslt = 0 THEN
  1589. ROLLBACK;
  1590. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1591. COMMIT;
  1592. END IF
  1593. RETURN rslt
  1594. end function
  1595. on uo_taskwork.create
  1596. call super::create
  1597. TriggerEvent( this, "constructor" )
  1598. end on
  1599. on uo_taskwork.destroy
  1600. TriggerEvent( this, "destructor" )
  1601. call super::destroy
  1602. end on
  1603. event constructor;u_wage = Create uo_wage
  1604. String arg_msg
  1605. String str_optionvalue
  1606. str_optionvalue = ''
  1607. f_get_sys_option_value('080',str_optionvalue,arg_msg)
  1608. uo_option_taskwork_not_affirm = Long(str_optionvalue)
  1609. str_optionvalue = ''
  1610. f_get_sys_option_value('018',str_optionvalue,arg_msg)
  1611. uo_option_task_noorder = Long(str_optionvalue)
  1612. str_optionvalue = ''
  1613. f_get_sys_option_value('064',str_optionvalue,arg_msg)
  1614. uo_option_taskwork_procode_order = Long(str_optionvalue)
  1615. str_optionvalue = ''
  1616. f_get_sys_option_value('081',str_optionvalue,arg_msg)
  1617. uo_option_taskwork_price_if_mod = Long(str_optionvalue)
  1618. str_optionvalue = ''
  1619. f_get_sys_option_value('202',str_optionvalue,arg_msg)
  1620. uo_option_if_taskwork_acmpqty = Long(str_optionvalue)
  1621. str_optionvalue = ''
  1622. f_get_sys_option_value('240',str_optionvalue,arg_msg)
  1623. uo_option_check_noworkprice = Long(str_optionvalue)
  1624. end event
  1625. event destructor;DESTROY u_wage
  1626. end event