Remove useless code
In some model classes, the beforeDelete() method from PO is overwritten. Then a call to return delete_Accounting("...") is made. The method delete_Accounting() always returns true.
It's the same as not overwriting the beforeDelete() method at all. I suggest to remove the beforeDelete() methods from:
MProduct (just delete the call to delete_Accounts() at the end)
and delete the delete_Accounts() method at all.
Another suggestion would be to use this method to delete the accounting entries via PO so we can get a changelog entry for them and remove the db constraints.