Skip to content

Commit

Permalink
No. Series: Ability to extend filters on finding No. Series Lines whe…
Browse files Browse the repository at this point in the history
…n getting new numbers (#2361)

#### Summary
Add Event for No. Series

#### Work Item(s) 
Fixes #1362










Fixes
[AB#558102](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/558102)
  • Loading branch information
PeterDurrer authored and JesperSchulz committed Nov 28, 2024
1 parent e2f9789 commit 53a383c
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 6 deletions.
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 %1 was altered by an event subscriber. This is a programming error. Please contact your partner to resolve the issue.\Original %1: %2\Modified Filter: %3', Comment = '%1=NoSeriesLine.FieldCaption("Series Code") %2=Original filter Value of NoSeriesLine."Series Code" %3=New filter Value of NoSeriesLine."Series Code"';

procedure SetImplementation(var NoSeries: Record "No. Series"; Implementation: Enum "No. Series Implementation")
var
Expand Down Expand Up @@ -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;

procedure SetNoSeriesLineFilters(var NoSeriesLine: Record "No. Series Line"; NoSeriesCode: Code[20]; StartingDate: Date)
var
NoSeriesLine2: Record "No. Series Line";
NoSeries: Codeunit "No. Series";
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
Error(CodeFieldChangedErr, NoSeriesLine2.FieldCaption("Series Code"), NoSeriesCode, NoSeriesLine2.GetFilter("Series Code"));

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,14 @@ 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 on the No. Series Line record. These filters are used when searching the No. Series.
/// </summary>
/// <remarks>Changing the filter on the "Series Code" field is not allowed and will result in an error.</remarks>
/// <param name="NoSeriesLine">The No. Series Line to set filters on.</param>
[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

0 comments on commit 53a383c

Please sign in to comment.