diff --git a/db/migrate/20181128054803_simplify_variant_override_on_demand_and_count_on_hand.rb b/db/migrate/20181128054803_simplify_variant_override_on_demand_and_count_on_hand.rb new file mode 100644 index 0000000000..eeb5eb5e37 --- /dev/null +++ b/db/migrate/20181128054803_simplify_variant_override_on_demand_and_count_on_hand.rb @@ -0,0 +1,29 @@ +# This simplifies variant overrides to have only the following combinations: +# +# on_demand | count_on_hand +# -----------+--------------- +# true | nil +# false | set +# nil | nil +# +# Refer to the table {here}[https://github.com/openfoodfoundation/openfoodnetwork/issues/3067] for +# the effect of different variant and variant override stock configurations. +# +# Furthermore, this will allow all existing variant overrides to satisfy the newly added model +# validation rules. +class SimplifyVariantOverrideOnDemandAndCountOnHand < ActiveRecord::Migration + def up + # When on_demand is nil but count_on_hand is set, force limited stock. + VariantOverride.where(on_demand: nil).where("count_on_hand IS NOT NULL") + .update_all(on_demand: false) + + # Clear count_on_hand if forcing on demand. + VariantOverride.where(on_demand: true).update_all(count_on_hand: nil) + + # When on_demand is false but count on hand is not specified, set this to use producer stock + # settings. + VariantOverride.where(on_demand: false, count_on_hand: nil).update_all(on_demand: nil) + end + + def down; end +end diff --git a/db/schema.rb b/db/schema.rb index 7f3b49ca3c..8f067d9bb7 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20181123012635) do +ActiveRecord::Schema.define(:version => 20181128054803) do create_table "account_invoices", :force => true do |t| t.integer "user_id", :null => false