w_cmpl_product_price.srw 50 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918
  1. $PBExportHeader$w_cmpl_product_price.srw
  2. forward
  3. global type w_cmpl_product_price from w_publ_base
  4. end type
  5. type dw_1 from u_dw_rbtnfilter within w_cmpl_product_price
  6. end type
  7. type cb_1 from uo_imflatbutton within w_cmpl_product_price
  8. end type
  9. type cb_3 from uo_imflatbutton within w_cmpl_product_price
  10. end type
  11. type st_1 from statictext within w_cmpl_product_price
  12. end type
  13. type cb_2 from uo_imflatbutton within w_cmpl_product_price
  14. end type
  15. type cb_edit from uo_imflatbutton within w_cmpl_product_price
  16. end type
  17. type cb_addmx from uo_imflatbutton within w_cmpl_product_price
  18. end type
  19. type cb_4 from uo_imflatbutton within w_cmpl_product_price
  20. end type
  21. type cb_sort from uo_imflatbutton within w_cmpl_product_price
  22. end type
  23. type cb_5 from uo_imflatbutton within w_cmpl_product_price
  24. end type
  25. type cb_6 from uo_imflatbutton within w_cmpl_product_price
  26. end type
  27. type cbx_1 from checkbox within w_cmpl_product_price
  28. end type
  29. type ln_bar from line within w_cmpl_product_price
  30. end type
  31. type ln_bar2 from line within w_cmpl_product_price
  32. end type
  33. type ln_1 from line within w_cmpl_product_price
  34. end type
  35. type ln_2 from line within w_cmpl_product_price
  36. end type
  37. type r_bar from rectangle within w_cmpl_product_price
  38. end type
  39. end forward
  40. global type w_cmpl_product_price from w_publ_base
  41. integer width = 4197
  42. integer height = 2304
  43. string title = "床垫产品计价"
  44. boolean minbox = false
  45. windowtype windowtype = response!
  46. windowstate windowstate = maximized!
  47. event ue_f8 ( )
  48. event ue_f9 ( )
  49. event ue_f10 ( )
  50. event ue_save_modle ( )
  51. event ue_save_modle_as ( )
  52. event ue_save_bill ( )
  53. event ue_save_bill_as ( )
  54. event ue_open_bill ( )
  55. event ue_pickmtrl ( )
  56. event ue_addmx ( )
  57. event ue_delmx ( )
  58. dw_1 dw_1
  59. cb_1 cb_1
  60. cb_3 cb_3
  61. st_1 st_1
  62. cb_2 cb_2
  63. cb_edit cb_edit
  64. cb_addmx cb_addmx
  65. cb_4 cb_4
  66. cb_sort cb_sort
  67. cb_5 cb_5
  68. cb_6 cb_6
  69. cbx_1 cbx_1
  70. ln_bar ln_bar
  71. ln_bar2 ln_bar2
  72. ln_1 ln_1
  73. ln_2 ln_2
  74. r_bar r_bar
  75. end type
  76. global w_cmpl_product_price w_cmpl_product_price
  77. type variables
  78. //====================================================================
  79. // 事件: w_cmpl_product_price.Declare Instance Variables()
  80. //--------------------------------------------------------------------
  81. // 描述:
  82. //--------------------------------------------------------------------
  83. // 参数:
  84. //--------------------------------------------------------------------
  85. // 返回: (none)
  86. //--------------------------------------------------------------------
  87. // 作者: lwl 日期: 2010年12月25日
  88. //--------------------------------------------------------------------
  89. // LONGJOE
  90. //--------------------------------------------------------------------
  91. // 修改历史: defaultValue 作 物料最新价
  92. //
  93. //====================================================================
  94. long ins_column_count = 0
  95. uo_cmpl_modle uo_modle
  96. uo_cmpl_bill uo_bill
  97. string ins_oldtitle
  98. // 报价单
  99. uo_quote ins_quote
  100. // 区间
  101. long ins_first = 5
  102. long ins_last = 44
  103. end variables
  104. forward prototypes
  105. public subroutine wf_refresh ()
  106. public function integer wf_save (ref string arg_msg)
  107. public function integer wf_update_price (ref string arg_msg)
  108. end prototypes
  109. event ue_f8();// TODO: 研究列添加的交互方式
  110. IF NOT IsValid(W_mtrldef_edit) THEN
  111. s_edit_index_tran s_tranf8 //传递参数使用
  112. s_tranf8.if_retrieve_all = FALSE //是否一次RETRIEVE所有行
  113. s_tranf8.work_mode = 1 //0-单纯编辑模式 1-选择\编辑模式
  114. s_tranf8.arg_pkid = 0 //目标定位PKID (备用)
  115. s_tranf8.arg_string_code = '' //查询列(物料编码)部分内容,用于初步筛选
  116. s_tranf8.if_select_all = TRUE //多选
  117. s_tranf8.b_long = 0 //选采购
  118. s_tranf8.c_long = -1
  119. Long chc = 1,ls_j
  120. OpenWithParm(W_mtrldef_edit,s_tranf8) //调用
  121. s_mtrldef_array S_INSCUST
  122. S_INSCUST = Message.PowerObjectParm //接受返回结构
  123. IF UpperBound(S_INSCUST.mtrlid) > 30 THEN
  124. MessageBox('提示', '一次最多只能选30个产品')
  125. RETURN
  126. END IF
  127. dw_1.Reset()
  128. String ls_mod
  129. FOR ls_j = ins_first TO ins_last
  130. ls_mod = '#' + String(ls_j) + '.Visible = 0'
  131. ls_mod = dw_1.Modify(ls_mod)
  132. NEXT
  133. chc = 0
  134. FOR ls_j = 1 TO UpperBound(S_INSCUST.mtrlid)
  135. IF S_INSCUST.mtrlid[ls_j] > 0 THEN
  136. chc ++
  137. ls_mod = 'mtrl' + String(chc) + '.Visible = 1'
  138. ls_mod = dw_1.Modify(ls_mod)
  139. ls_mod = 'mtrl' + String(chc) + '_t.Text = ~''+String(S_INSCUST.mtrlname[ls_j])+'~''
  140. ls_mod = dw_1.Modify(ls_mod)
  141. ls_mod = 'mtrl' + String(chc) + '_t.Tag = ~''+String(S_INSCUST.mtrlid[ls_j])+'~''
  142. ls_mod = dw_1.Modify(ls_mod)
  143. ls_mod = 'mtrl' + String(chc) + '.Tag = ~''+String(S_INSCUST.mtrlcode[ls_j])+'~''
  144. ls_mod = dw_1.Modify(ls_mod)
  145. END IF
  146. NEXT
  147. ins_column_count = chc
  148. FOR ls_j = (ins_first + 30) TO ins_last
  149. ls_mod = '#' + String(ls_j) + '.Visible = 1'
  150. ls_mod = dw_1.Modify(ls_mod)
  151. NEXT
  152. //
  153. // for ls_j = 1 to UpperBound(S_INSCUST.mtrlid)
  154. // if S_INSCUST.mtrlid[ls_j] > 0 then
  155. // chc = dw_2.insertrow(0)
  156. // dw_2.object.mtrlid[chc] = S_INSCUST.mtrlid[1]
  157. // dw_2.object.mtrlcode[chc] = S_INSCUST.mtrlcode[1]
  158. // dw_2.object.mtrlname[chc] = S_INSCUST.mtrlname[1]
  159. //
  160. // end if
  161. // next
  162. //
  163. // dw_1.Reset()
  164. END IF
  165. end event
  166. event ue_f9();long ll_product_mtrlid
  167. string ls_dscrp, ls_mode[]
  168. decimal ld_value
  169. if ins_column_count = 0 then
  170. MessageBox('提示', '请先选择产品')
  171. return
  172. end if
  173. if dw_1.rowcount() > 0 then
  174. IF MessageBox ("IF","更新模板将重置当前数据,是否继续?",Question!,YesNo! ) = 2 THEN RETURN
  175. end if
  176. IF NOT IsValid(w_cmpl_modle_ch) THEN
  177. Open(w_cmpl_modle_ch) //调用
  178. long ls_j, ll_row, ll_col
  179. s_cmpl_modle_ch S_INSCUST
  180. S_INSCUST = Message.PowerObjectParm //接受返回结构
  181. if S_INSCUST.modleid > 0 then
  182. uo_modle.modleid = s_inscust.modleid
  183. uo_modle.modlename = s_inscust.modlename
  184. dw_1.reset()
  185. st_1.Text = '模板名:' + S_INSCUST.modlename
  186. for ls_j = 1 to upperbound(S_INSCUST.printid)
  187. ll_row = dw_1.insertrow(0)
  188. dw_1.object.printid[ll_row] = S_INSCUST.printid[ls_j]
  189. dw_1.object.parmname[ll_row] = S_INSCUST.parmname[ls_j]
  190. dw_1.object.displayname[ll_row] = S_INSCUST.displayname[ls_j]
  191. //dw_1.object.defaultvalue[ll_row] = S_INSCUST.defaultvalue[ls_j]
  192. dw_1.object.if_useformula[ll_row] = S_INSCUST.if_useformula[ls_j]
  193. dw_1.object.formula[ll_row] = S_INSCUST.formula[ls_j]
  194. //dw_1.object.if_from_mtrl[ll_row] = S_INSCUST.if_from_mtrl[ls_j]
  195. dw_1.object.mtrlid[ll_row] = S_INSCUST.mtrlid[ls_j]
  196. //dw_1.object.mtrl_pro[ll_row] = S_INSCUST.mtrl_pro[ls_j]
  197. dw_1.object.if_from_product[ll_row] = S_INSCUST.if_from_product[ls_j]
  198. dw_1.object.product_pro[ll_row] = S_INSCUST.product_pro[ls_j]
  199. dw_1.object.mtrlcode[ll_row] = S_INSCUST.mtrlcode[ls_j]
  200. dw_1.object.mtrlname[ll_row] = S_INSCUST.mtrlname[ls_j]
  201. dw_1.object.unit[ll_row] = S_INSCUST.unit[ls_j]
  202. //==============================================================================
  203. // 物料相关
  204. //==============================================================================
  205. if S_INSCUST.mtrlid[ls_j] > 0 then
  206. // DONE: 获取物料最新价
  207. SELECT price INTO :ld_value
  208. FROM v_maxprice_sptprice
  209. WHERE mtrlid = :S_INSCUST.mtrlid[ls_j];
  210. if sqlca.sqlcode <> 0 then
  211. ld_value = 0
  212. end if
  213. dw_1.object.defaultvalue[ll_row] = ld_value
  214. end if
  215. //==============================================================================
  216. // 产品相关
  217. //==============================================================================
  218. if S_INSCUST.if_from_product[ls_j] = 1 then
  219. if S_INSCUST.product_pro[ls_j] = '长' then
  220. for ll_col = 1 to ins_column_count
  221. ls_dscrp = dw_1.Describe('mtrl'+string(ll_col)+'_t.tag')
  222. ll_product_mtrlid = long(ls_dscrp)
  223. // DONE: 获取产品长
  224. SELECT mtrlmode INTO :ls_dscrp
  225. FROM u_mtrldef
  226. WHERE mtrlid = :ll_product_mtrlid;
  227. if sqlca.sqlcode <> 0 then
  228. ls_dscrp = '0*0*0'
  229. end if
  230. f_str_split(ls_dscrp, '*', ls_mode)
  231. if upperbound(ls_mode) < 1 then
  232. ls_mode[1] = '0'
  233. end if
  234. if not isnumber(ls_mode[1]) then
  235. ls_mode[1] = '0'
  236. end if
  237. ld_value = dec(ls_mode[1])
  238. dw_1.SetItem(ll_row, 'mtrl' + string(ll_col), ld_value)
  239. next
  240. end if
  241. if S_INSCUST.product_pro[ls_j] = '宽' then
  242. for ll_col = 1 to ins_column_count
  243. ls_dscrp = dw_1.Describe('mtrl'+string(ll_col)+'_t.tag')
  244. ll_product_mtrlid = long(ls_dscrp)
  245. // DONE: 获取产品宽
  246. SELECT mtrlmode INTO :ls_dscrp
  247. FROM u_mtrldef
  248. WHERE mtrlid = :ll_product_mtrlid;
  249. if sqlca.sqlcode <> 0 then
  250. ls_dscrp = '0*0*0'
  251. end if
  252. f_str_split(ls_dscrp, '*', ls_mode)
  253. if upperbound(ls_mode) < 2 then
  254. ls_mode[2] = '0'
  255. end if
  256. if not isnumber(ls_mode[2]) then
  257. ls_mode[2] = '0'
  258. end if
  259. ld_value = dec(ls_mode[2])
  260. dw_1.SetItem(ll_row, 'mtrl' + string(ll_col), ld_value)
  261. next
  262. end if
  263. if S_INSCUST.product_pro[ls_j] = '高' then
  264. for ll_col = 1 to ins_column_count
  265. ls_dscrp = dw_1.Describe('mtrl'+string(ll_col)+'_t.tag')
  266. ll_product_mtrlid = long(ls_dscrp)
  267. // DONE: 获取产品高
  268. SELECT mtrlmode INTO :ls_dscrp
  269. FROM u_mtrldef
  270. WHERE mtrlid = :ll_product_mtrlid;
  271. if sqlca.sqlcode <> 0 then
  272. ls_dscrp = '0*0*0'
  273. end if
  274. f_str_split(ls_dscrp, '*', ls_mode)
  275. if upperbound(ls_mode) < 3 then
  276. ls_mode[3] = '0'
  277. end if
  278. if not isnumber(ls_mode[3]) then
  279. ls_mode[3] = '0'
  280. end if
  281. ld_value = dec(ls_mode[3])
  282. dw_1.SetItem(ll_row, 'mtrl' + string(ll_col), ld_value)
  283. next
  284. end if
  285. end if
  286. if S_INSCUST.if_useformula[ls_j] = 1 then
  287. // DONE: 公式字段,手动触发
  288. end if
  289. //==============================================================================
  290. // 不用公式,不相关物料,不相关产品
  291. //==============================================================================
  292. // if S_INSCUST.if_useformula[ls_j] <> 1 AND S_INSCUST.if_from_product[ls_j] <> 1 AND S_INSCUST.if_from_mtrl[ls_j] <> 1 then
  293. // for ll_col = 1 to ins_column_count
  294. // dw_1.SetItem(ll_row, 'mtrl' + string(ll_col), S_INSCUST.defaultValue[ls_j])
  295. // next
  296. // end if
  297. next
  298. end if
  299. END IF
  300. end event
  301. event ue_f10();s_cmpl_parm s_parms[]
  302. Long ll_row, ll_col
  303. String ls_msg
  304. Decimal ll_value
  305. if ins_column_count = 0 then
  306. MessageBox('提示', '请先选择产品')
  307. return
  308. end if
  309. if dw_1.RowCount() <= 0 then
  310. MessageBox('提示', '请先选择计价模板')
  311. return
  312. end if
  313. if dw_1.accepttext() <> 1 then return
  314. FOR ll_row = 1 TO dw_1.RowCount()
  315. FOR ll_col = 1 TO ins_column_count
  316. s_parms[ll_col].parmname[ll_row] = dw_1.Object.parmname[ll_row]
  317. s_parms[ll_col].DisplayName[ll_row] = dw_1.Object.DisplayName[ll_row]
  318. s_parms[ll_col].parmvalue[ll_row] = 0
  319. IF dw_1.Object.if_useformula[ll_row] = 1 THEN
  320. IF f_cmpl_with_parms(dw_1.Object.formula[ll_row], s_parms[ll_col], ll_value, ls_msg) <> 1 THEN
  321. MessageBox('计算公式失败', ls_msg, stopsign!)
  322. dw_1.ScrollToRow(ll_row)
  323. dw_1.SetColumn('formula')
  324. dw_1.SetFocus()
  325. RETURN
  326. END IF
  327. if dw_1.Object.mtrlid[ll_row] > 0 THEN
  328. ll_value = ll_value * dw_1.object.defaultvalue[ll_row]
  329. end if
  330. dw_1.SetItem(ll_row, 'mtrl' + String(ll_col), ll_value)
  331. END IF
  332. s_parms[ll_col].parmvalue[ll_row] = dw_1.GetItemDecimal(ll_row, 'mtrl' + String(ll_col))
  333. NEXT
  334. NEXT
  335. end event
  336. event ue_save_modle();// DONE: 保存模板
  337. if dw_1.rowcount() <= 0 then
  338. MessageBox('提示', '没有内容不能保存')
  339. return
  340. end if
  341. s_inputbox s_parm
  342. string ls_return
  343. long i
  344. if dw_1.accepttext() <> 1 then
  345. return
  346. end if
  347. for i = 1 to dw_1.RowCount()
  348. if trim(dw_1.object.parmname[i]) = '' then
  349. MessageBox('提示', '参数名不能为空')
  350. dw_1.scrolltorow(i)
  351. dw_1.setcolumn('parmname')
  352. dw_1.SetFocus()
  353. return
  354. end if
  355. if trim(dw_1.object.displayname[i]) = '' then
  356. MessageBox('提示', '显示名不能为空')
  357. dw_1.scrolltorow(i)
  358. dw_1.setcolumn('displayname')
  359. dw_1.SetFocus()
  360. return
  361. end if
  362. if pos(dw_1.object.parmname[i], '[') > 0 then
  363. MessageBox('提示', '参数名不能包含字符"["')
  364. dw_1.scrolltorow(i)
  365. dw_1.setcolumn('parmname')
  366. dw_1.SetFocus()
  367. return
  368. end if
  369. if pos(dw_1.object.parmname[i], ']') > 0 then
  370. MessageBox('提示', '参数名不能包含字符"]"')
  371. dw_1.scrolltorow(i)
  372. dw_1.setcolumn('parmname')
  373. dw_1.SetFocus()
  374. return
  375. end if
  376. if dw_1.object.if_useformula[i] = 1 AND trim(dw_1.object.formula[i]) = '' then
  377. MEssageBox('提示', '请输入公式')
  378. dw_1.scrolltorow(i)
  379. dw_1.setcolumn('formula')
  380. dw_1.SetFocus()
  381. return
  382. end if
  383. if dw_1.object.if_from_mtrl[i] = 1 AND dw_1.object.mtrlid[i] <= 0 then
  384. MessageBox('提示', '请选择相关物料')
  385. dw_1.scrolltorow(i)
  386. dw_1.setcolumn('mtrlcode')
  387. dw_1.SetFocus()
  388. return
  389. end if
  390. if dw_1.object.if_from_mtrl[i] = 1 AND trim(dw_1.object.mtrl_pro[i]) = '' then
  391. MessageBox('提示', '请选择相关物料属性')
  392. dw_1.scrolltorow(i)
  393. dw_1.setcolumn('mtrl_pro')
  394. dw_1.SetFocus()
  395. return
  396. end if
  397. if dw_1.object.if_from_product[i] = 1 AND trim(dw_1.object.product_pro[i]) = '' then
  398. MessageBox('提示', '请选择相关产品属性')
  399. dw_1.scrolltorow(i)
  400. dw_1.setcolumn('product_pro')
  401. dw_1.SetFocus()
  402. return
  403. end if
  404. next
  405. string ls_msg
  406. if uo_modle.modleid = 0 then
  407. if uo_modle.newbegin(ls_msg) <> 1 then
  408. MessageBox('', ls_msg)
  409. return
  410. end if
  411. s_parm.title = '输入工作表名称'
  412. s_parm.old_text = ''
  413. openwithparm(w_inputbox, s_parm)
  414. ls_return = message.stringparm
  415. if ls_return = '' OR isnull(ls_return) then return
  416. uo_modle.ModleName = ls_return
  417. else
  418. if uo_modle.updatebegin(uo_modle.modleid, ls_msg) <> 1 then
  419. MessageBox('', ls_msg)
  420. return
  421. end if
  422. end if
  423. uo_modle.modletype = 0
  424. // uo_modle.modlename = trim(sle_modlename.text)
  425. s_cmpl_modlemx tmp[]
  426. for i = 1 to dw_1.RowCount()
  427. dw_1.object.printid[i] = i
  428. tmp[i].modleid = 0
  429. tmp[i].printid = dw_1.object.printid[i]
  430. tmp[i].parmName = dw_1.object.parmName[i]
  431. tmp[i].displayName = dw_1.object.displayName[i]
  432. tmp[i].defaultValue = dw_1.object.defaultValue[i]
  433. tmp[i].if_useformula = dw_1.object.if_useformula[i]
  434. tmp[i].formula = dw_1.object.formula[i]
  435. tmp[i].if_from_mtrl = dw_1.object.if_from_mtrl[i]
  436. tmp[i].mtrlid = dw_1.object.mtrlid[i]
  437. tmp[i].mtrl_pro = dw_1.object.mtrl_pro[i]
  438. tmp[i].if_from_product = dw_1.object.if_from_product[i]
  439. tmp[i].product_pro = dw_1.object.product_pro[i]
  440. next
  441. uo_modle.mxs = tmp
  442. if uo_modle.savesubmit(ls_msg) <> 1 then
  443. MessageBox('错误', ls_msg)
  444. return
  445. end if
  446. st_1.Text = '模板名:' + uo_modle.modlename
  447. end event
  448. event ue_save_modle_as();// DONE: 另存模板
  449. long oldid
  450. oldid = uo_modle.modleid
  451. uo_modle.modleid = 0
  452. this.triggerevent('ue_save_modle')
  453. if uo_modle.modleid = 0 then
  454. uo_modle.modleid = oldid
  455. end if
  456. end event
  457. event ue_save_bill();// DONE: 保存工作表
  458. if dw_1.rowcount() <= 0 then
  459. MessageBox('提示', '没有内容不能保存')
  460. return
  461. end if
  462. s_inputbox s_parm
  463. string ls_return
  464. long i
  465. if dw_1.accepttext() <> 1 then
  466. return
  467. end if
  468. string ls_msg
  469. if uo_bill.ModleID = 0 then
  470. if uo_bill.Newbegin(ls_msg) <> 1 then
  471. MessageBox('', ls_msg)
  472. return
  473. end if
  474. s_parm.title = '输入工作表名称'
  475. s_parm.old_text = ''
  476. openwithparm(w_inputbox, s_parm)
  477. ls_return = message.stringparm
  478. if ls_return = '' OR isnull(ls_return) then return
  479. uo_bill.ModleName = ls_return
  480. else
  481. if uo_bill.UpdateBegin(uo_bill.Modleid, ls_msg) <> 1 then
  482. MessageBox('', ls_msg)
  483. return
  484. end if
  485. end if
  486. uo_bill.ModleType = 1
  487. //uo_bill.orgModleID = 0
  488. s_cmpl_modlemx tmp[]
  489. s_cmpl_modlemx_mx tmp_mx[]
  490. long j = 0, ll_col = 0
  491. string ls_dscrp
  492. for i = 1 to dw_1.RowCount()
  493. dw_1.object.printid[i] = i
  494. tmp[i].modleid = 0
  495. tmp[i].printid = i
  496. tmp[i].parmName = dw_1.object.parmName[i]
  497. tmp[i].displayName = dw_1.object.displayName[i]
  498. tmp[i].defaultValue = 0
  499. tmp[i].if_useformula = dw_1.object.if_useformula[i]
  500. tmp[i].formula = dw_1.object.formula[i]
  501. tmp[i].if_from_mtrl = dw_1.object.if_from_mtrl[i]
  502. tmp[i].mtrlid = dw_1.object.mtrlid[i]
  503. tmp[i].mtrl_pro = dw_1.object.mtrl_pro[i]
  504. tmp[i].if_from_product = dw_1.object.if_from_product[i]
  505. tmp[i].product_pro = dw_1.object.product_pro[i]
  506. for ll_col = 1 to ins_column_count
  507. j++
  508. tmp_mx[j].ModleID = 0
  509. tmp_mx[j].printid = i
  510. ls_dscrp = dw_1.Describe('mtrl'+string(ll_col)+'_t.tag')
  511. tmp_mx[j].mtrlid = long(ls_dscrp)
  512. tmp_mx[j].value = dw_1.GetItemDecimal(i, 'mtrl' + String(ll_col))
  513. next
  514. next
  515. uo_bill.mxs = tmp
  516. uo_bill.mx_mxs = tmp_mx
  517. if uo_bill.savesubmit(ls_msg) <> 1 then
  518. MessageBox('错误', ls_msg)
  519. return
  520. end if
  521. this.Title = ins_oldTitle + '[' + uo_bill.ModleName + ']'
  522. end event
  523. event ue_save_bill_as();// DONE: 另存工作表
  524. long oldid
  525. oldid = uo_bill.modleid
  526. uo_bill.modleid = 0
  527. this.triggerevent('ue_save_bill')
  528. if uo_bill.modleid = 0 then
  529. uo_bill.modleid = oldid
  530. end if
  531. end event
  532. event ue_open_bill();// DONE: 打开工作表
  533. Long arg_Modleid
  534. String ls_msg
  535. s_mtrldef_array S_INSCUST
  536. Long ll_col = 0, ls_j, chc, ll_row, ll_i
  537. Long ll_mtrlid
  538. String ll_mtrlcode
  539. String ll_mtrlname
  540. string ls_dscrp
  541. decimal ll_value
  542. IF NOT IsValid(w_cmpl_bill_ch) THEN
  543. Open(w_cmpl_bill_ch) //调用
  544. s_cmpl_modle_ch s_choice
  545. s_choice = Message.PowerObjectParm //接受返回结构
  546. if isnull(s_choice) then return
  547. if isnull(s_choice.modleid) then return
  548. if s_choice.modleid > 0 then
  549. arg_ModleID = s_choice.modleid
  550. IF uo_bill.GetINfo(arg_Modleid, ls_msg) <> 1 THEN
  551. MessageBox('', ls_msg)
  552. RETURN
  553. END IF
  554. this.title = ins_oldtitle + '[' + uo_bill.ModleName + ']'
  555. declare cur1 cursor for select DISTINCT u_cmpl_modleMx_Mx.mtrlid, u_mtrldef.mtrlcode, u_mtrldef.mtrlname
  556. from u_cmpl_modleMx_Mx inner JOIN
  557. u_mtrldef ON u_cmpl_modleMx_Mx.mtrlid = u_mtrldef.mtrlid
  558. Where (u_cmpl_modleMx_Mx.ModleID = :arg_Modleid);
  559. open cur1;
  560. fetch cur1 INTO :ll_mtrlid, :ll_mtrlcode, :ll_mtrlname;
  561. DO WHILE sqlca.SQLCode = 0
  562. ll_col ++
  563. S_INSCUST.mtrlid[ll_col] = ll_mtrlid
  564. S_INSCUST.mtrlcode[ll_col] = ll_mtrlcode
  565. S_INSCUST.mtrlname[ll_col] = ll_mtrlname
  566. fetch cur1 INTO :ll_mtrlid, :ll_mtrlcode, :ll_mtrlname;
  567. LOOP
  568. close cur1;
  569. dw_1.Reset()
  570. String ls_mod
  571. FOR ls_j = 4 TO 43
  572. ls_mod = '#' + String(ls_j) + '.Visible = 0'
  573. ls_mod = dw_1.Modify(ls_mod)
  574. NEXT
  575. chc = 0
  576. FOR ls_j = 1 TO UpperBound(S_INSCUST.mtrlid)
  577. IF S_INSCUST.mtrlid[ls_j] > 0 THEN
  578. chc ++
  579. ls_mod = 'mtrl' + String(chc) + '.Visible = 1'
  580. ls_mod = dw_1.Modify(ls_mod)
  581. ls_mod = 'mtrl' + String(chc) + '_t.Text = ~''+String(S_INSCUST.mtrlname[ls_j])+'~''
  582. ls_mod = dw_1.Modify(ls_mod)
  583. ls_mod = 'mtrl' + String(chc) + '_t.Tag = ~''+String(S_INSCUST.mtrlid[ls_j])+'~''
  584. ls_mod = dw_1.Modify(ls_mod)
  585. ls_mod = 'mtrl' + String(chc) + '.Tag = ~''+String(S_INSCUST.mtrlcode[ls_j])+'~''
  586. ls_mod = dw_1.Modify(ls_mod)
  587. END IF
  588. NEXT
  589. ins_column_count = chc
  590. FOR ls_j = 34 TO 43
  591. ls_mod = '#' + String(ls_j) + '.Visible = 1'
  592. ls_mod = dw_1.Modify(ls_mod)
  593. NEXT
  594. FOR ll_i = 1 TO UpperBound(uo_bill.mxs)
  595. ll_row = dw_1.insertrow(0)
  596. dw_1.object.printid[ll_row] = uo_bill.mxs[ll_i].printid
  597. dw_1.object.parmname[ll_row] = uo_bill.mxs[ll_i].parmname
  598. dw_1.object.displayname[ll_row] = uo_bill.mxs[ll_i].displayname
  599. dw_1.object.if_useformula[ll_row] = uo_bill.mxs[ll_i].if_useformula
  600. dw_1.object.formula[ll_row] = uo_bill.mxs[ll_i].formula
  601. dw_1.object.if_from_mtrl[ll_row] = uo_bill.mxs[ll_i].if_from_mtrl
  602. dw_1.object.mtrlid[ll_row] = uo_bill.mxs[ll_i].mtrlid
  603. dw_1.object.mtrl_pro[ll_row] = uo_bill.mxs[ll_i].mtrl_pro
  604. dw_1.object.if_from_product[ll_row] = uo_bill.mxs[ll_i].if_from_product
  605. dw_1.object.product_pro[ll_row] = uo_bill.mxs[ll_i].product_pro
  606. SELECT mtrlcode , mtrlname
  607. INTO :ll_mtrlcode, :ll_mtrlname
  608. FROM u_mtrldef
  609. WHERE mtrlid = :uo_bill.mxs[ll_i].mtrlid;
  610. if sqlca.sqlcode <> 0 then
  611. ll_mtrlcode = ''
  612. ll_mtrlname = ''
  613. dw_1.object.mtrlid[ll_row] = 0
  614. end if
  615. dw_1.object.mtrlcode[ll_row] = ll_mtrlcode
  616. dw_1.object.mtrlname[ll_row] = ll_mtrlname
  617. for ll_col = 1 to ins_column_count
  618. ls_dscrp = dw_1.Describe('mtrl'+string(ll_col)+'_t.tag')
  619. ll_mtrlid = long(ls_dscrp)
  620. ll_value = 0
  621. for ls_j = 1 to upperbound(uo_bill.mx_mxs)
  622. if uo_bill.mx_mxs[ls_j].printid = uo_bill.mxs[ll_i].printid &
  623. and uo_bill.mx_mxs[ls_j].mtrlid = ll_mtrlid then
  624. ll_value = uo_bill.mx_mxs[ls_j].value
  625. exit
  626. end if
  627. next
  628. dw_1.SetItem(ll_row, 'mtrl' + string(ll_col), ll_value)
  629. next
  630. NEXT
  631. end if
  632. end if
  633. end event
  634. event ue_pickmtrl(); long ll_row
  635. decimal ld_value
  636. long ll_col
  637. IF NOT IsValid(W_mtrldef_edit) THEN
  638. s_edit_index_tran s_tranf8 //传递参数使用
  639. s_tranf8.if_retrieve_all = FALSE //是否一次RETRIEVE所有行
  640. s_tranf8.work_mode = 1 //0-单纯编辑模式 1-选择\编辑模式
  641. s_tranf8.arg_pkid = 0 //目标定位PKID (备用)
  642. s_tranf8.arg_string_code = '' //查询列(物料编码)部分内容,用于初步筛选
  643. s_tranf8.if_select_all = FALSE //多选
  644. s_tranf8.b_long = 2 //选采购
  645. s_tranf8.c_long = -1
  646. s_tranf8.f_long = 2
  647. Long chc = 1,ls_j
  648. IF dw_1.GetRow() > 0 THEN s_tranf8.arg_string_code = Trim(dw_1.Object.mtrlcode[dw_1.GetRow()])
  649. OpenWithParm(W_mtrldef_edit,s_tranf8) //调用
  650. s_mtrldef_array S_INSCUST
  651. S_INSCUST = Message.PowerObjectParm //接受返回结构
  652. if UpperBound(S_INSCUST.mtrlid) > 0 then
  653. if S_INSCUST.mtrlid[1] > 0 then
  654. ll_row = dw_1.GetRow()
  655. dw_1.object.mtrlid[ll_row] = S_INSCUST.mtrlid[1]
  656. dw_1.object.mtrlcode[ll_row] = S_INSCUST.mtrlcode[1]
  657. dw_1.object.mtrlname[ll_row] = S_INSCUST.mtrlname[1]
  658. dw_1.object.unit[ll_row] = S_INSCUST.unit[1]
  659. SELECT price INTO :ld_value
  660. FROM v_maxprice_sptprice
  661. WHERE mtrlid = :S_INSCUST.mtrlid[1];
  662. if sqlca.sqlcode <> 0 then
  663. ld_value = 0
  664. end if
  665. dw_1.object.defaultvalue[ll_row] = ld_value
  666. end if
  667. end if
  668. end if
  669. end event
  670. event ue_addmx();long ll_row
  671. ll_row = dw_1.insertrow(0)
  672. dw_1.object.printid[ll_row] = ll_row
  673. dw_1.scrolltorow(ll_row)
  674. dw_1.setcolumn('mtrl1')
  675. dw_1.setfocus()
  676. end event
  677. event ue_delmx();if dw_1.GetRow() > 0 then
  678. dw_1.deleterow(dw_1.GetRow())
  679. dw_1.setfocus()
  680. end if
  681. end event
  682. public subroutine wf_refresh ();long i
  683. if dw_edit_mode then
  684. for i = 1 to ins_last
  685. dw_1.settaborder(i, 10*i)
  686. next
  687. cb_edit.Text = '保存&S'
  688. cb_edit.normalpicname = 'Save.bmp'
  689. else
  690. for i = 1 to ins_last
  691. dw_1.settaborder(i, 0)
  692. next
  693. cb_edit.Text = '修改&E'
  694. cb_edit.normalpicname = 'open.bmp'
  695. end if
  696. cb_3.Enabled = dw_edit_mode
  697. cb_addmx.Enabled = dw_edit_mode
  698. cb_4.Enabled = dw_edit_mode
  699. cb_sort.Enabled = dw_edit_mode
  700. cb_2.Enabled = dw_edit_mode
  701. cb_5.Enabled = dw_edit_mode
  702. cb_edit.of_init_draw()
  703. cb_edit.of_paint()
  704. cb_edit.TriggerEvent('ue_textchange')
  705. end subroutine
  706. public function integer wf_save (ref string arg_msg);//
  707. int rslt = 1
  708. long i
  709. long old_modleid, ll_flag
  710. old_modleid = uo_bill.modleid
  711. if dw_1.rowcount() <= 0 then
  712. rslt = 0
  713. arg_msg = '没有内容不能保存'
  714. goto ext
  715. end if
  716. uo_bill.ModleType = 1
  717. //uo_bill.orgModleID = 0
  718. for i = 1 to dw_1.RowCount()
  719. if trim(dw_1.object.parmname[i]) = '' then
  720. dw_1.scrolltorow(i)
  721. dw_1.setcolumn('parmname')
  722. dw_1.SetFocus()
  723. rslt = 0
  724. arg_msg = '参数名不能为空'
  725. goto ext
  726. end if
  727. // if trim(dw_1.object.displayname[i]) = '' then
  728. // dw_1.scrolltorow(i)
  729. // dw_1.setcolumn('displayname')
  730. // dw_1.SetFocus()
  731. // rslt = 0
  732. // arg_msg = '显示名不能为空'
  733. // goto ext
  734. // end if
  735. if pos(dw_1.object.parmname[i], '[') > 0 then
  736. dw_1.scrolltorow(i)
  737. dw_1.setcolumn('parmname')
  738. dw_1.SetFocus()
  739. rslt = 0
  740. arg_msg = '参数名不能包含字符"["'
  741. goto ext
  742. end if
  743. if pos(dw_1.object.parmname[i], ']') > 0 then
  744. dw_1.scrolltorow(i)
  745. dw_1.setcolumn('parmname')
  746. dw_1.SetFocus()
  747. rslt = 0
  748. arg_msg = '参数名不能包含字符"]"'
  749. goto ext
  750. end if
  751. // if dw_1.object.if_useformula[i] = 1 AND trim(dw_1.object.formula[i]) = '' then
  752. // MEssageBox('提示', '请输入公式')
  753. // dw_1.scrolltorow(i)
  754. // dw_1.setcolumn('formula')
  755. // dw_1.SetFocus()
  756. // return
  757. // end if
  758. // if dw_1.object.if_from_mtrl[i] = 1 AND dw_1.object.mtrlid[i] <= 0 then
  759. // MessageBox('提示', '请选择相关物料')
  760. // dw_1.scrolltorow(i)
  761. // dw_1.setcolumn('mtrlcode')
  762. // dw_1.SetFocus()
  763. // return
  764. // end if
  765. // if dw_1.object.if_from_mtrl[i] = 1 AND trim(dw_1.object.mtrl_pro[i]) = '' then
  766. // MessageBox('提示', '请选择相关物料属性')
  767. // dw_1.scrolltorow(i)
  768. // dw_1.setcolumn('mtrl_pro')
  769. // dw_1.SetFocus()
  770. // return
  771. // end if
  772. // if dw_1.object.if_from_product[i] = 1 AND trim(dw_1.object.product_pro[i]) = '' then
  773. // MessageBox('提示', '请选择相关产品属性')
  774. // dw_1.scrolltorow(i)
  775. // dw_1.setcolumn('product_pro')
  776. // dw_1.SetFocus()
  777. // return
  778. // end if
  779. next
  780. s_cmpl_modlemx tmp[]
  781. s_cmpl_modlemx_mx tmp_mx[]
  782. long j = 0, ll_col = 0
  783. string ls_dscrp
  784. for i = 1 to dw_1.RowCount()
  785. dw_1.object.printid[i] = i
  786. tmp[i].modleid = 0
  787. tmp[i].printid = i
  788. tmp[i].parmName = dw_1.object.parmName[i]
  789. tmp[i].displayName = dw_1.object.displayName[i]
  790. tmp[i].defaultValue = dw_1.object.defaultValue[i]
  791. tmp[i].if_useformula = dw_1.object.if_useformula[i]
  792. tmp[i].formula = dw_1.object.formula[i]
  793. tmp[i].if_from_mtrl = dw_1.object.if_from_mtrl[i]
  794. tmp[i].mtrlid = dw_1.object.mtrlid[i]
  795. tmp[i].mtrl_pro = dw_1.object.mtrl_pro[i]
  796. tmp[i].if_from_product = dw_1.object.if_from_product[i]
  797. tmp[i].product_pro = dw_1.object.product_pro[i]
  798. for ll_col = 1 to ins_column_count
  799. j++
  800. tmp_mx[j].ModleID = 0
  801. tmp_mx[j].printid = i
  802. ls_dscrp = dw_1.Describe('mtrl'+string(ll_col)+'_t.tag')
  803. tmp_mx[j].mtrlid = long(ls_dscrp)
  804. tmp_mx[j].value = dw_1.GetItemDecimal(i, 'mtrl' + String(ll_col))
  805. next
  806. next
  807. uo_bill.mxs = tmp
  808. uo_bill.mx_mxs = tmp_mx
  809. if uo_bill.save(false, arg_msg) <> 1 then
  810. rslt = 0
  811. goto ext
  812. end if
  813. //==============================================================================
  814. // 更新报价单
  815. //==============================================================================
  816. SELECT flag into :ll_flag from u_quote
  817. where scid = :ins_quote.scid and quoteid = :ins_quote.quoteid;
  818. if sqlca.sqlcode <> 0 then
  819. rslt = 0
  820. arg_msg = '获取报价单审核状态失败,' + sqlca.sqlerrtext
  821. goto ext
  822. end if
  823. if ll_flag = 1 then
  824. rslt = 0
  825. arg_msg = '报价单已经审核,不能保存'
  826. goto ext
  827. end if
  828. update u_quote SET modleid = :uo_bill.modleid,
  829. modlename = :uo_bill.modlename
  830. WHERE scid = :ins_quote.scid
  831. and quoteid = :ins_quote.quoteid
  832. and flag = 0;
  833. if sqlca.sqlcode <> 0 then
  834. rslt = 0
  835. arg_msg = '更新报价单失败,' + sqlca.sqlerrtext
  836. goto ext
  837. end if
  838. this.Title = ins_oldTitle + '[' + uo_bill.ModleName + ']'
  839. ext:
  840. if rslt = 0 then
  841. uo_bill.modleid = old_modleid
  842. rollback;
  843. else
  844. commit;
  845. end if
  846. return rslt
  847. end function
  848. public function integer wf_update_price (ref string arg_msg);int rslt = 1
  849. long i
  850. long ll_mtrlid
  851. string ls_dscrp
  852. decimal ld_value
  853. long ll_flag
  854. select flag INTO :ll_flag from u_quote
  855. where scid = :ins_quote.scid
  856. and quoteid = :ins_quote.quoteid;
  857. if sqlca.sqlcode <> 0 then
  858. rslt = 0
  859. arg_msg = '查询报价单审核状态失败,' + sqlca.sqlerrtext
  860. goto ext
  861. end if
  862. if ll_flag = 1 then
  863. rslt = 0
  864. arg_msg = '报价单已经审核,不能修改报价'
  865. goto ext
  866. end if
  867. for i = 1 to ins_column_count
  868. ls_dscrp = dw_1.Describe('mtrl'+string(i)+'_t.tag')
  869. ll_mtrlid = long(ls_dscrp)
  870. ld_value = dw_1.GetItemDecimal(dw_1.RowCount(), 'mtrl' + String(i))
  871. update u_quotemx set sumprice = :ld_value
  872. where scid = :ins_quote.scid
  873. and quoteid = :ins_quote.quoteid
  874. and mtrlid = :ll_mtrlid;
  875. if sqlca.sqlcode <> 0 then
  876. rslt = 0
  877. arg_msg = '更新报价单报价明细失败,' + sqlca.sqlerrtext
  878. goto ext
  879. end if
  880. next
  881. ext:
  882. if rslt = 0 then
  883. rollback;
  884. else
  885. commit;
  886. end if
  887. return rslt
  888. end function
  889. on w_cmpl_product_price.create
  890. int iCurrent
  891. call super::create
  892. this.dw_1=create dw_1
  893. this.cb_1=create cb_1
  894. this.cb_3=create cb_3
  895. this.st_1=create st_1
  896. this.cb_2=create cb_2
  897. this.cb_edit=create cb_edit
  898. this.cb_addmx=create cb_addmx
  899. this.cb_4=create cb_4
  900. this.cb_sort=create cb_sort
  901. this.cb_5=create cb_5
  902. this.cb_6=create cb_6
  903. this.cbx_1=create cbx_1
  904. this.ln_bar=create ln_bar
  905. this.ln_bar2=create ln_bar2
  906. this.ln_1=create ln_1
  907. this.ln_2=create ln_2
  908. this.r_bar=create r_bar
  909. iCurrent=UpperBound(this.Control)
  910. this.Control[iCurrent+1]=this.dw_1
  911. this.Control[iCurrent+2]=this.cb_1
  912. this.Control[iCurrent+3]=this.cb_3
  913. this.Control[iCurrent+4]=this.st_1
  914. this.Control[iCurrent+5]=this.cb_2
  915. this.Control[iCurrent+6]=this.cb_edit
  916. this.Control[iCurrent+7]=this.cb_addmx
  917. this.Control[iCurrent+8]=this.cb_4
  918. this.Control[iCurrent+9]=this.cb_sort
  919. this.Control[iCurrent+10]=this.cb_5
  920. this.Control[iCurrent+11]=this.cb_6
  921. this.Control[iCurrent+12]=this.cbx_1
  922. this.Control[iCurrent+13]=this.ln_bar
  923. this.Control[iCurrent+14]=this.ln_bar2
  924. this.Control[iCurrent+15]=this.ln_1
  925. this.Control[iCurrent+16]=this.ln_2
  926. this.Control[iCurrent+17]=this.r_bar
  927. end on
  928. on w_cmpl_product_price.destroy
  929. call super::destroy
  930. destroy(this.dw_1)
  931. destroy(this.cb_1)
  932. destroy(this.cb_3)
  933. destroy(this.st_1)
  934. destroy(this.cb_2)
  935. destroy(this.cb_edit)
  936. destroy(this.cb_addmx)
  937. destroy(this.cb_4)
  938. destroy(this.cb_sort)
  939. destroy(this.cb_5)
  940. destroy(this.cb_6)
  941. destroy(this.cbx_1)
  942. destroy(this.ln_bar)
  943. destroy(this.ln_bar2)
  944. destroy(this.ln_1)
  945. destroy(this.ln_2)
  946. destroy(this.r_bar)
  947. end on
  948. event open;call super::open;long ls_j, chc
  949. string ls_mod
  950. string ls_msg
  951. long ll_scid
  952. long ll_quoteid
  953. long ll_mtrlid
  954. string ll_mtrlcode
  955. string ll_mtrlname
  956. s_mtrldef_array S_INSCUST
  957. long ll_modleid, ll_col, ll_i, ll_row
  958. string ls_dscrp
  959. decimal ll_value
  960. ins_oldtitle = this.Title
  961. uo_modle = create uo_cmpl_modle
  962. uo_modle.modleid = 0
  963. uo_bill = create uo_cmpl_bill
  964. uo_bill.modleid = 0
  965. ins_quote = create uo_quote
  966. ins_quote.commit_transaction = sqlca
  967. FOR ls_j = ins_first TO (ins_first + 29)
  968. ls_mod = '#' + String(ls_j) + '.Visible = 0'
  969. ls_mod = dw_1.Modify(ls_mod)
  970. NEXT
  971. //==============================================================================
  972. // DONE: 获取当前报价单
  973. //==============================================================================
  974. s_edit_index_tran s_tran
  975. s_tran = message.PowerObjectParm
  976. ll_scid = s_tran.b_long
  977. ll_quoteid = s_tran.c_long
  978. //MessageBox('', string(ll_scid) + ',' + string(ll_quoteid))
  979. if ins_quote.p_getinfo(ll_scid, ll_quoteid, ls_msg) <> 1 then
  980. MessageBox('系统错误', ls_msg)
  981. cb_exit.postevent(clicked!)
  982. return
  983. end if
  984. SELECT ModleID INTO :ll_modleid
  985. FROM u_quote
  986. WHERE scid = :ins_quote.scid AND quoteid = :ins_quote.quoteid;
  987. if sqlca.sqlcode <> 0 then
  988. MessageBox('系统错误', '数据库连接失败,'+ sqlca.sqlerrtext)
  989. cb_exit.postevent(clicked!)
  990. return
  991. end if
  992. if ll_modleid = 0 then
  993. //==============================================================================
  994. // 加载报价单产品
  995. //==============================================================================
  996. declare cur1 CURSOR for SELECT DISTINCT u_quotemx.mtrlid, u_mtrldef.mtrlcode, u_mtrldef.mtrlname
  997. FROM u_quotemx INNER JOIN
  998. u_mtrldef ON u_quotemx.mtrlid = u_mtrldef.mtrlid
  999. WHERE (u_quotemx.scid = :ins_quote.scid) AND (u_quotemx.quoteid = :ins_quote.quoteid);
  1000. open cur1;
  1001. fetch cur1 INTO :ll_mtrlid, :ll_mtrlcode, :ll_mtrlname;
  1002. chc = 0
  1003. do while sqlca.sqlcode = 0
  1004. chc++
  1005. S_INSCUST.mtrlid[chc] = ll_mtrlid
  1006. S_INSCUST.mtrlcode[chc] = ll_mtrlcode
  1007. S_INSCUST.mtrlname[chc] = ll_mtrlname
  1008. fetch cur1 INTO :ll_mtrlid, :ll_mtrlcode, :ll_mtrlname;
  1009. loop
  1010. close cur1;
  1011. FOR ls_j = ins_first TO ins_last
  1012. ls_mod = '#' + String(ls_j) + '.Visible = 0'
  1013. ls_mod = dw_1.Modify(ls_mod)
  1014. NEXT
  1015. chc = 0
  1016. FOR ls_j = 1 TO UpperBound(S_INSCUST.mtrlid)
  1017. IF S_INSCUST.mtrlid[ls_j] > 0 THEN
  1018. chc ++
  1019. ls_mod = 'mtrl' + String(chc) + '.Visible = 1'
  1020. ls_mod = dw_1.Modify(ls_mod)
  1021. ls_mod = 'mtrl' + String(chc) + '_t.Text = ~''+String(S_INSCUST.mtrlname[ls_j])+'~''
  1022. ls_mod = dw_1.Modify(ls_mod)
  1023. ls_mod = 'mtrl' + String(chc) + '_t.Tag = ~''+String(S_INSCUST.mtrlid[ls_j])+'~''
  1024. ls_mod = dw_1.Modify(ls_mod)
  1025. ls_mod = 'mtrl' + String(chc) + '.Tag = ~''+String(S_INSCUST.mtrlcode[ls_j])+'~''
  1026. ls_mod = dw_1.Modify(ls_mod)
  1027. END IF
  1028. NEXT
  1029. ins_column_count = chc
  1030. FOR ls_j = (ins_first + 30) TO ins_last
  1031. ls_mod = '#' + String(ls_j) + '.Visible = 1'
  1032. ls_mod = dw_1.Modify(ls_mod)
  1033. NEXT
  1034. else
  1035. //==============================================================================
  1036. // 加载设计模板
  1037. //==============================================================================
  1038. IF uo_bill.GetINfo(ll_modleid, ls_msg) <> 1 THEN
  1039. MessageBox('', ls_msg)
  1040. RETURN
  1041. END IF
  1042. this.title = ins_oldtitle + '[' + uo_bill.ModleName + ']'
  1043. declare cur2 cursor for select DISTINCT u_cmpl_modleMx_Mx.mtrlid, u_mtrldef.mtrlcode, u_mtrldef.mtrlname
  1044. from u_cmpl_modleMx_Mx inner JOIN
  1045. u_mtrldef ON u_cmpl_modleMx_Mx.mtrlid = u_mtrldef.mtrlid
  1046. Where (u_cmpl_modleMx_Mx.ModleID = :ll_modleid);
  1047. open cur2;
  1048. fetch cur2 INTO :ll_mtrlid, :ll_mtrlcode, :ll_mtrlname;
  1049. DO WHILE sqlca.SQLCode = 0
  1050. ll_col ++
  1051. S_INSCUST.mtrlid[ll_col] = ll_mtrlid
  1052. S_INSCUST.mtrlcode[ll_col] = ll_mtrlcode
  1053. S_INSCUST.mtrlname[ll_col] = ll_mtrlname
  1054. fetch cur2 INTO :ll_mtrlid, :ll_mtrlcode, :ll_mtrlname;
  1055. LOOP
  1056. close cur2;
  1057. dw_1.Reset()
  1058. FOR ls_j = ins_first TO ins_last
  1059. ls_mod = '#' + String(ls_j) + '.Visible = 0'
  1060. ls_mod = dw_1.Modify(ls_mod)
  1061. NEXT
  1062. chc = 0
  1063. FOR ls_j = 1 TO UpperBound(S_INSCUST.mtrlid)
  1064. IF S_INSCUST.mtrlid[ls_j] > 0 THEN
  1065. chc ++
  1066. ls_mod = 'mtrl' + String(chc) + '.Visible = 1'
  1067. ls_mod = dw_1.Modify(ls_mod)
  1068. ls_mod = 'mtrl' + String(chc) + '_t.Text = ~''+String(S_INSCUST.mtrlname[ls_j])+'~''
  1069. ls_mod = dw_1.Modify(ls_mod)
  1070. ls_mod = 'mtrl' + String(chc) + '_t.Tag = ~''+String(S_INSCUST.mtrlid[ls_j])+'~''
  1071. ls_mod = dw_1.Modify(ls_mod)
  1072. ls_mod = 'mtrl' + String(chc) + '.Tag = ~''+String(S_INSCUST.mtrlcode[ls_j])+'~''
  1073. ls_mod = dw_1.Modify(ls_mod)
  1074. END IF
  1075. NEXT
  1076. ins_column_count = chc
  1077. FOR ls_j = (ins_first + 30) TO ins_last
  1078. ls_mod = '#' + String(ls_j) + '.Visible = 1'
  1079. ls_mod = dw_1.Modify(ls_mod)
  1080. NEXT
  1081. FOR ll_i = 1 TO UpperBound(uo_bill.mxs)
  1082. ll_row = dw_1.insertrow(0)
  1083. dw_1.object.printid[ll_row] = uo_bill.mxs[ll_i].printid
  1084. dw_1.object.parmname[ll_row] = uo_bill.mxs[ll_i].parmname
  1085. dw_1.object.displayname[ll_row] = uo_bill.mxs[ll_i].displayname
  1086. dw_1.object.defaultvalue[ll_row] = uo_bill.mxs[ll_i].defaultvalue
  1087. dw_1.object.if_useformula[ll_row] = uo_bill.mxs[ll_i].if_useformula
  1088. dw_1.object.formula[ll_row] = uo_bill.mxs[ll_i].formula
  1089. dw_1.object.if_from_mtrl[ll_row] = uo_bill.mxs[ll_i].if_from_mtrl
  1090. dw_1.object.mtrlid[ll_row] = uo_bill.mxs[ll_i].mtrlid
  1091. dw_1.object.mtrl_pro[ll_row] = uo_bill.mxs[ll_i].mtrl_pro
  1092. dw_1.object.if_from_product[ll_row] = uo_bill.mxs[ll_i].if_from_product
  1093. dw_1.object.product_pro[ll_row] = uo_bill.mxs[ll_i].product_pro
  1094. dw_1.object.unit[ll_row] = uo_bill.mxs[ll_i].unit
  1095. SELECT mtrlcode , mtrlname
  1096. INTO :ll_mtrlcode, :ll_mtrlname
  1097. FROM u_mtrldef
  1098. WHERE mtrlid = :uo_bill.mxs[ll_i].mtrlid;
  1099. if sqlca.sqlcode <> 0 then
  1100. ll_mtrlcode = ''
  1101. ll_mtrlname = ''
  1102. dw_1.object.mtrlid[ll_row] = 0
  1103. end if
  1104. dw_1.object.mtrlcode[ll_row] = ll_mtrlcode
  1105. dw_1.object.mtrlname[ll_row] = ll_mtrlname
  1106. for ll_col = 1 to ins_column_count
  1107. ls_dscrp = dw_1.Describe('mtrl'+string(ll_col)+'_t.tag')
  1108. ll_mtrlid = long(ls_dscrp)
  1109. ll_value = 0
  1110. for ls_j = 1 to upperbound(uo_bill.mx_mxs)
  1111. if uo_bill.mx_mxs[ls_j].printid = uo_bill.mxs[ll_i].printid &
  1112. and uo_bill.mx_mxs[ls_j].mtrlid = ll_mtrlid then
  1113. ll_value = uo_bill.mx_mxs[ls_j].value
  1114. exit
  1115. end if
  1116. next
  1117. dw_1.SetItem(ll_row, 'mtrl' + string(ll_col), ll_value)
  1118. next
  1119. NEXT
  1120. end if
  1121. wf_refresh()
  1122. end event
  1123. event resize;call super::resize;if this.width < 3648 then this.width = 3648
  1124. if this.Height < 1996 then this.Height = 1996
  1125. ln_bar.EndX = THIS.Width
  1126. ln_bar2.EndX = THIS.Width
  1127. ln_1.EndX = THIS.Width
  1128. ln_2.EndX = THIS.Width
  1129. r_bar.Width = THIS.Width
  1130. dw_1.height = this.height - 450
  1131. dw_1.width = this.width - 50
  1132. end event
  1133. event close;call super::close;destroy uo_modle
  1134. destroy uo_bill
  1135. destroy uo_quote
  1136. end event
  1137. event ue_sort;call super::ue_sort;if dw_1.accepttext() <> 1 then return
  1138. dw_1.SetRedraw(false)
  1139. dw_1.Sort()
  1140. Long ll_row
  1141. FOR ll_row = 1 To dw_1.RowCount()
  1142. dw_1.Object.printid[ll_row] = ll_row
  1143. NEXT
  1144. dw_1.SetRedraw(true)
  1145. end event
  1146. event closequery;call super::closequery;IF dw_edit_mode THEN
  1147. IF MessageBox ("IF","将丢失未保存的修改,是否继续?",Question!,YesNo! ) = 2 THEN RETURN 1
  1148. END IF
  1149. end event
  1150. type cb_func from w_publ_base`cb_func within w_cmpl_product_price
  1151. boolean visible = false
  1152. integer x = 1166
  1153. end type
  1154. type cb_exit from w_publ_base`cb_exit within w_cmpl_product_price
  1155. integer x = 1641
  1156. integer width = 151
  1157. integer height = 164
  1158. integer picsize = 16
  1159. toolbaralignment pic_align = alignattop!
  1160. boolean border = false
  1161. end type
  1162. type dw_1 from u_dw_rbtnfilter within w_cmpl_product_price
  1163. integer y = 296
  1164. integer width = 4087
  1165. integer height = 1920
  1166. integer taborder = 20
  1167. boolean bringtotop = true
  1168. string dataobject = "dw_cmpl_mtrl30"
  1169. boolean hscrollbar = true
  1170. boolean vscrollbar = true
  1171. boolean setcolumn_visible_use = false
  1172. boolean autosave_filter_use = false
  1173. boolean autosave_sort_use = false
  1174. boolean autosave_setlayout_use = false
  1175. boolean autosave_columnvisible_use = false
  1176. end type
  1177. event dwnkey;call super::dwnkey;String ls_mtrlcode,ls_mtrlname,ls_unit,ls_mtrlmode,ls_mtrlsectype,ls_zxmtrlmode
  1178. String ls_ordercode,ls_relcode,ls_unit_buy
  1179. Long ls_mtrlid,ls_sptid,ls_orderid,ls_storageid
  1180. Dec ls_planprice,ls_lmbuyprice,ls_price,ls_rebate,ld_rate_buy
  1181. Long cnt
  1182. Long child_row
  1183. Long ls_null
  1184. SetNull(ls_null)
  1185. String arg_msg = ''
  1186. Decimal ls_1stnewcost,ls_1stzqrate,ls_1strate
  1187. String ls_sptmtrlname
  1188. String ls_1stunit,ls_status,ls_woodcode,ls_pcode
  1189. Int li_statusflag,li_woodcodeflag,li_pcodeflag
  1190. decimal ld_value
  1191. long ll_col
  1192. s_mtrldef_array arg_s_mtrldef
  1193. IF dw_edit_mode THEN
  1194. IF KeyDown(keydownarrow!) THEN
  1195. Long li_row
  1196. IF dw_1.GetRow() = dw_1.RowCount() THEN
  1197. if dw_1.AcceptText() <> 1 then return 1
  1198. parent.triggerevent('ue_addmx')
  1199. END IF
  1200. ELSE
  1201. IF KeyDown(keyenter!) AND NOT KeyDown(keycontrol!) AND NOT KeyDown(keyshift!) THEN
  1202. if dw_1.AcceptText() <> 1 then return 1
  1203. IF dw_1.GetColumnName() = 'mtrlcode' THEN
  1204. child_row = dw_1.GetRow()
  1205. ls_mtrlcode = dw_1.Object.mtrlcode[child_row]
  1206. ls_storageid = -1
  1207. if trim(ls_mtrlcode) = '' then
  1208. dw_1.Object.mtrlid[child_row] = 0
  1209. dw_1.Object.mtrlcode[child_row] = ''
  1210. dw_1.object.mtrlname[child_row] = ''
  1211. else
  1212. IF f_find_mtrl(ls_mtrlcode,ls_storageid,arg_s_mtrldef) = 0 THEN
  1213. PARENT.TriggerEvent('ue_pickmtrl')
  1214. RETURN 1
  1215. ELSE
  1216. ls_mtrlid = arg_s_mtrldef.mtrlid[1]
  1217. ls_mtrlcode = arg_s_mtrldef.mtrlcode[1]
  1218. ls_mtrlname = arg_s_mtrldef.mtrlname[1]
  1219. ls_unit = arg_s_mtrldef.unit[1]
  1220. END IF
  1221. dw_1.Object.mtrlid[child_row] = ls_mtrlid
  1222. dw_1.Object.mtrlcode[child_row] = ls_mtrlcode
  1223. dw_1.Object.mtrlname[child_row] = ls_mtrlname
  1224. dw_1.object.unit[child_row] = ls_unit
  1225. SELECT price INTO :ld_value
  1226. FROM v_maxprice_sptprice
  1227. WHERE mtrlid = :ls_mtrlid;
  1228. if sqlca.sqlcode <> 0 then
  1229. ld_value = 0
  1230. end if
  1231. dw_1.object.defaultvalue[child_row] = ld_value
  1232. end if
  1233. IF Key = keyenter! THEN
  1234. keybd_event ( 9, 0, 0 , 0 ) // 按下tab
  1235. keybd_event ( 9, 0, 2, 0 ) // 释放tab
  1236. RETURN 1
  1237. END IF
  1238. ELSEIF dw_1.GetColumnName( ) = 'product_pro' AND dw_1.GetRow() = dw_1.RowCount() THEN
  1239. parent.triggerevent('ue_addmx')
  1240. RETURN 1
  1241. ELSE
  1242. IF Key = keyenter! THEN
  1243. keybd_event ( 9, 0, 0 , 0 ) // 按下tab
  1244. keybd_event ( 9, 0, 2, 0 ) // 释放tab
  1245. RETURN 1
  1246. END IF
  1247. END IF
  1248. END IF
  1249. END IF
  1250. END IF
  1251. // u_mtrldef_mtrlcode
  1252. // acprice
  1253. // mtrlid
  1254. // mtrlname
  1255. // plprice
  1256. end event
  1257. event itemchanged;call super::itemchanged;if dwo.name = 'if_useformula' OR dwo.name = 'if_from_mtrl' OR dwo.name = 'if_from_product' then
  1258. if trim(data) = '1' then
  1259. if dwo.name <> 'if_useformula' then
  1260. this.object.if_useformula[row] = 0
  1261. end if
  1262. if dwo.name <> 'if_from_mtrl' then
  1263. this.object.if_from_mtrl[row] = 0
  1264. end if
  1265. if dwo.name <> 'if_from_product' then
  1266. this.object.if_from_product[row] = 0
  1267. end if
  1268. end if
  1269. end if
  1270. if dwo.name = 'parmname' then
  1271. if this.object.displayname[row] = this.object.parmname[row] then
  1272. this.object.displayname[row] = data
  1273. end if
  1274. end if
  1275. end event
  1276. event doubleclicked;call super::doubleclicked;if not dw_edit_mode then return
  1277. if this.accepttext() <> 1 then return
  1278. if dwo.name = 'formula' then
  1279. s_cmpl_parm s_parm
  1280. long i
  1281. for i = 1 to row - 1
  1282. s_parm.parmname[i] = this.object.parmname[i]
  1283. s_parm.displayname[i] = this.object.displayname[i]
  1284. s_parm.parmvalue[i] = this.object.defaultvalue[i]
  1285. next
  1286. s_parm.oldformula = this.object.formula[row]
  1287. openwithparm(w_cmpl_formula_edit, s_parm)
  1288. string ls_ret
  1289. ls_ret = message.StringParm
  1290. if ls_ret <> 'NULL' then
  1291. this.object.formula[row] = ls_ret
  1292. end if
  1293. end if
  1294. if dwo.name = 'mtrlcode' then
  1295. // DONE: 选择物料
  1296. parent.triggerevent('ue_pickmtrl')
  1297. end if
  1298. end event
  1299. type cb_1 from uo_imflatbutton within w_cmpl_product_price
  1300. boolean visible = false
  1301. integer width = 274
  1302. integer height = 164
  1303. integer taborder = 30
  1304. boolean bringtotop = true
  1305. string text = "产品选择"
  1306. string normalpicname = "OPEN.BMP"
  1307. integer picsize = 16
  1308. toolbaralignment pic_align = alignattop!
  1309. boolean border = false
  1310. end type
  1311. event clicked;call super::clicked;parent.triggerevent('ue_f8')
  1312. end event
  1313. type cb_3 from uo_imflatbutton within w_cmpl_product_price
  1314. integer x = 192
  1315. integer width = 366
  1316. integer height = 164
  1317. integer taborder = 30
  1318. boolean bringtotop = true
  1319. boolean enabled = false
  1320. string text = "选择计价模板"
  1321. string normalpicname = "OPEN.BMP"
  1322. integer picsize = 16
  1323. toolbaralignment pic_align = alignattop!
  1324. boolean border = false
  1325. end type
  1326. event clicked;call super::clicked;if not dw_edit_mode then return
  1327. parent.triggerevent('ue_f9')
  1328. end event
  1329. type st_1 from statictext within w_cmpl_product_price
  1330. integer x = 23
  1331. integer y = 196
  1332. integer width = 1024
  1333. integer height = 72
  1334. boolean bringtotop = true
  1335. integer textsize = -12
  1336. integer weight = 400
  1337. fontcharset fontcharset = gb2312charset!
  1338. fontpitch fontpitch = variable!
  1339. string facename = "宋体"
  1340. long textcolor = 33554432
  1341. long backcolor = 134217739
  1342. string text = "模板名:"
  1343. boolean focusrectangle = false
  1344. end type
  1345. type cb_2 from uo_imflatbutton within w_cmpl_product_price
  1346. integer x = 1024
  1347. integer width = 151
  1348. integer height = 164
  1349. integer taborder = 30
  1350. boolean bringtotop = true
  1351. boolean enabled = false
  1352. string text = "计算"
  1353. string normalpicname = "xls_efdppict.BMP"
  1354. integer picsize = 16
  1355. toolbaralignment pic_align = alignattop!
  1356. boolean border = false
  1357. end type
  1358. event clicked;call super::clicked;if not dw_edit_mode then return
  1359. parent.triggerevent('ue_f10')
  1360. end event
  1361. type cb_edit from uo_imflatbutton within w_cmpl_product_price
  1362. integer width = 192
  1363. integer height = 164
  1364. integer taborder = 30
  1365. boolean bringtotop = true
  1366. string text = "修改&E"
  1367. string normalpicname = "open.bmp"
  1368. integer picsize = 16
  1369. toolbaralignment pic_align = alignattop!
  1370. boolean border = false
  1371. end type
  1372. event clicked;call super::clicked;// TODO: 没有权限不能修改
  1373. string ls_msg
  1374. s_inputbox s_parm
  1375. string ls_return
  1376. if ins_quote.flag = 1 then
  1377. MessageBox('提示', '报价单已经审核不能修改')
  1378. return
  1379. end if
  1380. if dw_edit_mode then
  1381. if wf_save(ls_msg) <> 1 then
  1382. MessageBox('提示', ls_msg)
  1383. return
  1384. end if
  1385. if cbx_1.checked then
  1386. cb_6.postevent(clicked!)
  1387. end if
  1388. else
  1389. if uo_bill.ModleID = 0 then
  1390. if uo_bill.Newbegin(ls_msg) <> 1 then
  1391. MessageBox('提示', ls_msg)
  1392. return
  1393. end if
  1394. uo_bill.ModleName = ins_quote.quotecode
  1395. else
  1396. if uo_bill.UpdateBegin(uo_bill.Modleid, ls_msg) <> 1 then
  1397. MessageBox('提示', ls_msg)
  1398. return
  1399. end if
  1400. end if
  1401. end if
  1402. dw_edit_mode = not dw_edit_mode
  1403. wf_refresh()
  1404. end event
  1405. type cb_addmx from uo_imflatbutton within w_cmpl_product_price
  1406. integer x = 558
  1407. integer width = 151
  1408. integer height = 164
  1409. integer taborder = 40
  1410. boolean bringtotop = true
  1411. boolean enabled = false
  1412. string text = "增行"
  1413. string normalpicname = "mx1.BMP"
  1414. integer picsize = 16
  1415. toolbaralignment pic_align = alignattop!
  1416. boolean border = false
  1417. end type
  1418. event clicked;call super::clicked;if not dw_edit_mode then return
  1419. parent.triggerevent('ue_addmx')
  1420. end event
  1421. type cb_4 from uo_imflatbutton within w_cmpl_product_price
  1422. integer x = 709
  1423. integer width = 151
  1424. integer height = 164
  1425. integer taborder = 50
  1426. boolean bringtotop = true
  1427. boolean enabled = false
  1428. string text = "删行"
  1429. string normalpicname = "mx2.BMP"
  1430. integer picsize = 16
  1431. toolbaralignment pic_align = alignattop!
  1432. boolean border = false
  1433. end type
  1434. event clicked;call super::clicked;if not dw_edit_mode then return
  1435. parent.triggerevent('ue_delmx')
  1436. end event
  1437. type cb_sort from uo_imflatbutton within w_cmpl_product_price
  1438. integer x = 859
  1439. integer width = 165
  1440. integer height = 164
  1441. integer taborder = 40
  1442. boolean bringtotop = true
  1443. boolean enabled = false
  1444. string text = "重排"
  1445. string normalpicname = "p2.BMP"
  1446. integer picsize = 16
  1447. toolbaralignment pic_align = alignattop!
  1448. boolean border = false
  1449. end type
  1450. event clicked;call super::clicked;if not dw_edit_mode then return
  1451. parent.triggerevent('ue_sort')
  1452. end event
  1453. type cb_5 from uo_imflatbutton within w_cmpl_product_price
  1454. integer x = 1175
  1455. integer width = 165
  1456. integer height = 164
  1457. integer taborder = 50
  1458. boolean bringtotop = true
  1459. boolean enabled = false
  1460. string text = "重置"
  1461. string normalpicname = "Undo.bmp"
  1462. integer picsize = 16
  1463. toolbaralignment pic_align = alignattop!
  1464. boolean border = false
  1465. end type
  1466. event clicked;call super::clicked;// DONE: 打开工作表
  1467. Long arg_Modleid
  1468. String ls_msg
  1469. s_mtrldef_array S_INSCUST
  1470. Long ll_col = 0, ls_j, chc, ll_row, ll_i
  1471. Long ll_mtrlid
  1472. String ll_mtrlcode
  1473. String ll_mtrlname
  1474. string ls_dscrp
  1475. decimal ll_value
  1476. if not dw_edit_mode then return
  1477. IF MessageBox ("IF","重置将丢失未保存的修改,是否继续?",Question!,YesNo! ) = 2 THEN RETURN
  1478. arg_ModleID = uo_bill.modleid
  1479. if arg_ModleID = 0 then
  1480. dw_1.Reset()
  1481. return
  1482. end if
  1483. IF uo_bill.GetINfo(arg_Modleid, ls_msg) <> 1 THEN
  1484. MessageBox('', ls_msg)
  1485. RETURN
  1486. END IF
  1487. parent.title = ins_oldtitle + '[' + uo_bill.ModleName + ']'
  1488. declare cur1 cursor for select DISTINCT u_cmpl_modleMx_Mx.mtrlid, u_mtrldef.mtrlcode, u_mtrldef.mtrlname
  1489. from u_cmpl_modleMx_Mx inner JOIN
  1490. u_mtrldef ON u_cmpl_modleMx_Mx.mtrlid = u_mtrldef.mtrlid
  1491. Where (u_cmpl_modleMx_Mx.ModleID = :arg_Modleid);
  1492. open cur1;
  1493. fetch cur1 INTO :ll_mtrlid, :ll_mtrlcode, :ll_mtrlname;
  1494. DO WHILE sqlca.SQLCode = 0
  1495. ll_col ++
  1496. S_INSCUST.mtrlid[ll_col] = ll_mtrlid
  1497. S_INSCUST.mtrlcode[ll_col] = ll_mtrlcode
  1498. S_INSCUST.mtrlname[ll_col] = ll_mtrlname
  1499. fetch cur1 INTO :ll_mtrlid, :ll_mtrlcode, :ll_mtrlname;
  1500. LOOP
  1501. close cur1;
  1502. dw_1.Reset()
  1503. String ls_mod
  1504. FOR ls_j = ins_first TO ins_last
  1505. ls_mod = '#' + String(ls_j) + '.Visible = 0'
  1506. ls_mod = dw_1.Modify(ls_mod)
  1507. NEXT
  1508. chc = 0
  1509. FOR ls_j = 1 TO UpperBound(S_INSCUST.mtrlid)
  1510. IF S_INSCUST.mtrlid[ls_j] > 0 THEN
  1511. chc ++
  1512. ls_mod = 'mtrl' + String(chc) + '.Visible = 1'
  1513. ls_mod = dw_1.Modify(ls_mod)
  1514. ls_mod = 'mtrl' + String(chc) + '_t.Text = ~''+String(S_INSCUST.mtrlname[ls_j])+'~''
  1515. ls_mod = dw_1.Modify(ls_mod)
  1516. ls_mod = 'mtrl' + String(chc) + '_t.Tag = ~''+String(S_INSCUST.mtrlid[ls_j])+'~''
  1517. ls_mod = dw_1.Modify(ls_mod)
  1518. ls_mod = 'mtrl' + String(chc) + '.Tag = ~''+String(S_INSCUST.mtrlcode[ls_j])+'~''
  1519. ls_mod = dw_1.Modify(ls_mod)
  1520. END IF
  1521. NEXT
  1522. ins_column_count = chc
  1523. FOR ls_j = (ins_first + 30) TO ins_last
  1524. ls_mod = '#' + String(ls_j) + '.Visible = 1'
  1525. ls_mod = dw_1.Modify(ls_mod)
  1526. NEXT
  1527. FOR ll_i = 1 TO UpperBound(uo_bill.mxs)
  1528. ll_row = dw_1.insertrow(0)
  1529. dw_1.object.printid[ll_row] = uo_bill.mxs[ll_i].printid
  1530. dw_1.object.parmname[ll_row] = uo_bill.mxs[ll_i].parmname
  1531. dw_1.object.displayname[ll_row] = uo_bill.mxs[ll_i].displayname
  1532. dw_1.object.defaultvalue[ll_row] = uo_bill.mxs[ll_i].defaultvalue
  1533. dw_1.object.if_useformula[ll_row] = uo_bill.mxs[ll_i].if_useformula
  1534. dw_1.object.formula[ll_row] = uo_bill.mxs[ll_i].formula
  1535. dw_1.object.if_from_mtrl[ll_row] = uo_bill.mxs[ll_i].if_from_mtrl
  1536. dw_1.object.mtrlid[ll_row] = uo_bill.mxs[ll_i].mtrlid
  1537. dw_1.object.mtrl_pro[ll_row] = uo_bill.mxs[ll_i].mtrl_pro
  1538. dw_1.object.if_from_product[ll_row] = uo_bill.mxs[ll_i].if_from_product
  1539. dw_1.object.product_pro[ll_row] = uo_bill.mxs[ll_i].product_pro
  1540. dw_1.object.unit[ll_row] = uo_bill.mxs[ll_i].unit
  1541. SELECT mtrlcode , mtrlname
  1542. INTO :ll_mtrlcode, :ll_mtrlname
  1543. FROM u_mtrldef
  1544. WHERE mtrlid = :uo_bill.mxs[ll_i].mtrlid;
  1545. if sqlca.sqlcode <> 0 then
  1546. ll_mtrlcode = ''
  1547. ll_mtrlname = ''
  1548. dw_1.object.mtrlid[ll_row] = 0
  1549. end if
  1550. dw_1.object.mtrlcode[ll_row] = ll_mtrlcode
  1551. dw_1.object.mtrlname[ll_row] = ll_mtrlname
  1552. for ll_col = 1 to ins_column_count
  1553. ls_dscrp = dw_1.Describe('mtrl'+string(ll_col)+'_t.tag')
  1554. ll_mtrlid = long(ls_dscrp)
  1555. ll_value = 0
  1556. for ls_j = 1 to upperbound(uo_bill.mx_mxs)
  1557. if uo_bill.mx_mxs[ls_j].printid = uo_bill.mxs[ll_i].printid &
  1558. and uo_bill.mx_mxs[ls_j].mtrlid = ll_mtrlid then
  1559. ll_value = uo_bill.mx_mxs[ls_j].value
  1560. exit
  1561. end if
  1562. next
  1563. dw_1.SetItem(ll_row, 'mtrl' + string(ll_col), ll_value)
  1564. next
  1565. NEXT
  1566. dw_edit_mode = not dw_edit_mode
  1567. wf_refresh()
  1568. end event
  1569. type cb_6 from uo_imflatbutton within w_cmpl_product_price
  1570. integer x = 1339
  1571. integer height = 164
  1572. integer taborder = 20
  1573. boolean bringtotop = true
  1574. string text = "更新报价"
  1575. string normalpicname = "update.BMP"
  1576. integer picsize = 16
  1577. toolbaralignment pic_align = alignattop!
  1578. boolean border = false
  1579. end type
  1580. event clicked;call super::clicked;// TODO: 更新报价权限
  1581. if dw_1.rowcount() <= 0 then
  1582. MessageBox('提示', '没有报价内容,不能更新')
  1583. return
  1584. end if
  1585. string ls_msg
  1586. if wf_update_price(ls_msg) <> 1 then
  1587. MessageBox('提示', ls_msg)
  1588. return
  1589. end if
  1590. messageBox('', '更新报价成功')
  1591. end event
  1592. type cbx_1 from checkbox within w_cmpl_product_price
  1593. integer x = 1111
  1594. integer y = 188
  1595. integer width = 521
  1596. integer height = 92
  1597. boolean bringtotop = true
  1598. integer textsize = -9
  1599. integer weight = 400
  1600. fontcharset fontcharset = gb2312charset!
  1601. fontpitch fontpitch = variable!
  1602. string facename = "宋体"
  1603. long textcolor = 33554432
  1604. long backcolor = 134217739
  1605. string text = "保存同时更新报价"
  1606. boolean checked = true
  1607. end type
  1608. type ln_bar from line within w_cmpl_product_price
  1609. long linecolor = 268435456
  1610. integer linethickness = 4
  1611. integer beginy = 172
  1612. integer endx = 3200
  1613. integer endy = 172
  1614. end type
  1615. type ln_bar2 from line within w_cmpl_product_price
  1616. long linecolor = 16777215
  1617. integer linethickness = 4
  1618. integer beginx = 9
  1619. integer beginy = 176
  1620. integer endx = 3273
  1621. integer endy = 176
  1622. end type
  1623. type ln_1 from line within w_cmpl_product_price
  1624. long linecolor = 268435456
  1625. integer linethickness = 4
  1626. integer beginy = 284
  1627. integer endx = 3250
  1628. integer endy = 284
  1629. end type
  1630. type ln_2 from line within w_cmpl_product_price
  1631. long linecolor = 16777215
  1632. integer linethickness = 4
  1633. integer beginy = 288
  1634. integer endx = 3282
  1635. integer endy = 288
  1636. end type
  1637. type r_bar from rectangle within w_cmpl_product_price
  1638. long linecolor = 16777215
  1639. integer linethickness = 4
  1640. long fillcolor = 1073741824
  1641. integer x = 1998
  1642. integer y = 40
  1643. integer width = 87
  1644. integer height = 68
  1645. end type
  1646. event constructor;this.fillcolor = 14215660
  1647. this.linecolor = 14215660
  1648. this.x = -1
  1649. this.y = -1
  1650. this.height = ln_bar.beginy - 5
  1651. end event