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

📄 arstatementsreport.pas

📁 功能全面的商业财会系统源码,清晰,很有参考价值.扩展性强.
💻 PAS
字号:
unit ARStatementsReport;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, DBTables, DB, quickrpt, Qrctrls, qrprntr;

type
  TrptARStatements = class(TForm)
    QuickReport: TQuickRep;
    Detail: TQRBand;
    txtInvoiceNo: TQRDBText;
    qryARInv: TQuery;
    qryARInvInvoiceNo: TStringField;
    qryARInvInvoiceDate: TDateField;
    qryARInvInvoiceAmount: TCurrencyField;
    qryARInvOwing: TCurrencyField;
    qryARInvBillToNo: TStringField;
    qryARInvBillToName: TStringField;
    txtInvoiceDate: TQRDBText;
    txtInvoiceAmount: TQRDBText;
    txtOwing: TQRDBText;
    Customer: TQRGroup;
    CustomerFooter: TQRBand;
    QRShape4: TQRShape;
    QRLabel12: TQRLabel;
    qryARInvSummary: TQuery;
    qryARInvSummaryBilltoID: TIntegerField;
    qryARInvSummarySUMOFOwing: TCurrencyField;
    qryARInvSummaryMINOFInvoiceDate: TDateField;
    qryARInvBillToID: TIntegerField;
    qryARInvDescription: TStringField;
    txtDescription: TQRDBText;
    CustomerHeaderOverflow: TQRBand;
    lblPageNumber: TQRLabel;
    qryARInvDueDate: TDateField;
    qryARInvNetDays: TSmallintField;
    txtDueDate: TQRDBText;
    qryARInvCustomerMessage: TMemoField;
    txtCustomerMessage: TQRDBText;
    qryARInvCurrencyID: TIntegerField;
    qryARInvCurrencyName: TStringField;
    txtCurrencyName: TQRDBText;
    qryARInvBAddressLine1: TStringField;
    qryARInvBAddressLine2: TStringField;
    qryARInvBCity: TStringField;
    qryARInvBStateProv: TStringField;
    qryARInvBZipCode: TStringField;
    qryARInvBCountry: TStringField;
    qryARInvBCityStateZip: TStringField;
    lblHCompanyName: TQRLabel;
    lblHCompanyAddressLine1: TQRLabel;
    lblHCompanyAddressLine2: TQRLabel;
    lblHCompanyAddressLine3: TQRLabel;
    lblHAsOf: TQRLabel;
    lblHStatement: TQRLabel;
    lblHBillTo: TQRLabel;
    txtHBillToNo: TQRDBText;
    txtHBillToName: TQRDBText;
    txtHBAddressLine1: TQRDBText;
    txtHBAddressLine2: TQRDBText;
    txtHBCityStateZip: TQRDBText;
    txtHBCountry: TQRDBText;
    QRShape3: TQRShape;
    QRShape5: TQRShape;
    QRLabel7: TQRLabel;
    QRLabel8: TQRLabel;
    QRLabel9: TQRLabel;
    QRLabel10: TQRLabel;
    QRLabel11: TQRLabel;
    QRLabel13: TQRLabel;
    totBOwing: TQRExpr;
    lblCompanyName: TQRLabel;
    lblCompanyAddressLine1: TQRLabel;
    lblCompanyAddressLine2: TQRLabel;
    lblCompanyAddressLine3: TQRLabel;
    lblBillTo: TQRLabel;
    txtBillToNo: TQRDBText;
    txtBillToName: TQRDBText;
    txtBAddressLine1: TQRDBText;
    txtBAddressLine2: TQRDBText;
    txtBCityStateZip: TQRDBText;
    txtBCountry: TQRDBText;
    lblStatement: TQRLabel;
    lblAsOf: TQRLabel;
    QRShape1: TQRShape;
    QRShape2: TQRShape;
    QRLabel1: TQRLabel;
    QRLabel4: TQRLabel;
    QRLabel5: TQRLabel;
    QRLabel3: TQRLabel;
    QRLabel6: TQRLabel;
    QRLabel2: TQRLabel;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure qryARInvCalcFields(DataSet: TDataSet);
    procedure CustomerBeforePrint(Sender: TQRCustomBand;
      var PrintBand: Boolean);
    procedure CustomerFooterAfterPrint(Sender: TQRCustomBand;
      BandPrinted: Boolean);
    procedure CustomerFooterBeforePrint(Sender: TQRCustomBand;
      var PrintBand: Boolean);
    procedure CustomerHeaderOverflowBeforePrint(Sender: TQRCustomBand;
      var PrintBand: Boolean);
    procedure DetailBeforePrint(Sender: TQRCustomBand;
      var PrintBand: Boolean);
    procedure DetailAfterPrint(Sender: TQRCustomBand;
      BandPrinted: Boolean);
    procedure QuickReportPreview(Sender: TObject);
    procedure QuickReportBeforePrint(Sender: TCustomQuickRep;
      var PrintReport: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  rptARStatements: TrptARStatements;

implementation

uses BS1Form, ARReportsForm, LookUpsData, PreviewForm;

var
  CustomerTotalOwing: currency;
  CustomerMaxDaysOld: integer;
  PageNumber: integer;
  InvoicesPrinted: boolean;
  intStatementsPrinted: integer;

{$R *.DFM}

procedure TrptARStatements.FormCreate(Sender: TObject);
begin
  qryARInv.DatabaseName := strDatabaseName;
  qryARInvSummary.DatabaseName := strDatabaseName;
  dmLookUps.tblCurrency.DatabaseName := strDatabaseName;
  dmLookUps.tblCurrency.Active := true;
  //qryARInv.Active := true;

  lblCompanyName.caption := frmBS1.tblCompanyCompanyName.value;
  lblCompanyAddressLine1.caption := frmBS1.tblCompanyAddressLine1.value;
  lblCompanyAddressLine2.caption := frmBS1.tblCompanyAddressLine2.value;
  lblCompanyAddressLine3.caption := frmBS1.tblCompanyAddressLine3.value;
  lblHCompanyName.caption := lblCompanyName.caption;
  lblHCompanyAddressLine1.caption := lblCompanyAddressLine1.caption;
  lblHCompanyAddressLine2.caption := lblCompanyAddressLine2.caption;
  lblHCompanyAddressLine3.caption := lblCompanyAddressLine3.caption;
end;

procedure TrptARStatements.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  Action := caFree;
end;

procedure TrptARStatements.qryARInvCalcFields(DataSet: TDataSet);
begin
  qryARInvDueDate.value := qryARInvInvoiceDate.value + qryARInvNetDays.value;

  qryARInvBCityStateZip.value := qryARInvBCity.value;
  if qryARInvBStateProv.value <> '' then qryARInvBCityStateZip.value := qryARInvBCityStateZip.value + ', ' + qryARInvBStateProv.value;
  if qryARInvBZipCode.value <> '' then qryARInvBCityStateZip.value := qryARInvBCityStateZip.value + '     ' + qryARInvBZipCode.value;
end;

procedure TrptARStatements.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;
  if qryARInvBillToID.AsVariant = null then PrintBand := false;   //Suppress headings if no detail.

  if PrintBand = true then begin
    if intStatementsPrinted >0 then QuickReport.NewPage;   //Force new page for each new invoice after the 1st one. Delphi 4 (QR 3.0) gives Access Violation if you use ForceNewPage property of band.
    inc(intStatementsPrinted);
  end;

  PageNumber := 1;

  if qryARInvBAddressLine2.value = '' then begin
    txtBCityStateZip.top := 216;
    txtHBCityStateZip.top := 216;
    txtBCountry.top := 233;
    txtHBCountry.top := 233;
  end else begin
    txtBCityStateZip.top := 233;
    txtHBCityStateZip.top := 233;
    txtBCountry.top := 250;
    txtHBCountry.top := 250;
  end;
end;

procedure TrptARStatements.CustomerFooterAfterPrint(Sender: TQRCustomBand;
  BandPrinted: Boolean);
begin
  InvoicesPrinted := False;
  if BandPrinted = false then totBOwing.Reset;
end;

procedure TrptARStatements.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;
  if qryARInvBillToID.AsVariant = null then PrintBand := false;   //Suppress totals if no detail.
end;

procedure TrptARStatements.CustomerHeaderOverflowBeforePrint(
  Sender: TQRCustomBand; var PrintBand: Boolean);
begin
  if InvoicesPrinted = True then PrintBand := true   //Only print header on page overflow.
  else                           PrintBand := false;

  PageNumber := PageNumber + 1;
  lblPageNumber.caption := 'Page ' + IntToStr(PageNumber);
end;

procedure TrptARStatements.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 TrptARStatements.DetailAfterPrint(Sender: TQRCustomBand;
  BandPrinted: Boolean);
begin
  if BandPrinted = true then InvoicesPrinted := True;
end;

procedure TrptARStatements.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 TrptARStatements.QuickReportBeforePrint(Sender: TCustomQuickRep;
  var PrintReport: Boolean);
begin
  intStatementsPrinted := 0;
  InvoicesPrinted := False;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -