uo_data_collect.sru 50 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367
  1. $PBExportHeader$uo_data_collect.sru
  2. forward
  3. global type uo_data_collect from nonvisualobject
  4. end type
  5. type s_data_collectmx from structure within uo_data_collect
  6. end type
  7. type s_data_wage from structure within uo_data_collect
  8. end type
  9. end forward
  10. type s_data_collectmx from structure
  11. long collectid
  12. decimal { 5 } qty
  13. datetime collectdate
  14. string inspector
  15. string dscrp
  16. long printid
  17. end type
  18. type s_data_wage from structure
  19. long collectid
  20. long orderid
  21. long machineid
  22. string teamorder
  23. long empid
  24. string empcode
  25. string procode
  26. decimal { 5 } cp_qty
  27. decimal { 5 } workprice
  28. decimal { 5 } awardprice
  29. decimal { 5 } stantby_price
  30. decimal { 5 } bcp_qty
  31. decimal { 5 } zx_qty
  32. decimal { 5 } zx_price
  33. string dscrp
  34. string empname
  35. string proname
  36. long printid
  37. decimal { 5 } cp_wage
  38. decimal { 5 } bcp_wage
  39. decimal { 5 } zx_wage
  40. decimal { 5 } price_add
  41. decimal { 5 } qty_add
  42. string procode_add
  43. string proname_add
  44. end type
  45. global type uo_data_collect from nonvisualobject
  46. end type
  47. global uo_data_collect uo_data_collect
  48. type variables
  49. Long collectid
  50. Long orderid
  51. Long machineid
  52. String teamorder
  53. String collectcode
  54. String color_st
  55. String look_st
  56. String size_st
  57. String conjugation_st
  58. String annex1_st
  59. String annex2_st
  60. String color_way
  61. String look_way
  62. String size_way
  63. String conjugation_way
  64. String annex1_way
  65. String annex2_way
  66. Decimal period
  67. Decimal Weight
  68. Decimal openqty
  69. Decimal modelqty
  70. Decimal semi_discount
  71. Decimal stantby_time
  72. Decimal worktime
  73. Decimal ammeter_start
  74. Decimal ammeter_end
  75. Int storageid
  76. Decimal qty
  77. String dscrp
  78. String collector
  79. DateTime cillecttime
  80. Long flag
  81. Long lockflag
  82. String operator
  83. DateTime opdate
  84. Long wageid
  85. Int iffinish
  86. Long taskid
  87. Long wageid_other
  88. Decimal netweight
  89. Long squadid
  90. Decimal squadtime
  91. Long storageid_bcp
  92. Decimal qty_bcp
  93. Long autoflag
  94. Decimal yzqty
  95. String helpemp
  96. Decimal wastetime
  97. Decimal butie
  98. String addemp
  99. long scid
  100. int uo_option_inware_mtrlcuscode
  101. int uo_option_taskplancode
  102. PRIVATE:
  103. s_data_collectmx collectmx[]
  104. s_data_wage wagemx[]
  105. Long it_mxbt1 = 0
  106. Long it_mxbt2 = 0
  107. Boolean it_newbegin = FALSE
  108. Boolean it_updatebegin = FALSE
  109. uo_taskwork uo_taskwork_dq
  110. uo_abnormity uo_abnormity_dq
  111. end variables
  112. forward prototypes
  113. public function integer p_reset ()
  114. public function integer p_clearmx ()
  115. public function integer newbegin ()
  116. public function integer p_getinfo (long arg_collectid, ref string arg_msg)
  117. public function integer getinfo (long arg_collectid, ref string arg_msg)
  118. public function integer updatebegin (long arg_collectid, ref string arg_msg)
  119. public function integer acceptmx (decimal arg_qty, datetime arg_collectdate, string arg_inspector, string arg_dscrp, long arg_printid, ref string arg_msg)
  120. public function integer save (string arg_operator, ref string arg_msg, boolean arg_ifcommit)
  121. public function integer del (long arg_collectid, ref string arg_msg, boolean arg_ifcommit)
  122. public function integer audit (long arg_collectid, string arg_emp, ref string arg_msg, boolean arg_ifcommit)
  123. public function integer caudit (long arg_collectid, ref string arg_msg, boolean arg_ifcommit)
  124. public function integer gzaudit (long arg_collectid, string arg_emp, ref string arg_msg, boolean arg_ifcommit)
  125. public function integer cgzaudit (long arg_collectid, ref string arg_msg, boolean arg_ifcommit)
  126. public function integer p_create_inware (ref string arg_msg, boolean arg_ifcommit)
  127. public function integer uof_find_cust (long arg_scid, long arg_orderid, ref long arg_cusid, ref string arg_plancode, ref string arg_mtrlcuscode, ref string arg_msg)
  128. public function integer p_del_inware (ref string arg_msg, boolean arg_ifcommit)
  129. public function integer acceptmx_wage (long arg_empid, string arg_empcode, string arg_empname, string arg_procode, string arg_proname, decimal arg_cp_qty, decimal arg_workprice, decimal arg_awardprice, decimal arg_stantby_price, decimal arg_bcp_qty, decimal arg_zx_qty, decimal arg_zx_price, string arg_dscrp, long arg_printid, string arg_procode_add, string arg_proname_add, decimal arg_price_add, decimal arg_qty_add, ref string arg_msg)
  130. end prototypes
  131. public function integer p_reset ();collectid = 0
  132. orderid = 0
  133. machineid= 0
  134. teamorder = ''
  135. collectcode = ''
  136. color_st = ''
  137. look_st = ''
  138. size_st = ''
  139. conjugation_st = ''
  140. annex1_st = ''
  141. annex2_st = ''
  142. color_way = ''
  143. look_way = ''
  144. size_way = ''
  145. conjugation_way = ''
  146. annex1_way = ''
  147. annex2_way = ''
  148. period = 0
  149. Weight = 0
  150. openqty = 0
  151. modelqty = 0
  152. semi_discount = 0
  153. stantby_time = 0
  154. worktime = 0
  155. ammeter_start = 0
  156. ammeter_end = 0
  157. storageid = 0
  158. qty = 0
  159. dscrp = ''
  160. collector = ''
  161. flag = 0
  162. lockflag = 0
  163. wageid = 0
  164. iffinish = 0
  165. taskid = 0
  166. wageid_other = 0
  167. storageid_bcp = 0
  168. qty_bcp = 0
  169. autoflag = 0
  170. yzqty = 0
  171. helpemp = ''
  172. wastetime = 0
  173. butie = 0
  174. addemp = ''
  175. scid = 0
  176. it_newbegin=FALSE
  177. it_updatebegin=FALSE
  178. //清除明细
  179. P_CLEARMX()
  180. RETURN 1
  181. end function
  182. public function integer p_clearmx ();it_mxbt1 = 0
  183. it_mxbt2 = 0
  184. return 1
  185. end function
  186. public function integer newbegin ();p_reset()
  187. it_newbegin=TRUE
  188. it_updatebegin=FALSE
  189. return 1
  190. end function
  191. public function integer p_getinfo (long arg_collectid, ref string arg_msg);Int rslt = 1
  192. SELECT
  193. collectid,
  194. orderid,
  195. machineid,
  196. teamorder ,
  197. collectcode,
  198. color_st ,
  199. look_st ,
  200. size_st ,
  201. conjugation_st ,
  202. annex1_st ,
  203. annex2_st ,
  204. color_way ,
  205. look_way ,
  206. size_way ,
  207. conjugation_way ,
  208. annex1_way ,
  209. annex2_way ,
  210. period ,
  211. Weight ,
  212. openqty ,
  213. modelqty ,
  214. semi_discount ,
  215. stantby_time ,
  216. worktime ,
  217. ammeter_start ,
  218. ammeter_end ,
  219. storageid ,
  220. qty ,
  221. dscrp ,
  222. collector ,
  223. flag ,
  224. lockflag,
  225. wageid,
  226. iffinish,
  227. taskid,
  228. wageid_other,
  229. storageid_bcp,
  230. qty_bcp,
  231. autoflag,
  232. yzqty,
  233. helpemp ,
  234. wastetime ,
  235. butie ,
  236. addemp,
  237. opdate,
  238. scid
  239. INTO
  240. :collectid,
  241. :orderid,
  242. :machineid,
  243. :teamorder,
  244. :collectcode,
  245. :color_st ,
  246. :look_st ,
  247. :size_st ,
  248. :conjugation_st ,
  249. :annex1_st ,
  250. :annex2_st ,
  251. :color_way ,
  252. :look_way ,
  253. :size_way ,
  254. :conjugation_way ,
  255. :annex1_way ,
  256. :annex2_way ,
  257. :period ,
  258. :Weight ,
  259. :openqty ,
  260. :modelqty ,
  261. :semi_discount ,
  262. :stantby_time ,
  263. :worktime ,
  264. :ammeter_start ,
  265. :ammeter_end ,
  266. :storageid ,
  267. :qty ,
  268. :dscrp ,
  269. :collector ,
  270. :flag ,
  271. :lockflag,
  272. :wageid,
  273. :iffinish,
  274. :taskid,
  275. :wageid_other,
  276. :storageid_bcp,
  277. :qty_bcp,
  278. :autoflag,
  279. :yzqty,
  280. :helpemp ,
  281. :wastetime ,
  282. :butie ,
  283. :addemp,
  284. :opdate,
  285. :scid
  286. FROM u_data_collect
  287. Where u_data_collect.collectid = :arg_collectid;
  288. IF sqlca.SQLCode <> 0 THEN
  289. rslt = 0
  290. arg_msg = '查询质检单内容失败(错误单据唯一码)' +sqlca.SQLErrText
  291. GOTO ext
  292. END IF
  293. collectid = arg_collectid
  294. ext:
  295. RETURN rslt
  296. end function
  297. public function integer getinfo (long arg_collectid, ref string arg_msg);Int rslt = 1 ,i = 1 ,no_mxcheck = 0 , j = 1
  298. IF arg_collectid <= 0 THEN
  299. rslt = 0
  300. arg_msg = '错误质检单唯一码'
  301. GOTO ext
  302. END IF
  303. IF p_getinfo(arg_collectid,arg_msg) = 0 THEN
  304. rslt = 0
  305. GOTO ext
  306. END IF
  307. DECLARE cur_collectmx CURSOR FOR
  308. SELECT u_data_collectmx.collectid,
  309. u_data_collectmx.qty,
  310. u_data_collectmx.collectdate,
  311. u_data_collectmx.inspector,
  312. u_data_collectmx.dscrp,
  313. u_data_collectmx.printid
  314. FROM u_data_collectmx
  315. Where u_data_collectmx.collectid = :arg_collectid;
  316. OPEN cur_collectmx;
  317. FETCH cur_collectmx INTO :collectmx[i].collectid,:collectmx[i].qty,:collectmx[i].collectdate,
  318. :collectmx[i].inspector,:collectmx[i].dscrp,:collectmx[i].printid;
  319. DO WHILE sqlca.SQLCode = 0
  320. i++
  321. FETCH cur_collectmx INTO :collectmx[i].collectid,:collectmx[i].qty,:collectmx[i].collectdate,
  322. :collectmx[i].inspector,:collectmx[i].dscrp,:collectmx[i].printid;
  323. LOOP
  324. CLOSE cur_collectmx;
  325. SELECT count(*) INTO :no_mxcheck
  326. FROM u_data_collectmx
  327. Where u_data_collectmx.collectid = :arg_collectid;
  328. IF sqlca.SQLCode <> 0 THEN
  329. rslt = 0
  330. arg_msg = '查询操作失败,质检单明细数量'
  331. GOTO ext
  332. END IF
  333. IF i <> (no_mxcheck+1) THEN
  334. rslt = 0
  335. arg_msg = '查询操作失败,质检单明细'
  336. GOTO ext
  337. END IF
  338. it_mxbt1 = i - 1
  339. DECLARE cur_wagemx CURSOR FOR
  340. SELECT u_data_wage.collectid,
  341. u_data_wage.empid,
  342. u_data_wage.empcode,
  343. u_data_wage.procode,
  344. u_data_wage.cp_qty,
  345. u_data_wage.workprice,
  346. u_data_wage.awardprice,
  347. u_data_wage.stantby_price,
  348. u_data_wage.bcp_qty,
  349. u_data_wage.zx_qty,
  350. u_data_wage.zx_price,
  351. u_data_wage.dscrp,
  352. u_data_wage.empname,
  353. u_data_wage.proname,
  354. u_data_wage.printid,
  355. u_data_wage.cp_wage,
  356. u_data_wage.bcp_wage,
  357. u_data_wage.zx_wage
  358. FROM u_data_wage
  359. Where u_data_wage.collectid = :arg_collectid;
  360. OPEN cur_wagemx;
  361. FETCH cur_wagemx INTO :wagemx[j].collectid,:wagemx[j].empid,:wagemx[j].empcode,:wagemx[j].procode,
  362. :wagemx[j].cp_qty,:wagemx[j].workprice,:wagemx[j].awardprice,:wagemx[j].stantby_price,
  363. :wagemx[j].bcp_qty,:wagemx[j].zx_qty,:wagemx[j].zx_price,:wagemx[j].dscrp,:wagemx[j].empname,
  364. :wagemx[j].proname,:wagemx[j].printid,:wagemx[j].cp_wage,:wagemx[j].bcp_wage,:wagemx[j].zx_wage;
  365. DO WHILE sqlca.SQLCode = 0
  366. j++
  367. FETCH cur_wagemx INTO :wagemx[j].collectid,:wagemx[j].empid,:wagemx[j].empcode,:wagemx[j].procode,
  368. :wagemx[j].cp_qty,:wagemx[j].workprice,:wagemx[j].awardprice,:wagemx[j].stantby_price,
  369. :wagemx[j].bcp_qty,:wagemx[j].zx_qty,:wagemx[j].zx_price,:wagemx[j].dscrp,:wagemx[j].empname,
  370. :wagemx[j].proname,:wagemx[j].printid,:wagemx[j].cp_wage,:wagemx[j].bcp_wage,:wagemx[j].zx_wage;
  371. LOOP
  372. CLOSE cur_wagemx;
  373. SELECT count(*) INTO :no_mxcheck
  374. FROM u_data_wage
  375. Where u_data_wage.collectid = :arg_collectid;
  376. IF sqlca.SQLCode <> 0 THEN
  377. rslt = 0
  378. arg_msg = "查询操作失败,员工生产信息明细"
  379. GOTO ext
  380. END IF
  381. IF j <> (no_mxcheck + 1) THEN
  382. rslt = 0
  383. arg_msg = '查询操作失败,员工生产信息明细'
  384. GOTO ext
  385. END IF
  386. it_mxbt2 = j - 1
  387. it_newbegin = FALSE
  388. it_updatebegin = FALSE
  389. ext:
  390. IF rslt = 0 THEN p_reset()
  391. RETURN rslt
  392. end function
  393. public function integer updatebegin (long arg_collectid, ref string arg_msg);Long rslt = 1
  394. IF arg_collectid <= 0 THEN
  395. rslt = 0
  396. arg_msg = '错误质检单唯一码'
  397. GOTO ext
  398. END IF
  399. IF p_getinfo(arg_collectid,arg_msg) = 0 THEN
  400. rslt = 0
  401. GOTO ext
  402. END IF
  403. IF flag = 2 THEN
  404. rslt = 0
  405. arg_msg = '已经处于审核完毕,不能修改'
  406. GOTO ext
  407. END IF
  408. it_newbegin = FALSE
  409. it_updatebegin = TRUE
  410. p_clearmx()
  411. ext:
  412. IF rslt = 0 THEN p_reset()
  413. RETURN rslt
  414. end function
  415. public function integer acceptmx (decimal arg_qty, datetime arg_collectdate, string arg_inspector, string arg_dscrp, long arg_printid, ref string arg_msg);Long rslt = 1
  416. IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
  417. rslt = 0
  418. arG_MSG = "非编辑状态不可以使用,操作取消"
  419. GOTO ext
  420. END IF
  421. IF IsNull(arg_qty) THEN arg_qty = 0
  422. IF IsNull(arg_inspector) THEN arg_inspector = ''
  423. IF IsNull(arg_dscrp) THEN arg_dscrp = ''
  424. IF IsNull(arg_printid) THEN arg_printid = 0
  425. IF arg_qty = 0 THEN
  426. rslt = 1
  427. GOTO ext
  428. END IF
  429. IF arg_inspector = '' THEN
  430. rslt = 0
  431. arG_MSG = '必须填写质检员姓名'
  432. GOTO ext
  433. END IF
  434. it_mxbt1++
  435. collectmx[it_mxbt1].qty = arg_qty
  436. collectmx[it_mxbt1].collectdate = arg_collectdate
  437. collectmx[it_mxbt1].inspector = arg_inspector
  438. collectmx[it_mxbt1].dscrp = arg_dscrp
  439. collectmx[it_mxbt1].printid = arg_printid
  440. ext:
  441. IF rslt = 0 THEN p_clearmx()
  442. Return(rslt)
  443. end function
  444. public function integer save (string arg_operator, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 ,cnt,i,j
  445. Long ll_newid
  446. DateTime server_datetime
  447. IF IsNull(orderid) THEN orderid = 0
  448. IF IsNull(machineid) THEN machineid = 0
  449. IF IsNull(teamorder) THEN teamorder = ''
  450. IF IsNull(color_st) THEN color_st = ''
  451. IF IsNull(look_st) THEN look_st = ''
  452. IF IsNull(size_st) THEN size_st = ''
  453. IF IsNull(conjugation_st) THEN conjugation_st = ''
  454. IF IsNull(annex1_st) THEN annex1_st = ''
  455. IF IsNull(annex2_st) THEN annex2_st = ''
  456. IF IsNull(color_way) THEN color_way = ''
  457. IF IsNull(look_way) THEN look_way = ''
  458. IF IsNull(size_way) THEN size_way = ''
  459. IF IsNull(conjugation_way) THEN conjugation_way = ''
  460. IF IsNull(annex1_way) THEN annex1_way = ''
  461. IF IsNull(annex2_way) THEN annex2_way = ''
  462. IF IsNull(period) THEN period = 0
  463. IF IsNull(Weight) THEN Weight = 0
  464. IF IsNull(openqty) THEN openqty = 0
  465. IF IsNull(modelqty) THEN modelqty = 0
  466. IF IsNull(semi_discount) THEN semi_discount = 0
  467. IF IsNull(stantby_time) THEN stantby_time = 0
  468. IF IsNull(worktime) THEN worktime = 0
  469. IF IsNull(ammeter_start) THEN ammeter_start = 0
  470. IF IsNull(ammeter_end) THEN ammeter_end = 0
  471. IF IsNull(storageid) THEN storageid = 0
  472. IF IsNull(qty) THEN qty = 0
  473. IF IsNull(dscrp) THEN dscrp = ''
  474. IF IsNull(collector) THEN collector = ''
  475. IF IsNull(flag) THEN flag = 0
  476. IF IsNull(lockflag) THEN lockflag = 0
  477. IF IsNull(iffinish) THEN iffinish = 0
  478. IF IsNull(taskid) THEN taskid = 0
  479. IF IsNull(wageid_other) THEN wageid_other = 0
  480. IF IsNull(netweight) THEN netweight = 0
  481. IF IsNull(squadid) THEN squadid = 0
  482. IF IsNull(squadtime) THEN squadtime = 0
  483. IF IsNull(storageid_bcp) THEN storageid_bcp = 0
  484. IF IsNull(qty_bcp) THEN qty_bcp = 0
  485. IF IsNull(autoflag ) THEN autoflag = 0
  486. IF IsNull(yzqty ) THEN yzqty = 0
  487. IF IsNull(helpemp ) THEN helpemp = ''
  488. IF IsNull(wastetime ) THEN wastetime = 0
  489. IF IsNull(butie ) THEN butie = 0
  490. IF IsNull(addemp) THEN addemp = ''
  491. operator = arg_operator
  492. IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
  493. rslt = 0
  494. arg_msg = "非编辑状态不可以提交"
  495. GOTO ext
  496. END IF
  497. IF it_newbegin = TRUE THEN
  498. cnt = 0
  499. SELECT count(*) INTO :cnt
  500. FROM u_data_collect
  501. WHERE taskid = :taskid AND
  502. flag = 0 ;
  503. IF sqlca.SQLCode <> 0 THEN
  504. rslt = 0
  505. arg_msg = "查询该生产任务是否已有未审核质检单失败!"
  506. GOTO ext
  507. END IF
  508. IF cnt > 0 THEN
  509. rslt = 0
  510. arg_msg = "该生产任务已有未审核的质检单,不能再新建"
  511. GOTO ext
  512. END IF
  513. END IF
  514. IF lockflag = 1 THEN
  515. IF flag = 1 THEN
  516. IF Trim(collector) = '' THEN
  517. rslt = 0
  518. arg_msg = "请输入采集者"
  519. GOTO ext
  520. END IF
  521. END IF
  522. END IF
  523. cnt = 0
  524. SELECT count(*) INTO :cnt
  525. FROM u_sc_task
  526. Where taskid = :taskid;
  527. IF sqlca.SQLCode <> 0 THEN
  528. arg_msg = '查询生产计划排程队列失败'
  529. rslt = 0
  530. GOTO ext
  531. END IF
  532. IF cnt = 0 THEN
  533. arg_msg = '生产计划排程队列不存在'
  534. rslt = 0
  535. GOTO ext
  536. END IF
  537. SELECT Top 1 getdate() INTO :server_datetime FROM u_user;
  538. IF sqlca.SQLCode <> 0 THEN
  539. rslt = 0
  540. arg_msg = "查询操作失败,日期 "
  541. GOTO ext
  542. END IF
  543. IF lockflag = 0 THEN
  544. IF it_mxbt1 = 0 THEN
  545. rslt = 0
  546. arg_msg = "没有正确质检明细内容"
  547. GOTO ext
  548. END IF
  549. ELSE
  550. IF flag = 1 THEN
  551. IF it_mxbt2 = 0 THEN
  552. rslt = 0
  553. arg_msg = "没有正确的员工生产信息"
  554. GOTO ext
  555. END IF
  556. END IF
  557. IF storageid <= 0 THEN
  558. rslt = 0
  559. arg_msg = "错误的成品仓库唯一码"
  560. GOTO ext
  561. END IF
  562. if qty = 0 and qty_bcp = 0 then
  563. rslt = 0
  564. arg_msg = '请填写正确的进仓数量'
  565. goto ext
  566. end if
  567. IF qty_bcp > 0 AND storageid_bcp = 0 THEN
  568. rslt = 0
  569. arg_msg = "错误的半成品仓库唯一码"
  570. GOTO ext
  571. END IF
  572. // IF wageid <= 0 THEN
  573. // rslt = 0
  574. // arg_msg = "必须选择成品工资项目"
  575. // GOTO ext
  576. // END IF
  577. IF flag = 1 THEN
  578. IF wageid_other <= 0 THEN
  579. rslt = 0
  580. arg_msg = "必须选择工资项目"
  581. GOTO ext
  582. END IF
  583. // IF netweight <= 0 THEN
  584. // rslt = 0
  585. // arg_msg = '不合理的产品净重'
  586. // GOTO ext
  587. // END IF
  588. IF squadid = 0 THEN
  589. rslt = 0
  590. arg_msg = '请选择班次类型'
  591. GOTO ext
  592. END IF
  593. IF squadtime <= 0 THEN
  594. rslt = 0
  595. arg_msg = '错误的当班时间'
  596. GOTO ext
  597. END IF
  598. END IF
  599. END IF
  600. cnt = 0
  601. SELECT count(*) INTO :cnt
  602. FROM u_user
  603. Where username = :operator ;
  604. IF sqlca.SQLCode <> 0 THEN
  605. rslt = 0
  606. arg_msg = "查询操作失败,操作员!"
  607. GOTO ext
  608. END IF
  609. IF cnt = 0 THEN
  610. rslt = 0
  611. arg_msg = "操作员姓名未登记或已取消!"
  612. GOTO ext
  613. END IF
  614. opdate = server_datetime //填写单据建立时间(最近修改时间)
  615. IF collectid = 0 THEN
  616. ll_newid = f_sys_scidentity(0,"u_data_collect","collectid",arg_msg,TRUE,id_sqlca)
  617. IF ll_newid <= 0 THEN
  618. rslt = 0
  619. GOTO ext
  620. END IF
  621. collectcode = getid(0,'ZJ',Date(server_datetime),FALSE,sqlca)
  622. INSERT INTO u_data_collect
  623. (collectid ,
  624. collectcode,
  625. orderid ,
  626. machineid ,
  627. teamorder,
  628. color_st,
  629. look_st ,
  630. size_st ,
  631. conjugation_st,
  632. annex1_st,
  633. annex2_st ,
  634. color_way,
  635. look_way ,
  636. size_way ,
  637. conjugation_way ,
  638. annex1_way ,
  639. annex2_way ,
  640. period ,
  641. Weight ,
  642. openqty ,
  643. modelqty ,
  644. semi_discount ,
  645. stantby_time ,
  646. worktime ,
  647. ammeter_start ,
  648. ammeter_end ,
  649. storageid ,
  650. qty ,
  651. dscrp ,
  652. collector ,
  653. flag,
  654. lockflag,
  655. wageid,
  656. opemp,
  657. opdate,
  658. iffinish,
  659. taskid,
  660. netweight,
  661. squadid,
  662. squadtime,
  663. wageid_other,
  664. storageid_bcp,
  665. qty_bcp,
  666. autoflag ,
  667. yzqty ,
  668. helpemp ,
  669. wastetime ,
  670. butie ,
  671. addemp)
  672. VALUES(:ll_newid,
  673. :collectcode,
  674. :orderid,
  675. :machineid,
  676. :teamorder,
  677. :color_st,
  678. :look_st ,
  679. :size_st ,
  680. :conjugation_st,
  681. :annex1_st,
  682. :annex2_st ,
  683. :color_way,
  684. :look_way ,
  685. :size_way ,
  686. :conjugation_way ,
  687. :annex1_way ,
  688. :annex2_way ,
  689. :period ,
  690. :Weight ,
  691. :openqty ,
  692. :modelqty ,
  693. :semi_discount ,
  694. :stantby_time ,
  695. :worktime ,
  696. :ammeter_start ,
  697. :ammeter_end ,
  698. :storageid ,
  699. :qty ,
  700. :dscrp ,
  701. :collector ,
  702. :flag,
  703. :lockflag,
  704. :wageid,
  705. :operator,
  706. :opdate,
  707. :iffinish,
  708. :taskid,
  709. :netweight,
  710. :squadid,
  711. :squadtime,
  712. :wageid_other,
  713. :storageid_bcp,
  714. :qty_bcp,
  715. :autoflag ,
  716. :yzqty ,
  717. :helpemp ,
  718. :wastetime ,
  719. :butie ,
  720. :addemp);
  721. IF sqlca.SQLCode <> 0 THEN
  722. rslt = 0
  723. arg_msg = "因网络或其它原因导致插入质检表操作失败"+"~n"+sqlca.SQLErrText
  724. GOTO ext
  725. END IF
  726. collectid = ll_newid
  727. FOR i = 1 TO it_mxbt1
  728. INSERT INTO u_data_collectmx
  729. (collectid,
  730. qty,
  731. collectdate,
  732. inspector,
  733. dscrp,
  734. printid)
  735. VALUES(:ll_newid,
  736. :collectmx[i].qty,
  737. :collectmx[i].collectdate,
  738. :collectmx[i].inspector,
  739. :collectmx[i].dscrp,
  740. :collectmx[i].printid);
  741. IF sqlca.SQLCode <> 0 THEN
  742. collectid = 0
  743. rslt = 0
  744. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
  745. GOTO ext
  746. END IF
  747. NEXT
  748. UPDATE u_sc_task
  749. SET lasttime = getdate()
  750. Where taskid = :taskid;
  751. IF sqlca.SQLCode <> 0 THEN
  752. rslt = 0
  753. arg_msg = '因网络或其它原因导致更新机台任务最近质检时间失败'+"~n"+sqlca.SQLErrText
  754. GOTO ext
  755. END IF
  756. IF lockflag = 1 THEN
  757. FOR j = 1 TO it_mxbt2
  758. INSERT INTO u_data_wage
  759. (collectid,
  760. empid,
  761. empcode,
  762. empname,
  763. procode,
  764. proname,
  765. cp_qty,
  766. workprice,
  767. awardprice,
  768. stantby_price,
  769. bcp_qty,
  770. zx_qty,
  771. zx_price,
  772. dscrp,
  773. printid,
  774. cp_wage,
  775. bcp_wage,
  776. zx_wage,
  777. procode_add,
  778. proname_add,
  779. price_add,
  780. qty_add)
  781. VALUES(:ll_newid,
  782. :wagemx[j].empid,
  783. :wagemx[j].empcode,
  784. :wagemx[j].empname,
  785. :wagemx[j].procode,
  786. :wagemx[j].proname,
  787. :wagemx[j].cp_qty,
  788. :wagemx[j].workprice,
  789. :wagemx[j].awardprice,
  790. :wagemx[j].stantby_price,
  791. :wagemx[j].bcp_qty,
  792. :wagemx[j].zx_qty,
  793. :wagemx[j].zx_price,
  794. :wagemx[j].dscrp,
  795. :wagemx[j].printid,
  796. :wagemx[j].cp_wage,
  797. :wagemx[j].bcp_wage,
  798. :wagemx[j].zx_wage,
  799. :wagemx[j].procode_add,
  800. :wagemx[j].proname_add,
  801. :wagemx[j].price_add,
  802. :wagemx[j].qty_add);
  803. IF sqlca.SQLCode <> 0 THEN
  804. rslt = 0
  805. arg_msg = "因网络或其它原因导致插入员工生产信息操作失败"+"~n"+sqlca.SQLErrText
  806. GOTO ext
  807. END IF
  808. NEXT
  809. END IF
  810. ELSE
  811. UPDATE u_data_collect
  812. SET orderid = :orderid,
  813. machineid = :machineid,
  814. teamorder = :teamorder,
  815. color_st = :color_st,
  816. look_st = :look_st,
  817. size_st = :size_st,
  818. conjugation_st = :conjugation_st,
  819. annex1_st = :annex1_st,
  820. annex2_st = :annex2_st,
  821. color_way = :color_way,
  822. look_way = :look_way,
  823. size_way = :size_way,
  824. conjugation_way = :conjugation_way,
  825. annex1_way = :annex1_way,
  826. annex2_way = :annex2_way,
  827. period = :period,
  828. weight = :Weight,
  829. openqty = :openqty,
  830. modelqty = :modelqty,
  831. semi_discount = :semi_discount,
  832. stantby_time = :stantby_time,
  833. worktime = :worktime,
  834. ammeter_start = :ammeter_start,
  835. ammeter_end = :ammeter_end ,
  836. storageid = :storageid ,
  837. qty = :qty ,
  838. dscrp = :dscrp ,
  839. collector = :collector,
  840. lockflag = :lockflag,
  841. wageid = :wageid,
  842. modemp = :operator,
  843. moddate = :opdate,
  844. iffinish = :iffinish,
  845. taskid = :taskid,
  846. wageid_other = :wageid_other,
  847. netweight = :netweight,
  848. squadid = :squadid,
  849. squadtime = :squadtime,
  850. storageid_bcp = :storageid_bcp,
  851. qty_bcp = :qty_bcp,
  852. autoflag = :autoflag ,
  853. yzqty = :yzqty ,
  854. helpemp = :helpemp ,
  855. wastetime = :wastetime ,
  856. butie = :butie ,
  857. addemp = :addemp
  858. Where u_data_collect.collectid = :collectid ;
  859. IF sqlca.SQLCode <> 0 THEN
  860. rslt = 0
  861. arg_msg = "因网络或其它原因导致更新质检单操作失败"+"~n"+sqlca.SQLErrText
  862. GOTO ext
  863. END IF
  864. DELETE FROM u_data_collectmx
  865. Where u_data_collectmx.collectid = :collectid ;
  866. IF sqlca.SQLCode <> 0 THEN
  867. rslt = 0
  868. arg_msg = "删除旧有明细操作失败"
  869. GOTO ext
  870. END IF
  871. UPDATE u_sc_task
  872. SET lasttime = getdate()
  873. Where taskid = :taskid;
  874. IF sqlca.SQLCode <> 0 THEN
  875. rslt = 0
  876. arg_msg = '因网络或其它原因导致更新机台任务最近质检时间失败'+"~n"+sqlca.SQLErrText
  877. GOTO ext
  878. END IF
  879. FOR i = 1 TO it_mxbt1
  880. INSERT INTO u_data_collectmx
  881. (collectid,
  882. qty,
  883. collectdate,
  884. inspector,
  885. dscrp,
  886. printid)
  887. VALUES(:collectid,
  888. :collectmx[i].qty,
  889. :collectmx[i].collectdate,
  890. :collectmx[i].inspector,
  891. :collectmx[i].dscrp,
  892. :collectmx[i].printid);
  893. IF sqlca.SQLCode <> 0 THEN
  894. rslt = 0
  895. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
  896. GOTO ext
  897. END IF
  898. NEXT
  899. IF lockflag = 1 THEN
  900. DELETE FROM u_data_wage
  901. Where u_data_wage.collectid = :collectid ;
  902. IF sqlca.SQLCode <> 0 THEN
  903. rslt = 0
  904. arg_msg = "删除旧有员工生产信息失败"
  905. GOTO ext
  906. END IF
  907. FOR j = 1 TO it_mxbt2
  908. INSERT INTO u_data_wage
  909. (collectid,
  910. empid,
  911. empcode,
  912. empname,
  913. procode,
  914. proname,
  915. cp_qty,
  916. workprice,
  917. awardprice,
  918. stantby_price,
  919. bcp_qty,
  920. zx_qty,
  921. zx_price,
  922. dscrp,
  923. printid,
  924. cp_wage,
  925. bcp_wage,
  926. zx_wage,
  927. procode_add,
  928. proname_add,
  929. price_add,
  930. qty_add)
  931. VALUES(:collectid,
  932. :wagemx[j].empid,
  933. :wagemx[j].empcode,
  934. :wagemx[j].empname,
  935. :wagemx[j].procode,
  936. :wagemx[j].proname,
  937. :wagemx[j].cp_qty,
  938. :wagemx[j].workprice,
  939. :wagemx[j].awardprice,
  940. :wagemx[j].stantby_price,
  941. :wagemx[j].bcp_qty,
  942. :wagemx[j].zx_qty,
  943. :wagemx[j].zx_price,
  944. :wagemx[j].dscrp,
  945. :wagemx[j].printid,
  946. :wagemx[j].cp_wage,
  947. :wagemx[j].bcp_wage,
  948. :wagemx[j].zx_wage,
  949. :wagemx[j].procode_add,
  950. :wagemx[j].proname_add,
  951. :wagemx[j].price_add,
  952. :wagemx[j].qty_add);
  953. IF sqlca.SQLCode <> 0 THEN
  954. rslt = 0
  955. arg_msg = "因网络或其它原因导致插入员工生产信息操作失败"+"~n"+sqlca.SQLErrText
  956. GOTO ext
  957. END IF
  958. NEXT
  959. END IF
  960. END IF
  961. it_newbegin = FALSE
  962. it_updatebegin = FALSE
  963. ext:
  964. IF rslt = 0 THEN
  965. ROLLBACK ;
  966. p_clearmx()
  967. ELSEIF arg_ifcommit AND rslt = 1 THEN
  968. COMMIT ;
  969. END IF
  970. RETURN rslt
  971. end function
  972. public function integer del (long arg_collectid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  973. IF arg_collectid <= 0 THEN
  974. rslt = 0
  975. arg_msg = "错误质检单唯一码"
  976. GOTO ext
  977. END IF
  978. IF p_getinfo(arg_collectid,arg_msg) = 0 THEN
  979. rslt = 0
  980. GOTO ext
  981. END IF
  982. IF flag <> 0 THEN
  983. rslt = 0
  984. arg_msg = '质检单已经审核,不能删除'
  985. GOTO ext
  986. END IF
  987. DELETE FROM u_data_collect
  988. Where u_data_collect.collectid = :arg_collectid;
  989. IF sqlca.SQLCode <> 0 THEN
  990. rslt = 0
  991. arg_msg = "删除质检单操作失败"
  992. ROLLBACK;
  993. GOTO ext
  994. END IF
  995. DELETE FROM u_data_collectmx
  996. Where u_data_collectmx.collectid = :arg_collectid;
  997. IF sqlca.SQLCode <> 0 THEN
  998. rslt = 0
  999. arg_msg = "删除质检单明细内容失败"
  1000. GOTO ext
  1001. END IF
  1002. DELETE FROM u_data_wage
  1003. Where u_data_wage.collectid = :arg_collectid;
  1004. IF sqlca.SQLCode <> 0 THEN
  1005. rslt = 0
  1006. arg_msg = "删除员工生产信息内容失败"
  1007. GOTO ext
  1008. END IF
  1009. DateTime null_dt
  1010. SetNull(null_dt)
  1011. UPDATE u_sc_task
  1012. SET lasttime = :null_dt
  1013. Where taskid = :taskid ;
  1014. IF sqlca.SQLCode <> 0 THEN
  1015. rslt = 0
  1016. arg_msg = "清除机台任务最近质检时间失败"
  1017. GOTO ext
  1018. END IF
  1019. it_newbegin = FALSE
  1020. it_updatebegin = FALSE
  1021. IF arg_ifcommit AND rslt = 1 THEN
  1022. COMMIT;
  1023. END IF
  1024. ext:
  1025. p_reset()
  1026. Return (rslt)
  1027. end function
  1028. public function integer audit (long arg_collectid, string arg_emp, ref string arg_msg, boolean arg_ifcommit);//仓审
  1029. Int rslt = 1,cnt = 0
  1030. Long ll_mtrlid
  1031. String ls_mtrlcode,ls_unit
  1032. DateTime server_dt
  1033. Decimal ld_orderqty
  1034. Decimal ld_planprice
  1035. IF arg_collectid <= 0 THEN
  1036. rslt = 0
  1037. ARG_MSG = '错误质检单唯一码'
  1038. GOTO ext
  1039. END IF
  1040. SELECT Top 1 getdate() INTO :server_dt FROM u_user ;
  1041. //取得系统时间,借用操作员表
  1042. IF sqlca.SQLCode <> 0 THEN
  1043. rslt = 0
  1044. ARG_MSG = "查询操作失败,日期 "
  1045. GOTO ext
  1046. END IF
  1047. IF getinfo(arg_collectid,ARG_MSG) = 0 THEN
  1048. rslt = 0
  1049. GOTO ext
  1050. END IF
  1051. IF flag = 2 THEN
  1052. rslt = 0
  1053. ARG_MSG = '质检单已经完成审核,操作取消'
  1054. GOTO ext
  1055. ELSEIF flag = 1 THEN
  1056. rslt = 0
  1057. ARG_MSG = '质检单已经仓审,操作取消'
  1058. GOTO ext
  1059. END IF
  1060. cnt = 0
  1061. SELECT count(*) INTO :cnt
  1062. FROM u_user
  1063. Where username = :arg_emp ;
  1064. IF sqlca.SQLCode <> 0 THEN
  1065. rslt = 0
  1066. ARG_MSG = "查询操作失败,操作员!"
  1067. GOTO ext
  1068. END IF
  1069. IF cnt = 0 THEN
  1070. rslt = 0
  1071. ARG_MSG = "操作员姓名未登记或已取消!"
  1072. GOTO ext
  1073. END IF
  1074. UPDATE u_data_collect
  1075. SET flag = 1 ,
  1076. auditrep = :arg_emp,
  1077. auditdate = getdate()
  1078. Where collectid = :arg_collectid ;
  1079. IF sqlca.SQLCode <> 0 THEN
  1080. rslt = 0
  1081. ARG_MSG = "因网络或其它原因导致质检单审核操作失败"+"~n"+sqlca.SQLErrText
  1082. GOTO ext
  1083. END IF
  1084. UPDATE u_sc_task
  1085. SET fqty = fqty + :qty + :qty_bcp
  1086. Where taskid = :taskid;
  1087. IF sqlca.SQLCode <> 0 THEN
  1088. rslt = 0
  1089. ARG_MSG = "因网络或其它原因导致更新机台生产数操作失败"+"~n"+sqlca.SQLErrText
  1090. GOTO ext
  1091. END IF
  1092. //====================================================================
  1093. // 更新机台排程状态
  1094. //====================================================================
  1095. Decimal ld_queueqty , ld_fqty
  1096. Long ll_queue
  1097. SELECT qty,
  1098. fqty,
  1099. queue
  1100. INTO :ld_queueqty,
  1101. :ld_fqty,
  1102. :ll_queue
  1103. FROM u_sc_task
  1104. Where taskid = :taskid;
  1105. IF sqlca.SQLCode <> 0 THEN
  1106. rslt = 0
  1107. ARG_MSG = '查询机台排程信息失败'
  1108. GOTO ext
  1109. END IF
  1110. //IF ld_queueqty <= ld_fqty THEN
  1111. IF iffinish = 1 THEN
  1112. Long ll_status_tmp
  1113. SELECT flag INTO :ll_status_tmp
  1114. FROM u_sc_task
  1115. Where taskid = :taskid;
  1116. IF sqlca.SQLCode <> 0 THEN
  1117. rslt = 0
  1118. ARG_MSG = '查询机台排程信息失败'
  1119. GOTO ext
  1120. END IF
  1121. IF ll_status_tmp = 1 THEN
  1122. UPDATE u_sc_task
  1123. SET flag = 4,
  1124. queue = queue - 1,
  1125. finishtime = getdate()
  1126. Where taskid = :taskid;
  1127. IF sqlca.SQLCode <> 0 THEN
  1128. rslt = 0
  1129. ARG_MSG = "因网络或其它原因导致更新机台状态操作失败"+"~n"+sqlca.SQLErrText
  1130. GOTO ext
  1131. END IF
  1132. cnt = 0
  1133. SELECT count(*) INTO :cnt
  1134. FROM u_sc_task
  1135. WHERE workgroupid = :machineid
  1136. AND flag = 1
  1137. AND queue = :ll_queue
  1138. AND Kind = 1 ;
  1139. IF sqlca.SQLCode <> 0 THEN
  1140. rslt = 0
  1141. ARG_MSG = '查询机台排程信息失败'
  1142. GOTO ext
  1143. END IF
  1144. IF cnt = 0 THEN // 同次序没有未完成的任务,则开启下一个任务
  1145. cnt = 0
  1146. SELECT count(*) INTO :cnt
  1147. FROM u_sc_task
  1148. WHERE workgroupid = :machineid
  1149. AND flag = 5
  1150. AND queue > :ll_queue
  1151. AND Kind = 1 ;
  1152. IF sqlca.SQLCode <> 0 THEN
  1153. rslt = 0
  1154. ARG_MSG = '查询机台排程信息失败'
  1155. GOTO ext
  1156. END IF
  1157. IF cnt > 0 THEN
  1158. Long ll_taskid_next
  1159. Long ll_queue_next
  1160. SELECT top 1 queue INTO :ll_queue_next
  1161. FROM u_sc_task
  1162. WHERE workgroupid = :machineid
  1163. AND flag = 5
  1164. AND queue > :ll_queue
  1165. AND kind = 1
  1166. Order By queue;
  1167. IF sqlca.SQLCode <> 0 THEN
  1168. rslt = 0
  1169. ARG_MSG = '查询机台排程信息失败'
  1170. GOTO ext
  1171. END IF
  1172. UPDATE u_sc_task
  1173. SET flag = 1,
  1174. starttime = getdate()
  1175. WHERE queue = :ll_queue_next
  1176. AND workgroupid = :machineid
  1177. AND Kind = 1
  1178. and flag = 5;
  1179. IF sqlca.SQLCode <> 0 THEN
  1180. rslt = 0
  1181. ARG_MSG = "因网络或其它原因导致更新机台状态操作失败"+"~n"+sqlca.SQLErrText
  1182. GOTO ext
  1183. END IF
  1184. UPDATE u_sc_task
  1185. SET queue = queue - 1
  1186. WHERE workgroupid = :machineid
  1187. And (flag = 0 OR flag = 5 OR flag = 1 OR flag = 3)
  1188. and kind = 1;
  1189. IF sqlca.SQLCode <> 0 THEN
  1190. rslt = 0
  1191. ARG_MSG = "更新机台序列操作失败"+"~n"+sqlca.SQLErrText
  1192. GOTO ext
  1193. END IF
  1194. END IF
  1195. END IF
  1196. END IF
  1197. END IF
  1198. //====================================================================
  1199. SELECT mtrlid ,orderqty INTO :ll_mtrlid,:ld_orderqty
  1200. FROM u_order_ml
  1201. Where u_order_ml.orderid = :orderid;
  1202. IF sqlca.SQLCode <> 0 THEN
  1203. rslt = 0
  1204. ARG_MSG = '查询生产计划失败'
  1205. GOTO ext
  1206. END IF
  1207. SELECT mtrlcode,
  1208. unit,
  1209. planprice
  1210. INTO :ls_mtrlcode,
  1211. :ls_unit,
  1212. :ld_planprice
  1213. FROM u_mtrldef
  1214. Where mtrlid = :ll_mtrlid;
  1215. IF sqlca.SQLCode <> 0 THEN
  1216. rslt = 0
  1217. ARG_MSG = '查询物料资料失败'
  1218. GOTO ext
  1219. END IF
  1220. Long rst_inwareid
  1221. //====================================================================
  1222. // 更新生产计划塑料成品总重量
  1223. //====================================================================
  1224. UPDATE u_order_ml
  1225. SET slweight = slweight + (:Weight * (:qty + :qty_bcp))/1000
  1226. Where orderid = :orderid
  1227. and scid = :scid;
  1228. IF sqlca.SQLCode <> 0 THEN
  1229. rslt = 0
  1230. ARG_MSG = '更新生产计划塑料成品总重量失败'
  1231. GOTO ext
  1232. END IF
  1233. //====================================================================
  1234. //
  1235. //if ld_planprice <= 0 then
  1236. // rslt = 0
  1237. // ARG_MSG = ls_mtrlcode + '计划价为零,不能自动生成成品进仓单!'
  1238. // GOTO ext
  1239. //END IF
  1240. //
  1241. //
  1242. //Long ll_lastflag
  1243. //SELECT lastflag
  1244. // INTO :ll_lastflag
  1245. // FROM u_sc_task
  1246. // Where taskid = :taskid;
  1247. //IF sqlca.SQLCode <> 0 THEN
  1248. // rslt = 0
  1249. // ARG_MSG = '查询相关排程是否最后工序失败'
  1250. // GOTO ext
  1251. //END IF
  1252. //
  1253. //
  1254. //IF ll_lastflag = 1 THEN
  1255. IF p_create_inware(ARG_MSG,FALSE) = 0 THEN
  1256. rslt = 0
  1257. GOTO ext
  1258. END IF
  1259. //END IF
  1260. //====================================================================
  1261. ext:
  1262. IF rslt = 0 THEN
  1263. ROLLBACK ;
  1264. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1265. COMMIT ;
  1266. END IF
  1267. RETURN rslt
  1268. end function
  1269. public function integer caudit (long arg_collectid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
  1270. DateTime nulldate
  1271. SetNull(nulldate)
  1272. IF arg_collectid <= 0 THEN
  1273. rslt = 0
  1274. ARG_MSG = '错误质检单唯一码'
  1275. GOTO ext
  1276. END IF
  1277. IF p_getinfo(arg_collectid,ARG_MSG) = 0 THEN
  1278. rslt = 0
  1279. GOTO ext
  1280. END IF
  1281. IF flag <> 1 THEN
  1282. rslt = 0
  1283. ARG_MSG = '质检单只有在已仓审状态下才能仓库撤审,请核对'
  1284. GOTO ext
  1285. END IF
  1286. UPDATE u_data_collect
  1287. SET flag = 0,
  1288. auditrep = '',
  1289. auditdate = :nulldate
  1290. Where collectid = :arg_collectid ;
  1291. IF sqlca.SQLCode <> 0 THEN
  1292. rslt = 0
  1293. ARG_MSG = "因网络或其它原因导致质检单撤消仓库审核操作失败"+"~n"+sqlca.SQLErrText
  1294. GOTO ext
  1295. END IF
  1296. UPDATE u_sc_task
  1297. SET fqty = fqty - :qty - :qty_bcp
  1298. Where taskid = :taskid;
  1299. IF sqlca.SQLCode <> 0 THEN
  1300. rslt = 0
  1301. ARG_MSG = "因网络或其它原因导致更新机台已生产数操作失败"+"~n"+sqlca.SQLErrText
  1302. GOTO ext
  1303. END IF
  1304. it_newbegin = FALSE
  1305. it_updatebegin = FALSE
  1306. //update u_sc_task
  1307. //set status = 2
  1308. //where orderid = :orderid and machineid = :machineid and teamorder = :teamorder;
  1309. //if sqlca.sqlcode <> 0 then
  1310. // rslt = 0
  1311. // arg_msg = "因网络或其它原因导致更新机台状态操作失败"+"~n"+sqlca.SQLErrText
  1312. // goto ext
  1313. //end if
  1314. //====================================================================
  1315. // 更新生产计划塑料成品总重量
  1316. //====================================================================
  1317. UPDATE u_order_ml
  1318. SET slweight = slweight - (:Weight * :qty )/1000
  1319. WHERE orderid = :orderid
  1320. AND scid = :scid;
  1321. IF sqlca.SQLCode <> 0 THEN
  1322. rslt = 0
  1323. ARG_MSG = '更新生产计划塑料成品总重量失败'
  1324. GOTO ext
  1325. END IF
  1326. //====================================================================
  1327. //====================================================================
  1328. // 删除自动建立的成品进仓单
  1329. //====================================================================
  1330. IF p_del_inware(ARG_MSG,FALSE) = 0 THEN
  1331. rslt = 0
  1332. GOTO ext
  1333. END IF
  1334. ext:
  1335. IF rslt = 0 THEN
  1336. ROLLBACK;
  1337. ELSEIF arg_ifcommit AND rslt = 1 THEN
  1338. COMMIT ;
  1339. END IF
  1340. p_reset()
  1341. Return (rslt)
  1342. end function
  1343. public function integer gzaudit (long arg_collectid, string arg_emp, ref string arg_msg, boolean arg_ifcommit);//工资审
  1344. Int rslt = 1,cnt = 0
  1345. Long ll_mtrlid
  1346. String ls_mtrlcode,ls_unit
  1347. DateTime server_dt,ldt_collectdate
  1348. Decimal ld_orderqty
  1349. Decimal ld_planprice
  1350. uo_abnormity_dq = Create uo_abnormity
  1351. IF arg_collectid <= 0 THEN
  1352. rslt = 0
  1353. ARG_MSG = '错误质检单唯一码'
  1354. GOTO ext
  1355. END IF
  1356. SELECT Top 1 getdate() Into :server_dt From u_user ;
  1357. //取得系统时间,借用操作员表
  1358. IF sqlca.SQLCode <> 0 THEN
  1359. rslt = 0
  1360. ARG_MSG = "查询操作失败,日期 "
  1361. GOTO ext
  1362. END IF
  1363. IF getinfo(arg_collectid,ARG_MSG) = 0 THEN
  1364. rslt = 0
  1365. GOTO ext
  1366. END IF
  1367. IF it_mxbt2 <= 0 THEN
  1368. rslt = 0
  1369. ARG_MSG = '质检单没有员工生产信息明细内容,不能工资审,请检查!'
  1370. GOTO ext
  1371. END IF
  1372. IF flag = 2 THEN
  1373. rslt = 0
  1374. ARG_MSG = '质检单已经完成审核,操作取消'
  1375. GOTO ext
  1376. ELSEIF flag = 0 THEN
  1377. rslt = 0
  1378. ARG_MSG = '质检单还没有进行仓审,不能执行工资审'
  1379. GOTO ext
  1380. END IF
  1381. cnt = 0
  1382. SELECT count(*) INTO :cnt
  1383. FROM u_user
  1384. Where username = :arg_emp ;
  1385. IF sqlca.SQLCode <> 0 THEN
  1386. rslt = 0
  1387. ARG_MSG = "查询操作失败,操作员!"
  1388. GOTO ext
  1389. END IF
  1390. IF cnt = 0 THEN
  1391. rslt = 0
  1392. ARG_MSG = "操作员姓名未登记或已取消!"
  1393. GOTO ext
  1394. END IF
  1395. //yyx2013-10-26
  1396. SELECT top 1 u_data_collectmx.collectdate
  1397. INTO :ldt_collectdate
  1398. FROM u_data_collectmx
  1399. WHERE u_data_collectmx.collectid = :arg_collectid
  1400. Order By u_data_collectmx.printid;
  1401. IF sqlca.SQLCode <> 0 THEN
  1402. ARG_MSG = '查询质检明细第1行质检日期失败,'+sqlca.SQLErrText
  1403. rslt = 0
  1404. GOTO ext
  1405. END IF
  1406. //
  1407. UPDATE u_data_collect
  1408. SET flag = 2 ,
  1409. gzauditrep = :arg_emp,
  1410. gzauditdate = getdate()
  1411. Where collectid = :arg_collectid ;
  1412. IF sqlca.SQLCode <> 0 THEN
  1413. rslt = 0
  1414. ARG_MSG = "因网络或其它原因导致质检单工资审核操作失败"+"~n"+sqlca.SQLErrText
  1415. GOTO ext
  1416. END IF
  1417. // //====================================================================
  1418. //// 自动生成计件单
  1419. ////====================================================================
  1420. Long ll_ds_rowcount,ls_i,ls_j
  1421. datastore ds_wagemx
  1422. ds_wagemx = Create datastore
  1423. ds_wagemx.DataObject = "dw_data_wage"
  1424. ds_wagemx.SetTransObject(sqlca)
  1425. ds_wagemx.Retrieve(arg_collectid)
  1426. ll_ds_rowcount = ds_wagemx.RowCount()
  1427. IF ll_ds_rowcount <= 0 THEN
  1428. rslt = 0
  1429. ARG_MSG = '没有员工计件明细内容!!'
  1430. GOTO ext
  1431. END IF
  1432. //====================================================================
  1433. // 自动生成其他计件单
  1434. //====================================================================
  1435. Long ll_pid = 1
  1436. IF uo_abnormity_dq.newbegin(scid,ARG_MSG) = 0 THEN
  1437. rslt = 0
  1438. GOTO ext
  1439. END IF
  1440. uo_abnormity_dq.wageid = wageid_other
  1441. uo_abnormity_dq.dscrp = '质检单 '+ collectcode +' 自动生成'
  1442. uo_abnormity_dq.relcode = collectcode
  1443. uo_abnormity_dq.billdate = ldt_collectdate
  1444. uo_abnormity_dq.ifzj = 1
  1445. uo_abnormity_dq.zjid = collectid
  1446. uo_abnormity_dq.wagemth = Long(String(ldt_collectdate,'yyyymm'))
  1447. FOR ls_j = 1 To ll_ds_rowcount
  1448. IF ds_wagemx.Object.empid[ls_j] > 0 THEN
  1449. IF ds_wagemx.Object.cp_price[ls_j] > 0 THEN
  1450. IF uo_abnormity_dq.acceptmx(ds_wagemx.Object.empid[ls_j],&
  1451. ds_wagemx.Object.empcode[ls_j],&
  1452. ds_wagemx.Object.empname[ls_j],&
  1453. ds_wagemx.Object.cp_qty[ls_j],&
  1454. ds_wagemx.Object.cp_price[ls_j] / ds_wagemx.Object.cp_qty[ls_j],&
  1455. '成品工资',&
  1456. ARG_MSG,&
  1457. ll_pid,&
  1458. '','','') = 0 THEN
  1459. MessageBox('error!',ARG_MSG)
  1460. rslt = 0
  1461. GOTO ext
  1462. END IF
  1463. ll_pid = ll_pid + 1
  1464. END IF
  1465. IF ds_wagemx.Object.bcp_price[ls_j] > 0 THEN
  1466. IF uo_abnormity_dq.acceptmx(ds_wagemx.Object.empid[ls_j],&
  1467. ds_wagemx.Object.empcode[ls_j],&
  1468. ds_wagemx.Object.empname[ls_j],&
  1469. ds_wagemx.Object.bcp_qty[ls_j],&
  1470. ds_wagemx.Object.bcp_price[ls_j] / ds_wagemx.Object.bcp_qty[ls_j],&
  1471. '半成品工资',&
  1472. ARG_MSG,&
  1473. ll_pid,&
  1474. '','','') = 0 THEN
  1475. MessageBox('error!',ARG_MSG)
  1476. rslt = 0
  1477. GOTO ext
  1478. END IF
  1479. ll_pid = ll_pid + 1
  1480. END IF
  1481. IF ds_wagemx.Object.awardprice[ls_j] > 0 THEN
  1482. IF uo_abnormity_dq.acceptmx(ds_wagemx.Object.empid[ls_j],&
  1483. ds_wagemx.Object.empcode[ls_j],&
  1484. ds_wagemx.Object.empname[ls_j],&
  1485. 1,&
  1486. ds_wagemx.Object.awardprice[ls_j],&
  1487. '奖金',&
  1488. ARG_MSG,&
  1489. ll_pid,&
  1490. '','','') = 0 THEN
  1491. MessageBox('error!',ARG_MSG)
  1492. rslt = 0
  1493. GOTO ext
  1494. END IF
  1495. ll_pid = ll_pid + 1
  1496. END IF
  1497. IF ds_wagemx.Object.stantby_price[ls_j] > 0 THEN
  1498. IF uo_abnormity_dq.acceptmx(ds_wagemx.Object.empid[ls_j],&
  1499. ds_wagemx.Object.empcode[ls_j],&
  1500. ds_wagemx.Object.empname[ls_j],&
  1501. 1,&
  1502. ds_wagemx.Object.stantby_price[ls_j],&
  1503. '待机补贴',&
  1504. ARG_MSG,&
  1505. ll_pid,&
  1506. '','','') = 0 THEN
  1507. MessageBox('error!',ARG_MSG)
  1508. rslt = 0
  1509. GOTO ext
  1510. END IF
  1511. ll_pid = ll_pid + 1
  1512. END IF
  1513. IF ds_wagemx.Object.zx_price[ls_j] * ds_wagemx.Object.zx_qty[ls_j] > 0 THEN
  1514. IF uo_abnormity_dq.acceptmx(ds_wagemx.Object.empid[ls_j],&
  1515. ds_wagemx.Object.empcode[ls_j],&
  1516. ds_wagemx.Object.empname[ls_j],&
  1517. ds_wagemx.Object.zx_qty[ls_j],&
  1518. ds_wagemx.Object.zx_price[ls_j],&
  1519. '杂项工资',&
  1520. ARG_MSG,&
  1521. ll_pid,&
  1522. '','','') = 0 THEN
  1523. MessageBox('error!',ARG_MSG)
  1524. rslt = 0
  1525. GOTO ext
  1526. END IF
  1527. ll_pid = ll_pid + 1
  1528. END IF
  1529. IF ds_wagemx.Object.u_data_wage_price_add[ls_j] * ds_wagemx.Object.u_data_wage_qty_add[ls_j] > 0 THEN
  1530. IF uo_abnormity_dq.acceptmx(ds_wagemx.Object.empid[ls_j],&
  1531. ds_wagemx.Object.empcode[ls_j],&
  1532. ds_wagemx.Object.empname[ls_j],&
  1533. ds_wagemx.Object.u_data_wage_qty_add[ls_j],&
  1534. ds_wagemx.Object.u_data_wage_price_add[ls_j],&
  1535. '工序工资',&
  1536. ARG_MSG,&
  1537. ll_pid,&
  1538. '',&
  1539. ds_wagemx.Object.u_data_wage_proname_add[ls_j],&
  1540. '') = 0 THEN
  1541. MessageBox('error!',ARG_MSG)
  1542. rslt = 0
  1543. GOTO ext
  1544. END IF
  1545. ll_pid = ll_pid + 1
  1546. END IF
  1547. END IF
  1548. NEXT
  1549. IF uo_abnormity_dq.Save(ARG_MSG,False) = 0 THEN
  1550. rslt = 0
  1551. GOTO ext
  1552. END IF
  1553. ext:
  1554. IF rslt = 0 THEN
  1555. ROLLBACK ;
  1556. ELSEIF rslt = 1 And arg_ifcommit THEN
  1557. COMMIT ;
  1558. END IF
  1559. Destroy uo_abnormity_dq
  1560. RETURN rslt
  1561. end function
  1562. public function integer cgzaudit (long arg_collectid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
  1563. DateTime nulldate
  1564. uo_abnormity_dq = CREATE uo_abnormity
  1565. SetNull(nulldate)
  1566. IF arg_collectid <= 0 THEN
  1567. rslt = 0
  1568. ARG_MSG = '错误质检单唯一码'
  1569. GOTO ext
  1570. END IF
  1571. IF p_getinfo(arg_collectid,ARG_MSG) = 0 THEN
  1572. rslt = 0
  1573. GOTO ext
  1574. END IF
  1575. IF flag <> 2 THEN
  1576. rslt = 0
  1577. ARG_MSG = '质检单只有在已工资审状态下才能工资撤审,请核对'
  1578. GOTO ext
  1579. END IF
  1580. UPDATE u_data_collect
  1581. SET flag = 1,
  1582. gzauditrep = '',
  1583. gzauditdate = :nulldate
  1584. Where collectid = :arg_collectid ;
  1585. IF sqlca.SQLCode <> 0 THEN
  1586. rslt = 0
  1587. ARG_MSG = "因网络或其它原因导致质检单撤消工资审核操作失败"+"~n"+sqlca.SQLErrText
  1588. GOTO ext
  1589. END IF
  1590. it_newbegin = FALSE
  1591. it_updatebegin = FALSE
  1592. //====================================================================
  1593. // 删除自动建立的其他计件单
  1594. //====================================================================
  1595. Long i
  1596. Long ll_cnt_other
  1597. SELECT count(*) INTO :ll_cnt_other
  1598. FROM u_sc_abnormity
  1599. Where zjid = :collectid AND ifzj = 1;
  1600. IF sqlca.SQLCode <> 0 THEN
  1601. rslt = 0
  1602. ARG_MSG = '查询自动建立的其它计件单失败'
  1603. GOTO ext
  1604. END IF
  1605. IF ll_cnt_other > 0 THEN
  1606. Long ll_billid_other[],ll_flag_other[],it_max_other
  1607. it_max_other = 1
  1608. DECLARE cur_mx CURSOR FOR
  1609. SELECT billid,auditingflag
  1610. FROM u_sc_abnormity
  1611. Where zjid = :collectid AND ifzj = 1;
  1612. OPEN cur_mx;
  1613. FETCH cur_mx INTO :ll_billid_other[it_max_other],:ll_flag_other[it_max_other];
  1614. DO WHILE sqlca.SQLCode = 0
  1615. it_max_other++
  1616. FETCH cur_mx INTO :ll_billid_other[it_max_other],:ll_flag_other[it_max_other];
  1617. LOOP
  1618. CLOSE cur_mx;
  1619. IF it_max_other - 1 <> ll_cnt_other THEN
  1620. rslt = 0
  1621. ARG_MSG = '查询其它计件单已审核,不能删除'
  1622. GOTO ext
  1623. END IF
  1624. FOR i = 1 TO ll_cnt_other
  1625. IF ll_flag_other[i] <> 0 THEN
  1626. rslt = 0
  1627. ARG_MSG = '自动建立的其它计件单已审核,不能删除'
  1628. GOTO ext
  1629. END IF
  1630. IF uo_abnormity_dq.del(scid,ll_billid_other[i],ARG_MSG,FALSE) = 0 THEN
  1631. rslt = 0
  1632. GOTO ext
  1633. END IF
  1634. NEXT
  1635. END IF
  1636. ext:
  1637. IF rslt = 0 THEN
  1638. ROLLBACK;
  1639. ELSEIF arg_ifcommit AND rslt = 1 THEN
  1640. COMMIT ;
  1641. END IF
  1642. DESTROY uo_abnormity_dq
  1643. p_reset()
  1644. Return (rslt)
  1645. end function
  1646. public function integer p_create_inware (ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1647. Long ll_mtrlid,ll_orderid,ll_balctype,ll_cusid,ll_ref_inwareid
  1648. String ls_status,ls_woodcode,ls_pcode,ls_mtrlcode,ls_unit,ls_ref_inwarecode
  1649. String ls_plancode,ls_mtrlcuscode
  1650. DateTime server_dt
  1651. Decimal ld_planprice
  1652. Long ll_dftwrkGrpid
  1653. SELECT Top 1 getdate() INTO :server_dt FROM u_user;
  1654. IF sqlca.SQLCode <> 0 THEN
  1655. rslt = 0
  1656. arg_msg = "查询操作失败,日期 "
  1657. GOTO ext
  1658. END IF
  1659. uo_inware uo_ware
  1660. uo_ware = CREATE uo_inware
  1661. uo_ware.commit_transaction = sqlca
  1662. uo_ware.if_getid_ture = FALSE
  1663. SELECT u_sc_task.mtrlid,
  1664. u_sc_task.status,
  1665. u_sc_task.woodcode,
  1666. u_sc_task.pcode,
  1667. u_mtrldef.mtrlcode,
  1668. u_sc_task.orderid,
  1669. u_mtrldef.unit,
  1670. u_mtrldef.dftwrkGrpid
  1671. INTO :ll_mtrlid,
  1672. :ls_status,
  1673. :ls_woodcode,
  1674. :ls_pcode,
  1675. :ls_mtrlcode,
  1676. :ll_orderid,
  1677. :ls_unit,
  1678. :ll_dftwrkGrpid
  1679. FROM u_sc_task,u_mtrldef
  1680. WHERE u_sc_task.mtrlid = u_mtrldef.mtrlid AND
  1681. taskid = :taskid;
  1682. IF sqlca.SQLCode <> 0 THEN
  1683. rslt = 0
  1684. arg_msg = '查询机台排程资料失败'
  1685. GOTO ext
  1686. END IF
  1687. f_get_planprice_mtrl(ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ld_planprice)
  1688. SELECT balctype
  1689. INTO :ll_balctype
  1690. FROM u_storage
  1691. Where storageid = :storageid;
  1692. IF sqlca.SQLCode <> 0 THEN
  1693. rslt = 0
  1694. arg_msg = '查询仓库资料失败'
  1695. GOTO ext
  1696. END IF
  1697. IF ll_balctype = 1 THEN
  1698. IF uof_find_cust(scid,orderid,ll_cusid,ls_plancode,ls_mtrlcuscode,arg_msg) = 0 THEN
  1699. rslt = 0
  1700. GOTO ext
  1701. END IF
  1702. END IF
  1703. IF uo_ware.newbegin(scid,3,arg_msg) = 0 THEN
  1704. rslt = 0
  1705. GOTO ext
  1706. END IF
  1707. uo_ware.indate = server_dt
  1708. uo_ware.inrep = publ_operator
  1709. uo_ware.part = collectcode
  1710. uo_ware.dscrp = '由质检单 '+ collectcode +' 自动生成'
  1711. uo_ware.storageid = storageid
  1712. uo_ware.sptname = ''
  1713. uo_ware.relid = ll_dftwrkGrpid
  1714. uo_ware.relint_1 = collectid
  1715. uo_ware.mrate = 1
  1716. IF ll_mtrlid > 0 AND qty > 0 THEN
  1717. IF uo_ware.acceptmx(1,&
  1718. ll_mtrlid,&
  1719. ls_mtrlcode,&
  1720. ls_plancode,&
  1721. ls_status,&
  1722. qty,&
  1723. ld_planprice,&
  1724. 1,&
  1725. dscrp,&
  1726. arg_msg,&
  1727. 0,&
  1728. orderid,&
  1729. 1,&
  1730. ls_woodcode,&
  1731. ls_pcode,&
  1732. ll_cusid,&
  1733. ls_unit,&
  1734. 1,qty,0,0,'','',0,0,ls_mtrlcuscode,'',&
  1735. qty,&
  1736. 0) = 0 THEN
  1737. rslt = 0
  1738. GOTO ext
  1739. END IF
  1740. IF uo_ware.Save(FALSE,arg_msg) = 0 THEN
  1741. rslt = 0
  1742. GOTO ext
  1743. END IF
  1744. END IF
  1745. IF qty_bcp > 0 THEN
  1746. SELECT balctype
  1747. INTO :ll_balctype
  1748. FROM u_storage
  1749. Where storageid = :storageid_bcp;
  1750. IF sqlca.SQLCode <> 0 THEN
  1751. rslt = 0
  1752. arg_msg = '查询仓库资料失败'
  1753. GOTO ext
  1754. END IF
  1755. IF ll_balctype = 1 THEN
  1756. IF uof_find_cust(scid,orderid,ll_cusid,ls_plancode,ls_mtrlcuscode,arg_msg) = 0 THEN
  1757. rslt = 0
  1758. GOTO ext
  1759. END IF
  1760. END IF
  1761. IF uo_ware.newbegin(scid,3,arg_msg) = 0 THEN
  1762. rslt = 0
  1763. GOTO ext
  1764. END IF
  1765. uo_ware.indate = server_dt
  1766. uo_ware.inrep = publ_operator
  1767. uo_ware.part = collectcode
  1768. uo_ware.dscrp = '由质检单 '+ collectcode +' 自动生成'
  1769. uo_ware.storageid = storageid_bcp
  1770. uo_ware.sptname = ''
  1771. uo_ware.relid = ll_dftwrkGrpid
  1772. uo_ware.relint_1 = collectid
  1773. uo_ware.mrate = 1
  1774. IF ll_mtrlid > 0 THEN
  1775. IF uo_ware.acceptmx(1,&
  1776. ll_mtrlid,&
  1777. ls_mtrlcode,&
  1778. ls_plancode,&
  1779. ls_status,&
  1780. qty_bcp,&
  1781. ld_planprice,&
  1782. 1,&
  1783. dscrp,&
  1784. arg_msg,&
  1785. 0,&
  1786. orderid,&
  1787. 1,&
  1788. ls_woodcode,&
  1789. ls_pcode,&
  1790. ll_cusid,&
  1791. ls_unit,&
  1792. 1,qty_bcp,0,0,'','',0,0,ls_mtrlcuscode,'',&
  1793. qty_bcp,&
  1794. 0) = 0 THEN
  1795. rslt = 0
  1796. GOTO ext
  1797. END IF
  1798. END IF
  1799. IF uo_ware.Save(FALSE,arg_msg) = 0 THEN
  1800. rslt = 0
  1801. GOTO ext
  1802. END IF
  1803. END IF
  1804. ext:
  1805. DESTROY uo_ware
  1806. IF rslt = 0 THEN
  1807. ROLLBACK ;
  1808. ELSEIF arg_ifcommit AND rslt = 1 THEN
  1809. COMMIT ;
  1810. END IF
  1811. RETURN rslt
  1812. end function
  1813. public function integer uof_find_cust (long arg_scid, long arg_orderid, ref long arg_cusid, ref string arg_plancode, ref string arg_mtrlcuscode, ref string arg_msg);Int rslt = 1
  1814. IF uo_option_inware_mtrlcuscode = -1000 THEN
  1815. rslt = 0
  1816. arg_msg = '选项:[138]生产进仓单产品批号策略按指令单号,读取初始默认值失败,操作取消!'
  1817. GOTO ext
  1818. END IF
  1819. IF uo_option_taskplancode = -1000 THEN
  1820. rslt = 0
  1821. arg_msg = '选项:[038]使用客户批号库存,读取初始默认值失败,操作取消!'
  1822. GOTO ext
  1823. END IF
  1824. Long li_ordertype,cnt
  1825. Long ll_cusid
  1826. String ls_cuscode,ls_cusname,ls_plancode
  1827. Long ll_mtrlid,ll_mtrlid_p,ll_porderid
  1828. Boolean lb_ifsameorder
  1829. Int li_ifmtrlcuscode
  1830. String ls_ordercode
  1831. SELECT ordercode,
  1832. ordertype,
  1833. mtrlid,
  1834. porderid
  1835. INTO :ls_ordercode,
  1836. :li_ordertype,
  1837. :ll_mtrlid,
  1838. :ll_porderid
  1839. FROM u_order_ml
  1840. WHERE scid = :arg_scid
  1841. AND orderid = :arg_orderid;
  1842. IF sqlca.SQLCode <> 0 THEN
  1843. rslt = 0
  1844. arg_msg = '查询指令单相关信息失败,'+sqlca.SQLErrText
  1845. GOTO ext
  1846. END IF
  1847. IF li_ordertype = 0 THEN
  1848. ll_cusid = 0
  1849. GOTO ext
  1850. END IF
  1851. SELECT count(*) INTO :cnt
  1852. FROM u_order_ml_mx
  1853. WHERE orderid = :arg_orderid
  1854. AND scid = :arg_scid;
  1855. IF sqlca.SQLCode <> 0 THEN
  1856. rslt = 0
  1857. arg_msg = '查询指令单相关信息失败,'+sqlca.SQLErrText
  1858. GOTO ext
  1859. END IF
  1860. IF cnt <> 1 THEN
  1861. ll_cusid = 0
  1862. GOTO ext
  1863. END IF
  1864. SELECT ifmtrlcuscode INTO :li_ifmtrlcuscode
  1865. FROM u_mtrldef
  1866. Where mtrlid = :ll_mtrlid;
  1867. IF sqlca.SQLCode <> 0 THEN
  1868. rslt = 0
  1869. arg_msg = '查询物料是否使用产品批号属性失败,'+sqlca.SQLErrText
  1870. GOTO ext
  1871. END IF
  1872. IF uo_option_inware_mtrlcuscode = 1 AND li_ifmtrlcuscode = 1 THEN
  1873. arg_mtrlcuscode = ls_ordercode
  1874. ELSE
  1875. arg_mtrlcuscode = ''
  1876. END IF
  1877. IF li_ordertype = 4 THEN
  1878. SELECT mtrlid INTO :ll_mtrlid_p
  1879. FROM u_order_ml
  1880. WHERE scid = :arg_scid
  1881. AND orderid = :ll_porderid;
  1882. IF sqlca.SQLCode <> 0 THEN
  1883. rslt = 0
  1884. arg_msg = '查询指令单相关信息失败,'+sqlca.SQLErrText
  1885. GOTO ext
  1886. END IF
  1887. IF ll_mtrlid_p = ll_mtrlid THEN
  1888. lb_ifsameorder = TRUE
  1889. SELECT u_cust.cusid,
  1890. u_cust.cuscode,
  1891. u_cust.name,
  1892. u_order_ml.taskrelcode
  1893. INTO
  1894. :ll_cusid,
  1895. :ls_cuscode,
  1896. :ls_cusname,
  1897. :ls_plancode
  1898. FROM u_cust,u_order_ml
  1899. WHERE u_cust.cusid = u_order_ml.cusid
  1900. AND u_order_ml.scid = :arg_scid
  1901. AND u_order_ml.orderid = :ll_porderid;
  1902. IF sqlca.SQLCode <> 0 THEN
  1903. rslt = 0
  1904. arg_msg = '查询指令单相关信息失败,'+sqlca.SQLErrText
  1905. GOTO ext
  1906. END IF
  1907. END IF
  1908. ELSE
  1909. SELECT u_cust.cusid,
  1910. u_cust.cuscode,
  1911. u_cust.name,
  1912. u_order_ml.taskrelcode
  1913. INTO
  1914. :ll_cusid,
  1915. :ls_cuscode,
  1916. :ls_cusname,
  1917. :ls_plancode
  1918. FROM u_cust,u_order_ml
  1919. WHERE u_cust.cusid = u_order_ml.cusid
  1920. AND u_order_ml.scid = :arg_scid
  1921. AND u_order_ml.orderid = :arg_orderid;
  1922. IF sqlca.SQLCode <> 0 THEN
  1923. rslt = 0
  1924. arg_msg = '查询指令单相关信息失败,'+sqlca.SQLErrText
  1925. GOTO ext
  1926. END IF
  1927. END IF
  1928. IF lb_ifsameorder AND uo_option_taskplancode = 1 THEN
  1929. arg_plancode = ls_plancode
  1930. ELSE
  1931. arg_plancode = ''
  1932. END IF
  1933. ext:
  1934. arg_cusid = ll_cusid
  1935. RETURN rslt
  1936. end function
  1937. public function integer p_del_inware (ref string arg_msg, boolean arg_ifcommit);int rslt = 1
  1938. long ll_inwareid[]
  1939. long i = 1,j
  1940. uo_inware uo_ware
  1941. uo_ware = CREATE uo_inware
  1942. uo_ware.commit_transaction = sqlca
  1943. uo_ware.if_getid_ture = FALSE
  1944. DECLARE cur_inware CURSOR FOR
  1945. SELECT inwareid
  1946. FROM u_inware
  1947. Where relint_1 = :collectid
  1948. and scid = :scid
  1949. and billtype = 3;
  1950. OPEN cur_inware;
  1951. FETCH cur_inware INTO :ll_inwareid[i];
  1952. DO WHILE sqlca.SQLCode = 0
  1953. i++
  1954. FETCH cur_inware INTO :ll_inwareid[i];
  1955. LOOP
  1956. CLOSE cur_inware;
  1957. FOR j = 1 TO i - 1
  1958. IF uo_ware.del(scid,ll_inwareid[j],ARG_MSG,FALSE) = 0 THEN
  1959. rslt = 0
  1960. GOTO ext
  1961. END IF
  1962. NEXT
  1963. ext:
  1964. IF rslt = 0 THEN
  1965. ROLLBACK ;
  1966. ELSEIF arg_ifcommit AND rslt = 1 THEN
  1967. COMMIT ;
  1968. END IF
  1969. DESTROY uo_ware
  1970. RETURN rslt
  1971. end function
  1972. public function integer acceptmx_wage (long arg_empid, string arg_empcode, string arg_empname, string arg_procode, string arg_proname, decimal arg_cp_qty, decimal arg_workprice, decimal arg_awardprice, decimal arg_stantby_price, decimal arg_bcp_qty, decimal arg_zx_qty, decimal arg_zx_price, string arg_dscrp, long arg_printid, string arg_procode_add, string arg_proname_add, decimal arg_price_add, decimal arg_qty_add, ref string arg_msg);Long rslt = 1
  1973. IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
  1974. rslt = 0
  1975. arg_msg = "非编辑状态不可以使用,操作取消"
  1976. GOTO ext
  1977. END IF
  1978. IF IsNull(arg_empid) THEN arg_empid = 0
  1979. IF IsNull(arg_empcode) THEN arg_empcode = ''
  1980. IF IsNull(arg_empname) THEN arg_empname = ''
  1981. IF IsNull(arg_procode) THEN arg_procode = ''
  1982. IF IsNull(arg_proname) THEN arg_proname = ''
  1983. IF IsNull(arg_cp_qty) THEN arg_cp_qty = 0
  1984. IF IsNull(arg_workprice) THEN arg_workprice = 0
  1985. IF IsNull(arg_awardprice) THEN arg_awardprice = 0
  1986. IF IsNull(arg_stantby_price) THEN arg_stantby_price = 0
  1987. IF IsNull(arg_bcp_qty) THEN arg_bcp_qty = 0
  1988. IF IsNull(arg_zx_qty) THEN arg_zx_qty = 0
  1989. IF IsNull(arg_zx_price) THEN arg_zx_price = 0
  1990. IF IsNull(arg_dscrp) THEN arg_dscrp = ''
  1991. IF IsNull(arg_printid) THEN arg_printid = 0
  1992. IF IsNull(arg_procode_add) THEN arg_procode_add = ''
  1993. IF IsNull(arg_proname_add) THEN arg_proname_add = ''
  1994. IF IsNull(arg_price_add) THEN arg_price_add = 0
  1995. IF IsNull(arg_qty_add) THEN arg_qty_add = 0
  1996. IF Trim(arg_empcode) = '' OR arg_empid = 0 THEN
  1997. rslt = 0
  1998. arg_msg = '员工信息不能为空'
  1999. GOTO ext
  2000. END IF
  2001. it_mxbt2++
  2002. wagemx[it_mxbt2].empid = arg_empid
  2003. wagemx[it_mxbt2].empcode = arg_empcode
  2004. wagemx[it_mxbt2].procode = arg_procode
  2005. wagemx[it_mxbt2].proname = arg_proname
  2006. wagemx[it_mxbt2].cp_qty = arg_cp_qty
  2007. wagemx[it_mxbt2].workprice = arg_workprice
  2008. wagemx[it_mxbt2].awardprice = arg_awardprice
  2009. wagemx[it_mxbt2].stantby_price = arg_stantby_price
  2010. wagemx[it_mxbt2].bcp_qty = arg_bcp_qty
  2011. wagemx[it_mxbt2].zx_qty = arg_zx_qty
  2012. wagemx[it_mxbt2].zx_price = arg_zx_price
  2013. wagemx[it_mxbt2].dscrp = arg_dscrp
  2014. wagemx[it_mxbt2].printid = arg_printid
  2015. wagemx[it_mxbt2].empname = arg_empname
  2016. IF period * modelqty * squadtime <> 0 THEN
  2017. wagemx[it_mxbt2].cp_wage = arg_workprice / ( 3600 / period * modelqty * squadtime ) * arg_cp_qty
  2018. wagemx[it_mxbt2].bcp_wage = arg_workprice / ( 3600 / period * modelqty * squadtime ) * arg_bcp_qty * semi_discount
  2019. ELSE
  2020. wagemx[it_mxbt2].cp_wage = 0
  2021. wagemx[it_mxbt2].bcp_wage = 0
  2022. END IF
  2023. wagemx[it_mxbt2].zx_wage = arg_zx_price * arg_zx_qty
  2024. wagemx[it_mxbt2].procode_add = arg_procode_add
  2025. wagemx[it_mxbt2].proname_add = arg_proname_add
  2026. wagemx[it_mxbt2].price_add = arg_price_add
  2027. wagemx[it_mxbt2].qty_add = arg_qty_add
  2028. ext:
  2029. IF rslt = 0 THEN p_clearmx()
  2030. Return (rslt)
  2031. end function
  2032. on uo_data_collect.create
  2033. call super::create
  2034. TriggerEvent( this, "constructor" )
  2035. end on
  2036. on uo_data_collect.destroy
  2037. TriggerEvent( this, "destructor" )
  2038. call super::destroy
  2039. end on
  2040. event constructor;String str_optionvalue,arg_msg
  2041. f_get_sys_option_value('138',str_optionvalue,arg_msg)
  2042. uo_option_inware_mtrlcuscode = Long(str_optionvalue)
  2043. f_get_sys_option_value('038',str_optionvalue,arg_msg)
  2044. uo_option_taskplancode = Long(str_optionvalue)
  2045. end event