Table 305 Issued Fin. Charge Memo Line, source in 29
Source29
src/Layers/W1/BaseApp/Sales/FinanceCharge/IssuedFinChargeMemoLine.Table.al346 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.FinanceCharge;
using Microsoft.Finance.GeneralLedger.Account;
using Microsoft.Finance.GeneralLedger.Journal;
using Microsoft.Finance.GeneralLedger.Setup;
using Microsoft.Finance.SalesTax;
using Microsoft.Finance.VAT.Clause;
using Microsoft.Finance.VAT.Setup;
using Microsoft.Foundation.Enums;
using Microsoft.Sales.Receivables;
using Microsoft.Utilities;
/// <summary>
/// Stores line items for posted finance charge memos including amounts, interest rates, and VAT details.
/// </summary>
table 305 "Issued Fin. Charge Memo Line"
{
Caption = 'Issued Fin. Charge Memo Line';
DataClassification = CustomerContent;
fields
{
/// <summary>
/// Specifies the issued finance charge memo number that this line belongs to.
/// </summary>
field(1; "Finance Charge Memo No."; Code[20])
{
Caption = 'Finance Charge Memo No.';
TableRelation = "Issued Fin. Charge Memo Header";
}
/// <summary>
/// Specifies the sequential line number within the issued finance charge memo.
/// </summary>
field(2; "Line No."; Integer)
{
Caption = 'Line No.';
}
/// <summary>
/// Specifies the line number that this line is attached to, used for extended text lines.
/// </summary>
field(3; "Attached to Line No."; Integer)
{
Caption = 'Attached to Line No.';
TableRelation = "Issued Fin. Charge Memo Line"."Line No." where("Finance Charge Memo No." = field("Finance Charge Memo No."));
}
/// <summary>
/// Specifies the line type: blank for text, G/L Account for fees, or Customer Ledger Entry for interest charges.
/// </summary>
field(4; Type; Option)
{
Caption = 'Type';
ToolTip = 'Specifies the line type.';
OptionCaption = ' ,G/L Account,Customer Ledger Entry';
OptionMembers = " ","G/L Account","Customer Ledger Entry";
}
/// <summary>
/// Specifies the customer ledger entry number for which interest was charged.
/// </summary>
field(5; "Entry No."; Integer)
{
BlankZero = true;
Caption = 'Entry No.';
TableRelation = "Cust. Ledger Entry";
trigger OnLookup()
begin
if Type <> Type::"Customer Ledger Entry" then
exit;
IssuedFinChrgMemoHeader.Get("Finance Charge Memo No.");
SetCustLedgEntryFilter(CustLedgEntry, IssuedFinChrgMemoHeader, FieldNo("Entry No."));
if CustLedgEntry.Get("Entry No.") then;
PAGE.RunModal(0, CustLedgEntry);
end;
}
/// <summary>
/// Specifies the posting date of the original customer ledger entry.
/// </summary>
field(7; "Posting Date"; Date)
{
Caption = 'Posting Date';
ToolTip = 'Specifies the posting date of the customer ledger entry that this finance charge memo line is for.';
}
/// <summary>
/// Specifies the document date of the original customer ledger entry.
/// </summary>
field(8; "Document Date"; Date)
{
Caption = 'Document Date';
ToolTip = 'Specifies the date when the related document was created.';
}
/// <summary>
/// Specifies the due date of the original customer ledger entry.
/// </summary>
field(9; "Due Date"; Date)
{
Caption = 'Due Date';
ToolTip = 'Specifies the due date of the customer ledger entry this finance charge memo line is for.';
}
/// <summary>
/// Specifies the document type of the original customer ledger entry.
/// </summary>
field(10; "Document Type"; Enum "Gen. Journal Document Type")
{
Caption = 'Document Type';
ToolTip = 'Specifies the document type of the customer ledger entry this finance charge memo line is for.';
}
/// <summary>
/// Specifies the document number of the original customer ledger entry.
/// </summary>
field(11; "Document No."; Code[20])
{
Caption = 'Document No.';
ToolTip = 'Specifies the document number of the customer ledger entry this finance charge memo line is for.';
trigger OnLookup()
begin
if Type <> Type::"Customer Ledger Entry" then
exit;
IssuedFinChrgMemoHeader.Get("Finance Charge Memo No.");
SetCustLedgEntryFilter(CustLedgEntry, IssuedFinChrgMemoHeader, FieldNo("Document No."));
if CustLedgEntry.Get("Entry No.") then;
PAGE.RunModal(0, CustLedgEntry);
end;
}
/// <summary>
/// Specifies the description of the line, typically the customer ledger entry description or G/L account name.
/// </summary>
field(12; Description; Text[100])
{
Caption = 'Description';
ToolTip = 'Specifies an entry description, based on the contents of the Type field.';
}
/// <summary>
/// Specifies the original amount of the customer ledger entry before any payments.
/// </summary>
field(13; "Original Amount"; Decimal)
{
AutoFormatExpression = GetCurrencyCode();
AutoFormatType = 1;
BlankZero = true;
Caption = 'Original Amount';
ToolTip = 'Specifies the original amount of the customer ledger entry that this finance charge memo line is for.';
}
/// <summary>
/// Specifies the remaining unpaid amount of the customer ledger entry at the time of issue.
/// </summary>
field(14; "Remaining Amount"; Decimal)
{
AutoFormatExpression = GetCurrencyCode();
AutoFormatType = 1;
BlankZero = true;
Caption = 'Remaining Amount';
ToolTip = 'Specifies the remaining amount of the customer ledger entry this finance charge memo line is for.';
}
/// <summary>
/// Specifies the G/L account number for additional fees or the standard text code for text lines.
/// </summary>
field(15; "No."; Code[20])
{
Caption = 'No.';
ToolTip = 'Specifies the number of the involved entry or record, according to the specified number series.';
TableRelation = if (Type = const(" ")) "Standard Text"
else
if (Type = const("G/L Account")) "G/L Account";
}
/// <summary>
/// Specifies the interest amount or additional fee amount that was charged.
/// </summary>
field(16; Amount; Decimal)
{
AutoFormatExpression = GetCurrencyCode();
AutoFormatType = 1;
BlankZero = true;
Caption = 'Amount';
ToolTip = 'Specifies the amount in the currency of the finance charge memo.';
}
/// <summary>
/// Specifies the interest rate percentage that was used to calculate the finance charge.
/// </summary>
field(17; "Interest Rate"; Decimal)
{
AutoFormatType = 0;
BlankZero = true;
Caption = 'Interest Rate';
DecimalPlaces = 0 : 5;
}
/// <summary>
/// Specifies the general product posting group used for posting the finance charge.
/// </summary>
field(18; "Gen. Prod. Posting Group"; Code[20])
{
Caption = 'Gen. Prod. Posting Group';
TableRelation = "Gen. Product Posting Group";
}
/// <summary>
/// Specifies the VAT percentage that was applied to the finance charge.
/// </summary>
field(19; "VAT %"; Decimal)
{
AutoFormatType = 0;
Caption = 'VAT %';
DecimalPlaces = 0 : 5;
}
/// <summary>
/// Specifies how VAT was calculated for this line.
/// </summary>
field(20; "VAT Calculation Type"; Enum "Tax Calculation Type")
{
Caption = 'VAT Calculation Type';
}
/// <summary>
/// Specifies the VAT amount that was calculated on the finance charge.
/// </summary>
field(21; "VAT Amount"; Decimal)
{
AutoFormatExpression = GetCurrencyCode();
AutoFormatType = 1;
Caption = 'VAT Amount';
}
/// <summary>
/// Specifies the tax group code used for sales tax calculation.
/// </summary>
field(22; "Tax Group Code"; Code[20])
{
Caption = 'Tax Group Code';
TableRelation = "Tax Group";
}
/// <summary>
/// Specifies the VAT product posting group that was used for the memo line.
/// </summary>
field(23; "VAT Prod. Posting Group"; Code[20])
{
Caption = 'VAT Prod. Posting Group';
TableRelation = "VAT Product Posting Group";
}
/// <summary>
/// Specifies the VAT identifier code from the VAT posting setup.
/// </summary>
field(24; "VAT Identifier"; Code[20])
{
Caption = 'VAT Identifier';
Editable = false;
}
/// <summary>
/// Specifies the type of line: finance charge line, beginning text, ending text, or rounding.
/// </summary>
field(25; "Line Type"; Option)
{
Caption = 'Line Type';
OptionCaption = 'Finance Charge Memo Line,Beginning Text,Ending Text,Rounding';
OptionMembers = "Finance Charge Memo Line","Beginning Text","Ending Text",Rounding;
}
/// <summary>
/// Specifies the VAT clause code that provides explanatory text for VAT.
/// </summary>
field(26; "VAT Clause Code"; Code[20])
{
Caption = 'VAT Clause Code';
TableRelation = "VAT Clause";
}
/// <summary>
/// Indicates whether this line contains detailed interest rate breakdown when multiple rates applied.
/// </summary>
field(30; "Detailed Interest Rates Entry"; Boolean)
{
Caption = 'Detailed Interest Rates Entry';
}
/// <summary>
/// Indicates whether this line was created automatically by the system.
/// </summary>
field(101; "System-Created Entry"; Boolean)
{
Caption = 'System-Created Entry';
Editable = false;
}
}
keys
{
key(Key1; "Finance Charge Memo No.", "Line No.")
{
Clustered = true;
MaintainSIFTIndex = false;
}
key(Key2; "Finance Charge Memo No.", Type, "Detailed Interest Rates Entry")
{
MaintainSQLIndex = false;
SumIndexFields = Amount, "VAT Amount", "Remaining Amount";
}
key(Key3; "Finance Charge Memo No.", "Detailed Interest Rates Entry")
{
MaintainSQLIndex = false;
SumIndexFields = Amount, "VAT Amount", "Remaining Amount";
}
}
fieldgroups
{
}
var
IssuedFinChrgMemoHeader: Record "Issued Fin. Charge Memo Header";
CustLedgEntry: Record "Cust. Ledger Entry";
/// <summary>
/// Retrieves the currency code from the parent issued finance charge memo header.
/// </summary>
/// <returns>The currency code of the issued finance charge memo.</returns>
procedure GetCurrencyCode(): Code[10]
var
IssuedFinChrgMemoHeader: Record "Issued Fin. Charge Memo Header";
begin
if "Finance Charge Memo No." = IssuedFinChrgMemoHeader."No." then
exit(IssuedFinChrgMemoHeader."Currency Code");
if IssuedFinChrgMemoHeader.Get("Finance Charge Memo No.") then
exit(IssuedFinChrgMemoHeader."Currency Code");
exit('');
end;
local procedure SetCustLedgEntryFilter(var CustLedgEntry: Record "Cust. Ledger Entry"; IssuedFinChrgMemoHeader: Record "Issued Fin. Charge Memo Header"; CalledByFieldNo: Integer)
begin
CustLedgEntry.SetCurrentKey("Customer No.");
CustLedgEntry.SetRange("Customer No.", IssuedFinChrgMemoHeader."Customer No.");
OnAfterSetCustLedgEntryFilter(CustLedgEntry, Rec, CalledByFieldNo);
end;
/// <summary>
/// Raised after filters are set on customer ledger entries for lookup.
/// </summary>
/// <param name="CustLedgEntry">Specifies the customer ledger entry record with filters applied.</param>
/// <param name="IssuedFinChrgMemoLine">Specifies the issued finance charge memo line record.</param>
/// <param name="CalledByFieldNo">Specifies the field number that triggered the filter setup.</param>
[IntegrationEvent(false, false)]
local procedure OnAfterSetCustLedgEntryFilter(var CustLedgEntry: Record "Cust. Ledger Entry"; var IssuedFinChrgMemoLine: Record "Issued Fin. Charge Memo Line"; CalledByFieldNo: Integer)
begin
end;
}