如何生成澳大利亚ABN号码?

时间:2013-03-19 15:08:52

标签: business-intelligence

出于测试目的,我需要生成一些有效的随机ABN(澳大利亚商业号码)。

以下是我能够找到的一些讨论如何验证ABN的链接,但我不清楚如何生成值。

skorks.com/2011/08/even-boring-form-data-can-be-interesting-for-a-developer

ato.gov.au/businesses/content.aspx?doc=/content/13187.htm

abr.business.gov.au

search.cpan.org/~adamk/Business-AU-ABN-1.09/lib/Business/AU/ABN.pm

2 个答案:

答案 0 :(得分:8)

在您的链接http://web.archive.org/web/20130405011257/http://www.ato.gov.au/businesses/content.aspx?doc=/content/13187.htm中,我认为您可以:

  1. 选择九个任意(随机)数字。

    例如,假设我们选择004085616。

  2. 将10放在这些数字前面(暂时)。

    这给了我们10004085616。

  3. http://web.archive.org/web/20130405011257/http://www.ato.gov.au/businesses/content.aspx?doc=/content/13187.htm所述的方式应用加权因子。

    这给了我们402。

  4. 除以89时计算余数。

    余下的是46岁。

  5. 从89减去剩余部分。

    结果是43。

  6. 在该结果中添加10以获取新的最左边的数字。

    现在我们有53个。插入004085616前面以获得53004085616。

答案 1 :(得分:3)

在不知道任何事情的情况下,你可以蛮力强迫它。如果它是一次性夹具生成,这很好。不知道是否存在测试数字的约定,您必须假设其中许多生成的可能代表真实的商业实体。

use strictures;
use Business::AU::ABN "validate_abn";

my $desired = 10; # 1_000;
my $abn = 12_004_044_937; # Example from BAA Pod.
my @abn;
until ( not $desired )
{
    next unless my $valid = validate_abn( $abn++ );
    $desired--;
    push @abn, $valid;
}

print join($/, @abn), $/;

__END__
12 004 044 937
12 004 044 969
12 004 045 391
12 004 045 440
12 004 045 472
12 004 045 521
12 004 045 553
12 004 045 585
12 004 045 602
12 004 045 634