There's currently an issue whereby if SO's come in with any SOP conditions (ie: Batch Number, Expiry Date), if you then proceed to edit the line item, it defaults to checking "Prevent Changes", which then forces any other custom fields to be saves as a condition.
This causes problems for customers, because the order can come in via API with some conditions around the batch, and then someone manually adds/edits the SOPs - which would end up applying "Prevent Changes" which would lock the SOP to the specific serial number, and prevent them from being able to reallocate.
A potential solution to this is to create "Prevent Changes" checkboxes for each custom field.. so you can prevent the expiry or batch being changed, without locking the serial number - The plus side of this is that it gives users full control, but would add a lot more checkboxes.