mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-24 20:36:49 +00:00
Sort orders by last name, then first name i.e. the same way bulk order management works
This commit is contained in:
@@ -16,7 +16,8 @@ module Spree
|
||||
searchable_attributes :number, :state, :shipment_state, :payment_state, :distributor_id,
|
||||
:order_cycle_id, :email, :total, :customer_id
|
||||
searchable_associations :shipping_method, :bill_address, :distributor
|
||||
searchable_scopes :complete, :incomplete
|
||||
searchable_scopes :complete, :incomplete, :sort_by_billing_address_name_asc,
|
||||
:sort_by_billing_address_name_desc
|
||||
|
||||
checkout_flow do
|
||||
go_to_state :address
|
||||
@@ -145,6 +146,14 @@ module Spree
|
||||
end
|
||||
}
|
||||
|
||||
scope :sort_by_billing_address_name_asc, -> {
|
||||
joins(:bill_address).order("spree_addresses.lastname ASC, spree_addresses.firstname ASC")
|
||||
}
|
||||
|
||||
scope :sort_by_billing_address_name_desc, -> {
|
||||
joins(:bill_address).order("spree_addresses.lastname DESC, spree_addresses.firstname DESC")
|
||||
}
|
||||
|
||||
scope :with_line_items_variants_and_products_outer, lambda {
|
||||
left_outer_joins(line_items: { variant: :product })
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
%th
|
||||
= t(:products_distributor)
|
||||
|
||||
- columns = ['completed_at', 'number', 'state', 'payment_state', 'shipment_state', 'email', 'bill_address_lastname', 'total']
|
||||
- columns = ['completed_at', 'number', 'state', 'payment_state', 'shipment_state', 'email', 'billing_address_name', 'total']
|
||||
|
||||
= render partial: "spree/admin/shared/stimulus_sortable_header", collection: columns, as: :column,
|
||||
locals: { sorted: params.dig(:q, :s), default: "completed_at desc" }
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
%a{ href: "mailto:#{order.email}", target: "_blank" }
|
||||
= order.email
|
||||
%td
|
||||
= order.bill_address.full_name
|
||||
= order.bill_address.full_name_for_sorting
|
||||
%td.align-center
|
||||
%span
|
||||
= order.display_total
|
||||
|
||||
@@ -4346,7 +4346,7 @@ See the %{link} to find out more about %{sitename}'s features and to start using
|
||||
shipment_state: "Shipment State"
|
||||
email: "Email"
|
||||
total: "Total"
|
||||
bill_address_lastname: "Name"
|
||||
billing_address_name: "Name"
|
||||
general_settings:
|
||||
edit:
|
||||
legal_settings: "Legal Settings"
|
||||
|
||||
@@ -410,22 +410,22 @@ describe '
|
||||
|
||||
context "orders with different billing addresses" do
|
||||
before do
|
||||
billing_address2.update!(lastname: "Mad Hatter")
|
||||
billing_address3.update!(lastname: "Duchess")
|
||||
billing_address4.update!(lastname: "Cheshire Cat")
|
||||
billing_address5.update!(lastname: "Alice")
|
||||
billing_address2.update!(firstname: "Mad", lastname: "Hatter")
|
||||
billing_address3.update!(firstname: "Alice", lastname: "Smith")
|
||||
billing_address4.update!(firstname: "Cheshire", lastname: "Cat")
|
||||
billing_address5.update!(lastname: "Bob", lastname: "Smith")
|
||||
login_as_admin
|
||||
visit spree.admin_orders_path
|
||||
end
|
||||
|
||||
it "orders by last name" do
|
||||
it "orders by last name then first name" do
|
||||
find("a", text: 'NAME').click # sets ascending ordering
|
||||
expect(page).to have_content(
|
||||
/#{order5.number}.*#{order4.number}.*#{order3.number}.*#{order2.number}/m
|
||||
/#{order4.number}.*#{order2.number}.*#{order3.number}.*#{order5.number}/m
|
||||
)
|
||||
find("a", text: 'NAME').click # sets descending ordering
|
||||
expect(page).to have_content(
|
||||
/#{order2.number}.*#{order3.number}.*#{order4.number}.*#{order5.number}/m
|
||||
/#{order5.number}.*#{order3.number}.*#{order2.number}.*#{order4.number}/m
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user