mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-06 02:51:34 +00:00
Clarify quantities used for calculations, show excess available via max_quantity
This commit is contained in:
@@ -2,7 +2,7 @@ require 'open_food_network/reports/bulk_coop_report'
|
||||
|
||||
module OpenFoodNetwork::Reports
|
||||
class BulkCoopAllocationReport < BulkCoopReport
|
||||
header "Customer", "Product", "Unit Size", "Variant", "Variant value", "Variant unit", "Weight", "Sum Total", "Sum Max Total", "Total Available", "Unallocated"
|
||||
header "Customer", "Product", "Unit Size", "Variant", "Variant value", "Variant unit", "Weight", "Sum Total", "Total Available", "Unallocated", "Max quantity excess"
|
||||
|
||||
organise do
|
||||
group { |li| li.variant.product }
|
||||
@@ -17,9 +17,9 @@ module OpenFoodNetwork::Reports
|
||||
column { |lis| "" }
|
||||
column { |lis| "" }
|
||||
column { |lis| total_amount(lis) }
|
||||
column { |lis| total_max_quantity_amount(lis) }
|
||||
column { |lis| total_available(lis) }
|
||||
column { |lis| remainder(lis) }
|
||||
column { |lis| max_quantity_excess(lis) }
|
||||
end
|
||||
|
||||
organise do
|
||||
@@ -41,8 +41,8 @@ module OpenFoodNetwork::Reports
|
||||
column { |lis| OpenFoodNetwork::OptionValueNamer.new(lis.first.variant).value }
|
||||
column { |lis| OpenFoodNetwork::OptionValueNamer.new(lis.first.variant).unit }
|
||||
column { |lis| lis.first.variant.weight || 0 }
|
||||
column { |lis| lis.sum { |li| li.quantity } }
|
||||
column { |lis| lis.sum { |li| li.max_quantity || 0 } }
|
||||
column { |lis| total_amount(lis) }
|
||||
column { |lis| "" }
|
||||
column { |lis| "" }
|
||||
column { |lis| "" }
|
||||
end
|
||||
|
||||
@@ -33,15 +33,11 @@ module OpenFoodNetwork::Reports
|
||||
lis.sum { |li| (li.quantity || 0) * scaled_amount(li) }
|
||||
end
|
||||
|
||||
def total_max_quantity_amount(lis)
|
||||
lis.sum { |li| (li.max_quantity || 0) * scaled_amount(li) }
|
||||
end
|
||||
|
||||
def units_required(lis)
|
||||
if group_buy_unit_size(lis).zero?
|
||||
0
|
||||
else
|
||||
( max_quantity_amount(lis) / group_buy_unit_size(lis) ).ceil
|
||||
( total_amount(lis) / group_buy_unit_size(lis) ).ceil
|
||||
end
|
||||
end
|
||||
|
||||
@@ -50,10 +46,14 @@ module OpenFoodNetwork::Reports
|
||||
end
|
||||
|
||||
def remainder(lis)
|
||||
remainder = total_available(lis) - max_quantity_amount(lis)
|
||||
remainder = total_available(lis) - total_amount(lis)
|
||||
remainder >= 0 ? remainder : ''
|
||||
end
|
||||
|
||||
def max_quantity_excess(lis)
|
||||
max_quantity_amount(lis) - total_amount(lis)
|
||||
end
|
||||
|
||||
def max_quantity_amount(lis)
|
||||
lis.sum do |li|
|
||||
max_quantity = [li.max_quantity || 0, li.quantity || 0].max
|
||||
|
||||
@@ -2,7 +2,7 @@ require 'open_food_network/reports/bulk_coop_report'
|
||||
|
||||
module OpenFoodNetwork::Reports
|
||||
class BulkCoopSupplierReport < BulkCoopReport
|
||||
header "Supplier", "Product", "Unit Size", "Variant", "Variant value", "Variant unit", "Weight", "Sum Total", "Sum Max Total", "Units Required", "Unallocated"
|
||||
header "Supplier", "Product", "Unit Size", "Variant", "Variant value", "Variant unit", "Weight", "Sum Total", "Units Required", "Unallocated", "Max quantity excess"
|
||||
|
||||
organise do
|
||||
group { |li| li.variant.product.supplier }
|
||||
@@ -21,9 +21,9 @@ module OpenFoodNetwork::Reports
|
||||
column { |lis| "" }
|
||||
column { |lis| "" }
|
||||
column { |lis| total_amount(lis) }
|
||||
column { |lis| total_max_quantity_amount(lis) }
|
||||
column { |lis| units_required(lis) }
|
||||
column { |lis| remainder(lis) }
|
||||
column { |lis| max_quantity_excess(lis) }
|
||||
end
|
||||
|
||||
organise do
|
||||
@@ -41,8 +41,8 @@ module OpenFoodNetwork::Reports
|
||||
column { |lis| OpenFoodNetwork::OptionValueNamer.new(lis.first.variant).value }
|
||||
column { |lis| OpenFoodNetwork::OptionValueNamer.new(lis.first.variant).unit }
|
||||
column { |lis| lis.first.variant.weight || 0 }
|
||||
column { |lis| lis.sum(&:quantity) }
|
||||
column { |lis| lis.sum { |li| li.max_quantity || 0 } }
|
||||
column { |lis| total_amount(lis) }
|
||||
column { |lis| '' }
|
||||
column { |lis| '' }
|
||||
column { |lis| '' }
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user