$PBExportHeader$w_modify_rate.srw forward global type w_modify_rate from w_publ_base end type type cb_1 from uo_imflatbutton within w_modify_rate end type type dw_1 from datawindow within w_modify_rate end type type sle_1 from singlelineedit within w_modify_rate end type type cb_2 from uo_imflatbutton within w_modify_rate end type type p_1 from picture within w_modify_rate end type type mle_1 from multilineedit within w_modify_rate end type type st_1 from statictext within w_modify_rate end type type st_2 from statictext within w_modify_rate end type type ddlb_credtype from dropdownlistbox within w_modify_rate end type end forward global type w_modify_rate from w_publ_base integer width = 2423 integer height = 1296 string title = "期末调汇" boolean minbox = false long backcolor = 80269524 cb_1 cb_1 dw_1 dw_1 sle_1 sle_1 cb_2 cb_2 p_1 p_1 mle_1 mle_1 st_1 st_1 st_2 st_2 ddlb_credtype ddlb_credtype end type global w_modify_rate w_modify_rate on w_modify_rate.create int iCurrent call super::create this.cb_1=create cb_1 this.dw_1=create dw_1 this.sle_1=create sle_1 this.cb_2=create cb_2 this.p_1=create p_1 this.mle_1=create mle_1 this.st_1=create st_1 this.st_2=create st_2 this.ddlb_credtype=create ddlb_credtype iCurrent=UpperBound(this.Control) this.Control[iCurrent+1]=this.cb_1 this.Control[iCurrent+2]=this.dw_1 this.Control[iCurrent+3]=this.sle_1 this.Control[iCurrent+4]=this.cb_2 this.Control[iCurrent+5]=this.p_1 this.Control[iCurrent+6]=this.mle_1 this.Control[iCurrent+7]=this.st_1 this.Control[iCurrent+8]=this.st_2 this.Control[iCurrent+9]=this.ddlb_credtype end on on w_modify_rate.destroy call super::destroy destroy(this.cb_1) destroy(this.dw_1) destroy(this.sle_1) destroy(this.cb_2) destroy(this.p_1) destroy(this.mle_1) destroy(this.st_1) destroy(this.st_2) destroy(this.ddlb_credtype) end on event open;call super::open;dw_1.settransobject(sqlca) dw_1.retrieve(sys_accsetid) end event type cb_func from w_publ_base`cb_func within w_modify_rate boolean visible = false integer x = 165 integer y = 200 boolean enabled = false end type type cb_exit from w_publ_base`cb_exit within w_modify_rate integer x = 1893 integer y = 1048 string text = "取消" end type type cb_1 from uo_imflatbutton within w_modify_rate integer x = 1893 integer y = 936 integer width = 311 integer height = 96 integer taborder = 30 boolean bringtotop = true boolean default = true string normalpicname = "ok.bmp" end type event clicked;Long i,j Long ll_row Long ll_ch_cnt Long ll_moneyid String ls_subid Int li_detailflag DateTime null_dt String arg_msg String ls_subid_f,ls_subid_arr[] Decimal ld_rate_arr[],ld_rate_old_arr[],ld_rate_new_arr[] Decimal ld_rate_old,ld_rate_new String ls_moneyname,ls_moneyname_arr[] Long ll_mx Int li_credtype String tmp_credtype li_credtype = f_check_credtype(sys_accsetid) IF li_credtype = 0 THEN MessageBox(publ_operator,'查询凭证字数目失败') RETURN ELSEIF li_credtype = 2 THEN tmp_credtype = Trim(ddlb_credtype.Text) IF tmp_credtype = '' THEN MessageBox(publ_operator,'请选择凭证字') RETURN END IF END IF uo_credence uo_cred uo_cred = CREATE uo_credence datastore credmx_ds credmx_ds = CREATE datastore credmx_ds.DataObject = "ds_credencemx" credmx_ds.SetTransObject(sqlca) SetNull(null_dt) dw_1.AcceptText() FOR i = 1 TO dw_1.RowCount() IF dw_1.Object.rate[i] <> dw_1.Object.newrate[i] THEN ll_ch_cnt++ END IF NEXT IF ll_ch_cnt = 0 THEN RETURN ls_subid = Trim(sle_1.Text) IF ls_subid = '' THEN MessageBox('提示','请选择汇兑损益科目') RETURN END IF SELECT detailflag INTO :li_detailflag FROM cw_subject WHERE accsetid = :sys_accsetid AND subid = :ls_subid; IF sqlca.SQLCode = -1 THEN MessageBox('提示','查询科目:'+ls_subid+',失败,'+sqlca.SQLErrText) RETURN ELSEIF sqlca.SQLCode = 100 THEN MessageBox('提示','科目:'+ls_subid+',资料不存在,请检查') RETURN END IF IF li_detailflag = 0 THEN MessageBox('提示','科目:'+ls_subid+',不是明细科目,不能操作') RETURN END IF FOR i = 1 TO dw_1.RowCount() IF dw_1.Object.rate[i] = dw_1.Object.newrate[i] THEN CONTINUE ll_moneyid = dw_1.Object.moneyid[i] ld_rate_old = dw_1.Object.newrate[i] ld_rate_new = dw_1.Object.rate[i] ls_moneyname = dw_1.Object.Name[i] DECLARE cur_sub CURSOR FOR SELECT cw_subject.subid FROM cw_subject WHERE accsetid = :sys_accsetid AND moneyid = :ll_moneyid AND detailflag = 1; OPEN cur_sub; FETCH cur_sub INTO :ls_subid_f; DO WHILE sqlca.SQLCode = 0 ll_mx++ ls_subid_arr[ll_mx] = ls_subid_f ld_rate_arr[ll_mx] = ld_rate_new - ld_rate_old ld_rate_new_arr[ll_mx] = ld_rate_new ld_rate_old_arr[ll_mx] = ld_rate_old ls_moneyname_arr[ll_mx] = ls_moneyname FETCH cur_sub INTO :ls_subid_f; LOOP CLOSE cur_sub; NEXT IF ll_mx = 0 THEN MessageBox('提示','外币没有核算科目,操作取消,请检查') RETURN END IF Decimal ld_edebit,ld_ecredit,ld_balance_1,ld_balance_2 Decimal ld_sum_balance,ld_balance Int li_dcflag FOR j = 1 TO ll_mx ld_edebit = 0 ld_ecredit = 0 ld_balance_1 = 0 ld_balance_2 = 0 li_dcflag = 0 SELECT dcflag INTO :li_dcflag FROM cw_subject WHERE cw_subject.accsetid = :sys_accsetid AND cw_subject.subid = :ls_subid_arr[j]; IF sqlca.SQLCode <> 0 THEN MessageBox('提示','查询科目:'+ls_subid_arr[j]+',余额方向失败,'+sqlca.SQLErrText) RETURN END IF SELECT cw_Balance.erawdebit, cw_Balance.erawcredit INTO :ld_edebit, :ld_ecredit FROM cw_Balance WHERE cw_Balance.accsetid = :sys_accsetid AND cw_Balance.YearMon = :sys_curyearmon AND cw_Balance.subid = :ls_subid_arr[j]; IF sqlca.SQLCode = -1 THEN MessageBox('提示','查询科目:'+ls_subid_arr[j]+',期末余额失败,'+sqlca.SQLErrText) RETURN ELSEIF sqlca.SQLCode = 100 THEN CONTINUE END IF IF ld_edebit = 0 AND ld_ecredit = 0 THEN CONTINUE IF li_dcflag = 1 THEN ld_balance_1 = round((ld_edebit - ld_ecredit) * ld_rate_arr[j],2) ld_balance_2 = 0 ld_balance = ld_edebit - ld_ecredit ELSE ld_balance_1 = 0 ld_balance_2 = round((ld_ecredit - ld_edebit) * ld_rate_arr[j],2) ld_balance = ld_ecredit - ld_edebit END IF ld_sum_balance = ld_sum_balance + ld_balance_1 - ld_balance_2 ll_row = credmx_ds.InsertRow(0) credmx_ds.Object.fuluno[ll_row] = ll_row credmx_ds.Object.subid[ll_row] = ls_subid_arr[j] 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###') credmx_ds.Object.rate[ll_row] = ld_rate_new_arr[j] credmx_ds.Object.rawdebit[ll_row] = 0.00 credmx_ds.Object.rawcredit[ll_row] = 0.00 credmx_ds.Object.debit[ll_row] = ld_balance_1 credmx_ds.Object.credit[ll_row] = ld_balance_2 credmx_ds.Object.amount[ll_row] = 0.00 credmx_ds.Object.price[ll_row] = 0.00 credmx_ds.Object.deptid[ll_row] = 0 credmx_ds.Object.itemid[ll_row] = 0 credmx_ds.Object.READONLY[ll_row] = 0 credmx_ds.Object.billdate[ll_row] = null_dt credmx_ds.Object.billid[ll_row] = 0 credmx_ds.Object.billno[ll_row] = '' credmx_ds.Object.cropbillid[ll_row] = 0 NEXT credmx_ds.AcceptText() IF credmx_ds.RowCount() = 0 THEN MessageBox('提示','没有可操作科目,操作取消,请检查') RETURN END IF ll_row = credmx_ds.InsertRow(0) credmx_ds.Object.fuluno[ll_row] = ll_row credmx_ds.Object.subid[ll_row] = ls_subid credmx_ds.Object.brief[ll_row] = '调汇' credmx_ds.Object.rate[ll_row] = 0.00 credmx_ds.Object.rawdebit[ll_row] = 0.00 credmx_ds.Object.rawcredit[ll_row] = 0.00 credmx_ds.Object.debit[ll_row] = 0 credmx_ds.Object.credit[ll_row] = ld_sum_balance credmx_ds.Object.amount[ll_row] = 0.00 credmx_ds.Object.price[ll_row] = 0.00 credmx_ds.Object.deptid[ll_row] = 0 credmx_ds.Object.itemid[ll_row] = 0 credmx_ds.Object.READONLY[ll_row] = 0 credmx_ds.Object.billdate[ll_row] = null_dt credmx_ds.Object.billid[ll_row] = 0 credmx_ds.Object.billno[ll_row] = '' credmx_ds.Object.cropbillid[ll_row] = 0 //生成凭证 IF uo_cred.newbegin() = 0 THEN MessageBox('提示',arg_msg) RETURN END IF IF String(credmx_ds.Object.sum_debit[1],'###0.00') <> String(credmx_ds.Object.sum_credit[1],'###0.00') THEN MessageBox('提示','借、贷方金额不等!') RETURN END IF uo_cred.subaccsetid = 0 //子帐ID uo_cred.credno = uo_cred.get_new_credno(0,tmp_credtype,sys_curyearmon,arg_msg) // 编号 uo_cred.creddate = f_rst_mon_1st(3,sys_curyearmon) // 日期 uo_cred.billnumber = 0 //附件 uo_cred.credtype = tmp_credtype //凭证字 uo_cred.Readtype = 0 uo_cred.relevantbillid = sys_curyearmon uo_cred.cmonth = sys_curyearmon uo_cred.ifauto = 0 credmx_ds.AcceptText() FOR i = 1 TO credmx_ds.RowCount() IF uo_cred.acceptmx(credmx_ds.Object.no[i],credmx_ds.Object.subid[i],& credmx_ds.Object.brief[i],credmx_ds.Object.rate[i],& credmx_ds.Object.rawdebit[i],credmx_ds.Object.rawcredit[i],& credmx_ds.Object.debit[i],credmx_ds.Object.credit[i],& credmx_ds.Object.amount[i],credmx_ds.Object.price[i],& credmx_ds.Object.deptid[i],credmx_ds.Object.itemid[i],& credmx_ds.Object.billdate[i],credmx_ds.Object.billid[i],& credmx_ds.Object.billno[i],credmx_ds.Object.cropbillid[i],& credmx_ds.Object.READONLY[i],0,0,0,arg_msg) = 0 THEN MessageBox('提示',arg_msg) RETURN END IF NEXT IF uo_cred.Save('机制',arg_msg,FALSE) = 0 THEN MessageBox('提示',arg_msg) RETURN END IF IF dw_1.UPDATE() = -1 THEN ROLLBACK; MessageBox ('提示',"保存新汇率操作失败!",Exclamation!,OK!) RETURN ELSE COMMIT; END IF MessageBox('提示','调汇成功,并产生一张记帐凭证。') end event type dw_1 from datawindow within w_modify_rate integer x = 603 integer y = 192 integer width = 1705 integer height = 600 integer taborder = 20 boolean bringtotop = true string dataobject = "dw_modify_rate" boolean livescroll = true borderstyle borderstyle = stylelowered! end type type sle_1 from singlelineedit within w_modify_rate integer x = 603 integer y = 1048 integer width = 882 integer height = 92 integer taborder = 50 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 boolean autohscroll = false boolean displayonly = true borderstyle borderstyle = stylelowered! end type type cb_2 from uo_imflatbutton within w_modify_rate integer x = 1522 integer y = 1064 integer width = 114 integer height = 80 integer taborder = 60 boolean bringtotop = true string text = "..." end type event clicked;s_subject s_rt_subject openwithparm(w_subjectdef_edit,0) s_rt_subject=message.powerobjectparm if s_rt_subject.subid='' then return sle_1.text=s_rt_subject.subid end event type p_1 from picture within w_modify_rate integer x = 37 integer y = 104 integer width = 544 integer height = 836 boolean bringtotop = true boolean originalsize = true string picturename = "graphics\modify_rate.bmp" boolean border = true borderstyle borderstyle = stylelowered! boolean focusrectangle = false end type type mle_1 from multilineedit within w_modify_rate integer x = 603 integer y = 28 integer width = 1143 integer height = 164 integer taborder = 40 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 16711680 long backcolor = 80269524 string text = " 以下表中所列汇率与期末汇率是否一致, 如果不一致,在调汇前你需要先修改他们。" boolean border = false end type type st_1 from statictext within w_modify_rate integer x = 603 integer y = 956 integer width = 594 integer height = 48 boolean bringtotop = true integer textsize = -9 integer weight = 700 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 16711680 long backcolor = 67108864 string text = "汇兑损益科目代码:" alignment alignment = right! boolean focusrectangle = false end type type st_2 from statictext within w_modify_rate integer x = 603 integer y = 856 integer width = 594 integer height = 48 boolean bringtotop = true integer textsize = -9 integer weight = 700 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 16711680 long backcolor = 67108864 string text = "凭证字:" alignment alignment = right! boolean focusrectangle = false end type type ddlb_credtype from dropdownlistbox within w_modify_rate integer x = 1193 integer y = 836 integer width = 549 integer height = 300 integer taborder = 30 boolean bringtotop = true integer textsize = -9 integer weight = 700 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 borderstyle borderstyle = stylelowered! end type event constructor;String ls_credtype DECLARE cur_credtype CURSOR FOR SELECT cw_Credenceword.Credenceword FROM cw_Credenceword Where accsetid = :sys_accsetid; OPEN cur_credtype; FETCH cur_credtype INTO :ls_credtype; DO WHILE sqlca.SQLCode = 0 THIS.AddItem(ls_credtype) FETCH cur_credtype INTO :ls_credtype; LOOP CLOSE cur_credtype; end event