OBJECT Table 60003 Barcode { OBJECT-PROPERTIES { Date=09-01-16; Time=17:00:00; Modified=Yes; Version List=WebService-Example; } PROPERTIES { OnInsert=BEGIN "Primary Key" := CREATEGUID; GenerateBarCode(); END; OnModify=BEGIN GenerateBarCode(); END; } FIELDS { { 1 ; ;Primary Key ;GUID } { 2 ; ;Value ;Text250 } { 3 ; ;Type ;Option ;OptionCaptionML=ENU=Select a Type,Code 39,Code 128a,Code 128b,Code 128c,2 of 5 Interleaved,QR Code; OptionString=[ ,c39,c128a,c128b,c128c,i2of5,qr] } { 4 ; ;Width ;Integer ;InitValue=250 } { 5 ; ;Height ;Integer ;InitValue=100 } { 6 ; ;Include Text ;Boolean } { 7 ; ;Border ;Boolean } { 8 ; ;Reverse Colors ;Boolean } { 9 ; ;ECC Level ;Option ;OptionCaptionML=ENU=Low (L),Medium-Low (M),Medium-High (Q),High (H); OptionString=0,1,2,3 } { 10 ; ;Size ;Option ;InitValue=5; OptionCaptionML=ENU=21x21,42x42,63x63,84x84,105x105,126x126,147x147,168x168,189x189,210x210; OptionString=1,2,3,4,5,6,7,8,9,10 } { 11 ; ;Image Type ;Option ;OptionString=png,gif,jpg } { 12 ; ;Image ;BLOB ;SubType=Bitmap } } KEYS { { ;Primary Key ;Clustered=Yes } } FIELDGROUPS { } CODE { PROCEDURE GenerateBarCode@1000000000(); VAR Method@1000000000 : Text; RESTWSManagement@1004 : Codeunit 60000; HttpResponseMessage@1003 : DotNet "'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.System.Net.Http.HttpResponseMessage"; WebUtility@1000000001 : DotNet "'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Net.WebUtility"; null@1001 : DotNet "'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Object"; ImageStream@1000000004 : DotNet "'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.IO.MemoryStream"; OutStr@1000000002 : OutStream; Window@1000 : Dialog; BEGIN IF Type = Type::" " THEN BEGIN CLEAR(Image); EXIT; END; Window.OPEN('Generating Bar Code'); IF Type = Type::qr THEN Method := STRSUBSTNO('barcode/qr/qr.%1?value=%2&size=%3&ecclevel=%4', GetOptionStringValue("Image Type",FIELDNO("Image Type")), WebUtility.UrlEncode(Value), GetOptionStringValue(Size,FIELDNO(Size)), GetOptionStringValue("ECC Level",FIELDNO("ECC Level"))) ELSE Method := STRSUBSTNO('barcode/%1/%2.%3?istextdrawn=%4&isborderdrawn=%5&isreversecolor=%6', GetOptionStringValue(Type,FIELDNO(Type)), WebUtility.UrlEncode(Value), GetOptionStringValue("Image Type",FIELDNO("Image Type")), FORMAT("Include Text",0,2), FORMAT(Border,0,2), FORMAT("Reverse Colors",0,2)); RESTWSManagement.CallRESTWebService('http://barcodes4.me/', Method, 'GET', null, HttpResponseMessage); ImageStream := HttpResponseMessage.Content.ReadAsStreamAsync.Result; CLEAR(Image); Image.CREATEOUTSTREAM(OutStr); ImageStream.WriteTo(OutStr); Window.CLOSE(); END; LOCAL PROCEDURE GetOptionStringValue@9(option@1000 : Integer;fieldno@1006 : Integer) : Text; VAR RecRef@1001 : RecordRef; FldRef@1002 : FieldRef; OptionString@1003 : DotNet "'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.String"; options@1005 : DotNet "'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Array"; separator@1004 : DotNet "'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.String"; BEGIN RecRef.GETTABLE(Rec); FldRef := RecRef.FIELD(fieldno); OptionString := FldRef.OPTIONSTRING; separator := ','; options := OptionString.Split(separator.ToCharArray()); EXIT(options.GetValue(option)); END; BEGIN END. } } OBJECT Codeunit 60000 REST WS Management { OBJECT-PROPERTIES { Date=09-01-16; Time=17:00:00; Modified=Yes; Version List=WebService-Example; } PROPERTIES { OnRun=BEGIN END; } CODE { [TryFunction] PROCEDURE CallRESTWebService@1000000002(BaseUrl@1000000000 : Text;Method@1000000001 : Text;RestMethod@1000000004 : Text;VAR HttpContent@1000000005 : DotNet "'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.System.Net.Http.HttpContent";VAR HttpResponseMessage@1000000006 : DotNet "'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.System.Net.Http.HttpResponseMessage"); VAR HttpClient@1000000003 : DotNet "'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.System.Net.Http.HttpClient"; Uri@1000000002 : DotNet "'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.System.Uri"; BEGIN HttpClient := HttpClient.HttpClient(); HttpClient.BaseAddress := Uri.Uri(BaseUrl); CASE RestMethod OF 'GET': HttpResponseMessage := HttpClient.GetAsync(Method).Result; 'POST': HttpResponseMessage := HttpClient.PostAsync(Method,HttpContent).Result; 'PUT': HttpResponseMessage := HttpClient.PutAsync(Method,HttpContent).Result; 'DELETE': HttpResponseMessage := HttpClient.DeleteAsync(Method).Result; END; HttpResponseMessage.EnsureSuccessStatusCode(); // Throws an error when no success END; BEGIN END. } } OBJECT Page 60003 Barcode List { OBJECT-PROPERTIES { Date=09-01-16; Time=15:29:45; Modified=Yes; Version List=WebService-Example; } PROPERTIES { SourceTable=Table60003; PageType=List; CardPageID=Barcode Card; } CONTROLS { { 1000000000;0;Container; ContainerType=ContentArea } { 1000000001;1;Group ; Name=Group; GroupType=Repeater } { 1000000002;2;Field ; SourceExpr=Value } { 1000000003;2;Field ; SourceExpr=Type } { 1000000004;2;Field ; SourceExpr=Width } { 1000000005;2;Field ; SourceExpr=Height } { 1000000006;2;Field ; SourceExpr="Include Text" } { 1000000007;2;Field ; SourceExpr=Border } { 1000000008;2;Field ; SourceExpr="Reverse Colors" } { 1000000009;2;Field ; SourceExpr="ECC Level" } { 1000000010;2;Field ; SourceExpr=Size } { 1000000011;2;Field ; SourceExpr="Image Type" } { 1000000012;2;Field ; SourceExpr=Image } } CODE { BEGIN END. } } OBJECT Page 60004 Barcode Card { OBJECT-PROPERTIES { Date=09-01-16; Time=17:12:19; Modified=Yes; Version List=WebService-Example; } PROPERTIES { SourceTable=Table60003; DataCaptionExpr=Value; PageType=Card; ActionList=ACTIONS { { 1000000014; ;ActionContainer; ActionContainerType=ActionItems } { 1000000015;1 ;Action ; Name=GenerateBarCode; CaptionML=ENU=Generate Bar Code; Promoted=Yes; PromotedIsBig=Yes; Image=BarCode; PromotedCategory=Process; OnAction=BEGIN GenerateBarCode(); END; } } } CONTROLS { { 1000000000;0;Container; ContainerType=ContentArea } { 1000000001;1;Group ; Name=General; GroupType=Group } { 1000000002;2;Field ; SourceExpr=Value } { 1000000003;2;Field ; SourceExpr=Type; OnValidate=BEGIN CurrPage.UPDATE; END; } { 1000000004;2;Field ; SourceExpr="Image Type" } { 1000000005;2;Field ; SourceExpr=Image } { 1000000006;1;Group ; Name=Options; GroupType=Group } { 1000000016;2;Group ; Visible=Type <> Type::QR; GroupType=Group } { 1000000007;3;Field ; SourceExpr=Width } { 1000000008;3;Field ; SourceExpr=Height } { 1000000009;3;Field ; SourceExpr="Include Text" } { 1000000010;3;Field ; SourceExpr=Border } { 1000000011;3;Field ; SourceExpr="Reverse Colors" } { 1000000017;2;Group ; Visible=Type = Type::QR; GroupType=Group } { 1000000012;3;Field ; SourceExpr="ECC Level" } { 1000000013;3;Field ; SourceExpr=Size } } CODE { BEGIN END. } }