Instant synchronization system for multiple branches

The company's head office has its own database. Each branch of the company has its own database (i.e., a copy of the program is installed locally on the branch's device).
- The head office is linked to all other branches of the company.
When a branch creates a financial transaction, the program saves the transaction locally at the branch and automatically sends a copy of it to the company's head office: If the internet is available: The data is sent directly to the server (i.e., the moment you click the Save, Edit, or Delete button within the program).
If the internet is not available: The data waits for the internet connection to return, and when it returns, the data is sent directly to the server. This all happens in the background without the user's knowledge.
This results in a copy of the branch's information being stored locally, i.e., on the branch's local device. The data is also sent to the head office as soon as the financial transaction is executed at the branch.
This achieves speed and agility in data transfer between branches and the head office, as we send data as it comes in, and only new transactions made at the branch are sent to the head office.

- Multiple branches: The program allows the management of an unlimited number of branches at each company level, with separate financial statements (balance sheet, trading, and profit and loss) at each branch level.
Cost center system: An infinite number of cost centers can be defined at multiple (unlimited) levels.