Exercise 1: Build AutoCount Accounting 2.0 Plug-In: Difference between revisions

No edit summary
 
(11 intermediate revisions by the same user not shown)
Line 1:
{{NavigateDeveloper|collapsed}}
__TOC__
Objectives: Create a new Plug-in project for AutoCount Accounting 2.0
Line 5 ⟶ 4:
{{Note|Project in this tutorial is created with Microsoft Visual Studio 2017 Community}}
 
===NewStarting new AutoCount Accounting 2.0 Plug-In Project===
===Create New Plug-In Project===
[[File:VSNewProject.PNG|link=]]
# Create a new "Visual C#" Project
Line 12:
# Enter project name: MyPlugIn2
*Click [OK]
 
<br />
===Check Project Properties===
{{Note|Right click Project "MyPlugIn2" and select Properties.<br />Or select Project "MyPlugIn2" and press Alt-Enter. [[Exercise_1:_Build_My_First_Plug-In|''Refer Exercise 1: Build My First Plug-In'']]}}
# Open Project Properties
# Select '''Application''' page
# Verify following properties:-
#*Target Framework: '''.NET Framework 4.6.1'''
#*Output type: '''Class Library'''
# Select '''Build''' page
# Verify Platform target: '''Any CPU'''
 
<br />
===Add AutoCount Accounting 2.0 References to Project===
[[File:BrowseReference.PNG|link=]]
{{Note|Suggest to copy the dll to a folder and rename the folder to AutoCount Accounting version. Eg.: AC2.0.0.55.<br />So that when necessity arises, programmer can maintain multiple versions of Plug-Ins.}}
# Add References Window
# Browse to AutoCount Accounting 2.0 folder
Line 29 ⟶ 41:
 
<br />
===Add Class "PlugInMain.cs"===
[[File:CreatePluginMain.PNG|link=]]
# Add a class to project.
# Name the class "PlugInMain.cs"
*Click [Add]
 
<br />
 
==Plug-In Entry Point==
===PlugInMain to Inherit from AutoCount.PlugIn.BasePlugIn===
# Inherit AutoCount.PlugIn.BasePlugIn to PlugInMain
# Add Constructor that is required by the base class, which constructor requires 3 arguments:-
#*Generate a new GUID for this plug-in.
#*Name this Plug-In
#*Version of this Plug-In
<syntaxhighlight lang="csharp">
public class PlugInMain : AutoCount.PlugIn.BasePlugIn
{
public PlugInMain() : base(new Guid("12D34B4A-692D-46DE-8D7D-B3520D4CA679"),
"My PlugIn for AC 2.0", "1.0.0.1")
{
}
}
</syntaxhighlight>
{{Note|While every Plug-In must not assigned with a same GUID.<br />It is advised to use the same GUID for the same plug-in, though plug-in version can be updated.}}
 
===Set Plug-In Profile and Properties===
<syntaxhighlight lang="csharp" highlight="5-9,12,14">
public PlugInMain() : base(new Guid("12D34B4A-692D-46DE-8D7D-B3520D4CA679"),
"My PlugIn for AC 2.0", "1.0.0.1")
{
//Enter your Company Profile registered with AutoCount's Developer ID
SetManufacturer("Auto Count Sdn. Bhd.");
SetManufacturerUrl("http://www.autocountsoft.com");
SetCopyright("Copyright 2015 © Auto Count Sdn. Bhd.");
SetSalesPhone("1-800-88-7766");
SetSupportPhone("+60-3-3324-2148");
 
//Minimum AutoCount Accounting version is required
SetMinimumAccountingVersionRequired("2.0.0.55");
//Set this Plug-In is free
SetIsFreeLicense(true);
}
</syntaxhighlight>
 
<syntaxhighlight lang="csharp">
SetMinimumAccountingVersionRequired("2.0.0.55");
</syntaxhighlight>
* AutoCount Accounting version that is lower than 2.0.0.55 will not be able to run this Plug-In.
* To ensure assemblies version compatibility between AutoCount Accounting and Plug-In;
* when Plug-In applies methods and properties that are introduced in newer version of AutoCount Accounting.
<syntaxhighlight lang="csharp">
SetIsFreeLicense(false);
</syntaxhighlight>
* Set whether the plug-in is '''free''' or '''License Required'''.
* Set to '''false''' if the plug-in has expiry date or license control.
[[File:PluginLicense.PNG|link=]]
 
<br />
===BeforeLoad===
<syntaxhighlight lang="csharp">
public override bool BeforeLoad(BeforeLoadArgs e)
{
e.MainMenuCaption = "My PlugIn 2";
//e.SystemReportFilename = "MyCustomReport.dat";
return base.BeforeLoad(e);
}
</syntaxhighlight>
* '''BeforeLoad(BeforeLoadArgs e)''' method is commonly use for initializing the necessary components or database custom tables before the plug-in is loaded;
* while these tasks can also be done using '''AfterLoad(AfterLoadArgs e)''' event method,
* '''AfterLoad(AfterLoadArgs e)''' does not consist of e.MainMenuCaption and e.SystemReportFilename in version 2.0.0.55.
<syntaxhighlight lang="csharp">
e.MainMenuCaption = "My PlugIn 2";
</syntaxhighlight>
* Assign a caption on the Main Menu.
<syntaxhighlight lang="csharp">
e.SystemReportFilename = "MyCustomReport.dat";
</syntaxhighlight>
* To load a report file that is embedded with the plug-in.
 
<br />
===GetLicenseStatus===
 
[[Category:Programmer]]
[[Category:Plug-In]]
[[Category:Programmer Exercise]]
{{NavigateDeveloper|collapsed}}