We are still using the Rails view I18n scope for :use_producer_settings.
Angular requires this replacement of the default blank option, which we
use for nil on_demand, to be in the template itself.
If we eventually move this template to a JS template, we can move it to
the same I18n scope as the :yes and :no options.
Change the UI control for "on demand" in the Inventory page from a
checkbox to a SELECT field with three options: nil, true, and false.
This resolves the following issues:
* There is no way to tell between nil and false - both are represented
by an unticked checkbox.
* There is no way to go back to nil.
I feel embarrased that this is the second follow up of my last
migration: https://github.com/openfoodfoundation/openfoodnetwork/pull/3126
The last migration didn't change any database structure, but the schema
still needs the latest migration version. Otherwise it will display
pending migrations when setting up the database.
This commit allows to run `bundle exec rake db:reset` in development
without the following message:
Run `rake db:migrate` to update your database then try again.
You have 1 pending migrations:
20181123012635 AssociateCustomersToUsers
The next pull request with a migration would have solved this problem as
well.
This totally removes the following N+1 query from the GET /shops request
```sql
SELECT "spree_properties".* FROM "spree_properties"
INNER JOIN "spree_product_properties"
ON "spree_product_properties"."property_id" = "spree_properties"."id"
INNER JOIN "spree_products"
ON "spree_products"."id" = "spree_product_properties"."product_id"
INNER JOIN "enterprises"
ON "enterprises"."id" = "spree_products"."supplier_id"
WHERE "spree_products"."supplier_id" = 24;
```
The product properties of the corresponding enterprises are now loaded
in a single query fired from the controller.
This totally removes the following N+1 query from the GET /shops request
```sql
SELECT "spree_properties".* FROM "spree_properties"
INNER JOIN "producer_properties"
ON "spree_properties"."id" = "producer_properties"."property_id"
WHERE "producer_properties"."producer_id" = 17
ORDER BY producer_properties.position;
```
The producer properties of the corresponding enterprises are now loaded
in a single query fired from the controller.