Here, you will see a validator to calculate if the ABN number is correct or not.
Introduction
In this post, you will see a simple function to validate the ABN for Australian's trade. This validator is for calculating if the ABN number is correct or not. I create a function in JavaScript and C#. I hope this will help you in some way.
C# Version
public static bool Abn_Validator(string ABN)
{
bool result;
ABN = ABN.Trim().Replace(" ", "");
if (ABN.Length == 11)
{
try
{
char[] nums = ABN.ToArray();
int[] control = new int[11];
control[0] = (Convert.ToInt32(nums[0].ToString()) - 1) * 10;
control[1] = Convert.ToInt32(nums[1].ToString());
control[2] = Convert.ToInt32(nums[2].ToString()) * 3;
control[3] = Convert.ToInt32(nums[3].ToString()) * 5;
control[4] = Convert.ToInt32(nums[4].ToString()) * 7;
control[5] = Convert.ToInt32(nums[5].ToString()) * 9;
control[6] = Convert.ToInt32(nums[6].ToString()) * 11;
control[7] = Convert.ToInt32(nums[7].ToString()) * 13;
control[8] = Convert.ToInt32(nums[8].ToString()) * 15;
control[9] = Convert.ToInt32(nums[9].ToString()) * 17;
control[10] = Convert.ToInt32(nums[10].ToString()) * 19;
int total = 0;
for (int i = 0; i < 11; i++)
{
total += control[i];
}
if (total % 89 == 0) result = true;
else result = false;
}
catch
{
result = false;
}
}
else result = false;
return result;
}
JavaScript Version
function Abn_Validator(myAbn)
{
let result = false;
let ABN;
try {
ABN = myAbn.value;
} catch (e) {
ABN = '';
}
if (ABN.length == 11) {
try {
let control = new Array(11);
control[0] = (convert2integer(ABN[0],false) - 1) * 10;
control[1] = convert2integer(ABN[1], false);
control[2] = convert2integer(ABN[2], false) * 3;
control[3] = convert2integer(ABN[3], false) * 5;
control[4] = convert2integer(ABN[4], false) * 7;
control[5] = convert2integer(ABN[5], false) * 9;
control[6] = convert2integer(ABN[6], false) * 11;
control[7] = convert2integer(ABN[7], false) * 13;
control[8] = convert2integer(ABN[8], false) * 15;
control[9] = convert2integer(ABN[9], false) * 17;
control[10] = convert2integer(ABN[10], false) * 19;
let total = 0;
for (let i = 0; i < 11; i++)
{
total += control[i];
}
if (total % 89 == 0) result = true;
else result = false;
}
catch
{
result = false;
}
}
else result = false;
return result;
}
History
- 22nd August, 2020: Initial version
- 24th August 2020: change variables name from spanish to english.
A programmer with skill in c#, VB, MVC, .NET CORE, JAVASCRPT, HTML, ASP, CSS, windows forms, windows app.
I’m specialized in C# and Blazor WebAssembly, with solid experience in creating modern, fast, and scalable web applications. My work approach combines efficient development techniques with performance optimization, ensuring solutions that not only work but do so exceptionally well.
My work style is collaborative and results-oriented. I listen closely to my clients' needs and transform those ideas into technological solutions that exceed expectations. For me, each project is an opportunity to innovate, whether by improving an application's speed, optimizing databases, or integrating new technologies.
One of my most successful cases was optimizing a Blazor WebAssembly application, where I reduced the processing time from 26 to 9 seconds. This kind of result reflects my commitment to technical excellence and my ability to solve complex problems efficiently.
In addition to my work as a developer, I’m the creator of the blog https://aprende-a-programar.com, a platform dedicated to teaching programming in an accessible and practical way. This project not only demonstrates my passion for development but also my ability to communicate technical ideas clearly and simply, which makes collaboration with my clients easier.
My goal is to help the dev community with my experiencies, and sharing my code to everybody.