Codeunit 99000984 Mfg. WhseSourceCreateDocument

App
Base Application
Namespace
Microsoft.Warehouse.Request
Versions
27-28

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/Manufacturing/Warehouse/Request/MfgWhseSourceCreateDocument.Codeunit.al82 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.Warehouse.Request;

using Microsoft.Manufacturing.Document;
using Microsoft.Warehouse.Activity;
using Microsoft.Warehouse.Worksheet;

codeunit 99000984 "Mfg. WhseSourceCreateDocument"
{
    SingleInstance = true;

    var
        MfgCreatePutaway: Codeunit "Mfg. Create Put-away";
        CannotHandleMoreThanProdOrderLineQtyErr: Label 'You cannot handle more than %1 quantity in Production Order No. %2, Line No. %3', Comment = '%1 = Quantity, %2 - Production Order No., %3 - Production Order Line No.';

    [EventSubscriber(ObjectType::Report, Report::"Whse.-Source - Create Document", 'OnCreatePutawayFromProduction', '', true, false)]
    local procedure OnCreatePutawayFromProduction(var WhsePutawayWorksheetLine: Record "Whse. Worksheet Line"; SourceType: Integer; var EverythingHandled: Boolean; var QtyHandledBase: Decimal)
    var
        ProdOrderLine: Record "Prod. Order Line";
    begin
        CheckAndUpdateFinishedQtyOnProdOrderLineFromPutAway(ProdOrderLine, WhsePutawayWorksheetLine, SourceType);

        if ProdOrderLine."Finished Qty. (Base)" > 0 then begin
            MfgCreatePutAway.SetCalledFromPutAwayWorksheet(true);
            MfgCreatePutAway.CreateWhsePutAwayForProdOrderOutputLine(ProdOrderLine);
            MfgCreatePutAway.SetCalledFromPutAwayWorksheet(false);
        end;
        if WhsePutawayWorksheetLine."Qty. to Handle" <> WhsePutawayWorksheetLine."Qty. Outstanding" then
            EverythingHandled := false;
        if EverythingHandled then
            EverythingHandled := MfgCreatePutAway.EverythingIsHandled();
        QtyHandledBase := ProdOrderLine."Finished Qty. (Base)";
    end;

    local procedure CheckAndUpdateFinishedQtyOnProdOrderLineFromPutAway(var ProdOrderLine: Record "Prod. Order Line"; WhseWorksheetLine: Record "Whse. Worksheet Line"; var SourceType: Integer)
    begin
        ProdOrderLine.Get(WhseWorksheetLine."Source Subtype", WhseWorksheetLine."Whse. Document No.", WhseWorksheetLine."Whse. Document Line No.");
        if ProdOrderLine.GetRemainingPutAwayQty() < WhseWorksheetLine."Qty. to Handle" then
            Error(CannotHandleMoreThanProdOrderLineQtyErr, ProdOrderLine.GetRemainingPutAwayQty(), ProdOrderLine."Prod. Order No.", ProdOrderLine."Line No.");

        ProdOrderLine.TestField(ProdOrderLine."Qty. per Unit of Measure");
        ProdOrderLine."Finished Quantity" := WhseWorksheetLine."Qty. to Handle";
        ProdOrderLine."Finished Qty. (Base)" := WhseWorksheetLine."Qty. to Handle (Base)";
        SourceType := Database::"Prod. Order Line";
    end;

    [EventSubscriber(ObjectType::Report, Report::"Whse.-Source - Create Document", 'OnAfterCreatePutawaySetValues', '', true, false)]
    local procedure OnAfterCreatePutawaySetValues(NewAssignedID: Code[50]; NewSortActivity: Enum "Whse. Activity Sorting Method"; NewDoNotFillQtytoHandle: Boolean; NewBreakbulkFilter: Boolean)
    begin
        Clear(MfgCreatePutaway);
        MfgCreatePutaway.SetValues(NewAssignedID, NewSortActivity, NewDoNotFillQtytoHandle, NewBreakbulkFilter);
    end;

    [EventSubscriber(ObjectType::Report, Report::"Whse.-Source - Create Document", 'OnGetProductionMessageText', '', true, false)]
    local procedure OnGetProductionMessageText(var CreateErrorText: Text)
    begin
        MfgCreatePutAway.GetMessageText(CreateErrorText);
    end;

    [EventSubscriber(ObjectType::Report, Report::"Whse.-Source - Create Document", 'OnAfterCreatePutawayGetWhseActivHeaderNo', '', true, false)]
    local procedure OnAfterCreatePutawayGetWhseActivHeaderNo(var FirstActivityNo: Code[20]; var LastActivityNo: Code[20])
    begin
        if FirstActivityNo = '' then
            MfgCreatePutAway.GetWhseActivHeaderNo(FirstActivityNo, LastActivityNo);
    end;

    [EventSubscriber(ObjectType::Report, Report::"Whse.-Source - Create Document", 'OnAfterCreatePutAwayDeleteBlankBinContent', '', true, false)]
    local procedure OnAfterCreatePutAwayDeleteBlankBinContent(var WarehouseActivityHeader: Record "Warehouse Activity Header")
    begin
        MfgCreatePutAway.DeleteBlankBinContent(WarehouseActivityHeader);
    end;

    [EventSubscriber(ObjectType::Codeunit, Codeunit::"Get Source Doc. Outbound", 'OnGetSingleOutboundDocOnSetFilterGroupFilters', '', true, false)]
    local procedure OnGetSingleOutboundDocOnSetFilterGroupFilters(var WhseRqst: Record "Warehouse Request")
    begin
        WhseRqst.SetFilter("Source Document", '<>%1', WhseRqst."Source Document"::"Prod. Consumption");
    end;

}