Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 23 additions & 12 deletions app/helpers/items_helper.rb
Original file line number Diff line number Diff line change
@@ -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
Expand Down
8 changes: 6 additions & 2 deletions app/models/item.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
2 changes: 1 addition & 1 deletion app/views/items/edit_stock.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@
</tr>
</thead>
<tbody>
<% @item.each_quantity_version do |version, whodunnit| %>
<% @item.each_history_version do |version, whodunnit| %>
<tr>
<td><%= local_time(version.created_at, "%b-%d-%Y %l:%M%P") %></td>
<td><%= whodunnit %></td>
Expand Down