w_addqty_input.srw 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530
  1. $PBExportHeader$w_addqty_input.srw
  2. forward
  3. global type w_addqty_input from w_publ_base
  4. end type
  5. type dw_1 from u_dw_rbtnfilter within w_addqty_input
  6. end type
  7. type cbx_3 from checkbox within w_addqty_input
  8. end type
  9. type cbx_1 from checkbox within w_addqty_input
  10. end type
  11. type cbx_2 from checkbox within w_addqty_input
  12. end type
  13. type em_1 from editmask within w_addqty_input
  14. end type
  15. type cbx_4 from checkbox within w_addqty_input
  16. end type
  17. type cbx_5 from checkbox within w_addqty_input
  18. end type
  19. end forward
  20. global type w_addqty_input from w_publ_base
  21. integer width = 1819
  22. integer height = 1468
  23. string title = "生成辅数串"
  24. boolean controlmenu = false
  25. boolean minbox = false
  26. windowtype windowtype = response!
  27. event insert_childrow ( )
  28. dw_1 dw_1
  29. cbx_3 cbx_3
  30. cbx_1 cbx_1
  31. cbx_2 cbx_2
  32. em_1 em_1
  33. cbx_4 cbx_4
  34. cbx_5 cbx_5
  35. end type
  36. global w_addqty_input w_addqty_input
  37. type variables
  38. int if_addmxdscrp=0
  39. int if_addformula = 0
  40. int if_sumqty = 0
  41. int if_format = 0
  42. String cur_mxdscrp = ''
  43. String cur_formula = ''
  44. s_addqty_input s_input
  45. end variables
  46. forward prototypes
  47. public function integer wf_new ()
  48. end prototypes
  49. event insert_childrow();long li_row
  50. li_row=dw_1.insertrow(0)
  51. dw_1.scrolltorow(li_row)
  52. dw_1.SetColumn ('num1')
  53. end event
  54. public function integer wf_new ();long ll_ucrow,i
  55. dw_1.reset()
  56. for i = 1 to 30
  57. dw_1.insertrow(0)
  58. next
  59. dw_1.setfocus()
  60. dw_1.setcolumn('num1')
  61. return 1
  62. end function
  63. on w_addqty_input.create
  64. int iCurrent
  65. call super::create
  66. this.dw_1=create dw_1
  67. this.cbx_3=create cbx_3
  68. this.cbx_1=create cbx_1
  69. this.cbx_2=create cbx_2
  70. this.em_1=create em_1
  71. this.cbx_4=create cbx_4
  72. this.cbx_5=create cbx_5
  73. iCurrent=UpperBound(this.Control)
  74. this.Control[iCurrent+1]=this.dw_1
  75. this.Control[iCurrent+2]=this.cbx_3
  76. this.Control[iCurrent+3]=this.cbx_1
  77. this.Control[iCurrent+4]=this.cbx_2
  78. this.Control[iCurrent+5]=this.em_1
  79. this.Control[iCurrent+6]=this.cbx_4
  80. this.Control[iCurrent+7]=this.cbx_5
  81. end on
  82. on w_addqty_input.destroy
  83. call super::destroy
  84. destroy(this.dw_1)
  85. destroy(this.cbx_3)
  86. destroy(this.cbx_1)
  87. destroy(this.cbx_2)
  88. destroy(this.em_1)
  89. destroy(this.cbx_4)
  90. destroy(this.cbx_5)
  91. end on
  92. event open;call super::open;Long i,j,k,li_pos,chc=0
  93. Dec ld_num[]
  94. Dec ld_tmpnum
  95. String ls_mxdscrp,ls_num
  96. long li_pos1,li_pos2
  97. String ls_num1,ls_num2
  98. if_addmxdscrp = long( f_profilestring (sys_empid,'addqty_input', "if_addmxdscrp", '0'))
  99. IF if_addmxdscrp = 1 THEN
  100. cbx_1.Checked = true
  101. ELSE
  102. cbx_1.Checked = false
  103. END IF
  104. if_addformula = long( f_profilestring (sys_empid,'addqty_input', "if_addformula", '0'))
  105. IF if_addformula = 1 THEN
  106. cbx_2.Checked = true
  107. ELSE
  108. cbx_2.Checked = false
  109. END IF
  110. if_sumqty = long( f_profilestring (sys_empid,'addqty_input', "if_sumqty", '0'))
  111. IF if_sumqty = 1 THEN
  112. cbx_3.Checked = true
  113. ELSE
  114. cbx_3.Checked = false
  115. END IF
  116. if_format = long( f_profilestring (sys_empid,'addqty_input', "if_format", '0'))
  117. IF if_format = 1 THEN
  118. cbx_4.Checked = true
  119. int li_formatnum
  120. li_formatnum = long( f_profilestring (sys_empid,'addqty_input', "formatnum", '0'))
  121. em_1.text = string(li_formatnum)
  122. ELSE
  123. cbx_4.Checked = false
  124. END IF
  125. wf_new()
  126. cur_mxdscrp = message.stringparm
  127. ls_mxdscrp = cur_mxdscrp + ' '
  128. IF if_addmxdscrp = 0 THEN RETURN
  129. IF POS(ls_mxdscrp,'/')<=0 THEN
  130. Do while len(ls_mxdscrp) <> 0
  131. li_pos = pos(ls_mxdscrp,' ')
  132. IF li_pos > 0 THEN
  133. ls_num = left(ls_mxdscrp,li_pos - 1)
  134. IF isNumber(ls_num) THEN
  135. chc++
  136. ld_num[chc] = Dec(ls_num)
  137. END IF
  138. END IF
  139. ls_mxdscrp = mid(ls_mxdscrp,li_pos+1,len(ls_mxdscrp))
  140. Loop
  141. //填格
  142. k = 1
  143. FOR i = 1 TO dw_1.Rowcount()
  144. FOR j = 1 TO 6
  145. IF k > chc THEN RETURN
  146. dw_1.setitem(i,j,ld_num[k])
  147. k++
  148. NEXT
  149. NEXT
  150. ELSE
  151. DO WHILE pos(ls_mxdscrp,'/')>0
  152. li_pos1 = pos(ls_mxdscrp,'/')
  153. li_pos2 = pos(ls_mxdscrp,'*')
  154. IF li_pos1 > 0 THEN
  155. ls_num1 = left(ls_mxdscrp,li_pos2 - 1)
  156. ls_num2 = MID(ls_mxdscrp,li_pos2 + 1,li_pos1 - li_pos2 - 1)
  157. IF NOT isNumber(ls_num1) THEN ls_num1 = '0'
  158. IF NOT isNumber(ls_num2) THEN ls_num2 ='0'
  159. chc++
  160. ld_num[chc] = Dec(ls_num1)
  161. chc++
  162. ld_num[chc] = Dec(ls_num2)
  163. END IF
  164. ls_mxdscrp = mid(ls_mxdscrp,li_pos1+1,len(ls_mxdscrp))
  165. LOOP
  166. k = 1
  167. FOR i = 1 TO (CHC /2)
  168. FOR j = 1 TO 2
  169. dw_1.setitem(i,j,ld_num[k])
  170. k++
  171. NEXT
  172. NEXT
  173. END IF
  174. end event
  175. event close;call super::close;IF cbx_4.Checked THEN
  176. Int li_formatnum
  177. li_formatnum = Long(em_1.Text)
  178. f_SetProfileString (sys_empid,'addqty_input', "formatnum", String(li_formatnum))
  179. END IF
  180. CloseWithReturn(This,s_input)
  181. end event
  182. type cb_func from w_publ_base`cb_func within w_addqty_input
  183. integer x = 1157
  184. integer y = 1180
  185. integer width = 311
  186. integer height = 96
  187. string text = "确定"
  188. integer picsize = 0
  189. toolbaralignment pic_align = alignatleft!
  190. boolean border = true
  191. end type
  192. event cb_func::clicked;call super::clicked;//ld_tnum 总数量
  193. //ls_numstr 明细
  194. Long i,j,num = 0
  195. Dec ld_num,ld_tnum,ld_A,ld_B
  196. String ls_numstr
  197. String ls_numstr1
  198. String ld_Aa,ld_Bb
  199. int li_pos
  200. string ls_formatstr
  201. li_pos = long(em_1.text)
  202. IF cbx_5.checked = true then
  203. dw_1.AcceptText( )
  204. FOR i = 1 TO dw_1.RowCount()
  205. ld_A = dw_1.GetItemDecimal(i,1)
  206. ld_B = dw_1.GetItemDecimal(i,2)
  207. IF IsNull(ld_A) OR ld_A = 0 or IsNull(ld_B) OR ld_B = 0 THEN CONTINUE
  208. ld_Aa = String(ld_A,'#,#0.#####')
  209. ld_Bb = String(ld_B,'#,#0.#####')
  210. IF right(ld_Aa,1) = '.' then ld_Aa = left(ld_Aa,len(ld_Aa) - 1)
  211. IF right(ld_Bb,1) = '.' then ld_Bb = left(ld_Bb,len(ld_Bb) - 1)
  212. // ls_numstr = ls_numstr + String(ld_A,'#,##.#####')+'*'+String(ld_B,'#,##.#####')+ '/'
  213. // ls_numstr1 = ls_numstr1 + String(ld_A,'#,##.#####')+'*'+String(ld_B,'#,##.#####')+ '/'
  214. ls_numstr = ls_numstr + ld_Aa+'*'+ld_Bb+ '/'
  215. ls_numstr1 = ls_numstr1 + ld_Aa+'*'+ld_Bb+ '/'
  216. ld_tnum = ld_tnum + (ld_A * ld_B)
  217. num = num +ld_B
  218. NEXT
  219. s_input.addqty = num
  220. s_input.qty = ld_tnum
  221. s_input.addqtystr = ls_numstr
  222. s_input.formula = ls_numstr1
  223. s_input.flag = 1
  224. ELSE
  225. if not cbx_4.checked then
  226. ls_formatstr = '#######'
  227. else
  228. ls_formatstr = '#0.'
  229. do while li_pos > 0
  230. ls_formatstr += '0'
  231. li_pos = li_pos - 1
  232. loop
  233. end if
  234. dw_1.AcceptText( )
  235. FOR i = 1 TO dw_1.RowCount()
  236. FOR j = 1 TO 6
  237. ld_num = dw_1.GetItemDecimal(i,j)
  238. IF IsNull(ld_num) OR ld_num = 0 THEN CONTINUE
  239. if ls_formatstr = '#######' then //位数不固定
  240. IF Round(ld_num,0) = ld_num THEN
  241. ls_numstr = ls_numstr + String(ld_num,'#######') + ' '
  242. ls_numstr1 = ls_numstr1 + String(ld_num,'#######') + '+'
  243. ELSE
  244. ls_numstr = ls_numstr + String(ld_num,'#0.#####') + ' '
  245. ls_numstr1 = ls_numstr1 + String(ld_num,'#0.#####') + '+'
  246. END IF
  247. else
  248. ls_numstr = ls_numstr + String(ld_num,ls_formatstr) + ' '
  249. ls_numstr1 = ls_numstr1 + String(ld_num,ls_formatstr) + '+'
  250. end if
  251. ld_tnum = ld_tnum + ld_num
  252. num++
  253. NEXT
  254. NEXT
  255. ls_numstr = Left(ls_numstr,Len(ls_numstr) - 1)
  256. ls_numstr1 = Left(ls_numstr1,Len(ls_numstr1) - 1)
  257. IF ld_tnum = 0 THEN
  258. MessageBox('提示','请输入数量', Information!, OK! )
  259. RETURN
  260. END IF
  261. s_input.addqty = num
  262. IF if_sumqty = 1 THEN
  263. s_input.flag = 1
  264. s_input.qty = ld_tnum
  265. ELSE
  266. s_input.flag = 0
  267. END IF
  268. IF if_addmxdscrp = 1 THEN
  269. s_input.addqtystr = ls_numstr
  270. ELSE
  271. s_input.addqtystr = ''
  272. END IF
  273. IF if_addformula = 1 THEN
  274. s_input.formula = ls_numstr1
  275. ELSE
  276. s_input.formula = ''
  277. END IF
  278. END IF
  279. Close(PARENT)
  280. end event
  281. type cb_exit from w_publ_base`cb_exit within w_addqty_input
  282. integer x = 1467
  283. integer y = 1180
  284. end type
  285. event cb_exit::clicked;s_input.addqty = -1
  286. s_input.addqtystr = ''
  287. close(parent)
  288. end event
  289. type dw_1 from u_dw_rbtnfilter within w_addqty_input
  290. integer width = 1774
  291. integer height = 1104
  292. integer taborder = 20
  293. boolean bringtotop = true
  294. string dataobject = "dw_addqty_input"
  295. boolean vscrollbar = true
  296. end type
  297. event dwnkey;call super::dwnkey;IF KeyDown(Keydownarrow!) THEN
  298. IF dw_1.GetRow() = dw_1.RowCount() THEN
  299. PARENT.TriggerEvent('insert_childrow')
  300. END IF
  301. ELSE
  302. IF KeyDown(KeyEnter!) AND NOT KeyDown(KeyControl!) AND NOT KeyDown(KeyShift!) THEN
  303. IF Key = KeyEnter! THEN //
  304. keybd_event ( 9, 0, 0 , 0 ) // 按下tab
  305. keybd_event ( 9, 0, 2, 0 ) // 释放tab
  306. RETURN 1
  307. END IF
  308. IF dw_1.GetColumnName( ) = 'num6' AND dw_1.GetRow() = dw_1.RowCount() THEN
  309. PARENT.TriggerEvent("insert_childrow")
  310. RETURN 1
  311. END IF
  312. END IF
  313. END IF
  314. end event
  315. type cbx_3 from checkbox within w_addqty_input
  316. integer x = 530
  317. integer y = 1124
  318. integer width = 375
  319. integer height = 64
  320. boolean bringtotop = true
  321. integer textsize = -9
  322. integer weight = 400
  323. fontcharset fontcharset = gb2312charset!
  324. fontpitch fontpitch = variable!
  325. string facename = "宋体"
  326. long backcolor = 134217739
  327. string text = "合计到数量"
  328. end type
  329. event clicked;IF THIS.Checked THEN
  330. if_sumqty = 1
  331. ELSE
  332. if_sumqty = 0
  333. END IF
  334. f_SetProfileString (sys_empid,'addqty_input', "if_sumqty", String(if_sumqty))
  335. end event
  336. type cbx_1 from checkbox within w_addqty_input
  337. integer y = 1120
  338. integer width = 521
  339. integer height = 60
  340. boolean bringtotop = true
  341. integer textsize = -9
  342. integer weight = 400
  343. fontcharset fontcharset = gb2312charset!
  344. fontpitch fontpitch = variable!
  345. string facename = "宋体"
  346. long backcolor = 134217739
  347. string text = "生成辅数串到备注"
  348. end type
  349. event clicked;IF THIS.Checked THEN
  350. if_addmxdscrp = 1
  351. ELSE
  352. if_addmxdscrp = 0
  353. END IF
  354. f_SetProfileString (sys_empid,'addqty_input', "if_addmxdscrp", String(if_addmxdscrp))
  355. end event
  356. type cbx_2 from checkbox within w_addqty_input
  357. integer y = 1196
  358. integer width = 521
  359. integer height = 60
  360. boolean bringtotop = true
  361. integer textsize = -9
  362. integer weight = 400
  363. fontcharset fontcharset = gb2312charset!
  364. fontpitch fontpitch = variable!
  365. string facename = "宋体"
  366. long backcolor = 134217739
  367. string text = "生成辅数串到公式"
  368. end type
  369. event clicked;IF THIS.Checked THEN
  370. if_addformula = 1
  371. ELSE
  372. if_addformula = 0
  373. END IF
  374. f_SetProfileString (sys_empid,'addqty_input', "if_addformula", String(if_addformula))
  375. end event
  376. type em_1 from editmask within w_addqty_input
  377. integer x = 530
  378. integer y = 1252
  379. integer width = 183
  380. integer height = 84
  381. integer taborder = 30
  382. boolean bringtotop = true
  383. integer textsize = -9
  384. integer weight = 400
  385. fontcharset fontcharset = gb2312charset!
  386. fontpitch fontpitch = variable!
  387. string facename = "宋体"
  388. long textcolor = 33554432
  389. string text = "1"
  390. alignment alignment = center!
  391. borderstyle borderstyle = stylelowered!
  392. string mask = "0"
  393. boolean spin = true
  394. string minmax = "1~~5"
  395. end type
  396. type cbx_4 from checkbox within w_addqty_input
  397. integer y = 1264
  398. integer width = 507
  399. integer height = 60
  400. boolean bringtotop = true
  401. integer textsize = -9
  402. integer weight = 400
  403. fontcharset fontcharset = gb2312charset!
  404. fontpitch fontpitch = variable!
  405. string facename = "宋体"
  406. long textcolor = 33554432
  407. long backcolor = 134217739
  408. string text = "辅数串固定小数位"
  409. end type
  410. event clicked;IF THIS.Checked THEN
  411. if_format = 1
  412. ELSE
  413. if_format = 0
  414. END IF
  415. f_SetProfileString (sys_empid,'addqty_input', "if_format", String(if_format))
  416. end event
  417. type cbx_5 from checkbox within w_addqty_input
  418. integer y = 1336
  419. integer width = 805
  420. integer height = 64
  421. boolean bringtotop = true
  422. integer textsize = -9
  423. integer weight = 400
  424. fontcharset fontcharset = gb2312charset!
  425. fontpitch fontpitch = variable!
  426. string facename = "宋体"
  427. long backcolor = 134217739
  428. string text = "新模式 前两列(规格,数量)"
  429. end type
  430. event clicked;long flag
  431. IF THIS.CHECKED = TRUE THEN
  432. flag = 1
  433. ELSE
  434. flag = 0
  435. END IF
  436. f_SetProfileString (sys_empid,'newmode', "flag", String(flag))
  437. end event
  438. event constructor;
  439. IF long( f_profilestring (sys_empid,'NEWMODE', "flag", '0')) = 1 THEN
  440. THIS.CHECKED = TRUE
  441. ELSE
  442. THIS.CHECKED = FALSE
  443. END IF
  444. end event