{"id":4735,"date":"2021-03-22T10:04:31","date_gmt":"2021-03-22T09:04:31","guid":{"rendered":"https:\/\/solidt.eu\/site\/?p=4735"},"modified":"2022-09-06T15:08:08","modified_gmt":"2022-09-06T14:08:08","slug":"c-uniconta-page-events","status":"publish","type":"post","link":"https:\/\/solidt.eu\/site\/c-uniconta-page-events\/","title":{"rendered":"C# Uniconta Page Events"},"content":{"rendered":"\n<p><a href=\"https:\/\/www.uniconta.com\/developers-unipedia-global\/develop-a-pageeventbase-plugin\/\">https:\/\/www.uniconta.com\/developers-unipedia-global\/develop-a-pageeventbase-plugin\/<\/a><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Installing a PageEventsBase plugin\n\n    Similarly to other plugins, put the .dll file into the C:\\Uniconta\\PluginPath folder.\n    Go to Tools-> Menus-> User Plugin, then add UserPlugin, specify the name of the plugin, select control name on which plugin will work, select PageEventBasePlugin by clicking on \u2018+\u2019 button if it is a partner plugin, otherwise just type in the name of the .dll file. Specify the class name inheriting PageEventBase class. Lastly, choose type of plugin to Event<\/pre>\n\n\n\n<p>Or as a Event plugin script:<\/p>\n\n\n\n<p>Menus  &gt; User-Plugin &gt; Plugin-Type Event &gt; Edit Script<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"584\" height=\"474\" src=\"https:\/\/solidt.eu\/site\/wp-content\/uploads\/2021\/03\/afbeelding.png\" alt=\"\" class=\"wp-image-4739\" srcset=\"https:\/\/solidt.eu\/site\/wp-content\/uploads\/2021\/03\/afbeelding.png 584w, https:\/\/solidt.eu\/site\/wp-content\/uploads\/2021\/03\/afbeelding-300x243.png 300w\" sizes=\"auto, (max-width: 584px) 100vw, 584px\" \/><\/figure>\n\n\n\n<div style=\"height: 250px; position:relative; margin-bottom: 50px;\" class=\"wp-block-simple-code-block-ace\"><pre class=\"wp-block-simple-code-block-ace\" style=\"position:absolute;top:0;right:0;bottom:0;left:0\" data-mode=\"csharp\" data-theme=\"monokai\" data-fontsize=\"14\" data-lines=\"Infinity\" data-showlines=\"true\" data-copy=\"false\">using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Linq;\nusing System.Reflection;\nusing System.Text;\nusing Uniconta.API.Project;\nusing Uniconta.API.System;\nusing Uniconta.ClientTools.DataModel;\nusing Uniconta.Common;\nusing Uniconta.DataModel;\n\nnamespace Uniconta.API.Plugin {\n    public class CustomPageEvents : PageEventsBase {\n        public CustomPageEvents () : base () { }\n        public override void Init (object page, CrudAPI api, UnicontaBaseEntity master) {\n            base.Init (page, api, master);\n        }\n        public void Message (string message, string title) {\n            var fn = this.GetType ().GetMethod (\"ShowMessageBox\");\n            if (fn != null) fn.Invoke (this, new object[] { message, title });\n        }\n        public void ShowOrderConfirmation (DebtorOrderClient dbOrder, CompanyLayoutType doctype) {\n            var assembly = Assembly.Load (\"UnicontaPages\");\n            if (assembly == null) Message (\"Assembly == null\", \"Error\");\n            var DebtorOrders = assembly.GetType (\"UnicontaClient.Pages.DebtorOrders\");\n            if (DebtorOrders == null) Message (\"DebtorOrders == null\", \"Error\");\n            var debtorOrdersPage = Activator.CreateInstance (DebtorOrders, new object[] { api });\n            if (debtorOrdersPage == null) Message (\"page == null\", \"Error\");\n            var fn = debtorOrdersPage.GetType ().GetMethod (\"OrderConfirmation\", BindingFlags.NonPublic | BindingFlags.Instance);\n            if (fn == null) Message (\"OrderConfirmation == null\", \"Error\");\n            if (fn != null) {\n                fn.Invoke (debtorOrdersPage, new object[] { dbOrder, doctype });\n            }\n        }\n        public override ErrorCodes OnUpdate (UnicontaBaseEntity record, UnicontaBaseEntity original) {\n            if (record is DebtorOrderClient &amp;&amp; original is DebtorOrderClient) {\n                var c = (DebtorOrderClient) record;\n                var o = (DebtorOrderClient) original;\n                if (c.DeliveryDate != o.DeliveryDate) {\n                    ShowOrderConfirmation (c, CompanyLayoutType.OrderConfirmation);\n                }\n            }\n            return 0;\n        }\n\t\t\n\t\t\/\/ public override ErrorCodes Validate (UnicontaBaseEntity record) { return 0; }\n        \/\/ public override ErrorCodes OnInsert (UnicontaBaseEntity record) { return 0; }\n        \/\/ public override ErrorCodes OnDelete (UnicontaBaseEntity record) { return 0; }\n        \/\/ public override void Record_PropertyChanged (object sender, PropertyChangedEventArgs e) { }\n        \/\/ public override bool OnMenuItemClicked (string ActionType, object sender) { return true; }\n        \/\/ public override void PageClosing () { }\n        \/\/ public override string CheckMandatoryFields (UnicontaBaseEntity record) { return null; }\n        \/\/ public override void SetUserParm (string UserParm) { }\n        \/\/ public override IEnumerable&lt;PropValuePair> SearchFilter (IEnumerable&lt;PropValuePair> appliedFilters) { return appliedFilters; }\n    }\n}<\/pre><\/div>\n\n\n\n<div style=\"height: 250px; position:relative; margin-bottom: 50px;\" class=\"wp-block-simple-code-block-ace\"><pre class=\"wp-block-simple-code-block-ace\" style=\"position:absolute;top:0;right:0;bottom:0;left:0\" data-mode=\"csharp\" data-theme=\"monokai\" data-fontsize=\"14\" data-lines=\"Infinity\" data-showlines=\"true\" data-copy=\"false\">using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Linq;\nusing System.Reflection;\nusing Uniconta.API.System;\nusing Uniconta.Common;\nusing Uniconta.DataModel;\nusing Uniconta.ClientTools.DataModel;\nusing Uniconta.ClientTools.Page;\n\nnamespace Uniconta.API.Plugin {\n    public class NumberSerieSetter  : PageEventsBase {\n        public NumberSerieSetter() : base() {}\n        public override void Init (object page, CrudAPI api, UnicontaBaseEntity master) {\n            base.Init (page, api, master);\n            \/\/this.Message(\"Plugin: initialized \" + master.GetType().FullName, \"MyPlugin\");\n            SetCode((page as FormBasePage).ModifiedRow);\n        }\n\n        public void Message (string message, string title) {\n            var fn = this.GetType().GetMethod(\"ShowMessageBox\");\n            if (fn != null) fn.Invoke (this, new object[] { message, title });\n        }\n\n        public void SetCode(UnicontaBaseEntity record) {\n            if (record is WorkInstallationClient) {\n                var c = (WorkInstallationClient)record;\n                if (!string.IsNullOrWhiteSpace(c.Code)) return;\n                \n                var numberSerieAPI = new NumberSerieAPI(this.api);\n                var numberSerie = ClientHelper.GetRefClient&lt;NumberSerieClient>(this.api.CompanyId, typeof(NumberSerie), \"ADRESSEN\");\n                var newNumber = numberSerieAPI.GetNewNumber(\"ADRESSEN\");\n                c.Code = numberSerie.Prefix + newNumber.Result.ToString();\n            }\n        }\n\t\t\n        public override ErrorCodes OnInsert(UnicontaBaseEntity record) { return 0; }\n        public override ErrorCodes OnUpdate(UnicontaBaseEntity record, UnicontaBaseEntity original) { return 0; }\n        public override ErrorCodes OnDelete(UnicontaBaseEntity record) { return 0; }\n        public override ErrorCodes Validate(UnicontaBaseEntity record) { return 0; }\n        public override void Record_PropertyChanged(object sender, PropertyChangedEventArgs e) { }\n        public override bool OnMenuItemClicked(string ActionType, object sender) { return true; }\n        public override void PageClosing() { }\n        public override string CheckMandatoryFields(UnicontaBaseEntity record) { return null; }\n        public override void SetUserParm(string UserParm) {}\n        public override IEnumerable&lt;PropValuePair> SearchFilter(IEnumerable&lt;PropValuePair> appliedFilters) { return appliedFilters; }\n    }\n}<\/pre><\/div>\n\n\n\n<div style=\"height: 250px; position:relative; margin-bottom: 50px;\" class=\"wp-block-simple-code-block-ace\"><pre class=\"wp-block-simple-code-block-ace\" style=\"position:absolute;top:0;right:0;bottom:0;left:0\" data-mode=\"csharp\" data-theme=\"monokai\" data-fontsize=\"14\" data-lines=\"Infinity\" data-showlines=\"true\" data-copy=\"false\">using System;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing Uniconta.API.System;\r\nusing Uniconta.Common;\r\nusing Uniconta.DataModel;\r\nusing Uniconta.ClientTools.DataModel;\r\n\r\nnamespace Uniconta.API.Plugin\r\n{\r\n    public AfleveradresNummering  : PageEventsBase\r\n    {\r\n        public AfleveradresNummering() : base() {}\r\n        public override void Init(object page, CrudAPI api, UnicontaBaseEntity master) {}\r\n        public override ErrorCodes Validate(UnicontaBaseEntity record) { return 0; }\r\n\t\t\r\n        public override ErrorCodes OnInsert(UnicontaBaseEntity record) \r\n\t\t{\r\n\t\t\tvar c = (WorkInstallationClient)record;\r\n\t\t\tvar numberSerieAPI = new NumberSerieAPI(this.api);\r\n\t\t\tvar MyNumber = numberSerieAPI.GetNewNumber(\"BATCH\");\r\n\t\t\tc.Number = MyNumber.Result.ToString();\r\n\t\t\treturn 0; \r\n\t\t}\r\n\t\t\r\n        public override ErrorCodes OnUpdate(UnicontaBaseEntity record, UnicontaBaseEntity original) { return 0; }\r\n        public override ErrorCodes OnDelete(UnicontaBaseEntity record) { return 0; }\r\n        public override void Record_PropertyChanged(object sender, PropertyChangedEventArgs e) { }\r\n        public override bool OnMenuItemClicked(string ActionType, object sender) { return true; }\r\n        public override void PageClosing() {\/\/ this.ShowMessageBox(\"Page Closing\", \"Information\"); }\r\n        public override string CheckMandatoryFields(UnicontaBaseEntity record) { return null; }\r\n        public override void SetUserParm(string UserParm) {}\r\n        public override IEnumerable&lt;PropValuePair> SearchFilter(IEnumerable&lt;PropValuePair> appliedFilters) { return appliedFilters; }\r\n    }\r\n}<\/pre><\/div>\n","protected":false},"excerpt":{"rendered":"<p>https:\/\/www.uniconta.com\/developers-unipedia-global\/develop-a-pageeventbase-plugin\/ Or as a Event plugin script: Menus &gt; User-Plugin &gt; Plugin-Type Event &gt; Edit Script<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[6,4,1],"tags":[],"class_list":["post-4735","post","type-post","status-publish","format-standard","hentry","category-dotnet","category-programming","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/4735","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/comments?post=4735"}],"version-history":[{"count":6,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/4735\/revisions"}],"predecessor-version":[{"id":6692,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/4735\/revisions\/6692"}],"wp:attachment":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/media?parent=4735"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/categories?post=4735"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/tags?post=4735"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}