Tax adjustments should not be recalculated after an order is finalized (?) #4543
Replies: 5 comments
-
There are a number of cases where we do need to force tax to be recalculated, though:
@gmacdougall suggested that (at least for stores using Solidus' built-in tax system) we could give tax rates "start_at" and "ends_at" fields and only apply them for this range. This way if a store begins collecting tax (or changes the amount they collect) in a certain zone, then recalculating an order in that zone wouldn't change the tax as the historical rates would be preserved. It doesn't account for changing the tax category of items or anything, but that's likely much less of a real issue for stores. |
Beta Was this translation helpful? Give feedback.
-
I don't know if a start/end time for tax rates would solve the problem, because all of our API-based sales tax integrations (as far as I know) use a single tax rate for all taxes, but stores will start collecting sales tax in different states at different times. Imagine the following scenario (which actually happened to a client of ours):
A solution would be to use different tax rates for different states, but I'm not sure that's feasible or desirable, and it also doesn't solve the problem for different types of adjustments. The core problem here is that, when we recalculate the order, we have no idea why we're recalculating it, so we don't know what needs to be recalculated exactly. I think giving
Unfortunately, adding this kind of granularity would be pretty complex, given the amount of actions that currently trigger a full order recalculation (which people are most likely relying on)... |
Beta Was this translation helpful? Give feedback.
-
Yeah, adding start/end doesn't help tax API integration setup at all. Providing a way to do what you're suggesting sounds pretty difficult, but seems like it could work. |
Beta Was this translation helpful? Give feedback.
-
What about adding an object (as a class preference) that is responsible to choose when taxes should be recalculated or not? |
Beta Was this translation helpful? Give feedback.
-
I like that idea. |
Beta Was this translation helpful? Give feedback.
-
Right now, Solidus continues to recalculate tax adjustments after an order has been finalized. This leads to some weird situations where an order's total might change after the customer has already paid for the order, e.g. if the store starts collecting sales tax in the customer's state and some event triggers a recalculate on the order.
It looks like this is expected behavior that was introduced in 2.3 (see #1916), but I can't really understand in what scenario this would be desirable. In fact, this has been a very common pain point and a source of confusion for a lot of Solidus stores, especially for larger brands with stricter financial/compliance requirements.
I'm curious to hear if anyone feels differently, but I propose that, once an order is finalized, Solidus doesn't continue to recalculate its amounts automatically. Any further adjustments should only be possible through the backend UI. At the very least, this should be a configuration option.
Beta Was this translation helpful? Give feedback.
All reactions