Codeunit 8812 Customer Statement Subscr
- App
- Base Application
- Namespace
- Microsoft.Sales.Customer
- Versions
- 24-28
Versions171819202122232425262728
Source29
Source in 29
src/Layers/W1/BaseApp/Sales/Customer/CustomerStatementSubscr.codeunit.al56 lines, Copyright (c) Microsoft Corporation. MIT
// ------------------------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// ------------------------------------------------------------------------------------------------
namespace Microsoft.Sales.Customer;
using Microsoft.Foundation.Reporting;
using System.Environment;
Using System.Utilities;
/// <summary>
/// Subscribes to report events to handle customer statement PDF generation for API clients.
/// </summary>
codeunit 8812 "Customer Statement Subscr"
{
EventSubscriberInstance = Manual;
trigger OnRun()
begin
end;
[EventSubscriber(ObjectType::Table, database::"Report Selections", 'OnBeforeSaveReportAsPDF', '', true, true)]
local procedure OnBeforeSaveReportAsPDF(var ReportID: Integer; RecordVariant: Variant; var LayoutCode: Code[20]; var IsHandled: Boolean; FilePath: Text[250]; ReportUsage: Enum "Report Selection Usage"; SaveToBlob: Boolean; var TempBlob: Codeunit "Temp Blob"; var ReportSelections: Record "Report Selections");
var
StandardStatement: Report "Standard Statement";
CustomLayoutReporting: Codeunit "Custom Layout Reporting";
ClientTypeManagement: Codeunit "Client Type Management";
RecRef: RecordRef;
NewDateChoice: Option "Due Date","Posting Date";
OutStream: OutStream;
LastUsedParameters: Text;
StartDate, EndDate : Date;
begin
if ReportID <> Report::"Standard Statement" then
exit;
if not (ClientTypeManagement.GetCurrentClientType() in [CLIENTTYPE::SOAP, CLIENTTYPE::OData, CLIENTTYPE::ODataV4, ClientType::Api]) then
exit;
IsHandled := true;
if RecordVariant.IsRecord() then
RecRef.GetTable(RecordVariant)
else
if RecordVariant.IsRecordRef() then
RecRef := RecordVariant;
StartDate := CalcDate('<-3M-CM>', Today);
EndDate := Today;
LastUsedParameters := CustomLayoutReporting.GetReportRequestPageParameters(ReportID);
TempBlob.CreateOutStream(OutStream);
StandardStatement.InitializeRequest(true, true, true, true, false, false, '', NewDateChoice::"Due Date", false, StartDate, EndDate);
StandardStatement.SaveAs(LastUsedParameters, ReportFormat::Pdf, OutStream, RecRef);
end;
}