From 20a244fcf89a77b03ebda124be6892240c772b3d Mon Sep 17 00:00:00 2001 From: tomasevicstefan Date: Mon, 22 Dec 2025 13:10:02 +0100 Subject: [PATCH 1/9] Refactor item filter handling to use Blob storage and improve related procedures --- .../QltyJobQueueManagement.Codeunit.al | 2 +- .../QltyInspecGenRuleMgmt.Codeunit.al | 4 +- .../QltyInspectionGenRule.Table.al | 53 ++++++++++++++++--- .../QltyInspectionGenRules.Page.al | 14 ++++- .../Document/QltyInspectionCreate.Codeunit.al | 10 ++-- .../QltyProdGenRuleWizard.Page.al | 15 +++--- .../Receiving/QltyRecGenRuleWizard.Page.al | 15 +++--- .../Warehouse/QltyWhseGenRuleWizard.Page.al | 15 +++--- .../src/QltyTestsGenerationRule.Codeunit.al | 2 +- .../test/src/QltyTestsMoreTests.Codeunit.al | 2 +- .../QltyInspectionUtility.Codeunit.al | 2 +- 11 files changed, 87 insertions(+), 47 deletions(-) diff --git a/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/JobQueue/QltyJobQueueManagement.Codeunit.al b/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/JobQueue/QltyJobQueueManagement.Codeunit.al index a1efe05bf7..8b84a3252b 100644 --- a/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/JobQueue/QltyJobQueueManagement.Codeunit.al +++ b/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/JobQueue/QltyJobQueueManagement.Codeunit.al @@ -263,7 +263,7 @@ codeunit 20455 "Qlty. Job Queue Management" /// The inspection generation rule to validate for scheduling procedure CheckIfGenerationRuleCanBeScheduled(var ThisQltyInspectionGenRule: Record "Qlty. Inspection Gen. Rule") begin - if (ThisQltyInspectionGenRule."Condition Filter" = '') and (ThisQltyInspectionGenRule."Item Filter" = '') and (ThisQltyInspectionGenRule."Item Attribute Filter" = '') then + if (ThisQltyInspectionGenRule."Condition Filter" = '') and (not ThisQltyInspectionGenRule.HasItemFilter()) and (ThisQltyInspectionGenRule."Item Attribute Filter" = '') then Error(FilterMandatoryErr, ThisQltyInspectionGenRule."Schedule Group"); end; diff --git a/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/QltyInspecGenRuleMgmt.Codeunit.al b/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/QltyInspecGenRuleMgmt.Codeunit.al index 634798ed01..85a7443301 100644 --- a/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/QltyInspecGenRuleMgmt.Codeunit.al +++ b/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/QltyInspecGenRuleMgmt.Codeunit.al @@ -211,12 +211,12 @@ codeunit 20405 "Qlty. Inspec. Gen. Rule Mgmt." TemporaryInspectionMatchRecordRef.Reset(); TemporaryInspectionMatchRecordRef.SetView(QltyInspectionGenRule."Condition Filter"); if TemporaryInspectionMatchRecordRef.FindFirst() then - if (QltyInspectionGenRule."Item Filter" <> '') and (OptionalItem."No." <> '') then begin + if QltyInspectionGenRule.HasItemFilter() and (OptionalItem."No." <> '') then begin Clear(SearchItem); SearchItem := OptionalItem; SearchItem.SetRecFilter(); SearchItem.FilterGroup(20); - SearchItem.SetView(QltyInspectionGenRule."Item Filter"); + SearchItem.SetView(QltyInspectionGenRule.GetItemFilter()); if SearchItem.Count() > 0 then if DoesMatchItemAttributeFiltersOrNoFilter(QltyInspectionGenRule, OptionalItem) then begin TempQltyInspectionGenRule := QltyInspectionGenRule; diff --git a/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/QltyInspectionGenRule.Table.al b/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/QltyInspectionGenRule.Table.al index 0fdf415c62..0a02f8bb35 100644 --- a/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/QltyInspectionGenRule.Table.al +++ b/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/QltyInspectionGenRule.Table.al @@ -141,10 +141,9 @@ table 20404 "Qlty. Inspection Gen. Rule" FieldClass = FlowFilter; Caption = 'Table ID Filter'; } - field(19; "Item Filter"; Text[400]) + field(19; "Item Filter"; Blob) { Caption = 'Item Filter'; - ToolTip = 'Specifies the item specific criteria for defining when to use this template. '; } field(20; "Item Attribute Filter"; Text[400]) { @@ -364,6 +363,47 @@ table 20404 "Qlty. Inspection Gen. Rule" end; end; + /// + /// Gets the item filter from the Blob field. + /// + /// The item filter text + procedure GetItemFilter(): Text + var + TypeHelper: Codeunit "Type Helper"; + InStream: InStream; + begin + Rec.CalcFields("Item Filter"); + if not Rec."Item Filter".HasValue() then + exit(''); + Rec."Item Filter".CreateInStream(InStream, TextEncoding::UTF8); + exit(TypeHelper.ReadAsTextWithSeparator(InStream, TypeHelper.LFSeparator())); + end; + + /// + /// Sets the item filter to the Blob field. + /// + /// The item filter text to set + procedure SetItemFilter(NewItemFilter: Text) + var + OutStream: OutStream; + begin + Clear(Rec."Item Filter"); + if NewItemFilter = '' then + exit; + Rec."Item Filter".CreateOutStream(OutStream, TextEncoding::UTF8); + OutStream.WriteText(NewItemFilter); + end; + + /// + /// Checks if the Item Filter has a value. + /// + /// True if the Item Filter has a value + procedure HasItemFilter(): Boolean + begin + Rec.CalcFields("Item Filter"); + exit(Rec."Item Filter".HasValue()); + end; + /// /// Provides the ability to assist edit an item filter. /// @@ -373,13 +413,10 @@ table 20404 "Qlty. Inspection Gen. Rule" QltyFilterHelpers: Codeunit "Qlty. Filter Helpers"; Value: Text; begin - Value := Rec."Item Filter"; + Value := Rec.GetItemFilter(); if QltyFilterHelpers.BuildFilter(Database::Item, true, Value) then begin - if (Value <> Rec."Item Filter") and (Value <> '') then begin - Rec."Item Filter" := CopyStr(Value, 1, MaxStrLen(Rec."Item Filter")); - if StrLen(Value) > MaxStrLen(Rec."Item Filter") then - Error(FilterLengthErr, MaxStrLen(Rec."Item Filter")); - end; + if (Value <> Rec.GetItemFilter()) and (Value <> '') then + Rec.SetItemFilter(Value); Result := true; end; end; diff --git a/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/QltyInspectionGenRules.Page.al b/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/QltyInspectionGenRules.Page.al index 33916d3f71..bdc88cbd7f 100644 --- a/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/QltyInspectionGenRules.Page.al +++ b/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/QltyInspectionGenRules.Page.al @@ -87,11 +87,21 @@ page 20405 "Qlty. Inspection Gen. Rules" CurrPage.Update(true); end; } - field("Item Filter"; Rec."Item Filter") + field("Item Filter"; ItemFilterText) { + Caption = 'Item Filter'; + ToolTip = 'Specifies the item specific criteria for defining when to use this template.'; + + trigger OnValidate() + begin + Rec.SetItemFilter(ItemFilterText); + Rec.Modify(); + end; + trigger OnAssistEdit() begin Rec.AssistEditConditionItemFilter(); + ItemFilterText := Rec.GetItemFilter(); end; } field("Item Attribute Filter"; Rec."Item Attribute Filter") @@ -378,6 +388,7 @@ page 20405 "Qlty. Inspection Gen. Rules" WhseReceiveStyle: Text; WhseMovementStyle: Text; TransferStyle: Text; + ItemFilterText: Text; RowStyle: Option None,Standard,StandardAccent,Strong,StrongAccent,Attention,AttentionAccent,Favorable,Unfavorable,Ambiguous,Subordinate; GenerationRulesCaptionLbl: Label 'Quality Inspection Generation Rules'; GenerationRulesCaptionForTemplateLbl: Label 'Quality Inspection Generation Rules for %1', Comment = '%1=the template'; @@ -428,6 +439,7 @@ page 20405 "Qlty. Inspection Gen. Rules" trigger OnAfterGetRecord() begin + ItemFilterText := Rec.GetItemFilter(); UpdateControls(); end; diff --git a/src/Apps/W1/Quality Management/app/src/Document/QltyInspectionCreate.Codeunit.al b/src/Apps/W1/Quality Management/app/src/Document/QltyInspectionCreate.Codeunit.al index 76f2f474e5..6097afad74 100644 --- a/src/Apps/W1/Quality Management/app/src/Document/QltyInspectionCreate.Codeunit.al +++ b/src/Apps/W1/Quality Management/app/src/Document/QltyInspectionCreate.Codeunit.al @@ -305,8 +305,8 @@ codeunit 20404 "Qlty. Inspection - Create" if Handled then exit(QltyInspectionCreateStatus::"Unable to Create"); - if TempFiltersQltyInspectionGenRule."Item Filter" <> '' then - RelatedItem.SetView(TempFiltersQltyInspectionGenRule."Item Filter"); + if TempFiltersQltyInspectionGenRule.HasItemFilter() then + RelatedItem.SetView(TempFiltersQltyInspectionGenRule.GetItemFilter()); QltyTraversal.FindRelatedItem(RelatedItem, TargetRecordRef, OptionalRec2Variant, OptionalRec3Variant, OptionalRec4Variant); @@ -943,9 +943,9 @@ codeunit 20404 "Qlty. Inspection - Create" Clear(VariantEmptyOrTrackingSpecification); RelatedReservFilterReservationEntry.SetRange("Entry No.", -1); - if TempFiltersQltyInspectionGenRule."Item Filter" <> '' then begin + if TempFiltersQltyInspectionGenRule.HasItemFilter() then begin Item.FilterGroup(20); - Item.SetView(TempFiltersQltyInspectionGenRule."Item Filter"); + Item.SetView(TempFiltersQltyInspectionGenRule.GetItemFilter()); Item.FilterGroup(0); end; @@ -1000,7 +1000,7 @@ codeunit 20404 "Qlty. Inspection - Create" end; until RelatedReservFilterReservationEntry.Next() = 0; end else begin - if TempFiltersQltyInspectionGenRule."Item Filter" <> '' then begin + if TempFiltersQltyInspectionGenRule.HasItemFilter() then begin Clear(Item); if QltyTraversal.FindRelatedItem(Item, ParentRecordRef, TempSelfRecordRef, VariantEmptyOrTrackingSpecification, Dummy4Variant) then exit; diff --git a/src/Apps/W1/Quality Management/app/src/Integration/Manufacturing/QltyProdGenRuleWizard.Page.al b/src/Apps/W1/Quality Management/app/src/Integration/Manufacturing/QltyProdGenRuleWizard.Page.al index 804f6f3308..167186d200 100644 --- a/src/Apps/W1/Quality Management/app/src/Integration/Manufacturing/QltyProdGenRuleWizard.Page.al +++ b/src/Apps/W1/Quality Management/app/src/Integration/Manufacturing/QltyProdGenRuleWizard.Page.al @@ -738,9 +738,9 @@ page 20462 "Qlty. Prod. Gen. Rule Wizard" local procedure AssistEditFullItemFilter() begin - TempQltyInspectionGenRule."Item Filter" := ItemRuleFilter; + TempQltyInspectionGenRule.SetItemFilter(ItemRuleFilter); if TempQltyInspectionGenRule.AssistEditConditionItemFilter() then begin - ItemRuleFilter := TempQltyInspectionGenRule."Item Filter"; + ItemRuleFilter := TempQltyInspectionGenRule.GetItemFilter(); TempItem.SetView(ItemRuleFilter); UpdateTableVariablesFromRecordFilters(); @@ -814,13 +814,12 @@ page 20462 "Qlty. Prod. Gen. Rule Wizard" QltyManagementSetup."Assembly Trigger" := QltyAssemblyTrigger; end; if QltyManagementSetup.Modify(false) then; - QltyInspectionGenRule."Item Filter" := ItemRuleFilter; + QltyInspectionGenRule.SetItemFilter(ItemRuleFilter); QltyInspectionGenRule.Modify(); ExistingQltyInspectionGenRule.SetRange("Template Code", QltyInspectionGenRule."Template Code"); ExistingQltyInspectionGenRule.SetRange("Source Table No.", QltyInspectionGenRule."Source Table No."); ExistingQltyInspectionGenRule.SetRange("Condition Filter", QltyInspectionGenRule."Condition Filter"); - ExistingQltyInspectionGenRule.SetRange("Item Filter", QltyInspectionGenRule."Item Filter"); if ExistingQltyInspectionGenRule.Count() > 1 then if not Confirm(RuleAlreadyThereQst) then Error(''); @@ -853,7 +852,8 @@ page 20462 "Qlty. Prod. Gen. Rule Wizard" IsProductionOrder := false; end; - TempItem.SetView(TempQltyInspectionGenRule."Item Filter"); + if TempQltyInspectionGenRule.HasItemFilter() then + TempItem.SetView(TempQltyInspectionGenRule.GetItemFilter()); UpdateTableVariablesFromRecordFilters(); TemplateCode := QltyInspectionGenRule.GetTemplateCodeFromRecordOrFilter(false); @@ -885,7 +885,7 @@ page 20462 "Qlty. Prod. Gen. Rule Wizard" TempItem.SetFilter("Item Category Code", CategoryCodeFilter); TempItem.SetFilter("Inventory Posting Group", InventoryPostingGroupCode); - ItemRuleFilter := CopyStr(QltyFilterHelpers.CleanUpWhereClause400(TempItem.GetView(true)), 1, MaxStrLen(TempQltyInspectionGenRule."Item Filter")); + ItemRuleFilter := QltyFilterHelpers.CleanUpWhereClause400(TempItem.GetView(true)); CleanUpWhereClause(); if StrLen(QltyFilterHelpers.CleanUpWhereClause400(TempProdOrderRoutingLine.GetView(true))) > MaxStrLen(TempQltyInspectionGenRule."Condition Filter") then @@ -893,9 +893,6 @@ page 20462 "Qlty. Prod. Gen. Rule Wizard" if StrLen(QltyFilterHelpers.CleanUpWhereClause400(TempPostedAssemblyHeader.GetView(true))) > MaxStrLen(TempQltyInspectionGenRule."Condition Filter") then Error(FilterLengthErr, MaxStrLen(TempQltyInspectionGenRule."Condition Filter")); - - if StrLen(QltyFilterHelpers.CleanUpWhereClause400(TempItem.GetView(true))) > MaxStrLen(TempQltyInspectionGenRule."Item Filter") then - Error(FilterLengthErr, MaxStrLen(TempQltyInspectionGenRule."Item Filter")); end; local procedure UpdateTableVariablesFromRecordFilters() diff --git a/src/Apps/W1/Quality Management/app/src/Integration/Receiving/QltyRecGenRuleWizard.Page.al b/src/Apps/W1/Quality Management/app/src/Integration/Receiving/QltyRecGenRuleWizard.Page.al index 1b969b49ce..b81ab1ad3b 100644 --- a/src/Apps/W1/Quality Management/app/src/Integration/Receiving/QltyRecGenRuleWizard.Page.al +++ b/src/Apps/W1/Quality Management/app/src/Integration/Receiving/QltyRecGenRuleWizard.Page.al @@ -830,9 +830,9 @@ page 20461 "Qlty. Rec. Gen. Rule Wizard" local procedure AssistEditFullItemFilter() begin - TempQltyInspectionGenRule."Item Filter" := ItemRule; + TempQltyInspectionGenRule.SetItemFilter(ItemRule); if TempQltyInspectionGenRule.AssistEditConditionItemFilter() then begin - ItemRule := TempQltyInspectionGenRule."Item Filter"; + ItemRule := TempQltyInspectionGenRule.GetItemFilter(); TempItem.SetView(ItemRule); UpdateTableVariablesFromRecordFilters(); @@ -925,13 +925,12 @@ page 20461 "Qlty. Rec. Gen. Rule Wizard" end; if QltyManagementSetup.Modify(false) then; - QltyInspectionGenRule."Item Filter" := ItemRule; + QltyInspectionGenRule.SetItemFilter(ItemRule); QltyInspectionGenRule.Modify(); ExistingQltyInspectionGenRule.SetRange("Template Code", QltyInspectionGenRule."Template Code"); ExistingQltyInspectionGenRule.SetRange("Source Table No.", QltyInspectionGenRule."Source Table No."); ExistingQltyInspectionGenRule.SetRange("Condition Filter", QltyInspectionGenRule."Condition Filter"); - ExistingQltyInspectionGenRule.SetRange("Item Filter", QltyInspectionGenRule."Item Filter"); if ExistingQltyInspectionGenRule.Count() > 1 then if not Confirm(AlreadyThereQst) then Error(''); @@ -980,7 +979,8 @@ page 20461 "Qlty. Rec. Gen. Rule Wizard" IsReturnReceipt := false; IsTransferLine := false; end; - TempItem.SetView(TempQltyInspectionGenRule."Item Filter"); + if TempQltyInspectionGenRule.HasItemFilter() then + TempItem.SetView(TempQltyInspectionGenRule.GetItemFilter()); UpdateTableVariablesFromRecordFilters(); TemplateCode := QltyInspectionGenRule.GetTemplateCodeFromRecordOrFilter(false); @@ -1024,7 +1024,7 @@ page 20461 "Qlty. Rec. Gen. Rule Wizard" TempItem.SetFilter("Item Category Code", CategoryCodeFilter); TempItem.SetFilter("Inventory Posting Group", InventoryPostingGroupCode); - ItemRule := CopyStr(QltyFilterHelpers.CleanUpWhereClause400(TempItem.GetView(true)), 1, MaxStrLen(TempQltyInspectionGenRule."Item Filter")); + ItemRule := QltyFilterHelpers.CleanUpWhereClause400(TempItem.GetView(true)); CleanUpWhereClause(); @@ -1036,9 +1036,6 @@ page 20461 "Qlty. Rec. Gen. Rule Wizard" if StrLen(QltyFilterHelpers.CleanUpWhereClause400(TempWarehouseJournalLine.GetView(true))) > MaxStrLen(TempQltyInspectionGenRule."Condition Filter") then Error(FilterLengthErr, MaxStrLen(TempQltyInspectionGenRule."Condition Filter")); - - if StrLen(QltyFilterHelpers.CleanUpWhereClause400(TempItem.GetView(true))) > MaxStrLen(TempQltyInspectionGenRule."Item Filter") then - Error(FilterLengthErr, MaxStrLen(TempQltyInspectionGenRule."Item Filter")); end; local procedure UpdateTableVariablesFromRecordFilters() diff --git a/src/Apps/W1/Quality Management/app/src/Integration/Warehouse/QltyWhseGenRuleWizard.Page.al b/src/Apps/W1/Quality Management/app/src/Integration/Warehouse/QltyWhseGenRuleWizard.Page.al index e7097b8a2d..e006597534 100644 --- a/src/Apps/W1/Quality Management/app/src/Integration/Warehouse/QltyWhseGenRuleWizard.Page.al +++ b/src/Apps/W1/Quality Management/app/src/Integration/Warehouse/QltyWhseGenRuleWizard.Page.al @@ -593,9 +593,9 @@ page 20460 "Qlty. Whse. Gen. Rule Wizard" local procedure AssistEditFullItemFilter() begin - TempQltyInspectionGenRule."Item Filter" := ItemRule; + TempQltyInspectionGenRule.SetItemFilter(ItemRule); if TempQltyInspectionGenRule.AssistEditConditionItemFilter() then begin - ItemRule := TempQltyInspectionGenRule."Item Filter"; + ItemRule := TempQltyInspectionGenRule.GetItemFilter(); TempItem.SetView(ItemRule); UpdateTableVariablesFromRecordFilters(); @@ -622,15 +622,12 @@ page 20460 "Qlty. Whse. Gen. Rule Wizard" TempItem.SetFilter("Item Category Code", CategoryCodeFilter); TempItem.SetFilter("Inventory Posting Group", InventoryPostingGroupCode); TempItem.SetFilter("Vendor No.", VendorNoFilter); - ItemRule := CopyStr(QltyFilterHelpers.CleanUpWhereClause400(TempItem.GetView(true)), 1, MaxStrLen(TempQltyInspectionGenRule."Item Filter")); + ItemRule := QltyFilterHelpers.CleanUpWhereClause400(TempItem.GetView(true)); CleanUpWhereClause(); if StrLen(QltyFilterHelpers.CleanUpWhereClause400(TempWarehouseJournalLine.GetView(true))) > MaxStrLen(TempQltyInspectionGenRule."Condition Filter") then Error(FilterLengthErr, MaxStrLen(TempQltyInspectionGenRule."Condition Filter")); - - if StrLen(QltyFilterHelpers.CleanUpWhereClause400(TempItem.GetView(true))) > MaxStrLen(TempQltyInspectionGenRule."Item Filter") then - Error(FilterLengthErr, MaxStrLen(TempQltyInspectionGenRule."Item Filter")); end; local procedure CleanUpWhereClause() @@ -667,7 +664,7 @@ page 20460 "Qlty. Whse. Gen. Rule Wizard" QltyInspectionGenRule.Intent := QltyInspectionGenRule.Intent::"Warehouse Movement"; QltyInspectionGenRule.Validate("Template Code", TemplateCode); QltyInspectionGenRule."Condition Filter" := WhseRule; - QltyInspectionGenRule."Item Filter" := ItemRule; + QltyInspectionGenRule.SetItemFilter(ItemRule); QltyInspectionGenRule.SetIntentAndDefaultTriggerValuesFromSetup(); QltyInspectionGenRule."Warehouse Movement Trigger" := QltyWarehouseTrigger; QltyInspectionGenRule.Modify(); @@ -678,7 +675,6 @@ page 20460 "Qlty. Whse. Gen. Rule Wizard" ExistingQltyInspectionGenRule.SetRange("Template Code", QltyInspectionGenRule."Template Code"); ExistingQltyInspectionGenRule.SetRange("Source Table No.", QltyInspectionGenRule."Source Table No."); ExistingQltyInspectionGenRule.SetRange("Condition Filter", QltyInspectionGenRule."Condition Filter"); - ExistingQltyInspectionGenRule.SetRange("Item Filter", QltyInspectionGenRule."Item Filter"); if ExistingQltyInspectionGenRule.Count() > 1 then if not Confirm(AlreadyThereQst) then Error(''); @@ -699,7 +695,8 @@ page 20460 "Qlty. Whse. Gen. Rule Wizard" Clear(TempWarehouseJournalLine); Clear(TempItem); TempWarehouseJournalLine.SetView(TempQltyInspectionGenRule."Condition Filter"); - TempItem.SetView(TempQltyInspectionGenRule."Item Filter"); + if TempQltyInspectionGenRule.HasItemFilter() then + TempItem.SetView(TempQltyInspectionGenRule.GetItemFilter()); UpdateTableVariablesFromRecordFilters(); TemplateCode := QltyInspectionGenRule.GetTemplateCodeFromRecordOrFilter(false); diff --git a/src/Apps/W1/Quality Management/test/src/QltyTestsGenerationRule.Codeunit.al b/src/Apps/W1/Quality Management/test/src/QltyTestsGenerationRule.Codeunit.al index 52a3afc301..2553d3c9fb 100644 --- a/src/Apps/W1/Quality Management/test/src/QltyTestsGenerationRule.Codeunit.al +++ b/src/Apps/W1/Quality Management/test/src/QltyTestsGenerationRule.Codeunit.al @@ -238,7 +238,7 @@ codeunit 139955 "Qlty. Tests - Generation Rule" // [GIVEN] The generation rule is updated with an item filter QltyInspectionGenRule.FindFirst(); - QltyInspectionGenRule."Item Filter" := StrSubstNo(ItemFilterTok, Item."No."); + QltyInspectionGenRule.SetItemFilter(StrSubstNo(ItemFilterTok, Item."No.")); QltyInspectionGenRule.Modify(); // [WHEN] A manual rule search is performed for Purchase Line with the item diff --git a/src/Apps/W1/Quality Management/test/src/QltyTestsMoreTests.Codeunit.al b/src/Apps/W1/Quality Management/test/src/QltyTestsMoreTests.Codeunit.al index fa452d0d0a..ea353e83c2 100644 --- a/src/Apps/W1/Quality Management/test/src/QltyTestsMoreTests.Codeunit.al +++ b/src/Apps/W1/Quality Management/test/src/QltyTestsMoreTests.Codeunit.al @@ -1336,7 +1336,7 @@ codeunit 139965 "Qlty. Tests - More Tests" // [THEN] The Item Filter is updated with the item number filter expression QltyInspectionGenRule.Get(QltyInspectionGenRule."Entry No."); - LibraryAssert.AreEqual(StrSubstNo(ConditionFilterItemNoTok, Item."No."), QltyInspectionGenRule."Item Filter", 'Item filter should be set to the item no.'); + LibraryAssert.AreEqual(StrSubstNo(ConditionFilterItemNoTok, Item."No."), QltyInspectionGenRule.GetItemFilter(), 'Item filter should be set to the item no.'); end; [Test] diff --git a/src/Apps/W1/Quality Management/test/src/TestLibraries/QltyInspectionUtility.Codeunit.al b/src/Apps/W1/Quality Management/test/src/TestLibraries/QltyInspectionUtility.Codeunit.al index ee911688e1..733308095a 100644 --- a/src/Apps/W1/Quality Management/test/src/TestLibraries/QltyInspectionUtility.Codeunit.al +++ b/src/Apps/W1/Quality Management/test/src/TestLibraries/QltyInspectionUtility.Codeunit.al @@ -757,7 +757,7 @@ codeunit 139950 "Qlty. Inspection Utility" CreateLotTrackedItem(Item); Item.SetRecFilter(); - CreatedQltyInspectionGenRule."Item Filter" := CopyStr(Item.GetView(), 1, MaxStrLen(CreatedQltyInspectionGenRule."Item Filter")); + CreatedQltyInspectionGenRule.SetItemFilter(Item.GetView()); CreatedQltyInspectionGenRule."Activation Trigger" := CreatedQltyInspectionGenRule."Activation Trigger"::"Manual or Automatic"; CreatedQltyInspectionGenRule."Purchase Trigger" := CreatedQltyInspectionGenRule."Purchase Trigger"::OnPurchaseOrderPostReceive; CreatedQltyInspectionGenRule.Modify(); From 07881a04b74a30ed5c4df0c38e83b58f4d9916a7 Mon Sep 17 00:00:00 2001 From: tomasevicstefan Date: Mon, 22 Dec 2025 13:40:08 +0100 Subject: [PATCH 2/9] Enhance Quality Inspection Generation Rules - Updated "Condition Filter" and "Item Attribute Filter" fields in the "Qlty. Inspection Gen. Rules" page to use dedicated text variables for better clarity and maintainability. - Implemented OnValidate triggers for both filters to ensure proper setting and modification of the record. - Refactored code in various wizards (Prod. Gen. Rule, Rec. Gen. Rule, Whse. Gen. Rule) to utilize new methods for setting and getting condition filters. - Updated tests to reflect changes in the way condition filters are set, ensuring all relevant tests are passing with the new implementation. - Improved overall code readability and maintainability by replacing direct field access with method calls for setting filters. --- .../QltyJobQueueManagement.Codeunit.al | 2 +- .../JobQueue/QltyScheduleInspection.Report.al | 4 +- .../QltyInspecGenRuleMgmt.Codeunit.al | 9 +- .../QltyInspectionGenRule.Table.al | 159 ++++++++++++++---- .../QltyInspectionGenRules.Page.al | 28 ++- .../Document/QltyInspectionCreate.Codeunit.al | 2 +- .../QltyProdGenRuleWizard.Page.al | 29 ++-- .../Receiving/QltyRecGenRuleWizard.Page.al | 54 +++--- .../Warehouse/QltyWhseGenRuleWizard.Page.al | 15 +- .../src/QltyTestsGenerationRule.Codeunit.al | 2 +- .../test/src/QltyTestsMoreTests.Codeunit.al | 12 +- .../test/src/QltyTestsTestTable.Codeunit.al | 40 ++--- 12 files changed, 229 insertions(+), 127 deletions(-) diff --git a/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/JobQueue/QltyJobQueueManagement.Codeunit.al b/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/JobQueue/QltyJobQueueManagement.Codeunit.al index 8b84a3252b..8bd2ce2718 100644 --- a/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/JobQueue/QltyJobQueueManagement.Codeunit.al +++ b/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/JobQueue/QltyJobQueueManagement.Codeunit.al @@ -263,7 +263,7 @@ codeunit 20455 "Qlty. Job Queue Management" /// The inspection generation rule to validate for scheduling procedure CheckIfGenerationRuleCanBeScheduled(var ThisQltyInspectionGenRule: Record "Qlty. Inspection Gen. Rule") begin - if (ThisQltyInspectionGenRule."Condition Filter" = '') and (not ThisQltyInspectionGenRule.HasItemFilter()) and (ThisQltyInspectionGenRule."Item Attribute Filter" = '') then + if (not ThisQltyInspectionGenRule.HasConditionFilter()) and (not ThisQltyInspectionGenRule.HasItemFilter()) and (not ThisQltyInspectionGenRule.HasItemAttributeFilter()) then Error(FilterMandatoryErr, ThisQltyInspectionGenRule."Schedule Group"); end; diff --git a/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/JobQueue/QltyScheduleInspection.Report.al b/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/JobQueue/QltyScheduleInspection.Report.al index d5f2518e3c..a3f7fd971f 100644 --- a/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/JobQueue/QltyScheduleInspection.Report.al +++ b/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/JobQueue/QltyScheduleInspection.Report.al @@ -116,8 +116,8 @@ report 20412 "Qlty. Schedule Inspection" QltyJobQueueManagement.CheckIfGenerationRuleCanBeScheduled(QltyInspectionGenRule); SourceRecordRef.Open(QltyInspectionGenRule."Source Table No."); - if QltyInspectionGenRule."Condition Filter" <> '' then - SourceRecordRef.SetView(QltyInspectionGenRule."Condition Filter"); + if QltyInspectionGenRule.HasConditionFilter() then + SourceRecordRef.SetView(QltyInspectionGenRule.GetConditionFilter()); QltyInspectionGenRule.SetRecFilter(); QltyInspectionGenRule.SetRange("Schedule Group", QltyInspectionGenRule."Schedule Group"); diff --git a/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/QltyInspecGenRuleMgmt.Codeunit.al b/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/QltyInspecGenRuleMgmt.Codeunit.al index 85a7443301..a6778fc4a5 100644 --- a/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/QltyInspecGenRuleMgmt.Codeunit.al +++ b/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/QltyInspecGenRuleMgmt.Codeunit.al @@ -209,7 +209,8 @@ codeunit 20405 "Qlty. Inspec. Gen. Rule Mgmt." TemporaryInspectionMatchRecordRef.Copy(TargetRecordRef); if TemporaryInspectionMatchRecordRef.Insert(false) then; TemporaryInspectionMatchRecordRef.Reset(); - TemporaryInspectionMatchRecordRef.SetView(QltyInspectionGenRule."Condition Filter"); + if QltyInspectionGenRule.HasConditionFilter() then + TemporaryInspectionMatchRecordRef.SetView(QltyInspectionGenRule.GetConditionFilter()); if TemporaryInspectionMatchRecordRef.FindFirst() then if QltyInspectionGenRule.HasItemFilter() and (OptionalItem."No." <> '') then begin Clear(SearchItem); @@ -226,7 +227,7 @@ codeunit 20405 "Qlty. Inspec. Gen. Rule Mgmt." OptionalItem.FilterGroup(0); SearchItem.FilterGroup(0); end else - if (OptionalItem."No." <> '') and (QltyInspectionGenRule."Item Attribute Filter" <> '') then begin + if (OptionalItem."No." <> '') and QltyInspectionGenRule.HasItemAttributeFilter() then begin if DoesMatchItemAttributeFiltersOrNoFilter(QltyInspectionGenRule, OptionalItem) then begin TempQltyInspectionGenRule := QltyInspectionGenRule; Found := TempQltyInspectionGenRule.Insert(); @@ -271,10 +272,10 @@ codeunit 20405 "Qlty. Inspec. Gen. Rule Mgmt." if Item."No." = '' then exit(false); - if QltyInspectionGenRule."Item Attribute Filter" = '' then + if not QltyInspectionGenRule.HasItemAttributeFilter() then exit(true); - QltyFilterHelpers.DeserializeFilterIntoItemAttributesBuffer(QltyInspectionGenRule."Item Attribute Filter", TempFilterItemAttributesBuffer); + QltyFilterHelpers.DeserializeFilterIntoItemAttributesBuffer(QltyInspectionGenRule.GetItemAttributeFilter(), TempFilterItemAttributesBuffer); QltyFilterHelpers.SetItemFilterForItemAttributeFilterSearching(Item."No."); BindSubscription(QltyFilterHelpers); ItemAttributeManagement.FindItemsByAttributes(TempFilterItemAttributesBuffer, TempsItem); diff --git a/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/QltyInspectionGenRule.Table.al b/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/QltyInspectionGenRule.Table.al index 0a02f8bb35..183a1af9a8 100644 --- a/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/QltyInspectionGenRule.Table.al +++ b/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/QltyInspectionGenRule.Table.al @@ -116,11 +116,9 @@ table 20404 "Qlty. Inspection Gen. Rule" SetIntentAndDefaultTriggerValuesFromSetup(); end; } - field(13; "Condition Filter"; Text[400]) + field(13; "Condition Filter"; Blob) { Caption = 'Condition Filter'; - Description = 'Specifies the criteria for defining when to use this template. For example, if you wanted to only use a template for a certain item then you would define that item here.'; - ToolTip = 'Specifies the criteria for defining when to use this template. For example, if you wanted to only use a template for a certain item then you would define that item here.'; } field(14; Description; Text[100]) { @@ -145,10 +143,9 @@ table 20404 "Qlty. Inspection Gen. Rule" { Caption = 'Item Filter'; } - field(20; "Item Attribute Filter"; Text[400]) + field(20; "Item Attribute Filter"; Blob) { Caption = 'Attribute Filter'; - ToolTip = 'Specifies the item attribute specific criteria for defining when to use this template. '; } field(21; "Activation Trigger"; Enum "Qlty. Gen. Rule Act. Trigger") { @@ -287,7 +284,6 @@ table 20404 "Qlty. Inspection Gen. Rule" RuleCurrentlyDisabledLbl: Label 'The generation rule Sort Order %1, Template Code %2 is currently disabled. It will need to have an activation trigger of "Automatic Only" or "Manual or Automatic" before it will be triggered by "%3"', Comment = '%1=generation rule sort order,%2=generation rule template code,%3=auto trigger'; DefaultScheduleGroupLbl: Label 'QM', Locked = true; ChooseTemplateFirstErr: Label 'Please choose the template first.'; - FilterLengthErr: Label 'This filter is too long and must be less than %1 characters.', Comment = '%1=filter string maximum length'; trigger OnInsert() begin @@ -352,13 +348,10 @@ table 20404 "Qlty. Inspection Gen. Rule" QltyFilterHelpers: Codeunit "Qlty. Filter Helpers"; Value: Text; begin - Value := Rec."Condition Filter"; + Value := Rec.GetConditionFilter(); if QltyFilterHelpers.BuildFilter(Rec."Source Table No.", true, Value) then begin - if (Value <> Rec."Condition Filter") and (Value <> '') then begin - Rec."Condition Filter" := CopyStr(Value, 1, MaxStrLen(Rec."Condition Filter")); - if StrLen(Value) > MaxStrLen(Rec."Condition Filter") then - Error(FilterLengthErr, MaxStrLen(Rec."Condition Filter")); - end; + if (Value <> Rec.GetConditionFilter()) and (Value <> '') then + Rec.SetConditionFilter(Value); Result := true; end; end; @@ -404,6 +397,88 @@ table 20404 "Qlty. Inspection Gen. Rule" exit(Rec."Item Filter".HasValue()); end; + /// + /// Gets the condition filter from the Blob field. + /// + /// The condition filter text + procedure GetConditionFilter(): Text + var + TypeHelper: Codeunit "Type Helper"; + InStream: InStream; + begin + Rec.CalcFields("Condition Filter"); + if not Rec."Condition Filter".HasValue() then + exit(''); + Rec."Condition Filter".CreateInStream(InStream, TextEncoding::UTF8); + exit(TypeHelper.ReadAsTextWithSeparator(InStream, TypeHelper.LFSeparator())); + end; + + /// + /// Sets the condition filter to the Blob field. + /// + /// The condition filter text to set + procedure SetConditionFilter(NewConditionFilter: Text) + var + OutStream: OutStream; + begin + Clear(Rec."Condition Filter"); + if NewConditionFilter = '' then + exit; + Rec."Condition Filter".CreateOutStream(OutStream, TextEncoding::UTF8); + OutStream.WriteText(NewConditionFilter); + end; + + /// + /// Checks if the Condition Filter has a value. + /// + /// True if the Condition Filter has a value + procedure HasConditionFilter(): Boolean + begin + Rec.CalcFields("Condition Filter"); + exit(Rec."Condition Filter".HasValue()); + end; + + /// + /// Gets the item attribute filter from the Blob field. + /// + /// The item attribute filter text + procedure GetItemAttributeFilter(): Text + var + TypeHelper: Codeunit "Type Helper"; + InStream: InStream; + begin + Rec.CalcFields("Item Attribute Filter"); + if not Rec."Item Attribute Filter".HasValue() then + exit(''); + Rec."Item Attribute Filter".CreateInStream(InStream, TextEncoding::UTF8); + exit(TypeHelper.ReadAsTextWithSeparator(InStream, TypeHelper.LFSeparator())); + end; + + /// + /// Sets the item attribute filter to the Blob field. + /// + /// The item attribute filter text to set + procedure SetItemAttributeFilter(NewItemAttributeFilter: Text) + var + OutStream: OutStream; + begin + Clear(Rec."Item Attribute Filter"); + if NewItemAttributeFilter = '' then + exit; + Rec."Item Attribute Filter".CreateOutStream(OutStream, TextEncoding::UTF8); + OutStream.WriteText(NewItemAttributeFilter); + end; + + /// + /// Checks if the Item Attribute Filter has a value. + /// + /// True if the Item Attribute Filter has a value + procedure HasItemAttributeFilter(): Boolean + begin + Rec.CalcFields("Item Attribute Filter"); + exit(Rec."Item Attribute Filter".HasValue()); + end; + /// /// Provides the ability to assist edit an item filter. /// @@ -427,8 +502,11 @@ table 20404 "Qlty. Inspection Gen. Rule" procedure AssistEditConditionAttributeFilter() var QltyFilterHelpers: Codeunit "Qlty. Filter Helpers"; + Value: Text; begin - QltyFilterHelpers.BuildItemAttributeFilter400(Rec."Item Attribute Filter"); + Value := Rec.GetItemAttributeFilter(); + QltyFilterHelpers.BuildItemAttributeFilter(Value); + Rec.SetItemAttributeFilter(Value); end; /// @@ -628,29 +706,31 @@ table 20404 "Qlty. Inspection Gen. Rule" TempItemLedgerEntry: Record "Item Ledger Entry" temporary; TempItemJournalLine: Record "Item Journal Line" temporary; QltyFilterHelpers: Codeunit "Qlty. Filter Helpers"; + ConditionFilterValue: Text; begin if Rec."Source Table No." = 0 then exit(false); - if Rec."Condition Filter" = '' then + if not Rec.HasConditionFilter() then exit(false); + ConditionFilterValue := Rec.GetConditionFilter(); case Rec."Source Table No." of Database::"Prod. Order Routing Line", Database::"Prod. Order Line", Database::"Production Order": exit(true); Database::"Item Ledger Entry": - if QltyFilterHelpers.GetIsFilterSetToValue(Rec."Source Table No.", Rec."Condition Filter", TempItemLedgerEntry.FieldNo("Entry Type"), TempItemLedgerEntry."Entry Type"::Output) then + if QltyFilterHelpers.GetIsFilterSetToValue(Rec."Source Table No.", ConditionFilterValue, TempItemLedgerEntry.FieldNo("Entry Type"), TempItemLedgerEntry."Entry Type"::Output) then exit(true) else - if QltyFilterHelpers.GetIsFilterSetToValue(Rec."Source Table No.", Rec."Condition Filter", TempItemLedgerEntry.FieldNo("Order Type"), TempItemLedgerEntry."Order Type"::Production) then + if QltyFilterHelpers.GetIsFilterSetToValue(Rec."Source Table No.", ConditionFilterValue, TempItemLedgerEntry.FieldNo("Order Type"), TempItemLedgerEntry."Order Type"::Production) then exit(true); Database::"Item Journal Line": - if QltyFilterHelpers.GetIsFilterSetToValue(Rec."Source Table No.", Rec."Condition Filter", TempItemJournalLine.FieldNo("Entry Type"), TempItemJournalLine."Entry Type"::Output) then + if QltyFilterHelpers.GetIsFilterSetToValue(Rec."Source Table No.", ConditionFilterValue, TempItemJournalLine.FieldNo("Entry Type"), TempItemJournalLine."Entry Type"::Output) then exit(true) else - if QltyFilterHelpers.GetIsFilterSetToValue(Rec."Source Table No.", Rec."Condition Filter", TempItemJournalLine.FieldNo("Order Type"), TempItemJournalLine."Order Type"::Production) then + if QltyFilterHelpers.GetIsFilterSetToValue(Rec."Source Table No.", ConditionFilterValue, TempItemJournalLine.FieldNo("Order Type"), TempItemJournalLine."Order Type"::Production) then exit(true); end; end; @@ -659,24 +739,29 @@ table 20404 "Qlty. Inspection Gen. Rule" var TempWarehouseJournalLine: Record "Warehouse Journal Line" temporary; QltyFilterHelpers: Codeunit "Qlty. Filter Helpers"; + ConditionFilterValue: Text; begin - if (Rec."Source Table No." = Database::"Warehouse Journal Line") and (Rec."Condition Filter" <> '') then - if QltyFilterHelpers.GetIsFilterSetToValue(Rec."Source Table No.", Rec."Condition Filter", TempWarehouseJournalLine.FieldNo("Whse. Document Type"), TempWarehouseJournalLine."Whse. Document Type"::Receipt) then + if (Rec."Source Table No." = Database::"Warehouse Journal Line") and Rec.HasConditionFilter() then begin + ConditionFilterValue := Rec.GetConditionFilter(); + if QltyFilterHelpers.GetIsFilterSetToValue(Rec."Source Table No.", ConditionFilterValue, TempWarehouseJournalLine.FieldNo("Whse. Document Type"), TempWarehouseJournalLine."Whse. Document Type"::Receipt) then exit(true) else - if QltyFilterHelpers.GetIsFilterSetToValue(Rec."Source Table No.", Rec."Condition Filter", TempWarehouseJournalLine.FieldNo("Reference Document"), TempWarehouseJournalLine."Reference Document"::"Posted Rcpt.") then + if QltyFilterHelpers.GetIsFilterSetToValue(Rec."Source Table No.", ConditionFilterValue, TempWarehouseJournalLine.FieldNo("Reference Document"), TempWarehouseJournalLine."Reference Document"::"Posted Rcpt.") then exit(true); + end; end; local procedure InferIsWarehouseMoveIntentFromCondition(): Boolean var TempWarehouseJournalLine: Record "Warehouse Journal Line" temporary; QltyFilterHelpers: Codeunit "Qlty. Filter Helpers"; + ConditionFilterValue: Text; begin - if (Rec."Source Table No." = Database::"Warehouse Journal Line") and (Rec."Condition Filter" <> '') then begin - if QltyFilterHelpers.GetIsFilterSetToValue(Rec."Source Table No.", Rec."Condition Filter", TempWarehouseJournalLine.FieldNo("Whse. Document Type"), TempWarehouseJournalLine."Whse. Document Type"::"Internal Put-away") then + if (Rec."Source Table No." = Database::"Warehouse Journal Line") and Rec.HasConditionFilter() then begin + ConditionFilterValue := Rec.GetConditionFilter(); + if QltyFilterHelpers.GetIsFilterSetToValue(Rec."Source Table No.", ConditionFilterValue, TempWarehouseJournalLine.FieldNo("Whse. Document Type"), TempWarehouseJournalLine."Whse. Document Type"::"Internal Put-away") then exit(true); - if QltyFilterHelpers.GetIsFilterSetToValue(Rec."Source Table No.", Rec."Condition Filter", TempWarehouseJournalLine.FieldNo("Entry Type"), Format(TempWarehouseJournalLine."Entry Type"::Movement)) then + if QltyFilterHelpers.GetIsFilterSetToValue(Rec."Source Table No.", ConditionFilterValue, TempWarehouseJournalLine.FieldNo("Entry Type"), Format(TempWarehouseJournalLine."Entry Type"::Movement)) then exit(true); end; end; @@ -685,25 +770,27 @@ table 20404 "Qlty. Inspection Gen. Rule" var TempItemJournalLine: Record "Item Journal Line" temporary; QltyFilterHelpers: Codeunit "Qlty. Filter Helpers"; + ConditionFilterValue: Text; begin - if (Rec."Source Table No." = Database::"Item Journal Line") and (Rec."Condition Filter" <> '') then + if (Rec."Source Table No." = Database::"Item Journal Line") and Rec.HasConditionFilter() then begin + ConditionFilterValue := Rec.GetConditionFilter(); case true of - QltyFilterHelpers.GetIsFilterSetToValue(Rec."Source Table No.", Rec."Condition Filter", TempItemJournalLine.FieldNo("Document Type"), TempItemJournalLine."Document Type"::"Purchase Receipt"): + QltyFilterHelpers.GetIsFilterSetToValue(Rec."Source Table No.", ConditionFilterValue, TempItemJournalLine.FieldNo("Document Type"), TempItemJournalLine."Document Type"::"Purchase Receipt"): begin QltyGenRuleIntent := QltyGenRuleIntent::Purchase; exit(true); end; - QltyFilterHelpers.GetIsFilterSetToValue(Rec."Source Table No.", Rec."Condition Filter", TempItemJournalLine.FieldNo("Document Type"), TempItemJournalLine."Document Type"::"Sales Return Receipt"): + QltyFilterHelpers.GetIsFilterSetToValue(Rec."Source Table No.", ConditionFilterValue, TempItemJournalLine.FieldNo("Document Type"), TempItemJournalLine."Document Type"::"Sales Return Receipt"): begin QltyGenRuleIntent := QltyGenRuleIntent::"Sales Return"; exit(true); end; - QltyFilterHelpers.GetIsFilterSetToValue(Rec."Source Table No.", Rec."Condition Filter", TempItemJournalLine.FieldNo("Document Type"), TempItemJournalLine."Document Type"::"Transfer Receipt"): + QltyFilterHelpers.GetIsFilterSetToValue(Rec."Source Table No.", ConditionFilterValue, TempItemJournalLine.FieldNo("Document Type"), TempItemJournalLine."Document Type"::"Transfer Receipt"): begin QltyGenRuleIntent := QltyGenRuleIntent::Transfer; exit(true); end; - QltyFilterHelpers.GetIsFilterSetToValue(Rec."Source Table No.", Rec."Condition Filter", TempItemJournalLine.FieldNo("Document Type"), TempItemJournalLine."Document Type"::"Direct Transfer"): + QltyFilterHelpers.GetIsFilterSetToValue(Rec."Source Table No.", ConditionFilterValue, TempItemJournalLine.FieldNo("Document Type"), TempItemJournalLine."Document Type"::"Direct Transfer"): begin QltyGenRuleIntent := QltyGenRuleIntent::Transfer; exit(true); @@ -711,31 +798,34 @@ table 20404 "Qlty. Inspection Gen. Rule" else exit(false); end; + end; end; local procedure InferItemLedgerIntentFromConditionFilter(var QltyGenRuleIntent: Enum "Qlty. Gen. Rule Intent"): Boolean var TempItemLedgerEntry: Record "Item Ledger Entry" temporary; QltyFilterHelpers: Codeunit "Qlty. Filter Helpers"; + ConditionFilterValue: Text; begin - if (Rec."Source Table No." = Database::"Item Ledger Entry") and (Rec."Condition Filter" <> '') then + if (Rec."Source Table No." = Database::"Item Ledger Entry") and Rec.HasConditionFilter() then begin + ConditionFilterValue := Rec.GetConditionFilter(); case true of - QltyFilterHelpers.GetIsFilterSetToValue(Rec."Source Table No.", Rec."Condition Filter", TempItemLedgerEntry.FieldNo("Entry Type"), TempItemLedgerEntry."Entry Type"::Purchase): + QltyFilterHelpers.GetIsFilterSetToValue(Rec."Source Table No.", ConditionFilterValue, TempItemLedgerEntry.FieldNo("Entry Type"), TempItemLedgerEntry."Entry Type"::Purchase): begin QltyGenRuleIntent := QltyGenRuleIntent::Purchase; exit(true); end; - QltyFilterHelpers.GetIsFilterSetToValue(Rec."Source Table No.", Rec."Condition Filter", TempItemLedgerEntry.FieldNo("Entry Type"), TempItemLedgerEntry."Entry Type"::Sale): + QltyFilterHelpers.GetIsFilterSetToValue(Rec."Source Table No.", ConditionFilterValue, TempItemLedgerEntry.FieldNo("Entry Type"), TempItemLedgerEntry."Entry Type"::Sale): begin QltyGenRuleIntent := QltyGenRuleIntent::"Sales Return"; exit(true); end; - QltyFilterHelpers.GetIsFilterSetToValue(Rec."Source Table No.", Rec."Condition Filter", TempItemLedgerEntry.FieldNo("Entry Type"), TempItemLedgerEntry."Entry Type"::Transfer): + QltyFilterHelpers.GetIsFilterSetToValue(Rec."Source Table No.", ConditionFilterValue, TempItemLedgerEntry.FieldNo("Entry Type"), TempItemLedgerEntry."Entry Type"::Transfer): begin QltyGenRuleIntent := QltyGenRuleIntent::Transfer; exit(true); end; - QltyFilterHelpers.GetIsFilterSetToValue(Rec."Source Table No.", Rec."Condition Filter", TempItemLedgerEntry.FieldNo("Entry Type"), TempItemLedgerEntry."Entry Type"::"Assembly Output"): + QltyFilterHelpers.GetIsFilterSetToValue(Rec."Source Table No.", ConditionFilterValue, TempItemLedgerEntry.FieldNo("Entry Type"), TempItemLedgerEntry."Entry Type"::"Assembly Output"): begin QltyGenRuleIntent := QltyGenRuleIntent::Assembly; exit(true); @@ -743,6 +833,7 @@ table 20404 "Qlty. Inspection Gen. Rule" else exit(false); end; + end; end; local procedure GetIsOnlyAutoTriggerInSetup(IntentToCheck: Enum "Qlty. Gen. Rule Intent"): Boolean diff --git a/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/QltyInspectionGenRules.Page.al b/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/QltyInspectionGenRules.Page.al index bdc88cbd7f..685ff47d21 100644 --- a/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/QltyInspectionGenRules.Page.al +++ b/src/Apps/W1/Quality Management/app/src/Configuration/GenerationRule/QltyInspectionGenRules.Page.al @@ -77,11 +77,21 @@ page 20405 "Qlty. Inspection Gen. Rules" CurrPage.Update(true); end; } - field("Condition Filter"; Rec."Condition Filter") + field("Condition Filter"; ConditionFilterText) { + Caption = 'Condition Filter'; + ToolTip = 'Specifies the criteria for defining when to use this template. For example, if you wanted to only use a template for a certain item then you would define that item here.'; + + trigger OnValidate() + begin + Rec.SetConditionFilter(ConditionFilterText); + Rec.Modify(); + end; + trigger OnAssistEdit() begin Rec.AssistEditConditionTableFilter(); + ConditionFilterText := Rec.GetConditionFilter(); Rec.SetIntentAndDefaultTriggerValuesFromSetup(); if xRec."Entry No." = Rec."Entry No." then CurrPage.Update(true); @@ -104,11 +114,21 @@ page 20405 "Qlty. Inspection Gen. Rules" ItemFilterText := Rec.GetItemFilter(); end; } - field("Item Attribute Filter"; Rec."Item Attribute Filter") + field("Item Attribute Filter"; ItemAttributeFilterText) { + Caption = 'Attribute Filter'; + ToolTip = 'Specifies the item attribute specific criteria for defining when to use this template.'; + + trigger OnValidate() + begin + Rec.SetItemAttributeFilter(ItemAttributeFilterText); + Rec.Modify(); + end; + trigger OnAssistEdit() begin Rec.AssistEditConditionAttributeFilter(); + ItemAttributeFilterText := Rec.GetItemAttributeFilter(); end; } field("Activation Trigger"; Rec."Activation Trigger") @@ -389,6 +409,8 @@ page 20405 "Qlty. Inspection Gen. Rules" WhseMovementStyle: Text; TransferStyle: Text; ItemFilterText: Text; + ConditionFilterText: Text; + ItemAttributeFilterText: Text; RowStyle: Option None,Standard,StandardAccent,Strong,StrongAccent,Attention,AttentionAccent,Favorable,Unfavorable,Ambiguous,Subordinate; GenerationRulesCaptionLbl: Label 'Quality Inspection Generation Rules'; GenerationRulesCaptionForTemplateLbl: Label 'Quality Inspection Generation Rules for %1', Comment = '%1=the template'; @@ -439,7 +461,9 @@ page 20405 "Qlty. Inspection Gen. Rules" trigger OnAfterGetRecord() begin + ConditionFilterText := Rec.GetConditionFilter(); ItemFilterText := Rec.GetItemFilter(); + ItemAttributeFilterText := Rec.GetItemAttributeFilter(); UpdateControls(); end; diff --git a/src/Apps/W1/Quality Management/app/src/Document/QltyInspectionCreate.Codeunit.al b/src/Apps/W1/Quality Management/app/src/Document/QltyInspectionCreate.Codeunit.al index 6097afad74..c57f588d3c 100644 --- a/src/Apps/W1/Quality Management/app/src/Document/QltyInspectionCreate.Codeunit.al +++ b/src/Apps/W1/Quality Management/app/src/Document/QltyInspectionCreate.Codeunit.al @@ -950,7 +950,7 @@ codeunit 20404 "Qlty. Inspection - Create" end; if QltyTraversal.FindRelatedItem(Item, ParentRecordRef, TempSelfRecordRef, VariantEmptyOrTrackingSpecification, Dummy4Variant) then begin - if (Item."No." <> '') and (TempFiltersQltyInspectionGenRule."Item Attribute Filter" <> '') then + if (Item."No." <> '') and TempFiltersQltyInspectionGenRule.HasItemAttributeFilter() then if not QltyInspecGenRuleMgmt.DoesMatchItemAttributeFiltersOrNoFilter(TempFiltersQltyInspectionGenRule, Item) then exit; diff --git a/src/Apps/W1/Quality Management/app/src/Integration/Manufacturing/QltyProdGenRuleWizard.Page.al b/src/Apps/W1/Quality Management/app/src/Integration/Manufacturing/QltyProdGenRuleWizard.Page.al index 167186d200..f5d8e3729f 100644 --- a/src/Apps/W1/Quality Management/app/src/Integration/Manufacturing/QltyProdGenRuleWizard.Page.al +++ b/src/Apps/W1/Quality Management/app/src/Integration/Manufacturing/QltyProdGenRuleWizard.Page.al @@ -725,10 +725,10 @@ page 20462 "Qlty. Prod. Gen. Rule Wizard" local procedure AssistEditFullProdOrderRoutingLineFilter() begin TempQltyInspectionGenRule."Source Table No." := Database::"Prod. Order Routing Line"; - TempQltyInspectionGenRule."Condition Filter" := ProdOrderRoutingLineRuleFilter; + TempQltyInspectionGenRule.SetConditionFilter(ProdOrderRoutingLineRuleFilter); if TempQltyInspectionGenRule.AssistEditConditionTableFilter() then begin - ProdOrderRoutingLineRuleFilter := TempQltyInspectionGenRule."Condition Filter"; + ProdOrderRoutingLineRuleFilter := TempQltyInspectionGenRule.GetConditionFilter(); TempProdOrderRoutingLine.SetView(ProdOrderRoutingLineRuleFilter); UpdateTableVariablesFromRecordFilters(); @@ -751,10 +751,10 @@ page 20462 "Qlty. Prod. Gen. Rule Wizard" local procedure AssistEditFullPostedAssemblyHeaderFilter() begin TempQltyInspectionGenRule."Source Table No." := Database::"Posted Assembly Header"; - TempQltyInspectionGenRule."Condition Filter" := PostedAssemblyOrderRuleFilter; + TempQltyInspectionGenRule.SetConditionFilter(PostedAssemblyOrderRuleFilter); if TempQltyInspectionGenRule.AssistEditConditionTableFilter() then begin - PostedAssemblyOrderRuleFilter := TempQltyInspectionGenRule."Condition Filter"; + PostedAssemblyOrderRuleFilter := TempQltyInspectionGenRule.GetConditionFilter(); TempPostedAssemblyHeader.SetView(PostedAssemblyOrderRuleFilter); UpdateTableVariablesFromRecordFilters(); @@ -800,7 +800,7 @@ page 20462 "Qlty. Prod. Gen. Rule Wizard" if IsProductionOrder then begin QltyInspectionGenRule."Source Table No." := Database::"Prod. Order Routing Line"; QltyInspectionGenRule.Intent := QltyInspectionGenRule.Intent::Production; - QltyInspectionGenRule."Condition Filter" := ProdOrderRoutingLineRuleFilter; + QltyInspectionGenRule.SetConditionFilter(ProdOrderRoutingLineRuleFilter); QltyInspectionGenRule.SetIntentAndDefaultTriggerValuesFromSetup(); QltyInspectionGenRule."Production Trigger" := QltyProductionTrigger; @@ -808,7 +808,7 @@ page 20462 "Qlty. Prod. Gen. Rule Wizard" end else begin QltyInspectionGenRule."Source Table No." := Database::"Posted Assembly Header"; QltyInspectionGenRule.Intent := QltyInspectionGenRule.Intent::Assembly; - QltyInspectionGenRule."Condition Filter" := PostedAssemblyOrderRuleFilter; + QltyInspectionGenRule.SetConditionFilter(PostedAssemblyOrderRuleFilter); QltyInspectionGenRule.SetIntentAndDefaultTriggerValuesFromSetup(); QltyInspectionGenRule."Assembly Trigger" := QltyAssemblyTrigger; QltyManagementSetup."Assembly Trigger" := QltyAssemblyTrigger; @@ -819,7 +819,6 @@ page 20462 "Qlty. Prod. Gen. Rule Wizard" ExistingQltyInspectionGenRule.SetRange("Template Code", QltyInspectionGenRule."Template Code"); ExistingQltyInspectionGenRule.SetRange("Source Table No.", QltyInspectionGenRule."Source Table No."); - ExistingQltyInspectionGenRule.SetRange("Condition Filter", QltyInspectionGenRule."Condition Filter"); if ExistingQltyInspectionGenRule.Count() > 1 then if not Confirm(RuleAlreadyThereQst) then Error(''); @@ -842,12 +841,14 @@ page 20462 "Qlty. Prod. Gen. Rule Wizard" Clear(TempItem); if QltyInspectionGenRule."Source Table No." = Database::"Prod. Order Routing Line" then begin - TempProdOrderRoutingLine.SetView(TempQltyInspectionGenRule."Condition Filter"); + if TempQltyInspectionGenRule.HasConditionFilter() then + TempProdOrderRoutingLine.SetView(TempQltyInspectionGenRule.GetConditionFilter()); IsProductionOrder := true; IsAssemblyOrder := false; end; if QltyInspectionGenRule."Source Table No." = Database::"Posted Assembly Header" then begin - TempPostedAssemblyHeader.SetView(TempQltyInspectionGenRule."Condition Filter"); + if TempQltyInspectionGenRule.HasConditionFilter() then + TempPostedAssemblyHeader.SetView(TempQltyInspectionGenRule.GetConditionFilter()); IsAssemblyOrder := true; IsProductionOrder := false; end; @@ -874,11 +875,11 @@ page 20462 "Qlty. Prod. Gen. Rule Wizard" TempProdOrderRoutingLine.SetFilter("To-Production Bin Code", ToBinCodeFilter); TempProdOrderRoutingLine.SetFilter("Operation No.", OperationNo); TempProdOrderRoutingLine.SetFilter("Description", DescriptionPattern); - ProdOrderRoutingLineRuleFilter := CopyStr(QltyFilterHelpers.CleanUpWhereClause400(TempProdOrderRoutingLine.GetView(true)), 1, MaxStrLen(TempQltyInspectionGenRule."Condition Filter")); + ProdOrderRoutingLineRuleFilter := QltyFilterHelpers.CleanUpWhereClause400(TempProdOrderRoutingLine.GetView(true)); end else begin TempPostedAssemblyHeader.SetFilter("Location Code", LocationCodeFilter); TempPostedAssemblyHeader.SetFilter(Description, DescriptionPattern); - PostedAssemblyOrderRuleFilter := CopyStr(QltyFilterHelpers.CleanUpWhereClause400(TempPostedAssemblyHeader.GetView(true)), 1, MaxStrLen(TempQltyInspectionGenRule."Condition Filter")); + PostedAssemblyOrderRuleFilter := QltyFilterHelpers.CleanUpWhereClause400(TempPostedAssemblyHeader.GetView(true)); end; TempItem.SetFilter("No.", ItemNoFilter); @@ -887,12 +888,6 @@ page 20462 "Qlty. Prod. Gen. Rule Wizard" ItemRuleFilter := QltyFilterHelpers.CleanUpWhereClause400(TempItem.GetView(true)); CleanUpWhereClause(); - - if StrLen(QltyFilterHelpers.CleanUpWhereClause400(TempProdOrderRoutingLine.GetView(true))) > MaxStrLen(TempQltyInspectionGenRule."Condition Filter") then - Error(FilterLengthErr, MaxStrLen(TempQltyInspectionGenRule."Condition Filter")); - - if StrLen(QltyFilterHelpers.CleanUpWhereClause400(TempPostedAssemblyHeader.GetView(true))) > MaxStrLen(TempQltyInspectionGenRule."Condition Filter") then - Error(FilterLengthErr, MaxStrLen(TempQltyInspectionGenRule."Condition Filter")); end; local procedure UpdateTableVariablesFromRecordFilters() diff --git a/src/Apps/W1/Quality Management/app/src/Integration/Receiving/QltyRecGenRuleWizard.Page.al b/src/Apps/W1/Quality Management/app/src/Integration/Receiving/QltyRecGenRuleWizard.Page.al index b81ab1ad3b..917299d8cb 100644 --- a/src/Apps/W1/Quality Management/app/src/Integration/Receiving/QltyRecGenRuleWizard.Page.al +++ b/src/Apps/W1/Quality Management/app/src/Integration/Receiving/QltyRecGenRuleWizard.Page.al @@ -775,10 +775,10 @@ page 20461 "Qlty. Rec. Gen. Rule Wizard" local procedure AssistEditFullPurchaseLineFilter() begin TempQltyInspectionGenRule."Source Table No." := Database::"Purchase Line"; - TempQltyInspectionGenRule."Condition Filter" := PurchaseLineRule; + TempQltyInspectionGenRule.SetConditionFilter(PurchaseLineRule); if TempQltyInspectionGenRule.AssistEditConditionTableFilter() then begin - PurchaseLineRule := TempQltyInspectionGenRule."Condition Filter"; + PurchaseLineRule := TempQltyInspectionGenRule.GetConditionFilter(); TempPurchaseLine.SetView(PurchaseLineRule); UpdateTableVariablesFromRecordFilters(); @@ -789,10 +789,10 @@ page 20461 "Qlty. Rec. Gen. Rule Wizard" local procedure AssistEditFullSalesReturnLineFilter() begin TempQltyInspectionGenRule."Source Table No." := Database::"Sales Line"; - TempQltyInspectionGenRule."Condition Filter" := SalesReturnLineRule; + TempQltyInspectionGenRule.SetConditionFilter(SalesReturnLineRule); if TempQltyInspectionGenRule.AssistEditConditionTableFilter() then begin - SalesReturnLineRule := TempQltyInspectionGenRule."Condition Filter"; + SalesReturnLineRule := TempQltyInspectionGenRule.GetConditionFilter(); TempReturnSalesLine.SetView(SalesReturnLineRule); UpdateTableVariablesFromRecordFilters(); @@ -803,10 +803,10 @@ page 20461 "Qlty. Rec. Gen. Rule Wizard" local procedure AssistEditFullTransferLineFilter() begin TempQltyInspectionGenRule."Source Table No." := Database::"Transfer Line"; - TempQltyInspectionGenRule."Condition Filter" := TransferLineRule; + TempQltyInspectionGenRule.SetConditionFilter(TransferLineRule); if TempQltyInspectionGenRule.AssistEditConditionTableFilter() then begin - TransferLineRule := TempQltyInspectionGenRule."Condition Filter"; + TransferLineRule := TempQltyInspectionGenRule.GetConditionFilter(); TempTransferLine.SetView(TransferLineRule); UpdateTableVariablesFromRecordFilters(); @@ -817,10 +817,10 @@ page 20461 "Qlty. Rec. Gen. Rule Wizard" local procedure AssistEditFullWarehouseJournalLineFilter() begin TempQltyInspectionGenRule."Source Table No." := Database::"Warehouse Journal Line"; - TempQltyInspectionGenRule."Condition Filter" := WarehouseJournalLineRule; + TempQltyInspectionGenRule.SetConditionFilter(WarehouseJournalLineRule); if TempQltyInspectionGenRule.AssistEditConditionTableFilter() then begin - WarehouseJournalLineRule := TempQltyInspectionGenRule."Condition Filter"; + WarehouseJournalLineRule := TempQltyInspectionGenRule.GetConditionFilter(); TempWarehouseJournalLine.SetView(WarehouseJournalLineRule); UpdateTableVariablesFromRecordFilters(); @@ -890,7 +890,7 @@ page 20461 "Qlty. Rec. Gen. Rule Wizard" begin QltyInspectionGenRule."Source Table No." := Database::"Purchase Line"; QltyInspectionGenRule.Intent := QltyInspectionGenRule.Intent::Purchase; - QltyInspectionGenRule."Condition Filter" := PurchaseLineRule; + QltyInspectionGenRule.SetConditionFilter(PurchaseLineRule); QltyInspectionGenRule.SetIntentAndDefaultTriggerValuesFromSetup(); QltyInspectionGenRule."Purchase Trigger" := QltyPurchaseTrigger; QltyManagementSetup."Purchase Trigger" := QltyPurchaseTrigger; @@ -899,7 +899,7 @@ page 20461 "Qlty. Rec. Gen. Rule Wizard" begin QltyInspectionGenRule."Source Table No." := Database::"Sales Line"; QltyInspectionGenRule.Intent := QltyInspectionGenRule.Intent::"Sales Return"; - QltyInspectionGenRule."Condition Filter" := SalesReturnLineRule; + QltyInspectionGenRule.SetConditionFilter(SalesReturnLineRule); QltyInspectionGenRule.SetIntentAndDefaultTriggerValuesFromSetup(); QltyInspectionGenRule."Sales Return Trigger" := QltySalesReturnTrigger; QltyManagementSetup."Sales Return Trigger" := QltySalesReturnTrigger; @@ -908,7 +908,7 @@ page 20461 "Qlty. Rec. Gen. Rule Wizard" begin QltyInspectionGenRule."Source Table No." := Database::"Transfer Line"; QltyInspectionGenRule.Intent := QltyInspectionGenRule.Intent::Transfer; - QltyInspectionGenRule."Condition Filter" := TransferLineRule; + QltyInspectionGenRule.SetConditionFilter(TransferLineRule); QltyInspectionGenRule.SetIntentAndDefaultTriggerValuesFromSetup(); QltyInspectionGenRule."Transfer Trigger" := QltyTransferTrigger; QltyManagementSetup."Transfer Trigger" := QltyTransferTrigger; @@ -917,7 +917,7 @@ page 20461 "Qlty. Rec. Gen. Rule Wizard" begin QltyInspectionGenRule."Source Table No." := Database::"Warehouse Journal Line"; QltyInspectionGenRule.Intent := QltyInspectionGenRule.Intent::"Warehouse Receipt"; - QltyInspectionGenRule."Condition Filter" := WarehouseJournalLineRule; + QltyInspectionGenRule.SetConditionFilter(WarehouseJournalLineRule); QltyInspectionGenRule.SetIntentAndDefaultTriggerValuesFromSetup(); QltyInspectionGenRule."Warehouse Receive Trigger" := QltyWhseReceiveTrigger; QltyManagementSetup."Warehouse Receive Trigger" := QltyWhseReceiveTrigger; @@ -930,7 +930,6 @@ page 20461 "Qlty. Rec. Gen. Rule Wizard" ExistingQltyInspectionGenRule.SetRange("Template Code", QltyInspectionGenRule."Template Code"); ExistingQltyInspectionGenRule.SetRange("Source Table No.", QltyInspectionGenRule."Source Table No."); - ExistingQltyInspectionGenRule.SetRange("Condition Filter", QltyInspectionGenRule."Condition Filter"); if ExistingQltyInspectionGenRule.Count() > 1 then if not Confirm(AlreadyThereQst) then Error(''); @@ -952,28 +951,32 @@ page 20461 "Qlty. Rec. Gen. Rule Wizard" Clear(TempItem); if QltyInspectionGenRule."Source Table No." = Database::"Purchase Line" then begin - TempPurchaseLine.SetView(TempQltyInspectionGenRule."Condition Filter"); + if TempQltyInspectionGenRule.HasConditionFilter() then + TempPurchaseLine.SetView(TempQltyInspectionGenRule.GetConditionFilter()); IsPurchaseLine := true; IsReturnReceipt := false; IsTransferLine := false; IsWarehouseReceipt := false; end; if QltyInspectionGenRule."Source Table No." = Database::"Sales Line" then begin - TempReturnSalesLine.SetView(TempQltyInspectionGenRule."Condition Filter"); + if TempQltyInspectionGenRule.HasConditionFilter() then + TempReturnSalesLine.SetView(TempQltyInspectionGenRule.GetConditionFilter()); IsPurchaseLine := false; IsReturnReceipt := true; IsTransferLine := false; IsWarehouseReceipt := false; end; if QltyInspectionGenRule."Source Table No." = Database::"Transfer Line" then begin - TempTransferLine.SetView(TempQltyInspectionGenRule."Condition Filter"); + if TempQltyInspectionGenRule.HasConditionFilter() then + TempTransferLine.SetView(TempQltyInspectionGenRule.GetConditionFilter()); IsTransferLine := true; IsPurchaseLine := false; IsReturnReceipt := false; IsWarehouseReceipt := false; end; if QltyInspectionGenRule."Source Table No." = Database::"Warehouse Journal Line" then begin - TempWarehouseJournalLine.SetView(TempQltyInspectionGenRule."Condition Filter"); + if TempQltyInspectionGenRule.HasConditionFilter() then + TempWarehouseJournalLine.SetView(TempQltyInspectionGenRule.GetConditionFilter()); IsWarehouseReceipt := true; IsPurchaseLine := false; IsReturnReceipt := false; @@ -996,20 +999,20 @@ page 20461 "Qlty. Rec. Gen. Rule Wizard" TempPurchaseLine.SetFilter("Location Code", LocationCodeFilter); TempPurchaseLine.SetFilter("Buy-from Vendor No.", VendorNoFilter); TempPurchaseLine.SetFilter("Purchasing Code", PurchasingCode); - PurchaseLineRule := CopyStr(QltyFilterHelpers.CleanUpWhereClause400(TempPurchaseLine.GetView(true)), 1, MaxStrLen(TempQltyInspectionGenRule."Condition Filter")); + PurchaseLineRule := QltyFilterHelpers.CleanUpWhereClause400(TempPurchaseLine.GetView(true)); end; if IsReturnReceipt then begin TempReturnSalesLine.SetFilter("Location Code", LocationCodeFilter); TempReturnSalesLine.SetFilter("Return Reason Code", ReturnReasonCode); TempReturnSalesLine.SetFilter("Sell-to Customer No.", CustomerNoFilter); - SalesReturnLineRule := CopyStr(QltyFilterHelpers.CleanUpWhereClause400(TempReturnSalesLine.GetView(true)), 1, MaxStrLen(TempQltyInspectionGenRule."Condition Filter")); + SalesReturnLineRule := QltyFilterHelpers.CleanUpWhereClause400(TempReturnSalesLine.GetView(true)); end; if IsTransferLine then begin TempTransferLine.SetFilter("Transfer-to Code", TransferToCode); TempTransferLine.SetFilter("Transfer-from Code", TransferFromCode); - TransferLineRule := CopyStr(QltyFilterHelpers.CleanUpWhereClause400(TempTransferLine.GetView(true)), 1, MaxStrLen(TempQltyInspectionGenRule."Condition Filter")); + TransferLineRule := QltyFilterHelpers.CleanUpWhereClause400(TempTransferLine.GetView(true)); end; if IsWarehouseReceipt then begin @@ -1017,7 +1020,7 @@ page 20461 "Qlty. Rec. Gen. Rule Wizard" TempWarehouseJournalLine.SetFilter("Location Code", LocationCodeFilter); TempWarehouseJournalLine.SetFilter("To Zone Code", ToZoneCodeFilter); TempWarehouseJournalLine.SetFilter("To Bin Code", ToBinCodeFilter); - WarehouseJournalLineRule := CopyStr(QltyFilterHelpers.CleanUpWhereClause400(TempWarehouseJournalLine.GetView(true)), 1, MaxStrLen(TempQltyInspectionGenRule."Condition Filter")); + WarehouseJournalLineRule := QltyFilterHelpers.CleanUpWhereClause400(TempWarehouseJournalLine.GetView(true)); end; TempItem.SetFilter("No.", ItemNoFilter); @@ -1027,15 +1030,6 @@ page 20461 "Qlty. Rec. Gen. Rule Wizard" ItemRule := QltyFilterHelpers.CleanUpWhereClause400(TempItem.GetView(true)); CleanUpWhereClause(); - - if StrLen(QltyFilterHelpers.CleanUpWhereClause400(TempReturnSalesLine.GetView(true))) > MaxStrLen(TempQltyInspectionGenRule."Condition Filter") then - Error(FilterLengthErr, MaxStrLen(TempQltyInspectionGenRule."Condition Filter")); - - if StrLen(QltyFilterHelpers.CleanUpWhereClause400(TempTransferLine.GetView(true))) > MaxStrLen(TempQltyInspectionGenRule."Condition Filter") then - Error(FilterLengthErr, MaxStrLen(TempQltyInspectionGenRule."Condition Filter")); - - if StrLen(QltyFilterHelpers.CleanUpWhereClause400(TempWarehouseJournalLine.GetView(true))) > MaxStrLen(TempQltyInspectionGenRule."Condition Filter") then - Error(FilterLengthErr, MaxStrLen(TempQltyInspectionGenRule."Condition Filter")); end; local procedure UpdateTableVariablesFromRecordFilters() diff --git a/src/Apps/W1/Quality Management/app/src/Integration/Warehouse/QltyWhseGenRuleWizard.Page.al b/src/Apps/W1/Quality Management/app/src/Integration/Warehouse/QltyWhseGenRuleWizard.Page.al index e006597534..5b39349bb1 100644 --- a/src/Apps/W1/Quality Management/app/src/Integration/Warehouse/QltyWhseGenRuleWizard.Page.al +++ b/src/Apps/W1/Quality Management/app/src/Integration/Warehouse/QltyWhseGenRuleWizard.Page.al @@ -580,10 +580,10 @@ page 20460 "Qlty. Whse. Gen. Rule Wizard" begin TempQltyInspectionGenRule."Source Table No." := Database::"Warehouse Journal Line"; - TempQltyInspectionGenRule."Condition Filter" := WhseRule; + TempQltyInspectionGenRule.SetConditionFilter(WhseRule); if TempQltyInspectionGenRule.AssistEditConditionTableFilter() then begin - WhseRule := TempQltyInspectionGenRule."Condition Filter"; + WhseRule := TempQltyInspectionGenRule.GetConditionFilter(); TempWarehouseJournalLine.SetView(WhseRule); UpdateTableVariablesFromRecordFilters(); @@ -616,7 +616,7 @@ page 20460 "Qlty. Whse. Gen. Rule Wizard" TempWarehouseJournalLine.SetFilter("Location Code", LocationCodeFilter); TempWarehouseJournalLine.SetFilter("To Zone Code", ToZoneCodeFilter); TempWarehouseJournalLine.SetFilter("To Bin Code", ToBinCodeFilter); - WhseRule := CopyStr(QltyFilterHelpers.CleanUpWhereClause400(TempWarehouseJournalLine.GetView(true)), 1, MaxStrLen(TempQltyInspectionGenRule."Condition Filter")); + WhseRule := QltyFilterHelpers.CleanUpWhereClause400(TempWarehouseJournalLine.GetView(true)); TempItem.SetFilter("No.", ItemNoFilter); TempItem.SetFilter("Item Category Code", CategoryCodeFilter); @@ -625,9 +625,6 @@ page 20460 "Qlty. Whse. Gen. Rule Wizard" ItemRule := QltyFilterHelpers.CleanUpWhereClause400(TempItem.GetView(true)); CleanUpWhereClause(); - - if StrLen(QltyFilterHelpers.CleanUpWhereClause400(TempWarehouseJournalLine.GetView(true))) > MaxStrLen(TempQltyInspectionGenRule."Condition Filter") then - Error(FilterLengthErr, MaxStrLen(TempQltyInspectionGenRule."Condition Filter")); end; local procedure CleanUpWhereClause() @@ -663,7 +660,7 @@ page 20460 "Qlty. Whse. Gen. Rule Wizard" QltyInspectionGenRule."Source Table No." := Database::"Warehouse Journal Line"; QltyInspectionGenRule.Intent := QltyInspectionGenRule.Intent::"Warehouse Movement"; QltyInspectionGenRule.Validate("Template Code", TemplateCode); - QltyInspectionGenRule."Condition Filter" := WhseRule; + QltyInspectionGenRule.SetConditionFilter(WhseRule); QltyInspectionGenRule.SetItemFilter(ItemRule); QltyInspectionGenRule.SetIntentAndDefaultTriggerValuesFromSetup(); QltyInspectionGenRule."Warehouse Movement Trigger" := QltyWarehouseTrigger; @@ -674,7 +671,6 @@ page 20460 "Qlty. Whse. Gen. Rule Wizard" ExistingQltyInspectionGenRule.SetRange("Template Code", QltyInspectionGenRule."Template Code"); ExistingQltyInspectionGenRule.SetRange("Source Table No.", QltyInspectionGenRule."Source Table No."); - ExistingQltyInspectionGenRule.SetRange("Condition Filter", QltyInspectionGenRule."Condition Filter"); if ExistingQltyInspectionGenRule.Count() > 1 then if not Confirm(AlreadyThereQst) then Error(''); @@ -694,7 +690,8 @@ page 20460 "Qlty. Whse. Gen. Rule Wizard" TempQltyInspectionGenRule := QltyInspectionGenRule; Clear(TempWarehouseJournalLine); Clear(TempItem); - TempWarehouseJournalLine.SetView(TempQltyInspectionGenRule."Condition Filter"); + if TempQltyInspectionGenRule.HasConditionFilter() then + TempWarehouseJournalLine.SetView(TempQltyInspectionGenRule.GetConditionFilter()); if TempQltyInspectionGenRule.HasItemFilter() then TempItem.SetView(TempQltyInspectionGenRule.GetItemFilter()); UpdateTableVariablesFromRecordFilters(); diff --git a/src/Apps/W1/Quality Management/test/src/QltyTestsGenerationRule.Codeunit.al b/src/Apps/W1/Quality Management/test/src/QltyTestsGenerationRule.Codeunit.al index 2553d3c9fb..7a1175c3be 100644 --- a/src/Apps/W1/Quality Management/test/src/QltyTestsGenerationRule.Codeunit.al +++ b/src/Apps/W1/Quality Management/test/src/QltyTestsGenerationRule.Codeunit.al @@ -275,7 +275,7 @@ codeunit 139955 "Qlty. Tests - Generation Rule" // [GIVEN] The generation rule is updated with an item attribute filter QltyInspectionGenRule.FindFirst(); - QltyInspectionGenRule."Item Attribute Filter" := (StrSubstNo(ItemAttributeFilterTok, ItemAttribute.Name)); + QltyInspectionGenRule.SetItemAttributeFilter(StrSubstNo(ItemAttributeFilterTok, ItemAttribute.Name)); QltyInspectionGenRule.Modify(); // [WHEN] A manual rule search is performed for Purchase Line with the item diff --git a/src/Apps/W1/Quality Management/test/src/QltyTestsMoreTests.Codeunit.al b/src/Apps/W1/Quality Management/test/src/QltyTestsMoreTests.Codeunit.al index ea353e83c2..e41669317a 100644 --- a/src/Apps/W1/Quality Management/test/src/QltyTestsMoreTests.Codeunit.al +++ b/src/Apps/W1/Quality Management/test/src/QltyTestsMoreTests.Codeunit.al @@ -832,7 +832,7 @@ codeunit 139965 "Qlty. Tests - More Tests" QltyInspectionGenRule.Init(); QltyInspectionGenRule."Template Code" := ConfigurationToLoadQltyInspectionTemplateHdr.Code; QltyInspectionGenRule."Source Table No." := Database::"Item Ledger Entry"; - QltyInspectionGenRule."Condition Filter" := ConditionProductionFilterTok; + QltyInspectionGenRule.SetConditionFilter(ConditionProductionFilterTok); QltyInspectionGenRule."Schedule Group" := DefaultScheduleGroupTok; QltyInspectionGenRule.Insert(true); @@ -880,7 +880,7 @@ codeunit 139965 "Qlty. Tests - More Tests" QltyInspectionGenRule.Init(); QltyInspectionGenRule."Template Code" := QltyInspectionTemplateHdr.Code; QltyInspectionGenRule."Source Table No." := Database::"Item Ledger Entry"; - QltyInspectionGenRule."Condition Filter" := OrderTypeProductionConditionFilterTok; + QltyInspectionGenRule.SetConditionFilter(OrderTypeProductionConditionFilterTok); QltyInspectionGenRule."Schedule Group" := CopyStr(ScheduleGroupCode, 1, MaxStrLen(QltyInspectionGenRule."Schedule Group")); QltyInspectionGenRule.Insert(true); @@ -935,7 +935,7 @@ codeunit 139965 "Qlty. Tests - More Tests" QltyInspectionGenRule.Init(); QltyInspectionGenRule."Template Code" := QltyInspectionTemplateHdr.Code; QltyInspectionGenRule."Source Table No." := Database::"Item Ledger Entry"; - QltyInspectionGenRule."Condition Filter" := OrderTypeProductionConditionFilterTok; + QltyInspectionGenRule.SetConditionFilter(OrderTypeProductionConditionFilterTok); QltyInspectionGenRule.Insert(true); JobQueueEntries.Trap(); QltyInspectionGenRule.Validate("Schedule Group", ScheduleGroupCode); @@ -986,7 +986,7 @@ codeunit 139965 "Qlty. Tests - More Tests" QltyInspectionGenRule.Init(); QltyInspectionGenRule."Template Code" := QltyInspectionTemplateHdr.Code; QltyInspectionGenRule."Source Table No." := Database::"Item Ledger Entry"; - QltyInspectionGenRule."Condition Filter" := EntryTypeOutputConditionFilterTok; + QltyInspectionGenRule.SetConditionFilter(EntryTypeOutputConditionFilterTok); QltyInspectionGenRule.Insert(true); JobQueueEntries.Trap(); QltyInspectionGenRule.Validate("Schedule Group", ScheduleGroupCode); @@ -995,7 +995,7 @@ codeunit 139965 "Qlty. Tests - More Tests" SecondQltyInspectionGenRule.Init(); SecondQltyInspectionGenRule."Template Code" := QltyInspectionTemplateHdr.Code; SecondQltyInspectionGenRule."Source Table No." := Database::"Item Ledger Entry"; - SecondQltyInspectionGenRule."Condition Filter" := OrderTypeProductionConditionFilterTok; + SecondQltyInspectionGenRule.SetConditionFilter(OrderTypeProductionConditionFilterTok); SecondQltyInspectionGenRule.Insert(true); JobQueueEntries.Trap(); SecondQltyInspectionGenRule.Validate("Schedule Group", ScheduleGroupCode); @@ -1045,7 +1045,7 @@ codeunit 139965 "Qlty. Tests - More Tests" QltyInspectionGenRule.Init(); QltyInspectionGenRule."Template Code" := ConfigurationToLoadQltyInspectionTemplateHdr.Code; QltyInspectionGenRule."Source Table No." := Database::"Item Ledger Entry"; - QltyInspectionGenRule."Condition Filter" := ConditionProductionFilterTok; + QltyInspectionGenRule.SetConditionFilter(ConditionProductionFilterTok); QltyInspectionGenRule.Insert(true); // [GIVEN] All existing job queue entries for schedule inspection are deleted diff --git a/src/Apps/W1/Quality Management/test/src/QltyTestsTestTable.Codeunit.al b/src/Apps/W1/Quality Management/test/src/QltyTestsTestTable.Codeunit.al index 3bddd8288f..249cdc5ab0 100644 --- a/src/Apps/W1/Quality Management/test/src/QltyTestsTestTable.Codeunit.al +++ b/src/Apps/W1/Quality Management/test/src/QltyTestsTestTable.Codeunit.al @@ -3809,7 +3809,7 @@ codeunit 139967 "Qlty. Tests - Test Table" // [GIVEN] A generation rule for Item Journal Line with Entry Type filter for Output QltyInspectionGenRule."Source Table No." := Database::"Item Journal Line"; - QltyInspectionGenRule."Condition Filter" := ConditionFilterOutputTok; + QltyInspectionGenRule.SetConditionFilter(ConditionFilterOutputTok); // [WHEN] Inferring the generation rule intent QltyInspectionGenRule.InferGenerationRuleIntent(GenRuleIntent, Certainty); @@ -3831,7 +3831,7 @@ codeunit 139967 "Qlty. Tests - Test Table" // [GIVEN] A generation rule for Item Journal Line with Order Type filter for Production QltyInspectionGenRule."Source Table No." := Database::"Item Journal Line"; - QltyInspectionGenRule."Condition Filter" := ConditionFilterProductionTok; + QltyInspectionGenRule.SetConditionFilter(ConditionFilterProductionTok); // [WHEN] Inferring the generation rule intent QltyInspectionGenRule.InferGenerationRuleIntent(GenRuleIntent, Certainty); @@ -3853,7 +3853,7 @@ codeunit 139967 "Qlty. Tests - Test Table" // [GIVEN] A generation rule for Item Journal Line with Document Type filter for Purchase Receipt QltyInspectionGenRule."Source Table No." := Database::"Item Journal Line"; - QltyInspectionGenRule."Condition Filter" := ConditionFilterPurchaseReceiptTok; + QltyInspectionGenRule.SetConditionFilter(ConditionFilterPurchaseReceiptTok); // [WHEN] Inferring the generation rule intent QltyInspectionGenRule.InferGenerationRuleIntent(GenRuleIntent, Certainty); @@ -3875,7 +3875,7 @@ codeunit 139967 "Qlty. Tests - Test Table" // [GIVEN] A generation rule for Item Journal Line with Document Type filter for Sales Return Receipt QltyInspectionGenRule."Source Table No." := Database::"Item Journal Line"; - QltyInspectionGenRule."Condition Filter" := ConditionFilterSalesReturnReceiptTok; + QltyInspectionGenRule.SetConditionFilter(ConditionFilterSalesReturnReceiptTok); // [WHEN] Inferring the generation rule intent QltyInspectionGenRule.InferGenerationRuleIntent(GenRuleIntent, Certainty); @@ -3897,7 +3897,7 @@ codeunit 139967 "Qlty. Tests - Test Table" // [GIVEN] A generation rule for Item Journal Line with Document Type filter for Transfer Receipt QltyInspectionGenRule."Source Table No." := Database::"Item Journal Line"; - QltyInspectionGenRule."Condition Filter" := ConditionFilterTransferReceiptTok; + QltyInspectionGenRule.SetConditionFilter(ConditionFilterTransferReceiptTok); // [WHEN] Inferring the generation rule intent QltyInspectionGenRule.InferGenerationRuleIntent(GenRuleIntent, Certainty); @@ -3919,7 +3919,7 @@ codeunit 139967 "Qlty. Tests - Test Table" // [GIVEN] A generation rule for Item Journal Line with Document Type filter for Direct Transfer QltyInspectionGenRule."Source Table No." := Database::"Item Journal Line"; - QltyInspectionGenRule."Condition Filter" := ConditionFilterDirectTransferTok; + QltyInspectionGenRule.SetConditionFilter(ConditionFilterDirectTransferTok); // [WHEN] Inferring the generation rule intent QltyInspectionGenRule.InferGenerationRuleIntent(GenRuleIntent, Certainty); @@ -3940,7 +3940,7 @@ codeunit 139967 "Qlty. Tests - Test Table" // [GIVEN] A generation rule for Item Ledger Entry with Entry Type filter for Output QltyInspectionGenRule."Source Table No." := Database::"Item Ledger Entry"; - QltyInspectionGenRule."Condition Filter" := ConditionFilterOutputTok; + QltyInspectionGenRule.SetConditionFilter(ConditionFilterOutputTok); // [WHEN] Inferring the generation rule intent QltyInspectionGenRule.InferGenerationRuleIntent(GenRuleIntent, Certainty); @@ -3961,7 +3961,7 @@ codeunit 139967 "Qlty. Tests - Test Table" // [GIVEN] A generation rule for Item Ledger Entry with Order Type filter for Production QltyInspectionGenRule."Source Table No." := Database::"Item Ledger Entry"; - QltyInspectionGenRule."Condition Filter" := ConditionFilterProductionTok; + QltyInspectionGenRule.SetConditionFilter(ConditionFilterProductionTok); // [WHEN] Inferring the generation rule intent QltyInspectionGenRule.InferGenerationRuleIntent(GenRuleIntent, Certainty); @@ -3982,7 +3982,7 @@ codeunit 139967 "Qlty. Tests - Test Table" // [GIVEN] A generation rule for Item Ledger Entry with Entry Type filter for Purchase QltyInspectionGenRule."Source Table No." := Database::"Item Ledger Entry"; - QltyInspectionGenRule."Condition Filter" := ConditionFilterPurchaseTok; + QltyInspectionGenRule.SetConditionFilter(ConditionFilterPurchaseTok); // [WHEN] Inferring the generation rule intent QltyInspectionGenRule.InferGenerationRuleIntent(GenRuleIntent, Certainty); @@ -4003,7 +4003,7 @@ codeunit 139967 "Qlty. Tests - Test Table" // [GIVEN] A generation rule for Item Ledger Entry with Entry Type filter for Sale QltyInspectionGenRule."Source Table No." := Database::"Item Ledger Entry"; - QltyInspectionGenRule."Condition Filter" := ConditionFilterSaleTok; + QltyInspectionGenRule.SetConditionFilter(ConditionFilterSaleTok); // [WHEN] Inferring the generation rule intent QltyInspectionGenRule.InferGenerationRuleIntent(GenRuleIntent, Certainty); @@ -4024,7 +4024,7 @@ codeunit 139967 "Qlty. Tests - Test Table" // [GIVEN] A generation rule for Item Ledger Entry with Entry Type filter for Transfer QltyInspectionGenRule."Source Table No." := Database::"Item Ledger Entry"; - QltyInspectionGenRule."Condition Filter" := ConditionFilterTransferTok; + QltyInspectionGenRule.SetConditionFilter(ConditionFilterTransferTok); // [WHEN] Inferring the generation rule intent QltyInspectionGenRule.InferGenerationRuleIntent(GenRuleIntent, Certainty); @@ -4045,7 +4045,7 @@ codeunit 139967 "Qlty. Tests - Test Table" // [GIVEN] A generation rule for Item Ledger Entry with Entry Type filter for Assembly Output QltyInspectionGenRule."Source Table No." := Database::"Item Ledger Entry"; - QltyInspectionGenRule."Condition Filter" := ConditionFilterAssemblyOutputTok; + QltyInspectionGenRule.SetConditionFilter(ConditionFilterAssemblyOutputTok); // [WHEN] Inferring the generation rule intent QltyInspectionGenRule.InferGenerationRuleIntent(GenRuleIntent, Certainty); @@ -4066,7 +4066,7 @@ codeunit 139967 "Qlty. Tests - Test Table" // [GIVEN] A generation rule for Warehouse Journal Line with Warehouse Document Type filter for Receipt QltyInspectionGenRule."Source Table No." := Database::"Warehouse Journal Line"; - QltyInspectionGenRule."Condition Filter" := ConditionFilterWhseReceiptTok; + QltyInspectionGenRule.SetConditionFilter(ConditionFilterWhseReceiptTok); // [WHEN] Inferring the generation rule intent QltyInspectionGenRule.InferGenerationRuleIntent(GenRuleIntent, Certainty); @@ -4087,7 +4087,7 @@ codeunit 139967 "Qlty. Tests - Test Table" // [GIVEN] A generation rule for Warehouse Journal Line with Reference Document filter for Posted Receipt QltyInspectionGenRule."Source Table No." := Database::"Warehouse Journal Line"; - QltyInspectionGenRule."Condition Filter" := ConditionFilterPostedRcptTok; + QltyInspectionGenRule.SetConditionFilter(ConditionFilterPostedRcptTok); // [WHEN] Inferring the generation rule intent QltyInspectionGenRule.InferGenerationRuleIntent(GenRuleIntent, Certainty); @@ -4108,7 +4108,7 @@ codeunit 139967 "Qlty. Tests - Test Table" // [GIVEN] A generation rule for Warehouse Journal Line with Warehouse Document Type filter for Internal Put-away QltyInspectionGenRule."Source Table No." := Database::"Warehouse Journal Line"; - QltyInspectionGenRule."Condition Filter" := ConditionFilterInternalPutAwayTok; + QltyInspectionGenRule.SetConditionFilter(ConditionFilterInternalPutAwayTok); // [WHEN] Inferring the generation rule intent QltyInspectionGenRule.InferGenerationRuleIntent(GenRuleIntent, Certainty); @@ -4129,7 +4129,7 @@ codeunit 139967 "Qlty. Tests - Test Table" // [GIVEN] A generation rule for Warehouse Journal Line with Entry Type filter for Movement QltyInspectionGenRule."Source Table No." := Database::"Warehouse Journal Line"; - QltyInspectionGenRule."Condition Filter" := ConditionFilterMovementTok; + QltyInspectionGenRule.SetConditionFilter(ConditionFilterMovementTok); // [WHEN] Inferring the generation rule intent QltyInspectionGenRule.InferGenerationRuleIntent(QltyGenRuleIntent, Certainty); @@ -4223,7 +4223,7 @@ codeunit 139967 "Qlty. Tests - Test Table" // [GIVEN] A generation rule for Item Ledger Entry QltyInspectionGenRule."Source Table No." := Database::"Item Ledger Entry"; - QltyInspectionGenRule."Condition Filter" := 'WHERE(Entry Type=FILTER(Output|Positive Adjmt.))'; + QltyInspectionGenRule.SetConditionFilter('WHERE(Entry Type=FILTER(Output|Positive Adjmt.))'); // [GIVEN] Setup with Production trigger enabled QltyManagementSetup.Get(); @@ -4239,7 +4239,7 @@ codeunit 139967 "Qlty. Tests - Test Table" // [WHEN] Inferring intent with Output last in filter QltyInspectionGenRule."Source Table No." := Database::"Item Ledger Entry"; - QltyInspectionGenRule."Condition Filter" := 'WHERE(Entry Type=FILTER(Positive Adjmt.|Output))'; + QltyInspectionGenRule.SetConditionFilter('WHERE(Entry Type=FILTER(Positive Adjmt.|Output))'); QltyInspectionGenRule.InferGenerationRuleIntent(GenRuleIntent, Certainty); @@ -4248,7 +4248,7 @@ codeunit 139967 "Qlty. Tests - Test Table" // [WHEN] Inferring intent without Output in filter QltyInspectionGenRule."Source Table No." := Database::"Item Ledger Entry"; - QltyInspectionGenRule."Condition Filter" := 'WHERE(Entry Type=FILTER(Positive Adjmt.|Purchase|Sale))'; + QltyInspectionGenRule.SetConditionFilter('WHERE(Entry Type=FILTER(Positive Adjmt.|Purchase|Sale))'); QltyInspectionGenRule.InferGenerationRuleIntent(GenRuleIntent, Certainty); @@ -4257,7 +4257,7 @@ codeunit 139967 "Qlty. Tests - Test Table" // [WHEN] Inferring intent with Output in middle of filter QltyInspectionGenRule."Source Table No." := Database::"Item Ledger Entry"; - QltyInspectionGenRule."Condition Filter" := 'WHERE(Entry Type=FILTER(Positive Adjmt.|Output|Purchase|Sale))'; + QltyInspectionGenRule.SetConditionFilter('WHERE(Entry Type=FILTER(Positive Adjmt.|Output|Purchase|Sale))'); QltyInspectionGenRule.InferGenerationRuleIntent(GenRuleIntent, Certainty); From 81ad60e44a8889d2677de83d0fdbe5a808258dc9 Mon Sep 17 00:00:00 2001 From: tomasevicstefan Date: Mon, 22 Dec 2025 23:05:50 +0100 Subject: [PATCH 3/9] Remove redundant filter length error message from Qlty. Prod. Gen. Rule Wizard --- .../src/Integration/Manufacturing/QltyProdGenRuleWizard.Page.al | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Apps/W1/Quality Management/app/src/Integration/Manufacturing/QltyProdGenRuleWizard.Page.al b/src/Apps/W1/Quality Management/app/src/Integration/Manufacturing/QltyProdGenRuleWizard.Page.al index 6b8adecb7b..915e3ba20f 100644 --- a/src/Apps/W1/Quality Management/app/src/Integration/Manufacturing/QltyProdGenRuleWizard.Page.al +++ b/src/Apps/W1/Quality Management/app/src/Integration/Manufacturing/QltyProdGenRuleWizard.Page.al @@ -581,7 +581,6 @@ page 20462 "Qlty. Prod. Gen. Rule Wizard" YouMustChooseATemplateFirstMsg: Label 'Please choose a template before proceeding.'; WorkCenterNoErr: Label 'This Work Center No. filter needs an adjustment. %1', Comment = '%1 = Text of the original error message'; RuleAlreadyThereQst: Label 'You already have at least one rule with these same conditions. Are you sure you want to proceed?'; - FilterLengthErr: Label 'This filter is too long and must be less than %1 characters.', Comment = '%1=filter string maximum length'; trigger OnInit(); begin From 55ae25a5256dbb2cdc010e37ecd4babb32e640de Mon Sep 17 00:00:00 2001 From: tomasevicstefan Date: Mon, 22 Dec 2025 23:08:25 +0100 Subject: [PATCH 4/9] Remove redundant filter length error message from Quality Management wizards --- .../src/Integration/Receiving/QltyRecGenRuleWizard.Page.al | 1 - .../src/Integration/Warehouse/QltyWhseGenRuleWizard.Page.al | 5 ++--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/Apps/W1/Quality Management/app/src/Integration/Receiving/QltyRecGenRuleWizard.Page.al b/src/Apps/W1/Quality Management/app/src/Integration/Receiving/QltyRecGenRuleWizard.Page.al index 917299d8cb..2b7ab479e8 100644 --- a/src/Apps/W1/Quality Management/app/src/Integration/Receiving/QltyRecGenRuleWizard.Page.al +++ b/src/Apps/W1/Quality Management/app/src/Integration/Receiving/QltyRecGenRuleWizard.Page.al @@ -666,7 +666,6 @@ page 20461 "Qlty. Rec. Gen. Rule Wizard" InventoryPostingGroupErr: Label 'This Inventory Posting Group filter needs an adjustment. %1', Comment = '%1 = Text of the original error message'; AlreadyThereQst: Label 'You already have at least one rule with these same conditions. Are you sure you want to proceed?'; YouMustChooseATemplateFirstMsg: Label 'Please choose a template before proceeding.'; - FilterLengthErr: Label 'This filter is too long and must be less than %1 characters.', Comment = '%1=filter string maximum length'; trigger OnInit(); begin diff --git a/src/Apps/W1/Quality Management/app/src/Integration/Warehouse/QltyWhseGenRuleWizard.Page.al b/src/Apps/W1/Quality Management/app/src/Integration/Warehouse/QltyWhseGenRuleWizard.Page.al index 5b39349bb1..d6f5592211 100644 --- a/src/Apps/W1/Quality Management/app/src/Integration/Warehouse/QltyWhseGenRuleWizard.Page.al +++ b/src/Apps/W1/Quality Management/app/src/Integration/Warehouse/QltyWhseGenRuleWizard.Page.al @@ -345,8 +345,8 @@ page 20460 "Qlty. Whse. Gen. Rule Wizard" InventoryPostingGroupCode: Code[20]; VendorNoFilter: Code[20]; QltyWarehouseTrigger: Enum "Qlty. Warehouse Trigger"; - WhseRule: Text[400]; - ItemRule: Text[400]; + WhseRule: Text; + ItemRule: Text; IsIsBackEnabledd: Boolean; IsIsNextEnabledd: Boolean; IsIsFinishEnabledd: Boolean; @@ -367,7 +367,6 @@ page 20460 "Qlty. Whse. Gen. Rule Wizard" YourUserDoesNotAppearToBeConfiguredAsAWarehouseEmployeeMsg: Label 'Your user id of %1 does not appear to be configured as a warehouse employee. Navigate to Warehouse Employees and create appropriate warehouse employee configuration before using this screen.', Comment = '%1=the user id.'; YouMustChooseATemplateFirstMsg: Label 'Please choose a template before proceeding.'; AlreadyThereQst: Label 'You already have at least one rule with these same conditions. Are you sure you want to proceed?'; - FilterLengthErr: Label 'This filter is too long and must be less than %1 characters.', Comment = '%1=filter string maximum length'; trigger OnInit(); begin From 75f2811c76e123ef2ee33985a8e2fb8be66bcc0e Mon Sep 17 00:00:00 2001 From: tomasevicstefan Date: Mon, 22 Dec 2025 23:09:53 +0100 Subject: [PATCH 5/9] Refactor item filter text variables to remove length constraints in Qlty. Prod. Gen. Rule Wizard --- .../Integration/Manufacturing/QltyProdGenRuleWizard.Page.al | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Apps/W1/Quality Management/app/src/Integration/Manufacturing/QltyProdGenRuleWizard.Page.al b/src/Apps/W1/Quality Management/app/src/Integration/Manufacturing/QltyProdGenRuleWizard.Page.al index 915e3ba20f..37cc979859 100644 --- a/src/Apps/W1/Quality Management/app/src/Integration/Manufacturing/QltyProdGenRuleWizard.Page.al +++ b/src/Apps/W1/Quality Management/app/src/Integration/Manufacturing/QltyProdGenRuleWizard.Page.al @@ -552,9 +552,9 @@ page 20462 "Qlty. Prod. Gen. Rule Wizard" InventoryPostingGroupCode: Code[20]; QltyProductionTrigger: Enum "Qlty. Production Trigger"; QltyAssemblyTrigger: Enum "Qlty. Assembly Trigger"; - ProdOrderRoutingLineRuleFilter: Text[400]; - PostedAssemblyOrderRuleFilter: Text[400]; - ItemRuleFilter: Text[400]; + ProdOrderRoutingLineRuleFilter: Text; + PostedAssemblyOrderRuleFilter: Text; + ItemRuleFilter: Text; IsBackEnabledd: Boolean; IsNextEnabledd: Boolean; IsFinishEnabledd: Boolean; From 0547d5b3e13b5a93bdf56a6cb221614b6a9d074b Mon Sep 17 00:00:00 2001 From: tomasevicstefan Date: Mon, 22 Dec 2025 23:18:29 +0100 Subject: [PATCH 6/9] Enhance item filter validation in Qlty. Prod. Gen. Rule Wizard to prevent duplicate entries --- .../Manufacturing/QltyProdGenRuleWizard.Page.al | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Apps/W1/Quality Management/app/src/Integration/Manufacturing/QltyProdGenRuleWizard.Page.al b/src/Apps/W1/Quality Management/app/src/Integration/Manufacturing/QltyProdGenRuleWizard.Page.al index 37cc979859..7f3a661b30 100644 --- a/src/Apps/W1/Quality Management/app/src/Integration/Manufacturing/QltyProdGenRuleWizard.Page.al +++ b/src/Apps/W1/Quality Management/app/src/Integration/Manufacturing/QltyProdGenRuleWizard.Page.al @@ -818,9 +818,14 @@ page 20462 "Qlty. Prod. Gen. Rule Wizard" ExistingQltyInspectionGenRule.SetRange("Template Code", QltyInspectionGenRule."Template Code"); ExistingQltyInspectionGenRule.SetRange("Source Table No.", QltyInspectionGenRule."Source Table No."); - if ExistingQltyInspectionGenRule.Count() > 1 then - if not Confirm(RuleAlreadyThereQst) then - Error(''); + ExistingQltyInspectionGenRule.SetFilter("Entry No.", '<>%1', QltyInspectionGenRule."Entry No."); + if ExistingQltyInspectionGenRule.FindSet() then + repeat + if (ExistingQltyInspectionGenRule.GetConditionFilter() = QltyInspectionGenRule.GetConditionFilter()) and + (ExistingQltyInspectionGenRule.GetItemFilter() = QltyInspectionGenRule.GetItemFilter()) then + if not Confirm(RuleAlreadyThereQst) then + Error(''); + until ExistingQltyInspectionGenRule.Next() = 0; CurrPage.Close(); end; From aa4a87c079d5bde4f05b7573e824fb9cf1f591d9 Mon Sep 17 00:00:00 2001 From: tomasevicstefan Date: Tue, 23 Dec 2025 08:35:27 +0100 Subject: [PATCH 7/9] Refactor item filter procedures to replace length-constrained methods with flexible alternatives --- .../QltyProdGenRuleWizard.Page.al | 12 ++++---- .../Receiving/QltyRecGenRuleWizard.Page.al | 30 +++++++++---------- .../Warehouse/QltyWhseGenRuleWizard.Page.al | 8 ++--- .../Utilities/QltyFilterHelpers.Codeunit.al | 14 --------- 4 files changed, 25 insertions(+), 39 deletions(-) diff --git a/src/Apps/W1/Quality Management/app/src/Integration/Manufacturing/QltyProdGenRuleWizard.Page.al b/src/Apps/W1/Quality Management/app/src/Integration/Manufacturing/QltyProdGenRuleWizard.Page.al index 7f3a661b30..cd361c74bc 100644 --- a/src/Apps/W1/Quality Management/app/src/Integration/Manufacturing/QltyProdGenRuleWizard.Page.al +++ b/src/Apps/W1/Quality Management/app/src/Integration/Manufacturing/QltyProdGenRuleWizard.Page.al @@ -764,10 +764,10 @@ page 20462 "Qlty. Prod. Gen. Rule Wizard" local procedure CleanUpWhereClause() begin if IsProductionOrder then - ProdOrderRoutingLineRuleFilter := QltyFilterHelpers.CleanUpWhereClause400(ProdOrderRoutingLineRuleFilter); + ProdOrderRoutingLineRuleFilter := QltyFilterHelpers.CleanUpWhereClause(ProdOrderRoutingLineRuleFilter); if IsAssemblyOrder then - PostedAssemblyOrderRuleFilter := QltyFilterHelpers.CleanUpWhereClause400(PostedAssemblyOrderRuleFilter); - ItemRuleFilter := QltyFilterHelpers.CleanUpWhereClause400(ItemRuleFilter); + PostedAssemblyOrderRuleFilter := QltyFilterHelpers.CleanUpWhereClause(PostedAssemblyOrderRuleFilter); + ItemRuleFilter := QltyFilterHelpers.CleanUpWhereClause(ItemRuleFilter); end; local procedure BackAction(); @@ -879,18 +879,18 @@ page 20462 "Qlty. Prod. Gen. Rule Wizard" TempProdOrderRoutingLine.SetFilter("To-Production Bin Code", ToBinCodeFilter); TempProdOrderRoutingLine.SetFilter("Operation No.", OperationNo); TempProdOrderRoutingLine.SetFilter("Description", DescriptionPattern); - ProdOrderRoutingLineRuleFilter := QltyFilterHelpers.CleanUpWhereClause400(TempProdOrderRoutingLine.GetView(true)); + ProdOrderRoutingLineRuleFilter := QltyFilterHelpers.CleanUpWhereClause(TempProdOrderRoutingLine.GetView(true)); end else begin TempPostedAssemblyHeader.SetFilter("Location Code", LocationCodeFilter); TempPostedAssemblyHeader.SetFilter(Description, DescriptionPattern); - PostedAssemblyOrderRuleFilter := QltyFilterHelpers.CleanUpWhereClause400(TempPostedAssemblyHeader.GetView(true)); + PostedAssemblyOrderRuleFilter := QltyFilterHelpers.CleanUpWhereClause(TempPostedAssemblyHeader.GetView(true)); end; TempItem.SetFilter("No.", ItemNoFilter); TempItem.SetFilter("Item Category Code", CategoryCodeFilter); TempItem.SetFilter("Inventory Posting Group", InventoryPostingGroupCode); - ItemRuleFilter := QltyFilterHelpers.CleanUpWhereClause400(TempItem.GetView(true)); + ItemRuleFilter := QltyFilterHelpers.CleanUpWhereClause(TempItem.GetView(true)); CleanUpWhereClause(); end; diff --git a/src/Apps/W1/Quality Management/app/src/Integration/Receiving/QltyRecGenRuleWizard.Page.al b/src/Apps/W1/Quality Management/app/src/Integration/Receiving/QltyRecGenRuleWizard.Page.al index 2b7ab479e8..927408c852 100644 --- a/src/Apps/W1/Quality Management/app/src/Integration/Receiving/QltyRecGenRuleWizard.Page.al +++ b/src/Apps/W1/Quality Management/app/src/Integration/Receiving/QltyRecGenRuleWizard.Page.al @@ -634,11 +634,11 @@ page 20461 "Qlty. Rec. Gen. Rule Wizard" QltyTransferTrigger: Enum "Qlty. Transfer Trigger"; QltyWhseReceiveTrigger: Enum "Qlty. Whse. Receive Trigger"; QltySalesReturnTrigger: Enum "Qlty. Sales Return Trigger"; - PurchaseLineRule: Text[400]; - SalesReturnLineRule: Text[400]; - ItemRule: Text[400]; - TransferLineRule: Text[400]; - WarehouseJournalLineRule: Text[400]; + PurchaseLineRule: Text; + SalesReturnLineRule: Text; + ItemRule: Text; + TransferLineRule: Text; + WarehouseJournalLineRule: Text; IsReturnReceipt: Boolean; IsPurchaseLine: Boolean; IsIsBackEnabledd: Boolean; @@ -842,18 +842,18 @@ page 20461 "Qlty. Rec. Gen. Rule Wizard" local procedure CleanUpWhereClause() begin if IsPurchaseLine then - PurchaseLineRule := QltyFilterHelpers.CleanUpWhereClause400(PurchaseLineRule); + PurchaseLineRule := QltyFilterHelpers.CleanUpWhereClause(PurchaseLineRule); if IsReturnReceipt then - SalesReturnLineRule := QltyFilterHelpers.CleanUpWhereClause400(SalesReturnLineRule); + SalesReturnLineRule := QltyFilterHelpers.CleanUpWhereClause(SalesReturnLineRule); if IsTransferLine then - TransferLineRule := QltyFilterHelpers.CleanUpWhereClause400(TransferLineRule); + TransferLineRule := QltyFilterHelpers.CleanUpWhereClause(TransferLineRule); if IsWarehouseReceipt then - WarehouseJournalLineRule := QltyFilterHelpers.CleanUpWhereClause400(WarehouseJournalLineRule); + WarehouseJournalLineRule := QltyFilterHelpers.CleanUpWhereClause(WarehouseJournalLineRule); - ItemRule := QltyFilterHelpers.CleanUpWhereClause400(ItemRule); + ItemRule := QltyFilterHelpers.CleanUpWhereClause(ItemRule); end; local procedure BackAction(); @@ -998,20 +998,20 @@ page 20461 "Qlty. Rec. Gen. Rule Wizard" TempPurchaseLine.SetFilter("Location Code", LocationCodeFilter); TempPurchaseLine.SetFilter("Buy-from Vendor No.", VendorNoFilter); TempPurchaseLine.SetFilter("Purchasing Code", PurchasingCode); - PurchaseLineRule := QltyFilterHelpers.CleanUpWhereClause400(TempPurchaseLine.GetView(true)); + PurchaseLineRule := QltyFilterHelpers.CleanUpWhereClause(TempPurchaseLine.GetView(true)); end; if IsReturnReceipt then begin TempReturnSalesLine.SetFilter("Location Code", LocationCodeFilter); TempReturnSalesLine.SetFilter("Return Reason Code", ReturnReasonCode); TempReturnSalesLine.SetFilter("Sell-to Customer No.", CustomerNoFilter); - SalesReturnLineRule := QltyFilterHelpers.CleanUpWhereClause400(TempReturnSalesLine.GetView(true)); + SalesReturnLineRule := QltyFilterHelpers.CleanUpWhereClause(TempReturnSalesLine.GetView(true)); end; if IsTransferLine then begin TempTransferLine.SetFilter("Transfer-to Code", TransferToCode); TempTransferLine.SetFilter("Transfer-from Code", TransferFromCode); - TransferLineRule := QltyFilterHelpers.CleanUpWhereClause400(TempTransferLine.GetView(true)); + TransferLineRule := QltyFilterHelpers.CleanUpWhereClause(TempTransferLine.GetView(true)); end; if IsWarehouseReceipt then begin @@ -1019,14 +1019,14 @@ page 20461 "Qlty. Rec. Gen. Rule Wizard" TempWarehouseJournalLine.SetFilter("Location Code", LocationCodeFilter); TempWarehouseJournalLine.SetFilter("To Zone Code", ToZoneCodeFilter); TempWarehouseJournalLine.SetFilter("To Bin Code", ToBinCodeFilter); - WarehouseJournalLineRule := QltyFilterHelpers.CleanUpWhereClause400(TempWarehouseJournalLine.GetView(true)); + WarehouseJournalLineRule := QltyFilterHelpers.CleanUpWhereClause(TempWarehouseJournalLine.GetView(true)); end; TempItem.SetFilter("No.", ItemNoFilter); TempItem.SetFilter("Item Category Code", CategoryCodeFilter); TempItem.SetFilter("Inventory Posting Group", InventoryPostingGroupCode); - ItemRule := QltyFilterHelpers.CleanUpWhereClause400(TempItem.GetView(true)); + ItemRule := QltyFilterHelpers.CleanUpWhereClause(TempItem.GetView(true)); CleanUpWhereClause(); end; diff --git a/src/Apps/W1/Quality Management/app/src/Integration/Warehouse/QltyWhseGenRuleWizard.Page.al b/src/Apps/W1/Quality Management/app/src/Integration/Warehouse/QltyWhseGenRuleWizard.Page.al index d6f5592211..f2c1ef5034 100644 --- a/src/Apps/W1/Quality Management/app/src/Integration/Warehouse/QltyWhseGenRuleWizard.Page.al +++ b/src/Apps/W1/Quality Management/app/src/Integration/Warehouse/QltyWhseGenRuleWizard.Page.al @@ -615,21 +615,21 @@ page 20460 "Qlty. Whse. Gen. Rule Wizard" TempWarehouseJournalLine.SetFilter("Location Code", LocationCodeFilter); TempWarehouseJournalLine.SetFilter("To Zone Code", ToZoneCodeFilter); TempWarehouseJournalLine.SetFilter("To Bin Code", ToBinCodeFilter); - WhseRule := QltyFilterHelpers.CleanUpWhereClause400(TempWarehouseJournalLine.GetView(true)); + WhseRule := QltyFilterHelpers.CleanUpWhereClause(TempWarehouseJournalLine.GetView(true)); TempItem.SetFilter("No.", ItemNoFilter); TempItem.SetFilter("Item Category Code", CategoryCodeFilter); TempItem.SetFilter("Inventory Posting Group", InventoryPostingGroupCode); TempItem.SetFilter("Vendor No.", VendorNoFilter); - ItemRule := QltyFilterHelpers.CleanUpWhereClause400(TempItem.GetView(true)); + ItemRule := QltyFilterHelpers.CleanUpWhereClause(TempItem.GetView(true)); CleanUpWhereClause(); end; local procedure CleanUpWhereClause() begin - WhseRule := QltyFilterHelpers.CleanUpWhereClause400(WhseRule); - ItemRule := QltyFilterHelpers.CleanUpWhereClause400(ItemRule); + WhseRule := QltyFilterHelpers.CleanUpWhereClause(WhseRule); + ItemRule := QltyFilterHelpers.CleanUpWhereClause(ItemRule); end; local procedure BackAction(); diff --git a/src/Apps/W1/Quality Management/app/src/Utilities/QltyFilterHelpers.Codeunit.al b/src/Apps/W1/Quality Management/app/src/Utilities/QltyFilterHelpers.Codeunit.al index f89157290d..319a587877 100644 --- a/src/Apps/W1/Quality Management/app/src/Utilities/QltyFilterHelpers.Codeunit.al +++ b/src/Apps/W1/Quality Management/app/src/Utilities/QltyFilterHelpers.Codeunit.al @@ -749,11 +749,6 @@ codeunit 20403 "Qlty. Filter Helpers" ResultText := CopyStr(CleanUpWhereClause(Input), 1, MaxStrLen(ResultText)); end; - procedure CleanUpWhereClause400(Input: Text) ResultText: Text[400] - begin - ResultText := CopyStr(CleanUpWhereClause(Input), 1, MaxStrLen(ResultText)); - end; - procedure CleanUpWhereClause(Input: Text) ResultText: Text var FindWhere: Integer; @@ -815,15 +810,6 @@ codeunit 20403 "Qlty. Filter Helpers" until TempFilterItemAttributesBuffer.Next() = 0; end; - internal procedure BuildItemAttributeFilter400(var ItemAttributeFilter: Text[400]) - var - FullItemAttributeFilter: Text; - begin - FullItemAttributeFilter := ItemAttributeFilter; - BuildItemAttributeFilter(FullItemAttributeFilter); - ItemAttributeFilter := CopyStr(FullItemAttributeFilter, 1, MaxStrLen(ItemAttributeFilter)); - end; - internal procedure BuildItemAttributeFilter(var ItemAttributeFilter: Text) var TempFilterItemAttributesBuffer: Record "Filter Item Attributes Buffer" temporary; From e7cf469dae5569fb0483dda43b19c7b0c28951db Mon Sep 17 00:00:00 2001 From: tomasevicstefan Date: Tue, 23 Dec 2025 08:38:08 +0100 Subject: [PATCH 8/9] Refactor CleanUpWhereClause method to remove length constraint in filter validation --- .../test/src/QltyTestsFilterHelpers.Codeunit.al | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Apps/W1/Quality Management/test/src/QltyTestsFilterHelpers.Codeunit.al b/src/Apps/W1/Quality Management/test/src/QltyTestsFilterHelpers.Codeunit.al index 3f537694bf..be238d88db 100644 --- a/src/Apps/W1/Quality Management/test/src/QltyTestsFilterHelpers.Codeunit.al +++ b/src/Apps/W1/Quality Management/test/src/QltyTestsFilterHelpers.Codeunit.al @@ -2048,7 +2048,7 @@ codeunit 139962 "Qlty. Tests - Filter Helpers" // [SCENARIO] Validate where clause cleanup reducing length to 400 characters or less // [WHEN] CleanUpWhereClause400 is called with input where clause - Output := QltyFilterHelpers.CleanUpWhereClause400(InputWhereClause400Tok); + Output := QltyFilterHelpers.CleanUpWhereClause(InputWhereClause400Tok); // [THEN] The output length is 400 characters or less LibraryAssert.IsTrue(StrLen(Output) <= 400, 'Should reduce length to 250 characters or less'); From 9b1e77e04183c0df93844169b3bf0fa0f8b3d389 Mon Sep 17 00:00:00 2001 From: tomasevicstefan Date: Tue, 23 Dec 2025 09:32:18 +0100 Subject: [PATCH 9/9] Refactor item filter update procedures to improve clarity and maintainability --- .../test/src/QltyTestsGenerationRule.Codeunit.al | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Apps/W1/Quality Management/test/src/QltyTestsGenerationRule.Codeunit.al b/src/Apps/W1/Quality Management/test/src/QltyTestsGenerationRule.Codeunit.al index 7a1175c3be..99835cd9ab 100644 --- a/src/Apps/W1/Quality Management/test/src/QltyTestsGenerationRule.Codeunit.al +++ b/src/Apps/W1/Quality Management/test/src/QltyTestsGenerationRule.Codeunit.al @@ -239,7 +239,9 @@ codeunit 139955 "Qlty. Tests - Generation Rule" // [GIVEN] The generation rule is updated with an item filter QltyInspectionGenRule.FindFirst(); QltyInspectionGenRule.SetItemFilter(StrSubstNo(ItemFilterTok, Item."No.")); +#pragma warning disable AA0214 QltyInspectionGenRule.Modify(); +#pragma warning restore AA0214 // [WHEN] A manual rule search is performed for Purchase Line with the item RecordRef.Open(Database::"Purchase Line"); @@ -276,7 +278,9 @@ codeunit 139955 "Qlty. Tests - Generation Rule" // [GIVEN] The generation rule is updated with an item attribute filter QltyInspectionGenRule.FindFirst(); QltyInspectionGenRule.SetItemAttributeFilter(StrSubstNo(ItemAttributeFilterTok, ItemAttribute.Name)); +#pragma warning disable AA0214 QltyInspectionGenRule.Modify(); +#pragma warning restore AA0214 // [WHEN] A manual rule search is performed for Purchase Line with the item RecordRef.Open(Database::"Purchase Line");