Clarify quantities used for calculations, show excess available via max_quantity

This commit is contained in:
Rohan Mitchell
2015-07-24 18:31:49 +10:00
parent 21a9681205
commit 917c17af59
3 changed files with 14 additions and 14 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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