When transferring financial information between different systems, it is important to understand the philosophy behind how the Universal Migrator thinks about financial data and how those conclusions were reached.
Each financial system has a number of options that affect intricate details of how the math behind the financials works. Even systems that claim to have the same options implement them differently.
For example, consider a simple invoice with the following:
4 Hours @ $250/hr = $1,000
Tax 1: 15%
Tax 2: 5%
What is the total amount that needs to be paid? That depends! Does Tax 2 apply only to $1000 or does it also include the $150 from Tax 1?
Similarly, if a $500 discount were applied, would it apply to the base price of $1000 (before taxes) or would it apply to the total amount, post-tax?
The answers to these nuances vary between apps and between taxation jurisdictions!
At a high level, all financial systems have a number of high-level similarities: they keep track of clients, matters/projects, invoices, line items on invoices, payments, and outstanding balances. However, as you can see from above, that is usually where the similarities stop.
In order to accommodate all of the different scenarios between apps and geographic regions, the Universal Migrator thinks about financials at a high level.
If an activity has been billed, the Time Activity, Expense Activity, or Fee Activity record in the Universal Database will contain a reference to an Invoice ID. Invoices will contain a column that represents the Total amount of the invoice inclusive of every fee/tax/etc from the originating system. Invoices will also contain an Outstanding Balance column that represents the total amount that still needs to be paid.
When transferring from one system to another, the Universal Migrator will not transfer the intricate minutia of how an invoice arrived at its current state (taxes, payments, credits, write-offs, etc.), but it will use this high-level information to recreate the high-level financial information in the new system so that customers will still owe the same amount both before and after a migration.