w_add_mtrlware_spt.srw 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502
  1. $PBExportHeader$w_add_mtrlware_spt.srw
  2. forward
  3. global type w_add_mtrlware_spt from w_publ_base
  4. end type
  5. type cb_addware from uo_imflatbutton within w_add_mtrlware_spt
  6. end type
  7. type dw_1 from datawindow within w_add_mtrlware_spt
  8. end type
  9. end forward
  10. global type w_add_mtrlware_spt from w_publ_base
  11. integer width = 2039
  12. integer height = 1224
  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_spt w_add_mtrlware_spt
  23. type variables
  24. long ins_warepdbid
  25. long ins_storageid
  26. datetime ins_waredate
  27. long il_sptid
  28. s_mtrlware_noalloc_array INS_RT_STRU
  29. end variables
  30. event ue_f8();//用于选择明细内容,被F8[默认]\dw_1.doubleclicked调用
  31. Long child_row
  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 = false
  40. s_ch_tran.b_long = -1
  41. s_ch_tran.c_long = ins_storageid
  42. s_ch_tran.f_long = -1
  43. Long chc = 1,ls_j
  44. dw_1.AcceptText()
  45. IF dw_1.GetRow() > 0 THEN s_ch_tran.arg_string_code = Trim(dw_1.Object.u_mtrldef_mtrlcode[dw_1.GetRow()])
  46. OpenWithParm(W_mtrldef_edit,s_ch_tran)
  47. s_mtrldef_array S_INSCUST
  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.ow_wfjg_sptpdb_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. dw_1.Object.u_mtrldef_statusflag[child_row] = S_INSCUST.statusflag[ls_j]
  57. dw_1.Object.u_mtrldef_statustype[child_row] = S_INSCUST.statustype[ls_j]
  58. dw_1.Object.u_mtrldef_woodcodeflag[child_row] = S_INSCUST.woodcodeflag[ls_j]
  59. dw_1.Object.u_mtrldef_woodcodetype[child_row] = S_INSCUST.woodcodetype[ls_j]
  60. dw_1.Object.u_mtrldef_pcodeflag[child_row] = S_INSCUST.pcodeflag[ls_j]
  61. dw_1.Object.u_mtrldef_pcodetype[child_row] = S_INSCUST.pcodetype[ls_j]
  62. END IF
  63. NEXT
  64. this.triggerevent('ue_allowedit')
  65. dw_1.SetFocus()
  66. dw_1.SetColumn('ow_wfjg_sptpdb_factqty')
  67. END IF
  68. end event
  69. event ue_f9();
  70. long uc_row
  71. uc_row=dw_1.getrow()
  72. dw_1.accepttext()
  73. if not isvalid(W_spt_edit) then
  74. s_edit_index_tran s_ch_tran //传递参数使用
  75. s_ch_tran.if_retrieve_all=false //是否一次RETRIEVE所有行
  76. s_ch_tran.work_mode=1 //0-单纯编辑模式 1-选择\编辑模式
  77. s_ch_tran.arg_pkid=0 //目标定位PKID (备用)
  78. //查询列(物料编码)部分内容,用于初步筛选
  79. s_ch_tran.arg_string_code=upper(trim(dw_1.object.u_spt_sptcode[dw_1.getrow()]))
  80. OPENwithparm(W_spt_edit,s_ch_tran) //调用
  81. S_spt S_INSCUST
  82. S_INSCUST=Message.PowerObjectParm //接受返回结构
  83. IF S_INSCUST.sptid>0 THEN //正常返回值则可以取以下值
  84. dw_1.setredraw(false)
  85. dw_1.object.ow_wfjg_sptpdb_sptid[uc_row]=S_INSCUST.sptid
  86. dw_1.object.u_spt_sptcode[uc_row]=S_INSCUST.Name
  87. dw_1.object.u_spt_name[uc_row]= S_INSCUST.sptcode
  88. dw_1.setredraw(true)
  89. END IF
  90. end if
  91. end event
  92. event ue_allowedit();Long Columns
  93. Int i
  94. String ls_modify_str
  95. Long ll_row
  96. Long ll_value
  97. Long ll_statusflag,ll_woodcodeflag,ll_pcodeflag
  98. String ls_status,ls_woodcode,ls_pcode
  99. String ls_data_type
  100. ll_row = dw_1.GetRow()
  101. IF ll_row <= 0 THEN RETURN
  102. Columns = Long(dw_1.Describe("DataWindow.Column.Count"))
  103. FOR i = 1 TO Columns
  104. ls_modify_str = dw_1.Describe("#" + String(i) + ".name")
  105. ls_modify_str = Lower(ls_modify_str)
  106. IF i = 1 THEN //第1个字段,约定物料ID
  107. ls_data_type = dw_1.Describe(ls_modify_str+".ColType")
  108. IF ls_data_type = "long" THEN
  109. ll_value = dw_1.GetItemNumber(ll_row,ls_modify_str)
  110. END IF
  111. END IF
  112. IF Pos(ls_modify_str,'statusflag') > 0 THEN
  113. ls_data_type = dw_1.Describe(ls_modify_str+".ColType")
  114. IF ls_data_type = "long" THEN
  115. ll_statusflag = dw_1.GetItemNumber(ll_row,ls_modify_str)
  116. END IF
  117. END IF
  118. IF Pos(ls_modify_str,'woodcodeflag') > 0 THEN
  119. ls_data_type = dw_1.Describe(ls_modify_str+".ColType")
  120. IF ls_data_type = "long" THEN
  121. ll_woodcodeflag = dw_1.GetItemNumber(ll_row,ls_modify_str)
  122. END IF
  123. END IF
  124. IF Pos(ls_modify_str,'pcodeflag') > 0 THEN
  125. ls_data_type = dw_1.Describe(ls_modify_str+".ColType")
  126. IF ls_data_type = "long" THEN
  127. ll_pcodeflag = dw_1.GetItemNumber(ll_row,ls_modify_str)
  128. END IF
  129. END IF
  130. IF Pos(ls_modify_str,'status') > 0 AND Pos(ls_modify_str,'statusflag') = 0 AND Pos(ls_modify_str,'statustype') = 0 THEN
  131. IF Len(ls_modify_str) = Len('status') OR Pos(ls_modify_str,'_status') > 0 THEN
  132. IF Not (Pos(ls_modify_str,'u_saletask_status') > 0 OR &
  133. Pos(ls_modify_str,'u_buytask_status') > 0 OR &
  134. Pos(ls_modify_str,'u_order_ml_status') > 0 OR &
  135. Pos(ls_modify_str,'u_order_wfjg_status') > 0 OR &
  136. Pos(ls_modify_str,'u_rs_empinfo_status') > 0 ) THEN
  137. ls_status = ls_modify_str
  138. END IF
  139. END IF
  140. END IF
  141. IF Pos(ls_modify_str,'woodcode') > 0 AND Pos(ls_modify_str,'woodcodeflag') = 0 AND Pos(ls_modify_str,'woodcodetype') = 0 THEN
  142. IF Len(ls_modify_str) = Len('woodcode') OR Pos(ls_modify_str,'_woodcode') > 0 THEN
  143. ls_woodcode = ls_modify_str
  144. END IF
  145. END IF
  146. IF Pos(ls_modify_str,'pcode') > 0 AND Pos(ls_modify_str,'pcodeflag') = 0 AND Pos(ls_modify_str,'pcodetype') = 0 THEN
  147. IF Len(ls_modify_str) = Len('pcode') OR Pos(ls_modify_str,'_pcode') > 0 THEN
  148. ls_pcode = ls_modify_str
  149. END IF
  150. END IF
  151. NEXT
  152. IF ls_status <> '' THEN
  153. IF ll_statusflag <> 0 OR ll_value = 0 THEN
  154. dw_1.Modify(ls_status+".dddw.allowedit = no")
  155. ELSE
  156. dw_1.Modify(ls_status+".dddw.allowedit = yes")
  157. END IF
  158. END IF
  159. IF ls_woodcode <> '' THEN
  160. IF ll_woodcodeflag <> 0 OR ll_value = 0 THEN
  161. dw_1.Modify(ls_woodcode+".dddw.allowedit = no")
  162. ELSE
  163. dw_1.Modify(ls_woodcode+".dddw.allowedit = yes")
  164. END IF
  165. END IF
  166. IF ls_pcode <> '' THEN
  167. IF ll_pcodeflag <> 0 OR ll_value = 0 THEN
  168. dw_1.Modify(ls_pcode+".dddw.allowedit = no")
  169. ELSE
  170. dw_1.Modify(ls_pcode+".dddw.allowedit = yes")
  171. END IF
  172. END IF
  173. end event
  174. on w_add_mtrlware_spt.create
  175. int iCurrent
  176. call super::create
  177. this.cb_addware=create cb_addware
  178. this.dw_1=create dw_1
  179. iCurrent=UpperBound(this.Control)
  180. this.Control[iCurrent+1]=this.cb_addware
  181. this.Control[iCurrent+2]=this.dw_1
  182. end on
  183. on w_add_mtrlware_spt.destroy
  184. call super::destroy
  185. destroy(this.cb_addware)
  186. destroy(this.dw_1)
  187. end on
  188. event open;call super::open;s_edit_index_tran s_tran //传递参数使用
  189. s_tran = Message.PowerObjectParm
  190. String ls_sptcode,ls_sptname
  191. IF NOT IsNull(s_tran) THEN
  192. il_sptid = s_tran.c_long
  193. SELECT sptcode,name
  194. INTO :ls_sptcode,:ls_sptname
  195. FROM u_spt
  196. Where sptid = :il_sptid;
  197. IF sqlca.SQLCode <> 0 THEN
  198. MessageBox('Error','查询外协商失败,'+sqlca.SQLErrText)
  199. RETURN
  200. END IF
  201. END IF
  202. Long ls_row
  203. dw_1.SetTransObject(sqlca)
  204. ls_row = dw_1.InsertRow(0)
  205. dw_1.SetRedraw(FALSE)
  206. dw_1.Object.ow_wfjg_sptpdb_sptid[ls_row] = il_sptid
  207. dw_1.Object.u_spt_name[ls_row] = ls_sptname
  208. dw_1.Object.u_spt_sptcode[ls_row] = ls_sptcode
  209. dw_1.SetColumn('u_mtrldef_mtrlcode')
  210. dw_1.SetFocus()
  211. dw_1.SetRedraw(TRUE)
  212. end event
  213. event close;call super::close;CLOSEWITHRETURN(THIS,INS_RT_STRU)
  214. end event
  215. type cb_func from w_publ_base`cb_func within w_add_mtrlware_spt
  216. boolean visible = false
  217. integer x = 123
  218. integer y = 1388
  219. end type
  220. type cb_exit from w_publ_base`cb_exit within w_add_mtrlware_spt
  221. integer x = 1609
  222. integer y = 1008
  223. end type
  224. type cb_addware from uo_imflatbutton within w_add_mtrlware_spt
  225. integer x = 1257
  226. integer y = 1008
  227. integer width = 311
  228. integer height = 96
  229. integer taborder = 130
  230. boolean bringtotop = true
  231. end type
  232. event clicked;call super::clicked;//
  233. Long i,rowcnt,rslt = 1
  234. Long ls_mtrlwareid,ls_mtrlid,ls_storageid,ls_dxflag
  235. String ls_mtrlcode
  236. String ls_plancode
  237. String ls_status,ls_woodcode,ls_pcode
  238. Decimal ls_qty,ls_cost
  239. Long ls_cusid
  240. Long ll_scid
  241. String arg_msg
  242. dw_1.AcceptText()
  243. i = dw_1.GetRow()
  244. ls_mtrlid = dw_1.Object.ow_wfjg_sptpdb_mtrlid[i]
  245. ls_mtrlcode = dw_1.Object.u_mtrldef_mtrlcode[i]
  246. ls_plancode = dw_1.Object.ow_wfjg_sptpdb_plancode[i]
  247. ls_cusid = dw_1.Object.ow_wfjg_sptpdb_sptid[i]
  248. ls_status = dw_1.Object.ow_wfjg_sptpdb_status[i]
  249. ls_woodcode = dw_1.Object.ow_wfjg_sptpdb_woodcode[i]
  250. ls_pcode = dw_1.Object.ow_wfjg_sptpdb_pcode[i]
  251. ls_qty = dw_1.Object.ow_wfjg_sptpdb_factqty[i]
  252. ls_cost = dw_1.Object.ow_wfjg_sptpdb_cost[i]
  253. SELECT scid INTO :ll_scid
  254. FROM u_mtrldef
  255. Where mtrlid = :ls_mtrlid;
  256. IF sqlca.SQLCode <> 0 THEN
  257. MessageBox('Error','查询物料所属生产分部失败')
  258. RETURN
  259. END IF
  260. IF f_insert_0_sptware(ll_scid,ls_mtrlwareid,ls_mtrlid,ls_mtrlcode,il_sptid,ls_status,ls_woodcode,ls_pcode,ls_plancode,ls_cost,arg_msg) = 0 THEN
  261. rslt = 0
  262. GOTO ext
  263. ELSE
  264. dw_1.Object.ow_wfjg_sptpdb_mtrlwareid[i] = ls_mtrlwareid
  265. END IF
  266. INS_RT_STRU.mtrlwareid[1] = ls_mtrlwareid
  267. INS_RT_STRU.mtrlid[1] = ls_mtrlid
  268. INS_RT_STRU.plancode[1] = ls_plancode
  269. INS_RT_STRU.pcode[1] = ls_pcode
  270. INS_RT_STRU.noallocqty[1] = ls_qty
  271. INS_RT_STRU.woodcode[1] = ls_woodcode
  272. INS_RT_STRU.pcode[1] = ls_pcode
  273. INS_RT_STRU.status[1] = ls_status
  274. INS_RT_STRU.u_mtrldef_mtrlname[1] = dw_1.Object.u_mtrldef_mtrlname[i]
  275. INS_RT_STRU.u_mtrldef_mtrlcode[1] = dw_1.Object.u_mtrldef_mtrlcode[i]
  276. INS_RT_STRU.u_mtrldef_unit[1] = dw_1.Object.u_mtrldef_unit[i]
  277. INS_RT_STRU.cost[1] = ls_cost
  278. ext:
  279. IF rslt = 0 THEN
  280. MessageBox('',arg_msg)
  281. END IF
  282. Close(PARENT)
  283. end event
  284. type dw_1 from datawindow within w_add_mtrlware_spt
  285. event key pbm_dwnkey
  286. event ue_dwndropdown pbm_dwndropdown
  287. integer x = 50
  288. integer y = 40
  289. integer width = 1870
  290. integer height = 940
  291. integer taborder = 10
  292. boolean bringtotop = true
  293. string title = "none"
  294. string dataobject = "dw_add_mtrlware_spt"
  295. boolean livescroll = true
  296. borderstyle borderstyle = stylelowered!
  297. end type
  298. event key;String ls_mtrlcode,ls_mtrlname,ls_unit,ls_mtrlmode,ls_prdpackcode
  299. Long ls_mtrlid
  300. Decimal ls_planprice,ls_packqty
  301. Int li_statusflag,li_woodcodeflag,li_pcodeflag
  302. Long ll_statustype,ll_woodcodetype,ll_pcodetype
  303. Long child_row
  304. Long ls_null
  305. SetNull(ls_null)
  306. If (KeyDown(KeyEnter!) OR KeyDown(KeyTab!)) AND NOT KeyDown(KeyControl!) AND NOT KeyDown(KeyShift!) THEN
  307. IF THIS.GetColumnName() = 'u_mtrldef_mtrlcode' THEN
  308. THIS.AcceptText()
  309. child_row = THIS.GetRow()
  310. ls_mtrlcode = THIS.Object.u_mtrldef_mtrlcode[child_row]
  311. SELECT u_mtrldef.mtrlid,
  312. u_mtrldef.mtrlname,
  313. u_mtrldef.unit,
  314. u_mtrldef.planprice,
  315. u_mtrldef.mtrlmode,
  316. u_mtrldef.prdpackcode,
  317. u_mtrldef.packqty,
  318. u_mtrldef.statusflag,
  319. u_mtrldef.statustype,
  320. u_mtrldef.woodcodeflag,
  321. u_mtrldef.woodcodetype,
  322. u_mtrldef.pcodeflag,
  323. u_mtrldef.pcodetype
  324. INTO :ls_mtrlid,
  325. :ls_mtrlname,
  326. :ls_unit,
  327. :ls_planprice,
  328. :ls_mtrlmode,
  329. :ls_prdpackcode,
  330. :ls_packqty,
  331. :li_statusflag,
  332. :ll_statustype,
  333. :li_woodcodeflag,
  334. :ll_woodcodetype,
  335. :li_pcodeflag,
  336. :ll_pcodetype
  337. FROM u_mtrldef
  338. Where ( u_mtrldef.mtrlcode = :ls_mtrlcode);
  339. IF sqlca.SQLCode = 100 THEN
  340. PARENT.TriggerEvent('ue_f8')
  341. RETURN
  342. END IF
  343. THIS.Object.ow_wfjg_sptpdb_mtrlid[child_row] = ls_mtrlid
  344. THIS.Object.u_mtrldef_mtrlname[child_row] = ls_mtrlname
  345. THIS.Object.u_mtrldef_mtrlmode[child_row] = ls_mtrlmode
  346. THIS.Object.u_mtrldef_unit[child_row] = ls_unit
  347. THIS.Object.u_mtrldef_statusflag[child_row] = li_statusflag
  348. THIS.Object.u_mtrldef_statustype[child_row] = ll_statustype
  349. THIS.Object.u_mtrldef_woodcodeflag[child_row] = li_woodcodeflag
  350. THIS.Object.u_mtrldef_woodcodetype[child_row] = ll_woodcodetype
  351. THIS.Object.u_mtrldef_pcodeflag[child_row] = li_pcodeflag
  352. THIS.Object.u_mtrldef_pcodetype[child_row] = ll_pcodetype
  353. PARENT.TriggerEvent('ue_allowedit')
  354. IF Key = KeyEnter! THEN
  355. keybd_event ( 9, 0, 0 , 0 ) // 按下tab
  356. keybd_event ( 9, 0, 2, 0 ) // 释放tab
  357. RETURN 1
  358. END IF
  359. ELSE
  360. IF Key = KeyEnter! THEN
  361. keybd_event ( 9, 0, 0 , 0 ) // 按下tab
  362. keybd_event ( 9, 0, 2, 0 ) // 释放tab
  363. RETURN 1
  364. END IF
  365. END IF
  366. END IF
  367. end event
  368. event ue_dwndropdown;
  369. String ls_col_pz,ls_col_mtrlid
  370. String ls_pz_ch
  371. Long ll_row,ll_mtrlid
  372. s_pzwin_open arg_s_win
  373. ll_row = THIS.GetRow()
  374. IF ll_row > 0 THEN
  375. ls_col_mtrlid = THIS.Describe("#1.Name")
  376. IF NOT Pos(Lower(ls_col_mtrlid),'mtrlid') > 0 THEN RETURN
  377. ll_mtrlid = THIS.GetItemNumber(ll_row,ls_col_mtrlid)
  378. ls_col_pz = THIS.GetColumnName( )
  379. arg_s_win.arg_x = THIS.X + THIS.PointerX() + parent.x
  380. arg_s_win.arg_y = THIS.Y + THIS.PointerY() + parent.y
  381. arg_s_win.arg_col = ls_col_pz
  382. arg_s_win.arg_mtrlid = ll_mtrlid
  383. ls_pz_ch = f_mtrl_pz(arg_s_win)
  384. IF ls_pz_ch = '' THEN RETURN
  385. THIS.SetItem(ll_row,ls_col_pz,ls_pz_ch)
  386. END IF
  387. end event
  388. event doubleclicked;
  389. choose case dwo.name
  390. case 'u_mtrldef_mtrlcode'
  391. parent.triggerevent('ue_f8')
  392. end choose
  393. end event
  394. event constructor;f_title_change(this)
  395. end event