1
+ namespace Microsoft. Integration. Shopify;
2
+
3
+ codeunit 30316 "Shpfy Mtfld Type Dimension" implements "Shpfy IMetafield Type"
4
+ {
5
+ var
6
+ DimensionJsonTemplateTxt: Label ' {"value": %1, "unit": "%2"}' , Locked = true;
7
+
8
+ procedure HasAssistEdit() : Boolean
9
+ begin
10
+ exit ( true) ;
11
+ end ;
12
+
13
+ procedure IsValidValue( Value : Text ) : Boolean
14
+ var
15
+ Dimension: Decimal ;
16
+ Unit: Enum "Shpfy Metafield Dimension Type";
17
+ begin
18
+ exit ( TryExtractValues( Value , Dimension, Unit)) ;
19
+ end ;
20
+
21
+ procedure AssistEdit( var Value : Text [2048 ]) : Boolean
22
+ var
23
+ MetafieldAssistEdit: Page "Shpfy Metafield Assist Edit";
24
+ Dimension: Decimal ;
25
+ Unit: Enum "Shpfy Metafield Dimension Type";
26
+ begin
27
+ if Value <> ' ' then
28
+ if not TryExtractValues( Value , Dimension, Unit) then begin
29
+ Clear( Dimension) ;
30
+ Clear( Unit) ;
31
+ end ;
32
+
33
+ if MetafieldAssistEdit. OpenForDimension( Dimension, Unit) then begin
34
+ MetafieldAssistEdit. GetDimensionValue( Dimension, Unit) ;
35
+ Value := StrSubstNo( DimensionJsonTemplateTxt, Format( Dimension, 0 , 9 ) , GetDimensionTypeName( Unit)) ;
36
+ end else
37
+ exit ( false) ;
38
+ end ;
39
+
40
+ procedure GetExampleValue() : Text
41
+ begin
42
+ exit ( StrSubstNo( DimensionJsonTemplateTxt, ' 1.5' , ' cm' )) ;
43
+ end ;
44
+
45
+ [TryFunction]
46
+ local procedure TryExtractValues( Value : Text ; var Dimension: Decimal ; var Unit: Enum "Shpfy Metafield Dimension Type")
47
+ var
48
+ JToken: JsonToken ;
49
+ JObject: JsonObject ;
50
+ begin
51
+ JObject. ReadFrom( Value ) ;
52
+ JObject. SelectToken( ' value' , JToken) ;
53
+ Dimension := JToken. AsValue(). AsDecimal() ;
54
+ JObject. SelectToken( ' unit' , JToken) ;
55
+ Unit := ConvertToDimensionType( JToken. AsValue(). AsText()) ;
56
+
57
+ if JObject. Keys . Count () <> 2 then
58
+ Error( ' ' ) ;
59
+ end ;
60
+
61
+ local procedure GetDimensionTypeName( DimensionType: Enum "Shpfy Metafield Dimension Type") : Text
62
+ begin
63
+ exit ( DimensionType. Names(). Get( DimensionType. Ordinals(). IndexOf( DimensionType. AsInteger()))) ;
64
+ end ;
65
+
66
+ local procedure ConvertToDimensionType( Value : Text ) Type : Enum "Shpfy Metafield Dimension Type"
67
+ begin
68
+ exit ( Enum ::"Shpfy Metafield Dimension Type". FromInteger( Type . Ordinals(). Get( Type . Names(). IndexOf( Value )))) ;
69
+ end ;
70
+ }
0 commit comments