📄 invoice400v_f.pas
字号:
procedure TF_Invoice400v.Bt_EditClick(Sender: TObject);
begin
R_Invoice.Template.FileName := gRootPath + '400V发票.RTM';
R_Invoice.Template.LoadFromFile();
D_Invoice.ShowModal();
If R_Invoice.Modified Then
If Application.MessageBox('报表已被修改, 存储报表?','系统提示',MB_YESNO) = IDYES Then
R_Invoice.Template.SaveToFile();
end;
procedure TF_Invoice400v.ppLabel89GetText(Sender: TObject; var Text: String);
begin
Text := Default_Auditing;//审核
end;
procedure TF_Invoice400v.ppLabel87GetText(Sender: TObject; var Text: String);
begin
Text := Default_Fee;//收费
end;
procedure TF_Invoice400v.ppLabel88GetText(Sender: TObject; var Text: String);
begin
Text := Default_Use;//开票
end;
procedure TF_Invoice400v.ppL_UpperCashGetText(Sender: TObject; var Text: String);
begin
//大写金额
Text := UpperMoney(Q_Invoice['f_FeeAmount']);
end;
procedure TF_Invoice400v.ppLabel1GetText(Sender: TObject; var Text: String);
begin
Text := CurrentYear;
end;
procedure TF_Invoice400v.ppLabel2GetText(Sender: TObject; var Text: String);
begin
Text := CurrentMonth;
end;
procedure TF_Invoice400v.ppDetailBand4BeforePrint(Sender: TObject);
begin
//大写金额
ppL_UpperCash.Caption := UpperMoney(Q_Invoice['f_FeeAmount']);
end;
procedure TF_Invoice400v.Bt_SearchClick(Sender: TObject);
Var
SqlStr:String;
SearchStr:String[12];
begin
Bt_PrintInvoice.Enabled := False;
Bt_PrintBalance.Enabled := False;
Q_Invoice.Close();
Q_Invoice.SQL.Clear();
Q_Invoice.SQL.Add('Select H.f_Used_Amount As f_FeeAmount');
Q_Invoice.SQL.Add(', T.f_Transfer_Name');
Q_Invoice.SQL.Add(', V.f_Village_Name || H.f_Position As f_Position');
Q_Invoice.SQL.Add(', H.*');
Q_Invoice.SQL.Add(', H.f_Used_Amount - H.f_Last_Balance As f_Should_Receive');
Q_Invoice.SQL.Add(' From Tb_House H');
Q_Invoice.SQL.Add(' Join Tb_Transfer T On H.f_Transfer_No = T.f_Transfer_No');
Q_Invoice.SQL.Add(' Left Join Tb_Village V On H.f_Village_No = V.f_Village_No');
SearchStr := E_Search.Text;
If SearchStr = '' Then
SqlStr := ' Where H.f_PrintInvoice = ''Y'''
Else
Begin
If (SearchStr[1] >= 'A') And (SearchStr[2] <= 'Z') Then//Is Alpha
If Length(SearchStr) >= 11 Then//户号足位
SqlStr := Format(' Where f_House_No = ''%s''',[SearchStr])
Else
SqlStr := Format(' Where f_House_No Like ''%s%%''',[SearchStr])
Else//认为是户名
SqlStr := Format(' Where f_House_Name Like ''%s%%''',[SearchStr]);
End;
Q_Invoice.SQL.Add(SqlStr);
Q_Invoice.SQL.Add(' Order By f_House_No');
Q_Invoice.Open();
If Q_Invoice.Eof Or (Q_Invoice.RecordCount <> 1) Then//未找到
Begin
E_Search.SetFocus();
Beep();
Exit;
End;
//查询用户表
Q_Ammeter.Close();
Q_Ammeter.ParamByName('House_No').AsString := DBE_House_No.Text;
Q_Ammeter.Open();
//查询电费项目明细
Q_FeeDetail.Close();
Q_FeeDetail.ParamByName('House_No').AsString := DBE_House_No.Text;
Q_FeeDetail.Open();
//收款额输入
E_Gathering.Text := Q_Invoice['f_Gathering'];
E_GiveChange.Text := Q_Invoice['f_Give_Change'];
E_Gathering.SetFocus();
If Q_Invoice['f_Gathering'] > 0 Then
ShowMessage('请注意:此用户本月已缴费,系统只记录最后一次收费!');
end;
procedure TF_Invoice400v.E_SearchKeyPress(Sender: TObject; var Key: Char);
begin
If Key = #13 Then
Bt_SearchClick(Nil);
end;
procedure TF_Invoice400v.DBG_HouseDblClick(Sender: TObject);
begin
E_Search.Text := DBE_House_No.Text;
Bt_SearchClick(Nil);
end;
procedure TF_Invoice400v.DBG_HouseCellClick(Column: TColumn);
begin
E_Search.Text := DBE_House_No.Text;
end;
procedure TF_Invoice400v.E_SearchDblClick(Sender: TObject);
begin
E_Search.Text := '';
end;
procedure TF_Invoice400v.CB_PreviewClick(Sender: TObject);
begin
If CB_Preview.Checked Then
R_Invoice.DeviceType := dtScreen
Else
R_Invoice.DeviceType := dtPrinter;
end;
procedure TF_Invoice400v.E_GatheringChange(Sender: TObject);
Var
//收款, 找零, 实收, 应收, 本期余额
Gathering, GiveChange, ActualReceive, Amount, Balance: Currency;
begin
Try
Amount := StrToCurr(DBE_Should_Receive.Field.AsString);//应收
Gathering := StrToCurr(E_Gathering.Text);//收款
If CB_PreDeposit.Checked Then//允许预存电费
GiveChange := 0
Else
GiveChange := Gathering - Amount;
ActualReceive := Gathering - GiveChange;//实收/下帐
Balance := ActualReceive - Amount;
E_GiveChange.Text := CurrToStrF(GiveChange, ffGeneral, 2);//打零
E_ActualReceive.Text := CurrToStrF(ActualReceive, ffGeneral, 2);//实收
E_Balance.Text := CurrToStrF(Balance, ffGeneral, 2);//本期余额
Bt_Charge.Enabled := GiveChange >= 0;//收款金额足够
Except
E_GiveChange.Text := '';
E_ActualReceive.Text := '';
E_Balance.Text := '';
Bt_Charge.Enabled := False;
Bt_PrintInvoice.Enabled := False;
Bt_PrintBalance.Enabled := False;
End;
end;
procedure TF_Invoice400v.DBG_TransferDblClick(Sender: TObject);
begin
E_Search.Text := Tb_Transfer['f_Transfer_No'];
Bt_SearchClick(Nil);
end;
procedure TF_Invoice400v.Bt_ChargeClick(Sender: TObject);
Var
//实收 本期余额 找零 收款
ActualReceive, Balance, GiveChange, Gathering: Currency;
begin
//各种金额
ActualReceive := StrToCurr(E_ActualReceive.Text);
Balance := StrToCurr(E_Balance.Text);
GiveChange := StrToCurr(E_GiveChange.Text);
Gathering := StrToCurr(E_Gathering.Text);
//记录收费信息
Query.SQL.Clear();
Query.SQL.Add(Format('Update Tb_House Set f_Receiver = "%s", f_Charge_Date = "%s"',[LoginNo, DateToStr(Now())]));
Query.SQL.Add(Format(' ,f_Gathering = %.2f, f_Give_Change = %.2f',[Gathering, GiveChange]));
Query.SQL.Add(Format(' ,f_Actual_Receive = %.2f, f_Balance = %.2f',[ActualReceive, Balance]));
Query.SQL.Add(Format('Where f_House_No = "%s"',[DBE_House_No.Text]));
Query.ExecSQL();
Bt_Charge.Enabled := False;
Bt_PrintInvoice.Enabled := True;
Bt_PrintBalance.Enabled := True;
end;
procedure TF_Invoice400v.Bt_SwitchClick(Sender: TObject);
begin
F_Invoice10KV.Show();
end;
procedure TF_Invoice400v.FormCreate(Sender: TObject);
begin
Query.SQL.Text := 'Update Tb_House Set f_Position = '''' Where f_Position Is Null';
Query.ExecSQL;
end;
procedure TF_Invoice400v.E_GiveChangeChange(Sender: TObject);
Var
//收款, 找零, 实收, 本期余额, 应收
Gathering, GiveChange, ActualReceive, Balance, Amount: Currency;
begin
//手工修改找零时
Try
Amount := StrToCurr(DBE_Should_Receive.Field.AsString);//应收
Gathering := StrToCurr(E_Gathering.Text);//收款
GiveChange := StrToCurr(E_GiveChange.Text);//找零
ActualReceive := Gathering - GiveChange;//实收/下帐
Balance := ActualReceive - Amount;
E_ActualReceive.Text := CurrToStrF(ActualReceive, ffGeneral, 2);//实收
E_Balance.Text := CurrToStrF(Balance, ffGeneral, 2);//本期余额
Bt_Charge.Enabled := GiveChange >= 0;//收款金额足够
Except
E_ActualReceive.Text := '';
E_Balance.Text := '';
Bt_Charge.Enabled := False;
End;
end;
procedure TF_Invoice400v.CB_PreDepositClick(Sender: TObject);
begin
E_GiveChange.ReadOnly := Not CB_PreDeposit.Checked;
end;
procedure TF_Invoice400v.Bt_PrintBalanceClick(Sender: TObject);
begin
R_Balance.Template.FileName := gRootPath + '400V收费单.RTM';
R_Balance.Template.LoadFromFile();
R_Balance.PassSetting := psTwoPass;
R_Balance.ShowPrintDialog := False;
If Sender <> Nil Then//用户按
If CB_Preview.Checked Then
R_Balance.DeviceType := dtScreen
Else
R_Balance.DeviceType := dtPrinter
Else
R_Balance.DeviceType := dtPrinter;
R_Balance.Print();
end;
procedure TF_Invoice400v.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Tb_Transfer.Close();
Q_Invoice.Close();
Q_Ammeter.Close();
Q_FeeDetail.Close();
MyReleaseForm(TForm(F_Invoice400v));
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -