When working with data that changes over time, there's usually two choces that must be considered in each situation.
For any given situation, do you 1) Show the current data or 2) Show the data as it was at the time.
In your PO example, you want the latter. That means the price information needs to be copied to the PO (I expect that means the line items records of the PO),
rather than displaying the current price information for each item in the PO line items.
One good way is via the lookup function that allows you to copy the current Product Item Price to the Line Item Price field (an ordinary number field) of the line item, based on the item code selected (the same relationship you already have that's probably responsible for displaying the current (rather than historic) prices of each item. If the product's price changes in the Products table, it does not affect the prices already copied to the Price field in the Line Item table.
Does this describe your situation and a possible solution?