6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
# File 'app/jobs/spree/products/refresh_metrics_job.rb', line 6
def perform(product_id)
product = Spree::Product.find_by(id: product_id)
return unless product
completed_order_ids = product.completed_orders.select(:id)
variant_ids = product.variants_including_master.ids
line_items = Spree::LineItem.joins(:order)
.where(spree_orders: { id: completed_order_ids })
.where(variant_id: variant_ids)
product.update_columns(
units_sold_count: line_items.sum(:quantity),
revenue: line_items.sum(:pre_tax_amount)
)
end
|