Page 55 Purch. Invoice Subform, source in 29
Source29
src/Layers/W1/BaseApp/Purchases/Document/PurchInvoiceSubform.Page.al1667 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.Purchases.Document;
using Microsoft.Finance.AllocationAccount;
using Microsoft.Finance.AllocationAccount.Purchase;
using Microsoft.Finance.Currency;
using Microsoft.Finance.Deferral;
using Microsoft.Finance.Dimension;
using Microsoft.Finance.VAT.Calculation;
using Microsoft.Foundation.Attachment;
using Microsoft.Foundation.ExtendedText;
using Microsoft.Inventory.Availability;
using Microsoft.Inventory.BOM;
using Microsoft.Inventory.Item;
using Microsoft.Inventory.Item.Catalog;
using Microsoft.Inventory.Location;
using Microsoft.Inventory.Tracking;
using Microsoft.Purchases.History;
using Microsoft.Purchases.Setup;
using Microsoft.Utilities;
using System.Environment.Configuration;
using System.Integration.Excel;
page 55 "Purch. Invoice Subform"
{
AutoSplitKey = true;
Caption = 'Lines';
DelayedInsert = true;
LinksAllowed = false;
MultipleNewLines = true;
PageType = ListPart;
SourceTable = "Purchase Line";
SourceTableView = where("Document Type" = filter(Invoice));
layout
{
area(content)
{
repeater(PurchDetailLine)
{
field(Type; Rec.Type)
{
ApplicationArea = Advanced;
trigger OnValidate()
begin
NoOnAfterValidate();
UpdateEditableOnRow();
UpdateTypeText();
DeltaUpdateTotals();
end;
}
field(FilteredTypeField; TypeAsText)
{
ApplicationArea = Basic, Suite;
Caption = 'Type';
Editable = CurrPageIsEditable;
LookupPageID = "Option Lookup List";
TableRelation = "Option Lookup Buffer"."Option Caption" where("Lookup Type" = const(Purchases));
ToolTip = 'Specifies the type of transaction that will be posted with the document line. If you select Comment, then you can enter any text in the Description field, such as a message to a customer. ';
Visible = IsFoundation;
trigger OnValidate()
begin
TempOptionLookupBuffer.SetCurrentType(Rec.Type.AsInteger());
if TempOptionLookupBuffer.AutoCompleteLookup(TypeAsText, Enum::"Option Lookup Type"::Purchases) then
Rec.Validate(Type, TempOptionLookupBuffer.ID);
TempOptionLookupBuffer.ValidateOption(TypeAsText);
UpdateEditableOnRow();
UpdateTypeText();
DeltaUpdateTotals();
end;
}
field("No."; Rec."No.")
{
ApplicationArea = All;
ShowMandatory = not IsCommentLine;
ToolTip = 'Specifies what you are buying, such as a product or a fixed asset. You’ll see different lists of things to choose from depending on your choice in the Type field.';
trigger OnValidate()
var
Item: Record "Item";
begin
NoOnAfterValidate();
Rec.ShowShortcutDimCode(ShortcutDimCode);
UpdateTypeText();
DeltaUpdateTotals();
if Rec."Variant Code" = '' then
VariantCodeMandatory := Item.IsVariantMandatory(Rec.Type = Rec.Type::Item, Rec."No.");
CurrPage.Update();
end;
}
field("Item Reference No."; Rec."Item Reference No.")
{
AccessByPermission = tabledata "Item Reference" = R;
ApplicationArea = Suite, ItemReferences;
QuickEntry = false;
Visible = ItemReferenceVisible;
trigger OnLookup(var Text: Text): Boolean
var
ItemReferenceMgt: Codeunit "Item Reference Management";
begin
ItemReferenceMgt.PurchaseReferenceNoLookUp(Rec);
NoOnAfterValidate();
DeltaUpdateTotals();
OnItemReferenceNoOnLookup(Rec);
CurrPage.Update();
end;
trigger OnValidate()
begin
NoOnAfterValidate();
DeltaUpdateTotals();
CurrPage.Update();
end;
}
field("IC Partner Code"; Rec."IC Partner Code")
{
ApplicationArea = Intercompany;
Visible = false;
}
field("IC Partner Ref. Type"; Rec."IC Partner Ref. Type")
{
ApplicationArea = Intercompany;
Visible = false;
}
field("IC Partner Reference"; Rec."IC Partner Reference")
{
ApplicationArea = Intercompany;
Visible = false;
}
field("Variant Code"; Rec."Variant Code")
{
ApplicationArea = Planning;
Visible = false;
ShowMandatory = VariantCodeMandatory;
trigger OnValidate()
var
Item: Record "Item";
begin
DeltaUpdateTotals();
if Rec."Variant Code" = '' then
VariantCodeMandatory := Item.IsVariantMandatory(Rec.Type = Rec.Type::Item, Rec."No.");
end;
}
field(Nonstock; Rec.Nonstock)
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Gen. Bus. Posting Group"; Rec."Gen. Bus. Posting Group")
{
ApplicationArea = Basic, Suite;
Visible = false;
trigger OnValidate()
begin
DeltaUpdateTotals();
end;
}
field("Gen. Prod. Posting Group"; Rec."Gen. Prod. Posting Group")
{
ApplicationArea = Basic, Suite;
Visible = false;
trigger OnValidate()
begin
DeltaUpdateTotals();
end;
}
field("VAT Bus. Posting Group"; Rec."VAT Bus. Posting Group")
{
ApplicationArea = Basic, Suite;
Visible = false;
trigger OnValidate()
begin
DeltaUpdateTotals();
end;
}
field("VAT Prod. Posting Group"; Rec."VAT Prod. Posting Group")
{
ApplicationArea = Basic, Suite;
Visible = false;
trigger OnValidate()
begin
ForceTotalsCalculation();
DeltaUpdateTotals();
end;
}
field(Description; Rec.Description)
{
ApplicationArea = Basic, Suite;
Caption = 'Description/Comment';
ShowMandatory = not IsCommentLine;
ToolTip = 'Describes what is being purchased. The suggested text comes from the item itself. You can change it to suit your needs for this document. If you change it here, the source of the text will not change. If the line''s Type field is set to Comment, you can use this field to write the comment, and leave the other fields empty.';
trigger OnValidate()
var
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeValidateDescription(Rec, IsHandled);
if IsHandled then
exit;
UpdateEditableOnRow();
Rec.RestoreLookupSelection();
if Rec."No." <> xRec."No." then
NoOnAfterValidate();
if Rec."No." = xRec."No." then
exit;
Rec.ShowShortcutDimCode(ShortcutDimCode);
UpdateTypeText();
DeltaUpdateTotals();
end;
trigger OnAfterLookup(Selected: RecordRef)
begin
Rec.SaveLookupSelection(Selected);
end;
}
field("Description 2"; Rec."Description 2")
{
ApplicationArea = Basic, Suite;
Importance = Additional;
Visible = false;
}
field("Return Reason Code"; Rec."Return Reason Code")
{
ApplicationArea = Suite;
Visible = false;
}
field("Location Code"; Rec."Location Code")
{
ApplicationArea = Location;
Editable = not IsBlankNumber;
Enabled = not IsBlankNumber;
trigger OnValidate()
begin
DeltaUpdateTotals();
CurrPage.Update();
end;
}
field("Bin Code"; Rec."Bin Code")
{
ApplicationArea = Warehouse;
Visible = false;
}
field(Quantity; Rec.Quantity)
{
ApplicationArea = Basic, Suite;
BlankZero = true;
Editable = not IsBlankNumber;
Enabled = not IsBlankNumber;
ShowMandatory = (Rec.Type <> Rec.Type::" ") and (Rec."No." <> '');
ToolTip = 'Specifies the quantity of what you''re buying. The number is based on the unit chosen in the Unit of Measure Code field.';
trigger OnValidate()
begin
CurrPage.SaveRecord();
DeltaUpdateTotals();
if PurchasesPayablesSetup."Calc. Inv. Discount" and (Rec.Quantity = 0) then
CurrPage.Update(false);
end;
}
field("Unit of Measure Code"; Rec."Unit of Measure Code")
{
ApplicationArea = Basic, Suite;
Editable = UnitofMeasureCodeIsChangeable;
Enabled = UnitofMeasureCodeIsChangeable;
trigger OnValidate()
begin
DeltaUpdateTotals();
end;
}
field("Unit of Measure"; Rec."Unit of Measure")
{
ApplicationArea = Suite;
ToolTip = 'Specifies the name of the unit of measure for the item, such as 1 bottle or 1 piece.';
Visible = false;
}
field("Direct Unit Cost"; Rec."Direct Unit Cost")
{
ApplicationArea = Basic, Suite;
BlankZero = true;
Editable = not IsBlankNumber;
Enabled = not IsBlankNumber;
ShowMandatory = (Rec.Type <> Rec.Type::" ") and (Rec."No." <> '');
ToolTip = 'Specifies the price of one unit of what you are buying.';
trigger OnValidate()
begin
DeltaUpdateTotals();
end;
}
field("Indirect Cost %"; Rec."Indirect Cost %")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Unit Cost (LCY)"; Rec."Unit Cost (LCY)")
{
ApplicationArea = Basic, Suite;
ToolTip = 'Specifies the unit cost of the item on the line.';
Visible = false;
}
field("Unit Price (LCY)"; Rec."Unit Price (LCY)")
{
ApplicationArea = Basic, Suite;
ToolTip = 'Specifies the price for one unit of the item.';
Visible = false;
}
field("Matched Order Lines"; Rec."Matched Order Lines")
{
ApplicationArea = Basic, Suite;
Caption = 'Matched Order Lines';
ToolTip = 'Specifies the number of purchase order lines to which this line is matched.';
trigger OnDrillDown()
var
MatchedOrderLineMgmt: Codeunit "Matched Order Line Mgmt.";
MatchedOrderLines: Page "Matched Order Lines";
begin
MatchedOrderLineMgmt.CheckLineCanBeMatched(Rec);
MatchedOrderLines.InitializePage("Matched Order Line Source"::"Purchase Invoice", false, Rec.SystemId);
MatchedOrderLines.RunModal();
end;
}
field("Tax Liable"; Rec."Tax Liable")
{
ApplicationArea = SalesTax;
Editable = false;
ToolTip = 'Specifies if the customer or vendor is liable for sales tax.';
Visible = false;
}
field("Tax Area Code"; Rec."Tax Area Code")
{
ApplicationArea = SalesTax;
trigger OnValidate()
begin
DeltaUpdateTotals();
end;
}
field("Tax Group Code"; Rec."Tax Group Code")
{
ApplicationArea = SalesTax;
Editable = not IsCommentLine;
Enabled = not IsCommentLine;
ShowMandatory = Rec."Tax Area Code" <> '';
trigger OnValidate()
begin
DeltaUpdateTotals();
end;
}
field("Use Tax"; Rec."Use Tax")
{
ApplicationArea = SalesTax;
ToolTip = 'Specifies that the purchase is subject to use tax. Use tax is a sales tax that is paid on items that are purchased by a company and are used by that company instead of being sold to a customer.';
Visible = false;
}
field("Line Discount %"; Rec."Line Discount %")
{
ApplicationArea = Basic, Suite;
BlankZero = true;
Editable = not IsBlankNumber;
Enabled = not IsBlankNumber;
trigger OnValidate()
begin
DeltaUpdateTotals();
end;
}
field("Line Amount"; Rec."Line Amount")
{
ApplicationArea = Basic, Suite;
BlankZero = true;
Editable = not IsBlankNumber;
Enabled = not IsBlankNumber;
ShowMandatory = (Rec.Type <> Rec.Type::" ") and (Rec."No." <> '');
trigger OnValidate()
begin
DeltaUpdateTotals();
end;
}
field("Line Discount Amount"; Rec."Line Discount Amount")
{
ApplicationArea = Basic, Suite;
Visible = false;
trigger OnValidate()
begin
DeltaUpdateTotals();
end;
}
field("Allow Invoice Disc."; Rec."Allow Invoice Disc.")
{
ApplicationArea = Basic, Suite;
Visible = false;
trigger OnValidate()
begin
CurrPage.SaveRecord();
AmountWithDiscountAllowed := DocumentTotals.CalcTotalPurchAmountOnlyDiscountAllowed(Rec);
InvoiceDiscountAmount := Round(AmountWithDiscountAllowed * InvoiceDiscountPct / 100, Currency."Amount Rounding Precision");
ValidateInvoiceDiscountAmount();
DeltaUpdateTotals();
end;
}
field("Inv. Discount Amount"; Rec."Inv. Discount Amount")
{
ApplicationArea = Basic, Suite;
ToolTip = 'Specifies the invoice discount amount for the line.';
Visible = false;
trigger OnValidate()
begin
DeltaUpdateTotals();
end;
}
field(NonDeductibleVATBase; Rec."Non-Deductible VAT Base")
{
ApplicationArea = Basic, Suite;
Visible = ShowNonDedVATInLines;
}
field(NonDeductibleVATAmount; Rec."Non-Deductible VAT Amount")
{
ApplicationArea = Basic, Suite;
Visible = ShowNonDedVATInLines;
}
field("Allow Item Charge Assignment"; Rec."Allow Item Charge Assignment")
{
ApplicationArea = ItemCharges;
Visible = false;
}
field("Qty. to Assign"; Rec."Qty. to Assign")
{
ApplicationArea = ItemCharges;
StyleExpr = ItemChargeStyleExpression;
trigger OnDrillDown()
begin
CurrPage.SaveRecord();
Rec.ShowItemChargeAssgnt();
UpdateForm(false);
end;
}
field("Qty. Assigned"; Rec."Qty. Assigned")
{
ApplicationArea = ItemCharges;
BlankZero = true;
trigger OnDrillDown()
begin
CurrPage.SaveRecord();
Rec.ShowItemChargeAssgnt();
UpdateForm(false);
end;
}
field("Allocation Account No."; Rec."Selected Alloc. Account No.")
{
ApplicationArea = All;
Caption = 'Allocation Account No.';
Visible = UseAllocationAccountNumber;
trigger OnValidate()
var
PurchaseAllocAccMgt: Codeunit "Purchase Alloc. Acc. Mgt.";
begin
PurchaseAllocAccMgt.VerifySelectedAllocationAccountNo(Rec);
end;
}
field("Job No."; Rec."Job No.")
{
ApplicationArea = Jobs;
Visible = false;
trigger OnValidate()
begin
Rec.ShowShortcutDimCode(ShortcutDimCode);
end;
}
field("Job Task No."; Rec."Job Task No.")
{
ApplicationArea = Jobs;
Visible = false;
trigger OnValidate()
begin
Rec.ShowShortcutDimCode(ShortcutDimCode);
end;
}
field("Job Planning Line No."; Rec."Job Planning Line No.")
{
ApplicationArea = Jobs;
Visible = false;
}
field("Job Line Type"; Rec."Job Line Type")
{
ApplicationArea = Jobs;
ToolTip = 'Specifies the type of planning line that was created when the project ledger entry is posted from the purchase line. If the field is empty, no planning lines were created for this entry.';
Visible = false;
}
field("Job Unit Price"; Rec."Job Unit Price")
{
ApplicationArea = Jobs;
Visible = false;
}
field("Job Line Amount"; Rec."Job Line Amount")
{
ApplicationArea = Jobs;
Visible = false;
}
field("Job Line Discount Amount"; Rec."Job Line Discount Amount")
{
ApplicationArea = Jobs;
Visible = false;
}
field("Job Line Discount %"; Rec."Job Line Discount %")
{
ApplicationArea = Jobs;
Visible = false;
}
field("Job Total Price"; Rec."Job Total Price")
{
ApplicationArea = Jobs;
Visible = false;
}
field("Job Unit Price (LCY)"; Rec."Job Unit Price (LCY)")
{
ApplicationArea = Jobs;
ToolTip = 'Specifies the sales price per unit that applies to the item or general ledger expense that will be posted.';
Visible = false;
}
field("Job Total Price (LCY)"; Rec."Job Total Price (LCY)")
{
ApplicationArea = Jobs;
ToolTip = 'Specifies the gross amount of the line, in the local currency.';
Visible = false;
}
field("Job Line Amount (LCY)"; Rec."Job Line Amount (LCY)")
{
ApplicationArea = Jobs;
ToolTip = 'Specifies the line amount of the project ledger entry that is related to the purchase line.';
Visible = false;
}
field("Job Line Disc. Amount (LCY)"; Rec."Job Line Disc. Amount (LCY)")
{
ApplicationArea = Jobs;
ToolTip = 'Specifies the line discount amount of the project ledger entry that is related to the purchase line.';
Visible = false;
}
field("Blanket Order No."; Rec."Blanket Order No.")
{
ApplicationArea = Suite;
Visible = false;
}
field("Blanket Order Line No."; Rec."Blanket Order Line No.")
{
ApplicationArea = Suite;
Visible = false;
}
field("Insurance No."; Rec."Insurance No.")
{
ApplicationArea = FixedAssets;
Visible = false;
}
field("FA Posting Date"; Rec."FA Posting Date")
{
ApplicationArea = FixedAssets;
Visible = false;
}
field("Budgeted FA No."; Rec."Budgeted FA No.")
{
ApplicationArea = FixedAssets;
Visible = false;
}
field("FA Posting Type"; Rec."FA Posting Type")
{
ApplicationArea = FixedAssets;
Visible = false;
}
field("Depreciation Book Code"; Rec."Depreciation Book Code")
{
ApplicationArea = FixedAssets;
Visible = false;
}
field("Depr. until FA Posting Date"; Rec."Depr. until FA Posting Date")
{
ApplicationArea = FixedAssets;
Visible = false;
}
field("Depr. Acquisition Cost"; Rec."Depr. Acquisition Cost")
{
ApplicationArea = FixedAssets;
Visible = false;
}
field("Duplicate in Depreciation Book"; Rec."Duplicate in Depreciation Book")
{
ApplicationArea = FixedAssets;
Visible = false;
}
field("Use Duplication List"; Rec."Use Duplication List")
{
ApplicationArea = FixedAssets;
ToolTip = 'Specifies, if the type is Fixed Asset, that information on the line is to be posted to all the assets defined depreciation books. ';
Visible = false;
}
field("No. of Fixed Asset Cards"; Rec."No. of Fixed Asset Cards")
{
ApplicationArea = FixedAssets;
Visible = false;
}
field("Appl.-to Item Entry"; Rec."Appl.-to Item Entry")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Deferral Code"; Rec."Deferral Code")
{
ApplicationArea = Suite;
Enabled = (Rec.Type <> Rec.Type::"Fixed Asset") and (Rec.Type <> Rec.Type::" ");
TableRelation = "Deferral Template"."Deferral Code";
Visible = false;
trigger OnAssistEdit()
begin
CurrPage.SaveRecord();
Commit();
Rec.ShowDeferralSchedule();
end;
}
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;
}
field("Document No."; Rec."Document No.")
{
ApplicationArea = Basic, Suite;
Editable = false;
Visible = false;
}
field("Line No."; Rec."Line No.")
{
ApplicationArea = Basic, Suite;
Editable = false;
Visible = false;
}
field("Gross Weight"; Rec."Gross Weight")
{
Caption = 'Unit Gross Weight';
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Net Weight"; Rec."Net Weight")
{
Caption = 'Unit Net Weight';
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Unit Volume"; Rec."Unit Volume")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Units per Parcel"; Rec."Units per Parcel")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
field("Spend Request No."; Rec."Spend Request No.")
{
ApplicationArea = Basic, Suite;
Visible = false;
}
}
group(Control39)
{
ShowCaption = false;
group(Control33)
{
ShowCaption = false;
field(AmountBeforeDiscount; TotalPurchaseLine."Line Amount")
{
ApplicationArea = Basic, Suite;
AutoFormatExpression = Currency.Code;
AutoFormatType = 1;
CaptionClass = DocumentTotals.GetTotalLineAmountWithVATAndCurrencyCaption(Currency.Code, TotalPurchaseHeader."Prices Including VAT");
Caption = 'Subtotal Excl. VAT';
Editable = false;
ToolTip = 'Specifies the sum of the value in the Line Amount Excl. VAT field on all lines in the document.';
}
field(InvoiceDiscountAmount; InvoiceDiscountAmount)
{
ApplicationArea = Basic, Suite;
AutoFormatExpression = Currency.Code;
AutoFormatType = 1;
CaptionClass = DocumentTotals.GetInvoiceDiscAmountWithVATAndCurrencyCaption(Rec.FieldCaption("Inv. Discount Amount"), Currency.Code);
Caption = 'Invoice Discount Amount';
Editable = InvDiscAmountEditable;
ToolTip = 'Specifies a discount amount that is deducted from the value of the Total Incl. VAT field, based on purchase lines where the Allow Invoice Disc. field is selected. You can enter or change the amount manually.';
trigger OnValidate()
begin
DocumentTotals.PurchaseDocTotalsNotUpToDate();
ValidateInvoiceDiscountAmount();
end;
}
field("Invoice Disc. Pct."; InvoiceDiscountPct)
{
ApplicationArea = Basic, Suite;
AutoFormatType = 0;
Caption = 'Invoice Discount %';
DecimalPlaces = 0 : 3;
Editable = InvDiscAmountEditable;
ToolTip = 'Specifies a discount percentage that is applied to the invoice, based on purchase lines where the Allow Invoice Disc. field is selected. The percentage and criteria are defined in the Vendor Invoice Discounts page, but you can enter or change the percentage manually.';
trigger OnValidate()
begin
DocumentTotals.PurchaseDocTotalsNotUpToDate();
AmountWithDiscountAllowed := DocumentTotals.CalcTotalPurchAmountOnlyDiscountAllowed(Rec);
InvoiceDiscountAmount := Round(AmountWithDiscountAllowed * InvoiceDiscountPct / 100, Currency."Amount Rounding Precision");
ValidateInvoiceDiscountAmount();
end;
}
}
group(Control15)
{
ShowCaption = false;
field("Total Amount Excl. VAT"; TotalPurchaseLine.Amount)
{
ApplicationArea = Basic, Suite;
AutoFormatExpression = Currency.Code;
AutoFormatType = 1;
CaptionClass = DocumentTotals.GetTotalExclVATCaption(Currency.Code);
Caption = 'Total Amount Excl. VAT';
DrillDown = false;
Editable = false;
ToolTip = 'Specifies the sum of the value in the Line Amount Excl. VAT field on all lines in the document minus any discount amount in the Invoice Discount Amount field.';
}
field("Total VAT Amount"; VATAmount)
{
ApplicationArea = Basic, Suite;
AutoFormatExpression = Currency.Code;
AutoFormatType = 1;
CaptionClass = DocumentTotals.GetTotalVATCaption(Currency.Code);
Caption = 'Total VAT';
Editable = false;
ToolTip = 'Specifies the sum of the value in the Line Amount Excl. VAT field on all lines in the document minus any discount amount in the Invoice Discount Amount field.';
}
field("Total Amount Incl. VAT"; TotalPurchaseLine."Amount Including VAT")
{
ApplicationArea = Basic, Suite;
AutoFormatExpression = Currency.Code;
AutoFormatType = 1;
CaptionClass = DocumentTotals.GetTotalInclVATCaption(Currency.Code);
Caption = 'Total Amount Incl. VAT';
Editable = false;
ToolTip = 'Specifies the sum of the value in the Line Amount Incl. VAT field on all lines in the document minus any discount amount in the Invoice Discount Amount field.';
}
}
}
}
}
actions
{
area(processing)
{
action(SelectMultiItems)
{
AccessByPermission = TableData Item = R;
ApplicationArea = Basic, Suite;
Caption = 'Select items';
Ellipsis = true;
Image = NewItem;
ToolTip = 'Add two or more items from the full list of your inventory items.';
trigger OnAction()
begin
Rec.SelectMultipleItems();
end;
}
group("&Line")
{
Caption = '&Line';
Image = Line;
group("F&unctions")
{
Caption = 'F&unctions';
Image = "Action";
action("E&xplode BOM")
{
AccessByPermission = TableData "BOM Component" = R;
ApplicationArea = Suite;
Caption = 'E&xplode BOM';
Image = ExplodeBOM;
Enabled = Rec.Type = Rec.Type::Item;
ToolTip = 'Add a line for each component on the bill of materials for the selected item. For example, this is useful for selling the parent item as a kit. CAUTION: The line for the parent item will be deleted and only its description will display. To undo this action, delete the component lines and add a line for the parent item again. This action is available only for lines that contain an item.';
trigger OnAction()
begin
ExplodeBOM();
end;
}
action(InsertExtTexts)
{
AccessByPermission = TableData "Extended Text Header" = R;
ApplicationArea = Suite;
Caption = 'Insert &Ext. Texts';
Image = Text;
ToolTip = 'Insert the extended item description that is set up for the item that is being processed on the line.';
trigger OnAction()
begin
InsertExtendedText(true);
end;
}
action(GetReceiptLines)
{
AccessByPermission = TableData "Purch. Rcpt. Header" = R;
ApplicationArea = Suite;
Caption = '&Get Receipt Lines';
Ellipsis = true;
Image = Receipt;
ToolTip = 'Select a posted purchase receipt for the item that you want to assign the item charge to.';
trigger OnAction()
begin
GetReceipt();
RedistributeTotalsOnAfterValidate();
end;
}
action(GetOrderLines)
{
ApplicationArea = Suite;
Caption = 'Get Order Lines';
Ellipsis = true;
Image = GetLines;
ToolTip = 'Select order lines related to this purchase invoice line.';
trigger OnAction()
var
MatchedOrderLineMgmt: Codeunit "Matched Order Line Mgmt.";
begin
MatchedOrderLineMgmt.GetPurchaseOrderLines(Rec);
end;
}
action(RedistributeAccAllocations)
{
ApplicationArea = All;
Caption = 'Redistribute Account Allocations';
Image = EditList;
#pragma warning disable AA0219
ToolTip = 'Use this action to redistribute the account allocations for this line.';
#pragma warning restore AA0219
trigger OnAction()
var
AllocAccManualOverride: Page "Redistribute Acc. Allocations";
begin
if ((Rec."Type" <> Rec."Type"::"Allocation Account") and (Rec."Selected Alloc. Account No." = '')) then
Error(ActionOnlyAllowedForAllocationAccountsErr);
AllocAccManualOverride.SetParentSystemId(Rec.SystemId);
AllocAccManualOverride.SetParentTableId(Database::"Purchase Line");
AllocAccManualOverride.RunModal();
end;
}
action(ReplaceAllocationAccountWithLines)
{
ApplicationArea = All;
Caption = 'Generate lines from Allocation Account Line';
Image = CreateLinesFromJob;
#pragma warning disable AA0219
ToolTip = 'Use this action to replace the Allocation Account line with the actual lines that would be generated from the line itself.';
#pragma warning restore AA0219
trigger OnAction()
var
PurchaseAllocAccMgt: Codeunit "Purchase Alloc. Acc. Mgt.";
begin
if ((Rec."Type" <> Rec."Type"::"Allocation Account") and (Rec."Selected Alloc. Account No." = '')) then
Error(ActionOnlyAllowedForAllocationAccountsErr);
PurchaseAllocAccMgt.CreateLinesFromAllocationAccountLine(Rec);
Rec.Delete();
CurrPage.Update(false);
end;
}
}
group("Item Availability by")
{
Caption = 'Item Availability by';
Image = ItemAvailability;
Enabled = Rec.Type = Rec.Type::Item;
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
PurchAvailabilityMgt.ShowItemAvailabilityFromPurchLine(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
PurchAvailabilityMgt.ShowItemAvailabilityFromPurchLine(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
PurchAvailabilityMgt.ShowItemAvailabilityFromPurchLine(Rec, "Item Availability Type"::Variant)
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
PurchAvailabilityMgt.ShowItemAvailabilityFromPurchLine(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
PurchAvailabilityMgt.ShowItemAvailabilityFromPurchLine(Rec, "Item Availability Type"::BOM)
end;
}
}
group("Related Information")
{
Caption = 'Related Information';
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();
end;
}
action("Co&mments")
{
ApplicationArea = Comments;
Caption = 'Co&mments';
Image = ViewComments;
ToolTip = 'View or add comments for the record.';
trigger OnAction()
begin
Rec.ShowLineComments();
end;
}
action(ItemChargeAssignment)
{
AccessByPermission = TableData "Item Charge" = R;
ApplicationArea = ItemCharges;
Caption = 'Item Charge &Assignment';
Image = ItemCosts;
Enabled = Rec.Type = Rec.Type::"Charge (Item)";
ToolTip = 'Record additional direct costs, for example for freight. This action is available only for Charge (Item) line types.';
trigger OnAction()
begin
Rec.ShowItemChargeAssgnt();
SetItemChargeFieldsStyle();
end;
}
action("Item &Tracking Lines")
{
ApplicationArea = ItemTracking;
Caption = 'Item &Tracking Lines';
Image = ItemTrackingLines;
ShortCutKey = 'Ctrl+Alt+I';
Enabled = Rec.Type = Rec.Type::Item;
ToolTip = 'View or edit serial, lot and package numbers for the selected item. This action is available only for lines that contain an item.';
trigger OnAction()
begin
Rec.OpenItemTrackingLines();
end;
}
action(DeferralSchedule)
{
ApplicationArea = Suite;
Caption = 'Deferral Schedule';
Enabled = Rec."Deferral Code" <> '';
Image = PaymentPeriod;
ToolTip = 'View or edit the deferral schedule that governs how expenses incurred with this purchase document is deferred to different accounting periods when the document is posted.';
trigger OnAction()
begin
Rec.ShowDeferralSchedule();
end;
}
action(DocAttach)
{
ApplicationArea = All;
Caption = 'Attachments';
Image = Attach;
ToolTip = 'Add a file as an attachment. You can attach images as well as documents.';
trigger OnAction()
var
DocumentAttachmentDetails: Page "Document Attachment Details";
RecRef: RecordRef;
begin
RecRef.GetTable(Rec);
DocumentAttachmentDetails.OpenForRecRef(RecRef);
DocumentAttachmentDetails.RunModal();
end;
}
action(MatchedOrdLines)
{
ApplicationArea = All;
Caption = 'Matched Order Lines';
Image = TransferToLines;
ToolTip = 'View and match order lines related to this purchase invoice line.';
trigger OnAction()
var
MatchedOrderLineMgmt: Codeunit "Matched Order Line Mgmt.";
MatchedOrderLines: Page "Matched Order Lines";
begin
MatchedOrderLineMgmt.CheckLineCanBeMatched(Rec);
MatchedOrderLines.InitializePage("Matched Order Line Source"::"Purchase Invoice", false, Rec.SystemId);
MatchedOrderLines.RunModal();
end;
}
}
}
group(Errors)
{
Caption = 'Issues';
Image = ErrorLog;
Visible = BackgroundErrorCheck;
ShowAs = SplitButton;
action(ShowLinesWithErrors)
{
ApplicationArea = Basic, Suite;
Caption = 'Show Lines with Issues';
Image = Error;
Visible = BackgroundErrorCheck;
Enabled = not ShowAllLinesEnabled;
ToolTip = 'View a list of purchase lines that have issues before you post the document.';
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 purchase lines, including lines with and without issues.';
trigger OnAction()
begin
Rec.SwitchLinesWithErrorsFilter(ShowAllLinesEnabled);
end;
}
}
group("Page")
{
Caption = 'Page';
action(EditInExcel)
{
ApplicationArea = Basic, Suite;
Caption = 'Edit in Excel';
Image = Excel;
Visible = IsSaaSExcelAddinEnabled;
ToolTip = 'Send the data in the sub page to an Excel file for analysis or editing';
AccessByPermission = System "Allow Action Export To Excel" = X;
trigger OnAction()
var
EditinExcel: Codeunit "Edit in Excel";
EditinExcelFilters: Codeunit "Edit in Excel Filters";
begin
EditinExcelFilters.AddFieldV2('Document_No', Enum::"Edit in Excel Filter Type"::Equal, Rec."Document No.", Enum::"Edit in Excel Edm Type"::"Edm.String");
EditinExcel.EditPageInExcel(
'Purchase_InvoicePurchLines',
Page::"Purch. Invoice Subform",
EditinExcelFilters,
StrSubstNo(ExcelFileNameTxt, Rec."Document No."));
end;
}
}
}
}
trigger OnAfterGetCurrRecord()
begin
GetTotalPurchHeader();
CalculateTotals();
UpdateEditableOnRow();
UpdateTypeText();
SetItemChargeFieldsStyle();
end;
trigger OnAfterGetRecord()
var
Item: Record Item;
begin
Rec.ShowShortcutDimCode(ShortcutDimCode);
UpdateTypeText();
SetItemChargeFieldsStyle();
if Rec."Variant Code" = '' then
VariantCodeMandatory := Item.IsVariantMandatory(Rec.Type = Rec.Type::Item, Rec."No.");
end;
trigger OnDeleteRecord(): Boolean
var
PurchLineReserve: Codeunit "Purch. Line-Reserve";
begin
OnBeforeDeleteRecord(Rec);
if (Rec.Quantity <> 0) and Rec.ItemExists(Rec."No.") then begin
Commit();
if not PurchLineReserve.DeleteLineConfirm(Rec) then
exit(false);
PurchLineReserve.DeleteLine(Rec);
end;
DocumentTotals.PurchaseDocTotalsNotUpToDate();
end;
trigger OnFindRecord(Which: Text): Boolean
begin
DocumentTotals.PurchaseCheckAndClearTotals(Rec, xRec, TotalPurchaseLine, VATAmount, InvoiceDiscountAmount, InvoiceDiscountPct);
exit(Rec.Find(Which));
end;
trigger OnInit()
begin
PurchasesPayablesSetup.Get();
Currency.InitRoundingPrecision();
TempOptionLookupBuffer.FillLookupBuffer(Enum::"Option Lookup Type"::Purchases);
IsFoundation := ApplicationAreaMgmtFacade.IsFoundationEnabled();
end;
trigger OnInsertRecord(BelowxRec: Boolean): Boolean
begin
UpdateTypeText();
end;
trigger OnModifyRecord(): Boolean
begin
DocumentTotals.PurchaseCheckIfDocumentChanged(Rec, xRec);
end;
trigger OnNewRecord(BelowxRec: Boolean)
begin
Rec.InitType();
SetDefaultType();
Clear(ShortcutDimCode);
UpdateTypeText();
end;
trigger OnOpenPage()
var
AllocationAccountMgt: Codeunit "Allocation Account Mgt.";
begin
UseAllocationAccountNumber := AllocationAccountMgt.UseAllocationAccountNoField();
SetOpenPage();
SetDimensionsVisibility();
SetItemReferenceVisibility();
end;
var
Currency: Record Currency;
PurchasesPayablesSetup: Record "Purchases & Payables Setup";
TempOptionLookupBuffer: Record "Option Lookup Buffer" temporary;
TransferExtendedText: Codeunit "Transfer Extended Text";
PurchAvailabilityMgt: Codeunit "Purch. Availability Mgt.";
PurchCalcDiscByType: Codeunit "Purch - Calc Disc. By Type";
ApplicationAreaMgmtFacade: Codeunit "Application Area Mgmt. Facade";
AmountWithDiscountAllowed: Decimal;
VariantCodeMandatory: Boolean;
IsFoundation: Boolean;
InvDiscAmountEditable: Boolean;
CurrPageIsEditable: Boolean;
BackgroundErrorCheck: Boolean;
ShowAllLinesEnabled: Boolean;
IsSaaSExcelAddinEnabled: Boolean;
ShowNonDedVATInLines: Boolean;
TypeAsText: Text[30];
ItemChargeStyleExpression: Text;
SuppressTotals: Boolean;
UseAllocationAccountNumber: Boolean;
ActionOnlyAllowedForAllocationAccountsErr: Label 'This action is only available for lines that have Allocation Account set as Type.';
ExcelFileNameTxt: Label 'Purchase Invoice %1 - Lines', Comment = '%1 = document number, ex. 10000';
protected var
TotalPurchaseHeader: Record "Purchase Header";
TotalPurchaseLine: Record "Purchase Line";
DocumentTotals: Codeunit "Document Totals";
InvoiceDiscountAmount: Decimal;
InvoiceDiscountPct: Decimal;
VATAmount: Decimal;
ShortcutDimCode: array[8] of Code[20];
DimVisible1: Boolean;
DimVisible2: Boolean;
DimVisible3: Boolean;
DimVisible4: Boolean;
DimVisible5: Boolean;
DimVisible6: Boolean;
DimVisible7: Boolean;
DimVisible8: Boolean;
IsBlankNumber: Boolean;
IsCommentLine: Boolean;
UnitofMeasureCodeIsChangeable: Boolean;
ItemReferenceVisible: Boolean;
local procedure SetOpenPage()
var
ServerSetting: Codeunit "Server Setting";
DocumentErrorsMgt: Codeunit "Document Errors Mgt.";
NonDeductibleVAT: Codeunit "Non-Deductible VAT";
begin
OnBeforeSetOpenPage();
IsSaaSExcelAddinEnabled := ServerSetting.GetIsSaasExcelAddinEnabled();
SuppressTotals := CurrentClientType() = ClientType::ODataV4;
BackgroundErrorCheck := DocumentErrorsMgt.BackgroundValidationEnabled();
ShowNonDedVATInLines := NonDeductibleVAT.ShowNonDeductibleVATInLines();
end;
procedure ApproveCalcInvDisc()
begin
CODEUNIT.Run(CODEUNIT::"Purch.-Disc. (Yes/No)", Rec);
DocumentTotals.PurchaseDocTotalsNotUpToDate();
end;
local procedure ValidateInvoiceDiscountAmount()
var
PurchaseHeader: Record "Purchase Header";
begin
if SuppressTotals then
exit;
PurchaseHeader.Get(Rec."Document Type", Rec."Document No.");
PurchCalcDiscByType.ApplyInvDiscBasedOnAmt(InvoiceDiscountAmount, PurchaseHeader);
DocumentTotals.PurchaseDocTotalsNotUpToDate();
CurrPage.Update(false);
end;
local procedure ExplodeBOM()
begin
CODEUNIT.Run(CODEUNIT::"Purch.-Explode BOM", Rec);
DocumentTotals.PurchaseDocTotalsNotUpToDate();
end;
procedure GetReceipt()
begin
CODEUNIT.Run(CODEUNIT::"Purch.-Get Receipt", Rec);
DocumentTotals.PurchaseDocTotalsNotUpToDate();
end;
procedure InsertExtendedText(Unconditionally: Boolean)
var
IsHandled: Boolean;
begin
if not Unconditionally and (Rec."No." = xRec."No.") then
exit;
IsHandled := false;
OnBeforeInsertExtendedText(Rec, IsHandled);
if IsHandled then
exit;
if TransferExtendedText.PurchCheckIfAnyExtText(Rec, Unconditionally) then begin
CurrPage.SaveRecord();
TransferExtendedText.InsertPurchExtText(Rec);
end;
if TransferExtendedText.MakeUpdate() then
UpdateForm(true);
end;
procedure UpdateForm(SetSaveRecord: Boolean)
begin
CurrPage.Update(SetSaveRecord);
end;
procedure NoOnAfterValidate()
begin
UpdateEditableOnRow();
InsertExtendedText(false);
if (Rec.Type = Rec.Type::"Charge (Item)") and (Rec."No." <> xRec."No.") and
(xRec."No." <> '')
then
CurrPage.SaveRecord();
OnAfterNoOnAfterValidate(Rec, xRec);
end;
procedure UpdateEditableOnRow()
begin
IsCommentLine := Rec.Type = Rec.Type::" ";
IsBlankNumber := IsCommentLine;
UnitofMeasureCodeIsChangeable := Rec.Type <> Rec.Type::" ";
CurrPageIsEditable := CurrPage.Editable;
InvDiscAmountEditable :=
CurrPageIsEditable and not PurchasesPayablesSetup."Calc. Inv. Discount" and
(TotalPurchaseHeader.Status = TotalPurchaseHeader.Status::Open);
OnAfterUpdateEditableOnRow(Rec, IsCommentLine, IsBlankNumber, InvDiscAmountEditable, CurrPageIsEditable, TotalPurchaseHeader, UnitofMeasureCodeIsChangeable);
end;
procedure RedistributeTotalsOnAfterValidate()
begin
if SuppressTotals then
exit;
CurrPage.SaveRecord();
DocumentTotals.PurchaseRedistributeInvoiceDiscountAmounts(Rec, VATAmount, TotalPurchaseLine);
CurrPage.Update(false);
end;
local procedure GetTotalPurchHeader()
begin
DocumentTotals.GetTotalPurchaseHeaderAndCurrency(Rec, TotalPurchaseHeader, Currency);
end;
procedure ClearTotalPurchaseHeader();
begin
Clear(TotalPurchaseHeader);
end;
procedure CalculateTotals()
begin
if SuppressTotals then
exit;
DocumentTotals.PurchaseCheckIfDocumentChanged(Rec, xRec);
DocumentTotals.CalculatePurchaseSubPageTotals(
TotalPurchaseHeader, TotalPurchaseLine, VATAmount, InvoiceDiscountAmount, InvoiceDiscountPct);
DocumentTotals.RefreshPurchaseLine(Rec);
end;
procedure DeltaUpdateTotals()
begin
if SuppressTotals then
exit;
OnBeforeDeltaUpdateTotals(Rec, xRec);
DocumentTotals.PurchaseDeltaUpdateTotals(Rec, xRec, TotalPurchaseLine, VATAmount, InvoiceDiscountAmount, InvoiceDiscountPct);
CheckSendLineInvoiceDiscountResetNotification();
end;
procedure ForceTotalsCalculation()
begin
DocumentTotals.PurchaseDocTotalsNotUpToDate();
end;
local procedure CheckSendLineInvoiceDiscountResetNotification()
var
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeCheckSendLineInvoiceDiscountResetNotification(Rec, IsHandled);
if IsHandled then
exit;
if Rec."Line Amount" <> xRec."Line Amount" then
Rec.SendLineInvoiceDiscountResetNotification();
end;
procedure UpdateTypeText()
var
RecRef: RecordRef;
begin
OnBeforeUpdateTypeText(Rec);
RecRef.GetTable(Rec);
TypeAsText := TempOptionLookupBuffer.FormatOption(RecRef.Field(Rec.FieldNo(Type)));
end;
procedure SetItemChargeFieldsStyle()
begin
ItemChargeStyleExpression := '';
if Rec.AssignedItemCharge() then
ItemChargeStyleExpression := 'Unfavorable';
end;
local procedure SetItemReferenceVisibility()
var
ItemReference: Record "Item Reference";
begin
ItemReferenceVisible := not ItemReference.IsEmpty();
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);
OnAfterSetDimensionsVisibility();
end;
local procedure SetDefaultType()
var
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeSetDefaultType(Rec, xRec, IsHandled);
if IsHandled then
exit;
if xRec."Document No." = '' then
Rec.Type := Rec.GetDefaultLineType();
end;
[IntegrationEvent(true, false)]
local procedure OnAfterNoOnAfterValidate(var PurchaseLine: Record "Purchase Line"; var xPurchaseLine: Record "Purchase Line")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterUpdateEditableOnRow(PurchaseLine: Record "Purchase Line"; var IsCommentLine: Boolean; var IsBlankNumber: Boolean; var InvDiscAmountEditable: Boolean; CurrPageIsEditable: Boolean; TotalPurchaseHeader: Record "Purchase Header"; var UnitofMeasureCodeIsChangeable: Boolean);
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterValidateShortcutDimCode(var PurchaseLine: Record "Purchase Line"; var ShortcutDimCode: array[8] of Code[20]; DimIndex: Integer)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeCheckSendLineInvoiceDiscountResetNotification(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeDeleteRecord(var PurchaseLine: Record "Purchase Line")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeInsertExtendedText(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeSetDefaultType(var PurchaseLine: Record "Purchase Line"; var xPurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeUpdateTypeText(var PurchaseLine: Record "Purchase Line")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeValidateDescription(var PurchaseLine: Record "Purchase Line"; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnItemReferenceNoOnLookup(var PurchaseLine: Record "Purchase Line")
begin
end;
[IntegrationEvent(true, false)]
local procedure OnBeforeSetOpenPage()
begin
end;
[IntegrationEvent(true, false)]
local procedure OnAfterSetDimensionsVisibility()
begin
end;
[IntegrationEvent(true, false)]
local procedure OnBeforeDeltaUpdateTotals(var PurchaseLine: Record "Purchase Line"; xPurchaseLine: Record "Purchase Line")
begin
end;
}