{*******************************************************} { } { Responsive Software http://www.responsive.co.nz } { } { Copyright (c) 2003-2006 Responsive Software Limited } { } {*******************************************************} unit SalesReportUnit; interface uses Windows, SysUtils, Messages, Classes, Graphics, Controls, StdCtrls, ExtCtrls, Forms, QuickRpt, QRCtrls, DatabaseObjects, Utilities, GeneralUtilities; type TSalesReport = class(TQuickRep) TitleBand1: TQRBand; PageFooterBand1: TQRBand; CompanyNameQRLabel: TQRLabel; QRShape1: TQRShape; HeadingQRLabel: TQRLabel; QRShape3: TQRShape; PageNumberQRLabel: TQRLabel; ReportFooterQRLabel: TQRLabel; DetailBand1: TQRBand; LineQRLabel: TQRLabel; QRShape2: TQRShape; ItemQRLabel: TQRLabel; PaymentTypeQRLabel: TQRLabel; SaleDateQRLabel: TQRLabel; SalespersonQRLabel: TQRLabel; DateQRLabel: TQRLabel; procedure QuickRepBeforePrint(Sender: TCustomQuickRep; var PrintReport: Boolean); procedure QuickRepNeedData(Sender: TObject; var MoreData: Boolean); procedure QuickRepStartPage(Sender: TCustomQuickRep); procedure DetailBand1BeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean); procedure QuickRepAfterPreview(Sender: TObject); private PageNumber : integer; BoldLine : boolean; ItalicLine : boolean; FReportData : TReportData; FParameters : TSalesReportParameters; public CurrentItem : integer; procedure SetParameters (Parameters : TSalesReportParameters); procedure SetReportData (ReportData : TReportData); end; var SalesReport: TSalesReport; implementation uses Globals, DatabaseManager; {$R *.DFM} procedure TSalesReport.SetParameters (Parameters : TSalesReportParameters); begin FParameters.Free; FParameters := TSalesReportParameters.Create; FParameters.Assign(Parameters); end; procedure TSalesReport.SetReportData (ReportData : TReportData); begin FReportData.Free; FReportData := ReportData; end; procedure TSalesReport.QuickRepBeforePrint(Sender: TCustomQuickRep; var PrintReport: Boolean); begin QuickReportOpen := true; ReportFooterQRLabel.Caption := ReportFooterString; CurrentItem := 0; PageNumber := 0; CompanyNameQRLabel.Caption := GlobalConfiguration.CompanyName; if FParameters.OrderBy = diItem then HeadingQRLabel.Caption := 'ITEMS SOLD' else if FParameters.OrderBy = diPaymentType then HeadingQRLabel.Caption := 'PAYMENTS' else HeadingQRLabel.Caption := 'SALES'; if FParameters.SalespersonId = 0 then SalespersonQRLabel.Caption := '' else SalespersonQRLabel.Caption := 'Salesperson :- ' + SalespersonName(FParameters.SalespersonId); if FParameters.ItemId = 0 then ItemQRLabel.Caption := '' else ItemQRLabel.Caption := 'Item :- ' + ItemName(FParameters.ItemId); if FParameters.PaymentTypeId = 0 then PaymentTypeQRLabel.Caption := '' else PaymentTypeQRLabel.Caption := 'Payment Type :- ' + PaymentTypeName(FParameters.PaymentTypeId); DateQRLabel.Caption := 'Printed on :- ' + FormatDate(Date); SaleDateQRLabel.Caption := 'Date of Sale :- ' + FormatDate(Date + FParameters.BeginSaleDate) + ' to ' + FormatDate(Date + FParameters.EndSaleDate) end; procedure TSalesReport.QuickRepNeedData(Sender: TObject; var MoreData: Boolean); begin if (FReportData <> nil) and (CurrentItem < FReportData.LineCount) then MoreData := true else begin MoreData := false; Exit; end; LineQRLabel.Caption := FReportData.Line(CurrentItem); BoldLine := FReportData.LineBold(CurrentItem) or FReportData.LineBoldItalic(CurrentItem); ItalicLine := FReportData.LineItalic(CurrentItem) or FReportData.LineBoldItalic(CurrentItem); Inc(CurrentItem); end; procedure TSalesReport.QuickRepStartPage(Sender: TCustomQuickRep); begin Inc(PageNumber); PageNumberQRLabel.Caption := 'Page ' + IntToStr(PageNumber); end; procedure TSalesReport.DetailBand1BeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean); begin if BoldLine then LineQRLabel.Font.Style := LineQRLabel.Font.Style + [fsBold] else LineQRLabel.Font.Style := LineQRLabel.Font.Style - [fsBold]; if ItalicLine then LineQRLabel.Font.Style := LineQRLabel.Font.Style + [fsItalic] else LineQRLabel.Font.Style := LineQRLabel.Font.Style - [fsItalic]; end; procedure TSalesReport.QuickRepAfterPreview(Sender: TObject); begin QuickReportOpen := false; end; end.