Helps to investigate https://github.com/openfoodfoundation/openfoodnetwork/issues/3924
A better solution would be to move the update of shipments out of the
after_save callback and deal with it in controllers. Unfortunately,
that's a big and tricky task.
Since this exception is causing a lot of pain for some Australian
farmers, I introduced more logging here to understand the problem
better. The issue was observed in OFN v1 and may disappear with v2. But
we don't know that and should monitor it.
https://github.com/openfoodfoundation/openfoodnetwork/issues/3727
When a user didn't have a default credit card and then checked out with
a credit card it became the default even when the user didn't intend to
store it. That lead to subscriptions trying to charge a one-time card
which fails.
Orders belonging to subscriptions get completed without payment. That
requires overriding Spree's functionality.
In Spree 2, an order in payment state without pending orders is invalid.
Instead we skip the payment state by not requiring a payment for
automatically generated orders until the order cycle is closed.
Note that, as explained in
https://apidock.com/rails/v3.2.13/ActiveRecord/Relation/delete, `delete` does
not trigger callbacks and so it skips the products cache logic.
If we still want to avoid instantiating the AR object, we need to explicitly
call that logic for the cache to be up-to-date.
We keep tests running by default without cache, keeping it as it was before 10a79d5a65
Additionally, cached_products_renderer no longer depends on Rails.env, so here we remove that dependency from it's spec.
This way we don't need to touch the class implementation to enable the
products cache in development. Just change the default value in
`app/models/spree/app_configuration_decorator.rb`.
Using the default fixes a missing translation. The text is slightly
changed but should be okay as well:
- "^Tax Category is required"
+ "Tax category can't be blank"
Our translations are not available when decorators are loaded. The
message for a missing product category was missing:
https://github.com/openfoodfoundation/openfoodnetwork/issues/1829
I moved the translation to ActiveRecord's default scope so that it can
be picked up automatically.