Código para criação de tabelas contendo os ABNs para empresas registradas no Australian Business Register no site de pesquisa do ABN
Existem três tabelas no esquema abn_lookup
:
abns
: Esta é a tabela principal que contém informações de identificação de cada entidade com número ABN registrado.
trading_names
: Esta tabela contém os nomes comerciais de cada empresa com ABN registrado.
dgr
: Esta tabela contém os nomes dos itens de destinatários de presentes dedutíveis para cada ABN.
abns
Esta tabela contém uma entrada para cada número ABN já registrado, junto com o . Os campos são
abn
: O número ABN, escrito como uma string.
abn_status
: Este campo detalha se a entidade associada ao ABN está ativa, para a qual este campo é igual à string 'ACT', ou cancelada, para a qual o campo é igual à string 'CAN'.
abn_status_from_date
: Esta é a data em que o ABN foi registrado.
record_last_updated_date
: data em que a informação associada ao ABN foi atualizada pela última vez.
replaced
: (se este ABN substituiu outro ???)
entity_type_ind
: este campo contém o tipo de entidade como um índice (conforme fornecido pelo ABR aqui)
entity_type_text
: este campo contém o tipo de entidade escrito como texto.
asic_number
: o ACN ou ARBN registrado da entidade, se a entidade estiver registrada no ASIC.
asic_number_type
: o tipo do asic_number
(nota: até agora, parece que o ABR realmente não faz uso desta coluna)
gst_status
: este campo detalha se a entidade se registrou ou já se registrou no GST. Se for a entidade atualmente cadastrada, este campo é igual à string 'ACT'. Se a entidade tiver sido cadastrada para o GST, mas o registro tiver sido cancelado, este campo será igual a 'CAN'. Caso a entidade nunca tenha se cadastrado no ICMS, este campo será igual a ‘NON’.
gst_status_from_date
: a data em que a entidade foi registrada no GST. Igual a NULL se gst_status
for 'NON'.
main_ent_type
: o tipo da entidade principal, se aplicável (nota: esta coluna pode ser redundante)
main_ent_name
: o nome da entidade, caso a entidade não seja pessoa física.
main_ent_add_state
: o estado do endereço da entidade, caso a entidade não seja pessoa física.
main_ent_add_postcode
: o código postal do endereço da entidade, caso a entidade não seja pessoa física.
legal_ent_type
: o tipo de pessoa jurídica, se aplicável (nota: esta coluna pode ser redundante)
legal_ent_title
: o título (ou seja, Sr., Sra, Dr etc...) do nome da entidade, se a entidade for pessoa física.
legal_ent_family_name
: o sobrenome da entidade, se a entidade for pessoa física.
legal_ent_given_names
: os nomes próprios da entidade, se a entidade for uma pessoa física, escritos em ordem como uma string.
legal_ent_add_state
: o estado do endereço da entidade, se a entidade for pessoa física.
legal_ent_add_postcode
: o código postal do endereço da entidade, se a entidade for pessoa física.
trading_names
Esta tabela contém todos os nomes comerciais registrados e nomes comerciais sob os quais uma entidade com um determinado ABN faz negócios. Cada linha da tabela corresponde a uma única instância de um nó OtherEntity
nos arquivos XML de extração em massa originais. Os campos são:
abn
: O ABN da entidade.name
: o nome comercial ou nome comercialtype
: o tipo do nome, seja um nome comercial ('BN'), nome comercial ('TRD') ou qualquer outra coisa ('OTN'). dgr
Esta tabela contém todos os itens de destinatário de doação (DGR) de uma entidade com um determinado ABN. Cada linha da tabela corresponde a uma única instância de um nó DGR
nos arquivos XML de extração em massa originais. Os campos são:
abn
: O ABN da entidade.name
: o nome do item do destinatário do presente de doação.type
: o tipo do nome (parece que é sempre 'DGR', provavelmente redundante).dgr_status_from_date
: a data em que o item DGR foi registrado. get_abn_lookup_data.py
: este é o programa principal. Ele usa um navegador Selenium automatizado e sem cabeça para navegar até as páginas de download dos dados do ABN Bulk Extract em data.gov.au
, baixa os dois arquivos zip e, em seguida, extrai os arquivos xml dos zips em um diretório temporário abn_lookup/xml_files
, em seguida, usa os programas descritos abaixo para converter os arquivos xml em várias saídas csv. Essas saídas csv são canalizadas para um comando que grava essas saídas diretamente nas tabelas abns
, trading_names
e dgr
, usando um comando psql
. Este programa então decide, com base no sucesso da falha na execução da tarefa anterior, excluir as tabelas antigas e manter as novas, ou excluir as novas produzidas e manter as tabelas antigas, usando uma série de scripts sql também descritos abaixo .
xml_to_csv_abns.xsl
: este é um script xsl a ser utilizado pelo programa XSLT, para realizar uma transformação XSLT de um dos arquivos xml originais em um formato csv que corresponde à estrutura da tabela abns
. Essa saída é canalizada e então gravada nesta tabela.
xml_to_csv_trading_names.xsl
: igual ao acima, mas para a tabela trading_names
.
xml_to_csv_dgr.xsl
: igual ao anterior, mas para a tabela dgr
.
create_new_abn_lookup_tables.sql
: este script sql renomeia as tabelas atuais em abn_lookup
para abns_old
, trading_names_old
e dgr_old
e, em seguida, cria novas tabelas com os nomes abns
, trading_names
e dgr
.
delete_old_abn_lookup_tables.sql
: este script sql exclui abns_old
, trading_names_old
e dgr_old
. Isso é utilizado por get_abn_lookup_data.py
caso o processamento de todos os arquivos xml da extração em massa ABN seja bem-sucedido.
keep_old_abn_lookup_tables.sql
: este script sql exclui os recém-produzidos abns
, trading_names
e dgr
, depois renomeia abns_old
, trading_names_old
e dgr_old
de volta aos seus nomes originais. Isso é utilizado por get_abn_lookup_data.py
no caso de haver alguma falha no processamento de um ou mais arquivos xml da extração em massa do ABN.