w_order_ml_mrp.srw 67 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299
  1. $PBExportHeader$w_order_ml_mrp.srw
  2. forward
  3. global type w_order_ml_mrp from w_publ_base
  4. end type
  5. type dw_1 from u_dw_rbtnfilter within w_order_ml_mrp
  6. end type
  7. type cb_save from uo_imflatbutton within w_order_ml_mrp
  8. end type
  9. type cb_re_cmpl from uo_imflatbutton within w_order_ml_mrp
  10. end type
  11. type cb_lock from uo_imflatbutton within w_order_ml_mrp
  12. end type
  13. type ln_bar from line within w_order_ml_mrp
  14. end type
  15. type ln_bar2 from line within w_order_ml_mrp
  16. end type
  17. type r_bar from rectangle within w_order_ml_mrp
  18. end type
  19. type cb_cmpl from uo_imflatbutton within w_order_ml_mrp
  20. end type
  21. type cb_undo from uo_imflatbutton within w_order_ml_mrp
  22. end type
  23. type cb_copyrow from uo_imflatbutton within w_order_ml_mrp
  24. end type
  25. type cbx_if_allowuse from checkbox within w_order_ml_mrp
  26. end type
  27. type cb_change from uo_imflatbutton within w_order_ml_mrp
  28. end type
  29. type st_dscrp from statictext within w_order_ml_mrp
  30. end type
  31. type cb_change_pz from uo_imflatbutton within w_order_ml_mrp
  32. end type
  33. type cb_cancel_scll from uo_imflatbutton within w_order_ml_mrp
  34. end type
  35. type cbx_ifwx_mtrl_not_useqty from checkbox within w_order_ml_mrp
  36. end type
  37. type cb_sort from uo_imflatbutton within w_order_ml_mrp
  38. end type
  39. type cb_help from uo_imflatbutton within w_order_ml_mrp
  40. end type
  41. type cbx_ifbuy_mtrl_not_useqty from checkbox within w_order_ml_mrp
  42. end type
  43. type em_1 from editmask within w_order_ml_mrp
  44. end type
  45. type st_1 from statictext within w_order_ml_mrp
  46. end type
  47. type ln_1 from line within w_order_ml_mrp
  48. end type
  49. type ln_2 from line within w_order_ml_mrp
  50. end type
  51. type ln_3 from line within w_order_ml_mrp
  52. end type
  53. type ln_4 from line within w_order_ml_mrp
  54. end type
  55. end forward
  56. global type w_order_ml_mrp from w_publ_base
  57. integer width = 3621
  58. integer height = 2460
  59. string title = "用料运算"
  60. boolean minbox = false
  61. windowtype windowtype = response!
  62. windowstate windowstate = maximized!
  63. event ue_sort_1 ( )
  64. event ue_sort_2 ( )
  65. event ue_help ( )
  66. dw_1 dw_1
  67. cb_save cb_save
  68. cb_re_cmpl cb_re_cmpl
  69. cb_lock cb_lock
  70. ln_bar ln_bar
  71. ln_bar2 ln_bar2
  72. r_bar r_bar
  73. cb_cmpl cb_cmpl
  74. cb_undo cb_undo
  75. cb_copyrow cb_copyrow
  76. cbx_if_allowuse cbx_if_allowuse
  77. cb_change cb_change
  78. st_dscrp st_dscrp
  79. cb_change_pz cb_change_pz
  80. cb_cancel_scll cb_cancel_scll
  81. cbx_ifwx_mtrl_not_useqty cbx_ifwx_mtrl_not_useqty
  82. cb_sort cb_sort
  83. cb_help cb_help
  84. cbx_ifbuy_mtrl_not_useqty cbx_ifbuy_mtrl_not_useqty
  85. em_1 em_1
  86. st_1 st_1
  87. ln_1 ln_1
  88. ln_2 ln_2
  89. ln_3 ln_3
  90. ln_4 ln_4
  91. end type
  92. global w_order_ml_mrp w_order_ml_mrp
  93. type variables
  94. Long i_taskid,i_scid
  95. Int i_printid
  96. Int i_Ordertype
  97. Long ll_unlock_row
  98. Boolean if_cmpl = TRUE
  99. Decimal i_d_cmplqty_old
  100. Int i_i_plantype_old
  101. Long i_l_scid_old
  102. end variables
  103. forward prototypes
  104. public function integer wf_face ()
  105. end prototypes
  106. event ue_sort_1();IF MessageBox ("IF","是否确定要重新排序已运算的数据,重新排序后可能会影响下级换料,是否继续?",Question!,YesNo! ) = 2 THEN RETURN
  107. dw_1.SetSort('u_orderrqmtrl_tree_ifmainmtrlid ds,u_orderrqmtrl_tree_wrkgrpid as')
  108. dw_1.Sort( )
  109. end event
  110. event ue_sort_2();IF MessageBox ("IF","是否确定要重新排序已运算的数据,重新排序后可能会影响下级换料,是否继续?",Question!,YesNo! ) = 2 THEN RETURN
  111. dw_1.SetSort('u_orderrqmtrl_tree_ifmainmtrlid ds,u_mtrldef_mtrltype as')
  112. dw_1.Sort( )
  113. end event
  114. event ue_help();Int i
  115. i = htmlhelpA(Handle(THIS), sys_help_chm, 0, THIS.Title+".htm")
  116. end event
  117. public function integer wf_face ();Long ll_row
  118. dw_1.AcceptText()
  119. ll_row = dw_1.GetRow()
  120. IF ll_row <= 0 THEN
  121. cb_save.Enabled = FALSE
  122. cb_re_cmpl.Enabled = FALSE
  123. cb_cmpl.Enabled = FALSE
  124. cb_lock.Enabled = FALSE
  125. cb_undo.Enabled = FALSE
  126. cb_copyrow.Enabled = FALSE
  127. cb_change.Enabled = FALSE
  128. cb_change_pz.Enabled = FALSE
  129. cb_cancel_scll.Enabled = FALSE
  130. cb_sort.Enabled = FALSE
  131. ELSE
  132. IF dw_1.Object.ifcmpl[ll_row] = 0 THEN
  133. cb_save.Enabled = FALSE
  134. cb_re_cmpl.Enabled = FALSE
  135. cb_cmpl.Enabled = TRUE
  136. cb_lock.Enabled = FALSE
  137. cb_undo.Enabled = TRUE
  138. cb_copyrow.Enabled = FALSE
  139. cb_change.Enabled = FALSE
  140. cb_change_pz.Enabled = FALSE
  141. cb_cancel_scll.Enabled = FALSE
  142. cb_sort.Enabled = FALSE
  143. ELSE
  144. cb_save.Enabled = TRUE
  145. cb_re_cmpl.Enabled = TRUE
  146. cb_cmpl.Enabled = FALSE
  147. cb_lock.Enabled = TRUE
  148. cb_undo.Enabled = FALSE
  149. cb_copyrow.Enabled = TRUE
  150. cb_change.Enabled = TRUE
  151. cb_change_pz.Enabled = true
  152. cb_cancel_scll.Enabled = TRUE
  153. cb_sort.Enabled = TRUE
  154. END IF
  155. END IF
  156. RETURN 1
  157. end function
  158. on w_order_ml_mrp.create
  159. int iCurrent
  160. call super::create
  161. this.dw_1=create dw_1
  162. this.cb_save=create cb_save
  163. this.cb_re_cmpl=create cb_re_cmpl
  164. this.cb_lock=create cb_lock
  165. this.ln_bar=create ln_bar
  166. this.ln_bar2=create ln_bar2
  167. this.r_bar=create r_bar
  168. this.cb_cmpl=create cb_cmpl
  169. this.cb_undo=create cb_undo
  170. this.cb_copyrow=create cb_copyrow
  171. this.cbx_if_allowuse=create cbx_if_allowuse
  172. this.cb_change=create cb_change
  173. this.st_dscrp=create st_dscrp
  174. this.cb_change_pz=create cb_change_pz
  175. this.cb_cancel_scll=create cb_cancel_scll
  176. this.cbx_ifwx_mtrl_not_useqty=create cbx_ifwx_mtrl_not_useqty
  177. this.cb_sort=create cb_sort
  178. this.cb_help=create cb_help
  179. this.cbx_ifbuy_mtrl_not_useqty=create cbx_ifbuy_mtrl_not_useqty
  180. this.em_1=create em_1
  181. this.st_1=create st_1
  182. this.ln_1=create ln_1
  183. this.ln_2=create ln_2
  184. this.ln_3=create ln_3
  185. this.ln_4=create ln_4
  186. iCurrent=UpperBound(this.Control)
  187. this.Control[iCurrent+1]=this.dw_1
  188. this.Control[iCurrent+2]=this.cb_save
  189. this.Control[iCurrent+3]=this.cb_re_cmpl
  190. this.Control[iCurrent+4]=this.cb_lock
  191. this.Control[iCurrent+5]=this.ln_bar
  192. this.Control[iCurrent+6]=this.ln_bar2
  193. this.Control[iCurrent+7]=this.r_bar
  194. this.Control[iCurrent+8]=this.cb_cmpl
  195. this.Control[iCurrent+9]=this.cb_undo
  196. this.Control[iCurrent+10]=this.cb_copyrow
  197. this.Control[iCurrent+11]=this.cbx_if_allowuse
  198. this.Control[iCurrent+12]=this.cb_change
  199. this.Control[iCurrent+13]=this.st_dscrp
  200. this.Control[iCurrent+14]=this.cb_change_pz
  201. this.Control[iCurrent+15]=this.cb_cancel_scll
  202. this.Control[iCurrent+16]=this.cbx_ifwx_mtrl_not_useqty
  203. this.Control[iCurrent+17]=this.cb_sort
  204. this.Control[iCurrent+18]=this.cb_help
  205. this.Control[iCurrent+19]=this.cbx_ifbuy_mtrl_not_useqty
  206. this.Control[iCurrent+20]=this.em_1
  207. this.Control[iCurrent+21]=this.st_1
  208. this.Control[iCurrent+22]=this.ln_1
  209. this.Control[iCurrent+23]=this.ln_2
  210. this.Control[iCurrent+24]=this.ln_3
  211. this.Control[iCurrent+25]=this.ln_4
  212. end on
  213. on w_order_ml_mrp.destroy
  214. call super::destroy
  215. destroy(this.dw_1)
  216. destroy(this.cb_save)
  217. destroy(this.cb_re_cmpl)
  218. destroy(this.cb_lock)
  219. destroy(this.ln_bar)
  220. destroy(this.ln_bar2)
  221. destroy(this.r_bar)
  222. destroy(this.cb_cmpl)
  223. destroy(this.cb_undo)
  224. destroy(this.cb_copyrow)
  225. destroy(this.cbx_if_allowuse)
  226. destroy(this.cb_change)
  227. destroy(this.st_dscrp)
  228. destroy(this.cb_change_pz)
  229. destroy(this.cb_cancel_scll)
  230. destroy(this.cbx_ifwx_mtrl_not_useqty)
  231. destroy(this.cb_sort)
  232. destroy(this.cb_help)
  233. destroy(this.cbx_ifbuy_mtrl_not_useqty)
  234. destroy(this.em_1)
  235. destroy(this.st_1)
  236. destroy(this.ln_1)
  237. destroy(this.ln_2)
  238. destroy(this.ln_3)
  239. destroy(this.ln_4)
  240. end on
  241. event resize;call super::resize;ln_bar.EndX = THIS.Width
  242. ln_bar2.EndX = THIS.Width
  243. r_bar.Width = THIS.Width
  244. ln_1.EndX = THIS.Width
  245. ln_2.EndX = THIS.Width
  246. ln_3.EndX = THIS.Width
  247. ln_4.EndX = THIS.Width
  248. dw_1.Width = THIS.Width - dw_1.X - 40
  249. dw_1.Height = THIS.Height - dw_1.Y - 150
  250. st_dscrp.Width = THIS.Width - st_dscrp.X - 40
  251. end event
  252. event open;call super::open;Int rslt = 1
  253. s_order_ml_mrp s_mrp
  254. s_order_ml_rqmtrl s_ref_mtrl
  255. s_mrp = Message.PowerObjectParm
  256. uo_order_ml_mrp uo_ml_mrp
  257. uo_ml_mrp = Create uo_order_ml_mrp
  258. Int li_if_allowuse,li_if_date
  259. li_if_allowuse = s_mrp.if_allowuse
  260. li_if_date = s_mrp.if_date
  261. IF li_if_allowuse = 1 THEN
  262. cbx_if_allowuse.Checked = True
  263. ELSE
  264. cbx_if_allowuse.Checked = False
  265. END IF
  266. cbx_if_allowuse.TriggerEvent(Clicked!)
  267. cbx_ifwx_mtrl_not_useqty.Checked = s_mrp.ifwx_mtrl_not_useqty
  268. cbx_ifbuy_mtrl_not_useqty.Checked = s_mrp.ifbuy_mtrl_not_useqty
  269. st_dscrp.Text = '销售订单明细备注:'+s_mrp.dscrp
  270. i_taskid = s_mrp.taskid
  271. i_scid = s_mrp.scid
  272. i_printid = s_mrp.printid
  273. dw_1.SetTransObject(sqlca)
  274. IF dw_1.Retrieve(i_scid,i_taskid,i_printid) = 0 THEN
  275. cb_re_cmpl.TriggerEvent(Clicked!)
  276. END IF
  277. ////????
  278. //====================================================================
  279. // 添加成品行
  280. //====================================================================
  281. Long ll_mtrlid
  282. String ls_pfcode
  283. String ls_status,ls_woodcode,ls_pcode
  284. Decimal ld_orderqty
  285. Long ll_i
  286. DateTime ld_requiredate
  287. String arg_msg
  288. Long ll_ordertype
  289. SELECT mtrlid,
  290. orderqty,
  291. status,
  292. woodcode,
  293. pcode
  294. INTO :ll_mtrlid,
  295. :ld_orderqty,
  296. :ls_status,
  297. :ls_woodcode,
  298. :ls_pcode
  299. FROM u_saletaskmx
  300. WHERE u_saletaskmx.scid = :i_scid AND
  301. u_saletaskmx.taskid = :i_taskid AND
  302. u_saletaskmx.printid = :i_printid;
  303. IF sqlca.SQLCode <> 0 THEN
  304. arg_msg = '查询销售订单明细资料失败,'+sqlca.SQLErrText
  305. rslt = 0
  306. GOTO ext
  307. END IF
  308. IF cbx_if_allowuse.Checked THEN
  309. li_if_allowuse = 1
  310. ELSE
  311. li_if_allowuse = 0
  312. END IF
  313. uo_ml_mrp.ifbuy_mtrl_not_useqty = cbx_ifbuy_mtrl_not_useqty.Checked
  314. uo_ml_mrp.ifwx_mtrl_not_useqty = cbx_ifwx_mtrl_not_useqty.Checked
  315. IF uo_ml_mrp.uof_cmpl_rqmtrl(i_scid,i_taskid,i_printid,0,ll_mtrlid,&
  316. ls_status,ls_woodcode,ls_pcode,ld_orderqty,0,&
  317. li_if_allowuse,s_ref_mtrl,arg_msg,0,'') = 0 THEN
  318. rslt = 0
  319. GOTO ext
  320. END IF
  321. Long ll_row
  322. String ls_exp = ''
  323. FOR ll_i = UpperBound(s_ref_mtrl.mtrlid) To 1 Step -1
  324. IF s_ref_mtrl.ifmainmtrlid[ll_i] = 1 THEN
  325. ls_exp += 'u_OrderRqMtrl_tree_scid = ' + String(i_scid)
  326. ls_exp += ' AND u_OrderRqMtrl_tree_taskid = ' + String(i_taskid)
  327. ls_exp += ' AND u_OrderRqMtrl_tree_mtrlid = ' + String(s_ref_mtrl.mtrlid[ll_i])
  328. ls_exp += ' AND u_orderrqmtrl_tree_wrkgrpid = ' + String(s_ref_mtrl.produce_wrkgrpid[ll_i])
  329. ls_exp += ' AND u_OrderRqMtrl_tree_printid = ' + String(i_printid)
  330. IF dw_1.Find(ls_exp, 1, dw_1.RowCount()) <= 0 THEN
  331. ll_row = dw_1.InsertRow(1)
  332. i_d_cmplqty_old = s_ref_mtrl.cmplqty[ll_i]
  333. dw_1.Object.u_OrderRqMtrl_tree_scid[ll_row] = i_scid
  334. dw_1.Object.u_OrderRqMtrl_tree_taskid[ll_row] = i_taskid
  335. dw_1.Object.u_OrderRqMtrl_tree_printid[ll_row] = i_printid
  336. dw_1.Object.u_mtrldef_mtrlcode[ll_row] = s_ref_mtrl.mtrlcode[ll_i]
  337. dw_1.Object.u_mtrldef_mtrlname[ll_row] = s_ref_mtrl.mtrlname[ll_i]
  338. dw_1.Object.u_mtrldef_mtrlmode[ll_row] = s_ref_mtrl.mtrlmode[ll_i]
  339. dw_1.Object.u_mtrldef_unit[ll_row] = s_ref_mtrl.unit[ll_i]
  340. dw_1.Object.u_mtrldef_mtrlorigin[ll_row] = s_ref_mtrl.mtrlorigin[ll_i]
  341. dw_1.Object.u_mtrldef_mtrltype[ll_row] = s_ref_mtrl.mtrltype[ll_i]
  342. dw_1.Object.u_mtrldef_mtrlprp[ll_row] = s_ref_mtrl.mtrlprp[ll_i]
  343. dw_1.Object.u_orderrqmtrl_tree_pcode[ll_row] = s_ref_mtrl.pcode[ll_i]
  344. dw_1.Object.u_orderrqmtrl_tree_wrkgrpid[ll_row] = s_ref_mtrl.produce_wrkgrpid[ll_i]
  345. dw_1.Object.u_OrderRqMtrl_tree_lp[ll_row] = s_ref_mtrl.lp[ll_i]
  346. dw_1.Object.u_OrderRqMtrl_tree_mtrlid[ll_row] = s_ref_mtrl.mtrlid[ll_i]
  347. dw_1.Object.u_OrderRqMtrl_tree_plantype[ll_row] = s_ref_mtrl.plantype[ll_i]
  348. dw_1.Object.u_OrderRqMtrl_tree_rqqty[ll_row] = s_ref_mtrl.qty[ll_i]
  349. dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_row] = s_ref_mtrl.cmplqty[ll_i]
  350. dw_1.Object.u_OrderRqMtrl_tree_mqty[ll_row] = s_ref_mtrl.mqty[ll_i]
  351. dw_1.Object.u_OrderRqMtrl_tree_bqty[ll_row] = s_ref_mtrl.bqty[ll_i]
  352. dw_1.Object.u_OrderRqMtrl_tree_wqty[ll_row] = s_ref_mtrl.wqty[ll_i]
  353. dw_1.Object.u_OrderRqMtrl_tree_pqty[ll_row] = s_ref_mtrl.pqty[ll_i]
  354. dw_1.Object.u_OrderRqMtrl_tree_otherrqqty[ll_row] = s_ref_mtrl.otherrqqty[ll_i]
  355. dw_1.Object.u_OrderRqMtrl_tree_samerqqty[ll_row] = s_ref_mtrl.samerqqty[ll_i]
  356. dw_1.Object.minqty[ll_row] = s_ref_mtrl.minqty[ll_i]
  357. dw_1.Object.maxqty[ll_row] = s_ref_mtrl.maxqty[ll_i]
  358. dw_1.Object.ckwareqty[ll_row] = s_ref_mtrl.ckwareqty[ll_i]
  359. dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_row] = s_ref_mtrl.pmtrlid[ll_i]
  360. dw_1.Object.u_OrderRqMtrl_tree_ifchanged[ll_row] = s_ref_mtrl.ifchanged[ll_i]
  361. dw_1.Object.u_OrderRqMtrl_tree_ifmainmtrlid[ll_row] = s_ref_mtrl.ifmainmtrlid[ll_i]
  362. END IF
  363. END IF
  364. NEXT
  365. wf_face()
  366. ext:
  367. Destroy uo_ml_mrp
  368. IF rslt = 0 THEN
  369. MessageBox('错误', arg_msg)
  370. END IF
  371. end event
  372. event ue_before_open;call super::ue_before_open;if_ue_sort = TRUE
  373. end event
  374. event key;call super::key;IF KeyDown(KeyF1!) THEN
  375. This.TriggerEvent('ue_help')
  376. END IF
  377. end event
  378. type cb_func from w_publ_base`cb_func within w_order_ml_mrp
  379. boolean visible = false
  380. integer x = 2738
  381. integer height = 164
  382. boolean enabled = false
  383. end type
  384. type cb_exit from w_publ_base`cb_exit within w_order_ml_mrp
  385. integer x = 1989
  386. integer width = 165
  387. integer height = 164
  388. integer picsize = 16
  389. toolbaralignment pic_align = alignattop!
  390. boolean border = false
  391. end type
  392. type dw_1 from u_dw_rbtnfilter within w_order_ml_mrp
  393. integer y = 388
  394. integer width = 3543
  395. integer height = 1872
  396. integer taborder = 20
  397. boolean bringtotop = true
  398. string dataobject = "dw_order_ml_mrp_tree"
  399. boolean hscrollbar = true
  400. boolean vscrollbar = true
  401. boolean hsplitscroll = true
  402. end type
  403. event itemchanged;call super::itemchanged;THIS.AcceptText()
  404. CHOOSE CASE dwo.Name
  405. CASE 'u_ordermtrl_plantype'
  406. IF THIS.Object.u_ordermtrl_tree_plantype[row] = 2 THEN
  407. THIS.Object.u_ordermtrl_tree_produce_wrkgrpid[row] = 0
  408. END IF
  409. CASE 'u_ordermtrl_scid'
  410. Long ll_produce_wrkgrpid,ll_scid_wrkgrpid,ll_produce_scid
  411. ll_produce_wrkgrpid = THIS.Object.u_ordermtrl_tree_produce_wrkgrpid[row]
  412. ll_produce_scid = THIS.Object.u_ordermtrl_tree_produce_scid[row]
  413. SELECT scid INTO :ll_scid_wrkgrpid
  414. FROM u_sc_wkp
  415. Where wrkgrpid = :ll_produce_wrkgrpid;
  416. IF sqlca.SQLCode <> 0 THEN ll_scid_wrkgrpid = 0
  417. IF ll_scid_wrkgrpid <> ll_produce_scid THEN
  418. THIS.Object.u_ordermtrl_tree_produce_wrkgrpid[row] = 0
  419. END IF
  420. END CHOOSE
  421. end event
  422. event rowfocuschanged;call super::rowfocuschanged;THIS.AcceptText()
  423. IF NOT if_cmpl AND currentrow <> ll_unlock_row THEN
  424. MessageBox('提示','系统处理解锁状态,请先计算')
  425. THIS.SelectRow(0,FALSE)
  426. THIS.SetRow(ll_unlock_row)
  427. THIS.SelectRow(ll_unlock_row,TRUE)
  428. RETURN
  429. END IF
  430. IF currentrow > 0 THEN
  431. THIS.SelectRow(0,FALSE)
  432. THIS.SetRow(currentrow)
  433. THIS.SelectRow(currentrow,TRUE)
  434. END IF
  435. end event
  436. event clicked;call super::clicked;THIS.AcceptText()
  437. IF NOT if_cmpl and row <> ll_unlock_row THEN
  438. MessageBox('提示','系统处理解锁状态,请先计算')
  439. THIS.SelectRow(0,FALSE)
  440. THIS.SetRow(ll_unlock_row)
  441. THIS.SelectRow(ll_unlock_row,TRUE)
  442. RETURN
  443. END IF
  444. IF row > 0 THEN
  445. THIS.SelectRow(0,FALSE)
  446. THIS.SetRow(row)
  447. THIS.SelectRow(row,TRUE)
  448. END IF
  449. end event
  450. event rbuttondown;Long ll_row,ll_column
  451. ll_row = THIS.GetRow()
  452. ll_column = THIS.GetColumn()
  453. IF ll_row <= 0 THEN RETURN
  454. IF ll_column <= 0 THEN RETURN
  455. IF Left( THIS.Describe( dwo.Name+ ".coltype"),4) = 'date' THEN
  456. s_calender_arg s_calender
  457. s_calender.PointerX = xpos
  458. s_calender.PointerY = ypos
  459. s_calender.X = THIS.X + PARENT.X
  460. s_calender.Y = THIS.Y + PARENT.Y
  461. OpenWithParm(w_calendar,s_calender)
  462. THIS.SetItem(ll_row,ll_column,id_date_selected)
  463. END IF
  464. end event
  465. type cb_save from uo_imflatbutton within w_order_ml_mrp
  466. integer x = 658
  467. integer width = 165
  468. integer height = 164
  469. integer taborder = 30
  470. boolean bringtotop = true
  471. string text = "保存"
  472. string normalpicname = "save.bmp"
  473. integer picsize = 16
  474. toolbaralignment pic_align = alignattop!
  475. boolean border = false
  476. end type
  477. event clicked;call super::clicked;Long ll_i,ch,ch_tree
  478. String arg_msg
  479. s_order_ml_rqmtrl s_mtrl,s_mtrl_tree
  480. dw_1.AcceptText()
  481. IF dw_1.RowCount() <= 0 THEN
  482. MessageBox('提示','没有可保存的数据')
  483. RETURN
  484. END IF
  485. FOR ll_i = 1 TO dw_1.RowCount()
  486. ch_tree++
  487. s_mtrl_tree.taskid[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_taskid[ll_i]
  488. s_mtrl_tree.printid[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_printid[ll_i]
  489. s_mtrl_tree.mxpkid[ch_tree] = ch_tree //dw_1.Object.u_orderrqmtrl_tree_mxpkid[ll_i]
  490. s_mtrl_tree.scid[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_scid[ll_i]
  491. s_mtrl_tree.mtrlid[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_mtrlid[ll_i]
  492. s_mtrl_tree.status[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_status[ll_i]
  493. s_mtrl_tree.woodcode[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_woodcode[ll_i]
  494. s_mtrl_tree.pcode[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_pcode[ll_i]
  495. s_mtrl_tree.qty[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_rqqty[ll_i]//用料数
  496. s_mtrl_tree.cmplqty[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_i] //需生产制造采购数
  497. s_mtrl_tree.mqty[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_mqty[ll_i]
  498. s_mtrl_tree.bqty[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_bqty[ll_i]
  499. s_mtrl_tree.wqty[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_wqty[ll_i]
  500. s_mtrl_tree.pqty[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_pqty[ll_i]
  501. s_mtrl_tree.otherrqqty[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_otherrqqty[ll_i]
  502. s_mtrl_tree.samerqqty[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_samerqqty[ll_i]
  503. s_mtrl_tree.minqty[ch_tree] = dw_1.Object.minqty[ll_i]
  504. s_mtrl_tree.maxqty[ch_tree] = dw_1.Object.maxqty[ll_i]
  505. s_mtrl_tree.ckwareqty[ch_tree] = dw_1.Object.ckwareqty[ll_i]
  506. s_mtrl_tree.ifmainmtrlid[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_ifmainmtrlid[ll_i]
  507. s_mtrl_tree.plantype[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_plantype[ll_i]
  508. s_mtrl_tree.produce_scid[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_produce_scid[ll_i]
  509. s_mtrl_tree.produce_wrkgrpid[ch_tree] = dw_1.Object.u_orderrqmtrl_tree_wrkgrpid[ll_i]
  510. s_mtrl_tree.wrkgrpid_scll[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_wrkgrpid[ll_i]
  511. s_mtrl_tree.lp[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_lp[ll_i]
  512. s_mtrl_tree.pmtrlid[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_i]
  513. s_mtrl_tree.ifchanged[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_ifchanged[ll_i]
  514. s_mtrl_tree.pfgroup[ch_tree] = dw_1.Object.u_OrderRqMtrl_tree_pfgroup[ll_i]
  515. s_mtrl_tree.promode[ch_tree] = dw_1.Object.u_orderrqmtrl_tree_promode[ll_i]
  516. s_mtrl_tree.pfgroupmode[ch_tree] = dw_1.Object.u_orderrqmtrl_tree_pfgroupmode[ll_i]
  517. s_mtrl_tree.pfklmode[ch_tree] = dw_1.Object.u_orderrqmtrl_tree_pfklmode[ll_i]
  518. s_mtrl_tree.pfgroupqty[ch_tree] = dw_1.Object.u_orderrqmtrl_tree_pfgroupqty[ll_i]
  519. //if dw_1.Object.u_orderrqmtrl_tree_ifmainmtrlid[ll_i] = 1 then continue;
  520. IF dw_1.Object.u_OrderRqMtrl_tree_rqqty[ll_i] = 0 AND dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_i] = 0 THEN CONTINUE
  521. ch++
  522. s_mtrl.taskid[ch] = dw_1.Object.u_OrderRqMtrl_tree_taskid[ll_i]
  523. s_mtrl.printid[ch] = dw_1.Object.u_OrderRqMtrl_tree_printid[ll_i]
  524. s_mtrl.scid[ch] = dw_1.Object.u_OrderRqMtrl_tree_scid[ll_i]
  525. s_mtrl.mtrlid[ch] = dw_1.Object.u_OrderRqMtrl_tree_mtrlid[ll_i]
  526. s_mtrl.qty[ch] = dw_1.Object.u_OrderRqMtrl_tree_rqqty[ll_i]
  527. s_mtrl.cmplqty[ch] = dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_i]
  528. s_mtrl.mqty[ch] = dw_1.Object.u_OrderRqMtrl_tree_mqty[ll_i]
  529. s_mtrl.bqty[ch] = dw_1.Object.u_OrderRqMtrl_tree_bqty[ll_i]
  530. s_mtrl.wqty[ch] = dw_1.Object.u_OrderRqMtrl_tree_wqty[ll_i]
  531. s_mtrl.pqty[ch] = dw_1.Object.u_OrderRqMtrl_tree_pqty[ll_i]
  532. s_mtrl.otherrqqty[ch] = dw_1.Object.u_OrderRqMtrl_tree_otherrqqty[ll_i]
  533. s_mtrl.minqty[ch] = dw_1.Object.minqty[ll_i]
  534. s_mtrl.ifmainmtrlid[ch] = dw_1.Object.u_OrderRqMtrl_tree_ifmainmtrlid[ll_i]
  535. s_mtrl.plantype[ch] = dw_1.Object.u_OrderRqMtrl_tree_plantype[ll_i]
  536. s_mtrl.produce_scid[ch] = dw_1.Object.u_OrderRqMtrl_tree_produce_scid[ll_i]
  537. s_mtrl.produce_wrkgrpid[ch] = dw_1.Object.u_orderrqmtrl_tree_wrkgrpid[ll_i]
  538. s_mtrl.wrkgrpid_scll[ch] = dw_1.Object.u_OrderRqMtrl_tree_wrkgrpid[ll_i]
  539. s_mtrl.lp[ch] = dw_1.Object.u_OrderRqMtrl_tree_lp[ll_i]
  540. s_mtrl.status[ch] = dw_1.Object.u_OrderRqMtrl_tree_status[ll_i]
  541. s_mtrl.woodcode[ch] = dw_1.Object.u_OrderRqMtrl_tree_woodcode[ll_i]
  542. s_mtrl.pcode[ch] = dw_1.Object.u_OrderRqMtrl_tree_pcode[ll_i]
  543. s_mtrl.pmtrlid[ch] = dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_i]
  544. s_mtrl.ifchanged[ch] = dw_1.Object.u_OrderRqMtrl_tree_ifchanged[ll_i]
  545. s_mtrl.promode[ch] = dw_1.Object.u_orderrqmtrl_tree_promode[ll_i]
  546. s_mtrl.pfgroupmode[ch] = dw_1.Object.u_orderrqmtrl_tree_pfgroupmode[ll_i]
  547. s_mtrl.pfklmode[ch] = dw_1.Object.u_orderrqmtrl_tree_pfklmode[ll_i]
  548. s_mtrl.pfgroupqty[ch] = dw_1.Object.u_orderrqmtrl_tree_pfgroupqty[ll_i]
  549. NEXT
  550. uo_order_ml_mrp uo_ml_mrp
  551. uo_ml_mrp = CREATE uo_order_ml_mrp
  552. IF uo_ml_mrp.uof_add_rqmtrl(s_mtrl,FALSE,arg_msg) = 0 THEN
  553. MessageBox('提示','保存物料需求表失败,'+arg_msg)
  554. RETURN
  555. END IF
  556. IF uo_ml_mrp.uof_add_rqmtrl_tree(s_mtrl_tree,FALSE,arg_msg) = 0 THEN
  557. MessageBox('提示','保存物料需求结构表失败,'+arg_msg)
  558. RETURN
  559. END IF
  560. IF uo_ml_mrp.uof_del_rqmtrl_scll(i_scid,i_taskid,i_printid,FALSE,arg_msg) = 0 THEN
  561. MessageBox('提示','删除领料明细表失败,'+arg_msg)
  562. RETURN
  563. END IF
  564. IF uo_ml_mrp.uof_add_rqmtrl_scll(s_mtrl,TRUE,arg_msg) = 0 THEN
  565. MessageBox('提示','保存用料明细表失败,'+arg_msg)
  566. RETURN
  567. END IF
  568. DESTROY uo_ml_mrp
  569. MessageBox('提示','保存成功')
  570. CLOSE(PARENT)
  571. end event
  572. type cb_re_cmpl from uo_imflatbutton within w_order_ml_mrp
  573. integer width = 165
  574. integer height = 164
  575. integer taborder = 10
  576. boolean bringtotop = true
  577. string text = "重算"
  578. string normalpicname = "update.bmp"
  579. integer picsize = 16
  580. toolbaralignment pic_align = alignattop!
  581. boolean border = false
  582. end type
  583. event clicked;call super::clicked;Int rslt = 1
  584. Long ll_mtrlid
  585. String ls_pfcode
  586. String ls_status,ls_woodcode,ls_pcode
  587. Decimal ld_orderqty
  588. Long ll_i
  589. DateTime ld_requiredate
  590. String arg_msg
  591. Int li_if_allowuse,li_if_date
  592. Long ll_ordertype
  593. s_order_ml_rqmtrl s_ref_mtrl
  594. uo_order_ml_mrp uo_ml_mrp
  595. uo_ml_mrp = CREATE uo_order_ml_mrp
  596. SELECT mtrlid,
  597. orderqty,
  598. status,
  599. woodcode,
  600. pcode
  601. INTO :ll_mtrlid,
  602. :ld_orderqty,
  603. :ls_status,
  604. :ls_woodcode,
  605. :ls_pcode
  606. FROM u_saletaskmx
  607. WHERE u_saletaskmx.scid = :i_scid AND
  608. u_saletaskmx.taskid = :i_taskid AND
  609. u_saletaskmx.printid = :i_printid;
  610. IF sqlca.SQLCode <> 0 THEN
  611. arg_msg = '查询销售订单明细资料失败,'+sqlca.SQLErrText
  612. rslt = 0
  613. GOTO ext
  614. END IF
  615. dw_1.accepttext()
  616. IF cbx_if_allowuse.Checked THEN
  617. li_if_allowuse = 1
  618. ELSE
  619. li_if_allowuse = 0
  620. END IF
  621. uo_ml_mrp.ifbuy_mtrl_not_useqty = cbx_ifbuy_mtrl_not_useqty.Checked
  622. uo_ml_mrp.ifwx_mtrl_not_useqty = cbx_ifwx_mtrl_not_useqty.Checked
  623. IF uo_ml_mrp.uof_cmpl_rqmtrl(i_scid,i_taskid,i_printid,0,ll_mtrlid,&
  624. ls_status,ls_woodcode,ls_pcode,ld_orderqty,0,&
  625. li_if_allowuse,s_ref_mtrl,arg_msg,0,'') = 0 THEN
  626. rslt = 0
  627. GOTO ext
  628. END IF
  629. dw_1.Reset()
  630. dec{2} em
  631. em = dec(em_1.text)
  632. Long ll_row
  633. FOR ll_i = 1 TO UpperBound(s_ref_mtrl.mtrlid)
  634. ll_row = dw_1.InsertRow(0)
  635. i_d_cmplqty_old = s_ref_mtrl.cmplqty[ll_i]
  636. dw_1.Object.u_OrderRqMtrl_tree_scid[ll_row] = i_scid
  637. dw_1.Object.u_OrderRqMtrl_tree_taskid[ll_row] = i_taskid
  638. dw_1.Object.u_OrderRqMtrl_tree_printid[ll_row] = i_printid
  639. dw_1.Object.u_orderrqmtrl_tree_mxpkid[ll_row] = s_ref_mtrl.mxpkid[ll_i]
  640. dw_1.Object.u_OrderRqMtrl_tree_mtrlid[ll_row] = s_ref_mtrl.mtrlid[ll_i]
  641. dw_1.Object.u_OrderRqMtrl_tree_rqqty[ll_row] = s_ref_mtrl.qty[ll_i]
  642. dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_row] = s_ref_mtrl.cmplqty[ll_i] * em
  643. dw_1.Object.u_mtrldef_mtrlcode[ll_row] = s_ref_mtrl.mtrlcode[ll_i]
  644. dw_1.Object.u_mtrldef_mtrlname[ll_row] = s_ref_mtrl.mtrlname[ll_i]
  645. dw_1.Object.u_mtrldef_mtrlmode[ll_row] = s_ref_mtrl.mtrlmode[ll_i]
  646. dw_1.Object.u_mtrldef_unit[ll_row] = s_ref_mtrl.unit[ll_i]
  647. dw_1.Object.u_mtrldef_mtrlorigin[ll_row] = s_ref_mtrl.mtrlorigin[ll_i]
  648. dw_1.Object.u_mtrldef_mtrltype[ll_row] = s_ref_mtrl.mtrltype[ll_i]
  649. dw_1.Object.u_mtrldef_mtrlprp[ll_row] = s_ref_mtrl.mtrlprp[ll_i]
  650. dw_1.Object.u_orderrqmtrl_tree_pcode[ll_row] = s_ref_mtrl.pcode[ll_i]
  651. dw_1.Object.u_orderrqmtrl_tree_wrkgrpid[ll_row] = s_ref_mtrl.produce_wrkgrpid[ll_i]
  652. dw_1.Object.u_OrderRqMtrl_tree_pfgroup[ll_row] = s_ref_mtrl.pfgroup[ll_i]
  653. dw_1.Object.u_OrderRqMtrl_tree_lp[ll_row] = s_ref_mtrl.lp[ll_i]
  654. dw_1.Object.u_OrderRqMtrl_tree_plantype[ll_row] = s_ref_mtrl.plantype[ll_i]
  655. dw_1.Object.u_OrderRqMtrl_tree_mqty[ll_row] = s_ref_mtrl.mqty[ll_i]
  656. dw_1.Object.u_OrderRqMtrl_tree_bqty[ll_row] = s_ref_mtrl.bqty[ll_i]
  657. dw_1.Object.u_OrderRqMtrl_tree_wqty[ll_row] = s_ref_mtrl.wqty[ll_i]
  658. dw_1.Object.u_OrderRqMtrl_tree_pqty[ll_row] = s_ref_mtrl.pqty[ll_i]
  659. dw_1.Object.u_OrderRqMtrl_tree_otherrqqty[ll_row] = s_ref_mtrl.otherrqqty[ll_i]
  660. dw_1.Object.u_OrderRqMtrl_tree_samerqqty[ll_row] = s_ref_mtrl.samerqqty[ll_i]
  661. dw_1.Object.minqty[ll_row] = s_ref_mtrl.minqty[ll_i]
  662. dw_1.Object.maxqty[ll_row] = s_ref_mtrl.maxqty[ll_i]
  663. dw_1.Object.ckwareqty[ll_row] = s_ref_mtrl.ckwareqty[ll_i]
  664. //dw_1.Object.ckwareqty[ll_row] = s_ref_mtrl.mqty[ll_i] + s_ref_mtrl.bqty[ll_i] + s_ref_mtrl.wqty[ll_i] + s_ref_mtrl.pqty[ll_i] - s_ref_mtrl.otherrqqty[ll_i] - s_ref_mtrl.samerqqty[ll_i] - dw_1.Object.minqty[ll_row]
  665. dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_row] = s_ref_mtrl.pmtrlid[ll_i]
  666. dw_1.Object.u_OrderRqMtrl_tree_ifchanged[ll_row] = s_ref_mtrl.ifchanged[ll_i]
  667. dw_1.Object.u_OrderRqMtrl_tree_ifmainmtrlid[ll_row] = s_ref_mtrl.ifmainmtrlid[ll_i]
  668. dw_1.Object.u_OrderRqMtrl_tree_promode[ll_row] = s_ref_mtrl.promode[ll_i]
  669. dw_1.Object.u_OrderRqMtrl_tree_pfgroupmode[ll_row] = s_ref_mtrl.pfgroupmode[ll_i]
  670. dw_1.Object.u_OrderRqMtrl_tree_pfklmode[ll_row] = s_ref_mtrl.pfklmode[ll_i]
  671. dw_1.Object.u_OrderRqMtrl_tree_pfgroupqty[ll_row] = s_ref_mtrl.pfgroupqty[ll_i]
  672. NEXT
  673. ext:
  674. DESTROY uo_ml_mrp
  675. IF rslt = 0 THEN
  676. MessageBox('提示',arg_msg)
  677. dw_1.Reset()
  678. END IF
  679. end event
  680. type cb_lock from uo_imflatbutton within w_order_ml_mrp
  681. integer x = 165
  682. integer width = 165
  683. integer height = 164
  684. integer taborder = 20
  685. boolean bringtotop = true
  686. string text = "解锁"
  687. string normalpicname = "mx.bmp"
  688. integer picsize = 16
  689. toolbaralignment pic_align = alignattop!
  690. boolean border = false
  691. end type
  692. event clicked;call super::clicked;Long ll_row,i
  693. dw_1.AcceptText()
  694. ll_row = dw_1.GetRow()
  695. IF ll_row <= 0 THEN
  696. MessageBox('提示','请选择行')
  697. RETURN
  698. END IF
  699. IF dw_1.Object.u_OrderRqMtrl_tree_ifmainmtrlid[ll_row] = 1 THEN
  700. MessageBox('提示','生产计划物料不能解锁运算')
  701. RETURN
  702. END IF
  703. FOR i = ll_row TO dw_1.RowCount()
  704. IF dw_1.Object.u_orderrqmtrl_tree_lp[i] > dw_1.Object.u_orderrqmtrl_tree_lp[ll_row] THEN
  705. IF dw_1.Object.u_orderrqmtrl_tree_ifchanged[i] = 1 THEN
  706. MessageBox('提示','下级物料已有修改,不能解锁运算')
  707. RETURN
  708. END IF
  709. ELSE
  710. EXIT
  711. END IF
  712. NEXT
  713. IF dw_1.Object.iflock[ll_row] = 1 THEN
  714. IF NOT if_cmpl THEN
  715. MessageBox('提示','有物料已修改,未重新计算,请重新计算')
  716. RETURN
  717. ELSE
  718. if_cmpl = FALSE
  719. dw_1.Object.iflock[ll_row] = 0
  720. dw_1.Object.ifcmpl[ll_row] = 0
  721. ll_unlock_row = ll_row
  722. i_d_cmplqty_old = dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_row]
  723. i_i_plantype_old = dw_1.Object.u_OrderRqMtrl_tree_plantype[ll_row]
  724. dw_1.SetFocus()
  725. dw_1.SetColumn('u_OrderRqMtrl_tree_truerqqty')
  726. END IF
  727. END IF
  728. wf_face()
  729. end event
  730. type ln_bar from line within w_order_ml_mrp
  731. long linecolor = 268435456
  732. integer linethickness = 4
  733. integer beginy = 176
  734. integer endx = 3323
  735. integer endy = 176
  736. end type
  737. type ln_bar2 from line within w_order_ml_mrp
  738. long linecolor = 16777215
  739. integer linethickness = 4
  740. integer beginy = 180
  741. integer endx = 3323
  742. integer endy = 180
  743. end type
  744. type r_bar from rectangle within w_order_ml_mrp
  745. long linecolor = 16777215
  746. long fillcolor = 1073741824
  747. integer x = 2473
  748. integer width = 73
  749. integer height = 172
  750. end type
  751. event constructor;this.fillcolor = 14215660
  752. this.linecolor = 14215660
  753. this.x = -1
  754. this.y = -1
  755. this.height = ln_bar2.beginy - 5
  756. end event
  757. type cb_cmpl from uo_imflatbutton within w_order_ml_mrp
  758. integer x = 494
  759. integer width = 165
  760. integer height = 164
  761. integer taborder = 40
  762. boolean bringtotop = true
  763. string text = "计算"
  764. string normalpicname = "open.bmp"
  765. integer picsize = 16
  766. toolbaralignment pic_align = alignattop!
  767. boolean border = false
  768. end type
  769. event clicked;call super::clicked;IF MessageBox ("IF","是否确定要计算已修改的数据?",Question!,YesNo! ) = 2 THEN RETURN
  770. Int rslt = 1
  771. String arg_msg
  772. Long ll_row,ll_i
  773. Decimal ld_cmplqty_new,ld_rqqty,ld_cmplqty,ld_samerqqty
  774. Long ll_mtrlid,ll_pmtrlid,ll_produde_scid_new
  775. String ls_pfcode
  776. String ls_status,ls_woodcode,ls_pcode
  777. Long ll_produce_wrkgrpid,ll_wrkgrpid
  778. DateTime ld_rqdate,ld_sdate
  779. Int li_cmpl //0:不用计算,1:重新计算,2:变更计算
  780. Int li_if_add //0:改变时用加,1:改变时用减
  781. Int li_plantype_new
  782. Long ll_lp
  783. s_order_ml_rqmtrl s_ref_mtrl
  784. Int li_if_allowuse
  785. IF cbx_if_allowuse.Checked THEN
  786. li_if_allowuse = 1
  787. ELSE
  788. li_if_allowuse = 0
  789. END IF
  790. dw_1.AcceptText( )
  791. ll_row = dw_1.GetRow()
  792. IF dw_1.Object.ifcmpl[ll_row] = 1 THEN
  793. arg_msg = '该行已经计算,不能再计算'
  794. rslt = 0
  795. GOTO ext
  796. END IF
  797. ld_cmplqty_new = dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_row]
  798. IF ld_cmplqty_new < 0 THEN
  799. arg_msg = '错误的运算数量,不能计算,请检查'
  800. rslt = 0
  801. GOTO ext
  802. END IF
  803. li_plantype_new = dw_1.Object.u_OrderRqMtrl_tree_plantype[ll_row]
  804. ll_produde_scid_new = dw_1.Object.u_orderrqmtrl_tree_produce_scid[ll_row]
  805. ld_rqqty = dw_1.Object.u_OrderRqMtrl_tree_rqqty[ll_row]
  806. ld_samerqqty = dw_1.Object.u_OrderRqMtrl_tree_samerqqty[ll_row]
  807. ll_mtrlid = dw_1.Object.u_OrderRqMtrl_tree_mtrlid[ll_row]
  808. ll_pmtrlid = dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_row]
  809. ls_status = dw_1.Object.u_OrderRqMtrl_tree_status[ll_row]
  810. ls_woodcode = dw_1.Object.u_OrderRqMtrl_tree_woodcode[ll_row]
  811. ls_pcode = dw_1.Object.u_OrderRqMtrl_tree_pcode[ll_row]
  812. ls_pfcode = dw_1.Object.u_OrderRqMtrl_tree_pfcode[ll_row]
  813. ll_lp = dw_1.Object.u_OrderRqMtrl_tree_lp[ll_row]
  814. ll_wrkgrpid = dw_1.Object.u_OrderRqMtrl_tree_wrkgrpid[ll_row]
  815. IF li_plantype_new = i_i_plantype_old THEN //无改处理方法
  816. IF li_plantype_new = 2 OR li_plantype_new = 6 THEN //采购或客户来料
  817. IF ld_cmplqty_new > ld_rqqty THEN
  818. arg_msg = '输入的运算数不能大于损耗数'
  819. rslt = 0
  820. GOTO ext
  821. END IF
  822. rslt = 1
  823. GOTO ext
  824. ELSE //自制或外协
  825. IF ld_cmplqty_new = i_d_cmplqty_old THEN //无改数量
  826. IF ll_produde_scid_new = i_l_scid_old THEN //无改分部
  827. rslt = 1
  828. GOTO ext
  829. ELSE //改分部
  830. IF ll_produde_scid_new <> i_scid AND i_l_scid_old <> i_scid THEN
  831. rslt = 1
  832. GOTO ext
  833. ELSEIF ll_produde_scid_new <> i_scid AND i_l_scid_old = i_scid THEN
  834. li_cmpl = 2 //(变更)
  835. li_if_add = 1 //(-)
  836. ld_cmplqty = i_d_cmplqty_old
  837. ELSEIF ll_produde_scid_new = i_scid AND i_l_scid_old <> i_scid THEN
  838. li_cmpl = 1 //(重计)
  839. li_if_add = 0 //(+)
  840. ld_cmplqty = ld_cmplqty_new
  841. END IF
  842. END IF
  843. ELSE
  844. IF ll_produde_scid_new <> i_scid AND i_l_scid_old <> i_scid THEN
  845. rslt = 1
  846. GOTO ext
  847. ELSEIF ll_produde_scid_new <> i_scid AND i_l_scid_old = i_scid THEN
  848. li_cmpl = 2 //(变更)
  849. li_if_add = 1 //(-)
  850. ld_cmplqty = i_d_cmplqty_old
  851. ELSEIF ll_produde_scid_new = i_scid AND i_l_scid_old <> i_scid THEN
  852. li_cmpl = 1 //(重计)
  853. li_if_add = 0 //(+)
  854. ld_cmplqty = ld_cmplqty_new
  855. ELSEIF ll_produde_scid_new = i_scid AND i_l_scid_old = i_scid THEN
  856. li_cmpl = 2 //(变更)
  857. ld_cmplqty = Abs(ld_cmplqty_new - i_d_cmplqty_old)
  858. IF ld_cmplqty_new < i_d_cmplqty_old THEN
  859. li_if_add = 1 //(-)
  860. ELSE
  861. li_if_add = 0 //(+)
  862. END IF
  863. END IF
  864. END IF
  865. END IF
  866. ELSE //改处理方法
  867. IF i_Ordertype <> 2 THEN //不是来料加工计划
  868. IF li_plantype_new = 6 THEN
  869. arg_msg = '只有处理来料加工计划的处理方法才能变为客户来料'
  870. rslt = 0
  871. GOTO ext
  872. END IF
  873. END IF
  874. //采购->来料加工,来料加工->采购
  875. IF i_i_plantype_old = 2 AND li_plantype_new = 6 OR &
  876. li_plantype_new = 2 AND li_plantype_new = 6 THEN
  877. rslt = 1
  878. GOTO ext
  879. END IF
  880. //自制或外协->采购或客户来料
  881. If ( i_i_plantype_old = 0 OR i_i_plantype_old = 3 ) AND &
  882. ( li_plantype_new = 2 OR li_plantype_new = 6 ) THEN
  883. IF ll_produde_scid_new <> i_scid AND i_l_scid_old <> i_scid THEN
  884. rslt = 1
  885. GOTO ext
  886. ELSEIF ll_produde_scid_new <> i_scid AND i_l_scid_old = i_scid THEN
  887. li_cmpl = 2 //(变更)
  888. li_if_add = 1 //(-)
  889. ld_cmplqty = i_d_cmplqty_old
  890. ELSEIF ll_produde_scid_new = i_scid AND i_l_scid_old <> i_scid THEN
  891. rslt = 1
  892. GOTO ext
  893. ELSEIF ll_produde_scid_new = i_scid AND i_l_scid_old = i_scid THEN
  894. li_cmpl = 2 //(变更)
  895. li_if_add = 1 //(-)
  896. ld_cmplqty = i_d_cmplqty_old
  897. END IF
  898. END IF
  899. //采购或客户来料->自制或外协
  900. If ( i_i_plantype_old = 2 OR i_i_plantype_old = 6 ) AND &
  901. ( li_plantype_new = 0 OR li_plantype_new = 3 ) THEN
  902. IF ll_produde_scid_new <> i_scid AND i_l_scid_old <> i_scid THEN
  903. rslt = 1
  904. GOTO ext
  905. ELSEIF ll_produde_scid_new <> i_scid AND i_l_scid_old = i_scid THEN
  906. rslt = 1
  907. GOTO ext
  908. ELSEIF ll_produde_scid_new = i_scid AND i_l_scid_old <> i_scid THEN
  909. li_cmpl = 1 //(重计)
  910. li_if_add = 0 //(+)
  911. ld_cmplqty = ld_cmplqty_new
  912. ELSEIF ll_produde_scid_new = i_scid AND i_l_scid_old = i_scid THEN
  913. li_cmpl = 1 //(重计)
  914. li_if_add = 0 //(+)
  915. ld_cmplqty = ld_cmplqty_new
  916. END IF
  917. END IF
  918. END IF
  919. IF ld_cmplqty_new > ld_rqqty THEN
  920. arg_msg = '输入的运算数不能大于需求数'
  921. rslt = 0
  922. GOTO ext
  923. END IF
  924. uo_order_ml_mrp uo_m
  925. uo_m = CREATE uo_order_ml_mrp
  926. uo_m.ifbuy_mtrl_not_useqty = cbx_ifbuy_mtrl_not_useqty.Checked
  927. uo_m.ifwx_mtrl_not_useqty = cbx_ifwx_mtrl_not_useqty.Checked
  928. CHOOSE CASE li_cmpl
  929. CASE 1
  930. IF uo_m.uof_cmpl_rqmtrl_re(i_scid,i_taskid,i_printid,ll_pmtrlid,ll_mtrlid,&
  931. li_plantype_new,ls_status,ls_woodcode,ls_pcode,ld_cmplqty_new,&
  932. ll_wrkgrpid,ll_lp,li_if_allowuse,s_ref_mtrl,arg_msg) = 0 THEN
  933. rslt = 0
  934. GOTO ext
  935. END IF
  936. FOR ll_i = 1 TO UpperBound(s_ref_mtrl.mtrlid)
  937. Long ll_new_row
  938. ll_new_row = dw_1.InsertRow(ll_row + ll_i)
  939. dw_1.Object.u_mtrldef_mtrlcode[ll_new_row] = s_ref_mtrl.mtrlcode[ll_i]
  940. dw_1.Object.u_mtrldef_mtrlname[ll_new_row] = s_ref_mtrl.mtrlname[ll_i]
  941. dw_1.Object.u_mtrldef_mtrlmode[ll_new_row] = s_ref_mtrl.mtrlmode[ll_i]
  942. dw_1.Object.u_mtrldef_unit[ll_new_row] = s_ref_mtrl.unit[ll_i]
  943. dw_1.Object.u_mtrldef_mtrlorigin[ll_new_row] = s_ref_mtrl.mtrlorigin[ll_i]
  944. dw_1.Object.u_mtrldef_mtrltype[ll_new_row] = s_ref_mtrl.mtrltype[ll_i]
  945. dw_1.Object.u_OrderRqMtrl_tree_wrkgrpid[ll_new_row] = s_ref_mtrl.produce_wrkgrpid[ll_i]
  946. dw_1.Object.u_OrderRqMtrl_tree_status[ll_new_row] = s_ref_mtrl.status[ll_i]
  947. dw_1.Object.u_OrderRqMtrl_tree_woodcode[ll_new_row] = s_ref_mtrl.woodcode[ll_i]
  948. dw_1.Object.u_OrderRqMtrl_tree_pcode[ll_new_row] = s_ref_mtrl.pcode[ll_i]
  949. dw_1.Object.u_OrderRqMtrl_tree_lp[ll_new_row] = s_ref_mtrl.lp[ll_i]
  950. dw_1.Object.u_OrderRqMtrl_tree_scid[ll_new_row] = i_scid
  951. dw_1.Object.u_OrderRqMtrl_tree_taskid[ll_new_row] = i_taskid
  952. dw_1.Object.u_OrderRqMtrl_tree_printid[ll_new_row] = i_printid
  953. dw_1.Object.u_OrderRqMtrl_tree_mtrlid[ll_new_row] = s_ref_mtrl.mtrlid[ll_i]
  954. dw_1.Object.u_OrderRqMtrl_tree_rqqty[ll_new_row] = s_ref_mtrl.qty[ll_i]
  955. dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_new_row] = s_ref_mtrl.cmplqty[ll_i]
  956. dw_1.Object.u_OrderRqMtrl_tree_plantype[ll_new_row] = s_ref_mtrl.plantype[ll_i]
  957. dw_1.Object.u_OrderRqMtrl_tree_mqty[ll_new_row] = s_ref_mtrl.mqty[ll_i]
  958. dw_1.Object.u_OrderRqMtrl_tree_bqty[ll_new_row] = s_ref_mtrl.bqty[ll_i]
  959. dw_1.Object.u_OrderRqMtrl_tree_wqty[ll_new_row] = s_ref_mtrl.wqty[ll_i]
  960. dw_1.Object.u_OrderRqMtrl_tree_pqty[ll_new_row] = s_ref_mtrl.pqty[ll_i]
  961. dw_1.Object.ckwareqty[ll_new_row] = s_ref_mtrl.mqty[ll_i] + s_ref_mtrl.bqty[ll_i] + s_ref_mtrl.wqty[ll_i] + s_ref_mtrl.pqty[ll_i] - s_ref_mtrl.otherrqqty[ll_i]
  962. dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_new_row] = s_ref_mtrl.pmtrlid[ll_i]
  963. dw_1.Object.u_OrderRqMtrl_tree_ifchanged[ll_new_row] = s_ref_mtrl.ifchanged[ll_i]
  964. dw_1.Object.u_OrderRqMtrl_tree_ifmainmtrlid[ll_new_row] = s_ref_mtrl.ifmainmtrlid[ll_i]
  965. dw_1.Object.u_mtrldef_ifselforder[ll_new_row] = s_ref_mtrl.ifselforder[ll_i]
  966. dw_1.Object.u_orderrqmtrl_tree_gydscrp[ll_new_row] = s_ref_mtrl.gydscrp[ll_i]
  967. dw_1.Object.u_orderrqmtrl_tree_pfklmode[ll_new_row] = s_ref_mtrl.pfklmode[ll_i]
  968. dw_1.Object.u_orderrqmtrl_tree_pfgroup[ll_new_row] = s_ref_mtrl.pfgroup[ll_i]
  969. dw_1.Object.u_orderrqmtrl_tree_pfgroupmode[ll_new_row] = s_ref_mtrl.pfgroupmode[ll_i]
  970. NEXT
  971. CASE 2
  972. IF uo_m.uof_cmpl_rqmtrl_change(i_scid,ll_pmtrlid,ll_mtrlid,&
  973. ls_status,ls_woodcode,ls_pcode,&
  974. ld_cmplqty,ll_wrkgrpid,s_ref_mtrl,arg_msg) = 0 THEN
  975. rslt = 0
  976. GOTO ext
  977. END IF
  978. Long ll_f_row,ll_j
  979. FOR ll_i = 1 TO UpperBound(s_ref_mtrl.mtrlid)
  980. ll_f_row = 0
  981. ll_j = 0
  982. dw_1.AcceptText()
  983. FOR ll_j = ll_row + 1 TO dw_1.RowCount()
  984. IF dw_1.Object.u_OrderRqMtrl_tree_mtrlid[ll_j] = s_ref_mtrl.mtrlid[ll_i] AND &
  985. dw_1.Object.u_OrderRqMtrl_tree_status[ll_j] = s_ref_mtrl.status[ll_i] AND &
  986. dw_1.Object.u_OrderRqMtrl_tree_woodcode[ll_j] = s_ref_mtrl.woodcode[ll_i] AND &
  987. dw_1.Object.u_OrderRqMtrl_tree_pcode[ll_j] = s_ref_mtrl.pcode[ll_i] AND &
  988. dw_1.Object.u_OrderRqMtrl_tree_produce_wrkgrpid[ll_j] = s_ref_mtrl.produce_wrkgrpid[ll_i] AND &
  989. dw_1.Object.u_OrderRqMtrl_tree_wrkgrpid[ll_j] = s_ref_mtrl.wrkgrpid_scll[ll_i] AND &
  990. dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_j] = s_ref_mtrl.pmtrlid[ll_i] AND &
  991. dw_1.Object.u_orderrqmtrl_tree_pfgroup[ll_j] = s_ref_mtrl.pfgroup[ll_i] AND &
  992. dw_1.Object.u_orderrqmtrl_tree_pfgroupmode[ll_j] = s_ref_mtrl.pfgroupmode[ll_i] THEN
  993. ll_f_row = ll_j
  994. EXIT
  995. END IF
  996. NEXT
  997. IF ll_f_row = 0 THEN
  998. MessageBox('提示','查询物料:'+s_ref_mtrl.mtrlcode[ll_i]+',部件名称:'+s_ref_mtrl.pfgroup[ll_i]+',部件规格:'+s_ref_mtrl.pfgroupmode[ll_i]+',变更行数失败')
  999. RETURN
  1000. END IF
  1001. NEXT
  1002. FOR ll_i = 1 TO UpperBound(s_ref_mtrl.mtrlid)
  1003. ll_f_row = 0
  1004. ll_j = 0
  1005. dw_1.AcceptText()
  1006. FOR ll_j = ll_row + 1 TO dw_1.RowCount()
  1007. IF dw_1.Object.u_OrderRqMtrl_tree_mtrlid[ll_j] = s_ref_mtrl.mtrlid[ll_i] AND &
  1008. dw_1.Object.u_OrderRqMtrl_tree_status[ll_j] = s_ref_mtrl.status[ll_i] AND &
  1009. dw_1.Object.u_OrderRqMtrl_tree_woodcode[ll_j] = s_ref_mtrl.woodcode[ll_i] AND &
  1010. dw_1.Object.u_OrderRqMtrl_tree_pcode[ll_j] = s_ref_mtrl.pcode[ll_i] AND &
  1011. dw_1.Object.u_OrderRqMtrl_tree_produce_wrkgrpid[ll_j] = s_ref_mtrl.produce_wrkgrpid[ll_i] AND &
  1012. dw_1.Object.u_OrderRqMtrl_tree_wrkgrpid[ll_j] = s_ref_mtrl.wrkgrpid_scll[ll_i] AND &
  1013. dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_j] = s_ref_mtrl.pmtrlid[ll_i] AND &
  1014. dw_1.Object.u_orderrqmtrl_tree_pfgroup[ll_j] = s_ref_mtrl.pfgroup[ll_i] AND &
  1015. dw_1.Object.u_orderrqmtrl_tree_pfgroupmode[ll_j] = s_ref_mtrl.pfgroupmode[ll_i] THEN
  1016. ll_f_row = ll_j
  1017. EXIT
  1018. END IF
  1019. NEXT
  1020. IF li_if_add = 0 THEN
  1021. dw_1.Object.u_OrderRqMtrl_tree_rqqty[ll_f_row] = dw_1.Object.u_OrderRqMtrl_tree_rqqty[ll_f_row] + s_ref_mtrl.qty[ll_i]
  1022. dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_f_row] = dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_f_row] + s_ref_mtrl.cmplqty[ll_i]
  1023. ELSE
  1024. dw_1.Object.u_OrderRqMtrl_tree_rqqty[ll_f_row] = dw_1.Object.u_OrderRqMtrl_tree_rqqty[ll_f_row] - s_ref_mtrl.qty[ll_i]
  1025. IF dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_f_row] - s_ref_mtrl.cmplqty[ll_i] < 0 THEN
  1026. dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_f_row] = 0
  1027. ELSE
  1028. dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_f_row] = dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_f_row] - s_ref_mtrl.cmplqty[ll_i]
  1029. END IF
  1030. END IF
  1031. NEXT
  1032. END CHOOSE
  1033. ext:
  1034. DESTROY uo_m
  1035. IF rslt = 0 THEN
  1036. MessageBox('提示',arg_msg)
  1037. RETURN
  1038. ELSE
  1039. dw_1.Object.ifcmpl[ll_row] = 1
  1040. dw_1.Object.iflock[ll_row] = 1
  1041. dw_1.Object.u_OrderRqMtrl_tree_ifchanged[ll_row] = 1
  1042. dw_1.SetColumn('u_OrderRqMtrl_tree_plantype')
  1043. MessageBox('提示','计算成功')
  1044. if_cmpl = TRUE
  1045. i_d_cmplqty_old = 0
  1046. i_i_plantype_old = 0
  1047. i_l_scid_old = 0
  1048. END IF
  1049. wf_face()
  1050. end event
  1051. type cb_undo from uo_imflatbutton within w_order_ml_mrp
  1052. integer x = 329
  1053. integer width = 165
  1054. integer height = 164
  1055. integer taborder = 30
  1056. boolean bringtotop = true
  1057. string text = "放弃"
  1058. string normalpicname = "undo.bmp"
  1059. integer picsize = 16
  1060. toolbaralignment pic_align = alignattop!
  1061. boolean border = false
  1062. end type
  1063. event clicked;call super::clicked;Long ll_row
  1064. Decimal ld_cmplqty_new
  1065. dw_1.AcceptText()
  1066. ll_row = dw_1.GetRow()
  1067. IF ll_row <= 0 THEN
  1068. MessageBox('提示','请选择行')
  1069. RETURN
  1070. END IF
  1071. dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_row] = i_d_cmplqty_old
  1072. dw_1.Object.u_OrderRqMtrl_tree_plantype[ll_row] = i_i_plantype_old
  1073. dw_1.Object.iflock[ll_row] = 1
  1074. dw_1.Object.ifcmpl[ll_row] = 1
  1075. if_cmpl = TRUE
  1076. i_d_cmplqty_old = 0
  1077. i_i_plantype_old = 0
  1078. i_l_scid_old = 0
  1079. dw_1.SetFocus()
  1080. dw_1.SetColumn('u_OrderRqMtrl_tree_rqdate')
  1081. wf_face()
  1082. end event
  1083. type cb_copyrow from uo_imflatbutton within w_order_ml_mrp
  1084. integer x = 823
  1085. integer width = 165
  1086. integer height = 164
  1087. integer taborder = 40
  1088. boolean bringtotop = true
  1089. boolean enabled = false
  1090. string text = "变更"
  1091. string normalpicname = "copy.bmp"
  1092. integer picsize = 16
  1093. toolbaralignment pic_align = alignattop!
  1094. boolean border = false
  1095. end type
  1096. event clicked;Long ll_row,ll_row_insert
  1097. Int li_cmpl_old,li_cmpl_new
  1098. dw_1.AcceptText()
  1099. ll_row = dw_1.GetRow()
  1100. IF ll_row <= 0 THEN
  1101. MessageBox('提示','请选择变更行')
  1102. RETURN
  1103. END IF
  1104. IF dw_1.Object.u_OrderRqMtrl_tree_ifmainmtrlid[ll_row] = 1 THEN
  1105. MessageBox('提示','销售订单明细物料不能变更')
  1106. RETURN
  1107. END IF
  1108. s_order_ml_mrp_change s_chagne,s_rslt
  1109. s_chagne.s_plantype = dw_1.Object.u_OrderRqMtrl_tree_plantype[ll_row]
  1110. s_chagne.s_qty = dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_row]
  1111. s_chagne.ordertype = i_Ordertype
  1112. OpenWithParm(w_order_ml_mrp_change,s_chagne)
  1113. s_rslt = Message.PowerObjectParm
  1114. IF s_rslt.ifchanged = 0 THEN RETURN
  1115. CHOOSE CASE s_chagne.s_plantype
  1116. CASE 0
  1117. CHOOSE CASE s_rslt.c_plantype
  1118. CASE 2,6
  1119. li_cmpl_old = 1
  1120. li_cmpl_new = 0
  1121. CASE 3
  1122. li_cmpl_old = 1
  1123. li_cmpl_new = 1
  1124. END CHOOSE
  1125. CASE 3
  1126. CHOOSE CASE s_rslt.c_plantype
  1127. CASE 2,6
  1128. li_cmpl_old = 1
  1129. li_cmpl_new = 0
  1130. CASE 0
  1131. li_cmpl_old = 1
  1132. li_cmpl_new = 1
  1133. END CHOOSE
  1134. CASE 2,6
  1135. CHOOSE CASE s_rslt.c_plantype
  1136. CASE 2,6
  1137. li_cmpl_old = 0
  1138. li_cmpl_new = 0
  1139. CASE 0,3
  1140. li_cmpl_old = 0
  1141. li_cmpl_new = 1
  1142. END CHOOSE
  1143. END CHOOSE
  1144. dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_row] = s_chagne.s_qty - s_rslt.c_qty
  1145. IF li_cmpl_old = 1 THEN
  1146. END IF
  1147. dw_1.AcceptText()
  1148. //ll_row_insert = dw_1.InsertRow(0)
  1149. //ll_row_insert = dw_1.rowcount() + 1
  1150. ll_row_insert = ll_row + 1
  1151. dw_1.RowsCopy(ll_row,ll_row,Primary!,dw_1,ll_row_insert, Primary!)
  1152. dw_1.Object.u_OrderRqMtrl_tree_truerqqty[ll_row_insert] = s_rslt.c_qty
  1153. dw_1.Object.u_OrderRqMtrl_tree_plantype[ll_row_insert] = s_rslt.c_plantype
  1154. dw_1.Object.u_orderrqmtrl_tree_ifchanged[ll_row_insert] = 1
  1155. dw_1.Object.u_OrderRqMtrl_tree_rqqty[ll_row_insert] = 0
  1156. dw_1.Object.u_OrderRqMtrl_tree_mqty[ll_row_insert] = 0
  1157. dw_1.Object.u_OrderRqMtrl_tree_bqty[ll_row_insert] = 0
  1158. dw_1.Object.u_OrderRqMtrl_tree_wqty[ll_row_insert] = 0
  1159. dw_1.Object.u_OrderRqMtrl_tree_pqty[ll_row_insert] = 0
  1160. IF li_cmpl_new = 1 THEN
  1161. END IF
  1162. end event
  1163. type cbx_if_allowuse from checkbox within w_order_ml_mrp
  1164. integer x = 32
  1165. integer y = 200
  1166. integer width = 471
  1167. integer height = 60
  1168. boolean bringtotop = true
  1169. integer textsize = -9
  1170. integer weight = 400
  1171. fontcharset fontcharset = gb2312charset!
  1172. fontpitch fontpitch = variable!
  1173. string facename = "宋体"
  1174. long textcolor = 33554432
  1175. long backcolor = 134217739
  1176. string text = "运算考虑可用数"
  1177. end type
  1178. event clicked;IF THIS.Checked THEN
  1179. cbx_ifwx_mtrl_not_useqty.Enabled = TRUE
  1180. cbx_ifbuy_mtrl_not_useqty.Enabled = TRUE
  1181. ELSE
  1182. cbx_ifwx_mtrl_not_useqty.Enabled = FALSE
  1183. cbx_ifwx_mtrl_not_useqty.Checked = FALSE
  1184. cbx_ifbuy_mtrl_not_useqty.Enabled = FALSE
  1185. cbx_ifbuy_mtrl_not_useqty.Checked = FALSE
  1186. END IF
  1187. end event
  1188. type cb_change from uo_imflatbutton within w_order_ml_mrp
  1189. integer x = 987
  1190. integer width = 165
  1191. integer height = 164
  1192. integer taborder = 50
  1193. boolean bringtotop = true
  1194. boolean enabled = false
  1195. string text = "换料"
  1196. string normalpicname = "p1.bmp"
  1197. integer picsize = 16
  1198. toolbaralignment pic_align = alignattop!
  1199. boolean border = false
  1200. end type
  1201. event clicked;call super::clicked;Long ll_row,ll_row_insert
  1202. Int li_plantype_old,li_plantype_new
  1203. Int li_ifselforder_old,li_ifselforder_new
  1204. Long ll_scid_old,ll_scid_new
  1205. Long ll_mtrlid_old,ll_mtrlid_new
  1206. Decimal ld_cmplqty,ld_rqqty
  1207. Int li_cmpl_old,li_cmpl_new
  1208. Boolean if_special_notuse = FALSE
  1209. dw_1.AcceptText()
  1210. ll_row = dw_1.GetRow()
  1211. IF ll_row <= 0 THEN
  1212. MessageBox(publ_operator,'请选择目标物料')
  1213. RETURN
  1214. END IF
  1215. IF dw_1.Object.u_OrderRqMtrl_tree_ifmainmtrlid[ll_row] = 1 THEN
  1216. MessageBox('提示','销售订单明细物料不能换料')
  1217. RETURN
  1218. END IF
  1219. ll_mtrlid_old = dw_1.Object.u_orderrqmtrl_tree_mtrlid[ll_row]
  1220. li_plantype_old = dw_1.Object.u_orderrqmtrl_tree_plantype[ll_row]
  1221. ld_cmplqty = dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_row]
  1222. ld_rqqty = dw_1.Object.u_orderrqmtrl_tree_rqqty[ll_row]
  1223. ll_scid_old = dw_1.Object.u_orderrqmtrl_tree_produce_scid[ll_row]
  1224. IF NOT IsValid(w_order_ml_orderrqmtrl_change) THEN
  1225. OpenWithParm(w_order_ml_orderrqmtrl_change,ll_mtrlid_old)
  1226. s_mtrldef_array s_inscust
  1227. s_inscust = Message.PowerObjectParm
  1228. IF s_inscust.mtrlid[1] > 0 THEN
  1229. ll_mtrlid_new = s_inscust.mtrlid[1]
  1230. li_plantype_new = s_inscust.mtrlorigin[1]
  1231. IF ll_mtrlid_new = ll_mtrlid_old THEN RETURN
  1232. li_cmpl_old = 1
  1233. li_cmpl_new = 0
  1234. //处理
  1235. Int rslt = 1
  1236. Long ll_i
  1237. String arg_msg
  1238. s_order_ml_rqmtrl s_ref_mtrl
  1239. s_order_ml_rqmtrl s_ref_mtrl_ch
  1240. uo_order_ml_mrp uo_m
  1241. uo_m = CREATE uo_order_ml_mrp
  1242. uo_m.ifbuy_mtrl_not_useqty = cbx_ifbuy_mtrl_not_useqty.Checked
  1243. uo_m.ifwx_mtrl_not_useqty = cbx_ifwx_mtrl_not_useqty.Checked
  1244. Int li_if_allowuse,li_if_date
  1245. IF cbx_if_allowuse.Checked THEN
  1246. li_if_allowuse = 1
  1247. ELSE
  1248. li_if_allowuse = 0
  1249. END IF
  1250. li_if_date = 0
  1251. //源物料
  1252. dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_row] = 0
  1253. dw_1.Object.u_orderrqmtrl_tree_rqqty[ll_row] = 0
  1254. IF li_cmpl_old = 1 THEN
  1255. Long ll_j,ll_m
  1256. Long ll_row_tmp
  1257. Long ll_pmtrlid_tmp1,ll_pmtrlid_tmp2
  1258. FOR ll_j = ll_row + 1 TO dw_1.RowCount()
  1259. IF dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_j] = dw_1.Object.u_orderrqmtrl_tree_mtrlid[ll_row] THEN
  1260. dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_j] = 0
  1261. dw_1.Object.u_orderrqmtrl_tree_rqqty[ll_j] = 0
  1262. ll_pmtrlid_tmp2 = 0
  1263. ll_pmtrlid_tmp1 = dw_1.Object.u_orderrqmtrl_tree_mtrlid[ll_j]
  1264. ll_row_tmp = ll_j + 1
  1265. DO WHILE ll_row_tmp <= dw_1.RowCount()
  1266. ll_pmtrlid_tmp2 = dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_row_tmp]
  1267. IF ll_pmtrlid_tmp2 = ll_pmtrlid_tmp1 THEN
  1268. FOR ll_m = ll_row_tmp TO dw_1.RowCount()
  1269. IF ll_pmtrlid_tmp1 = dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_m] THEN
  1270. dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_m] = 0
  1271. dw_1.Object.u_orderrqmtrl_tree_rqqty[ll_m] = 0
  1272. END IF
  1273. NEXT
  1274. ll_pmtrlid_tmp1 = dw_1.Object.u_orderrqmtrl_tree_mtrlid[ll_row_tmp]
  1275. ll_row_tmp = ll_j + 1
  1276. ELSE
  1277. EXIT
  1278. END IF
  1279. LOOP
  1280. END IF
  1281. NEXT
  1282. END IF
  1283. //新物料
  1284. IF li_cmpl_new = 1 THEN
  1285. ll_row_insert = dw_1.InsertRow(0)
  1286. ELSE
  1287. ll_row_insert = dw_1.InsertRow(ll_row + 1)
  1288. END IF
  1289. dw_1.Object.u_orderrqmtrl_tree_mtrlid[ll_row_insert] = ll_mtrlid_new
  1290. dw_1.Object.u_mtrldef_mtrlcode[ll_row_insert] = s_inscust.mtrlcode[1]
  1291. dw_1.Object.u_mtrldef_mtrlname[ll_row_insert] = s_inscust.mtrlname[1]
  1292. dw_1.Object.u_mtrldef_mtrlmode[ll_row_insert] = s_inscust.mtrlmode[1]
  1293. dw_1.Object.u_mtrldef_unit[ll_row_insert] = s_inscust.unit[1]
  1294. dw_1.Object.u_mtrldef_mtrltype[ll_row_insert] = s_inscust.mtrltype[1]
  1295. dw_1.Object.u_mtrldef_mtrlprp[ll_row_insert] = s_inscust.mtrlprp[1]
  1296. dw_1.Object.u_orderrqmtrl_tree_plantype[ll_row_insert] = li_plantype_new
  1297. dw_1.Object.u_mtrldef_mtrlorigin[ll_row_insert] = li_plantype_new
  1298. dw_1.Object.u_OrderRqMtrl_tree_status[ll_row_insert] = s_inscust.status[1]
  1299. dw_1.Object.u_OrderRqMtrl_tree_woodcode[ll_row_insert] = s_inscust.woodcode[1]
  1300. dw_1.Object.u_OrderRqMtrl_tree_pcode[ll_row_insert] = s_inscust.pcode[1]
  1301. dw_1.Object.iflock[ll_row_insert] = 1
  1302. dw_1.Object.ifcmpl[ll_row_insert] = 1
  1303. Decimal ld_ckwareqty
  1304. Decimal ld_mqty
  1305. Decimal ld_bqty
  1306. Decimal ld_wqty
  1307. Decimal ld_pqty
  1308. Decimal ld_otherrqqty
  1309. Decimal ld_samerqqty
  1310. DateTime ldt_rqdate
  1311. String ls_pfcode
  1312. String ls_status,ls_woodcode,ls_pcode
  1313. ldt_rqdate = dw_1.Object.u_OrderRqMtrl_tree_rqdate[ll_row_insert]
  1314. dw_1.Object.u_orderrqmtrl_tree_rqqty[ll_row_insert] = ld_rqqty
  1315. ls_status = dw_1.Object.u_OrderRqMtrl_tree_status[ll_row_insert]
  1316. ls_woodcode = dw_1.Object.u_OrderRqMtrl_tree_woodcode[ll_row_insert]
  1317. ls_pcode = dw_1.Object.u_OrderRqMtrl_tree_pcode[ll_row_insert]
  1318. IF uo_m.uof_get_qty(1,i_scid,i_taskid,i_printid,ll_mtrlid_new,ls_status,ls_woodcode,ls_pcode,ld_bqty,arg_msg) = 0 THEN
  1319. rslt = 0
  1320. GOTO ext
  1321. END IF
  1322. IF uo_m.uof_get_qty(2,i_scid,i_taskid,i_printid,ll_mtrlid_new,ls_status,ls_woodcode,ls_pcode,ld_pqty,arg_msg) = 0 THEN
  1323. rslt = 0
  1324. GOTO ext
  1325. END IF
  1326. IF uo_m.uof_get_qty(3,i_scid,i_taskid,i_printid,ll_mtrlid_new,ls_status,ls_woodcode,ls_pcode,ld_wqty,arg_msg) = 0 THEN
  1327. rslt = 0
  1328. GOTO ext
  1329. END IF
  1330. // IF uo_m.uof_get_qty(4,li_if_date,ldt_rqdate,i_scid,i_orderid,ll_mtrlid_new,ls_status,ls_woodcode,ls_pcode,ld_mqty,arg_msg) = 0 THEN
  1331. // rslt = 0
  1332. // GOTO ext
  1333. // END IF
  1334. //
  1335. // IF uo_m.uof_get_other_rqqty(i_scid,i_orderid,ll_mtrlid_new,li_plantype_new,ls_status,ls_woodcode,ls_pcode,ld_otherrqqty,li_if_date,ldt_rqdate,arg_msg) = 0 THEN
  1336. // rslt = 0
  1337. // GOTO ext
  1338. // END IF
  1339. dw_1.Object.u_orderrqmtrl_tree_mqty[ll_row_insert] = ld_mqty
  1340. dw_1.Object.u_orderrqmtrl_tree_bqty[ll_row_insert] = ld_bqty
  1341. dw_1.Object.u_orderrqmtrl_tree_wqty[ll_row_insert] = ld_wqty
  1342. dw_1.Object.u_orderrqmtrl_tree_pqty[ll_row_insert] = ld_pqty
  1343. dw_1.Object.u_orderrqmtrl_tree_otherrqqty[ll_row_insert] = ld_otherrqqty
  1344. dw_1.Object.u_orderrqmtrl_tree_samerqqty[ll_row_insert] = ld_samerqqty
  1345. ld_ckwareqty = ld_mqty + ld_bqty + ld_wqty + ld_pqty - ld_otherrqqty - ld_samerqqty
  1346. dw_1.Object.ckwareqty[ll_row_insert] = ld_ckwareqty
  1347. IF cbx_if_allowuse.Checked THEN
  1348. IF cbx_ifbuy_mtrl_not_useqty.Checked OR &
  1349. cbx_ifwx_mtrl_not_useqty.Checked THEN
  1350. IF li_plantype_new = 2 THEN
  1351. IF cbx_ifbuy_mtrl_not_useqty.Checked THEN
  1352. ld_cmplqty = ld_rqqty
  1353. if_special_notuse = TRUE
  1354. END IF
  1355. ELSEIF li_plantype_new = 3 THEN
  1356. IF cbx_ifwx_mtrl_not_useqty.Checked THEN
  1357. ld_cmplqty = ld_rqqty
  1358. if_special_notuse = TRUE
  1359. END IF
  1360. END IF
  1361. END IF
  1362. IF NOT if_special_notuse THEN
  1363. IF ld_ckwareqty > 0 THEN
  1364. IF ld_rqqty <= ld_ckwareqty THEN
  1365. ld_cmplqty = 0
  1366. ELSE
  1367. ld_cmplqty = ld_rqqty - ld_ckwareqty
  1368. END IF
  1369. ELSE
  1370. ld_cmplqty = ld_rqqty
  1371. END IF
  1372. END IF
  1373. ELSE
  1374. ld_cmplqty = ld_rqqty
  1375. END IF
  1376. dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_row_insert] = ld_cmplqty
  1377. dw_1.Object.u_OrderRqMtrl_tree_wrkgrpid[ll_row_insert] = dw_1.Object.u_OrderRqMtrl_tree_wrkgrpid[ll_row]
  1378. dw_1.Object.u_orderrqmtrl_tree_scid[ll_row_insert] = dw_1.Object.u_orderrqmtrl_tree_scid[ll_row]
  1379. dw_1.Object.u_orderrqmtrl_tree_taskid[ll_row_insert] = dw_1.Object.u_orderrqmtrl_tree_taskid[ll_row]
  1380. dw_1.Object.u_orderrqmtrl_tree_printid[ll_row_insert] = dw_1.Object.u_orderrqmtrl_tree_printid[ll_row]
  1381. dw_1.Object.u_orderrqmtrl_tree_ifchanged[ll_row_insert] = 1
  1382. dw_1.Object.u_orderrqmtrl_tree_lp[ll_row_insert] = dw_1.Object.u_orderrqmtrl_tree_lp[ll_row]
  1383. dw_1.Object.u_OrderRqMtrl_tree_ifmainmtrlid[ll_row_insert] = dw_1.Object.u_OrderRqMtrl_tree_ifmainmtrlid[ll_row]
  1384. dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_row_insert] = dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_row]
  1385. IF li_cmpl_new = 1 THEN
  1386. IF uo_m.uof_cmpl_rqmtrl_re(i_scid,i_taskid,i_printid,&
  1387. dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_row_insert],ll_mtrlid_new,&
  1388. dw_1.Object.u_orderrqmtrl_tree_plantype[ll_row_insert],&
  1389. ls_status,ls_woodcode,ls_pcode,ld_cmplqty,&
  1390. dw_1.Object.u_OrderRqMtrl_tree_wrkgrpid[ll_row_insert],&
  1391. dw_1.Object.u_orderrqmtrl_tree_lp[ll_row_insert],&
  1392. li_if_allowuse,s_ref_mtrl,arg_msg) = 0 THEN
  1393. rslt = 0
  1394. GOTO ext
  1395. END IF
  1396. FOR ll_i = 1 TO UpperBound(s_ref_mtrl.mtrlid)
  1397. ll_row_insert = dw_1.InsertRow(0)
  1398. dw_1.Object.u_orderrqmtrl_tree_scid[ll_row_insert] = i_scid
  1399. dw_1.Object.u_OrderRqMtrl_tree_taskid[ll_row_insert] = i_taskid
  1400. dw_1.Object.u_OrderRqMtrl_tree_printid[ll_row_insert] = i_printid
  1401. dw_1.Object.u_mtrldef_mtrlcode[ll_row_insert] = s_ref_mtrl.mtrlcode[ll_i]
  1402. dw_1.Object.u_mtrldef_mtrlname[ll_row_insert] = s_ref_mtrl.mtrlname[ll_i]
  1403. dw_1.Object.u_mtrldef_mtrlmode[ll_row_insert] = s_ref_mtrl.mtrlmode[ll_i]
  1404. dw_1.Object.u_mtrldef_unit[ll_row_insert] = s_ref_mtrl.unit[ll_i]
  1405. dw_1.Object.u_mtrldef_mtrlorigin[ll_row_insert] = s_ref_mtrl.mtrlorigin[ll_i]
  1406. dw_1.Object.u_mtrldef_mtrltype[ll_row_insert] = s_ref_mtrl.mtrltype[ll_i]
  1407. dw_1.Object.u_OrderRqMtrl_tree_wrkgrpid[ll_row_insert] = s_ref_mtrl.wrkgrpid_scll[ll_i]
  1408. dw_1.Object.u_OrderRqMtrl_tree_status[ll_row_insert] = s_ref_mtrl.status[ll_i]
  1409. dw_1.Object.u_OrderRqMtrl_tree_woodcode[ll_row_insert] = s_ref_mtrl.woodcode[ll_i]
  1410. dw_1.Object.u_OrderRqMtrl_tree_pcode[ll_row_insert] = s_ref_mtrl.pcode[ll_i]
  1411. dw_1.Object.u_orderrqmtrl_tree_lp[ll_row_insert] = s_ref_mtrl.lp[ll_i]
  1412. dw_1.Object.u_orderrqmtrl_tree_mtrlid[ll_row_insert] = s_ref_mtrl.mtrlid[ll_i]
  1413. dw_1.Object.u_orderrqmtrl_tree_rqqty[ll_row_insert] = s_ref_mtrl.qty[ll_i]
  1414. dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_row_insert] = s_ref_mtrl.cmplqty[ll_i]
  1415. dw_1.Object.u_orderrqmtrl_tree_plantype[ll_row_insert] = s_ref_mtrl.plantype[ll_i]
  1416. dw_1.Object.u_orderrqmtrl_tree_mqty[ll_row_insert] = s_ref_mtrl.mqty[ll_i]
  1417. dw_1.Object.u_orderrqmtrl_tree_bqty[ll_row_insert] = s_ref_mtrl.bqty[ll_i]
  1418. dw_1.Object.u_orderrqmtrl_tree_wqty[ll_row_insert] = s_ref_mtrl.wqty[ll_i]
  1419. dw_1.Object.u_orderrqmtrl_tree_pqty[ll_row_insert] = s_ref_mtrl.pqty[ll_i]
  1420. dw_1.Object.u_orderrqmtrl_tree_otherrqqty[ll_row_insert] = s_ref_mtrl.otherrqqty[ll_i]
  1421. dw_1.Object.ckwareqty[ll_row_insert] = s_ref_mtrl.mqty[ll_i] + s_ref_mtrl.bqty[ll_i] + s_ref_mtrl.wqty[ll_i] + s_ref_mtrl.pqty[ll_i] - s_ref_mtrl.otherrqqty[ll_i]
  1422. dw_1.Object.u_orderrqmtrl_tree_samerqqty[ll_row_insert] = s_ref_mtrl.samerqqty[ll_i]
  1423. dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_row_insert] = s_ref_mtrl.pmtrlid[ll_i]
  1424. dw_1.Object.u_orderrqmtrl_tree_ifchanged[ll_row_insert] = s_ref_mtrl.ifchanged[ll_i]
  1425. dw_1.Object.u_OrderRqMtrl_tree_ifmainmtrlid[ll_row_insert] = s_ref_mtrl.ifmainmtrlid[ll_i]
  1426. NEXT
  1427. END IF
  1428. END IF
  1429. END IF
  1430. ext:
  1431. DESTROY uo_m
  1432. end event
  1433. type st_dscrp from statictext within w_order_ml_mrp
  1434. integer x = 23
  1435. integer y = 308
  1436. integer width = 3543
  1437. integer height = 56
  1438. boolean bringtotop = true
  1439. integer textsize = -9
  1440. integer weight = 700
  1441. fontcharset fontcharset = gb2312charset!
  1442. fontpitch fontpitch = variable!
  1443. string facename = "宋体"
  1444. long textcolor = 16711680
  1445. long backcolor = 134217739
  1446. string text = "销售订单备注:"
  1447. boolean focusrectangle = false
  1448. end type
  1449. type cb_change_pz from uo_imflatbutton within w_order_ml_mrp
  1450. integer x = 1152
  1451. integer width = 219
  1452. integer height = 164
  1453. integer taborder = 50
  1454. boolean bringtotop = true
  1455. boolean enabled = false
  1456. string text = "改配置"
  1457. string normalpicname = "p1.bmp"
  1458. integer picsize = 16
  1459. toolbaralignment pic_align = alignattop!
  1460. boolean border = false
  1461. end type
  1462. event clicked;call super::clicked;Int rslt = 1
  1463. Long ll_row
  1464. Long ll_mtrlid,ll_pmtrlid,ll_wrkgrpid
  1465. Decimal ld_cmplqty,ld_rqqty,ld_cmplqty_change
  1466. String ls_status,ls_woodcode,ls_pcode
  1467. Int li_if_add //0:改变时用加,1:改变时用减
  1468. String arg_msg
  1469. Boolean if_special_notuse = FALSE
  1470. Decimal ld_ckwareqty
  1471. Decimal ld_mqty
  1472. Decimal ld_bqty
  1473. Decimal ld_wqty
  1474. Decimal ld_pqty
  1475. Decimal ld_otherrqqty
  1476. Decimal ld_samerqqty
  1477. DateTime ldt_rqdate
  1478. String ls_pfcode
  1479. Int li_plantype
  1480. Int li_ifselforder
  1481. s_order_ml_rqmtrl s_ref_mtrl
  1482. dw_1.AcceptText()
  1483. ll_row = dw_1.GetRow()
  1484. uo_order_ml_mrp uo_m
  1485. uo_m = CREATE uo_order_ml_mrp
  1486. uo_m.ifbuy_mtrl_not_useqty = cbx_ifbuy_mtrl_not_useqty.Checked
  1487. uo_m.ifwx_mtrl_not_useqty = cbx_ifwx_mtrl_not_useqty.Checked
  1488. IF ll_row <= 0 THEN
  1489. arg_msg = '请选择目标物料'
  1490. rslt = 0
  1491. GOTO ext
  1492. END IF
  1493. IF dw_1.Object.u_OrderRqMtrl_tree_ifmainmtrlid[ll_row] = 1 THEN
  1494. arg_msg = '销售订单明细物料不能换配置'
  1495. rslt = 0
  1496. GOTO ext
  1497. END IF
  1498. ll_mtrlid = dw_1.Object.u_orderrqmtrl_tree_mtrlid[ll_row]
  1499. ls_status = dw_1.Object.u_orderrqmtrl_tree_status[ll_row]
  1500. ls_woodcode = dw_1.Object.u_orderrqmtrl_tree_woodcode[ll_row]
  1501. ls_pcode = dw_1.Object.u_orderrqmtrl_tree_pcode[ll_row]
  1502. li_plantype = dw_1.Object.u_orderrqmtrl_tree_plantype[ll_row]
  1503. ld_rqqty = dw_1.Object.u_orderrqmtrl_tree_rqqty[ll_row]
  1504. ll_pmtrlid = dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_row]
  1505. ll_wrkgrpid = dw_1.Object.u_OrderRqMtrl_tree_wrkgrpid[ll_row]
  1506. s_order_ml_mrp_changepz s_chpz_open,s_chpz_rst
  1507. s_chpz_open.mtrlid = ll_mtrlid
  1508. s_chpz_open.status = ls_status
  1509. s_chpz_open.woodcode = ls_woodcode
  1510. s_chpz_open.pcode = ls_pcode
  1511. IF NOT IsValid(w_order_ml_mrp_changepz) THEN
  1512. OpenWithParm(w_order_ml_mrp_changepz,s_chpz_open)
  1513. s_chpz_rst = Message.PowerObjectParm
  1514. IF s_chpz_rst.ifchange = 0 THEN
  1515. rslt = -1
  1516. GOTO ext
  1517. END IF
  1518. IF s_chpz_rst.status = ls_status AND &
  1519. s_chpz_rst.woodcode = ls_woodcode AND &
  1520. s_chpz_rst.pcode = ls_pcode THEN
  1521. rslt = 1
  1522. GOTO ext
  1523. END IF
  1524. Int li_if_allowuse,li_if_date
  1525. IF cbx_if_allowuse.Checked THEN
  1526. li_if_allowuse = 1
  1527. ELSE
  1528. li_if_allowuse = 0
  1529. END IF
  1530. li_if_date = 0
  1531. IF uo_m.uof_get_qty(1,i_scid,i_taskid,i_printid,ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ld_bqty,arg_msg) = 0 THEN
  1532. rslt = 0
  1533. GOTO ext
  1534. END IF
  1535. IF uo_m.uof_get_qty(2,i_scid,i_taskid,i_printid,ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ld_pqty,arg_msg) = 0 THEN
  1536. rslt = 0
  1537. GOTO ext
  1538. END IF
  1539. IF uo_m.uof_get_qty(3,i_scid,i_taskid,i_printid,ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ld_wqty,arg_msg) = 0 THEN
  1540. rslt = 0
  1541. GOTO ext
  1542. END IF
  1543. // IF uo_m.uof_get_qty(4,li_if_date,ldt_rqdate,i_scid,i_orderid,ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ld_mqty,arg_msg) = 0 THEN
  1544. // rslt = 0
  1545. // GOTO ext
  1546. // END IF
  1547. //
  1548. // IF uo_m.uof_get_other_rqqty(i_scid,i_orderid,ll_mtrlid,li_plantype,ls_status,ls_woodcode,ls_pcode,ld_otherrqqty,li_if_date,ldt_rqdate,arg_msg) = 0 THEN
  1549. // rslt = 0
  1550. // GOTO ext
  1551. // END IF
  1552. //
  1553. ld_ckwareqty = ld_mqty + ld_bqty + ld_wqty + ld_pqty - ld_otherrqqty - ld_samerqqty
  1554. IF cbx_if_allowuse.Checked THEN
  1555. IF cbx_ifbuy_mtrl_not_useqty.Checked OR &
  1556. cbx_ifwx_mtrl_not_useqty.Checked THEN
  1557. IF li_plantype = 2 THEN
  1558. IF cbx_ifbuy_mtrl_not_useqty.Checked THEN
  1559. ld_cmplqty = ld_rqqty
  1560. if_special_notuse = TRUE
  1561. END IF
  1562. ELSEIF li_plantype = 3 THEN
  1563. IF cbx_ifwx_mtrl_not_useqty.Checked THEN
  1564. ld_cmplqty = ld_rqqty
  1565. if_special_notuse = TRUE
  1566. END IF
  1567. END IF
  1568. END IF
  1569. IF NOT if_special_notuse THEN
  1570. IF ld_ckwareqty > 0 THEN
  1571. IF ld_rqqty <= ld_ckwareqty THEN
  1572. ld_cmplqty = 0
  1573. ELSE
  1574. ld_cmplqty = ld_rqqty - ld_ckwareqty
  1575. END IF
  1576. ELSE
  1577. ld_cmplqty = ld_rqqty
  1578. END IF
  1579. END IF
  1580. ELSE
  1581. ld_cmplqty = ld_rqqty
  1582. END IF
  1583. IF cbx_if_allowuse.Checked THEN
  1584. IF ld_cmplqty = dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_row] THEN
  1585. ld_cmplqty_change = 0
  1586. ELSEIF ld_cmplqty > dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_row] THEN
  1587. ld_cmplqty_change = ld_cmplqty - dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_row]
  1588. li_if_add = 0
  1589. ELSEIF ld_cmplqty < dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_row] THEN
  1590. ld_cmplqty_change = dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_row] - ld_cmplqty
  1591. li_if_add = 1
  1592. END IF
  1593. IF ld_cmplqty_change <> 0 THEN
  1594. IF uo_m.uof_cmpl_rqmtrl_change(i_scid,ll_pmtrlid,ll_mtrlid,&
  1595. s_chpz_rst.status,s_chpz_rst.woodcode,s_chpz_rst.pcode,&
  1596. ld_cmplqty_change,s_ref_mtrl,arg_msg) = 0 THEN
  1597. rslt = 0
  1598. GOTO ext
  1599. END IF
  1600. Long ll_f_row,ll_j,ll_i
  1601. FOR ll_i = 1 TO UpperBound(s_ref_mtrl.mtrlid)
  1602. ll_f_row = 0
  1603. ll_j = 0
  1604. dw_1.AcceptText()
  1605. FOR ll_j = ll_row + 1 TO dw_1.RowCount()
  1606. IF dw_1.Object.u_orderrqmtrl_tree_mtrlid[ll_j] = s_ref_mtrl.mtrlid[ll_i] AND &
  1607. dw_1.Object.u_orderrqmtrl_tree_status[ll_j] = s_ref_mtrl.status[ll_i] AND &
  1608. dw_1.Object.u_orderrqmtrl_tree_woodcode[ll_j] = s_ref_mtrl.woodcode[ll_i] AND &
  1609. dw_1.Object.u_orderrqmtrl_tree_pcode[ll_j] = s_ref_mtrl.pcode[ll_i] AND &
  1610. dw_1.Object.u_OrderRqMtrl_tree_wrkgrpid[ll_j] = s_ref_mtrl.wrkgrpid_scll[ll_i] AND &
  1611. dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_j] = s_ref_mtrl.pmtrlid[ll_i] THEN
  1612. ll_f_row = ll_j
  1613. EXIT
  1614. END IF
  1615. NEXT
  1616. IF ll_f_row = 0 THEN
  1617. arg_msg = '查询物料:'+s_ref_mtrl.mtrlcode[ll_i]+',变更行数失败'
  1618. rslt = 0
  1619. GOTO ext
  1620. END IF
  1621. NEXT
  1622. FOR ll_i = 1 TO UpperBound(s_ref_mtrl.mtrlid)
  1623. ll_f_row = 0
  1624. ll_j = 0
  1625. dw_1.AcceptText()
  1626. FOR ll_j = ll_row + 1 TO dw_1.RowCount()
  1627. IF dw_1.Object.u_orderrqmtrl_tree_mtrlid[ll_j] = s_ref_mtrl.mtrlid[ll_i] AND &
  1628. dw_1.Object.u_orderrqmtrl_tree_status[ll_j] = s_ref_mtrl.status[ll_i] AND &
  1629. dw_1.Object.u_orderrqmtrl_tree_woodcode[ll_j] = s_ref_mtrl.woodcode[ll_i] AND &
  1630. dw_1.Object.u_orderrqmtrl_tree_pcode[ll_j] = s_ref_mtrl.pcode[ll_i] AND &
  1631. dw_1.Object.u_OrderRqMtrl_tree_wrkgrpid[ll_j] = s_ref_mtrl.wrkgrpid_scll[ll_i] AND &
  1632. dw_1.Object.u_OrderRqMtrl_tree_pmtrlid[ll_j] = s_ref_mtrl.pmtrlid[ll_i] THEN
  1633. ll_f_row = ll_j
  1634. EXIT
  1635. END IF
  1636. NEXT
  1637. IF li_if_add = 0 THEN
  1638. dw_1.Object.u_orderrqmtrl_tree_rqqty[ll_f_row] = dw_1.Object.u_orderrqmtrl_tree_rqqty[ll_f_row] + s_ref_mtrl.qty[ll_i]
  1639. dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_f_row] = dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_f_row] + s_ref_mtrl.cmplqty[ll_i]
  1640. ELSE
  1641. dw_1.Object.u_orderrqmtrl_tree_rqqty[ll_f_row] = dw_1.Object.u_orderrqmtrl_tree_rqqty[ll_f_row] - s_ref_mtrl.qty[ll_i]
  1642. IF dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_f_row] - s_ref_mtrl.cmplqty[ll_i] < 0 THEN
  1643. dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_f_row] = 0
  1644. ELSE
  1645. dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_f_row] = dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_f_row] - s_ref_mtrl.cmplqty[ll_i]
  1646. END IF
  1647. END IF
  1648. NEXT
  1649. END IF
  1650. END IF
  1651. dw_1.Object.u_orderrqmtrl_tree_mqty[ll_row] = ld_mqty
  1652. dw_1.Object.u_orderrqmtrl_tree_bqty[ll_row] = ld_bqty
  1653. dw_1.Object.u_orderrqmtrl_tree_wqty[ll_row] = ld_wqty
  1654. dw_1.Object.u_orderrqmtrl_tree_pqty[ll_row] = ld_pqty
  1655. dw_1.Object.u_orderrqmtrl_tree_otherrqqty[ll_row] = ld_otherrqqty
  1656. dw_1.Object.u_orderrqmtrl_tree_samerqqty[ll_row] = ld_samerqqty
  1657. dw_1.Object.ckwareqty[ll_row] = ld_ckwareqty
  1658. dw_1.Object.u_orderrqmtrl_tree_status[ll_row] = s_chpz_rst.status
  1659. dw_1.Object.u_orderrqmtrl_tree_woodcode[ll_row] = s_chpz_rst.woodcode
  1660. dw_1.Object.u_orderrqmtrl_tree_pcode[ll_row] = s_chpz_rst.pcode
  1661. dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_row] = ld_cmplqty
  1662. END IF
  1663. ext:
  1664. IF rslt = 0 THEN
  1665. MessageBox('提示','操作失败,'+arg_msg)
  1666. ELSE
  1667. MessageBox('提示','操作成功')
  1668. END IF
  1669. DESTROY uo_m
  1670. end event
  1671. type cb_cancel_scll from uo_imflatbutton within w_order_ml_mrp
  1672. integer x = 1371
  1673. integer height = 164
  1674. integer taborder = 60
  1675. boolean bringtotop = true
  1676. boolean enabled = false
  1677. string text = "取消领料"
  1678. string normalpicname = "mx.BMP"
  1679. integer picsize = 16
  1680. toolbaralignment pic_align = alignattop!
  1681. boolean border = false
  1682. end type
  1683. event clicked;call super::clicked;Long ll_row
  1684. dw_1.AcceptText()
  1685. ll_row = dw_1.GetRow()
  1686. IF ll_row <= 0 THEN
  1687. MessageBox('提示','请选择目标物料')
  1688. RETURN
  1689. END IF
  1690. IF dw_1.Object.u_OrderRqMtrl_tree_ifmainmtrlid[ll_row] = 1 THEN
  1691. MessageBox('提示','生产计划物料不能操作')
  1692. RETURN
  1693. END IF
  1694. IF dw_1.Object.u_orderrqmtrl_tree_truerqqty[ll_row] <> 0 THEN
  1695. MessageBox('提示','物料有需求数,不能取消领料')
  1696. RETURN
  1697. END IF
  1698. IF dw_1.Object.u_orderrqmtrl_tree_rqqty[ll_row] = 0 THEN
  1699. MessageBox('提示','物料没有领料数,不能取消领料')
  1700. RETURN
  1701. END IF
  1702. dw_1.Object.u_orderrqmtrl_tree_rqqty[ll_row] = 0
  1703. dw_1.Object.u_orderrqmtrl_tree_ifchanged[ll_row] = 1
  1704. end event
  1705. type cbx_ifwx_mtrl_not_useqty from checkbox within w_order_ml_mrp
  1706. integer x = 1056
  1707. integer y = 200
  1708. integer width = 521
  1709. integer height = 60
  1710. boolean bringtotop = true
  1711. integer textsize = -9
  1712. integer weight = 400
  1713. fontcharset fontcharset = gb2312charset!
  1714. fontpitch fontpitch = variable!
  1715. string facename = "宋体"
  1716. long textcolor = 16711680
  1717. long backcolor = 134217739
  1718. string text = "外协不考虑可用数"
  1719. end type
  1720. type cb_sort from uo_imflatbutton within w_order_ml_mrp
  1721. integer x = 1673
  1722. integer width = 165
  1723. integer height = 164
  1724. integer taborder = 30
  1725. boolean bringtotop = true
  1726. string text = "排序"
  1727. string normalpicname = "other.BMP"
  1728. integer picsize = 16
  1729. toolbaralignment pic_align = alignattop!
  1730. boolean border = false
  1731. end type
  1732. event clicked;call super::clicked;m_Dfc_Control_PopupMenu dmPopupMenu
  1733. String menustr
  1734. menustr = "Text=按领料组排序~tEvent=ue_sort_1"
  1735. menustr = menustr + "|" + "Text=按物料类别排序~tEvent=ue_sort_2"
  1736. IF Len(Trim(menustr)) <> 0 THEN
  1737. dmPopupMenu = CREATE m_Dfc_Control_PopupMenu
  1738. dmPopupMenu.mf_BuildMenu(THIS, menustr)
  1739. dmPopupMenu.mf_PopMenu()
  1740. DESTROY dmPopupMenu
  1741. END IF
  1742. end event
  1743. type cb_help from uo_imflatbutton within w_order_ml_mrp
  1744. integer x = 1838
  1745. integer width = 151
  1746. integer height = 164
  1747. integer taborder = 20
  1748. boolean bringtotop = true
  1749. string text = "帮助"
  1750. string normalpicname = "help.bmp"
  1751. integer picsize = 16
  1752. toolbaralignment pic_align = alignattop!
  1753. boolean border = false
  1754. end type
  1755. event clicked;call super::clicked;PARENT.TriggerEvent('ue_help')
  1756. end event
  1757. type cbx_ifbuy_mtrl_not_useqty from checkbox within w_order_ml_mrp
  1758. integer x = 517
  1759. integer y = 200
  1760. integer width = 526
  1761. integer height = 60
  1762. boolean bringtotop = true
  1763. integer textsize = -9
  1764. integer weight = 400
  1765. fontcharset fontcharset = gb2312charset!
  1766. fontpitch fontpitch = variable!
  1767. string facename = "宋体"
  1768. long textcolor = 16711680
  1769. long backcolor = 134217739
  1770. string text = "采购不考虑可用数"
  1771. end type
  1772. type em_1 from editmask within w_order_ml_mrp
  1773. integer x = 2473
  1774. integer y = 64
  1775. integer width = 155
  1776. integer height = 72
  1777. integer taborder = 30
  1778. boolean bringtotop = true
  1779. integer textsize = -9
  1780. integer weight = 400
  1781. fontcharset fontcharset = gb2312charset!
  1782. fontpitch fontpitch = variable!
  1783. string facename = "宋体"
  1784. long textcolor = 33554432
  1785. string text = "1"
  1786. alignment alignment = right!
  1787. borderstyle borderstyle = stylelowered!
  1788. maskdatatype maskdatatype = decimalmask!
  1789. string mask = "#0.00"
  1790. end type
  1791. type st_1 from statictext within w_order_ml_mrp
  1792. integer x = 2226
  1793. integer y = 68
  1794. integer width = 247
  1795. integer height = 72
  1796. boolean bringtotop = true
  1797. integer textsize = -9
  1798. integer weight = 400
  1799. fontcharset fontcharset = gb2312charset!
  1800. fontpitch fontpitch = variable!
  1801. string facename = "宋体"
  1802. long textcolor = 33554432
  1803. long backcolor = 67108864
  1804. string text = "运算比例"
  1805. boolean focusrectangle = false
  1806. end type
  1807. event constructor;this.backcolor = 14215660
  1808. end event
  1809. type ln_1 from line within w_order_ml_mrp
  1810. long linecolor = 268435456
  1811. integer linethickness = 4
  1812. integer beginy = 284
  1813. integer endx = 3323
  1814. integer endy = 284
  1815. end type
  1816. type ln_2 from line within w_order_ml_mrp
  1817. long linecolor = 16777215
  1818. integer linethickness = 4
  1819. integer beginy = 288
  1820. integer endx = 3323
  1821. integer endy = 288
  1822. end type
  1823. type ln_3 from line within w_order_ml_mrp
  1824. long linecolor = 268435456
  1825. integer linethickness = 4
  1826. integer beginy = 380
  1827. integer endx = 3323
  1828. integer endy = 380
  1829. end type
  1830. type ln_4 from line within w_order_ml_mrp
  1831. long linecolor = 16777215
  1832. integer linethickness = 4
  1833. integer beginy = 384
  1834. integer endx = 3323
  1835. integer endy = 384
  1836. end type