# custom_app/regional/australia/setup.py
import frappe
from frappe.custom.doctype.custom_field.custom_field import create_custom_fields
def setup(company=None, patch=True):
"""Setup Australian localization"""
make_custom_fields()
setup_tax_accounts(company)
configure_gst_settings()
def make_custom_fields():
"""Add Australian-specific custom fields"""
custom_fields = {
"Customer": [
dict(
fieldname="abn",
label="Australian Business Number (ABN)",
fieldtype="Data",
insert_after="tax_id"
),
dict(
fieldname="acn",
label="Australian Company Number (ACN)",
fieldtype="Data",
insert_after="abn"
)
],
"Sales Invoice": [
dict(
fieldname="gst_treatment",
label="GST Treatment",
fieldtype="Select",
options="GST\nGST Free\nInput Taxed\nExport",
insert_after="taxes_and_charges"
)
],
"Address": [
dict(
fieldname="state_code",
label="State Code",
fieldtype="Select",
options="\nNSW\nVIC\nQLD\nWA\nSA\nTAS\nACT\nNT",
insert_after="state"
)
]
}
create_custom_fields(custom_fields, update=True)
def update_regional_tax_settings(country=None, company=None):
"""Configure GST accounts and tax templates"""
if not company:
return
# Create GST accounts
from erpnext.accounts.doctype.account.chart_of_accounts.chart_of_accounts import create_charts
accounts = [
{
"account_name": "GST Collected",
"parent_account": "Current Liabilities - " + company.abbr,
"account_type": "Tax",
"tax_rate": 10.0
},
{
"account_name": "GST Paid",
"parent_account": "Current Assets - " + company.abbr,
"account_type": "Tax",
"tax_rate": 10.0
}
]
for account in accounts:
if not frappe.db.exists("Account", account["account_name"] + " - " + company.abbr):
doc = frappe.get_doc({
"doctype": "Account",
"company": company.name,
**account
})
doc.insert()