📄 agedtrialbalancereport.pas
字号:
unit AgedTrialBalanceReport;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, DBTables, DB, quickrpt, Qrctrls, qrprntr;
type
TrptAgedTrialBalance = class(TForm)
QuickReport: TQuickRep;
Title: TQRBand;
PageHeader: TQRBand;
Detail: TQRBand;
PageFooter: TQRBand;
QRSysData1: TQRSysData;
QRLabel1: TQRLabel;
txtInvoiceNo: TQRDBText;
QRLabel4: TQRLabel;
PageNumber: TQRSysData;
QRShape1: TQRShape;
QRShape2: TQRShape;
QRShape3: TQRShape;
qryARInv: TQuery;
QRLabel3: TQRLabel;
QRDateTime: TQRSysData;
qryARInvInvoiceNo: TStringField;
qryARInvInvoiceDate: TDateField;
qryARInvInvoiceAmount: TCurrencyField;
qryARInvOwing: TCurrencyField;
qryARInvBillToNo: TStringField;
qryARInvBillToName: TStringField;
QRLabel5: TQRLabel;
QRLabel6: TQRLabel;
txtInvoiceDate: TQRDBText;
txtInvoiceAmount: TQRDBText;
txtOwing: TQRDBText;
Customer: TQRGroup;
CustomerFooter: TQRBand;
lblTotBOwing: TQRLabel;
QRShape4: TQRShape;
QRLabel12: TQRLabel;
Summary: TQRBand;
QRLabel13: TQRLabel;
lblTotROwing: TQRLabel;
lblSelection: TQRLabel;
qryARInvPosted: TBooleanField;
txtPosted: TQRDBText;
lblSelection2: TQRLabel;
lblAsOf: TQRLabel;
QRLabel7: TQRLabel;
QRLabel8: TQRLabel;
QRLabel9: TQRLabel;
QRLabel10: TQRLabel;
qryARInvAgePeriod2Amt: TCurrencyField;
qryARInvAgePeriod1Amt: TCurrencyField;
qryARInvAgePeriod3Amt: TCurrencyField;
qryARInvAgePeriod4Amt: TCurrencyField;
txtAgePeriod1Amt: TQRDBText;
txtAgePeriod2Amt: TQRDBText;
txtAgePeriod3Amt: TQRDBText;
txtAgePeriod4Amt: TQRDBText;
lblTotBAgePeriod1Amt: TQRLabel;
lblTotBAgePeriod2Amt: TQRLabel;
lblTotBAgePeriod3Amt: TQRLabel;
lblTotBAgePeriod4Amt: TQRLabel;
lblTotRAgePeriod1Amt: TQRLabel;
lblTotRAgePeriod2Amt: TQRLabel;
lblTotRAgePeriod3Amt: TQRLabel;
lblTotRAgePeriod4Amt: TQRLabel;
QRShape5: TQRShape;
QRShape6: TQRShape;
QRShape7: TQRShape;
QRShape8: TQRShape;
qryARInvAge: TIntegerField;
QRLabel2: TQRLabel;
txtAge: TQRDBText;
qryARInvSummary: TQuery;
qryARInvSummaryBilltoID: TIntegerField;
qryARInvSummarySUMOFOwing: TCurrencyField;
qryARInvSummaryMINOFInvoiceDate: TDateField;
qryARInvBillToID: TIntegerField;
txtBillToNo: TQRDBText;
txtBillToName: TQRDBText;
totBAgePeriod4Amt: TQRExpr;
totBAgePeriod3Amt: TQRExpr;
totBAgePeriod2Amt: TQRExpr;
totBAgePeriod1Amt: TQRExpr;
totBOwing: TQRExpr;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure qryARInvCalcFields(DataSet: TDataSet);
procedure DetailBeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
procedure DetailAfterPrint(Sender: TQRCustomBand;
BandPrinted: Boolean);
procedure CustomerFooterBeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
procedure CustomerBeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
procedure SummaryBeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
procedure QuickReportBeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
procedure QuickReportPreview(Sender: TObject);
procedure CustomerFooterAfterPrint(Sender: TQRCustomBand;
BandPrinted: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
rptAgedTrialBalance: TrptAgedTrialBalance;
implementation
uses BS1Form, ARReportsForm, PreviewForm;
var
CustomerTotalOwing, totROwing, totRAgePeriod1Amt, totRAgePeriod2Amt, totRAgePeriod3Amt, totRAgePeriod4Amt: currency;
CustomerMaxDaysOld: integer;
{$R *.DFM}
procedure TrptAgedTrialBalance.FormCreate(Sender: TObject);
begin
qryARInv.DatabaseName := strDatabaseName;
qryARInvSummary.DatabaseName := strDatabaseName;
//qryARInv.Active := true;
end;
procedure TrptAgedTrialBalance.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TrptAgedTrialBalance.qryARInvCalcFields(DataSet: TDataSet);
begin
qryARInvAge.value := Round(frmARReports.AsOfDate1 - qryARInvInvoiceDate.value);
if qryARInvAge.value > 90 then qryARInvAgePeriod4Amt.AsCurrency := qryARInvOwing.value
else if qryARInvAge.value > 60 then qryARInvAgePeriod3Amt.AsCurrency := qryARInvOwing.value
else if qryARInvAge.value > 30 then qryARInvAgePeriod2Amt.AsCurrency := qryARInvOwing.value
else qryARInvAgePeriod1Amt.AsCurrency := qryARInvOwing.value;
end;
procedure TrptAgedTrialBalance.DetailBeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
PrintBand := true;
if (frmARReports.MinOwing >0) and (CustomerTotalOwing < frmARReports.MinOwing) then PrintBand := false;
if (frmARReports.MinDays >0) and (CustomerMaxDaysOld < frmARReports.MinDays) then PrintBand := false;
end;
procedure TrptAgedTrialBalance.DetailAfterPrint(Sender: TQRCustomBand;
BandPrinted: Boolean);
begin
if BandPrinted = true then totROwing := totROwing + qryARInvOwing.value;
if BandPrinted = true then totRAgePeriod1Amt := totRAgePeriod1Amt + qryARInvAgePeriod1Amt.value;
if BandPrinted = true then totRAgePeriod2Amt := totRAgePeriod2Amt + qryARInvAgePeriod2Amt.value;
if BandPrinted = true then totRAgePeriod3Amt := totRAgePeriod3Amt + qryARInvAgePeriod3Amt.value;
if BandPrinted = true then totRAgePeriod4Amt := totRAgePeriod4Amt + qryARInvAgePeriod4Amt.value;
end;
procedure TrptAgedTrialBalance.CustomerFooterBeforePrint(
Sender: TQRCustomBand; var PrintBand: Boolean);
begin
PrintBand := true;
if (frmARReports.MinOwing >0) and (CustomerTotalOwing < frmARReports.MinOwing) then PrintBand := false;
if (frmARReports.MinDays >0) and (CustomerMaxDaysOld < frmARReports.MinDays) then PrintBand := false;
lblTotBOwing.caption := FloatToStrF(totBOwing.value.dblResult,ffCurrency,18,2);
lblTotBAgePeriod1Amt.caption := FloatToStrF(totBAgePeriod1Amt.value.dblResult,ffCurrency,18,2);
lblTotBAgePeriod2Amt.caption := FloatToStrF(totBAgePeriod2Amt.value.dblResult,ffCurrency,18,2);
lblTotBAgePeriod3Amt.caption := FloatToStrF(totBAgePeriod3Amt.value.dblResult,ffCurrency,18,2);
lblTotBAgePeriod4Amt.caption := FloatToStrF(totBAgePeriod4Amt.value.dblResult,ffCurrency,18,2);
end;
procedure TrptAgedTrialBalance.CustomerBeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
var
LookupResults: variant;
begin
if (frmARReports.MinOwing >0) or (frmARReports.MinDays >0) then begin
qryARInvSummary.open;
LookupResults := qryARInvSummary.Lookup('BilltoID', qryARInvBilltoID.value, 'SUM OF Owing;MIN OF InvoiceDate');
CustomerTotalOwing := LookupResults[0];
CustomerMaxDaysOld := frmARReports.AsOfDate1 - LookupResults[1];
end;
PrintBand := true;
if (frmARReports.MinOwing >0) and (CustomerTotalOwing < frmARReports.MinOwing) then PrintBand := false;
if (frmARReports.MinDays >0) and (CustomerMaxDaysOld < frmARReports.MinDays) then PrintBand := false;
end;
procedure TrptAgedTrialBalance.SummaryBeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
lblTotROwing.caption := FloatToStrF(totROwing,ffCurrency,18,2);
lblTotRAgePeriod1Amt.caption := FloatToStrF(totRAgePeriod1Amt,ffCurrency,18,2);
lblTotRAgePeriod2Amt.caption := FloatToStrF(totRAgePeriod2Amt,ffCurrency,18,2);
lblTotRAgePeriod3Amt.caption := FloatToStrF(totRAgePeriod3Amt,ffCurrency,18,2);
lblTotRAgePeriod4Amt.caption := FloatToStrF(totRAgePeriod4Amt,ffCurrency,18,2);
end;
procedure TrptAgedTrialBalance.QuickReportBeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
totROwing := 0;
totRAgePeriod1Amt := 0;
totRAgePeriod2Amt := 0;
totRAgePeriod3Amt := 0;
totRAgePeriod4Amt := 0;
end;
procedure TrptAgedTrialBalance.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;
procedure TrptAgedTrialBalance.CustomerFooterAfterPrint(
Sender: TQRCustomBand; BandPrinted: Boolean);
begin
if BandPrinted = false then begin
totBOwing.Reset;
totBAgePeriod1Amt.Reset;
totBAgePeriod2Amt.Reset;
totBAgePeriod3Amt.Reset;
totBAgePeriod4Amt.Reset;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -