【问题标题】:How to generate an Australian ABN number? [closed]如何生成澳大利亚 ABN 号码? [关闭]
【发布时间】:2013-03-19 15:08:52
【问题描述】:

出于测试目的,我需要生成一些有效的随机 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

【问题讨论】:

  • 你的问题在哪里?
  • 我觉得这个问题已经很清楚了,至少现在是这样。

标签: business-intelligence


【解决方案1】:

从你的链接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。

【讨论】:

  • 谢谢,我会尽可能地支持 Ashley 和你。
  • 你确定这是正确的吗?根据我的计算,在开头加上“10”会使加权值为 412。如果您使用“00”,那么一切正常。
  • 那是我的 abn,你这个麻木不仁...不是我的。 abr.business.gov.au/SearchByAbn.aspx?abn=53004085616
  • 马修,在应用加权规则时,您需要从第一个数字中减去 1,这意味着它将是 '00'。
  • 我已经在 PHP 中实现了这个,经过测试并且可以工作。 pastebin.com/zrmLHzWs
【解决方案2】:

在不了解它的情况下,您可以暴力破解它。如果它是一次性的夹具一代,这很好。不知道测试编号是否有任何约定,您必须假设生成的其中许多可能代表真实的业务实体。

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

【讨论】:

  • 89 个候选号码中大约有 88 个会被拒绝...但如果速度不是问题,这可能没问题。
  • 是的,速度在这里不是一个因素。
  • 我忘了说你是否代表真实实体并不重要,因为这些数字不会单独使用。
猜你喜欢
  • 2012-12-19
  • 2015-06-04
  • 1970-01-01
  • 1970-01-01
  • 2015-07-13
  • 1970-01-01
  • 1970-01-01
  • 2013-03-13
  • 1970-01-01
相关资源
最近更新 更多