diff --git a/src/Layers/CH/BaseApp/Sales/Document/BlanketSalesOrderSubform.Page.al b/src/Layers/CH/BaseApp/Sales/Document/BlanketSalesOrderSubform.Page.al index 9fb3aae5970..6745ae243f1 100644 --- a/src/Layers/CH/BaseApp/Sales/Document/BlanketSalesOrderSubform.Page.al +++ b/src/Layers/CH/BaseApp/Sales/Document/BlanketSalesOrderSubform.Page.al @@ -1225,11 +1225,14 @@ page 508 "Blanket Sales Order Subform" end; local procedure UpdateTypeText() + var + RecRef: RecordRef; begin if not TypeAsTextFieldVisible then exit; - TypeAsText := Rec.FormatType(); + RecRef.GetTable(Rec); + TypeAsText := TempOptionLookupBuffer.FormatOption(RecRef.Field(Rec.FieldNo(Type))); end; /// diff --git a/src/Layers/CH/Tests/Misc/OptionLookupBufferTest.Codeunit.al b/src/Layers/CH/Tests/Misc/OptionLookupBufferTest.Codeunit.al index a3fec1db677..1b3c44696c1 100644 --- a/src/Layers/CH/Tests/Misc/OptionLookupBufferTest.Codeunit.al +++ b/src/Layers/CH/Tests/Misc/OptionLookupBufferTest.Codeunit.al @@ -244,6 +244,36 @@ until TempOptionLookupBuffer.Next() = 0; end; + [Test] + [Scope('OnPrem')] + procedure BlanketSalesOrderSupportsLongLineTypeCaption() + var + Customer: Record Customer; + SalesLine: Record "Sales Line"; + OptionLookupBufferTest: Codeunit "Option Lookup Buffer Test"; + BlanketSalesOrder: TestPage "Blanket Sales Order"; + LineTypeCaption: Text[30]; + begin + // [SCENARIO 644921] A line type caption longer than 20 characters can be selected on a blanket sales order + Initialize(); + + // [GIVEN] A custom line type with a long caption and a blanket sales order + BindSubscription(OptionLookupBufferTest); + LineTypeCaption := Format(SalesLine.Type::Test_Custom1); + Assert.IsTrue(StrLen(LineTypeCaption) > 20, 'The test line type caption must be longer than 20 characters.'); + LibrarySales.CreateCustomer(Customer); + BlanketSalesOrder.OpenNew(); + BlanketSalesOrder."Sell-to Customer Name".SetValue(Customer.Name); + + // [WHEN] Selecting the custom line type + BlanketSalesOrder.SalesLines.First(); + BlanketSalesOrder.SalesLines.FilteredTypeField.SetValue(LineTypeCaption); + + // [THEN] The complete caption is displayed + BlanketSalesOrder.SalesLines.FilteredTypeField.AssertEquals(LineTypeCaption); + BlanketSalesOrder.Close(); + end; + [Test] [Scope('OnPrem')] procedure SalesInvoiceSubtypeAutoComplete() diff --git a/src/Layers/NA/BaseApp/Sales/Document/BlanketSalesOrderSubform.Page.al b/src/Layers/NA/BaseApp/Sales/Document/BlanketSalesOrderSubform.Page.al index 1c5a2c6d5e0..73daf8e33d2 100644 --- a/src/Layers/NA/BaseApp/Sales/Document/BlanketSalesOrderSubform.Page.al +++ b/src/Layers/NA/BaseApp/Sales/Document/BlanketSalesOrderSubform.Page.al @@ -1221,11 +1221,14 @@ page 508 "Blanket Sales Order Subform" end; local procedure UpdateTypeText() + var + RecRef: RecordRef; begin if not TypeAsTextFieldVisible then exit; - TypeAsText := Rec.FormatType(); + RecRef.GetTable(Rec); + TypeAsText := TempOptionLookupBuffer.FormatOption(RecRef.Field(Rec.FieldNo(Type))); end; /// diff --git a/src/Layers/NO/BaseApp/Sales/Document/BlanketSalesOrderSubform.Page.al b/src/Layers/NO/BaseApp/Sales/Document/BlanketSalesOrderSubform.Page.al index 01b1d2089da..a7faf6868ea 100644 --- a/src/Layers/NO/BaseApp/Sales/Document/BlanketSalesOrderSubform.Page.al +++ b/src/Layers/NO/BaseApp/Sales/Document/BlanketSalesOrderSubform.Page.al @@ -1228,11 +1228,14 @@ page 508 "Blanket Sales Order Subform" end; local procedure UpdateTypeText() + var + RecRef: RecordRef; begin if not TypeAsTextFieldVisible then exit; - TypeAsText := Rec.FormatType(); + RecRef.GetTable(Rec); + TypeAsText := TempOptionLookupBuffer.FormatOption(RecRef.Field(Rec.FieldNo(Type))); end; /// diff --git a/src/Layers/W1/BaseApp/Sales/Document/BlanketSalesOrderSubform.Page.al b/src/Layers/W1/BaseApp/Sales/Document/BlanketSalesOrderSubform.Page.al index 20938057f3a..a735d28057f 100644 --- a/src/Layers/W1/BaseApp/Sales/Document/BlanketSalesOrderSubform.Page.al +++ b/src/Layers/W1/BaseApp/Sales/Document/BlanketSalesOrderSubform.Page.al @@ -1217,11 +1217,14 @@ page 508 "Blanket Sales Order Subform" end; local procedure UpdateTypeText() + var + RecRef: RecordRef; begin if not TypeAsTextFieldVisible then exit; - TypeAsText := Rec.FormatType(); + RecRef.GetTable(Rec); + TypeAsText := TempOptionLookupBuffer.FormatOption(RecRef.Field(Rec.FieldNo(Type))); end; /// diff --git a/src/Layers/W1/Tests/Misc/MockSalesLineTypeCustom.EnumExt.al b/src/Layers/W1/Tests/Misc/MockSalesLineTypeCustom.EnumExt.al index 9c8ec905881..dbb4daabde7 100644 --- a/src/Layers/W1/Tests/Misc/MockSalesLineTypeCustom.EnumExt.al +++ b/src/Layers/W1/Tests/Misc/MockSalesLineTypeCustom.EnumExt.al @@ -2,7 +2,7 @@ enumextension 134645 "Mock Sales Line Type - Custom" extends "Sales Line Type" { value(134645; Test_Custom1) { - Caption = 'Test_Custom1'; + Caption = 'Test Long Line Type Caption', Locked = true; } value(134647; Test_Custom2) { diff --git a/src/Layers/W1/Tests/Misc/OptionLookupBufferTest.Codeunit.al b/src/Layers/W1/Tests/Misc/OptionLookupBufferTest.Codeunit.al index 41456338359..4713230cf07 100644 --- a/src/Layers/W1/Tests/Misc/OptionLookupBufferTest.Codeunit.al +++ b/src/Layers/W1/Tests/Misc/OptionLookupBufferTest.Codeunit.al @@ -244,6 +244,36 @@ codeunit 134645 "Option Lookup Buffer Test" until TempOptionLookupBuffer.Next() = 0; end; + [Test] + [Scope('OnPrem')] + procedure BlanketSalesOrderSupportsLongLineTypeCaption() + var + Customer: Record Customer; + SalesLine: Record "Sales Line"; + OptionLookupBufferTest: Codeunit "Option Lookup Buffer Test"; + BlanketSalesOrder: TestPage "Blanket Sales Order"; + LineTypeCaption: Text[30]; + begin + // [SCENARIO 644921] A line type caption longer than 20 characters can be selected on a blanket sales order + Initialize(); + + // [GIVEN] A custom line type with a long caption and a blanket sales order + BindSubscription(OptionLookupBufferTest); + LineTypeCaption := Format(SalesLine.Type::Test_Custom1); + Assert.IsTrue(StrLen(LineTypeCaption) > 20, 'The test line type caption must be longer than 20 characters.'); + LibrarySales.CreateCustomer(Customer); + BlanketSalesOrder.OpenNew(); + BlanketSalesOrder."Sell-to Customer Name".SetValue(Customer.Name); + + // [WHEN] Selecting the custom line type + BlanketSalesOrder.SalesLines.First(); + BlanketSalesOrder.SalesLines.FilteredTypeField.SetValue(LineTypeCaption); + + // [THEN] The complete caption is displayed + BlanketSalesOrder.SalesLines.FilteredTypeField.AssertEquals(LineTypeCaption); + BlanketSalesOrder.Close(); + end; + [Test] [Scope('OnPrem')] procedure SalesInvoiceSubtypeAutoComplete()