w_add_mtrlware.srw 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534
  1. $PBExportHeader$w_add_mtrlware.srw
  2. forward
  3. global type w_add_mtrlware from w_publ_base
  4. end type
  5. type cb_addware from uo_imflatbutton within w_add_mtrlware
  6. end type
  7. type dw_1 from datawindow within w_add_mtrlware
  8. end type
  9. end forward
  10. global type w_add_mtrlware from w_publ_base
  11. integer width = 2080
  12. integer height = 1616
  13. string title = "增加库存记录"
  14. boolean minbox = false
  15. windowtype windowtype = response!
  16. event ue_f8 ( )
  17. event ue_f9 ( )
  18. event ue_allowedit ( )
  19. cb_addware cb_addware
  20. dw_1 dw_1
  21. end type
  22. global w_add_mtrlware w_add_mtrlware
  23. type variables
  24. long ins_warepdbid
  25. long ins_storageid
  26. datetime ins_waredate
  27. s_mtrlware_noalloc_array INS_RT_STRU
  28. end variables
  29. event ue_f8();//用于选择明细内容,被F8[默认]\dw_1.doubleclicked调用
  30. Long child_row
  31. Long li_statusflag,li_woodcodeflag,li_pcodeflag
  32. child_row = dw_1.GetRow()
  33. IF Not IsValid(W_mtrldef_edit) THEN
  34. s_edit_index_tran s_ch_tran //传递参数使用
  35. s_ch_tran.if_retrieve_all = False //是否一次RETRIEVE所有行
  36. s_ch_tran.work_mode = 1 //0-单纯编辑模式 1-选择\编辑模式
  37. s_ch_tran.arg_pkid = 0 //目标定位PKID (备用)
  38. s_ch_tran.arg_string_code = '' //查询列(物料编码)部分内容,用于初步筛选
  39. s_ch_tran.if_select_all = True
  40. s_ch_tran.b_long = -1
  41. s_ch_tran.c_long = ins_storageid
  42. Long chc = 1,ls_j
  43. dw_1.AcceptText()
  44. IF dw_1.GetRow() > 0 THEN s_ch_tran.arg_string_code = Trim(dw_1.Object.u_mtrldef_mtrlcode[dw_1.GetRow()])
  45. OpenWithParm(W_mtrldef_edit,s_ch_tran)
  46. s_mtrldef_array S_INSCUST
  47. s_mtrldef_array arg_s_mtrldef
  48. S_INSCUST = Message.PowerObjectParm
  49. FOR ls_j = 1 To UpperBound(S_INSCUST.mtrlid)
  50. IF S_INSCUST.mtrlid[ls_j] > 0 THEN
  51. dw_1.Object.u_mtrldef_mtrlcode[child_row] = S_INSCUST.mtrlcode[ls_j]
  52. dw_1.Object.u_mtrldef_unit[child_row] = S_INSCUST.unit[ls_j]
  53. dw_1.Object.u_warepdb_mtrlid[child_row] = S_INSCUST.mtrlid[ls_j]
  54. dw_1.Object.u_mtrldef_mtrlname[child_row] = S_INSCUST.mtrlname[ls_j]
  55. dw_1.Object.u_mtrldef_mtrlmode[child_row] = S_INSCUST.mtrlmode[ls_j]
  56. IF f_find_mtrl_by_id(S_INSCUST.mtrlid[ls_j],arg_s_mtrldef) = 1 THEN
  57. li_statusflag = arg_s_mtrldef.statusflag[1]
  58. li_pcodeflag = arg_s_mtrldef.pcodeflag[1]
  59. li_woodcodeflag = arg_s_mtrldef.woodcodeflag[1]
  60. END IF
  61. dw_1.Object.u_mtrldef_statusflag[child_row] = li_statusflag
  62. dw_1.Object.u_mtrldef_woodcodeflag[child_row] = li_woodcodeflag
  63. dw_1.Object.u_mtrldef_pcodeflag[child_row] = li_pcodeflag
  64. END IF
  65. NEXT
  66. dw_1.SetFocus()
  67. This.TriggerEvent('ue_allowedit')
  68. END IF
  69. end event
  70. event ue_f9();
  71. Long uc_row
  72. uc_row = dw_1.GetRow()
  73. dw_1.AcceptText()
  74. IF Not IsValid(W_cust_edit) THEN
  75. s_edit_index_tran s_ch_tran //传递参数使用
  76. s_ch_tran.if_retrieve_all = False //是否一次RETRIEVE所有行
  77. s_ch_tran.work_mode = 1 //0-单纯编辑模式 1-选择\编辑模式
  78. s_ch_tran.arg_pkid = 0 //目标定位PKID (备用)
  79. //查询列(物料编码)部分内容,用于初步筛选
  80. s_ch_tran.arg_string_code = Upper(Trim(dw_1.Object.u_cust_cuscode[dw_1.GetRow()]))
  81. OpenWithParm(W_cust_edit,s_ch_tran) //调用
  82. s_custom S_INSCUST
  83. S_INSCUST = Message.PowerObjectParm //接受返回结构
  84. IF S_INSCUST.cusid > 0 THEN //正常返回值则可以取以下值
  85. dw_1.SetRedraw(False)
  86. dw_1.Object.u_warepdb_sptid[uc_row] = S_INSCUST.cusid
  87. dw_1.Object.u_cust_name[uc_row] = S_INSCUST.Name
  88. dw_1.Object.u_cust_cuscode[uc_row] = S_INSCUST.cuscode
  89. dw_1.SetRedraw(True)
  90. END IF
  91. END IF
  92. end event
  93. event ue_allowedit();Long Columns
  94. Int i
  95. String ls_modify_str
  96. Long ll_row
  97. Long ll_value
  98. Long ll_statusflag,ll_woodcodeflag,ll_pcodeflag
  99. String ls_status,ls_woodcode,ls_pcode
  100. String ls_data_type
  101. ll_row = dw_1.GetRow()
  102. IF ll_row <= 0 THEN RETURN
  103. Columns = Long(dw_1.Describe("DataWindow.Column.Count"))
  104. FOR i = 1 To Columns
  105. ls_modify_str = dw_1.Describe("#" + String(i) + ".name")
  106. ls_modify_str = Lower(ls_modify_str)
  107. IF i = 1 THEN //第1个字段,约定物料ID
  108. ls_data_type = dw_1.Describe(ls_modify_str+".ColType")
  109. IF ls_data_type = "long" THEN
  110. ll_value = dw_1.GetItemNumber(ll_row,ls_modify_str)
  111. END IF
  112. END IF
  113. IF Pos(ls_modify_str,'statusflag') > 0 THEN
  114. ls_data_type = dw_1.Describe(ls_modify_str+".ColType")
  115. IF ls_data_type = "long" THEN
  116. ll_statusflag = dw_1.GetItemNumber(ll_row,ls_modify_str)
  117. END IF
  118. END IF
  119. IF Pos(ls_modify_str,'woodcodeflag') > 0 THEN
  120. ls_data_type = dw_1.Describe(ls_modify_str+".ColType")
  121. IF ls_data_type = "long" THEN
  122. ll_woodcodeflag = dw_1.GetItemNumber(ll_row,ls_modify_str)
  123. END IF
  124. END IF
  125. IF Pos(ls_modify_str,'pcodeflag') > 0 THEN
  126. ls_data_type = dw_1.Describe(ls_modify_str+".ColType")
  127. IF ls_data_type = "long" THEN
  128. ll_pcodeflag = dw_1.GetItemNumber(ll_row,ls_modify_str)
  129. END IF
  130. END IF
  131. IF Pos(ls_modify_str,'status') > 0 And Pos(ls_modify_str,'statusflag') = 0 And Pos(ls_modify_str,'statustype') = 0 THEN
  132. IF Len(ls_modify_str) = Len('status') Or Pos(ls_modify_str,'_status') > 0 THEN
  133. IF Not (Pos(ls_modify_str,'u_saletask_status') > 0 Or &
  134. Pos(ls_modify_str,'u_buytask_status') > 0 Or &
  135. Pos(ls_modify_str,'u_order_ml_status') > 0 Or &
  136. Pos(ls_modify_str,'u_order_wfjg_status') > 0 Or &
  137. Pos(ls_modify_str,'u_rs_empinfo_status') > 0 ) THEN
  138. ls_status = ls_modify_str
  139. END IF
  140. END IF
  141. END IF
  142. IF Pos(ls_modify_str,'woodcode') > 0 And Pos(ls_modify_str,'woodcodeflag') = 0 And Pos(ls_modify_str,'woodcodetype') = 0 THEN
  143. IF Len(ls_modify_str) = Len('woodcode') Or Pos(ls_modify_str,'_woodcode') > 0 THEN
  144. ls_woodcode = ls_modify_str
  145. END IF
  146. END IF
  147. IF Pos(ls_modify_str,'pcode') > 0 And Pos(ls_modify_str,'pcodeflag') = 0 And Pos(ls_modify_str,'pcodetype') = 0 THEN
  148. IF Len(ls_modify_str) = Len('pcode') Or Pos(ls_modify_str,'_pcode') > 0 THEN
  149. ls_pcode = ls_modify_str
  150. END IF
  151. END IF
  152. NEXT
  153. IF ls_status <> '' THEN
  154. IF ll_statusflag <> 0 Or ll_value = 0 THEN
  155. dw_1.Modify(ls_status+".dddw.allowedit = no")
  156. ELSE
  157. dw_1.Modify(ls_status+".dddw.allowedit = yes")
  158. END IF
  159. END IF
  160. IF ls_woodcode <> '' THEN
  161. IF ll_woodcodeflag <> 0 Or ll_value = 0 THEN
  162. dw_1.Modify(ls_woodcode+".dddw.allowedit = no")
  163. ELSE
  164. dw_1.Modify(ls_woodcode+".dddw.allowedit = yes")
  165. END IF
  166. END IF
  167. IF ls_pcode <> '' THEN
  168. IF ll_pcodeflag <> 0 Or ll_value = 0 THEN
  169. dw_1.Modify(ls_pcode+".dddw.allowedit = no")
  170. ELSE
  171. dw_1.Modify(ls_pcode+".dddw.allowedit = yes")
  172. END IF
  173. END IF
  174. end event
  175. on w_add_mtrlware.create
  176. int iCurrent
  177. call super::create
  178. this.cb_addware=create cb_addware
  179. this.dw_1=create dw_1
  180. iCurrent=UpperBound(this.Control)
  181. this.Control[iCurrent+1]=this.cb_addware
  182. this.Control[iCurrent+2]=this.dw_1
  183. end on
  184. on w_add_mtrlware.destroy
  185. call super::destroy
  186. destroy(this.cb_addware)
  187. destroy(this.dw_1)
  188. end on
  189. event open;call super::open;s_edit_index_tran s_tran //传递参数使用
  190. s_tran = message.powerobjectparm
  191. if not isnull(s_tran) then
  192. // ins_warepdbid=s_tran.d_long
  193. ins_storageid=s_tran.c_long
  194. // ins_waredate=s_tran.arr_datetime[1]
  195. end if
  196. long ls_row
  197. dw_1.settransobject(sqlca)
  198. dw_1.retrieve( )
  199. ls_row=dw_1.insertrow(0)
  200. dw_1.object.u_warepdb_storageid[ls_row]=ins_storageid
  201. end event
  202. event close;call super::close;CLOSEWITHRETURN(THIS,INS_RT_STRU)
  203. end event
  204. type cb_func from w_publ_base`cb_func within w_add_mtrlware
  205. boolean visible = false
  206. integer x = 123
  207. integer y = 1388
  208. end type
  209. type cb_exit from w_publ_base`cb_exit within w_add_mtrlware
  210. integer x = 1682
  211. integer y = 1384
  212. end type
  213. type cb_addware from uo_imflatbutton within w_add_mtrlware
  214. integer x = 1371
  215. integer y = 1384
  216. integer width = 311
  217. integer height = 96
  218. integer taborder = 130
  219. boolean bringtotop = true
  220. end type
  221. event clicked;call super::clicked;Long i,rowcnt,rslt = 1
  222. Long ls_mtrlwareid,ls_mtrlid,ls_storageid,ls_dxflag
  223. String ls_mtrlcode
  224. String ls_plancode
  225. String ls_status,ls_woodcode,ls_pcode
  226. Decimal ls_qty,ls_cost,ls_addqty
  227. Long ls_cusid
  228. String arg_msg
  229. dw_1.accepttext( )
  230. i = dw_1.GetRow()
  231. ls_storageid = dw_1.Object.u_warepdb_storageid[i]
  232. ls_mtrlwareid = dw_1.Object.u_warepdb_mtrlwareid[i]
  233. ls_mtrlid = dw_1.Object.u_warepdb_mtrlid[i]
  234. ls_mtrlcode = dw_1.Object.u_mtrldef_mtrlcode[i]
  235. ls_plancode = dw_1.Object.u_warepdb_plancode[i]
  236. //ls_dxflag = dw_1.Object.u_warepdb_dxflag[i]
  237. ls_cusid = dw_1.Object.u_warepdb_sptid[i]
  238. ls_status = dw_1.Object.u_warepdb_status[i]
  239. ls_woodcode = dw_1.Object.u_warepdb_woodcode[i]
  240. ls_pcode = dw_1.Object.u_warepdb_pcode[i]
  241. ls_qty = dw_1.Object.u_warepdb_factqty[i]
  242. ls_addqty = dw_1.Object.u_warepdb_factaddqty[i]
  243. ls_cost = dw_1.Object.u_warepdb_cost[i]
  244. IF f_insert_0_mtrlware(ls_mtrlwareid,ls_mtrlid,ls_mtrlcode,ls_storageid,ls_cusid,ls_status,ls_woodcode,ls_pcode,ls_plancode,ls_cost,arg_msg) = 0 THEN
  245. rslt = 0
  246. GOTO ext
  247. else
  248. dw_1.Object.u_warepdb_mtrlwareid[i] = ls_mtrlwareid
  249. END IF
  250. INS_RT_STRU.mtrlwareid[1] = ls_mtrlwareid
  251. INS_RT_STRU.mtrlid[1] = ls_mtrlid
  252. INS_RT_STRU.plancode[1] = ls_plancode
  253. //INS_RT_STRU.pcode[1] = ls_pcode
  254. INS_RT_STRU.noallocqty[1] = ls_qty
  255. INS_RT_STRU.allocqty[1] = ls_addqty
  256. INS_RT_STRU.status[1] = ls_status
  257. INS_RT_STRU.woodcode[1] = ls_woodcode
  258. INS_RT_STRU.pcode[1] = ls_pcode
  259. INS_RT_STRU.u_mtrldef_mtrlname[1] = dw_1.Object.u_mtrldef_mtrlname[i]
  260. INS_RT_STRU.u_mtrldef_mtrlcode[1] = dw_1.Object.u_mtrldef_mtrlcode[i]
  261. INS_RT_STRU.u_mtrldef_unit[1] = dw_1.Object.u_mtrldef_unit[i]
  262. INS_RT_STRU.cost[1] = ls_cost
  263. INS_RT_STRU.sptid[1] = ls_cusid
  264. INS_RT_STRU.sptcode[1] = dw_1.Object.u_cust_cuscode[i]
  265. INS_RT_STRU.sptname[1] = dw_1.Object.u_cust_name[i]
  266. ext:
  267. IF rslt = 0 THEN
  268. MessageBox('错误',arg_msg,stopsign!,OK!)
  269. END IF
  270. CLOSE(PARENT)
  271. end event
  272. type dw_1 from datawindow within w_add_mtrlware
  273. event key pbm_dwnkey
  274. event ue_dwndropdown pbm_dwndropdown
  275. integer x = 50
  276. integer y = 40
  277. integer width = 1993
  278. integer height = 1300
  279. integer taborder = 10
  280. boolean bringtotop = true
  281. string title = "none"
  282. string dataobject = "dw_add_mtrlware"
  283. boolean livescroll = true
  284. borderstyle borderstyle = stylelowered!
  285. end type
  286. event key;String ls_mtrlcode,ls_mtrlname,ls_unit,ls_mtrlmode,ls_prdpackcode
  287. Long ls_mtrlid
  288. Decimal ls_planprice,ls_packqty
  289. Long li_statusflag,li_woodcodeflag,li_pcodeflag
  290. Long child_row
  291. Long ls_null
  292. SetNull(ls_null)
  293. If (KeyDown(KeyEnter!) Or KeyDown(KeyTab!)) And Not KeyDown(KeyControl!) And Not KeyDown(KeyShift!) THEN
  294. IF This.GetColumnName() = 'u_mtrldef_mtrlcode' THEN
  295. This.AcceptText()
  296. child_row = This.GetRow()
  297. ls_mtrlcode = This.Object.u_mtrldef_mtrlcode[child_row]
  298. SELECT u_mtrldef.mtrlid,
  299. u_mtrldef.mtrlname,
  300. u_mtrldef.unit,
  301. u_mtrldef.planprice,
  302. u_mtrldef.mtrlmode,
  303. u_mtrldef.prdpackcode,
  304. u_mtrldef.packqty,
  305. u_mtrldef.statusflag,
  306. u_mtrldef.woodcodeflag,
  307. u_mtrldef.pcodeflag
  308. INTO :ls_mtrlid,:ls_mtrlname,:ls_unit,:ls_planprice,
  309. :ls_mtrlmode,:ls_prdpackcode,:ls_packqty,:li_statusflag,:li_woodcodeflag,:li_pcodeflag
  310. FROM u_mtrldef
  311. Where ( u_mtrldef.mtrlcode = :ls_mtrlcode);
  312. IF sqlca.SQLCode = 100 THEN
  313. Parent.TriggerEvent('ue_f8')
  314. RETURN
  315. END IF
  316. This.Object.u_warepdb_mtrlid[child_row] = ls_mtrlid
  317. This.Object.u_mtrldef_mtrlname[child_row] = ls_mtrlname
  318. This.Object.u_mtrldef_mtrlmode[child_row] = ls_mtrlmode
  319. This.Object.u_mtrldef_unit[child_row] = ls_unit
  320. This.Object.u_mtrldef_statusflag[child_row] = li_statusflag
  321. This.Object.u_mtrldef_woodcodeflag[child_row] = li_woodcodeflag
  322. This.Object.u_mtrldef_pcodeflag[child_row] = li_pcodeflag
  323. Parent.TriggerEvent('ue_allowedit')
  324. IF Key = KeyEnter! THEN
  325. keybd_event ( 9, 0, 0 , 0 ) // 按下tab
  326. keybd_event ( 9, 0, 2, 0 ) // 释放tab
  327. RETURN 1
  328. END IF
  329. ELSEIF dw_1.GetColumnName ( ) = 'u_cust_cuscode' And Key = KeyEnter! THEN
  330. String ls_code,ls_name,ls_find_code
  331. Long ls_cusid
  332. Long cnt = 0
  333. Boolean if_find = False
  334. dw_1.AcceptText()
  335. ls_code = Upper(Trim(dw_1.Object.u_cust_cuscode[dw_1.GetRow()]))
  336. SELECT u_cust.cusid,
  337. u_cust.name,
  338. u_cust.cuscode
  339. INTO :ls_cusid,:ls_name,:ls_code
  340. FROM u_cust
  341. Where ( cuscode = :ls_code Or Name = :ls_code );
  342. IF sqlca.SQLCode <> 0 THEN
  343. IF Pos(Trim(ls_code),'%') = 0 THEN
  344. ls_find_code = '%'+ Trim(ls_code) + '%'
  345. ELSE
  346. ls_find_code = Trim(ls_code)
  347. END IF
  348. SELECT count(*) INTO :cnt
  349. FROM u_cust
  350. Where ( cuscode Like :ls_find_code Or Name Like :ls_find_code );
  351. IF sqlca.SQLCode <> 0 THEN
  352. Parent.TriggerEvent('ue_f9')
  353. RETURN 1
  354. END IF
  355. IF cnt <> 1 THEN
  356. Parent.TriggerEvent('ue_f9')
  357. RETURN 1
  358. ELSE
  359. SELECT u_cust.cusid,
  360. u_cust.cuscode,
  361. u_cust.name
  362. INTO :ls_cusid,:ls_code,:ls_name
  363. FROM u_cust
  364. Where ( cuscode Like :ls_find_code Or Name Like :ls_find_code );
  365. IF sqlca.SQLCode <> 0 THEN
  366. Parent.TriggerEvent('ue_f9')
  367. RETURN 1
  368. ELSE
  369. if_find = True
  370. END IF
  371. END IF
  372. ELSE
  373. if_find = True
  374. END IF
  375. IF if_find THEN
  376. dw_1.SetRedraw(False)
  377. dw_1.Object.u_warepdb_sptid[dw_1.GetRow()] = ls_cusid
  378. dw_1.Object.u_cust_cuscode[dw_1.GetRow()] = ls_code
  379. dw_1.Object.u_cust_name[dw_1.GetRow()] = ls_name
  380. dw_1.SetRedraw(True)
  381. dw_1.SetColumn("indate")
  382. RETURN 1
  383. END IF
  384. ELSE
  385. IF Key = KeyEnter! THEN
  386. keybd_event ( 9, 0, 0 , 0 ) // 按下tab
  387. keybd_event ( 9, 0, 2, 0 ) // 释放tab
  388. RETURN 1
  389. END IF
  390. END IF
  391. END IF
  392. end event
  393. event ue_dwndropdown;//IF NOT dw_edit_mode THEN RETURN
  394. String ls_col_pz,ls_col_mtrlid
  395. String ls_pz_ch
  396. String ls_col_value
  397. String ls_data_type
  398. Long ll_row,ll_mtrlid
  399. s_pzwin_open arg_s_win
  400. ll_row = THIS.GetRow()
  401. IF ll_row > 0 THEN
  402. ls_col_mtrlid = THIS.Describe("#1.Name")
  403. IF NOT Pos(Lower(ls_col_mtrlid),'mtrlid') > 0 THEN RETURN
  404. ll_mtrlid = THIS.GetItemNumber(ll_row,ls_col_mtrlid)
  405. ls_col_pz = THIS.GetColumnName( )
  406. ls_data_type = this.Describe(ls_col_pz+".ColType")
  407. IF Pos(Lower(ls_data_type),"char") > 0 THEN
  408. ls_col_value = THIS.GetItemString(ll_row,ls_col_pz)
  409. END IF
  410. arg_s_win.arg_x = THIS.X + THIS.PointerX() + PARENT.X
  411. arg_s_win.arg_y = THIS.Y + THIS.PointerY() + PARENT.Y
  412. arg_s_win.arg_col = ls_col_pz
  413. arg_s_win.arg_mtrlid = ll_mtrlid
  414. arg_s_win.arg_col_value = ls_col_value
  415. ls_pz_ch = f_mtrl_pz(arg_s_win)
  416. IF ls_pz_ch = '' THEN RETURN
  417. THIS.SetItem(ll_row,ls_col_pz,ls_pz_ch)
  418. END IF
  419. end event
  420. event doubleclicked;choose case dwo.name
  421. case 'u_mtrldef_mtrlcode'
  422. parent.triggerevent('ue_f8')
  423. case 'u_cust_cuscode'
  424. parent.triggerevent('ue_f9')
  425. end choose
  426. end event
  427. event clicked;CHOOSE CASE dwo.Name
  428. CASE 'b_mtrl'
  429. PARENT.TriggerEvent('ue_f8')
  430. CASE 'b_cust'
  431. PARENT.TriggerEvent('ue_f9')
  432. END CHOOSE
  433. end event
  434. event constructor;f_title_change(this)
  435. end event