Table 7113 Analysis Type

App
Base Application
Namespace
Microsoft.Inventory.Analysis
Versions
17-28

Fields, 5Keys, 1Procedures, 1Events, 3

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/Inventory/Analysis/AnalysisType.Table.al378 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.Analysis;

using Microsoft.Foundation.Enums;

table 7113 "Analysis Type"
{
    Caption = 'Analysis Type';
    DataCaptionFields = "Code", Name;
    DrillDownPageID = "Analysis Type List";
    LookupPageID = "Analysis Type List";
    DataClassification = CustomerContent;

    fields
    {
        field(1; "Code"; Code[10])
        {
            Caption = 'Code';
            ToolTip = 'Specifies the code of the analysis type.';
            NotBlank = true;
        }
        field(2; Name; Text[50])
        {
            Caption = 'Name';
            ToolTip = 'Specifies a description of the analysis type.';
        }
        field(3; "Value Type"; Enum "Analysis Value Type")
        {
            Caption = 'Value Type';
            ToolTip = 'Specifies the value type that the analysis type is based on.';

            trigger OnValidate()
            begin
                if xRec."Value Type" <> "Value Type" then begin
                    "Item Ledger Entry Type Filter" := '';
                    "Value Entry Type Filter" := '';
                end;
            end;
        }
        field(4; "Item Ledger Entry Type Filter"; Text[250])
        {
            Caption = 'Item Ledger Entry Type Filter';
            ToolTip = 'Specifies a filter on the type of item ledger entry.';

            trigger OnValidate()
            begin
                if "Item Ledger Entry Type Filter" <> '' then
                    if not CanUseValueTypeForItemLedgerEntryTypeFilter() then
                        Error(Text000, FieldCaption("Item Ledger Entry Type Filter"), "Value Type");
                AnalysisRepMgmt.ValidateFilter(
                  "Item Ledger Entry Type Filter", DATABASE::"Analysis Type",
                  FieldNo("Item Ledger Entry Type Filter"), CurrFieldNo <> FieldNo("Item Ledger Entry Type Filter"));
            end;
        }
        field(5; "Value Entry Type Filter"; Text[250])
        {
            Caption = 'Value Entry Type Filter';
            ToolTip = 'Specifies a filter on the type of item value entry.';

            trigger OnValidate()
            begin
                if "Value Entry Type Filter" <> '' then
                    if not CanUseValueTypeForValueEntryTypeFilter() then
                        Error(Text000, FieldCaption("Value Entry Type Filter"), "Value Type");
                AnalysisRepMgmt.ValidateFilter(
                  "Value Entry Type Filter", DATABASE::"Analysis Type",
                  FieldNo("Value Entry Type Filter"), CurrFieldNo <> FieldNo("Value Entry Type Filter"));
            end;
        }
    }

    keys
    {
        key(Key1; "Code")
        {
            Clustered = true;
        }
    }

    fieldgroups
    {
    }

    var
        AnalysisRepMgmt: Codeunit "Analysis Report Management";

#pragma warning disable AA0074
#pragma warning disable AA0470
        Text000: Label 'You cannot specify a %1 for %2.';
#pragma warning restore AA0470
        Text001: Label 'COGS';
        Text002: Label 'Non-Inventoriable Cost';
        Text003: Label 'Sales Amount';
        Text004: Label 'Sales Quantity';
        Text005: Label 'Unit Price';
        Text006: Label 'COGS';
        Text007: Label 'NON-INVTBL';
        Text008: Label 'SALES-AMT';
        Text009: Label 'SALES-QTY';
        Text010: Label 'UNIT-PRICE';
        Text011: Label 'Direct Cost';
        Text012: Label 'DIRCOST';
        Text013: Label 'Purchases';
        Text014: Label 'PURCHASES';
        Text015: Label 'Purchases Quantity';
        Text016: Label 'PURCH-QTY';
        Text017: Label 'Direct Cost - Capacity';
        Text018: Label 'DIRCOSTCAP';
        Text019: Label 'Indirect Cost';
        Text020: Label 'INDIRCOST';
        Text021: Label 'Revaluation';
        Text022: Label 'REVAL';
        Text023: Label 'Rounding';
        Text024: Label 'ROUNDING';
        Text025: Label 'Variance';
        Text026: Label 'VARIANCE';
        Text027: Label 'Inventory';
        Text028: Label 'INVENTORY';
        Text029: Label 'Consumption';
        Text030: Label 'CONSUMP';
        Text031: Label 'Negative Adjustment';
        Text032: Label 'N-ADJTM';
        Text033: Label 'Output';
        Text034: Label 'OUTPUT';
        Text035: Label 'Postive Adjustment';
        Text036: Label 'P-ADJTM';
        Text037: Label 'Transfer';
        Text038: Label 'TRANSFER';
        Text039: Label 'Consumption Quantity';
        Text040: Label 'CONSUMPQTY';
        Text041: Label 'Inventory Quantity';
        Text042: Label 'INVT-QTY';
        Text043: Label 'Neg. Adjmt. Quantity';
        Text044: Label 'N-ADJTMQTY';
        Text045: Label 'Output Quantity';
        Text046: Label 'OUTPUT-QTY';
        Text047: Label 'Pos. Adjmt. Quantity';
        Text048: Label 'P-ADJTMQTY';
        Text049: Label 'Transfer Quantity';
        Text050: Label 'TRANS-QTY';
        Text051: Label 'Standard Cost';
        Text052: Label 'STDCOST';
        Text053: Label 'Indirect Cost %';
        Text054: Label 'INDCOSTPCT';
        Text055: Label 'The default Analysis Types have been recreated.';
#pragma warning restore AA0074

    local procedure CanUseValueTypeForItemLedgerEntryTypeFilter() CanUseValueType: Boolean
    begin
        CanUseValueType := "Value Type" in
          ["Value Type"::Quantity,
            "Value Type"::"Cost Amount",
            "Value Type"::"Non-Invntble Amount",
            "Value Type"::"Sales Amount"];

        OnAfterCanUseValueTypeForItemLedgerEntryTypeFilter(Rec, CanUseValueType);
    end;

    local procedure CanUseValueTypeForValueEntryTypeFilter() CanUseValueType: Boolean
    begin
        CanUseValueType := "Value Type" in
          ["Value Type"::"Cost Amount",
            "Value Type"::"Non-Invntble Amount",
            "Value Type"::"Sales Amount"];

        OnAfterCanUseValueTypeForValueEntryTypeFilter(Rec, CanUseValueType);
    end;

    procedure ResetDefaultAnalysisTypes(ShowMessage: Boolean)
    var
        ItemStatBuf: Record "Item Statistics Buffer";
    begin
        InsertItemAnalysisType(
          Text001,
          Text006,
          StrSubstNo('=''%1''', Format(ItemStatBuf."Item Ledger Entry Type Filter"::Sale)),
          StrSubstNo('<>''%1''', Format(ItemStatBuf."Entry Type Filter"::Revaluation)),
          "Value Type"::"Cost Amount");
        InsertItemAnalysisType(
          Text007,
          Text002,
          '<>'' ''',
          '',
          "Value Type"::"Non-Invntble Amount");
        InsertItemAnalysisType(
          Text008,
          Text003,
          StrSubstNo('=''%1''', Format(ItemStatBuf."Item Ledger Entry Type Filter"::Sale)),
          StrSubstNo('<>''%1''', Format(ItemStatBuf."Entry Type Filter"::Revaluation)),
          "Value Type"::"Sales Amount");
        InsertItemAnalysisType(
          Text009,
          Text004,
          StrSubstNo('=''%1''', Format(ItemStatBuf."Item Ledger Entry Type Filter"::Sale)),
          '',
          "Value Type"::Quantity);
        InsertItemAnalysisType(
          Text010,
          Text005,
          '',
          '',
          "Value Type"::"Unit Price");
        InsertItemAnalysisType(
          Text012,
          Text011,
          StrSubstNo('<>''%1''&<>'' ''', Format(ItemStatBuf."Item Ledger Entry Type Filter"::Sale)),
          StrSubstNo('=''%1''', Format(ItemStatBuf."Entry Type Filter"::"Direct Cost")),
          "Value Type"::"Cost Amount");
        InsertItemAnalysisType(
          Text014,
          Text013,
          StrSubstNo('=''%1''', Format(ItemStatBuf."Item Ledger Entry Type Filter"::Purchase)),
          '',
          "Value Type"::"Cost Amount");
        InsertItemAnalysisType(
          Text016,
          Text015,
          StrSubstNo('=''%1''', Format(ItemStatBuf."Item Ledger Entry Type Filter"::Purchase)),
          '',
          "Value Type"::Quantity);
        InsertItemAnalysisType(
          Text018,
          Text017,
          ''' ''',
          StrSubstNo('=''%1''', Format(ItemStatBuf."Entry Type Filter"::"Direct Cost")),
          "Value Type"::"Cost Amount");
        InsertItemAnalysisType(
          Text020,
          Text019,
          StrSubstNo('<>''%1''&<>'' ''', Format(ItemStatBuf."Item Ledger Entry Type Filter"::Sale)),
          StrSubstNo('=''%1''', Format(ItemStatBuf."Entry Type Filter"::"Indirect Cost")),
          "Value Type"::"Cost Amount");
        InsertItemAnalysisType(
          Text022,
          Text021,
          StrSubstNo('<>''%1''&<>'' ''', Format(ItemStatBuf."Item Ledger Entry Type Filter"::Sale)),
          StrSubstNo('=''%1''', Format(ItemStatBuf."Entry Type Filter"::Revaluation)),
          "Value Type"::"Cost Amount");
        InsertItemAnalysisType(
          Text024,
          Text023,
          StrSubstNo('<>''%1''&<>'' ''', Format(ItemStatBuf."Item Ledger Entry Type Filter"::Sale)),
          StrSubstNo('=''%1''', Format(ItemStatBuf."Entry Type Filter"::Rounding)),
          "Value Type"::"Cost Amount");
        InsertItemAnalysisType(
          Text026,
          Text025,
          StrSubstNo('<>''%1''&<>'' ''', Format(ItemStatBuf."Item Ledger Entry Type Filter"::Sale)),
          StrSubstNo('=''%1''', Format(ItemStatBuf."Entry Type Filter"::Variance)),
          "Value Type"::"Cost Amount");

        InsertItemAnalysisType(
          Text028,
          Text027,
          '<>'' ''',
          '',
          "Value Type"::"Cost Amount");
        InsertItemAnalysisType(
          Text030,
          Text029,
          StrSubstNo('=''%1''', Format(ItemStatBuf."Item Ledger Entry Type Filter"::Consumption)),
          '',
          "Value Type"::"Cost Amount");
        InsertItemAnalysisType(
          Text032,
          Text031,
          StrSubstNo('=''%1''', Format(ItemStatBuf."Item Ledger Entry Type Filter"::"Negative Adjmt.")),
          '',
          "Value Type"::"Cost Amount");
        InsertItemAnalysisType(
          Text034,
          Text033,
          StrSubstNo('=''%1''', Format(ItemStatBuf."Item Ledger Entry Type Filter"::Output)),
          StrSubstNo('<>''%1''', Format(ItemStatBuf."Entry Type Filter"::Variance)),
          "Value Type"::"Cost Amount");
        InsertItemAnalysisType(
          Text036,
          Text035,
          StrSubstNo('=''%1''', Format(ItemStatBuf."Item Ledger Entry Type Filter"::"Positive Adjmt.")),
          '',
          "Value Type"::"Cost Amount");
        InsertItemAnalysisType(
          Text038,
          Text037,
          StrSubstNo('=''%1''', Format(ItemStatBuf."Item Ledger Entry Type Filter"::Transfer)),
          '',
          "Value Type"::"Cost Amount");

        InsertItemAnalysisType(
          Text040,
          Text039,
          StrSubstNo('=''%1''', Format(ItemStatBuf."Item Ledger Entry Type Filter"::Consumption)),
          '',
          "Value Type"::Quantity);
        InsertItemAnalysisType(
          Text042,
          Text041,
          '<>'' ''',
          '',
          "Value Type"::Quantity);
        InsertItemAnalysisType(
          Text044,
          Text043,
          StrSubstNo('=''%1''', Format(ItemStatBuf."Item Ledger Entry Type Filter"::"Negative Adjmt.")),
          '',
          "Value Type"::Quantity);
        InsertItemAnalysisType(
          Text046,
          Text045,
          StrSubstNo('=''%1''', Format(ItemStatBuf."Item Ledger Entry Type Filter"::Output)),
          '',
          "Value Type"::Quantity);
        InsertItemAnalysisType(
          Text048,
          Text047,
          StrSubstNo('=''%1''', Format(ItemStatBuf."Item Ledger Entry Type Filter"::"Positive Adjmt.")),
          '',
          "Value Type"::Quantity);
        InsertItemAnalysisType(
          Text050,
          Text049,
          StrSubstNo('=''%1''', Format(ItemStatBuf."Item Ledger Entry Type Filter"::Transfer)),
          '',
          "Value Type"::Quantity);

        InsertItemAnalysisType(
          Text052,
          Text051,
          '',
          '',
          "Value Type"::"Standard Cost");
        InsertItemAnalysisType(
          Text054,
          Text053,
          '',
          '',
          "Value Type"::"Indirect Cost");

        OnAfterResetDefaultAnalysisTypes(ShowMessage);

        if ShowMessage then
            Message(Text055);
    end;

    local procedure InsertItemAnalysisType(Code2: Code[10]; Name2: Text[30]; ItemLedgEntryTypeFilter: Text[250]; ValueEntryTypeFilter: Text[250]; ValueType: Enum "Analysis Value Type")
    var
        AnalysisType: Record "Analysis Type";
    begin
        AnalysisType.Init();
        AnalysisType.Code := Code2;
        AnalysisType.Name := Name2;
        AnalysisType.Validate("Value Type", ValueType);
        AnalysisType.Validate("Item Ledger Entry Type Filter", ItemLedgEntryTypeFilter);
        AnalysisType.Validate("Value Entry Type Filter", ValueEntryTypeFilter);
        if not AnalysisType.Insert(true) then
            AnalysisType.Modify(true);
    end;

    [IntegrationEvent(false, false)]
    local procedure OnAfterCanUseValueTypeForItemLedgerEntryTypeFilter(AnalysisType: Record "Analysis Type"; var CanUseValueType: Boolean)
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnAfterCanUseValueTypeForValueEntryTypeFilter(AnalysisType: Record "Analysis Type"; var CanUseValueType: Boolean)
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnAfterResetDefaultAnalysisTypes(ShowMessage: Boolean)
    begin
    end;
}