Skip to content

[New IntegrationEvent] request in codeunit 5996 "Prod. Order Warehouse Mgt." #30233

Description

@lhadhazi9940

Why do you need this change?

Our Client has been modifiying the ProdOrdercomponent Filtering before calculating the crossdock elements.
Modifications now in Navision needs to be reimplemented in BC

Describe the request

<-------Original code--------->

    local procedure CalcCrossDockToProdOrderComponent(var WhseCrossDockOpportunity: Record "Whse. Cross-Dock Opportunity"; ItemNo: Code[20]; VariantCode: Code[10]; LocationCode: Code[10]; CrossDockDate: Date; LineNo: Integer; var sender: Codeunit "Whse. Cross-Dock Management")
    var
        ProdOrderComponent: Record "Prod. Order Component";
    begin
        ProdOrderComponent.SetRange(Status, ProdOrderComponent.Status::Released);
        ProdOrderComponent.SetRange("Item No.", ItemNo);
        ProdOrderComponent.SetRange("Variant Code", VariantCode);
        ProdOrderComponent.SetRange("Location Code", LocationCode);
        ProdOrderComponent.SetRange("Due Date", 0D, CrossDockDate);
        ProdOrderComponent.SetRange("Planning Level Code", 0);
        ProdOrderComponent.SetFilter("Remaining Qty. (Base)", '>0');
        if ProdOrderComponent.Find('-') then
            repeat
                ProdOrderComponent.CalcFields("Pick Qty. (Base)");
                OnCalcCrossDockToProdOrderComponentOnBeforeInsertCrossDockLine(ProdOrderComponent);
                sender.InsertCrossDockOpp(
                    WhseCrossDockOpportunity,
                    Database::"Prod. Order Component", ProdOrderComponent.Status.AsInteger(), ProdOrderComponent."Prod. Order No.",
                    ProdOrderComponent."Line No.", ProdOrderComponent."Prod. Order Line No.",
                    ProdOrderComponent."Remaining Quantity", ProdOrderComponent."Remaining Qty. (Base)",
                    ProdOrderComponent."Pick Qty.", ProdOrderComponent."Pick Qty. (Base)", ProdOrderComponent."Qty. Picked", ProdOrderComponent."Qty. Picked (Base)",
                    ProdOrderComponent."Unit of Measure Code", ProdOrderComponent."Qty. per Unit of Measure", ProdOrderComponent."Due Date",
                    ProdOrderComponent."Item No.", ProdOrderComponent."Variant Code", LineNo);
            until ProdOrderComponent.Next() = 0;
    end;

<----------Modified Code-------------->

    local procedure CalcCrossDockToProdOrderComponent(var WhseCrossDockOpportunity: Record "Whse. Cross-Dock Opportunity"; ItemNo: Code[20]; VariantCode: Code[10]; LocationCode: Code[10]; CrossDockDate: Date; LineNo: Integer; var sender: Codeunit "Whse. Cross-Dock Management")
    var
        ProdOrderComponent: Record "Prod. Order Component";
    begin
        ProdOrderComponent.SetRange(Status, ProdOrderComponent.Status::Released);
        ProdOrderComponent.SetRange("Item No.", ItemNo);
        ProdOrderComponent.SetRange("Variant Code", VariantCode);
        ProdOrderComponent.SetRange("Location Code", LocationCode);
        ProdOrderComponent.SetRange("Due Date", 0D, CrossDockDate);
        ProdOrderComponent.SetRange("Planning Level Code", 0);
        ProdOrderComponent.SetFilter("Remaining Qty. (Base)", '>0');
        OnBeforeFindProdOrderComponent(ProdOrderComponent);
        if ProdOrderComponent.Find('-') then
            repeat
                ProdOrderComponent.CalcFields("Pick Qty. (Base)");
                OnCalcCrossDockToProdOrderComponentOnBeforeInsertCrossDockLine(ProdOrderComponent);
                sender.InsertCrossDockOpp(
                    WhseCrossDockOpportunity,
                    Database::"Prod. Order Component", ProdOrderComponent.Status.AsInteger(), ProdOrderComponent."Prod. Order No.",
                    ProdOrderComponent."Line No.", ProdOrderComponent."Prod. Order Line No.",
                    ProdOrderComponent."Remaining Quantity", ProdOrderComponent."Remaining Qty. (Base)",
                    ProdOrderComponent."Pick Qty.", ProdOrderComponent."Pick Qty. (Base)", ProdOrderComponent."Qty. Picked", ProdOrderComponent."Qty. Picked (Base)",
                    ProdOrderComponent."Unit of Measure Code", ProdOrderComponent."Qty. per Unit of Measure", ProdOrderComponent."Due Date",
                    ProdOrderComponent."Item No.", ProdOrderComponent."Variant Code", LineNo);
            until ProdOrderComponent.Next() = 0;
    end;

    [IntegrationEvent(false, false)]
    local procedure OnBeforeFindProdOrderComponent(var ProdOrderComponent: Record "Prod. Order Component")
    begin
    end;

Internal work item: AB#638055

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