⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 agedtrialbalancereport.pas

📁 功能全面的商业财会系统源码,清晰,很有参考价值.扩展性强.
💻 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 + -