Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

No. Series: Ability to extend filters on finding No. Series Lines when getting new numbers #2361

Merged
merged 12 commits into from
Nov 26, 2024
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ codeunit 305 "No. Series - Setup Impl."
NumberFormatErr: Label 'The number format in %1 must be the same as the number format in %2.', Comment = '%1=No. Series Code,%2=No. Series Code';
UnIncrementableStringErr: Label 'The value in the %1 field must have a number so that we can assign the next number in the series.', Comment = '%1 = New Field Name';
NumberLengthErr: Label 'The number %1 cannot be extended to more than 20 characters.', Comment = '%1=No.';
CodeFieldChangedErr: Label 'The filter on Series Code was altered by an event subscriber. This is a programming error. Please contact your partner to resolve the issue.\Original Series Code: %1\Modified Filter: %2';
PeterDurrer marked this conversation as resolved.
Show resolved Hide resolved

procedure SetImplementation(var NoSeries: Record "No. Series"; Implementation: Enum "No. Series Implementation")
var
Expand Down Expand Up @@ -88,7 +89,7 @@ codeunit 305 "No. Series - Setup Impl."
NoSeries.MarkedOnly(true);
end;

local procedure SetNoSeriesCurrentLineFilters(var NoSeriesRec: Record "No. Series"; var NoSeriesLine: Record "No. Series Line"; ResetForDrillDown: Boolean)
procedure SetNoSeriesCurrentLineFilters(var NoSeriesRec: Record "No. Series"; var NoSeriesLine: Record "No. Series Line"; ResetForDrillDown: Boolean)
grobyns marked this conversation as resolved.
Show resolved Hide resolved
PeterDurrer marked this conversation as resolved.
Show resolved Hide resolved
var
NoSeries: Codeunit "No. Series";
#if not CLEAN24
Expand All @@ -98,9 +99,7 @@ codeunit 305 "No. Series - Setup Impl."
#endif
begin
NoSeriesLine.Reset();
NoSeriesLine.SetCurrentKey("Series Code", "Starting Date");
NoSeriesLine.SetRange("Series Code", NoSeriesRec.Code);
NoSeriesLine.SetRange("Starting Date", 0D, WorkDate());
SetNoSeriesLineFilters(NoSeriesLine, NoSeriesRec.Code, WorkDate());
#if not CLEAN24
#pragma warning disable AL0432
NoSeriesManagement.RaiseObsoleteOnNoSeriesLineFilterOnBeforeFindLast(NoSeriesLine);
Expand Down Expand Up @@ -137,6 +136,22 @@ codeunit 305 "No. Series - Setup Impl."
exit(NoSeriesSingle.MayProduceGaps());
end;

internal procedure SetNoSeriesLineFilters(var NoSeriesLine: Record "No. Series Line"; NoSeriesCode: Code[20]; StartingDate: Date)
PeterDurrer marked this conversation as resolved.
Show resolved Hide resolved
var
NoSeries: Codeunit "No. Series";
NoSeriesLine2: Record "No. Series Line";
PeterDurrer marked this conversation as resolved.
Show resolved Hide resolved
begin
NoSeriesLine2.SetCurrentKey("Series Code", "Starting Date");
NoSeriesLine2.SetRange("Starting Date", 0D, StartingDate);
NoSeriesLine2.SetRange("Series Code", NoSeriesCode);
NoSeries.OnSetNoSeriesLineFilters(NoSeriesLine2);
If NoSeriesLine2.GetFilter("Series Code") <> NoSeriesCode then
PeterDurrer marked this conversation as resolved.
Show resolved Hide resolved
Error(CodeFieldChangedErr, NoSeriesCode, NoSeriesLine2.GetFilter("Series Code")); // Extensions should never change the code field range, this is a bug that developers should know immediately.
PeterDurrer marked this conversation as resolved.
Show resolved Hide resolved

NoSeriesLine.SetCurrentKey("Series Code", "Starting Date");
NoSeriesLine.CopyFilters(NoSeriesLine2);
end;

procedure CalculateOpen(NoSeriesLine: Record "No. Series Line"): Boolean
var
NoSeries: Codeunit "No. Series";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -362,4 +362,13 @@ codeunit 310 "No. Series"
internal procedure OnAfterSetNoSeriesCurrentLineFilters(NoSeries: Record "No. Series"; var NoSeriesLine: Record "No. Series Line"; IsDrillDown: Boolean);
begin
end;

/// <summary>
/// Use this event to set additional filters set on the No. Series Line record. These filters are used when searching the No. Series.
PeterDurrer marked this conversation as resolved.
Show resolved Hide resolved
/// </summary>
/// <param name="NoSeriesLine">The No. Series Line to set filters on.</param>
PeterDurrer marked this conversation as resolved.
Show resolved Hide resolved
[IntegrationEvent(false, false)]
internal procedure OnSetNoSeriesLineFilters(var NoSeriesLine: Record "No. Series Line");
begin
end;
}
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,7 @@ codeunit 304 "No. Series - Impl."
NoSeriesRec: Record "No. Series";
NoSeriesLine2: Record "No. Series Line";
NoSeries: Codeunit "No. Series";
NoSeriesSetupImpl: Codeunit "No. Series - Setup Impl.";
NoSeriesErrorsImpl: Codeunit "No. Series - Errors Impl.";
#if not CLEAN24
#pragma warning disable AL0432
Expand All @@ -174,9 +175,7 @@ codeunit 304 "No. Series - Impl."

// Find the No. Series Line closest to the usage date
NoSeriesLine2.Reset();
NoSeriesLine2.SetCurrentKey("Series Code", "Starting Date");
NoSeriesLine2.SetRange("Series Code", NoSeriesCode);
NoSeriesLine2.SetRange("Starting Date", 0D, UsageDate);
NoSeriesSetupImpl.SetNoSeriesLineFilters(NoSeriesLine2, NoSeriesCode, UsageDate);
#if not CLEAN24
#pragma warning disable AL0432
NoSeriesManagement.RaiseObsoleteOnNoSeriesLineFilterOnBeforeFindLast(NoSeriesLine2);
Expand Down
Loading