diff --git a/app/helpers/items_helper.rb b/app/helpers/items_helper.rb index 9a3240e1..4fb4934f 100644 --- a/app/helpers/items_helper.rb +++ b/app/helpers/items_helper.rb @@ -1,20 +1,31 @@ module ItemsHelper - def item_history_info(version) - parameters = build_history_parameters(version) - t(version.event, **parameters.merge(scope: %i[history item event])) - end - - def build_history_parameters(version) + def item_history_info(version) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength parameters = { details: version.edit_source, - amount: version.edit_amount, - previous_total: version.changeset["current_quantity"].first, - new_total: version.changeset["current_quantity"].last + amount: version.edit_amount } - parameters[:amount_description] = t(version.edit_method, **parameters.merge(scope: %i[history item method])) - parameters[:reason] = t(version.edit_reason, **parameters.merge(scope: %i[history item reason])) - parameters + if version.changeset["current_quantity"] + parameters[:previous_total] = version.changeset["current_quantity"].first + parameters[:new_total] = version.changeset["current_quantity"].last + parameters[:amount_description] = t(version.edit_method, **parameters.merge(scope: %i[history item method])) + parameters[:reason] = t(version.edit_reason, **parameters.merge(scope: %i[history item reason])) + elsif version.edit_reason == "bulk_pricing_change" || version.changeset["value"] + previous_price = number_to_currency(version.changeset["value"].first) + new_price = number_to_currency(version.changeset["value"].last) + parameters[:amount_description] = "Updated from #{previous_price} to #{new_price}" + parameters[:reason] = + if version.edit_reason == "bulk_pricing_change" + "Bulk pricing change" + else + "Price change" + end + parameters[:details] ||= "n/a" + else + raise "Version history info cannot be determined: #{version.id}" + end + + t(version.event, **parameters.merge(scope: %i[history item event])) end def new_item_with_category_path diff --git a/app/models/item.rb b/app/models/item.rb index bc15918b..3d413c89 100644 --- a/app/models/item.rb +++ b/app/models/item.rb @@ -140,8 +140,12 @@ def mark_event(params) update_quantity end - def each_quantity_version - results = versions.includes(:item).select { |v| v.changeset["current_quantity"] }.reverse + def relevant_history?(version) + version.edit_reason == "bulk_pricing_change" || version.changeset["current_quantity"] || version.changeset["value"] + end + + def each_history_version + results = versions.includes(:item).select { |v| relevant_history?(v) }.reverse user_ids = results.map(&:whodunnit).uniq.compact user_names_by_id = User.where(id: user_ids).pluck(:id, :name).to_h diff --git a/app/views/items/edit_stock.html.erb b/app/views/items/edit_stock.html.erb index 55f8eed7..0b7692f5 100644 --- a/app/views/items/edit_stock.html.erb +++ b/app/views/items/edit_stock.html.erb @@ -84,7 +84,7 @@
- <% @item.each_quantity_version do |version, whodunnit| %> + <% @item.each_history_version do |version, whodunnit| %>