Discuss / maybe resolve schema issue on changing line items
If the line items change then the items financial items have to be updated. Generally the rule is to zero-out the current line items and reverse their financial items and create new ones. This is a pretty standard accounting approach.
Unfortunately there are some scenarios where the schema does not permit this which has resulted in adjustment line items being created in these cases. The issue is that the civicrm_line_item table has a unique index for entity_table + entity_id + contribution_id + price_field_value_id + price_field_id.
This means that if a line item with no price_field_values (ie a text / enter quantity line item) is altered it is not possible to create a reversal line a new line within the schema. The same problem occurs when changing a line item with price_field_values BACK to a price_field_value it previously held. In both these scenarios the work around is to have more than one 'valid' financial_item against the resulting line item with an 'adjustment' entry - ie an additional financial_item.
I don't have any good answers except maybe add an 'is_current' field & add that to the index. Perhaps the current pain is unavoidable but it feels a bit like an own goal