The fact that it exists at all is what is wrong.
When you have two tables that are essentially the same structure (PurchaseDetail/SaleDetail, Puchase/Sale) you did it wrong. When you do that you are storing a value that should be in a field in the table name (Purchase/Sale). Purchase and sale data should be in the same table, with a new field for the type (purchase/sale) that the transaction is.
You do that, you eliminate the need for this UNION hack to bring your data back together. It also makes getting CurrentInventory trivial (whcih I think is what you are moving toward with this UNION). You simply sum the Qty field of that new table I described.
You can do something similar with your Customers/EMployees/Suppliers table. They essentially have the same structure so all that data should go together with a new field to designate what role the person has.