Merge pull request #5429 from mkllnk/5400-orders-distributors-report

5400 List each order only once in Orders And Distributors report
This commit is contained in:
Luis Ramos
2020-05-20 20:36:58 +01:00
committed by GitHub
3 changed files with 29 additions and 8 deletions

View File

@@ -226,7 +226,6 @@ Layout/LineLength:
- spec/lib/open_food_network/group_buy_report_spec.rb
- spec/lib/open_food_network/lettuce_share_report_spec.rb
- spec/lib/open_food_network/option_value_namer_spec.rb
- spec/lib/open_food_network/order_and_distributor_report_spec.rb
- spec/lib/open_food_network/order_cycle_form_applicator_spec.rb
- spec/lib/open_food_network/order_cycle_permissions_spec.rb
- spec/lib/open_food_network/order_grouper_spec.rb

View File

@@ -34,7 +34,9 @@ module OpenFoodNetwork
end
def search
@permissions.visible_orders.complete.not_state(:canceled).search(@params[:q])
@permissions.visible_orders.select("DISTINCT spree_orders.*").
complete.not_state(:canceled).
search(@params[:q])
end
def table

View File

@@ -8,11 +8,16 @@ module OpenFoodNetwork
subject = OrderAndDistributorReport.new nil
header = subject.header
expect(header).to eq(['Order date', 'Order Id',
'Customer Name', 'Customer Email', 'Customer Phone', 'Customer City',
'SKU', 'Item name', 'Variant', 'Quantity', 'Max Quantity', 'Cost', 'Shipping Cost',
'Payment Method',
'Distributor', 'Distributor address', 'Distributor city', 'Distributor postcode', 'Shipping Method', 'Shipping instructions'])
expect(header).to eq(
[
'Order date', 'Order Id',
'Customer Name', 'Customer Email', 'Customer Phone', 'Customer City',
'SKU', 'Item name', 'Variant', 'Quantity', 'Max Quantity', 'Cost', 'Shipping Cost',
'Payment Method',
'Distributor', 'Distributor address', 'Distributor city', 'Distributor postcode',
'Shipping Method', 'Shipping instructions'
]
)
end
context 'with completed order' do
@@ -21,7 +26,12 @@ module OpenFoodNetwork
let(:product) { create(:product) }
let(:shipping_method) { create(:shipping_method) }
let(:shipping_instructions) { 'pick up on thursday please!' }
let(:order) { create(:order, state: 'complete', completed_at: Time.zone.now, distributor: distributor, bill_address: bill_address, special_instructions: shipping_instructions) }
let(:order) {
create(:order,
state: 'complete', completed_at: Time.zone.now,
distributor: distributor, bill_address: bill_address,
special_instructions: shipping_instructions)
}
let(:payment_method) { create(:payment_method, distributors: [distributor]) }
let(:payment) { create(:payment, payment_method: payment_method, order: order) }
let(:line_item) { create(:line_item_with_shipment, product: product, order: order) }
@@ -37,6 +47,7 @@ module OpenFoodNetwork
table = subject.table
expect(table.size).to eq 1
expect(table[0]).to eq([
order.reload.completed_at.strftime("%F %T"),
order.id,
@@ -60,6 +71,15 @@ module OpenFoodNetwork
shipping_instructions
])
end
it "prints one row per line item" do
create(:line_item_with_shipment, order: order)
subject = OrderAndDistributorReport.new(create(:admin_user), {}, true)
table = subject.table
expect(table.size).to eq 2
end
end
end
end