w_warebalc_view_bk.srw 42 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502
  1. $PBExportHeader$w_warebalc_view_bk.srw
  2. forward
  3. global type w_warebalc_view_bk from w_publ_pageretr_easyq
  4. end type
  5. type cb_1 from uo_imflatbutton within w_warebalc_view_bk
  6. end type
  7. type ddlb_storageid from uo_ddlb_storageid within w_warebalc_view_bk
  8. end type
  9. type em_month from editmask within w_warebalc_view_bk
  10. end type
  11. type st_2 from statictext within w_warebalc_view_bk
  12. end type
  13. type ddlb_1 from dropdownlistbox within w_warebalc_view_bk
  14. end type
  15. type cb_cmp from uo_imflatbutton within w_warebalc_view_bk
  16. end type
  17. type tv_1 from uo_tv_mtrltype within w_warebalc_view_bk
  18. end type
  19. type ddlb_mtrlorigin from uo_ddlb_mtrlorigin within w_warebalc_view_bk
  20. end type
  21. type st_lastbalcdate from statictext within w_warebalc_view_bk
  22. end type
  23. end forward
  24. global type w_warebalc_view_bk from w_publ_pageretr_easyq
  25. string title = "仓库结存表"
  26. event ue_cmp_mtrlware ( )
  27. event ue_cmp_amt2 ( )
  28. event ue_cmp ( )
  29. event ue_update_inware_mtrlwareid ( )
  30. cb_1 cb_1
  31. ddlb_storageid ddlb_storageid
  32. em_month em_month
  33. st_2 st_2
  34. ddlb_1 ddlb_1
  35. cb_cmp cb_cmp
  36. tv_1 tv_1
  37. ddlb_mtrlorigin ddlb_mtrlorigin
  38. st_lastbalcdate st_lastbalcdate
  39. end type
  40. global w_warebalc_view_bk w_warebalc_view_bk
  41. type variables
  42. Long cur_storageid = -1
  43. long cur_storageid_arr[]
  44. DateTime balcdate //结存日期
  45. Int cur_mtrlorigin = -1 //当前显示物料来源
  46. String ls_handtype = ''
  47. string ls_mtrltype = ''
  48. end variables
  49. forward prototypes
  50. public subroutine wf_hide_col ()
  51. end prototypes
  52. event ue_cmp_mtrlware();//按库存数重算本期期初
  53. IF Not f_power_ind(1507) THEN
  54. MessageBox(publ_operator,'你没有使用权限!')
  55. RETURN
  56. END IF
  57. //IF Not dw_pageretr.DataObject = 'dw_warebalc_view' THEN
  58. // MessageBox('系统提示','必须在客户产品统计表中才能执行本功能')
  59. // RETURN
  60. //END IF
  61. IF MessageBox (publ_operator,"是否确定要执行按库存数重算结存功能?",Question!,YesNo! ) = 2 THEN RETURN
  62. IF cur_storageid = -1 THEN
  63. MessageBox('系统提示','请先选择仓库')
  64. RETURN
  65. END IF
  66. Long rslt = 1
  67. String arg_msg
  68. datastore ds_warebalc
  69. ds_warebalc = Create datastore
  70. ds_warebalc.DataObject = 'dw_warebalc_view'
  71. ds_warebalc.SetTransObject(sqlca)
  72. ds_warebalc.Retrieve(cur_storageid_arr,'','',-1,publ_operator)
  73. // //清空筛选内容
  74. //ds_warebalc.SetFilter('')
  75. //ds_warebalc.Filter()
  76. //ds_warebalc.Retrieve(cur_storageid_arr,'','',-1,publ_operator)
  77. Long ll_i
  78. Decimal ld_newcost // 最新成本价
  79. Decimal ld_bgqty,ld_bgamt,ld_incqty,ld_incamt,ld_desqty,ld_desamt
  80. Decimal ld_balcqty,ld_balcamt
  81. Long ll_mtrlid
  82. String ls_status,ls_pcode,ls_woodcode
  83. String ls_mtrlcode
  84. Decimal ld_noallocqty,ld_wareamt,ld_noallocaddqty
  85. Decimal ld_noallocqty_sum,ld_wareamt_sum,ld_noallocaddqty_sum,ld_incaddqty,ld_desaddqty
  86. Long ll_sptid_cusid,ll_sptid
  87. Open(w_sys_wait_jdt) //初始化进度条
  88. w_sys_wait_jdt.Show()
  89. //结存查库存
  90. w_sys_wait_jdt.wf_accepttol(ds_warebalc.RowCount())
  91. FOR ll_i = 1 To ds_warebalc.RowCount()
  92. ll_mtrlid = ds_warebalc.Object.u_mtrldef_mtrlid[ll_i]
  93. ls_mtrlcode = ds_warebalc.Object.u_mtrldef_mtrlcode[ll_i]
  94. ls_status = ds_warebalc.Object.u_warebalc_status[ll_i]
  95. ls_woodcode = ds_warebalc.Object.u_warebalc_woodcode[ll_i]
  96. ls_pcode = ds_warebalc.Object.u_warebalc_pcode[ll_i]
  97. ll_sptid_cusid = ds_warebalc.Object.u_warebalc_sptid_cusid[ll_i]
  98. w_sys_wait_jdt.st_msg.Text = " 正在结存重算:"+ls_mtrlcode+','+sys_option_change_status+':'+ls_status+','+sys_option_change_woodcode+':'+ls_woodcode+','+sys_option_change_pcode+':'+ls_pcode+"..." //进度信息
  99. w_sys_wait_jdt.wf_inc(ll_i)
  100. SELECT isnull(sum(noallocqty),0),
  101. isnull(sum(wareamt),0),
  102. isnull(sum(noallocaddqty),0)
  103. INTO :ld_noallocqty,
  104. :ld_wareamt,
  105. :ld_noallocaddqty
  106. FROM u_mtrlware
  107. WHERE mtrlid = :ll_mtrlid
  108. AND storageid = :cur_storageid
  109. AND status = :ls_status
  110. AND woodcode = :ls_woodcode
  111. AND pcode = :ls_pcode
  112. And sptid = :ll_sptid_cusid;
  113. IF sqlca.SQLCode <> 0 THEN
  114. IF sqlca.SQLCode = 100 THEN
  115. ld_noallocqty = 0
  116. ld_wareamt = 0
  117. ELSE
  118. rslt = 0
  119. arg_msg = '查询库存资料失败,物料:'+ls_mtrlcode+','+sys_option_change_status+':'+ls_status+','+sys_option_change_woodcode+':'+ls_woodcode+','+sys_option_change_pcode+':'+ls_pcode
  120. GOTO ext
  121. END IF
  122. END IF
  123. UPDATE u_warebalc
  124. SET balcqty = :ld_noallocqty,
  125. balcaddqty = :ld_noallocaddqty,
  126. balcamt = :ld_wareamt,
  127. bgqty = :ld_noallocqty + desqty - incqty,
  128. bgamt = :ld_wareamt + desamt - incamt,
  129. bgaddqty = :ld_noallocaddqty + desaddqty - incaddqty
  130. WHERE mtrlid = :ll_mtrlid
  131. AND balcdateint = 0
  132. AND Storageid = :cur_storageid
  133. AND status = :ls_status
  134. AND woodcode = :ls_woodcode
  135. AND pcode = :ls_pcode
  136. And sptid_cusid = :ll_sptid_cusid;
  137. IF sqlca.SQLCode <> 0 THEN
  138. rslt = 0
  139. arg_msg = '更新结存失败,物料:'+ls_mtrlcode+','+sys_option_change_status+':'+ls_status+','+sys_option_change_woodcode+':'+ls_woodcode+','+sys_option_change_pcode+':'+ls_pcode
  140. GOTO ext
  141. END IF
  142. ld_noallocqty_sum += ld_noallocqty
  143. ld_wareamt_sum += ld_wareamt
  144. ld_noallocaddqty_sum += ld_noallocaddqty
  145. NEXT
  146. //库存计结存
  147. Long cnt,ll_scid
  148. datastore ds_mtrlware
  149. ds_mtrlware = Create datastore
  150. ds_mtrlware.DataObject = 'ds_warebalc_view_cmpl_mtrlware_to_balc'
  151. ds_mtrlware.SetTransObject(sqlca)
  152. ds_mtrlware.Retrieve(cur_storageid)
  153. ds_mtrlware.AcceptText()
  154. IF ld_noallocqty_sum <> ds_mtrlware.Object.sumqty[1] Or &
  155. ld_wareamt_sum <> ds_mtrlware.Object.sumamt[1] Or &
  156. ld_noallocaddqty_sum <> ds_mtrlware.Object.sumaddqty[1] THEN
  157. SELECT scid INTO :ll_scid
  158. FROM u_storage
  159. Where storageid = :cur_storageid;
  160. IF sqlca.SQLCode <> 0 THEN
  161. rslt = 0
  162. arg_msg = '查询仓库所属分部失败,操作取消'
  163. GOTO ext
  164. END IF
  165. w_sys_wait_jdt.wf_accepttol(ds_mtrlware.RowCount())
  166. FOR ll_i = 1 To ds_mtrlware.RowCount()
  167. ll_mtrlid = 0
  168. ls_mtrlcode = ''
  169. ls_status = ''
  170. ls_woodcode = ''
  171. ls_pcode = ''
  172. ld_noallocqty = 0
  173. ld_wareamt = 0
  174. ll_sptid = 0
  175. cnt = 0
  176. ls_mtrlcode = ds_mtrlware.Object.u_mtrldef_mtrlcode[ll_i]
  177. ll_mtrlid = ds_mtrlware.Object.mtrlid[ll_i]
  178. ls_status = ds_mtrlware.Object.status[ll_i]
  179. ls_woodcode = ds_mtrlware.Object.woodcode[ll_i]
  180. ls_pcode = ds_mtrlware.Object.pcode[ll_i]
  181. ld_noallocqty = ds_mtrlware.Object.qty[ll_i]
  182. ld_noallocaddqty = ds_mtrlware.Object.addqty[ll_i]
  183. ld_wareamt = ds_mtrlware.Object.amt[ll_i]
  184. ll_sptid = ds_mtrlware.Object.u_mtrlware_sptid[ll_i]
  185. w_sys_wait_jdt.st_msg.Text = " 正在库存重算:"+ls_mtrlcode+','+sys_option_change_status+':'+ls_status+','+sys_option_change_woodcode+':'+ls_woodcode+','+sys_option_change_pcode+':'+ls_pcode+"..." //进度信息
  186. w_sys_wait_jdt.wf_inc(ll_i)
  187. SELECT count(*) INTO :cnt
  188. FROM u_warebalc
  189. WHERE mtrlid = :ll_mtrlid
  190. AND balcdateint = 0
  191. AND Storageid = :cur_storageid
  192. AND status = :ls_status
  193. AND woodcode = :ls_woodcode
  194. AND pcode = :ls_pcode
  195. And sptid_cusid = :ll_sptid;
  196. IF sqlca.SQLCode <> 0 THEN
  197. rslt = 0
  198. arg_msg = '查询结存失败,物料:'+ls_mtrlcode+','+sys_option_change_status+':'+ls_status+','+sys_option_change_woodcode+':'+ls_woodcode+','+sys_option_change_pcode+':'+ls_pcode
  199. GOTO ext
  200. END IF
  201. IF cnt > 0 THEN CONTINUE
  202. SELECT CASE when sum(Round(u_inwaremx.qty * u_inwaremx.cost,2)) Is Null THEN 0 ELSE sum(Round(u_inwaremx.qty * u_inwaremx.cost,2)) END ,
  203. CASE when sum(u_inwaremx.qty) Is Null THEN 0 ELSE sum(u_inwaremx.qty) END,
  204. CASE when sum(u_inwaremx.addqty) Is Null THEN 0 ELSE sum(u_inwaremx.addqty) END
  205. Into :ld_incamt,:ld_incqty,:ld_incaddqty
  206. From u_inwaremx,u_inware
  207. Where u_inwaremx.scid = u_inware.scid
  208. And u_inwaremx.inwareid = u_inware.inwareid
  209. And u_inware.storageid = :cur_storageid
  210. And u_inware.balcdateint = 0
  211. And u_inwaremx.mtrlid = :ll_mtrlid
  212. And u_inwaremx.status = :ls_status
  213. And u_inwaremx.woodcode = :ls_woodcode
  214. And u_inwaremx.pcode = :ls_pcode
  215. And u_inwaremx.sptid_cusid = :ll_sptid;
  216. IF sqlca.SQLCode <> 0 THEN
  217. rslt = 0
  218. arg_msg = '查询进仓失败,物料:'+ls_mtrlcode+','+sys_option_change_status+':'+ls_status+','+sys_option_change_woodcode+':'+ls_woodcode+','+sys_option_change_pcode+':'+ls_pcode
  219. GOTO ext
  220. END IF
  221. SELECT CASE when sum(u_outwaremx.costamt) Is Null THEN 0 ELSE sum(u_outwaremx.costamt) END ,
  222. CASE when sum(u_outwaremx.qty) Is Null THEN 0 ELSE sum(u_outwaremx.qty) END ,
  223. CASE when sum(u_outwaremx.addqty) Is Null THEN 0 ELSE sum(u_outwaremx.addqty) END
  224. Into :ld_desamt,:ld_desqty,:ld_desaddqty
  225. From u_outwaremx,u_outware
  226. Where u_outwaremx.scid = u_outware.scid
  227. And u_outwaremx.outwareid = u_outware.outwareid
  228. And u_outware.storageid = :cur_storageid
  229. And u_outware.balcdateint = 0
  230. And u_outwaremx.mtrlid = :ll_mtrlid
  231. And u_outwaremx.status = :ls_status
  232. And u_outwaremx.woodcode = :ls_woodcode
  233. And u_outwaremx.pcode = :ls_pcode
  234. And u_outwaremx.sptid = :ll_sptid;
  235. IF sqlca.SQLCode <> 0 THEN
  236. rslt = 0
  237. arg_msg = '查询出仓失败,物料:'+ls_mtrlcode+','+sys_option_change_status+':'+ls_status+','+sys_option_change_woodcode+':'+ls_woodcode+','+sys_option_change_pcode+':'+ls_pcode
  238. GOTO ext
  239. END IF
  240. INSERT INTO u_warebalc
  241. (scid,
  242. balcdateint,
  243. storageid,
  244. mtrlid,
  245. status,
  246. woodcode,
  247. pcode,
  248. bgqty,
  249. bgamt,
  250. incqty,
  251. incamt,
  252. desqty,
  253. desamt,
  254. balcqty,
  255. balcamt,
  256. sptid_cusid,
  257. bgaddqty,
  258. balcaddqty,
  259. incaddqty,
  260. desaddqty
  261. )
  262. VALUES
  263. (:ll_scid,0,
  264. :cur_storageid,
  265. :ll_mtrlid,
  266. :ls_status,
  267. :ls_woodcode,
  268. :ls_pcode,
  269. :ld_noallocqty + :ld_desqty - :ld_incqty,
  270. :ld_wareamt + :ld_desamt - :ld_incamt,
  271. :ld_incqty,
  272. :ld_incamt,
  273. :ld_desqty,
  274. :ld_desamt,
  275. :ld_noallocqty,
  276. :ld_wareamt,
  277. :ll_sptid,
  278. :ld_noallocaddqty + :ld_desaddqty - :ld_incaddqty,
  279. :ld_noallocaddqty,
  280. :ld_incqty,
  281. :ld_desaddqty);
  282. IF sqlca.SQLCode <> 0 THEN
  283. rslt = 0
  284. arg_msg = '新加结存失败,物料:'+ls_mtrlcode+','+sys_option_change_status+':'+ls_status+','+sys_option_change_woodcode+':'+ls_woodcode+','+sys_option_change_pcode+':'+ls_pcode
  285. GOTO ext
  286. END IF
  287. NEXT
  288. END IF
  289. //CLOSE(w_sys_wait_jdt)
  290. //COMMIT;
  291. //MessageBox('系统提示','重算成功!')
  292. //THIS.TriggerEvent('retrieve_pageretr')
  293. ext:
  294. Destroy ds_warebalc
  295. Destroy ds_mtrlware
  296. Close(w_sys_wait_jdt)
  297. IF rslt = 0 THEN
  298. ROLLBACK;
  299. MessageBox('Error',arg_msg)
  300. RETURN
  301. ELSE
  302. COMMIT;
  303. MessageBox('系统提示','重算成功!')
  304. This.TriggerEvent('retrieve_pageretr')
  305. END IF
  306. end event
  307. event ue_cmp_amt2();//按上期结存重算本期结余
  308. IF Not f_power_ind(1507) THEN
  309. MessageBox(publ_operator,'你没有使用权限!')
  310. RETURN
  311. END IF
  312. //IF Not dw_pageretr.DataObject = 'dw_warebalc_view' THEN
  313. // MessageBox('系统提示','必须在客户产品统计表中才能执行本功能')
  314. // RETURN
  315. //END IF
  316. IF cur_storageid = -1 THEN
  317. MessageBox('系统提示','请先选择仓库')
  318. RETURN
  319. END IF
  320. Long rslt = 1
  321. String arg_msg
  322. Long cnt
  323. cnt = 0
  324. SELECT count(*) INTO :cnt
  325. FROM u_mtrlware
  326. WHERE u_mtrlware.storageid = :cur_storageid
  327. AND ( u_mtrlware.plancode <> '' OR sptid <> 0 )
  328. AND u_mtrlware.noallocqty <> 0
  329. And u_mtrlware.mtrlid In (SELECT mtrlid From u_warebalc Where storageid = :cur_storageid And balcdateint = 0);
  330. IF sqlca.SQLCode <> 0 THEN
  331. MessageBox('系统提示','查询仓库物料使用了批号库存失败,'+sqlca.SQLErrText)
  332. RETURN
  333. END IF
  334. IF cnt > 0 THEN
  335. MessageBox('系统提示','仓库物料使用了批号库存,不能重算')
  336. RETURN
  337. END IF
  338. cnt = 0
  339. SELECT count(*) INTO :cnt
  340. FROM u_outware,u_outwaremx
  341. WHERE u_outware.storageid = :cur_storageid
  342. AND u_outware.scid = u_outwaremx.scid
  343. AND u_outware.outwareid = u_outwaremx.outwareid
  344. AND u_outware.flag = 1
  345. AND u_outware.balcdateint = 0
  346. AND u_outwaremx.plancode <> ''
  347. And u_outwaremx.mtrlid In (SELECT mtrlid From u_warebalc Where storageid = :cur_storageid And balcdateint = 0);
  348. IF sqlca.SQLCode <> 0 THEN
  349. MessageBox('系统提示','查询仓库物料出仓使用了批号库存失败,'+sqlca.SQLErrText)
  350. RETURN
  351. END IF
  352. IF cnt > 0 THEN
  353. MessageBox('系统提示','仓库物料出仓使用了批号库存,不能重算')
  354. RETURN
  355. END IF
  356. cnt = 0
  357. SELECT count(*) INTO :cnt
  358. FROM u_inware,u_inwaremx
  359. WHERE u_inware.storageid = :cur_storageid
  360. AND u_inware.scid = u_inwaremx.scid
  361. AND u_inware.inwareid = u_inwaremx.inwareid
  362. AND u_inware.flag = 1
  363. AND u_inware.balcdateint = 0
  364. AND u_inwaremx.plancode <> ''
  365. And u_inwaremx.mtrlid In (SELECT mtrlid From u_warebalc Where storageid = :cur_storageid And balcdateint = 0);
  366. IF sqlca.SQLCode <> 0 THEN
  367. MessageBox('系统提示','查询仓库物料进仓使用了批号库存失败,'+sqlca.SQLErrText)
  368. RETURN
  369. END IF
  370. IF cnt > 0 THEN
  371. MessageBox('系统提示','仓库物料进仓使用了批号库存,不能重算')
  372. RETURN
  373. END IF
  374. IF MessageBox (publ_operator,"是否确定要执行按上期结存重算本期结余功能?",Question!,YesNo! ) = 2 THEN RETURN
  375. //IF cur_storageid = -1 THEN
  376. // MessageBox('系统提示','请先选择仓库')
  377. // RETURN
  378. //END IF
  379. datastore ds_warebalc
  380. ds_warebalc = Create datastore
  381. ds_warebalc.DataObject = 'dw_warebalc_view'
  382. ds_warebalc.SetTransObject(sqlca)
  383. ds_warebalc.Retrieve(cur_storageid_arr,'','',-1,publ_operator)
  384. // //清空筛选内容
  385. //ds_warebalc.SetFilter('')
  386. //ds_warebalc.Filter()
  387. //ds_warebalc.Retrieve(cur_storageid_arr,'','',cur_mtrlorigin,publ_operator)
  388. Long ll_lastbalcdateint
  389. Long ll_i
  390. Decimal ld_newcost // 最新成本价
  391. Decimal ld_balcqty_last,ld_balcamt_last,ld_inamt,ld_inqty,ld_outamt,ld_outqty
  392. Decimal ld_ubalcqty_last,ld_uinqty,ld_uoutqty
  393. Decimal ld_bgqty,ld_bgamt,ld_incqty,ld_incamt,ld_desqty,ld_desamt
  394. Decimal ld_balcqty,ld_balcamt
  395. Long ll_mtrlid
  396. String ls_status,ls_pcode,ls_woodcode
  397. String ls_mtrlcode,ls_msg
  398. Long ll_sptid_cusid
  399. cnt = 0
  400. SELECT count(*) INTO :cnt
  401. FROM u_warebalc
  402. Where storageid = :cur_storageid;
  403. IF sqlca.SQLCode <> 0 THEN
  404. rslt = 0
  405. arg_msg = '查询历史结存失败,操作取消'
  406. GOTO ext
  407. END IF
  408. IF cnt > 0 THEN
  409. SELECT max(balcdateint) INTO :ll_lastbalcdateint
  410. FROM u_warebalc
  411. Where storageid = :cur_storageid;
  412. IF sqlca.SQLCode <> 0 THEN
  413. rslt = 0
  414. arg_msg = '查询上次结存失败,操作取消'
  415. GOTO ext
  416. END IF
  417. ELSE
  418. ll_lastbalcdateint = -1
  419. END IF
  420. UPDATE u_mtrlware
  421. SET noallocqty = 0,wareamt = 0
  422. Where storageid = : cur_storageid;
  423. IF sqlca.SQLCode <> 0 THEN
  424. rslt = 0
  425. arg_msg = '清除库存数量,金额失败,操作取消'
  426. GOTO ext
  427. END IF
  428. Open(w_sys_wait_jdt) //初始化进度条
  429. w_sys_wait_jdt.Show()
  430. w_sys_wait_jdt.wf_accepttol(ds_warebalc.RowCount())
  431. FOR ll_i = 1 To ds_warebalc.RowCount()
  432. ld_bgqty = ds_warebalc.Object.u_mtrldef_bgqty[ll_i]
  433. ld_bgamt = ds_warebalc.Object.u_mtrldef_bgamt[ll_i]
  434. ld_incqty = ds_warebalc.Object.u_mtrldef_incqty[ll_i]
  435. ld_incamt = ds_warebalc.Object.u_mtrldef_incamt[ll_i]
  436. ld_desqty = ds_warebalc.Object.u_mtrldef_desqty[ll_i]
  437. ld_desamt = ds_warebalc.Object.u_mtrldef_desamt[ll_i]
  438. ls_status = ds_warebalc.Object.u_warebalc_status[ll_i]
  439. ls_woodcode = ds_warebalc.Object.u_warebalc_woodcode[ll_i]
  440. ls_pcode = ds_warebalc.Object.u_warebalc_pcode[ll_i]
  441. ls_mtrlcode = ds_warebalc.Object.u_mtrldef_mtrlcode[ll_i]
  442. ll_mtrlid = ds_warebalc.Object.u_mtrldef_mtrlid[ll_i]
  443. ll_sptid_cusid = ds_warebalc.Object.u_warebalc_sptid_cusid[ll_i]
  444. // if ll_mtrlid = 9159 then
  445. // ll_mtrlid = 9159
  446. // end if
  447. w_sys_wait_jdt.st_msg.Text = " 正在重算:"+ls_mtrlcode+','+sys_option_change_status+':'+ls_status+','+sys_option_change_woodcode+':'+ls_woodcode+','+sys_option_change_pcode+':'+ls_pcode+"..." //进度信息
  448. w_sys_wait_jdt.wf_inc(ll_i)
  449. IF IsNull(ld_bgqty) THEN ld_bgqty = 0
  450. IF IsNull(ld_incqty) THEN ld_incqty = 0
  451. IF IsNull(ld_bgamt) THEN ld_bgamt = 0
  452. IF IsNull(ld_incamt) THEN ld_incamt = 0
  453. IF IsNull(ld_desqty) THEN ld_desqty = 0
  454. IF IsNull(ld_desamt) THEN ld_desamt = 0
  455. //查期初
  456. IF ld_bgqty > 0 And ll_lastbalcdateint > 0 THEN
  457. SELECT balcqty,balcamt
  458. INTO :ld_balcqty_last,:ld_balcamt_last
  459. FROM u_warebalc
  460. WHERE storageid = :cur_storageid
  461. AND mtrlid = :ll_mtrlid
  462. AND status = :ls_status
  463. AND woodcode = :ls_woodcode
  464. AND pcode = :ls_pcode
  465. AND balcdateint = :ll_lastbalcdateint
  466. And sptid_cusid = :ll_sptid_cusid;
  467. IF sqlca.SQLCode <> 0 THEN
  468. rslt = 0
  469. arg_msg = '查询上月结存失败,物料:'+ls_mtrlcode+','+sys_option_change_status+':'+ls_status+','+sys_option_change_woodcode+':'+ls_woodcode+','+sys_option_change_pcode+':'+ls_pcode+','+sqlca.SQLErrText
  470. GOTO ext
  471. END IF
  472. IF ld_balcqty_last <> ld_bgqty THEN ld_bgqty = ld_balcqty_last
  473. IF ld_balcamt_last <> ld_bgamt THEN ld_bgamt = ld_balcamt_last
  474. ELSE
  475. ld_bgqty = 0
  476. ld_bgamt = 0
  477. END IF
  478. //查进仓
  479. SELECT isnull(sum(u_inwaremx.qty),0),isnull(sum(u_inwaremx.uqty),0),isnull(sum(round(u_inwaremx.cost * u_inwaremx.qty,2)),0)
  480. INTO :ld_inqty,:ld_uinqty,:ld_inamt
  481. FROM u_inware,u_inwaremx
  482. WHERE u_inware.scid = u_inwaremx.scid
  483. AND u_inware.inwareid = u_inwaremx.inwareid
  484. AND u_inwaremx.mtrlid = :ll_mtrlid
  485. AND u_inwaremx.status = :ls_status
  486. AND u_inwaremx.woodcode = :ls_woodcode
  487. AND u_inwaremx.pcode = :ls_pcode
  488. AND u_inware.storageid = :cur_storageid
  489. AND u_inware.balcdateint = 0
  490. AND u_inware.flag = 1
  491. And u_inwaremx.sptid_cusid = :ll_sptid_cusid;
  492. IF sqlca.SQLCode <> 0 THEN
  493. rslt = 0
  494. arg_msg = '查询本月进仓失败,物料:'+ls_mtrlcode+','+sys_option_change_status+':'+ls_status+','+sys_option_change_woodcode+':'+ls_woodcode+','+sys_option_change_pcode+':'+ls_pcode+','+sqlca.SQLErrText
  495. GOTO ext
  496. END IF
  497. IF ld_incqty <> ld_inqty THEN ld_incqty = ld_inqty
  498. IF ld_incamt <> ld_inamt THEN ld_incamt = ld_inamt
  499. //查出仓
  500. SELECT isnull(sum(u_outwaremx.qty),0),isnull(sum(u_outwaremx.uqty),0),isnull(sum(round(u_outwaremx.costamt,2)),0)
  501. INTO :ld_outqty,:ld_uoutqty,:ld_outamt
  502. FROM u_outware,u_outwaremx
  503. WHERE u_outware.scid = u_outwaremx.scid
  504. AND u_outware.outwareid = u_outwaremx.outwareid
  505. AND u_outwaremx.mtrlid = :ll_mtrlid
  506. AND u_outwaremx.status = :ls_status
  507. AND u_outwaremx.woodcode = :ls_woodcode
  508. AND u_outwaremx.pcode = :ls_pcode
  509. AND u_outware.storageid = :cur_storageid
  510. AND u_outware.balcdateint = 0
  511. AND u_outware.flag = 1
  512. And u_outwaremx.sptid = :ll_sptid_cusid;
  513. IF sqlca.SQLCode <> 0 THEN
  514. rslt = 0
  515. arg_msg = '查询本月出仓失败,物料:'+ls_mtrlcode+','+sys_option_change_status+':'+ls_status+','+sys_option_change_woodcode+':'+ls_woodcode+','+sys_option_change_pcode+':'+ls_pcode+','+sqlca.SQLErrText
  516. GOTO ext
  517. END IF
  518. IF ld_desqty <> ld_outqty THEN ld_desqty = ld_outqty
  519. IF ld_desamt <> ld_outamt THEN ld_desamt = ld_outamt
  520. IF IsNull(ld_bgqty) THEN ld_bgqty = 0
  521. IF IsNull(ld_bgamt) THEN ld_bgamt = 0
  522. IF IsNull(ld_incqty) THEN ld_incqty = 0
  523. IF IsNull(ld_incamt) THEN ld_incamt = 0
  524. IF IsNull(ld_desqty) THEN ld_desqty = 0
  525. IF IsNull(ld_desamt) THEN ld_desamt = 0
  526. IF ld_bgqty + ld_incqty <> 0 THEN
  527. ld_newcost = Round((ld_bgamt + ld_incamt) / (ld_bgqty + ld_incqty),10)
  528. ELSE
  529. IF ld_desqty <> 0 THEN
  530. ld_newcost = Round(ld_desamt / ld_desqty, 10)
  531. ELSE
  532. ld_newcost = 0
  533. END IF
  534. END IF
  535. IF ld_newcost < 0 THEN ld_newcost = 0
  536. //更新期间出金额,结存金额
  537. UPDATE u_warebalc
  538. SET bgqty = :ld_bgqty,
  539. bgamt = :ld_bgamt,
  540. incqty = :ld_incqty,
  541. incamt = :ld_incamt,
  542. desqty = :ld_desqty,
  543. desamt = round(:ld_desqty * :ld_newcost,2),
  544. balcqty = :ld_bgqty + :ld_incqty - :ld_desqty,
  545. balcamt = round((:ld_bgqty + :ld_incqty - :ld_desqty) * :ld_newcost,2)
  546. WHERE mtrlid = :ll_mtrlid
  547. AND balcdateint = 0
  548. AND Storageid = :cur_storageid
  549. AND status = :ls_status
  550. AND woodcode = :ls_woodcode
  551. AND pcode = :ls_pcode
  552. And sptid_cusid = :ll_sptid_cusid;
  553. IF sqlca.SQLCode <> 0 THEN
  554. rslt = 0
  555. arg_msg = '更新结存失败,物料:'+ls_mtrlcode+','+sys_option_change_status+':'+ls_status+','+sys_option_change_woodcode+':'+ls_woodcode+','+sys_option_change_pcode+':'+ls_pcode+','+sqlca.SQLErrText
  556. GOTO ext
  557. END IF
  558. UPDATE u_mtrlware
  559. SET cost = :ld_newcost,
  560. noallocqty = :ld_bgqty + :ld_incqty - :ld_desqty ,
  561. wareamt = round((:ld_bgqty + :ld_incqty - :ld_desqty) * :ld_newcost,2)
  562. WHERE mtrlid = :ll_mtrlid
  563. AND Storageid = :cur_storageid
  564. AND status = :ls_status
  565. AND woodcode = :ls_woodcode
  566. AND pcode = :ls_pcode
  567. AND plancode = ''
  568. And sptid = :ll_sptid_cusid;
  569. IF sqlca.SQLCode <> 0 THEN
  570. rslt = 0
  571. arg_msg = '更新库存金额失败,物料:'+ls_mtrlcode+','+sys_option_change_status+':'+ls_status+','+sys_option_change_woodcode+':'+ls_woodcode+','+sys_option_change_pcode+':'+ls_pcode+','+sqlca.SQLErrText
  572. GOTO ext
  573. END IF
  574. UPDATE u_outwaremx
  575. SET u_outwaremx.cost = :ld_newcost,
  576. u_outwaremx.costamt = round(u_outwaremx.qty * :ld_newcost,2)
  577. FROM u_outwaremx INNER JOIN
  578. u_outware ON u_outwaremx.scid = u_outware.scid AND
  579. u_outwaremx.outwareid = u_outware.outwareid
  580. WHERE u_outwaremx.mtrlid = :ll_mtrlid
  581. AND u_outware.storageid = :cur_storageid
  582. AND u_outwaremx.status = :ls_status
  583. AND u_outwaremx.woodcode = :ls_woodcode
  584. AND u_outwaremx.pcode = :ls_pcode
  585. AND u_outware.balcflag = 0
  586. And u_outwaremx.sptid = :ll_sptid_cusid;
  587. IF sqlca.SQLCode <> 0 THEN
  588. rslt = 0
  589. arg_msg = '更新未结存的出仓单金额失败,物料:'+ls_mtrlcode+','+sys_option_change_status+':'+ls_status+','+sys_option_change_woodcode+':'+ls_woodcode+','+sys_option_change_pcode+':'+ls_pcode+','+sqlca.SQLErrText
  590. GOTO ext
  591. END IF
  592. NEXT
  593. ext:
  594. Destroy ds_warebalc
  595. Close(w_sys_wait_jdt)
  596. IF rslt = 0 THEN
  597. ROLLBACK;
  598. MessageBox('Error',arg_msg)
  599. RETURN
  600. ELSE
  601. COMMIT;
  602. MessageBox('系统提示','重算成功!')
  603. This.TriggerEvent('retrieve_pageretr')
  604. END IF
  605. end event
  606. event ue_cmp();//超级重算
  607. IF Not f_power_ind(1507) THEN
  608. MessageBox(publ_operator,'你没有使用权限!')
  609. RETURN
  610. END IF
  611. //IF NOT dw_pageretr.DataObject = 'dw_warebalc_view' THEN
  612. // MessageBox('系统提示','必须在客户产品统计表中才能执行本功能')
  613. // RETURN
  614. //END IF
  615. IF MessageBox (publ_operator,"是否确定要执行超级重算结存功能?",Question!,YesNo! ) = 2 THEN RETURN
  616. IF cur_storageid = -1 THEN
  617. MessageBox('系统提示','请先选择仓库')
  618. RETURN
  619. END IF
  620. //// //清空筛选内容
  621. //dw_pageretr.SetFilter('')
  622. //dw_pageretr.Filter()
  623. //dw_pageretr.Retrieve(cur_storageid_arr,'','',-1,publ_operator)
  624. Long rslt = 1
  625. String arg_msg
  626. Long ll_i
  627. Decimal ld_newcost // 最新成本价
  628. Decimal ld_bgqty,ld_bgamt,ld_incqty,ld_incamt,ld_desqty,ld_desamt
  629. Decimal ld_balcqty,ld_balcamt
  630. Long ll_mtrlid
  631. String ls_status,ls_pcode,ls_woodcode
  632. String ls_mtrlcode
  633. Decimal ld_noallocqty,ld_wareamt
  634. Decimal ld_noallocqty_sum,ld_wareamt_sum
  635. Long ll_sptid
  636. Open(w_sys_wait_jdt) //初始化进度条
  637. w_sys_wait_jdt.Show()
  638. //
  639. ////结存查库存
  640. //库存计结存
  641. Long cnt,ll_scid
  642. datastore ds_mtrlware
  643. ds_mtrlware = Create datastore
  644. ds_mtrlware.DataObject = 'ds_warebalc_view_cmpl_mtrlware_to_balc2'
  645. ds_mtrlware.SetTransObject(sqlca)
  646. ds_mtrlware.Retrieve(cur_storageid)
  647. ds_mtrlware.AcceptText()
  648. //IF ld_noallocqty_sum <> ds_mtrlware.Object.sumqty[1] OR &
  649. // ld_wareamt_sum <> ds_mtrlware.Object.sumamt[1] THEN
  650. SELECT scid INTO :ll_scid
  651. FROM u_storage
  652. Where storageid = :cur_storageid;
  653. IF sqlca.SQLCode <> 0 THEN
  654. rslt = 0
  655. arg_msg = '查询仓库所属分部失败'
  656. GOTO ext
  657. END IF
  658. w_sys_wait_jdt.wf_accepttol(ds_mtrlware.RowCount())
  659. FOR ll_i = 1 To ds_mtrlware.RowCount()
  660. ll_mtrlid = 0
  661. ls_mtrlcode = ''
  662. ls_status = ''
  663. ls_woodcode = ''
  664. ls_pcode = ''
  665. ld_noallocqty = 0
  666. ld_wareamt = 0
  667. ll_sptid = 0
  668. cnt = 0
  669. ls_mtrlcode = ds_mtrlware.Object.u_mtrldef_mtrlcode[ll_i]
  670. ll_mtrlid = ds_mtrlware.Object.mtrlid[ll_i]
  671. ls_status = ds_mtrlware.Object.status[ll_i]
  672. ls_woodcode = ds_mtrlware.Object.woodcode[ll_i]
  673. ls_pcode = ds_mtrlware.Object.pcode[ll_i]
  674. ld_noallocqty = ds_mtrlware.Object.qty[ll_i]
  675. ld_wareamt = ds_mtrlware.Object.amt[ll_i]
  676. ll_sptid = ds_mtrlware.Object.u_mtrlware_sptid[ll_i]
  677. w_sys_wait_jdt.st_msg.Text = " 正在库存重算:"+ls_mtrlcode+','+sys_option_change_status+':'+ls_status+','+sys_option_change_woodcode+':'+ls_woodcode+','+sys_option_change_pcode+':'+ls_pcode+"..." //进度信息
  678. w_sys_wait_jdt.wf_inc(ll_i)
  679. SELECT sum(Round(u_inwaremx.qty * u_inwaremx.cost,2)) ,
  680. sum(u_inwaremx.qty)
  681. INTO :ld_incamt,:ld_incqty
  682. FROM u_inwaremx,u_inware
  683. WHERE u_inwaremx.scid = u_inware.scid
  684. AND u_inwaremx.inwareid = u_inware.inwareid
  685. AND u_inware.storageid = :cur_storageid
  686. AND u_inware.balcdateint = 0
  687. AND u_inwaremx.mtrlid = :ll_mtrlid
  688. AND u_inwaremx.status = :ls_status
  689. AND u_inwaremx.woodcode = :ls_woodcode
  690. AND u_inwaremx.pcode = :ls_pcode
  691. AND u_inwaremx.sptid_cusid = :ll_sptid
  692. And u_inware.flag = 1;
  693. IF sqlca.SQLCode <> 0 THEN
  694. rslt = 0
  695. arg_msg = '查询进仓失败,物料:'+ls_mtrlcode+','+sys_option_change_status+':'+ls_status+','+sys_option_change_woodcode+':'+ls_woodcode+','+sys_option_change_pcode+':'+ls_pcode
  696. GOTO ext
  697. END IF
  698. SELECT sum(u_outwaremx.costamt) ,
  699. sum(u_outwaremx.qty)
  700. INTO :ld_desamt,:ld_desqty
  701. FROM u_outwaremx,u_outware
  702. WHERE u_outwaremx.scid = u_outware.scid
  703. AND u_outwaremx.outwareid = u_outware.outwareid
  704. AND u_outware.storageid = :cur_storageid
  705. AND u_outware.balcdateint = 0
  706. AND u_outwaremx.mtrlid = :ll_mtrlid
  707. AND u_outwaremx.status = :ls_status
  708. AND u_outwaremx.woodcode = :ls_woodcode
  709. AND u_outwaremx.pcode = :ls_pcode
  710. AND u_outwaremx.sptid = :ll_sptid
  711. And u_outware.flag = 1;
  712. IF sqlca.SQLCode <> 0 THEN
  713. rslt = 0
  714. arg_msg = '查询出仓失败,物料:'+ls_mtrlcode+','+sys_option_change_status+':'+ls_status+','+sys_option_change_woodcode+':'+ls_woodcode+','+sys_option_change_pcode+':'+ls_pcode
  715. GOTO ext
  716. END IF
  717. IF IsNull(ld_desqty) THEN ld_desqty = 0
  718. IF IsNull(ld_incqty) THEN ld_incqty = 0
  719. IF IsNull(ld_desamt) THEN ld_desamt = 0
  720. IF IsNull(ld_incamt) THEN ld_incamt = 0
  721. UPDATE u_warebalc
  722. SET balcqty = :ld_noallocqty,
  723. balcamt = :ld_wareamt,
  724. bgqty = :ld_noallocqty + :ld_desqty - :ld_incqty,
  725. bgamt = :ld_wareamt + :ld_desamt - :ld_incamt,
  726. incqty = :ld_incqty,
  727. incamt = :ld_incamt,
  728. desqty = :ld_desqty,
  729. desamt = :ld_desamt
  730. WHERE mtrlid = :ll_mtrlid
  731. AND balcdateint = 0
  732. AND Storageid = :cur_storageid
  733. AND status = :ls_status
  734. AND woodcode = :ls_woodcode
  735. AND pcode = :ls_pcode
  736. And sptid_cusid = :ll_sptid;
  737. IF sqlca.SQLCode <> 0 THEN
  738. rslt = 0
  739. arg_msg = '更新结存失败,物料:'+ls_mtrlcode+','+sys_option_change_status+':'+ls_status+','+sys_option_change_woodcode+':'+ls_woodcode+','+sys_option_change_pcode+':'+ls_pcode
  740. GOTO ext
  741. ELSEIF sqlca.SQLNRows = 0 THEN
  742. INSERT INTO u_warebalc
  743. (scid,
  744. balcdateint,
  745. storageid,
  746. mtrlid,
  747. status,
  748. woodcode,
  749. pcode,
  750. bgqty,
  751. bgamt,
  752. incqty,
  753. incamt,
  754. desqty,
  755. desamt,
  756. balcqty,
  757. balcamt,
  758. sptid_cusid)
  759. VALUES
  760. (:sys_scid,0,
  761. :cur_storageid,
  762. :ll_mtrlid,
  763. :ls_status,
  764. :ls_woodcode,
  765. :ls_pcode,
  766. :ld_noallocqty + :ld_desqty - :ld_incqty,
  767. :ld_wareamt + :ld_desamt - :ld_incamt,
  768. :ld_incqty,
  769. :ld_incamt,
  770. :ld_desqty,
  771. :ld_desamt,
  772. :ld_noallocqty,
  773. :ld_wareamt,
  774. :ll_sptid);
  775. IF sqlca.SQLCode <> 0 THEN
  776. rslt = 0
  777. arg_msg = '新加结存失败,物料:'+ls_mtrlcode+','+sys_option_change_status+':'+ls_status+','+sys_option_change_woodcode+':'+ls_woodcode+','+sys_option_change_pcode+':'+ls_pcode
  778. GOTO ext
  779. END IF
  780. END IF
  781. NEXT
  782. //END IF
  783. ext:
  784. Destroy ds_mtrlware
  785. Close(w_sys_wait_jdt)
  786. IF rslt = 0 THEN
  787. ROLLBACK;
  788. MessageBox('Error',arg_msg)
  789. RETURN
  790. ELSE
  791. COMMIT;
  792. MessageBox('系统提示','重算成功!')
  793. This.TriggerEvent('retrieve_pageretr')
  794. END IF
  795. end event
  796. event ue_update_inware_mtrlwareid();UPDATE u_inwaremx
  797. SET mtrlwareid = u_mtrlware.mtrlwareid
  798. FROM u_inware INNER JOIN
  799. u_inwaremx ON u_inware.scid = u_inwaremx.scid AND
  800. u_inware.inwareid = u_inwaremx.inwareid INNER JOIN
  801. u_mtrlware ON u_inwaremx.scid = u_mtrlware.scid AND
  802. u_inwaremx.mtrlid = u_mtrlware.mtrlid AND
  803. u_inwaremx.plancode = u_mtrlware.plancode AND
  804. u_inwaremx.status = u_mtrlware.Status AND
  805. u_inwaremx.woodcode = u_mtrlware.woodcode AND
  806. u_inwaremx.pcode = u_mtrlware.pcode AND
  807. u_inwaremx.sptid_cusid = u_mtrlware.Sptid AND
  808. u_inware.storageid = u_mtrlware.storageid AND
  809. u_inware.Dxflag = u_mtrlware.Dxflag
  810. Where (u_inware.flag = 1) And (u_inwaremx.mtrlwareid = 0);
  811. IF sqlca.SQLCode <> 0 THEN
  812. ROLLBACK;
  813. MessageBox('','失败')
  814. ELSE
  815. COMMIT;
  816. MessageBox('','成功')
  817. END IF
  818. end event
  819. public subroutine wf_hide_col ();s_hide_col s_col
  820. s_col.col_1 = 'u_mtrldef_bgamt'
  821. s_col.col_2 = 'u_mtrldef_incamt'
  822. s_col.col_3 = 'u_mtrldef_desamt'
  823. s_col.col_4 = 'u_mtrldef_balcamt'
  824. f_hide_col(123,dw_pageretr,s_col)
  825. s_hide_col s_col_mtrlsectype
  826. s_col_mtrlsectype.col_1 = 'u_mtrldef_mtrlsectype'
  827. f_hide_col(1308,dw_pageretr,s_col_mtrlsectype)
  828. s_hide_col s_col_zxmtrlmode
  829. s_col_zxmtrlmode.col_1 = 'u_mtrldef_zxmtrlmode'
  830. f_hide_col(1309,dw_pageretr,s_col_zxmtrlmode)
  831. IF dw_pageretr.DataObject = 'dw_warebalc_view' THEN
  832. s_hide_col s_col_cusname
  833. s_col_cusname.col_1 = 'u_cust_name'
  834. f_hide_col(1306,dw_pageretr,s_col_cusname)
  835. END IF
  836. end subroutine
  837. on w_warebalc_view_bk.create
  838. int iCurrent
  839. call super::create
  840. this.cb_1=create cb_1
  841. this.ddlb_storageid=create ddlb_storageid
  842. this.em_month=create em_month
  843. this.st_2=create st_2
  844. this.ddlb_1=create ddlb_1
  845. this.cb_cmp=create cb_cmp
  846. this.tv_1=create tv_1
  847. this.ddlb_mtrlorigin=create ddlb_mtrlorigin
  848. this.st_lastbalcdate=create st_lastbalcdate
  849. iCurrent=UpperBound(this.Control)
  850. this.Control[iCurrent+1]=this.cb_1
  851. this.Control[iCurrent+2]=this.ddlb_storageid
  852. this.Control[iCurrent+3]=this.em_month
  853. this.Control[iCurrent+4]=this.st_2
  854. this.Control[iCurrent+5]=this.ddlb_1
  855. this.Control[iCurrent+6]=this.cb_cmp
  856. this.Control[iCurrent+7]=this.tv_1
  857. this.Control[iCurrent+8]=this.ddlb_mtrlorigin
  858. this.Control[iCurrent+9]=this.st_lastbalcdate
  859. end on
  860. on w_warebalc_view_bk.destroy
  861. call super::destroy
  862. destroy(this.cb_1)
  863. destroy(this.ddlb_storageid)
  864. destroy(this.em_month)
  865. destroy(this.st_2)
  866. destroy(this.ddlb_1)
  867. destroy(this.cb_cmp)
  868. destroy(this.tv_1)
  869. destroy(this.ddlb_mtrlorigin)
  870. destroy(this.st_lastbalcdate)
  871. end on
  872. event ue_usual_query_retr;call super::ue_usual_query_retr;String ls_querystrpart = ''
  873. ls_newselect = Lower(ori_oldselect)
  874. IF Trim(sle_usual_query.Text) <> '' THEN
  875. IF Pos(Trim(sle_usual_query.Text),'%') = 0 THEN
  876. ls_querystrpart = ls_querystrpart + "u_mtrldef.mtrlcode like '%"+Trim(sle_usual_query.Text)+"%'"
  877. ls_querystrpart = ls_querystrpart + " or u_mtrldef.mtrlname like '%"+Trim(sle_usual_query.Text)+"%')"
  878. ELSE
  879. ls_querystrpart = ls_querystrpart + " (u_mtrldef.mtrlcode like '"+Trim(sle_usual_query.Text)+"'"
  880. ls_querystrpart = ls_querystrpart + " or u_mtrldef.mtrlname like '"+Trim(sle_usual_query.Text)+"')"
  881. END IF
  882. IF Pos(ls_newselect," where ") <> 0 THEN
  883. ls_newselect = ls_newselect+" AND ("+ls_querystrpart+')'
  884. ELSE
  885. ls_newselect = ls_newselect+" where ("+ls_querystrpart+')'
  886. END IF
  887. END IF
  888. wf_retrieveuc(dw_pageretr,ls_newselect,1)
  889. THIS.TriggerEvent('retrieve_pageretr')
  890. end event
  891. event ue_usual_query_filt;call super::ue_usual_query_filt;String obj_expr = ''
  892. IF ddlb_1.Text = '明细统计表' or ddlb_1.text='汇总统计表' THEN
  893. IF Trim(sle_usual_query.Text) <> '' THEN
  894. IF Pos(Trim(sle_usual_query.Text),'%') = 0 THEN
  895. obj_expr = obj_expr+' ( u_mtrldef_mtrlcode LIKE "%'+Trim(sle_usual_query.Text)+'%") '
  896. obj_expr = obj_expr+' or ( u_mtrldef_mtrlname LIKE "%'+Trim(sle_usual_query.Text)+'%") '
  897. ELSE
  898. obj_expr = obj_expr+' ( u_mtrldef_mtrlcode LIKE "'+Trim(sle_usual_query.Text)+'") '
  899. obj_expr = obj_expr+' or ( u_mtrldef_mtrlname LIKE "'+Trim(sle_usual_query.Text)+'") '
  900. END IF
  901. END IF
  902. ELSE
  903. IF Trim(sle_usual_query.Text) <> '' THEN
  904. IF Pos(Trim(sle_usual_query.Text),'%') = 0 THEN
  905. obj_expr = obj_expr+' ( u_mtrltype_mtrltype LIKE "%'+Trim(sle_usual_query.Text)+'%") '
  906. ELSE
  907. obj_expr = obj_expr+' ( u_mtrltype_mtrltype LIKE "'+Trim(sle_usual_query.Text)+'") '
  908. END IF
  909. END IF
  910. END IF
  911. dw_pageretr.SetFilter(obj_expr)
  912. dw_pageretr.SetRedraw(FALSE)
  913. dw_pageretr.Filter()
  914. IF dw_pageretr.RowCount() >= 1 THEN
  915. dw_pageretr.SelectRow(0,FALSE)
  916. dw_pageretr.SelectRow(1,TRUE)
  917. END IF
  918. dw_pageretr.SetRedraw(TRUE)
  919. end event
  920. event retrieve_pageretr;Boolean cb_firstpage_enabled,cb_nextpage_enabled,cb_retrieveall_enabled
  921. Boolean cb_priorpage_enabled,cb_func_enabled,cb_retrieve_enabled
  922. cb_nextpage_enabled = cb_nextpage.Enabled
  923. cb_retrieveall_enabled = cb_retrieveall.Enabled
  924. cb_func_enabled = cb_func.Enabled
  925. cb_nextpage.Enabled = False
  926. cb_retrieveall.Enabled = False
  927. cb_func.Enabled = False
  928. SetPointer(HourGlass!)
  929. dw_pageretr.Retrieve(cur_storageid_arr,ls_handtype,ls_mtrltype,cur_mtrlorigin,publ_operator)
  930. //查询最后结存日期
  931. DateTime ldt_lastbalcdate
  932. SELECT max( balcdate)
  933. INTO :ldt_lastbalcdate
  934. FROM u_warebalc
  935. WHERE (storageid = :cur_storageid OR :cur_storageid = -1)
  936. And balcdateint <> 0;
  937. IF sqlca.SQLCode <> 0 THEN
  938. SetNull(ldt_lastbalcdate)
  939. END IF
  940. IF IsNull(ldt_lastbalcdate) THEN
  941. st_lastbalcdate.Text = '没有结存记录'
  942. ELSE
  943. st_lastbalcdate.Text = '最后结存日期:'+String(ldt_lastbalcdate, 'yyyy-mm-dd')
  944. END IF
  945. SetPointer(Arrow!)
  946. cb_nextpage.Enabled = cb_nextpage_enabled
  947. cb_retrieveall.Enabled = cb_retrieveall_enabled
  948. cb_func.Enabled = cb_func_enabled
  949. end event
  950. event ue_before_open;call super::ue_before_open;if_ue_retr=true
  951. if_ue_filter=true
  952. if_ue_sort=true
  953. if_ue_sentdataout=true
  954. end event
  955. event resize;call super::resize;tv_1.height=this.height - dw_pageretr.y - 115
  956. end event
  957. event open;call super::open;wf_hide_col()
  958. //tv_1.f_maketree(-1)
  959. end event
  960. type cb_func from w_publ_pageretr_easyq`cb_func within w_warebalc_view_bk
  961. integer taborder = 140
  962. end type
  963. type cb_exit from w_publ_pageretr_easyq`cb_exit within w_warebalc_view_bk
  964. integer x = 1198
  965. integer picsize = 16
  966. toolbaralignment pic_align = alignattop!
  967. end type
  968. type sle_usual_query from w_publ_pageretr_easyq`sle_usual_query within w_warebalc_view_bk
  969. boolean visible = false
  970. integer x = 2135
  971. integer y = 188
  972. integer width = 562
  973. integer height = 96
  974. end type
  975. type cb_retrieveall from w_publ_pageretr_easyq`cb_retrieveall within w_warebalc_view_bk
  976. boolean visible = false
  977. integer x = 2478
  978. integer y = 396
  979. integer taborder = 150
  980. end type
  981. type em_pagerowno from w_publ_pageretr_easyq`em_pagerowno within w_warebalc_view_bk
  982. integer x = 2149
  983. integer y = 484
  984. end type
  985. type dw_pageretr from w_publ_pageretr_easyq`dw_pageretr within w_warebalc_view_bk
  986. integer x = 805
  987. integer y = 300
  988. integer width = 2597
  989. integer height = 1260
  990. string dataobject = "dw_warebalc_view_sum"
  991. end type
  992. type st_1 from w_publ_pageretr_easyq`st_1 within w_warebalc_view_bk
  993. boolean visible = false
  994. integer x = 1783
  995. integer y = 208
  996. integer width = 343
  997. string text = "编码/名称含"
  998. alignment alignment = right!
  999. end type
  1000. type cb_nextpage from w_publ_pageretr_easyq`cb_nextpage within w_warebalc_view_bk
  1001. boolean visible = false
  1002. integer x = 2985
  1003. integer y = 396
  1004. integer taborder = 180
  1005. end type
  1006. type ddlb_yl from w_publ_pageretr_easyq`ddlb_yl within w_warebalc_view_bk
  1007. integer x = 1655
  1008. integer y = 40
  1009. integer taborder = 80
  1010. end type
  1011. type cbx_yl from w_publ_pageretr_easyq`cbx_yl within w_warebalc_view_bk
  1012. integer x = 1445
  1013. integer y = 44
  1014. end type
  1015. event cbx_yl::clicked;call super::clicked;if this.checked then
  1016. dw_edit_mode=true
  1017. dw_pageretr.selectrow(0,false)
  1018. else
  1019. dw_edit_mode=false
  1020. end if
  1021. end event
  1022. type cb_psetup from w_publ_pageretr_easyq`cb_psetup within w_warebalc_view_bk
  1023. integer x = 782
  1024. integer taborder = 130
  1025. end type
  1026. type cb_2 from w_publ_pageretr_easyq`cb_2 within w_warebalc_view_bk
  1027. integer x = 631
  1028. integer taborder = 70
  1029. end type
  1030. type cb_refresh from w_publ_pageretr_easyq`cb_refresh within w_warebalc_view_bk
  1031. integer taborder = 90
  1032. end type
  1033. event cb_refresh::clicked;dw_pageretr.SetRedraw(FALSE)
  1034. parent.triggerevent('retrieve_pageretr')
  1035. IF cur_storageid = -1 THEN
  1036. dw_pageretr.Object.Title.Text = '仓库结存预览表'
  1037. ELSE
  1038. dw_pageretr.Object.Title.Text = Left(ddlb_storageid.Text,Pos(ddlb_storageid.Text,'[') - 1)+'仓库结存预览表'
  1039. END IF
  1040. dw_pageretr.SetRedraw(TRUE)
  1041. IF retrieve_all THEN
  1042. THIS.TriggerEvent("ue_usual_query_filt")
  1043. END IF
  1044. end event
  1045. type cb_help from w_publ_pageretr_easyq`cb_help within w_warebalc_view_bk
  1046. integer x = 1047
  1047. end type
  1048. type cb_copyself from w_publ_pageretr_easyq`cb_copyself within w_warebalc_view_bk
  1049. end type
  1050. type gb_2 from w_publ_pageretr_easyq`gb_2 within w_warebalc_view_bk
  1051. end type
  1052. type ln_bar from w_publ_pageretr_easyq`ln_bar within w_warebalc_view_bk
  1053. end type
  1054. type ln_bar2 from w_publ_pageretr_easyq`ln_bar2 within w_warebalc_view_bk
  1055. end type
  1056. type r_bar from w_publ_pageretr_easyq`r_bar within w_warebalc_view_bk
  1057. integer x = 2578
  1058. end type
  1059. type ln_1 from w_publ_pageretr_easyq`ln_1 within w_warebalc_view_bk
  1060. end type
  1061. type ln_2 from w_publ_pageretr_easyq`ln_2 within w_warebalc_view_bk
  1062. end type
  1063. type cb_1 from uo_imflatbutton within w_warebalc_view_bk
  1064. integer x = 302
  1065. integer width = 165
  1066. integer height = 164
  1067. integer taborder = 100
  1068. boolean bringtotop = true
  1069. string text = "结存"
  1070. string normalpicname = "update2.BMP"
  1071. integer picsize = 16
  1072. toolbaralignment pic_align = alignattop!
  1073. boolean border = false
  1074. end type
  1075. event clicked;call super::clicked;IF NOT f_power_ind(75) THEN
  1076. MessageBox('提示','你没有使用权限!',information!,ok!)
  1077. RETURN
  1078. END IF
  1079. IF cur_storageid = -1 THEN
  1080. MessageBox("提示","请选择仓库结存",information!,ok!)
  1081. RETURN
  1082. END IF
  1083. balcdate = DateTime(Date(em_month.Text),Time('23:59:59'))
  1084. IF MessageBox ('询问',"是否确定要把当前日仓库进行结存操作吗?"+'~n'+&
  1085. '结存时间: '+String(balcdate,'YYYY-MM-DD HH:MM:SS')+',结存过程中不能进行其它操作!',Question!,YesNo! ) = 2 THEN RETURN
  1086. w_sys_wait.Show()
  1087. String arg_msg = '',err_msg = ''
  1088. uf_warebalc(1,0,cur_storageid,balcdate,arg_msg)
  1089. w_sys_wait.Hide()
  1090. MessageBox('提示',arg_msg,information!,ok!)
  1091. cb_refresh.TriggerEvent(Clicked!)
  1092. end event
  1093. type ddlb_storageid from uo_ddlb_storageid within w_warebalc_view_bk
  1094. integer x = 494
  1095. integer y = 192
  1096. integer width = 613
  1097. integer height = 1108
  1098. integer taborder = 20
  1099. boolean bringtotop = true
  1100. end type
  1101. event constructor;call super::constructor;cur_storageid = this.uo_storageid
  1102. cur_storageid_arr = this.uo_storageid_arr
  1103. end event
  1104. event selectionchanged;call super::selectionchanged;cur_storageid = this.uo_storageid
  1105. cur_storageid_arr = this.uo_storageid_arr
  1106. cb_refresh.triggerevent(clicked!)
  1107. end event
  1108. type em_month from editmask within w_warebalc_view_bk
  1109. integer x = 1371
  1110. integer y = 188
  1111. integer width = 434
  1112. integer height = 88
  1113. integer taborder = 100
  1114. boolean bringtotop = true
  1115. integer textsize = -9
  1116. integer weight = 400
  1117. fontcharset fontcharset = gb2312charset!
  1118. fontpitch fontpitch = variable!
  1119. string facename = "宋体"
  1120. long textcolor = 33554432
  1121. string text = "none"
  1122. alignment alignment = center!
  1123. borderstyle borderstyle = stylelowered!
  1124. maskdatatype maskdatatype = datemask!
  1125. string mask = "yyyy-mm-dd"
  1126. boolean spin = true
  1127. end type
  1128. event constructor;this.text = string(today(),'yyyy-mm-dd')
  1129. end event
  1130. event rbuttondown;s_calender_arg s_calender
  1131. s_calender.PointerX = THIS.PointerX()
  1132. s_calender.PointerY = THIS.PointerY()
  1133. s_calender.X = THIS.X
  1134. s_calender.Y = THIS.Y
  1135. OpenWithParm(w_calendar,s_calender)
  1136. THIS.Text = String(id_date_selected)
  1137. end event
  1138. type st_2 from statictext within w_warebalc_view_bk
  1139. integer x = 1120
  1140. integer y = 212
  1141. integer width = 242
  1142. integer height = 48
  1143. boolean bringtotop = true
  1144. integer textsize = -9
  1145. integer weight = 400
  1146. fontcharset fontcharset = gb2312charset!
  1147. fontpitch fontpitch = variable!
  1148. string facename = "宋体"
  1149. long textcolor = 33554432
  1150. long backcolor = 134217739
  1151. string text = "结存日期"
  1152. alignment alignment = right!
  1153. boolean focusrectangle = false
  1154. end type
  1155. type ddlb_1 from dropdownlistbox within w_warebalc_view_bk
  1156. integer x = 1957
  1157. integer y = 44
  1158. integer width = 745
  1159. integer height = 1100
  1160. integer taborder = 90
  1161. boolean bringtotop = true
  1162. integer textsize = -9
  1163. integer weight = 400
  1164. fontcharset fontcharset = gb2312charset!
  1165. fontpitch fontpitch = variable!
  1166. string facename = "宋体"
  1167. long textcolor = 33554432
  1168. string text = "汇总统计表"
  1169. boolean sorted = false
  1170. boolean vscrollbar = true
  1171. string item[] = {"汇总统计表","产品明细统计表","客户产品统计表","分类统计表","汇总统计表(设定售价)"}
  1172. borderstyle borderstyle = stylelowered!
  1173. end type
  1174. event selectionchanged;dw_pageretr.SetRedraw(False)
  1175. dw_pageretr.uf_save_profile_layout()
  1176. IF ddlb_1.Text = '客户产品统计表' THEN
  1177. dw_pageretr.DataObject = 'dw_warebalc_view'
  1178. ELSEIF ddlb_1.Text = '产品明细统计表' THEN
  1179. dw_pageretr.DataObject = 'dw_warebalc_view_sum_1'
  1180. ELSEIF ddlb_1.Text = '汇总统计表' THEN
  1181. dw_pageretr.DataObject = 'dw_warebalc_view_sum'
  1182. ELSEIF ddlb_1.Text = '分类统计表' THEN
  1183. dw_pageretr.DataObject = 'dw_warebalc_view_2'
  1184. ELSEIF ddlb_1.Text = '汇总统计表(设定售价)' THEN
  1185. dw_pageretr.DataObject = 'dw_warebalc_view_sum_saleprice'
  1186. END IF
  1187. dw_pageretr.SetTransObject(sqlca)
  1188. dw_pageretr.ins_INIfile_name = sys_inifilename
  1189. dw_pageretr.ins_opemp = publ_operator
  1190. dw_pageretr.cardw_empid = sys_empid
  1191. dw_pageretr.cur_DataObject = dw_pageretr.DataObject
  1192. dw_pageretr.uf_read_profile_layout()
  1193. wf_hide_col()
  1194. //this.TriggerEvent('retrieve_pageretr')
  1195. f_title_change(dw_pageretr)
  1196. dw_pageretr.SetRedraw(True)
  1197. cb_refresh.TriggerEvent(Clicked!)
  1198. end event
  1199. type cb_cmp from uo_imflatbutton within w_warebalc_view_bk
  1200. integer x = 466
  1201. integer width = 165
  1202. integer height = 164
  1203. integer taborder = 200
  1204. boolean bringtotop = true
  1205. string text = "重算"
  1206. string normalpicname = "update.bmp"
  1207. integer picsize = 16
  1208. toolbaralignment pic_align = alignattop!
  1209. boolean border = false
  1210. end type
  1211. event clicked;call super::clicked;m_Dfc_Control_PopupMenu dmPopupMenu
  1212. String menustr
  1213. menustr = "Text=按上期结存重算本期结余~tEvent=ue_cmp_amt2"
  1214. menustr = menustr + "|" + "Text=按库存数重算本期期初~tEvent=ue_cmp_mtrlware"
  1215. menustr = menustr + "|" + "Text=超级重算~tEvent=ue_cmp"
  1216. menustr = menustr + "|" + "Text=-"
  1217. menustr = menustr + "|" + "Text=更新进仓单明细库存ID~tEvent=ue_update_inware_mtrlwareid"
  1218. IF Len(Trim(menustr)) <> 0 THEN
  1219. dmPopupMenu = CREATE m_Dfc_Control_PopupMenu
  1220. dmPopupMenu.mf_BuildMenu(THIS, menustr)
  1221. dmPopupMenu.mf_PopMenu()
  1222. DESTROY dmPopupMenu
  1223. END IF
  1224. end event
  1225. type tv_1 from uo_tv_mtrltype within w_warebalc_view_bk
  1226. integer y = 300
  1227. integer width = 800
  1228. integer height = 1312
  1229. integer taborder = 110
  1230. boolean bringtotop = true
  1231. integer textsize = -9
  1232. fontcharset fontcharset = gb2312charset!
  1233. fontfamily fontfamily = anyfont!
  1234. string facename = "宋体"
  1235. end type
  1236. event selectionchanged;call super::selectionchanged;ls_handtype = THIS.uo_cur_info.handtype
  1237. ls_mtrltype = THIS.uo_cur_info.mtrltype
  1238. IF ls_handtype <> '' THEN
  1239. ls_mtrltype = '%'+ls_handtype+'%'
  1240. ls_handtype = ls_handtype+'%'
  1241. ELSE
  1242. ls_mtrltype = ""
  1243. END IF
  1244. PARENT.TriggerEvent('retrieve_pageretr')
  1245. end event
  1246. type ddlb_mtrlorigin from uo_ddlb_mtrlorigin within w_warebalc_view_bk
  1247. integer y = 192
  1248. integer taborder = 110
  1249. boolean bringtotop = true
  1250. integer uo_mtrlorigin = -1
  1251. end type
  1252. event selectionchanged;call super::selectionchanged;cur_mtrlorigin = this.uo_mtrlorigin
  1253. cb_refresh.TriggerEvent(Clicked!)
  1254. //tv_1.f_maketree(-1)
  1255. end event
  1256. type st_lastbalcdate from statictext within w_warebalc_view_bk
  1257. integer x = 1861
  1258. integer y = 212
  1259. integer width = 1019
  1260. integer height = 48
  1261. boolean bringtotop = true
  1262. integer textsize = -9
  1263. integer weight = 400
  1264. fontcharset fontcharset = gb2312charset!
  1265. fontpitch fontpitch = variable!
  1266. string facename = "宋体"
  1267. long textcolor = 33554432
  1268. long backcolor = 134217739
  1269. string text = "最后结存日期"
  1270. boolean focusrectangle = false
  1271. end type