w_order_ml_zl_autoscll.srw 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865
  1. $PBExportHeader$w_order_ml_zl_autoscll.srw
  2. forward
  3. global type w_order_ml_zl_autoscll from w_publ_base
  4. end type
  5. type dw_1 from u_dw_rbtnfilter within w_order_ml_zl_autoscll
  6. end type
  7. type dw_2 from u_dw_rbtnfilter within w_order_ml_zl_autoscll
  8. end type
  9. type cb_scll from uo_imflatbutton within w_order_ml_zl_autoscll
  10. end type
  11. type cb_wrk from uo_imflatbutton within w_order_ml_zl_autoscll
  12. end type
  13. type cbx_all from checkbox within w_order_ml_zl_autoscll
  14. end type
  15. type st_1 from statictext within w_order_ml_zl_autoscll
  16. end type
  17. type ddlb_1 from dropdownlistbox within w_order_ml_zl_autoscll
  18. end type
  19. type st_msg from statictext within w_order_ml_zl_autoscll
  20. end type
  21. type st_2 from statictext within w_order_ml_zl_autoscll
  22. end type
  23. type em_qty from editmask within w_order_ml_zl_autoscll
  24. end type
  25. type cb_storage from uo_imflatbutton within w_order_ml_zl_autoscll
  26. end type
  27. type ln_bar from line within w_order_ml_zl_autoscll
  28. end type
  29. type ln_bar2 from line within w_order_ml_zl_autoscll
  30. end type
  31. type r_bar from rectangle within w_order_ml_zl_autoscll
  32. end type
  33. type ln_1 from line within w_order_ml_zl_autoscll
  34. end type
  35. type ln_2 from line within w_order_ml_zl_autoscll
  36. end type
  37. end forward
  38. global type w_order_ml_zl_autoscll from w_publ_base
  39. integer width = 3611
  40. integer height = 2380
  41. string title = "指令单辅助配套领料"
  42. boolean minbox = false
  43. windowtype windowtype = response!
  44. windowstate windowstate = maximized!
  45. event retrieve_mx ( )
  46. dw_1 dw_1
  47. dw_2 dw_2
  48. cb_scll cb_scll
  49. cb_wrk cb_wrk
  50. cbx_all cbx_all
  51. st_1 st_1
  52. ddlb_1 ddlb_1
  53. st_msg st_msg
  54. st_2 st_2
  55. em_qty em_qty
  56. cb_storage cb_storage
  57. ln_bar ln_bar
  58. ln_bar2 ln_bar2
  59. r_bar r_bar
  60. ln_1 ln_1
  61. ln_2 ln_2
  62. end type
  63. global w_order_ml_zl_autoscll w_order_ml_zl_autoscll
  64. type variables
  65. s_edit_index_tran s_tran
  66. long ins_orderid
  67. long ins_scid
  68. int ins_storagetype = 0 // 0 - 取较少 1 - 取较多
  69. decimal ins_cmpqty = 0
  70. end variables
  71. forward prototypes
  72. public subroutine wf_cmp_enoughqty ()
  73. public subroutine wf_setdefault (long arg_ifstorage, long arg_ifwrkgrpid)
  74. end prototypes
  75. event retrieve_mx();Long ll_row
  76. Long ll_mtrlid
  77. String ls_status,ls_woodcode,ls_pcode
  78. ll_row = dw_1.GetRow()
  79. IF ll_row <= 0 THEN
  80. dw_2.Reset()
  81. ELSE
  82. ll_mtrlid = dw_1.Object.u_orderrqmtrl_scll_mtrlid[ll_row]
  83. ls_status = dw_1.Object.u_orderrqmtrl_scll_status[ll_row]
  84. ls_woodcode = dw_1.Object.u_orderrqmtrl_scll_woodcode[ll_row]
  85. ls_pcode = dw_1.Object.u_orderrqmtrl_scll_pcode[ll_row]
  86. dw_2.Retrieve(ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ins_scid)
  87. END IF
  88. end event
  89. public subroutine wf_cmp_enoughqty ();Decimal ld_min_rate,ld_max_rate,ld_cmpqty
  90. //计算参考可生产数
  91. SELECT Min(Case (u_orderrqmtrl_scll.truerqqty - u_orderrqmtrl_scll.dstrqty) when 0 THEN 1 ELSE IsNull(uv_mtrlware.noallocqty, 0)/(u_orderrqmtrl_scll.truerqqty - u_orderrqmtrl_scll.dstrqty) END )
  92. INTO :ld_min_rate
  93. FROM u_orderrqmtrl_scll Left Outer JOIN
  94. uv_mtrlware ON u_orderrqmtrl_scll.MtrlID = uv_mtrlware.MtrlID AND
  95. u_orderrqmtrl_scll.status = uv_mtrlware.status AND
  96. u_orderrqmtrl_scll.woodcode = uv_mtrlware.woodcode AND
  97. u_orderrqmtrl_scll.pcode = uv_mtrlware.pcode AND
  98. u_orderrqmtrl_scll.scid = uv_mtrlware.scid
  99. Where u_orderrqmtrl_scll.orderid = :ins_orderid
  100. AND u_orderrqmtrl_scll.scid = :ins_scid;
  101. IF sqlca.SQLCode <> 0 THEN
  102. ld_min_rate = 0
  103. END IF
  104. IF ld_min_rate >= 1 THEN
  105. SELECT max(case u_orderrqmtrl_scll.truerqqty when 0 then 1 else (u_orderrqmtrl_scll.truerqqty - u_orderrqmtrl_scll.dstrqty) / u_orderrqmtrl_scll.truerqqty end )
  106. INTO :ld_max_rate
  107. FROM u_orderrqmtrl_scll
  108. WHERE u_orderrqmtrl_scll.orderid = :ins_orderid
  109. AND u_orderrqmtrl_scll.scid = :ins_scid;
  110. IF sqlca.SQLCode <> 0 THEN
  111. ld_max_rate = 1
  112. END IF
  113. SELECT orderqty * :ld_max_rate
  114. INTO :ld_cmpqty
  115. FROM u_order_ml
  116. WHERE orderid = :ins_orderid
  117. AND scid = :ins_scid;
  118. IF sqlca.SQLCode <> 0 THEN
  119. ld_cmpqty = 0
  120. END IF
  121. ELSE
  122. SELECT orderqty * :ld_min_rate
  123. INTO :ld_cmpqty
  124. FROM u_order_ml
  125. WHERE orderid = :ins_orderid
  126. AND scid = :ins_scid;
  127. IF sqlca.SQLCode <> 0 THEN
  128. ld_cmpqty = 0
  129. END IF
  130. END IF
  131. ins_cmpqty = ld_cmpqty
  132. //em_qty.text = string(ld_cmpqty,'###0.'+Fill('#',f_sys_option_unit_dec()))
  133. //st_msg.Text = '该指令参考可生产数:'+String(ld_cmpqty,'###0.'+Fill('#',f_sys_option_unit_dec()))
  134. end subroutine
  135. public subroutine wf_setdefault (long arg_ifstorage, long arg_ifwrkgrpid);Int rslt = 1
  136. Long ll_i
  137. Long ll_mtrlid
  138. String ls_status,ls_woodcode,ls_pcode
  139. Long ll_storageid,ll_wrkgrpid,ll_workgroupid
  140. dw_1.AcceptText()
  141. FOR ll_i = 1 TO dw_1.RowCount()
  142. ll_mtrlid = dw_1.Object.u_orderrqmtrl_scll_mtrlid[ll_i]
  143. ls_status = dw_1.Object.u_orderrqmtrl_scll_status[ll_i]
  144. ls_woodcode = dw_1.Object.u_orderrqmtrl_scll_woodcode[ll_i]
  145. ls_pcode = dw_1.Object.u_orderrqmtrl_scll_status[ll_i]
  146. ll_wrkgrpid = dw_1.Object.u_orderrqmtrl_scll_wrkgrpid[ll_i]
  147. IF arg_ifstorage = 1 THEN
  148. IF ins_storagetype = 0 THEN
  149. SELECT top 1 u_mtrlware.storageid INTO :ll_storageid
  150. FROM u_mtrlware,u_storage
  151. WHERE u_mtrlware.mtrlid = :ll_mtrlid
  152. AND u_mtrlware.status = :ls_status
  153. AND u_mtrlware.woodcode = :ls_woodcode
  154. AND u_mtrlware.pcode = :ls_pcode
  155. AND u_mtrlware.storageid = u_storage.storageid
  156. AND u_storage.ifmrp = 1
  157. AND u_mtrlware.noallocqty > 0
  158. Order By u_mtrlware.noallocqty;
  159. ELSE
  160. SELECT top 1 u_mtrlware.storageid INTO :ll_storageid
  161. FROM u_mtrlware,u_storage
  162. WHERE u_mtrlware.mtrlid = :ll_mtrlid
  163. AND u_mtrlware.status = :ls_status
  164. AND u_mtrlware.woodcode = :ls_woodcode
  165. AND u_mtrlware.pcode = :ls_pcode
  166. AND u_mtrlware.storageid = u_storage.storageid
  167. AND u_storage.ifmrp = 1
  168. Order By u_mtrlware.noallocqty Desc;
  169. END IF
  170. IF sqlca.SQLCode <> 0 THEN
  171. ll_storageid = 0
  172. END IF
  173. dw_1.Object.storageid[ll_i] = ll_storageid
  174. END IF
  175. IF arg_ifwrkgrpid = 1 THEN
  176. SELECT top 1 u_workgroup.workgroupid
  177. INTO :ll_workgroupid
  178. FROM u_workgroup left OUTER join
  179. u_sc_workgroup on u_workgroup.wrkGrpid = u_sc_workgroup.wrkGrpid
  180. Where u_sc_workgroup.wrkGrpid = :ll_wrkgrpid;
  181. IF sqlca.SQLCode <> 0 THEN
  182. ll_workgroupid = 0
  183. END IF
  184. dw_1.Object.workgroupid[ll_i] = ll_workgroupid
  185. END IF
  186. NEXT
  187. dw_1.AcceptText()
  188. end subroutine
  189. event resize;call super::resize;ln_bar.EndX = THIS.Width
  190. ln_bar2.EndX = THIS.Width
  191. ln_1.EndX = THIS.Width
  192. ln_2.EndX = THIS.Width
  193. r_bar.Width = THIS.Width
  194. dw_1.Width = THIS.Width - dw_1.X - 40 - dw_2.width
  195. dw_1.Height = THIS.Height - dw_1.Y - 150
  196. dw_2.Height = dw_1.Height
  197. dw_2.x = dw_1.x + dw_1.Width + 5
  198. end event
  199. on w_order_ml_zl_autoscll.create
  200. int iCurrent
  201. call super::create
  202. this.dw_1=create dw_1
  203. this.dw_2=create dw_2
  204. this.cb_scll=create cb_scll
  205. this.cb_wrk=create cb_wrk
  206. this.cbx_all=create cbx_all
  207. this.st_1=create st_1
  208. this.ddlb_1=create ddlb_1
  209. this.st_msg=create st_msg
  210. this.st_2=create st_2
  211. this.em_qty=create em_qty
  212. this.cb_storage=create cb_storage
  213. this.ln_bar=create ln_bar
  214. this.ln_bar2=create ln_bar2
  215. this.r_bar=create r_bar
  216. this.ln_1=create ln_1
  217. this.ln_2=create ln_2
  218. iCurrent=UpperBound(this.Control)
  219. this.Control[iCurrent+1]=this.dw_1
  220. this.Control[iCurrent+2]=this.dw_2
  221. this.Control[iCurrent+3]=this.cb_scll
  222. this.Control[iCurrent+4]=this.cb_wrk
  223. this.Control[iCurrent+5]=this.cbx_all
  224. this.Control[iCurrent+6]=this.st_1
  225. this.Control[iCurrent+7]=this.ddlb_1
  226. this.Control[iCurrent+8]=this.st_msg
  227. this.Control[iCurrent+9]=this.st_2
  228. this.Control[iCurrent+10]=this.em_qty
  229. this.Control[iCurrent+11]=this.cb_storage
  230. this.Control[iCurrent+12]=this.ln_bar
  231. this.Control[iCurrent+13]=this.ln_bar2
  232. this.Control[iCurrent+14]=this.r_bar
  233. this.Control[iCurrent+15]=this.ln_1
  234. this.Control[iCurrent+16]=this.ln_2
  235. end on
  236. on w_order_ml_zl_autoscll.destroy
  237. call super::destroy
  238. destroy(this.dw_1)
  239. destroy(this.dw_2)
  240. destroy(this.cb_scll)
  241. destroy(this.cb_wrk)
  242. destroy(this.cbx_all)
  243. destroy(this.st_1)
  244. destroy(this.ddlb_1)
  245. destroy(this.st_msg)
  246. destroy(this.st_2)
  247. destroy(this.em_qty)
  248. destroy(this.cb_storage)
  249. destroy(this.ln_bar)
  250. destroy(this.ln_bar2)
  251. destroy(this.r_bar)
  252. destroy(this.ln_1)
  253. destroy(this.ln_2)
  254. end on
  255. event open;call super::open;dw_1.SetTransObject(sqlca)
  256. dw_2.SetTransObject(sqlca)
  257. s_tran = Message.PowerObjectParm
  258. ins_scid = s_tran.c_long
  259. ins_orderid = s_tran.d_long
  260. wf_cmp_enoughqty()
  261. //只显未自已管的仓库
  262. datawindowchild childdw
  263. dw_1.SetTransObject (sqlca)
  264. dw_1.GetChild("storageid",childdw)
  265. childdw.SetTransObject (sqlca)
  266. IF childdw.Retrieve(ins_scid,sys_user_storageid) = 0 THEN
  267. childdw.InsertRow(0)
  268. END IF
  269. //
  270. dw_1.Retrieve(ins_orderid,ins_scid)
  271. //查询默认值,仓库,工作中心
  272. wf_setdefault(1,1) //参数1:是否查找仓库,参数2:是否查找工作中心
  273. end event
  274. type cb_func from w_publ_base`cb_func within w_order_ml_zl_autoscll
  275. boolean visible = false
  276. end type
  277. type cb_exit from w_publ_base`cb_exit within w_order_ml_zl_autoscll
  278. integer x = 914
  279. integer width = 151
  280. integer height = 164
  281. integer picsize = 16
  282. toolbaralignment pic_align = alignattop!
  283. boolean border = false
  284. end type
  285. type dw_1 from u_dw_rbtnfilter within w_order_ml_zl_autoscll
  286. integer y = 280
  287. integer width = 2405
  288. integer height = 2000
  289. integer taborder = 20
  290. boolean bringtotop = true
  291. string dataobject = "dw_order_ml_zl_autoscll_list"
  292. boolean hscrollbar = true
  293. boolean vscrollbar = true
  294. end type
  295. event rowfocuschanged;call super::rowfocuschanged;IF currentrow > 0 THEN
  296. THIS.SelectRow(0,FALSE)
  297. THIS.SelectRow(currentrow,TRUE)
  298. END IF
  299. parent.triggerevent('retrieve_mx')
  300. end event
  301. event clicked;call super::clicked;IF row > 0 THEN
  302. THIS.SelectRow(0,FALSE)
  303. THIS.SelectRow(row,TRUE)
  304. this.setrow(row)
  305. END IF
  306. end event
  307. type dw_2 from u_dw_rbtnfilter within w_order_ml_zl_autoscll
  308. integer x = 2414
  309. integer y = 280
  310. integer width = 1179
  311. integer height = 2000
  312. integer taborder = 20
  313. boolean bringtotop = true
  314. string dataobject = "dw_zl_autoscll_mtrlware_mx"
  315. boolean hscrollbar = true
  316. boolean vscrollbar = true
  317. end type
  318. event rowfocuschanged;call super::rowfocuschanged;IF currentrow > 0 THEN
  319. THIS.SelectRow(0,FALSE)
  320. THIS.SelectRow(currentrow,TRUE)
  321. END IF
  322. end event
  323. type cb_scll from uo_imflatbutton within w_order_ml_zl_autoscll
  324. integer width = 329
  325. integer height = 164
  326. integer taborder = 30
  327. boolean bringtotop = true
  328. string text = "生成领料单"
  329. string normalpicname = "ok.bmp"
  330. integer picsize = 16
  331. toolbaralignment pic_align = alignattop!
  332. boolean border = false
  333. end type
  334. event clicked;call super::clicked;IF Not (f_power_ind(46) OR f_power_ind(377)) THEN
  335. MessageBox('提示','你没有使用权限!',information!,ok!)
  336. RETURN
  337. END IF
  338. //1.检查仓库,工作中心是否已填写
  339. //2.检查仓库是否有库存
  340. Long ll_i,ll_j
  341. Long cnt ,ll_cnt
  342. Long ll_mtrlid
  343. Long ll_storageid
  344. String ls_status,ls_woodcode,ls_pcode
  345. Decimal ld_emqty,ld_rate
  346. IF ins_cmpqty = 0 THEN
  347. MessageBox('提示','参考可生产数为0,不能使用配套领料',information!,ok!)
  348. RETURN
  349. END IF
  350. ld_emqty = Dec(em_qty.Text)
  351. IF ld_emqty > ins_cmpqty THEN
  352. MessageBox('提示','本次领料生产数不能大于参考可生产数,请检查!',information!,ok!)
  353. em_qty.SetFocus()
  354. RETURN
  355. END IF
  356. IF ld_emqty <= 0 THEN
  357. MessageBox('提示','本次领料生产数不能为0,请检查!',information!,ok!)
  358. em_qty.SetFocus()
  359. RETURN
  360. END IF
  361. ld_rate = ld_emqty / ins_cmpqty
  362. cnt = 0
  363. FOR ll_i = 1 TO dw_1.RowCount()
  364. IF dw_1.Object.ch[ll_i] = 1 THEN
  365. IF dw_1.Object.storageid[ll_i] = 0 OR &
  366. dw_1.Object.workgroupid[ll_i] = 0 THEN
  367. MessageBox('提示','第'+String(ll_i)+'行,仓库及工作中心信息不完整,请检查!',information!,ok!)
  368. RETURN
  369. END IF
  370. ll_storageid = dw_1.Object.storageid[ll_i]
  371. ll_mtrlid = dw_1.Object.u_orderrqmtrl_scll_mtrlid[ll_i]
  372. ls_status = dw_1.Object.u_orderrqmtrl_scll_status[ll_i]
  373. ls_woodcode = dw_1.Object.u_orderrqmtrl_scll_woodcode[ll_i]
  374. ls_pcode = dw_1.Object.u_orderrqmtrl_scll_pcode[ll_i]
  375. ll_cnt = 0
  376. SELECT count(*) INTO :ll_cnt
  377. FROM u_mtrlware
  378. WHERE storageid = :ll_storageid
  379. AND mtrlid = :ll_mtrlid
  380. AND status = :ls_status
  381. AND woodcode = :ls_woodcode
  382. AND pcode = :ls_pcode;
  383. IF sqlca.SQLCode <> 0 THEN
  384. MessageBox('提示','第'+String(ll_i)+'行,查询库存信息失败!',information!,ok!)
  385. RETURN
  386. END IF
  387. IF ll_cnt = 0 THEN
  388. MessageBox('提示','第'+String(ll_i)+'行,相关用料在该仓库没有库存,请检查!',information!,ok!)
  389. RETURN
  390. END IF
  391. cnt++
  392. END IF
  393. NEXT
  394. IF cnt = 0 THEN
  395. MessageBox('提示','请选择要领料的内容',information!,ok!)
  396. RETURN
  397. END IF
  398. //3.按仓库,工作中心将内容分组
  399. Long ll_storageid_arr[],ll_workgroupid_arr[]
  400. Long ll_arr
  401. ll_arr = 0
  402. FOR ll_i = 1 TO dw_1.RowCount()
  403. IF dw_1.Object.ch[ll_i] = 1 THEN
  404. FOR ll_j = 1 TO ll_arr
  405. IF dw_1.Object.storageid[ll_i] = ll_storageid_arr[ll_j] AND &
  406. dw_1.Object.workgroupid[ll_i] = ll_workgroupid_arr[ll_j] THEN
  407. GOTO next_
  408. END IF
  409. NEXT
  410. ll_arr++
  411. ll_storageid_arr[ll_arr] = dw_1.Object.storageid[ll_i]
  412. ll_workgroupid_arr[ll_arr] = dw_1.Object.workgroupid[ll_i]
  413. END IF
  414. next_:
  415. NEXT
  416. string ls_ordercode
  417. select ordercode into :ls_ordercode
  418. from u_order_ml
  419. where scid = :ins_scid
  420. and orderid = :ins_orderid;
  421. if sqlca.sqlcode <> 0 then
  422. messagebox('错误','查询相关指令单号失败',stopsign!,ok!)
  423. return
  424. end if
  425. //4.建立领料单
  426. Long i,j
  427. Long ll_mtrlwareid
  428. Decimal ld_cost
  429. Long ll_printid
  430. Long ll_cp_mtrlid,ll_ifrel,ll_relid
  431. String arg_msg
  432. uo_outware_scll uo_ware
  433. uo_ware = CREATE uo_outware_scll
  434. uo_ware.if_getid_ture = FALSE
  435. uo_ware.commit_transaction = sqlca
  436. FOR i = 1 TO ll_arr
  437. IF uo_ware.newbegin(ins_scid,3,arg_msg) = 0 THEN
  438. ROLLBACK;
  439. MessageBox('error!',arg_msg)
  440. RETURN
  441. END IF
  442. uo_ware.outdate = DateTime(Today(),Time(0))
  443. uo_ware.outrep = publ_operator
  444. uo_ware.part = ls_ordercode
  445. uo_ware.dscrp = '指令单:'+ls_ordercode+' 辅助生成'
  446. uo_ware.cusname = ''
  447. uo_ware.storageid = ll_storageid_arr[i]
  448. uo_ware.relid = ll_workgroupid_arr[i]
  449. uo_ware.relint_1 = 0
  450. ll_printid = 0
  451. FOR j = 1 TO dw_1.RowCount()
  452. IF dw_1.Object.storageid[j] = ll_storageid_arr[i] AND &
  453. dw_1.Object.workgroupid[j] = ll_workgroupid_arr[i] AND &
  454. dw_1.Object.ch[j] = 1 THEN
  455. ll_printid++
  456. ll_mtrlid = dw_1.Object.u_orderrqmtrl_scll_mtrlid[j]
  457. ls_status = dw_1.Object.u_orderrqmtrl_scll_status[j]
  458. ls_woodcode = dw_1.Object.u_orderrqmtrl_scll_woodcode[j]
  459. ls_pcode = dw_1.Object.u_orderrqmtrl_scll_pcode[j]
  460. SELECT top 1 mtrlwareid,cost
  461. INTO :ll_mtrlwareid,:ld_cost
  462. FROM u_mtrlware
  463. WHERE storageid = :ll_storageid_arr[i]
  464. AND mtrlid = :ll_mtrlid
  465. AND status = :ls_status
  466. AND woodcode = :ls_woodcode
  467. AND pcode = :ls_pcode
  468. Order By noallocqty Desc;
  469. IF sqlca.SQLCode <> 0 THEN
  470. ROLLBACK;
  471. MessageBox('错误','查询库存信息失败,第'+String(j)+'行',stopsign!,ok!)
  472. RETURN
  473. END IF
  474. IF dw_1.Object.u_mtrldef_mtrlkind[j] = 0 THEN
  475. ll_ifrel = 1
  476. ll_relid = dw_1.Object.u_orderrqmtrl_scll_orderid[j]
  477. SELECT mtrlid INTO :ll_cp_mtrlid
  478. FROM u_order_ml
  479. WHERE scid = :ins_scid
  480. AND orderid = :ll_relid;
  481. IF sqlca.SQLCode <> 0 THEN
  482. ROLLBACK;
  483. MessageBox('错误','第'+String(j)+'行,查询指令单相关产品失败'+sqlca.SQLErrText,stopsign!,ok!)
  484. RETURN
  485. END IF
  486. ELSE
  487. ll_ifrel = 0
  488. ll_relid = 0
  489. ll_cp_mtrlid = 0
  490. END IF
  491. // IF uo_ware.acceptmx(ll_mtrlwareid,&
  492. // dw_1.Object.noqty[j],&
  493. // ld_cost,&
  494. // 1,&
  495. // '',&
  496. // ll_printid,&
  497. // arg_msg,&
  498. // ll_ifrel,&
  499. // ll_relid,&
  500. // ll_cp_mtrlid,0,0,&
  501. // dw_1.Object.noqty[j] * ld_rate,0,&
  502. // dw_1.Object.u_mtrldef_unit[j],&
  503. // dw_1.Object.noqty[j],&
  504. // 1) = 0 THEN
  505. // ROLLBACK;
  506. // MessageBox('error!',arg_msg)
  507. // RETURN
  508. // END IF
  509. END IF
  510. NEXT
  511. IF uo_ware.Save(FALSE,arg_msg) = 0 THEN
  512. ROLLBACK;
  513. MessageBox('错误',arg_msg,stopsign!,ok!)
  514. RETURN
  515. END IF
  516. NEXT
  517. COMMIT;
  518. DESTROY uo_ware
  519. MessageBox('提示','生成领料单成功!',information!,ok!)
  520. Close(PARENT)
  521. end event
  522. type cb_wrk from uo_imflatbutton within w_order_ml_zl_autoscll
  523. integer x = 585
  524. integer width = 329
  525. integer height = 164
  526. integer taborder = 10
  527. boolean bringtotop = true
  528. string text = "选工作中心"
  529. string normalpicname = "update2.BMP"
  530. integer picsize = 16
  531. toolbaralignment pic_align = alignattop!
  532. boolean border = false
  533. end type
  534. event clicked;call super::clicked;Long ll_row
  535. Long ll_wrkgrpid
  536. s_workgroup s_select
  537. dw_1.AcceptText()
  538. ll_row = dw_1.GetRow()
  539. IF ll_row <= 0 THEN
  540. MessageBox('提示','请选择目标行',information!,ok!)
  541. RETURN
  542. END IF
  543. ll_wrkgrpid = dw_1.Object.u_orderrqmtrl_scll_wrkgrpid[ll_row]
  544. //OpenWithParm(w_workgrop_ch_scll_withwrkid,ll_wrkgrpid)
  545. s_select = Message.PowerObjectParm
  546. if s_select.wrkgrpid = 0 then return
  547. dw_1.Object.workgroupid[ll_row] = s_select.wrkgrpid
  548. dw_1.AcceptText()
  549. end event
  550. type cbx_all from checkbox within w_order_ml_zl_autoscll
  551. integer x = 1189
  552. integer y = 80
  553. integer width = 261
  554. integer height = 60
  555. boolean bringtotop = true
  556. integer textsize = -9
  557. integer weight = 400
  558. fontcharset fontcharset = gb2312charset!
  559. fontpitch fontpitch = variable!
  560. string facename = "宋体"
  561. long textcolor = 33554432
  562. long backcolor = 67108864
  563. string text = "全选"
  564. boolean checked = true
  565. end type
  566. event constructor;this.backcolor = 14215660
  567. end event
  568. event clicked;Long ll_i
  569. dw_1.SetRedraw(FALSE)
  570. IF THIS.Checked THEN
  571. FOR ll_i = 1 TO dw_1.RowCount()
  572. dw_1.Object.ch[ll_i] = 1
  573. NEXT
  574. ELSE
  575. FOR ll_i = 1 TO dw_1.RowCount()
  576. dw_1.Object.ch[ll_i] = 0
  577. NEXT
  578. END IF
  579. dw_1.SetRedraw(TRUE)
  580. end event
  581. type st_1 from statictext within w_order_ml_zl_autoscll
  582. integer x = 1481
  583. integer y = 84
  584. integer width = 453
  585. integer height = 48
  586. boolean bringtotop = true
  587. integer textsize = -9
  588. integer weight = 400
  589. fontcharset fontcharset = gb2312charset!
  590. fontpitch fontpitch = variable!
  591. string facename = "宋体"
  592. long textcolor = 33554432
  593. long backcolor = 134217739
  594. string text = "仓库默认选择策略"
  595. boolean focusrectangle = false
  596. end type
  597. event constructor;this.backcolor = 14215660
  598. end event
  599. type ddlb_1 from dropdownlistbox within w_order_ml_zl_autoscll
  600. integer x = 1947
  601. integer y = 68
  602. integer width = 645
  603. integer height = 300
  604. integer taborder = 20
  605. boolean bringtotop = true
  606. integer textsize = -9
  607. integer weight = 400
  608. fontcharset fontcharset = gb2312charset!
  609. fontpitch fontpitch = variable!
  610. string facename = "宋体"
  611. long textcolor = 33554432
  612. string text = "先取库存较少的仓库"
  613. boolean sorted = false
  614. boolean vscrollbar = true
  615. string item[] = {"先取库存较少的仓库","先取库存较多的仓库"}
  616. borderstyle borderstyle = stylelowered!
  617. end type
  618. event selectionchanged;IF THIS.Text = '先取库存较少的仓库' THEN
  619. ins_storagetype = 0
  620. ELSE
  621. ins_storagetype = 1
  622. END IF
  623. f_SetProfileString (sys_empid, "w_order_ml_zl_autoscll", "storagetype", String(ins_storagetype))
  624. end event
  625. event constructor;ins_storagetype = Long(f_ProfileString (sys_empid, "w_order_ml_zl_autoscll", "storagetype", "0"))
  626. IF ins_storagetype = 0 THEN
  627. ddlb_1.Text = '先取库存较少的仓库'
  628. ELSE
  629. ddlb_1.Text = '先取库存较多的仓库'
  630. END IF
  631. end event
  632. type st_msg from statictext within w_order_ml_zl_autoscll
  633. integer x = 23
  634. integer y = 200
  635. integer width = 946
  636. integer height = 48
  637. boolean bringtotop = true
  638. integer textsize = -9
  639. integer weight = 400
  640. fontcharset fontcharset = gb2312charset!
  641. fontpitch fontpitch = variable!
  642. string facename = "宋体"
  643. long textcolor = 33554432
  644. long backcolor = 134217739
  645. string text = "该指令参考可生产数:"
  646. boolean focusrectangle = false
  647. end type
  648. type st_2 from statictext within w_order_ml_zl_autoscll
  649. integer x = 1088
  650. integer y = 204
  651. integer width = 425
  652. integer height = 48
  653. boolean bringtotop = true
  654. integer textsize = -9
  655. integer weight = 400
  656. fontcharset fontcharset = gb2312charset!
  657. fontpitch fontpitch = variable!
  658. string facename = "宋体"
  659. long textcolor = 33554432
  660. long backcolor = 134217739
  661. string text = "本次领料生产数:"
  662. boolean focusrectangle = false
  663. end type
  664. type em_qty from editmask within w_order_ml_zl_autoscll
  665. integer x = 1504
  666. integer y = 180
  667. integer width = 402
  668. integer height = 84
  669. integer taborder = 30
  670. boolean bringtotop = true
  671. integer textsize = -9
  672. integer weight = 400
  673. fontcharset fontcharset = gb2312charset!
  674. fontpitch fontpitch = variable!
  675. string facename = "宋体"
  676. long textcolor = 33554432
  677. string text = "0"
  678. alignment alignment = right!
  679. borderstyle borderstyle = stylelowered!
  680. string mask = "#,##0.##########"
  681. end type
  682. type cb_storage from uo_imflatbutton within w_order_ml_zl_autoscll
  683. integer x = 329
  684. integer width = 256
  685. integer height = 164
  686. integer taborder = 30
  687. boolean bringtotop = true
  688. string text = "查找仓库"
  689. string normalpicname = "FIND.BMP"
  690. integer picsize = 16
  691. toolbaralignment pic_align = alignattop!
  692. boolean border = false
  693. end type
  694. event clicked;call super::clicked;IF MessageBox('询问','是否确定要按['+ddlb_1.Text+']的规则查找仓库?',question!,yesno!) = 2 THEN RETURN
  695. wf_setdefault(1,0)
  696. end event
  697. type ln_bar from line within w_order_ml_zl_autoscll
  698. long linecolor = 268435456
  699. integer linethickness = 4
  700. integer beginy = 168
  701. integer endx = 2007
  702. integer endy = 168
  703. end type
  704. type ln_bar2 from line within w_order_ml_zl_autoscll
  705. long linecolor = 16777215
  706. integer linethickness = 4
  707. integer beginy = 172
  708. integer endx = 2039
  709. integer endy = 172
  710. end type
  711. type r_bar from rectangle within w_order_ml_zl_autoscll
  712. long linecolor = 16777215
  713. integer linethickness = 4
  714. long fillcolor = 1073741824
  715. integer x = 1531
  716. integer width = 146
  717. integer height = 68
  718. end type
  719. event constructor;this.fillcolor = 14215660
  720. this.linecolor = 14215660
  721. this.x = -1
  722. this.y = -1
  723. this.height = ln_bar.beginy - 5
  724. end event
  725. type ln_1 from line within w_order_ml_zl_autoscll
  726. long linecolor = 268435456
  727. integer linethickness = 4
  728. integer beginy = 272
  729. integer endx = 2007
  730. integer endy = 272
  731. end type
  732. type ln_2 from line within w_order_ml_zl_autoscll
  733. long linecolor = 16777215
  734. integer linethickness = 4
  735. integer beginy = 276
  736. integer endx = 2039
  737. integer endy = 276
  738. end type