Scaling Regional Localisation for ERPNext

What is ERPNext Localisation and Why

Each country has a statutory tax compliance which businesses need to fulfil. For a business evaluating ERP solutions, fulfilment of this statutory compliance is a basic expectation. Hence, it becomes crucial for us as a Frappe community to ensure that ERPNext has a coverage of regional compliances. It can be as simple as applying taxes on the invoices. Or it can get as complex as -invoicing, with real-time integration with the government’s systems, for example India Compliance app.

In Frappe’s ecosystem, we trust partners to fulfil this requirement for these two reasons.

  • Better Understanding: Since the scope of localisation varies from country to country, it is also scalable through regional partners. Also, in the spirit of open-source, which is at the heart of the Frappe ecosystem, community partners can make this significant contribution. I am pleased to inform you that many community members contributed localisation for ~ ten countries as an open-source application. A lot needs to be done, however.

  • Scale: Since we have compliance of hundreds of countries to be covered, we need a scalable model. Since we have a global community of Frappe app developers, it makes sense to trust the community to ensure coverage of this scale.

Regional Apps when creating a new Site on Frappe Cloud

Though we have localisation for a few countries, it wasn’t discoverable when creating a new site. Hence, to ensure country localisations are easily discoverable, we have added an option in the UI for new site creation. Here is the demo.

localisation_3

When creating a site from Frappe Cloud, after selecting apps, enable the option to select regional localisation. Based on the country’s selection, a regional localisation app will be auto-installed on your site.

Please note that we will be releasing this feature in phases. For now, it will only be available to Frappe partners. It will soon be open to all Frappe Cloud users. In the meantime, we are working with the published and new apps on UI upgrades, etc.

Countries Covered

Here are the countries for which regional localisation is available when creating a new site on Frappe Cloud.

Why should you contribute to regional localisation?

As suggested above, the availability of regional compliance is a basic customer expectation of a potential ERPNext customer. To ensure the success of the Frappe ecosystem, guaranteeing it’s coverage becomes extremely important. Only when we ensure comprehensive coverage on the regional level, will we be able to boost the adoption of the Frappe app (esp. ERPNext in this case), eventually leading to more business for all of us.

Hence, if you belong to a country for which ERPNext localisation is yet to be contributed, I encourage you to plan to develop and contribute one. If you already have a regional localisation and wish to contribute, learn how to get your open-source app published on the Frappe Cloud Marketplace. Request to keep me in loop via DM.

Credits to Frappe Cloud team, esp. @Suhail for driving the technical front.

Regards,
Umair Sayed
umair [at] frappe [dot] io

11 Likes

Localisation of Accounting and Financial stuff is a must.

We are also working hard on Türkiye localization.

Interested people can start from here or here.

4 Likes

+10 @TurkerTunali

Let’s plan publishing this on Marketplace, and eventually add in the FC’s site creation flow.

2 Likes

@umair

Should I use this thread to ask quesiton on good practice in location? Let me know if I should move the discuss elsewhere.

In our case (Thailand). localizaiton is relating to, i.e., Sales Invoice, Purchase invoice which is in ERPNext and Expense Claim which is in module HRMS

What is the good design decision.

  1. Split into 2 modules, i.e.,
    1.1 thai_tax_base, with hooks.py required_apps = [“erpnext”]
    1.2 thai_tax_hrms, required_apps = [“hrms”]
  2. Stick to 1 module, i.e., thai_tax, required_apps = [“erpnext”, “hrms”]
  3. Stick to 1 module, i.e., thai_tax, but required = [“erpnext”] only (and try to write the app in the way it works even no hrms installed.

1st method wil be more modular, but then, how the frappe cloud will handle?
2nd method, I am now using, but it will always required hrms installed too.
3rd method, May have problem technically, i.e., custom fields of Expense Claim can’t be imported.

Extra question, should we have good naming convention for localizaed modules. I.e., l10n_thailand, l10n_turkiye. Or may be it is too late now :slight_smile:

2 Likes

1st method wil be more modular, but then, how the frappe cloud will handle?

Since Frappe HR is a separate app, the HR localisation should also be separate. On Frappe Cloud, the UI for localisation app selection is just the first version. It might evolve in future to handle more use-cases. @Suhail

2nd method, I am now using, but it will always required hrms installed too.

I guess this is fine for now, as the volume of localised HR feature isn’t much. Perhaps you can handle error message better. It could include an instruction, to ensure user also install Frappe HR, and then re-try that those features.

1 Like

Option 3 should be preferred.

This hook could be useful:

after_app_install and before_app_uninstall which can be handy for fixtures specific to HRMS app.

This is how we implemented it:

Yes, agreed. Thanks for sharing your recipe. :slight_smile: