📄 arhistoryreport.pas
字号:
unit ARHistoryReport;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, DBTables, DB, quickrpt, Qrctrls, qrprntr;
type
TrptARHistory = class(TForm)
QuickReport: TQuickRep;
Title: TQRBand;
PageHeader: TQRBand;
PageFooter: TQRBand;
QRSysData1: TQRSysData;
QRLabel1: TQRLabel;
QRLabel2: TQRLabel;
QRLabel4: TQRLabel;
PageNumber: TQRSysData;
QRShape1: TQRShape;
QRShape2: TQRShape;
QRShape3: TQRShape;
QRLabel3: TQRLabel;
QRDateTime: TQRSysData;
QRLabel5: TQRLabel;
Master: TQRBand;
txtCustomerNo: TQRDBText;
txtCustomerName: TQRDBText;
lblSelection: TQRLabel;
tblCustomer: TTable;
dsCustomer: TDataSource;
DetailInvoices: TQRSubDetail;
tblARInv: TTable;
tblARInvInvoiceNo: TStringField;
tblARInvInvoiceDate: TDateField;
tblARInvInvoiceAmount: TCurrencyField;
DetailPayments: TQRSubDetail;
tblARPmt: TTable;
tblARPmtPaymentDate: TDateField;
tblARPmtChequeAmount: TCurrencyField;
QRLabel8: TQRLabel;
tblCustomerCurrencyID: TIntegerField;
tblARInvGLPeriod: TSmallintField;
tblARInvGLYear: TSmallintField;
tblARPmtGLYear: TSmallintField;
tblARPmtGLPeriod: TSmallintField;
lblPeriod: TQRLabel;
Summary: TQRBand;
QRLabel13: TQRLabel;
lblTotRInvoiceAmount: TQRLabel;
lblTotRChequeAmount: TQRLabel;
tblCustomerCustomerID: TAutoIncField;
tblCustomerCustomerNo: TStringField;
tblCustomerCustomerName: TStringField;
tblARInvBillToID: TIntegerField;
tblARPmtBillToID: TIntegerField;
tblARPmtChequeNo: TStringField;
txtInvoiceNo: TQRDBText;
txtInvoiceDate: TQRDBText;
txtInvoiceAmount: TQRDBText;
txtChequeNo: TQRDBText;
txtPaymentDate: TQRDBText;
txtChequeAmount: TQRDBText;
totRChequeAmount: TQRExpr;
totRInvoiceAmount: TQRExpr;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure tblCustomerFilterRecord(DataSet: TDataSet;
var Accept: Boolean);
procedure tblARInvFilterRecord(DataSet: TDataSet; var Accept: Boolean);
procedure tblARPmtFilterRecord(DataSet: TDataSet;
var Accept: Boolean);
procedure QuickReportBeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
procedure DetailInvoicesBeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
procedure DetailInvoicesAfterPrint(Sender: TQRCustomBand;
BandPrinted: Boolean);
procedure DetailPaymentsBeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
procedure DetailPaymentsAfterPrint(Sender: TQRCustomBand;
BandPrinted: Boolean);
procedure MasterBeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
procedure SummaryBeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
procedure QuickReportPreview(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
rptARHistory: TrptARHistory;
implementation
uses BS1Form, ARReportsForm, PreviewForm;
{$R *.DFM}
var
totRInvoices, totRPayments: integer;
procedure TrptARHistory.FormCreate(Sender: TObject);
begin
tblCustomer.DatabaseName := strDatabaseName;
tblARInv.DatabaseName := strDatabaseName;
tblARPmt.DatabaseName := strDatabaseName;
tblCustomer.Active := true;
tblARInv.Active := true;
tblARPmt.Active := true;
if frmARReports.GLPeriod <10 then lblPeriod.caption := 'Period: 0' + IntToStr(frmARReports.GLPeriod) + '/' + IntToStr(frmARReports.GLYear)
else lblPeriod.caption := 'Period: ' + IntToStr(frmARReports.GLPeriod) + '/' + IntToStr(frmARReports.GLYear);
tblARInv.MasterSource := nil; //Prevent report crash (Error: At beginning of table) that disables subsequent QuickReports.
if tblARInv.RecordCount > 0 then tblARInv.MasterSource := dsCustomer;
tblARPmt.MasterSource := nil;
if tblARPmt.RecordCount > 0 then tblARPmt.MasterSource := dsCustomer;
end;
procedure TrptARHistory.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TrptARHistory.tblCustomerFilterRecord(DataSet: TDataSet;
var Accept: Boolean);
begin
Accept := true;
if (frmARReports.CurrencyID >0) and (frmARReports.CurrencyID <> tblCustomerCurrencyID.value) then Accept := false
else if (frmARReports.CustomerID >0) and (frmARReports.CustomerID <> tblCustomerCustomerID.value) then Accept := false;
end;
procedure TrptARHistory.tblARInvFilterRecord(DataSet: TDataSet;
var Accept: Boolean);
begin
Accept := true;
if ((tblARInvGLPeriod.value <> frmARReports.GLPeriod) or (tblARInvGLYear.value <> frmARReports.GLYear)) then Accept := false;
end;
procedure TrptARHistory.tblARPmtFilterRecord(DataSet: TDataSet;
var Accept: Boolean);
begin
Accept := true;
if ((tblARPmtGLPeriod.value <> frmARReports.GLPeriod) or (tblARPmtGLYear.value <> frmARReports.GLYear)) then Accept := false;
end;
procedure TrptARHistory.QuickReportBeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
totRInvoices := 0;
totRPayments := 0;
end;
procedure TrptARHistory.DetailInvoicesBeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
if (tblARInv.RecordCount = 0) then PrintBand := false;
end;
procedure TrptARHistory.DetailInvoicesAfterPrint(Sender: TQRCustomBand;
BandPrinted: Boolean);
begin
if BandPrinted = true then totRInvoices := totRInvoices + 1;
end;
procedure TrptARHistory.DetailPaymentsBeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
if (tblARPmt.RecordCount = 0) then PrintBand := false;
end;
procedure TrptARHistory.DetailPaymentsAfterPrint(Sender: TQRCustomBand;
BandPrinted: Boolean);
begin
if BandPrinted = true then totRPayments := totRPayments + 1;
end;
procedure TrptARHistory.MasterBeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
if (tblARInv.RecordCount = 0) and (tblARPmt.RecordCount = 0) then begin
PrintBand := false;
end;
end;
procedure TrptARHistory.SummaryBeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
lblTotRInvoiceAmount.caption := IntToStr(totRInvoices) + ' invoices ' + FloatToStrF(totRInvoiceAmount.value.dblResult,ffCurrency,18,2);
lblTotRChequeAmount.caption := IntToStr(totRPayments) + ' cheques ' + FloatToStrF(totRChequeAmount.value.dblResult,ffCurrency,18,2);
end;
procedure TrptARHistory.QuickReportPreview(Sender: TObject);
begin
frmPreview := TfrmPreview.Create(Application);
frmPreview.QRPreview1.QRPrinter := TQRPrinter(sender);
frmPreview.QuickReport := QuickReport; //Set dummy quickreport so as to be able to apply selected printer and from/to page.
frmPreview.show;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -