Supertyping Inventory Transactions
Try making an inventory transaction table.  This table will likely consist of all the columns common to your various transaction type records.  For some record types, this may be all the columns.  Add a transaction type column to differentiate the records.

You can then create an optional relationship to any subtypes which will contain the columns specific to the subtype.  

Alternatively, you can add nullable columns for this data.  This will require additional constraints to ensure only the right columns are set.

EDIT: If you have null columns, there will usually be the only table. The shipment column would be required for all types having a shipment id (might include returns), and NULL for other types.  The alternative would be to have rows in InventoryShipments for shipments, and rows in InventoryReturns for returns.  This quickly gets complicated.  

If certain (transaction) types have a lot of type specific columns, you could use a hybrid model, with most types entirely in the Inventory table and some types with type specific table.  This may occur when you use sub-type tables, as there may be types which only have columns which are common to all types.

Using either approach requires effort to ensure data integrity.  Null columns should always be null for columns, and not null when required for the records type.  If there are subtype records, there usually must be only one per inventory record.