Since the whole pricing change thing seems to be limited by spreadsheet issues an idea came to me last night in a dream for how production price increases might be implemented to retain the previous markup in any material when a production price increase must happen.
First of all let's consider a production price reduction. This is a rare bird indeed but has happened in the past. In this case the (new final price) = (old final price) = (new production price) + (new markup). This happens because as production price decreases the markup value increases by the same amount. So maybe not as great as keeping the markup constant, at least the markup value is not reduced and certainly can't drop to a zero value. A shop owner has some breathing room to drop prices to reflect the new lowered production price if they want, but they don't have to do this.
But a production price increase can drop the markup value to zero. This is very bad if a shop owner does not become aware of the change and can lose revenue if there are any new sales for items with a zero value markup. So here's a potential work around that Shapeways might be able to implement during the price update to retain the original markup value. Do the update as a two step process - one followed by the other.
First update the new increased production price but also add to it the markup value from the markup column. In other words create an inflated new production price with the markup value. This causes the final price to be inflated but the process causes the markup column to also reset to a zero value.
(new inflated production price) = (new production price) + (original markup)
Secondly immediately perform the other step which is basically a price reduction change. This time update the new inflated production price with the new actual production price which is obviously lower than the inflated value. The difference between the inflated production price and the actual production price appears in the markup column and it should be the old value that existed before the process started.
I think this should work if you do it properly. It basically leverages the existing methodologies you use to change prices with only a slight, and theoretically simple modification. The servers will need to work twice as hard, but hey, computers don't complain.