w_modify_rate.srw 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515
  1. $PBExportHeader$w_modify_rate.srw
  2. forward
  3. global type w_modify_rate from w_publ_base
  4. end type
  5. type cb_1 from uo_imflatbutton within w_modify_rate
  6. end type
  7. type dw_1 from datawindow within w_modify_rate
  8. end type
  9. type sle_1 from singlelineedit within w_modify_rate
  10. end type
  11. type cb_2 from uo_imflatbutton within w_modify_rate
  12. end type
  13. type p_1 from picture within w_modify_rate
  14. end type
  15. type mle_1 from multilineedit within w_modify_rate
  16. end type
  17. type st_1 from statictext within w_modify_rate
  18. end type
  19. type st_2 from statictext within w_modify_rate
  20. end type
  21. type ddlb_credtype from dropdownlistbox within w_modify_rate
  22. end type
  23. end forward
  24. global type w_modify_rate from w_publ_base
  25. integer width = 2423
  26. integer height = 1296
  27. string title = "期末调汇"
  28. boolean minbox = false
  29. long backcolor = 80269524
  30. cb_1 cb_1
  31. dw_1 dw_1
  32. sle_1 sle_1
  33. cb_2 cb_2
  34. p_1 p_1
  35. mle_1 mle_1
  36. st_1 st_1
  37. st_2 st_2
  38. ddlb_credtype ddlb_credtype
  39. end type
  40. global w_modify_rate w_modify_rate
  41. on w_modify_rate.create
  42. int iCurrent
  43. call super::create
  44. this.cb_1=create cb_1
  45. this.dw_1=create dw_1
  46. this.sle_1=create sle_1
  47. this.cb_2=create cb_2
  48. this.p_1=create p_1
  49. this.mle_1=create mle_1
  50. this.st_1=create st_1
  51. this.st_2=create st_2
  52. this.ddlb_credtype=create ddlb_credtype
  53. iCurrent=UpperBound(this.Control)
  54. this.Control[iCurrent+1]=this.cb_1
  55. this.Control[iCurrent+2]=this.dw_1
  56. this.Control[iCurrent+3]=this.sle_1
  57. this.Control[iCurrent+4]=this.cb_2
  58. this.Control[iCurrent+5]=this.p_1
  59. this.Control[iCurrent+6]=this.mle_1
  60. this.Control[iCurrent+7]=this.st_1
  61. this.Control[iCurrent+8]=this.st_2
  62. this.Control[iCurrent+9]=this.ddlb_credtype
  63. end on
  64. on w_modify_rate.destroy
  65. call super::destroy
  66. destroy(this.cb_1)
  67. destroy(this.dw_1)
  68. destroy(this.sle_1)
  69. destroy(this.cb_2)
  70. destroy(this.p_1)
  71. destroy(this.mle_1)
  72. destroy(this.st_1)
  73. destroy(this.st_2)
  74. destroy(this.ddlb_credtype)
  75. end on
  76. event open;call super::open;dw_1.settransobject(sqlca)
  77. dw_1.retrieve(sys_accsetid)
  78. end event
  79. type cb_func from w_publ_base`cb_func within w_modify_rate
  80. boolean visible = false
  81. integer x = 165
  82. integer y = 200
  83. boolean enabled = false
  84. end type
  85. type cb_exit from w_publ_base`cb_exit within w_modify_rate
  86. integer x = 1893
  87. integer y = 1048
  88. string text = "取消"
  89. end type
  90. type cb_1 from uo_imflatbutton within w_modify_rate
  91. integer x = 1893
  92. integer y = 936
  93. integer width = 311
  94. integer height = 96
  95. integer taborder = 30
  96. boolean bringtotop = true
  97. boolean default = true
  98. string normalpicname = "ok.bmp"
  99. end type
  100. event clicked;Long i,j
  101. Long ll_row
  102. Long ll_ch_cnt
  103. Long ll_moneyid
  104. String ls_subid
  105. Int li_detailflag
  106. DateTime null_dt
  107. String arg_msg
  108. String ls_subid_f,ls_subid_arr[]
  109. Decimal ld_rate_arr[],ld_rate_old_arr[],ld_rate_new_arr[]
  110. Decimal ld_rate_old,ld_rate_new
  111. String ls_moneyname,ls_moneyname_arr[]
  112. Long ll_mx
  113. Int li_credtype
  114. String tmp_credtype
  115. li_credtype = f_check_credtype(sys_accsetid)
  116. IF li_credtype = 0 THEN
  117. MessageBox(publ_operator,'查询凭证字数目失败')
  118. RETURN
  119. ELSEIF li_credtype = 2 THEN
  120. tmp_credtype = Trim(ddlb_credtype.Text)
  121. IF tmp_credtype = '' THEN
  122. MessageBox(publ_operator,'请选择凭证字')
  123. RETURN
  124. END IF
  125. END IF
  126. uo_credence uo_cred
  127. uo_cred = CREATE uo_credence
  128. datastore credmx_ds
  129. credmx_ds = CREATE datastore
  130. credmx_ds.DataObject = "ds_credencemx"
  131. credmx_ds.SetTransObject(sqlca)
  132. SetNull(null_dt)
  133. dw_1.AcceptText()
  134. FOR i = 1 TO dw_1.RowCount()
  135. IF dw_1.Object.rate[i] <> dw_1.Object.newrate[i] THEN
  136. ll_ch_cnt++
  137. END IF
  138. NEXT
  139. IF ll_ch_cnt = 0 THEN RETURN
  140. ls_subid = Trim(sle_1.Text)
  141. IF ls_subid = '' THEN
  142. MessageBox('提示','请选择汇兑损益科目')
  143. RETURN
  144. END IF
  145. SELECT detailflag INTO :li_detailflag
  146. FROM cw_subject
  147. WHERE accsetid = :sys_accsetid
  148. AND subid = :ls_subid;
  149. IF sqlca.SQLCode = -1 THEN
  150. MessageBox('提示','查询科目:'+ls_subid+',失败,'+sqlca.SQLErrText)
  151. RETURN
  152. ELSEIF sqlca.SQLCode = 100 THEN
  153. MessageBox('提示','科目:'+ls_subid+',资料不存在,请检查')
  154. RETURN
  155. END IF
  156. IF li_detailflag = 0 THEN
  157. MessageBox('提示','科目:'+ls_subid+',不是明细科目,不能操作')
  158. RETURN
  159. END IF
  160. FOR i = 1 TO dw_1.RowCount()
  161. IF dw_1.Object.rate[i] = dw_1.Object.newrate[i] THEN CONTINUE
  162. ll_moneyid = dw_1.Object.moneyid[i]
  163. ld_rate_old = dw_1.Object.newrate[i]
  164. ld_rate_new = dw_1.Object.rate[i]
  165. ls_moneyname = dw_1.Object.Name[i]
  166. DECLARE cur_sub CURSOR FOR
  167. SELECT cw_subject.subid
  168. FROM cw_subject
  169. WHERE accsetid = :sys_accsetid
  170. AND moneyid = :ll_moneyid
  171. AND detailflag = 1;
  172. OPEN cur_sub;
  173. FETCH cur_sub INTO :ls_subid_f;
  174. DO WHILE sqlca.SQLCode = 0
  175. ll_mx++
  176. ls_subid_arr[ll_mx] = ls_subid_f
  177. ld_rate_arr[ll_mx] = ld_rate_new - ld_rate_old
  178. ld_rate_new_arr[ll_mx] = ld_rate_new
  179. ld_rate_old_arr[ll_mx] = ld_rate_old
  180. ls_moneyname_arr[ll_mx] = ls_moneyname
  181. FETCH cur_sub INTO :ls_subid_f;
  182. LOOP
  183. CLOSE cur_sub;
  184. NEXT
  185. IF ll_mx = 0 THEN
  186. MessageBox('提示','外币没有核算科目,操作取消,请检查')
  187. RETURN
  188. END IF
  189. Decimal ld_edebit,ld_ecredit,ld_balance_1,ld_balance_2
  190. Decimal ld_sum_balance,ld_balance
  191. Int li_dcflag
  192. FOR j = 1 TO ll_mx
  193. ld_edebit = 0
  194. ld_ecredit = 0
  195. ld_balance_1 = 0
  196. ld_balance_2 = 0
  197. li_dcflag = 0
  198. SELECT dcflag
  199. INTO :li_dcflag
  200. FROM cw_subject
  201. WHERE cw_subject.accsetid = :sys_accsetid
  202. AND cw_subject.subid = :ls_subid_arr[j];
  203. IF sqlca.SQLCode <> 0 THEN
  204. MessageBox('提示','查询科目:'+ls_subid_arr[j]+',余额方向失败,'+sqlca.SQLErrText)
  205. RETURN
  206. END IF
  207. SELECT cw_Balance.erawdebit,
  208. cw_Balance.erawcredit
  209. INTO :ld_edebit,
  210. :ld_ecredit
  211. FROM cw_Balance
  212. WHERE cw_Balance.accsetid = :sys_accsetid
  213. AND cw_Balance.YearMon = :sys_curyearmon
  214. AND cw_Balance.subid = :ls_subid_arr[j];
  215. IF sqlca.SQLCode = -1 THEN
  216. MessageBox('提示','查询科目:'+ls_subid_arr[j]+',期末余额失败,'+sqlca.SQLErrText)
  217. RETURN
  218. ELSEIF sqlca.SQLCode = 100 THEN
  219. CONTINUE
  220. END IF
  221. IF ld_edebit = 0 AND ld_ecredit = 0 THEN CONTINUE
  222. IF li_dcflag = 1 THEN
  223. ld_balance_1 = round((ld_edebit - ld_ecredit) * ld_rate_arr[j],2)
  224. ld_balance_2 = 0
  225. ld_balance = ld_edebit - ld_ecredit
  226. ELSE
  227. ld_balance_1 = 0
  228. ld_balance_2 = round((ld_ecredit - ld_edebit) * ld_rate_arr[j],2)
  229. ld_balance = ld_ecredit - ld_edebit
  230. END IF
  231. ld_sum_balance = ld_sum_balance + ld_balance_1 - ld_balance_2
  232. ll_row = credmx_ds.InsertRow(0)
  233. credmx_ds.Object.fuluno[ll_row] = ll_row
  234. credmx_ds.Object.subid[ll_row] = ls_subid_arr[j]
  235. credmx_ds.Object.brief[ll_row] = '调汇-'+ls_moneyname_arr[j]+',从:'+String(ld_rate_old_arr[j],'#0.00###')+'变成:'+String(ld_rate_new_arr[j],'#0.00###')+',调汇前原币余额:'+String(ld_balance,'#0.00###')
  236. credmx_ds.Object.rate[ll_row] = ld_rate_new_arr[j]
  237. credmx_ds.Object.rawdebit[ll_row] = 0.00
  238. credmx_ds.Object.rawcredit[ll_row] = 0.00
  239. credmx_ds.Object.debit[ll_row] = ld_balance_1
  240. credmx_ds.Object.credit[ll_row] = ld_balance_2
  241. credmx_ds.Object.amount[ll_row] = 0.00
  242. credmx_ds.Object.price[ll_row] = 0.00
  243. credmx_ds.Object.deptid[ll_row] = 0
  244. credmx_ds.Object.itemid[ll_row] = 0
  245. credmx_ds.Object.READONLY[ll_row] = 0
  246. credmx_ds.Object.billdate[ll_row] = null_dt
  247. credmx_ds.Object.billid[ll_row] = 0
  248. credmx_ds.Object.billno[ll_row] = ''
  249. credmx_ds.Object.cropbillid[ll_row] = 0
  250. NEXT
  251. credmx_ds.AcceptText()
  252. IF credmx_ds.RowCount() = 0 THEN
  253. MessageBox('提示','没有可操作科目,操作取消,请检查')
  254. RETURN
  255. END IF
  256. ll_row = credmx_ds.InsertRow(0)
  257. credmx_ds.Object.fuluno[ll_row] = ll_row
  258. credmx_ds.Object.subid[ll_row] = ls_subid
  259. credmx_ds.Object.brief[ll_row] = '调汇'
  260. credmx_ds.Object.rate[ll_row] = 0.00
  261. credmx_ds.Object.rawdebit[ll_row] = 0.00
  262. credmx_ds.Object.rawcredit[ll_row] = 0.00
  263. credmx_ds.Object.debit[ll_row] = 0
  264. credmx_ds.Object.credit[ll_row] = ld_sum_balance
  265. credmx_ds.Object.amount[ll_row] = 0.00
  266. credmx_ds.Object.price[ll_row] = 0.00
  267. credmx_ds.Object.deptid[ll_row] = 0
  268. credmx_ds.Object.itemid[ll_row] = 0
  269. credmx_ds.Object.READONLY[ll_row] = 0
  270. credmx_ds.Object.billdate[ll_row] = null_dt
  271. credmx_ds.Object.billid[ll_row] = 0
  272. credmx_ds.Object.billno[ll_row] = ''
  273. credmx_ds.Object.cropbillid[ll_row] = 0
  274. //生成凭证
  275. IF uo_cred.newbegin() = 0 THEN
  276. MessageBox('提示',arg_msg)
  277. RETURN
  278. END IF
  279. IF String(credmx_ds.Object.sum_debit[1],'###0.00') <> String(credmx_ds.Object.sum_credit[1],'###0.00') THEN
  280. MessageBox('提示','借、贷方金额不等!')
  281. RETURN
  282. END IF
  283. uo_cred.subaccsetid = 0 //子帐ID
  284. uo_cred.credno = uo_cred.get_new_credno(0,tmp_credtype,sys_curyearmon,arg_msg) // 编号
  285. uo_cred.creddate = f_rst_mon_1st(3,sys_curyearmon) // 日期
  286. uo_cred.billnumber = 0 //附件
  287. uo_cred.credtype = tmp_credtype //凭证字
  288. uo_cred.Readtype = 0
  289. uo_cred.relevantbillid = sys_curyearmon
  290. uo_cred.cmonth = sys_curyearmon
  291. uo_cred.ifauto = 0
  292. credmx_ds.AcceptText()
  293. FOR i = 1 TO credmx_ds.RowCount()
  294. IF uo_cred.acceptmx(credmx_ds.Object.no[i],credmx_ds.Object.subid[i],&
  295. credmx_ds.Object.brief[i],credmx_ds.Object.rate[i],&
  296. credmx_ds.Object.rawdebit[i],credmx_ds.Object.rawcredit[i],&
  297. credmx_ds.Object.debit[i],credmx_ds.Object.credit[i],&
  298. credmx_ds.Object.amount[i],credmx_ds.Object.price[i],&
  299. credmx_ds.Object.deptid[i],credmx_ds.Object.itemid[i],&
  300. credmx_ds.Object.billdate[i],credmx_ds.Object.billid[i],&
  301. credmx_ds.Object.billno[i],credmx_ds.Object.cropbillid[i],&
  302. credmx_ds.Object.READONLY[i],0,0,0,arg_msg) = 0 THEN
  303. MessageBox('提示',arg_msg)
  304. RETURN
  305. END IF
  306. NEXT
  307. IF uo_cred.Save('机制',arg_msg,FALSE) = 0 THEN
  308. MessageBox('提示',arg_msg)
  309. RETURN
  310. END IF
  311. IF dw_1.UPDATE() = -1 THEN
  312. ROLLBACK;
  313. MessageBox ('提示',"保存新汇率操作失败!",Exclamation!,OK!)
  314. RETURN
  315. ELSE
  316. COMMIT;
  317. END IF
  318. MessageBox('提示','调汇成功,并产生一张记帐凭证。')
  319. end event
  320. type dw_1 from datawindow within w_modify_rate
  321. integer x = 603
  322. integer y = 192
  323. integer width = 1705
  324. integer height = 600
  325. integer taborder = 20
  326. boolean bringtotop = true
  327. string dataobject = "dw_modify_rate"
  328. boolean livescroll = true
  329. borderstyle borderstyle = stylelowered!
  330. end type
  331. type sle_1 from singlelineedit within w_modify_rate
  332. integer x = 603
  333. integer y = 1048
  334. integer width = 882
  335. integer height = 92
  336. integer taborder = 50
  337. boolean bringtotop = true
  338. integer textsize = -9
  339. integer weight = 400
  340. fontcharset fontcharset = gb2312charset!
  341. fontpitch fontpitch = variable!
  342. string facename = "宋体"
  343. long textcolor = 33554432
  344. boolean autohscroll = false
  345. boolean displayonly = true
  346. borderstyle borderstyle = stylelowered!
  347. end type
  348. type cb_2 from uo_imflatbutton within w_modify_rate
  349. integer x = 1522
  350. integer y = 1064
  351. integer width = 114
  352. integer height = 80
  353. integer taborder = 60
  354. boolean bringtotop = true
  355. string text = "..."
  356. end type
  357. event clicked;s_subject s_rt_subject
  358. openwithparm(w_subjectdef_edit,0)
  359. s_rt_subject=message.powerobjectparm
  360. if s_rt_subject.subid='' then return
  361. sle_1.text=s_rt_subject.subid
  362. end event
  363. type p_1 from picture within w_modify_rate
  364. integer x = 37
  365. integer y = 104
  366. integer width = 544
  367. integer height = 836
  368. boolean bringtotop = true
  369. boolean originalsize = true
  370. string picturename = "graphics\modify_rate.bmp"
  371. boolean border = true
  372. borderstyle borderstyle = stylelowered!
  373. boolean focusrectangle = false
  374. end type
  375. type mle_1 from multilineedit within w_modify_rate
  376. integer x = 603
  377. integer y = 28
  378. integer width = 1143
  379. integer height = 164
  380. integer taborder = 40
  381. boolean bringtotop = true
  382. integer textsize = -9
  383. integer weight = 400
  384. fontcharset fontcharset = gb2312charset!
  385. fontpitch fontpitch = variable!
  386. string facename = "宋体"
  387. long textcolor = 16711680
  388. long backcolor = 80269524
  389. string text = " 以下表中所列汇率与期末汇率是否一致, 如果不一致,在调汇前你需要先修改他们。"
  390. boolean border = false
  391. end type
  392. type st_1 from statictext within w_modify_rate
  393. integer x = 603
  394. integer y = 956
  395. integer width = 594
  396. integer height = 48
  397. boolean bringtotop = true
  398. integer textsize = -9
  399. integer weight = 700
  400. fontcharset fontcharset = gb2312charset!
  401. fontpitch fontpitch = variable!
  402. string facename = "宋体"
  403. long textcolor = 16711680
  404. long backcolor = 67108864
  405. string text = "汇兑损益科目代码:"
  406. alignment alignment = right!
  407. boolean focusrectangle = false
  408. end type
  409. type st_2 from statictext within w_modify_rate
  410. integer x = 603
  411. integer y = 856
  412. integer width = 594
  413. integer height = 48
  414. boolean bringtotop = true
  415. integer textsize = -9
  416. integer weight = 700
  417. fontcharset fontcharset = gb2312charset!
  418. fontpitch fontpitch = variable!
  419. string facename = "宋体"
  420. long textcolor = 16711680
  421. long backcolor = 67108864
  422. string text = "凭证字:"
  423. alignment alignment = right!
  424. boolean focusrectangle = false
  425. end type
  426. type ddlb_credtype from dropdownlistbox within w_modify_rate
  427. integer x = 1193
  428. integer y = 836
  429. integer width = 549
  430. integer height = 300
  431. integer taborder = 30
  432. boolean bringtotop = true
  433. integer textsize = -9
  434. integer weight = 700
  435. fontcharset fontcharset = gb2312charset!
  436. fontpitch fontpitch = variable!
  437. string facename = "宋体"
  438. long textcolor = 33554432
  439. borderstyle borderstyle = stylelowered!
  440. end type
  441. event constructor;String ls_credtype
  442. DECLARE cur_credtype CURSOR FOR
  443. SELECT cw_Credenceword.Credenceword
  444. FROM cw_Credenceword
  445. Where accsetid = :sys_accsetid;
  446. OPEN cur_credtype;
  447. FETCH cur_credtype INTO :ls_credtype;
  448. DO WHILE sqlca.SQLCode = 0
  449. THIS.AddItem(ls_credtype)
  450. FETCH cur_credtype INTO :ls_credtype;
  451. LOOP
  452. CLOSE cur_credtype;
  453. end event