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

📄 arhistoryreport.pas

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