All assumptions should be made that the system can facilitate multiple organisations, who can configure their own parameters/ settings.
All transactions are logged.
No rows in a transactions are adjusted or deleted in the Database tables. E.g A refund would not delete or alter the sale value, a negative balance as a new line would be added against the sale.
All Transactions must be ACID compliant
A Transaction ( capital T) refers to a full set of transactions with a customer e.g Pledge, Sale , Buyback, Stock Transfer etc.
Either the full Transaction completes or the full Transaction rolls back and notifies the user of the error (and logged).
All Constants must be editable in a settings table(s) - but remain the same in the Transactions
VAT Rate per Category
VAT Rate per Transaction
Interest Rate per Transaction and Value band
Once a Transaction is completed the variables are added to the Transaction table and DO NOT reference the Settings table (as the values in the Settings table may change e.g. Interest Rate and not reflect the value at the time of the Transaction.