Table extension 907 Asm. Item Journal Line, source in 29

Source29

src/Layers/W1/BaseApp/Assembly/Inventory/Journal/AsmItemJournalLine.TableExt.al96 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.Inventory.Journal;

using Microsoft.Assembly.Document;
using Microsoft.Assembly.History;
using Microsoft.Inventory.Ledger;

tableextension 907 "Asm. Item Journal Line" extends "Item Journal Line"
{
    fields
    {

    }

    procedure CreateAssemblyDim()
    var
        AssemblyHeader: Record "Assembly Header";
        AssemblyLine: Record "Assembly Line";
        DimSetIDArr: array[10] of Integer;
        i: Integer;
    begin
        "Shortcut Dimension 1 Code" := '';
        "Shortcut Dimension 2 Code" := '';
        "Dimension Set ID" := 0;
        if ("Order Type" <> "Order Type"::Assembly) or ("Order No." = '') then
            exit;
        AssemblyHeader.Get(AssemblyHeader."Document Type"::Order, "Order No.");
        i := 1;
        DimSetIDArr[i] := AssemblyHeader."Dimension Set ID";
        if "Order Line No." <> 0 then begin
            i := i + 1;
            AssemblyLine.Get(AssemblyLine."Document Type"::Order, "Order No.", "Order Line No.");
            DimSetIDArr[i] := AssemblyLine."Dimension Set ID";
        end;

        OnCreateAssemblyDimOnAfterCreateDimSetIDArr(Rec, DimSetIDArr, i);
        "Dimension Set ID" := DimMgt.GetCombinedDimensionSetID(DimSetIDArr, "Shortcut Dimension 1 Code", "Shortcut Dimension 2 Code");

        OnAfterCreateAssemblyDim(Rec, AssemblyHeader);
    end;

    /// <summary>
    /// Determines whether an item journal line represents a correction for an assemble-to-order (ATO) sale.
    /// </summary>
    /// <returns>True if theline represents a correction for an assemble-to-order sale, otherwise false.</returns>
    procedure IsATOCorrection(): Boolean
    var
        ItemLedgEntry: Record "Item Ledger Entry";
        PostedATOLink: Record "Posted Assemble-to-Order Link";
    begin
        if not Correction then
            exit(false);
        if "Entry Type" <> "Entry Type"::Sale then
            exit(false);
        if not ItemLedgEntry.Get("Applies-to Entry") then
            exit(false);
        if ItemLedgEntry."Entry Type" <> ItemLedgEntry."Entry Type"::Sale then
            exit(false);
        PostedATOLink.SetCurrentKey("Document Type", "Document No.", "Document Line No.");
        PostedATOLink.SetRange("Document Type", PostedATOLink."Document Type"::"Sales Shipment");
        PostedATOLink.SetRange("Document No.", ItemLedgEntry."Document No.");
        PostedATOLink.SetRange("Document Line No.", ItemLedgEntry."Document Line No.");
        exit(not PostedATOLink.IsEmpty);
    end;

    /// <summary>
    /// Determines whether an item journal line represents a resource consumption line for an assembly output.
    /// </summary>
    /// <returns>True if the line represents a resource consumption line for an assembly output, otherwise false.</returns>
    procedure IsAssemblyResourceConsumpLine(): Boolean
    begin
        exit(("Entry Type" = "Entry Type"::"Assembly Output") and (Type = Type::Resource));
    end;

    /// <summary>
    /// Determine whether an item journal line represents an assembly output line.
    /// </summary>
    /// <returns>True if the linerepresents an assembly output line, otherwise false.</returns>
    procedure IsAssemblyOutputLine(): Boolean
    begin
        exit(("Entry Type" = "Entry Type"::"Assembly Output") and (Type = Type::" "));
    end;

    [IntegrationEvent(false, false)]
    local procedure OnAfterCreateAssemblyDim(var ItemJournalLine: Record "Item Journal Line"; AssemblyHeader: Record "Assembly Header")
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnCreateAssemblyDimOnAfterCreateDimSetIDArr(var ItemJournalLine: Record "Item Journal Line"; var DimSetIDArr: array[10] of Integer; var i: Integer)
    begin
    end;
}