Page 201 Job Journal, source in 29
Source29
src/Layers/W1/BaseApp/Projects/Project/Journal/JobJournal.Page.al1085 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.Projects.Project.Journal;
using Microsoft.Finance.Currency;
using Microsoft.Finance.Dimension;
using Microsoft.Foundation.Reporting;
using Microsoft.Inventory.Availability;
using Microsoft.Inventory.BOM;
using Microsoft.Inventory.Location;
using Microsoft.Pricing.Calculation;
using Microsoft.Projects.Project.Job;
using Microsoft.Projects.Project.Ledger;
using Microsoft.Projects.Project.Posting;
using Microsoft.Projects.TimeSheet;
using Microsoft.Utilities;
using System.Environment;
using System.Environment.Configuration;
using System.Integration;
page 201 "Job Journal"
{
AdditionalSearchTerms = 'project posting, Job Journals';
ApplicationArea = Jobs;
AutoSplitKey = true;
Caption = 'Project Journals';
DataCaptionFields = "Journal Batch Name";
DelayedInsert = true;
PageType = Worksheet;
AboutTitle = 'About Project Journals';
AboutText = 'Record and post project usage, costs, and sales by entering journal lines for resources, items, or accounts, with options to manage document numbering, apply discounts, and estimate remaining project quantities.';
SaveValues = true;
SourceTable = "Job Journal Line";
UsageCategory = Tasks;
layout
{
area(content)
{
field(CurrentJnlBatchName; CurrentJnlBatchName)
{
ApplicationArea = Jobs;
Caption = 'Batch Name';
Lookup = true;
ToolTip = 'Specifies the name of the journal batch, a personalized journal layout, that the journal is based on.';
trigger OnLookup(var Text: Text): Boolean
begin
CurrPage.SaveRecord();
JobJnlManagement.LookupName(CurrentJnlBatchName, Rec);
SetControlAppearanceFromBatch();
CurrPage.Update(false);
end;
trigger OnValidate()
begin
JobJnlManagement.CheckName(CurrentJnlBatchName, Rec);
CurrentJnlBatchNameOnAfterVali();
end;
}
repeater(Control1)
{
ShowCaption = false;
field("Line Type"; Rec."Line Type")
{
ApplicationArea = Jobs;
}
field("Posting Date"; Rec."Posting Date")
{
ApplicationArea = Jobs;
}
field("Document Date"; Rec."Document Date")
{
ApplicationArea = Jobs;
Visible = false;
}
field("Document No."; Rec."Document No.")
{
ApplicationArea = Jobs;
ShowMandatory = true;
}
field("External Document No."; Rec."External Document No.")
{
ApplicationArea = Jobs;
Visible = false;
}
field("Job No."; Rec."Job No.")
{
ApplicationArea = Jobs;
trigger OnValidate()
begin
JobJnlManagement.GetNames(Rec, JobDescription, AccName);
Rec.ShowShortcutDimCode(ShortcutDimCode);
end;
}
field("Job Task No."; Rec."Job Task No.")
{
ApplicationArea = Jobs;
trigger OnValidate()
begin
Rec.ShowShortcutDimCode(ShortcutDimCode);
end;
}
field(Type; Rec.Type)
{
ApplicationArea = Jobs;
trigger OnValidate()
begin
JobJnlManagement.GetNames(Rec, JobDescription, AccName);
end;
}
field("Price Calculation Method"; Rec."Price Calculation Method")
{
Visible = ExtendedPriceEnabled;
ApplicationArea = Basic, Suite;
}
field("Cost Calculation Method"; Rec."Cost Calculation Method")
{
Visible = ExtendedPriceEnabled;
ApplicationArea = Basic, Suite;
}
field("No."; Rec."No.")
{
ApplicationArea = Jobs;
trigger OnValidate()
begin
JobJnlManagement.GetNames(Rec, JobDescription, AccName);
Rec.ShowShortcutDimCode(ShortcutDimCode);
end;
}
field(Description; Rec.Description)
{
ApplicationArea = Jobs;
}
field("Description 2"; Rec."Description 2")
{
ApplicationArea = Jobs;
Visible = false;
}
field("Job Planning Line No."; Rec."Job Planning Line No.")
{
ApplicationArea = Jobs;
Visible = false;
}
field("Gen. Bus. Posting Group"; Rec."Gen. Bus. Posting Group")
{
ApplicationArea = Jobs;
Visible = false;
}
field("Gen. Prod. Posting Group"; Rec."Gen. Prod. Posting Group")
{
ApplicationArea = Jobs;
Visible = false;
}
field("Variant Code"; Rec."Variant Code")
{
ApplicationArea = Planning;
Visible = false;
}
field("Location Code"; Rec."Location Code")
{
ApplicationArea = Location;
}
field("Bin Code"; Rec."Bin Code")
{
ApplicationArea = Warehouse;
}
field("Work Type Code"; Rec."Work Type Code")
{
ApplicationArea = Jobs;
}
field("Currency Code"; Rec."Currency Code")
{
ApplicationArea = Jobs;
Visible = false;
trigger OnAssistEdit()
var
ChangeExchangeRate: Page "Change Exchange Rate";
begin
ChangeExchangeRate.SetParameter(Rec."Currency Code", Rec."Currency Factor", Rec."Posting Date");
if ChangeExchangeRate.RunModal() = ACTION::OK then
Rec.Validate("Currency Factor", ChangeExchangeRate.GetParameter());
Clear(ChangeExchangeRate);
end;
}
field("Unit of Measure Code"; Rec."Unit of Measure Code")
{
ApplicationArea = Jobs;
}
field(Quantity; Rec.Quantity)
{
ApplicationArea = Jobs;
}
field("Remaining Qty."; Rec."Remaining Qty.")
{
ApplicationArea = Jobs;
Visible = false;
}
field("Direct Unit Cost (LCY)"; Rec."Direct Unit Cost (LCY)")
{
ApplicationArea = Jobs;
ToolTip = 'Specifies the cost, in the local currency, of one unit of the selected item or resource.';
Visible = false;
}
field("Unit Cost"; Rec."Unit Cost")
{
ApplicationArea = Jobs;
ToolTip = 'Specifies the cost of one unit of the item or resource on the line.';
}
field("Unit Cost (LCY)"; Rec."Unit Cost (LCY)")
{
ApplicationArea = Jobs;
ToolTip = 'Specifies the cost, in LCY, of one unit of the item or resource on the line.';
}
field("Total Cost"; Rec."Total Cost")
{
ApplicationArea = Jobs;
}
field("Total Cost (LCY)"; Rec."Total Cost (LCY)")
{
ApplicationArea = Jobs;
ToolTip = 'Specifies the total cost for this journal line. The amount is in the local currency.';
}
field("Unit Price"; Rec."Unit Price")
{
ApplicationArea = Jobs;
}
field("Unit Price (LCY)"; Rec."Unit Price (LCY)")
{
ApplicationArea = Jobs;
ToolTip = 'Specifies the price, in LCY, of one unit of the item or resource. You can enter a price manually or have it entered according to the Price/Profit Calculation field on the related card.';
Visible = false;
}
field("Line Amount"; Rec."Line Amount")
{
ApplicationArea = Jobs;
}
field("Line Amount (LCY)"; Rec."Line Amount (LCY)")
{
ApplicationArea = Jobs;
ToolTip = 'Specifies the amount in the local currency that will be posted to the project ledger.';
Visible = false;
}
field("Line Discount Amount"; Rec."Line Discount Amount")
{
ApplicationArea = Jobs;
}
field("Line Discount %"; Rec."Line Discount %")
{
ApplicationArea = Jobs;
ToolTip = 'Specifies the line discount percentage.';
}
field("Total Price"; Rec."Total Price")
{
ApplicationArea = Jobs;
Visible = false;
}
field("Total Price (LCY)"; Rec."Total Price (LCY)")
{
ApplicationArea = Jobs;
ToolTip = 'Specifies the total price for the journal line. The amount is in the local currency.';
Visible = false;
}
field("Applies-to Entry"; Rec."Applies-to Entry")
{
ApplicationArea = Jobs;
ToolTip = 'Specifies if the project journal line has of type Item and the usage of the item will be applied to an already-posted item ledger entry. If this is the case, enter the entry number that the usage will be applied to.';
}
field("Applies-from Entry"; Rec."Applies-from Entry")
{
ApplicationArea = Jobs;
Visible = false;
}
field("Country/Region Code"; Rec."Country/Region Code")
{
ApplicationArea = Jobs;
Visible = false;
}
field("Transaction Type"; Rec."Transaction Type")
{
ApplicationArea = BasicEU, BasicNO;
Visible = false;
}
field("Transport Method"; Rec."Transport Method")
{
ApplicationArea = BasicEU, BasicNO;
Visible = false;
}
field("Time Sheet No."; Rec."Time Sheet No.")
{
ApplicationArea = Jobs;
Visible = false;
}
field("Time Sheet Line No."; Rec."Time Sheet Line No.")
{
ApplicationArea = Jobs;
Visible = false;
}
field("Time Sheet Date"; Rec."Time Sheet Date")
{
ApplicationArea = Jobs;
Visible = false;
}
field("Shortcut Dimension 1 Code"; Rec."Shortcut Dimension 1 Code")
{
ApplicationArea = Dimensions;
Visible = DimVisible1;
}
field("Shortcut Dimension 2 Code"; Rec."Shortcut Dimension 2 Code")
{
ApplicationArea = Dimensions;
Visible = DimVisible2;
}
field(ShortcutDimCode3; ShortcutDimCode[3])
{
ApplicationArea = Dimensions;
CaptionClass = '1,2,3';
TableRelation = "Dimension Value".Code where("Global Dimension No." = const(3),
"Dimension Value Type" = const(Standard),
Blocked = const(false));
Visible = DimVisible3;
trigger OnValidate()
begin
Rec.ValidateShortcutDimCode(3, ShortcutDimCode[3]);
OnAfterValidateShortcutDimCode(Rec, ShortcutDimCode, 3);
end;
}
field(ShortcutDimCode4; ShortcutDimCode[4])
{
ApplicationArea = Dimensions;
CaptionClass = '1,2,4';
TableRelation = "Dimension Value".Code where("Global Dimension No." = const(4),
"Dimension Value Type" = const(Standard),
Blocked = const(false));
Visible = DimVisible4;
trigger OnValidate()
begin
Rec.ValidateShortcutDimCode(4, ShortcutDimCode[4]);
OnAfterValidateShortcutDimCode(Rec, ShortcutDimCode, 4);
end;
}
field(ShortcutDimCode5; ShortcutDimCode[5])
{
ApplicationArea = Dimensions;
CaptionClass = '1,2,5';
TableRelation = "Dimension Value".Code where("Global Dimension No." = const(5),
"Dimension Value Type" = const(Standard),
Blocked = const(false));
Visible = DimVisible5;
trigger OnValidate()
begin
Rec.ValidateShortcutDimCode(5, ShortcutDimCode[5]);
OnAfterValidateShortcutDimCode(Rec, ShortcutDimCode, 5);
end;
}
field(ShortcutDimCode6; ShortcutDimCode[6])
{
ApplicationArea = Dimensions;
CaptionClass = '1,2,6';
TableRelation = "Dimension Value".Code where("Global Dimension No." = const(6),
"Dimension Value Type" = const(Standard),
Blocked = const(false));
Visible = DimVisible6;
trigger OnValidate()
begin
Rec.ValidateShortcutDimCode(6, ShortcutDimCode[6]);
OnAfterValidateShortcutDimCode(Rec, ShortcutDimCode, 6);
end;
}
field(ShortcutDimCode7; ShortcutDimCode[7])
{
ApplicationArea = Dimensions;
CaptionClass = '1,2,7';
TableRelation = "Dimension Value".Code where("Global Dimension No." = const(7),
"Dimension Value Type" = const(Standard),
Blocked = const(false));
Visible = DimVisible7;
trigger OnValidate()
begin
Rec.ValidateShortcutDimCode(7, ShortcutDimCode[7]);
OnAfterValidateShortcutDimCode(Rec, ShortcutDimCode, 7);
end;
}
field(ShortcutDimCode8; ShortcutDimCode[8])
{
ApplicationArea = Dimensions;
CaptionClass = '1,2,8';
TableRelation = "Dimension Value".Code where("Global Dimension No." = const(8),
"Dimension Value Type" = const(Standard),
Blocked = const(false));
Visible = DimVisible8;
trigger OnValidate()
begin
Rec.ValidateShortcutDimCode(8, ShortcutDimCode[8]);
OnAfterValidateShortcutDimCode(Rec, ShortcutDimCode, 8);
end;
}
}
group(Control73)
{
ShowCaption = false;
fixed(Control1902114901)
{
ShowCaption = false;
group("Number of Lines")
{
Caption = 'Number of Lines';
field(NumberOfJournalRecords; NumberOfRecords)
{
ApplicationArea = All;
AutoFormatType = 1;
ShowCaption = false;
Editable = false;
ToolTip = 'Specifies the number of lines in the current journal batch.';
}
}
group("Job Description")
{
Caption = 'Project Description';
field(JobDescription; JobDescription)
{
ApplicationArea = Jobs;
Editable = false;
ShowCaption = false;
ToolTip = 'Specifies a description of the project.';
}
}
group("Account Name")
{
Caption = 'Account Name';
field(AccName; AccName)
{
ApplicationArea = Jobs;
Caption = 'Account Name';
Editable = false;
ToolTip = 'Specifies the name of the customer or vendor that the project is related to.';
}
}
}
}
}
area(factboxes)
{
part(JournalErrorsFactBox; "Job Journal Errors FactBox")
{
ApplicationArea = Basic, Suite;
ShowFilter = false;
Visible = BackgroundErrorCheck;
SubPageLink = "Journal Template Name" = field("Journal Template Name"),
"Journal Batch Name" = field("Journal Batch Name"),
"Line No." = field("Line No.");
}
systempart(Control1900383207; Links)
{
ApplicationArea = RecordLinks;
Visible = false;
}
systempart(Control1905767507; Notes)
{
ApplicationArea = Notes;
Visible = false;
}
}
}
actions
{
area(navigation)
{
group("&Line")
{
Caption = '&Line';
Image = Line;
action(Dimensions)
{
AccessByPermission = TableData Dimension = R;
ApplicationArea = Dimensions;
Caption = 'Dimensions';
Image = Dimensions;
ShortCutKey = 'Alt+D';
ToolTip = 'View or edit dimensions, such as area, project, or department, that you can assign to sales and purchase documents to distribute costs and analyze transaction history.';
trigger OnAction()
begin
Rec.ShowDimensions();
CurrPage.SaveRecord();
end;
}
action(ItemTrackingLines)
{
ApplicationArea = ItemTracking;
Caption = 'Item &Tracking Lines';
Image = ItemTrackingLines;
ShortCutKey = 'Ctrl+Alt+I';
ToolTip = 'View or edit serial, lot and package numbers that are assigned to the item on the document or journal line.';
trigger OnAction()
begin
Rec.OpenItemTrackingLines(false);
end;
}
}
group("&Job")
{
Caption = '&Project';
Image = Job;
action(Card)
{
ApplicationArea = Jobs;
Caption = 'Card';
Image = EditLines;
RunObject = Page "Job Card";
RunPageLink = "No." = field("Job No.");
ShortCutKey = 'Shift+F7';
ToolTip = 'View or change detailed information about the record on the document or journal line.';
}
action("Ledger E&ntries")
{
ApplicationArea = Jobs;
Caption = 'Ledger E&ntries';
Image = CustomerLedger;
RunObject = Page "Job Ledger Entries";
RunPageLink = "Job No." = field("Job No.");
RunPageView = sorting("Job No.", "Posting Date");
ShortCutKey = 'Ctrl+F7';
ToolTip = 'View the history of transactions that have been posted for the selected record.';
}
}
}
area(processing)
{
group("F&unctions")
{
Caption = 'F&unctions';
Image = "Action";
action("Renumber Document Numbers")
{
ApplicationArea = Jobs;
Caption = 'Renumber Document Numbers';
Image = EditLines;
ToolTip = 'Resort the numbers in the Document No. column to avoid posting errors because the document numbers are not in sequence. Entry applications and line groupings are preserved.';
trigger OnAction()
begin
Rec.RenumberDocumentNo();
end;
}
action(CalcRemainingUsage)
{
ApplicationArea = Jobs;
Caption = 'Calc. Remaining Usage';
Ellipsis = true;
Image = CalculateRemainingUsage;
ToolTip = 'Calculate the remaining usage for the project. The batch job calculates, for each project task, the difference between scheduled usage of items, resources, and expenses and actual usage posted in project ledger entries. The remaining usage is then displayed in the project journal from where you can post it.';
trigger OnAction()
var
JobCalcRemainingUsage: Report "Job Calc. Remaining Usage";
begin
Rec.TestField("Journal Template Name");
Rec.TestField("Journal Batch Name");
Clear(JobCalcRemainingUsage);
JobCalcRemainingUsage.SetBatch(Rec."Journal Template Name", Rec."Journal Batch Name");
JobCalcRemainingUsage.SetDocNo(Rec."Document No.");
JobCalcRemainingUsage.RunModal();
end;
}
group("Item Availability by")
{
Caption = 'Item Availability by';
Image = ItemAvailability;
action("Event")
{
ApplicationArea = Basic, Suite;
Caption = 'Event';
Image = "Event";
ToolTip = 'View how the actual and the projected available balance of an item will develop over time according to supply and demand events.';
trigger OnAction()
begin
JobJnlManagement.ShowItemAvailabilityFromJobJournalLines(Rec, "Item Availability Type"::"Event")
end;
}
action(Period)
{
ApplicationArea = Basic, Suite;
Caption = 'Period';
Image = Period;
ToolTip = 'Show the projected quantity of the item over time according to time periods, such as day, week, or month.';
trigger OnAction()
begin
JobJnlManagement.ShowItemAvailabilityFromJobJournalLines(Rec, "Item Availability Type"::Period)
end;
}
action("Variant")
{
ApplicationArea = Planning;
Caption = 'Variant';
Image = ItemVariant;
ToolTip = 'View or edit the item''s variants. Instead of setting up each color of an item as a separate item, you can set up the various colors as variants of the item.';
trigger OnAction()
begin
JobJnlManagement.ShowItemAvailabilityFromJobJournalLines(Rec, "Item Availability Type"::Variant)
end;
}
action(UnitOfMeasure)
{
ApplicationArea = Basic, Suite;
Caption = 'Unit of Measure';
Image = UnitOfMeasure;
ToolTip = 'View the item''s availability by a unit of measure.';
trigger OnAction()
begin
JobJnlManagement.ShowItemAvailabilityFromJobJournalLines(Rec, "Item Availability Type"::UOM);
end;
}
action(Location)
{
AccessByPermission = TableData Location = R;
ApplicationArea = Location;
Caption = 'Location';
Image = Warehouse;
ToolTip = 'View the actual and projected quantity of the item per location.';
trigger OnAction()
begin
JobJnlManagement.ShowItemAvailabilityFromJobJournalLines(Rec, "Item Availability Type"::Location)
end;
}
action(Lot)
{
ApplicationArea = ItemTracking;
Caption = 'Lot';
Image = LotInfo;
RunObject = Page "Item Availability by Lot No.";
RunPageLink = "No." = field("No."),
"Location Filter" = field("Location Code"),
"Variant Filter" = field("Variant Code");
ToolTip = 'View the current and projected quantity of the item in each lot.';
}
action("BOM Level")
{
AccessByPermission = TableData "BOM Buffer" = R;
ApplicationArea = Assembly;
Caption = 'BOM Level';
Image = BOMLevel;
ToolTip = 'View availability figures for items on bills of materials that show how many units of a parent item you can make based on the availability of child items.';
trigger OnAction()
begin
JobJnlManagement.ShowItemAvailabilityFromJobJournalLines(Rec, "Item Availability Type"::BOM)
end;
}
}
action(SuggestLinesFromTimeSheets)
{
ApplicationArea = Jobs;
Caption = 'Suggest Lines from Time Sheets';
Ellipsis = true;
Image = SuggestLines;
ToolTip = 'Fill the journal with lines that exist in the time sheets.';
trigger OnAction()
var
SuggestJobJnlLines: Report "Suggest Job Jnl. Lines";
begin
SuggestJobJnlLines.SetJobJnlLine(Rec);
SuggestJobJnlLines.RunModal();
end;
}
}
group("P&osting")
{
Caption = 'P&osting';
Image = Post;
action(Reconcile)
{
ApplicationArea = Jobs;
Caption = 'Reconcile';
Image = Reconcile;
ShortCutKey = 'Ctrl+F11';
ToolTip = 'View what has been reconciled for the project. The window shows the quantity entered on the project journal lines, totaled by unit of measure and by work type.';
trigger OnAction()
begin
JobJnlReconcile.SetJobJnlLine(Rec);
JobJnlReconcile.Run();
end;
}
action("Test Report")
{
ApplicationArea = Jobs;
Caption = 'Test Report';
Ellipsis = true;
Image = TestReport;
ToolTip = 'View a test report so that you can find and correct any errors before you perform the actual posting of the journal or document.';
trigger OnAction()
begin
ReportPrint.PrintJobJnlLine(Rec);
end;
}
action("P&ost")
{
ApplicationArea = Jobs;
Caption = 'P&ost';
Image = PostOrder;
ShortCutKey = 'F9';
ToolTip = 'Finalize the document or journal by posting the amounts and quantities to the related accounts in your company books.';
trigger OnAction()
begin
CODEUNIT.Run(CODEUNIT::"Job Jnl.-Post", Rec);
CurrentJnlBatchName := Rec.GetRangeMax("Journal Batch Name");
CurrPage.Update(false);
end;
}
action(PreviewPosting)
{
ApplicationArea = Jobs;
Caption = 'Preview Posting';
Image = ViewPostedOrder;
ShortCutKey = 'Ctrl+Alt+F9';
ToolTip = 'Review the different types of entries that will be created when you post the document or journal.';
trigger OnAction()
begin
ShowPreview();
CurrPage.Update(false);
end;
}
action("Post and &Print")
{
ApplicationArea = Jobs;
Caption = 'Post and &Print';
Image = PostPrint;
ShortCutKey = 'Shift+F9';
ToolTip = 'Finalize and prepare to print the document or journal. The values and quantities are posted to the related accounts. A report request window where you can specify what to include on the print-out.';
trigger OnAction()
begin
CODEUNIT.Run(CODEUNIT::"Job Jnl.-Post+Print", Rec);
CurrentJnlBatchName := Rec.GetRangeMax("Journal Batch Name");
CurrPage.Update(false);
end;
}
}
group("Page")
{
Caption = 'Page';
action(EditInExcel)
{
ApplicationArea = Basic, Suite;
Caption = 'Edit in Excel';
Image = Excel;
ToolTip = 'Send the data in the journal to an Excel file for analysis or editing.';
Visible = IsSaaSExcelAddinEnabled;
AccessByPermission = System "Allow Action Export To Excel" = X;
trigger OnAction()
var
ODataUtility: Codeunit ODataUtility;
begin
ODataUtility.EditJournalWorksheetInExcel(CurrPage.Caption, CurrPage.ObjectId(false), Rec."Journal Batch Name", Rec."Journal Template Name");
end;
}
group(Errors)
{
Caption = 'Issues';
Image = ErrorLog;
Visible = BackgroundErrorCheck;
action(ShowLinesWithErrors)
{
ApplicationArea = Basic, Suite;
Caption = 'Show Lines with Issues';
Image = Error;
Visible = BackgroundErrorCheck;
Enabled = not ShowAllLinesEnabled;
ToolTip = 'View a list of journal lines that have issues before you post the journal.';
trigger OnAction()
begin
Rec.SwitchLinesWithErrorsFilter(ShowAllLinesEnabled);
end;
}
action(ShowAllLines)
{
ApplicationArea = Basic, Suite;
Caption = 'Show All Lines';
Image = ExpandAll;
Visible = BackgroundErrorCheck;
Enabled = ShowAllLinesEnabled;
ToolTip = 'View all journal lines, including lines with and without issues.';
trigger OnAction()
begin
Rec.SwitchLinesWithErrorsFilter(ShowAllLinesEnabled);
end;
}
}
}
}
area(Promoted)
{
group(Category_Process)
{
Caption = 'Process', Comment = 'Generated from the PromotedActionCategories property index 1.';
group(Category_Category6)
{
Caption = 'Post/Print', Comment = 'Generated from the PromotedActionCategories property index 5.';
ShowAs = SplitButton;
actionref("P&ost_Promoted"; "P&ost")
{
}
actionref(PreviewPosting_Promoted; PreviewPosting)
{
}
actionref("Post and &Print_Promoted"; "Post and &Print")
{
}
}
actionref(Reconcile_Promoted; Reconcile)
{
}
actionref("Renumber Document Numbers_Promoted"; "Renumber Document Numbers")
{
}
}
group(Category_Category5)
{
Caption = 'Prepare', Comment = 'Generated from the PromotedActionCategories property index 4.';
actionref(SuggestLinesFromTimeSheets_Promoted; SuggestLinesFromTimeSheets)
{
}
actionref(CalcRemainingUsage_Promoted; CalcRemainingUsage)
{
}
}
group(Category_Category7)
{
Caption = 'Project', Comment = 'Generated from the PromotedActionCategories property index 6.';
}
group(Category_Category8)
{
Caption = 'Line', Comment = 'Generated from the PromotedActionCategories property index 7.';
actionref(ItemTrackingLines_Promoted; ItemTrackingLines)
{
}
actionref(Dimensions_Promoted; Dimensions)
{
}
group("Category_Item Availability by")
{
Caption = 'Item Availability by';
actionref(Event_Promoted; "Event")
{
}
actionref(Period_Promoted; Period)
{
}
actionref(Variant_Promoted; Variant)
{
}
actionref(UnitOfMeasure_Promoted; UnitOfMeasure)
{
}
actionref(Location_Promoted; Location)
{
}
actionref(Lot_Promoted; Lot)
{
}
actionref("BOM Level_Promoted"; "BOM Level")
{
}
}
}
group(Category_Category4)
{
Caption = 'Page', Comment = 'Generated from the PromotedActionCategories property index 3.';
actionref(EditInExcel_Promoted; EditInExcel)
{
}
actionref(ShowLinesWithErrors_Promoted; ShowLinesWithErrors)
{
}
actionref(ShowAllLines_Promoted; ShowAllLines)
{
}
}
group(Category_Report)
{
Caption = 'Report', Comment = 'Generated from the PromotedActionCategories property index 2.';
}
}
}
trigger OnAfterGetCurrRecord()
begin
JobJnlManagement.GetNames(Rec, JobDescription, AccName);
if not (ClientTypeManagement.GetCurrentClientType() in [CLIENTTYPE::SOAP, CLIENTTYPE::OData, CLIENTTYPE::ODataV4, CLIENTTYPE::Api]) then
NumberOfRecords := Rec.Count();
end;
trigger OnAfterGetRecord()
begin
Rec.ShowShortcutDimCode(ShortcutDimCode);
end;
trigger OnDeleteRecord(): Boolean
var
ReserveJobJnlLine: Codeunit "Job Jnl. Line-Reserve";
begin
Commit();
if not ReserveJobJnlLine.DeleteLineConfirm(Rec) then
exit(false);
ReserveJobJnlLine.DeleteLine(Rec);
end;
trigger OnNewRecord(BelowxRec: Boolean)
begin
Rec.SetUpNewLine(xRec);
Clear(ShortcutDimCode);
end;
trigger OnOpenPage()
var
PriceCalculationMgt: Codeunit "Price Calculation Mgt.";
ServerSetting: Codeunit "Server Setting";
begin
OnBeforeOpenPage(Rec, CurrentJnlBatchName);
ExtendedPriceEnabled := PriceCalculationMgt.IsExtendedPriceCalculationEnabled();
IsSaaSExcelAddinEnabled := ServerSetting.GetIsSaasExcelAddinEnabled();
if ClientTypeManagement.GetCurrentClientType() = CLIENTTYPE::ODataV4 then
exit;
SetDimensionsVisibility();
OpenJournal();
end;
var
JobJnlManagement: Codeunit JobJnlManagement;
ReportPrint: Codeunit "Test Report-Print";
ClientTypeManagement: Codeunit "Client Type Management";
JobJournalErrorsMgt: Codeunit "Job Journal Errors Mgt.";
JobJnlReconcile: Page "Job Journal Reconcile";
NumberOfRecords: Integer;
ExtendedPriceEnabled: Boolean;
IsSaaSExcelAddinEnabled: Boolean;
BackgroundErrorCheck: Boolean;
ShowAllLinesEnabled: Boolean;
protected var
CurrentJnlBatchName: Code[10];
ShortcutDimCode: array[8] of Code[20];
JobDescription: Text[100];
AccName: Text[100];
DimVisible1: Boolean;
DimVisible2: Boolean;
DimVisible3: Boolean;
DimVisible4: Boolean;
DimVisible5: Boolean;
DimVisible6: Boolean;
DimVisible7: Boolean;
DimVisible8: Boolean;
local procedure CurrentJnlBatchNameOnAfterVali()
begin
CurrPage.SaveRecord();
JobJnlManagement.SetName(CurrentJnlBatchName, Rec);
SetControlAppearanceFromBatch();
CurrPage.Update(false);
end;
local procedure OpenJournal()
var
JnlSelected: Boolean;
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeOpenJournal(Rec, JobJnlManagement, CurrentJnlBatchName, IsHandled);
if IsHandled then
exit;
if Rec.IsOpenedFromBatch() then begin
CurrentJnlBatchName := Rec."Journal Batch Name";
JobJnlManagement.OpenJnl(CurrentJnlBatchName, Rec);
SetControlAppearanceFromBatch();
exit;
end;
JobJnlManagement.TemplateSelection(PAGE::"Job Journal", false, Rec, JnlSelected);
if not JnlSelected then
Error('');
JobJnlManagement.OpenJnl(CurrentJnlBatchName, Rec);
SetControlAppearanceFromBatch();
end;
local procedure SetDimensionsVisibility()
var
DimMgt: Codeunit DimensionManagement;
begin
DimVisible1 := false;
DimVisible2 := false;
DimVisible3 := false;
DimVisible4 := false;
DimVisible5 := false;
DimVisible6 := false;
DimVisible7 := false;
DimVisible8 := false;
DimMgt.UseShortcutDims(
DimVisible1, DimVisible2, DimVisible3, DimVisible4, DimVisible5, DimVisible6, DimVisible7, DimVisible8);
Clear(DimMgt);
end;
local procedure SetControlAppearanceFromBatch()
var
JobJournalBatch: Record "Job Journal Batch";
BackgroundErrorHandlingMgt: Codeunit "Background Error Handling Mgt.";
begin
if not JobJournalBatch.Get(Rec.GetRangeMax("Journal Template Name"), CurrentJnlBatchName) then
exit;
BackgroundErrorCheck := BackgroundErrorHandlingMgt.BackgroundValidationFeatureEnabled();
ShowAllLinesEnabled := true;
Rec.SwitchLinesWithErrorsFilter(ShowAllLinesEnabled);
JobJournalErrorsMgt.SetFullBatchCheck(true);
end;
local procedure ShowPreview()
var
JobJnlPost: Codeunit "Job Jnl.-Post";
begin
JobJnlPost.Preview(Rec);
end;
[IntegrationEvent(false, false)]
local procedure OnAfterValidateShortcutDimCode(var JobJournalLine: Record "Job Journal Line"; var ShortcutDimCode: array[8] of Code[20]; DimIndex: Integer)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeOpenPage(var JobJournalLine: Record "Job Journal Line"; var CurrentJnlBatchName: Code[10])
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeOpenJournal(var JobJournalLine: Record "Job Journal Line"; var JobJnlManagement: Codeunit JobJnlManagement; CurrentJnlBatchName: Code[10]; var IsHandled: Boolean)
begin
end;
}