Files
openfoodnetwork/lib/reporting/reports/suppliers/base.rb
2025-01-31 17:34:34 +05:00

103 lines
2.7 KiB
Ruby

# frozen_string_literal: true
module Reporting
module Reports
module Suppliers
class Base < ReportTemplate
include Helpers::ColumnsHelper
def default_params
{
q: {
completed_at_gt: 1.month.ago.beginning_of_day,
completed_at_lt: 1.day.from_now.beginning_of_day
}
}
end
def search
report_line_items.orders
end
def query_result
report_line_items.list(line_item_includes)
end
def columns
{
producer:,
producer_address:,
producer_abn_acn:,
producer_charges_gst:,
email:,
hub:,
hub_address:,
hub_contact_email:,
order_number:,
order_date:,
order_cycle:,
order_cycle_start_date:,
order_cycle_end_date:,
product:,
variant_unit_name:,
quantity:,
total_excl_fees_and_tax:,
total_excl_vat:,
total_fees_excl_tax:,
total_tax_on_product:,
total_tax_on_fees:,
total_tax:,
total:,
}
end
def rules
[
{
group_by: :producer,
header: true,
summary_row: proc do |_key, line_items|
summary_hash = Hash.new(0)
line_items.each do |line_item|
summary_hash[:total_excl_fees_and_tax] += total_excl_fees_and_tax.call(line_item)
summary_hash[:total_excl_vat] += total_excl_vat.call(line_item)
summary_hash[:total_fees_excl_tax] += total_fees_excl_tax.call(line_item)
summary_hash[:total_tax_on_fees] += total_tax_on_fees.call(line_item)
summary_hash[:total_tax] += total_tax.call(line_item)
summary_hash[:total] += total.call(line_item)
summary_hash[:total_tax_on_product] += total_tax_on_product.call(line_item)
end
summary_hash
end
}
]
end
private
def order_permissions
return @order_permissions unless @order_permissions.nil?
@order_permissions = ::Permissions::Order.new(@user, ransack_params)
end
def report_line_items
@report_line_items ||= Reporting::LineItems.new(order_permissions, params)
end
def line_item_includes
[{
order: [
:distributor,
:adjustments,
],
variant: [:product, :supplier]
}]
end
end
end
end
end