Skip to content

[Event Request] codeunit 900 "Assembly-Post" #30205

Description

@Simon110394

Why do you need this change?

We need to perform some changes on PostLines, using the AssemblyLine records, before the standard AssemblyLine.FindSet

Describe the request

In procedure PostLines of codeunit 900 "Assembly-Post" we need an event:

[IntegrationEvent(false, false)]
local procedure OnPostLinesOnAfterAssemblyLineSetFilters(AssemblyHeader: Record "Assembly Header"; var AssemblyLine: Record "Assembly Line"; PostedAssemblyHeader: Record "Posted Assembly Header")
begin
end;

Changes between **:

local procedure PostLines(AssemblyHeader: Record "Assembly Header"; var AssemblyLine: Record "Assembly Line"; PostedAssemblyHeader: Record "Posted Assembly Header"; var ItemJnlPostLine: Codeunit "Item Jnl.-Post Line"; var ResJnlPostLine: Codeunit "Res. Jnl.-Post Line"; var WhseJnlRegisterLine: Codeunit "Whse. Jnl.-Register Line")
    var
        PostedAssemblyLine: Record "Posted Assembly Line";
        LineCounter: Integer;
        QtyToConsume: Decimal;
        QtyToConsumeBase: Decimal;
        ItemLedgEntryNo: Integer;
    begin
        AssemblyLine.Reset();
        AssemblyLine.SetRange("Document Type", AssemblyHeader."Document Type");
        AssemblyLine.SetRange("Document No.", AssemblyHeader."No.");
        SortLines(AssemblyLine);
		
		**OnPostLinesOnAfterAssemblyLineSetFilters(AssemblyHeader, AssemblyLine, PostedAssemblyHeader);**

        LineCounter := 0;
        if AssemblyLine.FindSet() then
            repeat
                if (AssemblyLine."No." = '') and
                    (AssemblyLine.Description <> '') and
                    (AssemblyLine.Type <> AssemblyLine.Type::" ")
                then
                    Error(Text009, AssemblyLine.FieldCaption(Type), AssemblyLine.Description);

                LineCounter := LineCounter + 1;
                if ShowProgress then
                    Window.Update(2, LineCounter);

                GetLineQtys(QtyToConsume, QtyToConsumeBase, AssemblyLine);
                OnPostLinesOnAfterGetLineQtys(QtyToConsume, QtyToConsumeBase, AssemblyLine);

                ItemLedgEntryNo := 0;
                if QtyToConsumeBase <> 0 then begin
                    case AssemblyLine.Type of
                        AssemblyLine.Type::Item:
                            ItemLedgEntryNo :=
                                PostItemConsumption(
                                AssemblyHeader,
                                AssemblyLine,
                                AssemblyHeader."Posting No. Series",
                                QtyToConsume,
                                QtyToConsumeBase, ItemJnlPostLine, WhseJnlRegisterLine, AssemblyHeader."Posting No.", false, 0);
                        AssemblyLine.Type::Resource:
                            PostResourceConsumption(
                                AssemblyHeader,
                                AssemblyLine,
                                AssemblyHeader."Posting No. Series",
                                QtyToConsume,
                                QtyToConsumeBase, ResJnlPostLine, ItemJnlPostLine, AssemblyHeader."Posting No.", false);
                    end;

                    // modify the lines
                    AssemblyLine."Consumed Quantity" := AssemblyLine."Consumed Quantity" + QtyToConsume;
                    AssemblyLine."Consumed Quantity (Base)" := AssemblyLine."Consumed Quantity (Base)" + QtyToConsumeBase;
                    //// Update Qty. Pick for location with optional warehouse pick.
                    UpdateQtyPickedForOptionalWhsePick(AssemblyLine, AssemblyLine."Consumed Quantity");
                    AssemblyLine.InitRemainingQty();
                    AssemblyLine.InitQtyToConsume();
                    OnBeforeAssemblyLineModify(AssemblyLine, QtyToConsumeBase);
                    AssemblyLine.Modify();
                end;

                // Insert posted assembly lines
                PostedAssemblyLine.Init();
                PostedAssemblyLine.TransferFields(AssemblyLine);
                PostedAssemblyLine."Document No." := PostedAssemblyHeader."No.";
                PostedAssemblyLine.Quantity := QtyToConsume;
                PostedAssemblyLine."Quantity (Base)" := QtyToConsumeBase;
                PostedAssemblyLine."Cost Amount" := Round(PostedAssemblyLine.Quantity * AssemblyLine."Unit Cost");
                PostedAssemblyLine."Order No." := AssemblyLine."Document No.";
                PostedAssemblyLine."Order Line No." := AssemblyLine."Line No.";
                InsertLineItemEntryRelation(PostedAssemblyLine, ItemJnlPostLine, ItemLedgEntryNo);
                OnBeforePostedAssemblyLineInsert(PostedAssemblyLine, AssemblyLine);
                PostedAssemblyLine.Insert();
                OnAfterPostedAssemblyLineInsert(PostedAssemblyLine, AssemblyLine);
            until AssemblyLine.Next() = 0;
    end;

Internal work item: AB#637981

Metadata

Metadata

Assignees

No one assigned

    Labels

    SCMGitHub request for SCM areaevent-requestRequest for adding an event

    Type

    Fields

    No fields configured for Task.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions