Page 623 Unapply Customer Entries, source in 29
Source29
src/Layers/W1/BaseApp/Sales/Receivables/UnapplyCustomerEntries.Page.al328 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.Receivables;
using Microsoft.Finance.ReceivablesPayables;
using Microsoft.Sales.Customer;
using System.Security.User;
using System.Utilities;
/// <summary>
/// Displays detailed customer ledger entries related to an application and enables users to reverse (unapply) the application.
/// </summary>
page 623 "Unapply Customer Entries"
{
Caption = 'Unapply Customer Entries';
DataCaptionExpression = Caption();
DeleteAllowed = false;
InsertAllowed = false;
PageType = Worksheet;
SourceTable = "Detailed Cust. Ledg. Entry";
SourceTableTemporary = true;
layout
{
area(content)
{
group(General)
{
Caption = 'General';
field(DocuNo; DocNo)
{
ApplicationArea = Basic, Suite;
Caption = 'Document No.';
ToolTip = 'Specifies the document number of the entry to be unapplied.';
}
field(PostDate; PostingDate)
{
ApplicationArea = Basic, Suite;
Caption = 'Posting Date';
ToolTip = 'Specifies the posting date of the entry to be unapplied.';
}
}
repeater(Control1)
{
Editable = false;
ShowCaption = false;
field("Posting Date"; Rec."Posting Date")
{
ApplicationArea = Basic, Suite;
}
field("Entry Type"; Rec."Entry Type")
{
ApplicationArea = Basic, Suite;
}
field("Document Type"; Rec."Document Type")
{
ApplicationArea = Basic, Suite;
}
field("Document No."; Rec."Document No.")
{
ApplicationArea = Basic, Suite;
}
field("Customer No."; Rec."Customer No.")
{
ApplicationArea = Basic, Suite;
}
field("Initial Document Type"; Rec."Initial Document Type")
{
ApplicationArea = Basic, Suite;
}
field(DocumentNo; GetDocumentNo())
{
ApplicationArea = Basic, Suite;
Caption = 'Initial Document No.';
DrillDown = false;
ToolTip = 'Specifies the number of the document for which the entry is unapplied.';
}
field("Initial Entry Global Dim. 1"; Rec."Initial Entry Global Dim. 1")
{
ApplicationArea = Dimensions;
Visible = false;
}
field("Initial Entry Global Dim. 2"; Rec."Initial Entry Global Dim. 2")
{
ApplicationArea = Dimensions;
Visible = false;
}
field("Currency Code"; Rec."Currency Code")
{
ApplicationArea = Suite;
}
field(Amount; Rec.Amount)
{
ApplicationArea = Basic, Suite;
}
field("Amount (LCY)"; Rec."Amount (LCY)")
{
ApplicationArea = Basic, Suite;
}
field("Debit Amount"; Rec."Debit Amount")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Debit Amount (LCY)"; Rec."Debit Amount (LCY)")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Credit Amount"; Rec."Credit Amount")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Credit Amount (LCY)"; Rec."Credit Amount (LCY)")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Initial Entry Due Date"; Rec."Initial Entry Due Date")
{
ApplicationArea = Basic, Suite;
}
field("User ID"; Rec."User ID")
{
ApplicationArea = Basic, Suite;
LookupPageID = "User Lookup";
Visible = false;
}
field("Source Code"; Rec."Source Code")
{
ApplicationArea = Suite;
Visible = false;
}
field("Reason Code"; Rec."Reason Code")
{
ApplicationArea = Suite;
Visible = false;
}
field("Cust. Ledger Entry No."; Rec."Cust. Ledger Entry No.")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Entry No."; Rec."Entry No.")
{
ApplicationArea = Basic, Suite;
}
}
}
}
actions
{
area(processing)
{
action(Unapply)
{
ApplicationArea = Basic, Suite;
Caption = '&Unapply';
Image = UnApply;
ToolTip = 'Unselect one or more ledger entries that you want to unapply this record.';
trigger OnAction()
var
CustEntryApplyPostedEntries: Codeunit "CustEntry-Apply Posted Entries";
ConfirmManagement: Codeunit "Confirm Management";
begin
if Rec.IsEmpty() then
Error(Text010);
if not ConfirmManagement.GetResponseOrDefault(Text011, true) then
exit;
ApplyUnapplyParameters."Document No." := DocNo;
ApplyUnapplyParameters."Posting Date" := PostingDate;
CustEntryApplyPostedEntries.PostUnApplyCustomer(DtldCustLedgEntry2, ApplyUnapplyParameters);
PostingDate := 0D;
DocNo := '';
Rec.DeleteAll();
Message(Text009);
CurrPage.Close();
end;
}
action(Preview)
{
ApplicationArea = Basic, Suite;
Caption = 'Preview Unapply';
Image = ViewPostedOrder;
ToolTip = 'Preview how unapplying one or more ledger entries will look like.';
trigger OnAction()
var
CustEntryApplyPostedEntries: Codeunit "CustEntry-Apply Posted Entries";
begin
if Rec.IsEmpty() then
Error(Text010);
ApplyUnapplyParameters."Document No." := DocNo;
ApplyUnapplyParameters."Posting Date" := PostingDate;
CustEntryApplyPostedEntries.PreviewUnapply(DtldCustLedgEntry2, ApplyUnapplyParameters);
end;
}
}
area(Promoted)
{
group(Category_Process)
{
Caption = 'Process', Comment = 'Generated from the PromotedActionCategories property index 1.';
actionref(Unapply_Promoted; Unapply)
{
}
actionref(Preview_Promoted; Preview)
{
}
}
}
}
trigger OnOpenPage()
begin
InsertEntries();
end;
var
#pragma warning disable AA0074
Text009: Label 'The entries were successfully unapplied.';
Text010: Label 'There is nothing to unapply.';
Text011: Label 'To unapply these entries, correcting entries will be posted.\Do you want to unapply the entries?';
#pragma warning restore AA0074
protected var
DtldCustLedgEntry2: Record "Detailed Cust. Ledg. Entry";
Cust: Record Customer;
ApplyUnapplyParameters: Record "Apply Unapply Parameters";
DocNo: Code[20];
PostingDate: Date;
CustLedgEntryNo: Integer;
/// <summary>
/// Sets the detailed customer ledger entry to be unapplied and initializes related page variables.
/// </summary>
/// <param name="EntryNo">The entry number of the detailed customer ledger entry to unapply.</param>
procedure SetDtldCustLedgEntry(EntryNo: Integer)
begin
DtldCustLedgEntry2.Get(EntryNo);
CustLedgEntryNo := DtldCustLedgEntry2."Cust. Ledger Entry No.";
PostingDate := DtldCustLedgEntry2."Posting Date";
DocNo := DtldCustLedgEntry2."Document No.";
Cust.Get(DtldCustLedgEntry2."Customer No.");
end;
local procedure InsertEntries()
var
DtldCustLedgEntry: Record "Detailed Cust. Ledg. Entry";
begin
if DtldCustLedgEntry2."Transaction No." = 0 then begin
DtldCustLedgEntry.SetCurrentKey("Application No.", "Customer No.", "Entry Type");
DtldCustLedgEntry.SetRange("Application No.", DtldCustLedgEntry2."Application No.");
end else begin
DtldCustLedgEntry.SetCurrentKey("Transaction No.", "Customer No.", "Entry Type");
DtldCustLedgEntry.SetRange("Transaction No.", DtldCustLedgEntry2."Transaction No.");
end;
DtldCustLedgEntry.SetRange("Customer No.", DtldCustLedgEntry2."Customer No.");
OnInsertEntriesOnAfterSetFilters(DtldCustLedgEntry, DtldCustLedgEntry2);
Rec.DeleteAll();
if DtldCustLedgEntry.FindSet() then
repeat
if (DtldCustLedgEntry."Entry Type" <> DtldCustLedgEntry."Entry Type"::"Initial Entry") and
not DtldCustLedgEntry.Unapplied
then begin
Rec := DtldCustLedgEntry;
OnBeforeRecInsert(Rec, DtldCustLedgEntry, DtldCustLedgEntry2);
Rec.Insert();
end;
until DtldCustLedgEntry.Next() = 0;
end;
local procedure GetDocumentNo(): Code[20]
var
CustLedgEntry: Record "Cust. Ledger Entry";
begin
if CustLedgEntry.Get(Rec."Cust. Ledger Entry No.") then;
exit(CustLedgEntry."Document No.");
end;
/// <summary>
/// Generates the page caption showing customer information and entry number.
/// </summary>
/// <returns>The formatted caption text containing customer number, name, and entry number.</returns>
procedure Caption(): Text
var
CustLedgEntry: Record "Cust. Ledger Entry";
begin
exit(StrSubstNo(
'%1 %2 %3 %4',
Cust."No.",
Cust.Name,
CustLedgEntry.FieldCaption("Entry No."),
CustLedgEntryNo));
end;
/// <summary>
/// Raised before inserting a detailed customer ledger entry into the temporary table for display.
/// </summary>
/// <param name="RecDtldCustLedgEntry">The record to be inserted into the temporary table.</param>
/// <param name="DtldCustLedgEntry">The source detailed customer ledger entry.</param>
/// <param name="DtldCustLedgEntry2">The original detailed customer ledger entry being unapplied.</param>
[IntegrationEvent(false, false)]
local procedure OnBeforeRecInsert(var RecDtldCustLedgEntry: Record "Detailed Cust. Ledg. Entry"; var DtldCustLedgEntry: Record "Detailed Cust. Ledg. Entry"; DtldCustLedgEntry2: Record "Detailed Cust. Ledg. Entry")
begin
end;
/// <summary>
/// Raised after filters have been set when inserting entries into the page data source.
/// </summary>
/// <param name="DetailedCustLedgEntry">The detailed customer ledger entry with filters applied.</param>
/// <param name="DetailedCustLedgEntry2">The original detailed customer ledger entry being unapplied.</param>
[IntegrationEvent(false, false)]
local procedure OnInsertEntriesOnAfterSetFilters(var DetailedCustLedgEntry: Record "Detailed Cust. Ledg. Entry"; DetailedCustLedgEntry2: Record "Detailed Cust. Ledg. Entry")
begin
end;
}