Codeunit 6479 Serv. Catalog Item Mgt.

App
Base Application
Namespace
Microsoft.Inventory.Item.Catalog
Versions
25-28

Procedures, 3Events, 6

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/Service/Inventory/Item/ServCatalogItemMgt.Codeunit.al143 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.Item.Catalog;

using Microsoft.Inventory.Item;
using Microsoft.Service.Archive;
using Microsoft.Service.Document;

codeunit 6479 "Serv. Catalog Item Mgt."
{
    var
        CatalogItemManagement: Codeunit "Catalog Item Management";

    procedure DelNonStockFSM(var ServInvLine2: Record "Service Line")
    var
        NewItem: Record Item;
        IsHandled: Boolean;
    begin
        IsHandled := false;
        OnBeforeDelNonStockFSM(ServInvLine2, IsHandled);
        if IsHandled then
            exit;

        if ServInvLine2.Nonstock = false then
            exit;

        NewItem.Get(ServInvLine2."No.");
        ServInvLine2."No." := '';
        ServInvLine2.Modify();

        CatalogItemManagement.DelNonStockItem(NewItem);
    end;

    procedure NonStockFSM(var ServInvLine2: Record "Service Line")
    var
        NewItem: Record Item;
        NonStockItem: Record "Nonstock Item";
        IsHandled: Boolean;
    begin
        NonStockItem.Get(ServInvLine2."No.");
        if NonStockItem."Item No." <> '' then begin
            ServInvLine2."No." := NonStockItem."Item No.";
            exit;
        end;

        CatalogItemManagement.DetermineItemNoAndItemNoSeries(NonStockItem);
        NonStockItem.Modify();
        ServInvLine2."No." := NonStockItem."Item No.";
        OnNonStockFSMOnBeforeInsertItemUnitOfMeasure(NonStockItem);
        CatalogItemManagement.InsertItemUnitOfMeasure(NonStockItem."Unit of Measure", ServInvLine2."No.");

        NewItem.SetRange("No.", ServInvLine2."No.");
        if NewItem.FindFirst() then
            exit;

        IsHandled := false;
        OnNonStockFSMOnBeforeProgWindowOpen(ServInvLine2, IsHandled);
        if not IsHandled and GuiAllowed() then
            CatalogItemManagement.OpenProgressDialog(NonStockItem, ServInvLine2."No.");

        CatalogItemManagement.CreateNewItem(NonStockItem);
        OnNonStockFSMOnAfterCreateNewItem(NewItem);

        if CatalogItemManagement.CheckLicensePermission(DATABASE::"Item Vendor") then
            CatalogItemManagement.NonstockItemVend(NonStockItem);
        if CatalogItemManagement.CheckLicensePermission(DATABASE::"Item Reference") then
            CatalogItemManagement.NonstockItemReference(NonStockItem);

        IsHandled := false;
        OnNonStockFSMOnBeforeProgWindowClose(ServInvLine2, IsHandled);
        if not IsHandled and GuiAllowed() then
            CatalogItemManagement.CloseProgressDialog();
    end;

    procedure DelNonStockServiceArch(var ServiceLineArchive: Record "Service Line Archive")
    var
        NewItem: Record Item;
        IsHandled: Boolean;
    begin
        IsHandled := false;
        OnBeforeDelNonStockServiceLineArchive(ServiceLineArchive, IsHandled);
        if IsHandled then
            exit;

        if NewItem.Get(ServiceLineArchive."No.") then begin
            ServiceLineArchive."No." := '';
            ServiceLineArchive.Modify();

            CatalogItemManagement.DelNonStockItem(NewItem);
        end;
    end;

    [EventSubscriber(ObjectType::Codeunit, Codeunit::"Catalog Item Management", 'OnDelNonStockItemOnAfterCheckRelations', '', true, false)]
    local procedure OnDelNonStockItemOnAfterCheckRelations(var Item: Record Item; var ShouldExit: Boolean)
    var
        ServiceLine: Record "Service Line";
        ServiceLineArchive: Record "Service Line Archive";
    begin
        ServiceLine.SetCurrentKey(Type, "No.");
        ServiceLine.SetRange(Type, ServiceLine.Type::Item);
        ServiceLine.SetRange("No.", Item."No.");
        if not ServiceLine.IsEmpty() then
            ShouldExit := true;

        ServiceLineArchive.SetCurrentKey(Type, "No.");
        ServiceLineArchive.SetRange(Type, ServiceLine.Type::Item);
        ServiceLineArchive.SetRange("No.", Item."No.");
        if not ServiceLineArchive.IsEmpty() then
            ShouldExit := true;
    end;

    [IntegrationEvent(false, false)]
    local procedure OnNonStockFSMOnAfterCreateNewItem(var NewItem: Record Item)
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnNonStockFSMOnBeforeInsertItemUnitOfMeasure(var NonStockItem: Record "Nonstock Item")
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnNonStockFSMOnBeforeProgWindowOpen(var ServiceLine: Record "Service Line"; var IsHandled: Boolean)
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnBeforeDelNonStockFSM(var ServiceLine: Record "Service Line"; var IsHandled: Boolean)
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnNonStockFSMOnBeforeProgWindowClose(ServiceLine: Record "Service Line"; var IsHandled: Boolean)
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnBeforeDelNonStockServiceLineArchive(var ServiceLineArchive: Record "Service Line Archive"; var IsHandled: Boolean)
    begin
    end;
}