mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-25 20:46:48 +00:00
48 lines
1.3 KiB
Ruby
48 lines
1.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Reporting
|
|
module Reports
|
|
module BulkCoop
|
|
class Allocation < Base
|
|
def query_result
|
|
table_items.group_by(&:order).values
|
|
end
|
|
|
|
def columns
|
|
{
|
|
customer: :order_billing_address_name,
|
|
product: :product_name,
|
|
bulk_unit_size: :product_group_buy_unit_size,
|
|
variant: :full_name,
|
|
variant_value: :option_value_value,
|
|
variant_unit: :option_value_unit,
|
|
weight: :weight_from_unit_value,
|
|
sum_total: :total_amount,
|
|
total_available: :empty_cell,
|
|
unallocated: :empty_cell,
|
|
max_quantity_excess: :empty_cell
|
|
}
|
|
end
|
|
|
|
def rules
|
|
[
|
|
{
|
|
group_by: :product,
|
|
header: true,
|
|
summary_row: proc do |_key, items, rows|
|
|
line_items = items.flatten
|
|
{
|
|
sum_total: rows.map(&:sum_total).sum(&:to_f),
|
|
total_available: total_available(line_items),
|
|
unallocated: remainder(line_items),
|
|
max_quantity_excess: max_quantity_excess(line_items)
|
|
}
|
|
end
|
|
}
|
|
]
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|