diff --git a/app/views/admin/reports/filters/_customers.html.haml b/app/views/admin/reports/filters/_customers.html.haml index f4aa2ca77b..8cbb78b39b 100644 --- a/app/views/admin/reports/filters/_customers.html.haml +++ b/app/views/admin/reports/filters/_customers.html.haml @@ -1,3 +1,5 @@ += render 'admin/reports/date_range_form', f: f + .row .alpha.two.columns= label_tag nil, t(:report_customers_hub) .omega.fourteen.columns diff --git a/lib/reporting/reports/customers/base.rb b/lib/reporting/reports/customers/base.rb index 759178b6df..1773be4620 100644 --- a/lib/reporting/reports/customers/base.rb +++ b/lib/reporting/reports/customers/base.rb @@ -12,7 +12,19 @@ module Reporting end def filter(orders) - filter_to_distributor filter_to_order_cycle orders + filter_to_completed_at filter_to_distributor filter_to_order_cycle orders + end + + def filter_to_completed_at(orders) + if params[:q] && + params[:q][:completed_at_gt].present? && + params[:q][:completed_at_lt].present? + orders.where("completed_at >= ? AND completed_at <= ?", + params[:q][:completed_at_gt], + params[:q][:completed_at_lt]) + else + orders + end end def filter_to_distributor(orders) diff --git a/spec/lib/reports/customers_report_spec.rb b/spec/lib/reports/customers_report_spec.rb index c5f987885e..df8c3e4aa9 100644 --- a/spec/lib/reports/customers_report_spec.rb +++ b/spec/lib/reports/customers_report_spec.rb @@ -284,6 +284,16 @@ module Reporting expect(subject.filter(orders)).to eq(orders) end + it "filters to a specific completed_at date" do + o1 = create(:order, completed_at: 1.day.ago) + o2 = create(:order, completed_at: 3.days.ago) + o3 = create(:order, completed_at: 5.days.ago) + + allow(subject).to receive(:params).and_return({ q: { completed_at_gt: 1.day.before(o2.completed_at), + completed_at_lt: 1.day.after(o2.completed_at) } }) + expect(subject.filter(orders)).to eq([o2]) + end + it "filters to a specific distributor" do d1 = create(:distributor_enterprise) d2 = create(:distributor_enterprise)