Page 417 Post Pmts and Rec. Bank Acc., source in 29
Source29
src/Layers/W1/BaseApp/Bank/Reconciliation/PostPmtsAndRecBankAcc.Page.al120 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.Bank.Reconciliation;
using Microsoft.Bank.BankAccount;
/// <summary>
/// Action page for posting payments and reconciling bank accounts.
/// Provides combined workflow for payment posting and reconciliation processing.
/// </summary>
page 417 "Post Pmts and Rec. Bank Acc."
{
PageType = StandardDialog;
SourceTable = "Bank Acc. Reconciliation";
Caption = 'Bank Account Reconciliation';
layout
{
area(Content)
{
field("Balance Last Statement"; Rec."Balance Last Statement")
{
ApplicationArea = Basic, Suite;
Caption = 'Balance Last Statement';
trigger OnValidate()
var
BankAccReconciliationLine: Record "Bank Acc. Reconciliation Line";
begin
Rec.Modify();
BankAccReconciliationLine.LinesExist(Rec);
BankAccReconciliationLine.CalcSums("Statement Amount", Difference);
TotalBalance := Rec."Balance Last Statement" + BankAccReconciliationLine."Statement Amount";
CurrPage.Update();
end;
}
field("Statement Ending Balance"; Rec."Statement Ending Balance")
{
ApplicationArea = Basic, Suite;
Caption = 'Statement Ending Balance';
trigger OnValidate()
begin
Rec.Modify();
CurrPage.Update();
end;
}
field(TotalBalance; TotalBalance)
{
ApplicationArea = Basic, Suite;
AutoFormatExpression = GetCurrencyCode();
AutoFormatType = 1;
Editable = false;
Caption = 'Total Balance';
ToolTip = 'Specifies the accumulated balance of the bank reconciliation, which consists of the Balance Last Statement field, plus the balance in the Statement Amount field.';
}
field(StatementDate; Rec."Statement Date")
{
ApplicationArea = Basic, Suite;
Caption = 'Statement Date';
}
}
}
actions
{
}
trigger OnAfterGetCurrRecord()
var
BankAccReconciliationLine: Record "Bank Acc. Reconciliation Line";
begin
BankAccReconciliationLine.LinesExist(Rec);
BankAccReconciliationLine.CalcSums("Statement Amount", Difference);
TotalBalance := Rec."Balance Last Statement" + BankAccReconciliationLine."Statement Amount";
end;
trigger OnQueryClosePage(CloseAction: Action): Boolean
begin
if CloseAction = CloseAction::LookupOK then
exit(CheckStatementDate());
end;
var
TotalBalance: Decimal;
StatementDateEmptyMsg: Label 'The bank account reconciliation does not have a statement date. %1 is the latest date on a line. Do you want to use that date for the statement?', Comment = '%1 - statement date';
local procedure GetCurrencyCode(): Code[10]
var
BankAcc: Record "Bank Account";
begin
if Rec."Bank Account No." = BankAcc."No." then
exit(BankAcc."Currency Code");
if BankAcc.Get(Rec."Bank Account No.") then
exit(BankAcc."Currency Code");
exit('');
end;
local procedure CheckStatementDate(): Boolean
var
BankAccReconciliationLine: Record "Bank Acc. Reconciliation Line";
begin
BankAccReconciliationLine.SetFilter("Bank Account No.", Rec."Bank Account No.");
BankAccReconciliationLine.SetFilter("Statement No.", Rec."Statement No.");
BankAccReconciliationLine.SetCurrentKey("Transaction Date");
BankAccReconciliationLine.Ascending := false;
if BankAccReconciliationLine.FindFirst() then
if Rec."Statement Date" = 0D then
if Confirm(StrSubstNo(StatementDateEmptyMsg, Format(BankAccReconciliationLine."Transaction Date"))) then begin
Rec."Statement Date" := BankAccReconciliationLine."Transaction Date";
Rec.Modify();
exit(true);
end else
exit(false);
exit(true);
end;
}