unit u_ch_check_do; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, bsSkinCtrls, StdCtrls, BusinessSkinForm, DBCtrls, Mask, RxLookup, ComCtrls; type Tfrm_ch_check_do = class(TForm) bsSkinGroupBox1: TbsSkinGroupBox; Label1: TLabel; Edit1: TEdit; bsBusinessSkinForm1: TbsBusinessSkinForm; bsSkinButton1: TbsSkinButton; bsSkinButton2: TbsSkinButton; Label6: TLabel; RxDBLookupCombo3: TRxDBLookupCombo; Label7: TLabel; Label10: TLabel; Edit2: TEdit; Memo1: TMemo; Label2: TLabel; RxDBLookupCombo1: TRxDBLookupCombo; Edit3: TEdit; Label3: TLabel; Label4: TLabel; RxDBLookupCombo2: TRxDBLookupCombo; DateTimePicker1: TDateTimePicker; Label5: TLabel; Label134: TLabel; RxDBLookupCombo19: TRxDBLookupCombo; Label133: TLabel; Label136: TLabel; Edit4: TEdit; Edit5: TEdit; procedure bsSkinButton2Click(Sender: TObject); procedure bsSkinButton1Click(Sender: TObject); procedure FormShow(Sender: TObject); procedure RxDBLookupCombo3Enter(Sender: TObject); procedure RxDBLookupCombo3Exit(Sender: TObject); procedure RxDBLookupCombo1Enter(Sender: TObject); procedure RxDBLookupCombo1Exit(Sender: TObject); private { Private declarations } public { Public declarations } end; var frm_ch_check_do: Tfrm_ch_check_do; implementation uses u_main, u_ch_balance_pay, u_data_share, my_sys_function, u_sys_progress; {$R *.dfm} procedure Tfrm_ch_check_do.bsSkinButton2Click(Sender: TObject); begin close; end; procedure Tfrm_ch_check_do.bsSkinButton1Click(Sender: TObject); var i :integer; str,str_feeValid:string; begin if not ASSIGNED(frm_sys_progress) then frm_sys_progress:=tfrm_sys_progress.Create(application); frm_sys_progress.bsSkinGauge1.ProgressText:='正在处理数据请等候。。。'; frm_sys_progress.Show; bsSkinButton1.Enabled:=false; frm_main.db.BeginTrans; with frm_ch_balance_pay do try ch_balance_pay_post:=false; t_ch_balance.Insert; t_ch_balance['结算类别']:='申请'; t_ch_balance['客户名称']:=t_ch_check.Fieldbyname('客户名称').AsString; t_ch_balance.fieldbyname('帐单编号').asstring:=get_no(date,'BP'); str:=frm_ch_check_do.RxDBLookupCombo2.DisplayValues[0]; t_ch_balance['结算方式']:=str; t_ch_balance['结算日期']:=formatdatetime('YYYY-MM-DD',DateTimePicker1.date); // t_ch_balance.FieldByName('结算日期').AsString:=FormatDateTime('YYYY-MM-DD hh:mm:sss',DateTimePicker1.date); t_ch_balance['核销日期']:=formatdatetime('YYYY-MM-DD',DateTimePicker1.date); t_ch_balance['币别']:=t_ch_check.fieldbyname('币别').AsString; if trim(frm_ch_check_do.Edit4.Text)<>'' then t_ch_balance['到帐金额']:=StrToFloat(frm_ch_check_do.Edit4.Text); t_ch_balance['折算币别']:=frm_ch_check_do.RxDBLookupCombo19.DisplayValues[0]; if trim(frm_ch_check_do.Edit5.Text)<>'' then t_ch_balance['财务费用']:=StrToFloat(frm_ch_check_do.Edit5.Text); { t_ch_balance['结算金额']:=t_ch_check['申请金额']; t_ch_balance['实结金额']:=t_ch_check['实际金额']; t_ch_balance['虚结金额']:=t_ch_check['虚开金额']; } t_ch_balance['自动']:=t_ch_check['自动']; t_ch_balance['预结金额']:=0; { t_ch_balance['美元金额']:=t_ch_check['美元金额']; t_ch_balance['人民币金额']:=t_ch_check['人民币金额']; } t_ch_balance['相关号码']:=frm_ch_check_do.edit1.text; t_ch_balance['美元相关号码']:=frm_ch_check_do.edit3.text; t_ch_balance['银行代码']:=frm_ch_check_do.RxDBLookupCombo3.DisplayValues[0]; t_ch_balance['银行']:=frm_ch_check_do.RxDBLookupCombo3.DisplayValues[1]; if StrToBool(get_parameters_value(83,'false')) then begin t_ch_balance['美元银行代码']:=frm_ch_check_do.RxDBLookupCombo1.DisplayValues[0]; t_ch_balance['美元银行']:=frm_ch_check_do.RxDBLookupCombo1.DisplayValues[1]; end; t_ch_balance['凭证号码']:=frm_ch_check_do.Edit2.text; t_ch_balance['备注']:=frm_ch_check_do.Memo1.text; if dxDBGrid2.SelectedCount>0 then begin if t_ch_fee_do_check.RecordCount>0 then frm_sys_progress.bsSkinGauge1.MaxValue:=t_ch_fee_do_check.RecordCount+2; frm_sys_progress.bsSkinGauge1.MinValue:=0; frm_sys_progress.bsSkinGauge1.Value:=0; for i:=0 to dxDBGrid2.SelectedCount-1 do begin t_ch_check.GotoBookmark(pointer(dxDBGrid2.selectedrows[i])); t_ch_balance['结算金额']:=t_ch_balance['结算金额']+t_ch_check.Fieldbyname('申请金额').AsCurrency; t_ch_balance['实结金额']:=t_ch_balance['实结金额']+t_ch_check.Fieldbyname('实际金额').AsCurrency; t_ch_balance['虚结金额']:=t_ch_balance['虚结金额']+t_ch_check.Fieldbyname('虚开金额').AsCurrency; t_ch_balance['美元金额']:=t_ch_balance['美元金额']+t_ch_check.Fieldbyname('美元金额').AsCurrency; t_ch_balance['人民币金额']:=t_ch_balance['人民币金额']+t_ch_check.Fieldbyname('人民币金额').AsCurrency; t_ch_fee_do_check.Close; t_ch_fee_do_check.open; t_ch_fee_do_check.first; t_ch_fee_do.open; while not t_ch_fee_do_check.eof do begin t_ch_fee_do.insert; t_ch_fee_do['工作编号']:=t_ch_balance.fieldbyname('帐单编号').asstring; t_ch_fee_do['业务编号']:=t_ch_fee_do_check.Fieldbyname('业务编号').AsString; t_ch_fee_do['CH_ID']:=t_ch_fee_do_check.Fieldbyname('CH_ID').AsInteger; t_ch_fee_do['币别']:=t_ch_fee_do_check.Fieldbyname('币别').AsString; t_ch_fee_do['金额']:=t_ch_fee_do_check.Fieldbyname('金额').AsString; t_ch_fee_do['原始金额']:=t_ch_fee_do_check.Fieldbyname('原始金额').AsCurrency; t_ch_fee_do['类型']:='4'; t_ch_fee_do.Post; Setfee(0,t_ch_fee_do_check.fieldbyname('CH_ID').asinteger,t_ch_fee_do_check.fieldByName('原始金额').AsCurrency); frm_sys_progress.bsSkinGauge1.Value:=frm_sys_progress.bsSkinGauge1.Value+1; t_ch_fee_do_check.next; end; t_ch_check.Edit; t_ch_check['申请状态']:='支付完毕'; t_ch_check['帐单编号']:=t_ch_balance.fieldbyname('帐单编号').asstring; t_ch_check['开出人']:=employee; t_ch_check['开出日期']:=now; t_ch_check['支付方式']:=str; t_ch_check['相关号码']:=frm_ch_check_do.edit1.text; t_ch_check.post; end; end else begin if t_ch_fee_do_check.RecordCount>0 then frm_sys_progress.bsSkinGauge1.MaxValue:=t_ch_fee_do_check.RecordCount+2; frm_sys_progress.bsSkinGauge1.MinValue:=0; frm_sys_progress.bsSkinGauge1.Value:=0; t_ch_balance['结算金额']:=t_ch_balance['结算金额']+t_ch_check.Fieldbyname('申请金额').AsCurrency; t_ch_balance['实结金额']:=t_ch_balance['实结金额']+t_ch_check.Fieldbyname('实际金额').AsCurrency; t_ch_balance['虚结金额']:=t_ch_balance['虚结金额']+t_ch_check.Fieldbyname('虚开金额').AsCurrency; t_ch_balance['美元金额']:=t_ch_balance['美元金额']+t_ch_check.Fieldbyname('美元金额').AsCurrency; t_ch_balance['人民币金额']:=t_ch_balance['人民币金额']+t_ch_check.Fieldbyname('人民币金额').AsCurrency; t_ch_fee_do_check.Close; t_ch_fee_do_check.open; t_ch_fee_do_check.first; t_ch_fee_do.open; while not t_ch_fee_do_check.eof do begin t_ch_fee_do.insert; t_ch_fee_do['工作编号']:=t_ch_balance.fieldbyname('帐单编号').asstring; t_ch_fee_do['业务编号']:=t_ch_fee_do_check.Fieldbyname('业务编号').asstring; t_ch_fee_do['CH_ID']:=t_ch_fee_do_check.Fieldbyname('CH_ID').AsInteger; t_ch_fee_do['币别']:=t_ch_fee_do_check.Fieldbyname('币别').asstring; t_ch_fee_do['金额']:=t_ch_fee_do_check.Fieldbyname('金额').AsCurrency; t_ch_fee_do['原始金额']:=t_ch_fee_do_check.Fieldbyname('原始金额').AsCurrency; t_ch_fee_do['类型']:='4'; t_ch_fee_do.Post; Setfee(0,t_ch_fee_do_check.fieldbyname('CH_ID').AsInteger,t_ch_fee_do_check.fieldbyname('原始金额').AsCurrency); frm_sys_progress.bsSkinGauge1.Value:=frm_sys_progress.bsSkinGauge1.Value+1; t_ch_fee_do_check.next; end; t_ch_check.Edit; t_ch_check['申请状态']:='支付完毕'; t_ch_check['帐单编号']:=t_ch_balance.fieldbyname('帐单编号').asstring; t_ch_check['开出人']:=employee; t_ch_check['开出日期']:=now; t_ch_check['支付方式']:=str; t_ch_check['相关号码']:=frm_ch_check_do.edit1.text; t_ch_check.post; end; t_ch_balance.Post; dxDBGrid2.ClearSelection; frm_sys_progress.bsSkinGauge1.Value:=frm_sys_progress.bsSkinGauge1.Value+1; t_ch_balance.Requery(); // t_ch_balance.edit; // t_ch_balance.post; frm_sys_progress.bsSkinGauge1.Value:=frm_sys_progress.bsSkinGauge1.Value+1; frm_main.db.CommitTrans; finally t_ch_check.requery(); t_ch_check_detail.requery(); bsSkinButton1.Enabled:=true; frm_sys_progress.Close; frm_sys_progress.Free; frm_sys_progress:=nil; frm_ch_check_do.close; { str_feeValid:=SetfeeValid(t_ch_balance.fieldbyname('帐单编号').asstring); if trim(str_feeValid) <>'' then begin ShowMessage('请检查以下费用'+#13#10+str_feeValid); end; } if frm_main.db.InTransaction then begin ShowMessage('支付费用时出错,请刷新重试!'); frm_main.db.RollbackTrans; end; end; end; procedure Tfrm_ch_check_do.FormShow(Sender: TObject); begin DateTimePicker1.date:=Date; if StrToBool(get_parameters_value(83,'false')) then begin RxDBLookupCombo1.Visible:=TRUE; Label2.Visible:=true; Label3.Visible:=true; edit3.Visible:=true; Label134.Visible:=false; Edit4.Visible:=false; Label133.Visible:=false; RxDBLookupCombo19.Visible:=false; Label136.Visible:=false; Edit5.Visible:=false; end else begin RxDBLookupCombo1.Visible:=false; Label2.Visible:=false; Label6.Caption:='银 行'; Label3.Visible:=false; edit3.Visible:=false; Label1.Caption:='相关号码'; end; end; procedure Tfrm_ch_check_do.RxDBLookupCombo3Enter(Sender: TObject); begin frm_data_share.t_sys_bank.Filtered:=false; if StrToBool(get_parameters_value(83,'false')) then begin frm_data_share.t_sys_bank.Filter:='币别=''RMB'''; frm_data_share.t_sys_bank.Filtered:=true; end; end; procedure Tfrm_ch_check_do.RxDBLookupCombo3Exit(Sender: TObject); begin frm_data_share.t_sys_bank.Filtered:=false; end; procedure Tfrm_ch_check_do.RxDBLookupCombo1Enter(Sender: TObject); begin frm_data_share.t_sys_bank.Filtered:=false; frm_data_share.t_sys_bank.Filter:='币别=''USD'''; frm_data_share.t_sys_bank.Filtered:=true; end; procedure Tfrm_ch_check_do.RxDBLookupCombo1Exit(Sender: TObject); begin frm_data_share.t_sys_bank.Filtered:=false; end; end.