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..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 (ThisQltyInspectionGenRule."Item Filter" = '') 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 634798ed01..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,14 +209,15 @@ 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."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; @@ -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 bedb88468d..b9f0030baf 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]) { @@ -141,15 +139,13 @@ 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]) + 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") { @@ -288,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 @@ -353,17 +348,137 @@ 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; + /// + /// 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; + + /// + /// 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. /// @@ -373,13 +488,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; @@ -390,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; /// @@ -591,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; @@ -622,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; @@ -648,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); @@ -674,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); @@ -706,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 c6f6c12312..22a686d114 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,28 +77,58 @@ 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); 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") + 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") @@ -376,6 +406,9 @@ page 20405 "Qlty. Inspection Gen. Rules" WhseReceiveStyle: Text; 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'; @@ -426,6 +459,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 76f2f474e5..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 @@ -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,14 +943,14 @@ 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; 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; @@ -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 534eae1efe..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 @@ -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; @@ -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 @@ -725,10 +724,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(); @@ -738,9 +737,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(); @@ -751,10 +750,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(); @@ -765,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(); @@ -800,7 +799,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,22 +807,25 @@ 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; 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(''); + 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; @@ -843,17 +845,20 @@ 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; - TempItem.SetView(TempQltyInspectionGenRule."Item Filter"); + if TempQltyInspectionGenRule.HasItemFilter() then + TempItem.SetView(TempQltyInspectionGenRule.GetItemFilter()); UpdateTableVariablesFromRecordFilters(); TemplateCode := QltyInspectionGenRule.GetTemplateCodeFromRecordOrFilter(false); @@ -874,28 +879,19 @@ 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.CleanUpWhereClause(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.CleanUpWhereClause(TempPostedAssemblyHeader.GetView(true)); end; TempItem.SetFilter("No.", ItemNoFilter); 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.CleanUpWhereClause(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")); - - 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..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; @@ -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 @@ -775,10 +774,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 +788,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 +802,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 +816,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(); @@ -830,9 +829,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(); @@ -843,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(); @@ -890,7 +889,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 +898,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 +907,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 +916,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; @@ -925,13 +924,11 @@ 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(''); @@ -953,34 +950,39 @@ 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; IsTransferLine := false; end; - TempItem.SetView(TempQltyInspectionGenRule."Item Filter"); + if TempQltyInspectionGenRule.HasItemFilter() then + TempItem.SetView(TempQltyInspectionGenRule.GetItemFilter()); UpdateTableVariablesFromRecordFilters(); TemplateCode := QltyInspectionGenRule.GetTemplateCodeFromRecordOrFilter(false); @@ -996,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 := CopyStr(QltyFilterHelpers.CleanUpWhereClause400(TempPurchaseLine.GetView(true)), 1, MaxStrLen(TempQltyInspectionGenRule."Condition Filter")); + 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 := CopyStr(QltyFilterHelpers.CleanUpWhereClause400(TempReturnSalesLine.GetView(true)), 1, MaxStrLen(TempQltyInspectionGenRule."Condition Filter")); + SalesReturnLineRule := QltyFilterHelpers.CleanUpWhereClause(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.CleanUpWhereClause(TempTransferLine.GetView(true)); end; if IsWarehouseReceipt then begin @@ -1017,28 +1019,16 @@ 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.CleanUpWhereClause(TempWarehouseJournalLine.GetView(true)); end; TempItem.SetFilter("No.", ItemNoFilter); 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.CleanUpWhereClause(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")); - - 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..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 @@ -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 @@ -580,10 +579,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(); @@ -593,9 +592,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(); @@ -616,27 +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 := CopyStr(QltyFilterHelpers.CleanUpWhereClause400(TempWarehouseJournalLine.GetView(true)), 1, MaxStrLen(TempQltyInspectionGenRule."Condition Filter")); + 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 := CopyStr(QltyFilterHelpers.CleanUpWhereClause400(TempItem.GetView(true)), 1, MaxStrLen(TempQltyInspectionGenRule."Item Filter")); + ItemRule := QltyFilterHelpers.CleanUpWhereClause(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() begin - WhseRule := QltyFilterHelpers.CleanUpWhereClause400(WhseRule); - ItemRule := QltyFilterHelpers.CleanUpWhereClause400(ItemRule); + WhseRule := QltyFilterHelpers.CleanUpWhereClause(WhseRule); + ItemRule := QltyFilterHelpers.CleanUpWhereClause(ItemRule); end; local procedure BackAction(); @@ -666,8 +659,8 @@ 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."Item Filter" := ItemRule; + QltyInspectionGenRule.SetConditionFilter(WhseRule); + QltyInspectionGenRule.SetItemFilter(ItemRule); QltyInspectionGenRule.SetIntentAndDefaultTriggerValuesFromSetup(); QltyInspectionGenRule."Warehouse Movement Trigger" := QltyWarehouseTrigger; QltyInspectionGenRule.Modify(); @@ -677,8 +670,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(''); @@ -698,8 +689,10 @@ page 20460 "Qlty. Whse. Gen. Rule Wizard" TempQltyInspectionGenRule := QltyInspectionGenRule; Clear(TempWarehouseJournalLine); Clear(TempItem); - TempWarehouseJournalLine.SetView(TempQltyInspectionGenRule."Condition Filter"); - TempItem.SetView(TempQltyInspectionGenRule."Item Filter"); + if TempQltyInspectionGenRule.HasConditionFilter() then + TempWarehouseJournalLine.SetView(TempQltyInspectionGenRule.GetConditionFilter()); + if TempQltyInspectionGenRule.HasItemFilter() then + TempItem.SetView(TempQltyInspectionGenRule.GetItemFilter()); UpdateTableVariablesFromRecordFilters(); TemplateCode := QltyInspectionGenRule.GetTemplateCodeFromRecordOrFilter(false); 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; 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'); 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..99835cd9ab 100644 --- a/src/Apps/W1/Quality Management/test/src/QltyTestsGenerationRule.Codeunit.al +++ b/src/Apps/W1/Quality Management/test/src/QltyTestsGenerationRule.Codeunit.al @@ -238,8 +238,10 @@ 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.")); +#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"); @@ -275,8 +277,10 @@ 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)); +#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"); 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..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 @@ -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/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); 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();