Page 1120 Cost Type Balance/Budget
- App
- Base Application
- Namespace
- Microsoft.CostAccounting.Account
- Versions
- 17-28
- Source table
- 1103
Versions171819202122232425262728
Source29
Source in 29
src/Layers/W1/BaseApp/CostAccounting/Account/CostTypeBalanceBudget.Page.al359 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.CostAccounting.Account;
using Microsoft.CostAccounting.Budget;
using Microsoft.CostAccounting.Ledger;
using Microsoft.Finance.GeneralLedger.Budget;
using Microsoft.Foundation.Enums;
using Microsoft.Foundation.Period;
using System.Utilities;
page 1120 "Cost Type Balance/Budget"
{
Caption = 'Cost Type Balance/Budget';
DeleteAllowed = false;
InsertAllowed = false;
PageType = Worksheet;
RefreshOnActivate = true;
SaveValues = true;
SourceTable = "Cost Type";
layout
{
area(content)
{
group(Options)
{
Caption = 'Options';
field(BudgetFilter; BudgetFilter)
{
ApplicationArea = CostAccounting;
Caption = 'Budget Filter';
LookupPageID = "Cost Budget Names";
TableRelation = "Cost Budget Name".Name;
ToolTip = 'Specifies the budget for which you want to view budget amounts.';
trigger OnValidate()
begin
CurrPage.Update(false);
end;
}
field(CostCenterFilter; CostCenterFilter)
{
ApplicationArea = CostAccounting;
Caption = 'Cost Center Filter';
ToolTip = 'Specifies the cost center for which you want to view budget amounts.';
trigger OnLookup(var Text: Text): Boolean
var
CostCenter: Record "Cost Center";
begin
exit(CostCenter.LookupCostCenterFilter(Text));
end;
trigger OnValidate()
begin
CurrPage.Update(false);
end;
}
field(CostObjectFilter; CostObjectFilter)
{
ApplicationArea = CostAccounting;
Caption = 'Cost Object Filter';
ToolTip = 'Specifies the cost object for which you want to view budget amounts.';
trigger OnLookup(var Text: Text): Boolean
var
CostObject: Record "Cost Object";
begin
exit(CostObject.LookupCostObjectFilter(Text));
end;
trigger OnValidate()
begin
CurrPage.Update(false);
end;
}
field(PeriodType; PeriodType)
{
ApplicationArea = CostAccounting;
Caption = 'View by';
ToolTip = 'Specifies by which period amounts are displayed.';
trigger OnValidate()
begin
FindPeriod('');
end;
}
field(AmountType; AmountType)
{
ApplicationArea = CostAccounting;
Caption = 'View as';
ToolTip = 'Specifies how amounts are displayed. Net Change: The net change in the balance for the selected period. Balance at Date: The balance as of the last day in the selected period.';
trigger OnValidate()
begin
if (AmountType = AmountType::"Balance at Date") or (AmountType = AmountType::"Net Change") then
FindPeriod('');
end;
}
field(DateFilter; DateFilter)
{
ApplicationArea = CostAccounting;
Caption = 'Date Filter';
Editable = false;
ToolTip = 'Specifies the dates that will be used to filter the amounts in the window.';
}
}
repeater(Control12)
{
IndentationColumn = NameIndent;
IndentationControls = Name;
ShowCaption = false;
field(Number; Rec."No.")
{
ApplicationArea = CostAccounting;
Style = Strong;
StyleExpr = Emphasize;
ToolTip = 'Specifies the number of the involved entry or record, according to the specified number series.';
}
field(Name; Rec.Name)
{
ApplicationArea = CostAccounting;
Style = Strong;
StyleExpr = Emphasize;
ToolTip = 'Specifies the name of the cost type.';
}
field("Net Change"; Rec."Net Change")
{
ApplicationArea = CostAccounting;
BlankZero = true;
Style = Strong;
StyleExpr = Emphasize;
ToolTip = 'Specifies the net change in the account balance during the time period in the Date Filter field.';
}
field("Debit Amount"; Rec."Debit Amount")
{
ApplicationArea = CostAccounting;
BlankNumbers = BlankNegAndZero;
Style = Strong;
StyleExpr = Emphasize;
ToolTip = 'Specifies the total of the ledger entries that represent debits.';
Visible = false;
}
field("Credit Amount"; Rec."Credit Amount")
{
ApplicationArea = CostAccounting;
BlankNumbers = BlankNegAndZero;
Style = Strong;
StyleExpr = Emphasize;
ToolTip = 'Specifies the total of the ledger entries that represent credits.';
Visible = false;
}
field("Budget Amount"; Rec."Budget Amount")
{
ApplicationArea = CostAccounting;
BlankZero = true;
Style = Strong;
StyleExpr = Emphasize;
ToolTip = 'Specifies either the cost type''s total budget or, if you have specified a filter in the Budget Filter field, a filtered budget. The contents of the field are calculated by using the entries in the Amount field in the Cost Budget Entry table.';
trigger OnValidate()
begin
CalculateFields();
end;
}
field(BudgetPct; BudgetPct)
{
ApplicationArea = CostAccounting;
AutoFormatType = 0;
BlankZero = true;
Caption = 'Balance/Budget (%)';
DecimalPlaces = 1 : 1;
Editable = false;
ToolTip = 'Specifies the balance as a percentage of the budgeted amount.';
}
}
}
area(factboxes)
{
systempart(Control1900383207; Links)
{
ApplicationArea = RecordLinks;
Visible = false;
}
systempart(Control1905767507; Notes)
{
ApplicationArea = Notes;
Visible = false;
}
}
}
actions
{
area(navigation)
{
group("A&ccount")
{
Caption = 'A&ccount';
Image = ChartOfAccounts;
action(Card)
{
ApplicationArea = CostAccounting;
Caption = 'Card';
Image = EditLines;
RunObject = Page "Cost Type Card";
RunPageLink = "No." = field("No."),
"Date Filter" = field("Date Filter"),
"Cost Center Filter" = field("Cost Center Filter"),
"Cost Object Filter" = field("Cost Object Filter"),
"Budget Filter" = field("Budget Filter");
ShortCutKey = 'Shift+F7';
ToolTip = 'View or edit detailed information about cost type.';
}
action("Cost E&ntries")
{
ApplicationArea = CostAccounting;
Caption = 'Cost E&ntries';
Image = CostEntries;
//The property 'PromotedCategory' can only be set if the property 'Promoted' is set to 'true'
//PromotedCategory = Process;
RunObject = Page "Cost Entries";
RunPageLink = "Cost Type No." = field("No."),
"Posting Date" = field("Date Filter");
RunPageView = sorting("Cost Type No.", "Posting Date");
ShortCutKey = 'Ctrl+F7';
ToolTip = 'View cost entries, which can come from sources such as automatic transfer of general ledger entries to cost entries, manual posting for pure cost entries, internal charges, and manual allocations, and automatic allocation postings for actual costs.';
}
}
}
area(processing)
{
action(PreviousPeriod)
{
ApplicationArea = CostAccounting;
Caption = 'Previous Period';
Image = PreviousRecord;
ToolTip = 'Show the information based on the previous period. If you set the View by field to Day, the date filter changes to the day before.';
trigger OnAction()
begin
FindPeriod('<=');
end;
}
action(NextPeriod)
{
ApplicationArea = CostAccounting;
Caption = 'Next Period';
Image = NextRecord;
ToolTip = 'Show the information based on the next period. If you set the View by field to Day, the date filter changes to the day before.';
trigger OnAction()
begin
FindPeriod('>=');
end;
}
group("F&unctions")
{
Caption = 'F&unctions';
Image = "Action";
action("Copy Budget")
{
ApplicationArea = CostAccounting;
Caption = 'Copy Budget';
Ellipsis = true;
Image = CopyBudget;
RunObject = Report "Copy G/L Budget";
ToolTip = 'Create a copy of the current budget.';
}
}
}
area(Promoted)
{
group(Category_Process)
{
Caption = 'Process';
actionref(PreviousPeriod_Promoted; PreviousPeriod)
{
}
actionref(NextPeriod_Promoted; NextPeriod)
{
}
}
}
}
trigger OnAfterGetRecord()
begin
NameIndent := 0;
CalculateFields();
NameIndent := Rec.Indentation;
Emphasize := Rec.Type <> Rec.Type::"Cost Type";
end;
trigger OnOpenPage()
begin
BudgetFilter := Rec.GetFilter("Budget Filter");
FindPeriod('');
end;
var
PeriodType: Enum "Analysis Period Type";
AmountType: Enum "Analysis Amount Type";
BudgetPct: Decimal;
Emphasize: Boolean;
NameIndent: Integer;
BudgetFilter: Code[10];
CostCenterFilter: Text[1024];
CostObjectFilter: Text[1024];
DateFilter: Text;
local procedure FindPeriod(SearchText: Code[3])
var
Calendar: Record Date;
PeriodPageMgt: Codeunit PeriodPageManagement;
begin
if Rec.GetFilter("Date Filter") <> '' then begin
Calendar.SetFilter("Period Start", Rec.GetFilter("Date Filter"));
if not PeriodPageMgt.FindDate('+', Calendar, PeriodType) then
PeriodPageMgt.FindDate('+', Calendar, PeriodType::Day);
Calendar.SetRange("Period Start");
end;
PeriodPageMgt.FindDate(SearchText, Calendar, PeriodType);
if AmountType = AmountType::"Net Change" then
if Calendar."Period Start" = Calendar."Period End" then
Rec.SetRange("Date Filter", Calendar."Period Start")
else
Rec.SetRange("Date Filter", Calendar."Period Start", Calendar."Period End")
else
Rec.SetRange("Date Filter", 0D, Calendar."Period End");
DateFilter := Rec.GetFilter("Date Filter");
CurrPage.Update(false);
end;
local procedure CalculateFields()
begin
Rec.SetFilter("Budget Filter", BudgetFilter);
Rec.SetFilter("Cost Center Filter", CostCenterFilter);
Rec.SetFilter("Cost Object Filter", CostObjectFilter);
Rec.CalcFields("Net Change", "Budget Amount");
if Rec."Budget Amount" = 0 then
BudgetPct := 0
else
BudgetPct := Round(Rec."Net Change" / Rec."Budget Amount" * 100);
OnAfterCalculateFields(Rec, BudgetPct);
end;
[IntegrationEvent(false, false)]
local procedure OnAfterCalculateFields(var CostType: Record "Cost Type"; var BudgetPct: Decimal);
begin
end;
}