microsoft / ALAppExtensions

Repository for collaboration on Microsoft AL application add-on and localization extensions for Microsoft Dynamics 365 Business Central.
MIT License
769 stars 611 forks source link

[Event Request] Page 6510 "Item Tracking Lines" - 1 new event, 4 changes (BaseApp_22.0) #23633

Closed tg-navcom closed 1 year ago

tg-navcom commented 1 year ago

Please make changes in Page 6510 "Item Tracking Lines"

1. Change OnBeforeLotNoAssistEdit by add that same parameter like in OnBeforeSerialNoAssistEdit

Definition change:

    [IntegrationEvent(false, false)]
-   local procedure OnBeforeLotNoAssistEdit(var TrackingSpecification: Record "Tracking Specification"; xTrackingSpecification: Record "Tracking Specification"; CurrentSignFactor: Integer; var MaxQuantity: Decimal; UndefinedQtyArray: array[3] of Decimal; var IsHandled: Boolean)
+   local procedure OnBeforeLotNoAssistEdit(var TrackingSpecification: Record "Tracking Specification"; xTrackingSpecification: Record "Tracking Specification"; CurrentSignFactor: Integer; var IsHandled: Boolean; var MaxQuantity: Decimal; UndefinedQtyArray: array[3] of Decimal; ForBinCode: Code[20]; Inbound: Boolean; CurrentRunMode: Enum "Item Tracking Run Mode"; ItemTrackingDataCollection: Codeunit "Item Tracking Data Collection"; CurrentSourceType: Integer; SourceQuantityArray: array[5] of Decimal; InsertIsBlocked: Boolean)
    begin
    end;

Call change:

    IsHandled := false;
-   OnBeforeLotNoAssistEdit(Rec, xRec, CurrentSignFactor, MaxQuantity, UndefinedQtyArray, IsHandled);
+   OnBeforeLotNoAssistEdit(Rec, xRec, CurrentSignFactor, IsHandled, MaxQuantity, UndefinedQtyArray, ForBinCode, Inbound, CurrentRunMode, ItemTrackingDataCollection, CurrentSourceType, SourceQuantityArray, InsertIsBlocked);
    if IsHandled then
      exit;

2. Change OnBeforeClosePage

    [IntegrationEvent(false, false)]
-   local procedure OnBeforeClosePage(var TrackingSpecification: Record "Tracking Specification"; var SkipWriteToDatabase: Boolean; CurrentRunMode: Enum "Item Tracking Run Mode"; CurrentSourceType: Integer)
+   local procedure OnBeforeClosePage(var TrackingSpecification: Record "Tracking Specification"; var SkipWriteToDatabase: Boolean; CurrentRunMode: Enum "Item Tracking Run Mode"; CurrentSourceType: Integer; var SourceTrackingSpecification: Record "Tracking Specification"; var SourceQuantityArray: array[5] of Decimal; var TotalTrackingSpecification: Record "Tracking Specification")
    begin
    end;

Call change:

    trigger OnClosePage()
    var
        SkipWriteToDatabase: Boolean;
    begin
        SkipWriteToDatabase := false;
-       OnBeforeClosePage(Rec, SkipWriteToDatabase, CurrentRunMode, CurrentSourceType);
+       OnBeforeClosePage(Rec, SkipWriteToDatabase, CurrentRunMode, CurrentSourceType, SourceTrackingSpecification, SourceQuantityArray, TotalTrackingSpecification);
        if UpdateUndefinedQty() and not SkipWriteToDatabase then
            WriteToDatabase();

3. Make procedure protected CheckItemTrackingLine

-   local procedure CheckItemTrackingLine(TrackingLine: Record "Tracking Specification")
+   protected procedure CheckItemTrackingLine(TrackingLine: Record "Tracking Specification")

4. Change OnBeforeRegisterChange

    [IntegrationEvent(false, false)]
-   local procedure OnBeforeRegisterChange(var OldTrackingSpecification: Record "Tracking Specification"; var NewTrackingSpecification: Record "Tracking Specification"; CurrentSignFactor: Integer; FormRunMode: Option ,Reclass,"Combined Ship/Rcpt","Drop Shipment",Transfer; var IsHandled: Boolean; CurrentPageIsOpen: Boolean)
+   local procedure OnBeforeRegisterChange(var OldTrackingSpecification: Record "Tracking Specification"; var NewTrackingSpecification: Record "Tracking Specification"; CurrentSignFactor: Integer; FormRunMode: Option ,Reclass,"Combined Ship/Rcpt","Drop Shipment",Transfer; var IsHandled: Boolean; CurrentPageIsOpen: Boolean; ChangeType: Option Insert,Modify,FullDelete,PartDelete,ModifyAll; ModifySharedFields: Boolean; var ResultOK: Boolean)
    begin
    end;

Call:

    procedure RegisterChange(var OldTrackingSpecification: Record "Tracking Specification"; var NewTrackingSpecification: Record "Tracking Specification"; ChangeType: Option Insert,Modify,FullDelete,PartDelete,ModifyAll; ModifySharedFields: Boolean) OK: Boolean
    var
        ReservEntry1: Record "Reservation Entry";
        ReservEntry2: Record "Reservation Entry";
        SavedOldTrackingSpecification: Record "Tracking Specification";
        CreateReservEntry: Codeunit "Create Reserv. Entry";
        ReservationMgt: Codeunit "Reservation Management";
        QtyToAdd: Decimal;
        IdenticalArray: array[2] of Boolean;
        IsHandled: Boolean;
    begin
        IsHandled := false;
-       OnBeforeRegisterChange(OldTrackingSpecification, NewTrackingSpecification, CurrentSignFactor, CurrentRunMode.AsInteger(), IsHandled, CurrentPageIsOpen);
+       OnBeforeRegisterChange(OldTrackingSpecification, NewTrackingSpecification, CurrentSignFactor, CurrentRunMode.AsInteger(), IsHandled, CurrentPageIsOpen, ChangeType, ModifySharedFields, OK);
        if IsHandled then
-           exit;
+           exit(OK);

5. New event publisher OnRegisterChangeOnBeforeClearExpirationDate

    [IntegrationEvent(false, false)]
    local procedure OnRegisterChangeOnBeforeClearExpirationDate(var OldTrackingSpecification: Record "Tracking Specification"; var NewTrackingSpecification: Record "Tracking Specification"; CurrentSignFactor: Integer; CurrentRunMode: Enum "Item Tracking Run Mode"; var IsHandled: Boolean)
    begin
    end;

Call from method RegisterChange:

    procedure RegisterChange(var OldTrackingSpecification: Record "Tracking Specification"; var NewTrackingSpecification: Record "Tracking Specification"; ChangeType: Option Insert,Modify,FullDelete,PartDelete,ModifyAll; ModifySharedFields: Boolean) OK: Boolean
    var
        ReservEntry1: Record "Reservation Entry";
        ReservEntry2: Record "Reservation Entry";
        SavedOldTrackingSpecification: Record "Tracking Specification";
        CreateReservEntry: Codeunit "Create Reserv. Entry";
        ReservationMgt: Codeunit "Reservation Management";
        QtyToAdd: Decimal;
        IdenticalArray: array[2] of Boolean;
        IsHandled: Boolean;
    begin
        IsHandled := false;
        OnBeforeRegisterChange(OldTrackingSpecification, NewTrackingSpecification, CurrentSignFactor, CurrentRunMode.AsInteger(), IsHandled, CurrentPageIsOpen, ChangeType, ModifySharedFields, OK);
        if IsHandled then
            exit(OK);

        OK := false;

+       IsHandled := false;
+       OnRegisterChangeOnBeforeClearExpirationDate(OldTrackingSpecification, NewTrackingSpecification, CurrentSignFactor, CurrentRunMode, IsHandled);
+       if not IsHandled then
            if ((CurrentSignFactor * NewTrackingSpecification."Qty. to Handle") < 0) and
               (CurrentRunMode <> CurrentRunMode::"Drop Shipment")
            then begin
                NewTrackingSpecification."Expiration Date" := 0D;
                OldTrackingSpecification."Expiration Date" := 0D;
            end;
tomasevics commented 1 year ago

For third request, please create Request for external.

JesperSchulz commented 1 year ago

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.

Build ID: 10998.