mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-14 23:47:48 +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,
|
searchable_attributes :number, :state, :shipment_state, :payment_state, :distributor_id,
|
||||||
:order_cycle_id, :email, :total, :customer_id
|
:order_cycle_id, :email, :total, :customer_id
|
||||||
searchable_associations :shipping_method, :bill_address, :distributor
|
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
|
checkout_flow do
|
||||||
go_to_state :address
|
go_to_state :address
|
||||||
@@ -145,6 +146,14 @@ module Spree
|
|||||||
end
|
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 {
|
scope :with_line_items_variants_and_products_outer, lambda {
|
||||||
left_outer_joins(line_items: { variant: :product })
|
left_outer_joins(line_items: { variant: :product })
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
%th
|
%th
|
||||||
= t(:products_distributor)
|
= 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,
|
= render partial: "spree/admin/shared/stimulus_sortable_header", collection: columns, as: :column,
|
||||||
locals: { sorted: params.dig(:q, :s), default: "completed_at desc" }
|
locals: { sorted: params.dig(:q, :s), default: "completed_at desc" }
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
%a{ href: "mailto:#{order.email}", target: "_blank" }
|
%a{ href: "mailto:#{order.email}", target: "_blank" }
|
||||||
= order.email
|
= order.email
|
||||||
%td
|
%td
|
||||||
= order.bill_address.full_name
|
= order.bill_address.full_name_for_sorting
|
||||||
%td.align-center
|
%td.align-center
|
||||||
%span
|
%span
|
||||||
= order.display_total
|
= 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"
|
shipment_state: "Shipment State"
|
||||||
email: "Email"
|
email: "Email"
|
||||||
total: "Total"
|
total: "Total"
|
||||||
bill_address_lastname: "Name"
|
billing_address_name: "Name"
|
||||||
general_settings:
|
general_settings:
|
||||||
edit:
|
edit:
|
||||||
legal_settings: "Legal Settings"
|
legal_settings: "Legal Settings"
|
||||||
|
|||||||
@@ -410,22 +410,22 @@ describe '
|
|||||||
|
|
||||||
context "orders with different billing addresses" do
|
context "orders with different billing addresses" do
|
||||||
before do
|
before do
|
||||||
billing_address2.update!(lastname: "Mad Hatter")
|
billing_address2.update!(firstname: "Mad", lastname: "Hatter")
|
||||||
billing_address3.update!(lastname: "Duchess")
|
billing_address3.update!(firstname: "Alice", lastname: "Smith")
|
||||||
billing_address4.update!(lastname: "Cheshire Cat")
|
billing_address4.update!(firstname: "Cheshire", lastname: "Cat")
|
||||||
billing_address5.update!(lastname: "Alice")
|
billing_address5.update!(lastname: "Bob", lastname: "Smith")
|
||||||
login_as_admin
|
login_as_admin
|
||||||
visit spree.admin_orders_path
|
visit spree.admin_orders_path
|
||||||
end
|
end
|
||||||
|
|
||||||
it "orders by last name" do
|
it "orders by last name then first name" do
|
||||||
find("a", text: 'NAME').click # sets ascending ordering
|
find("a", text: 'NAME').click # sets ascending ordering
|
||||||
expect(page).to have_content(
|
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
|
find("a", text: 'NAME').click # sets descending ordering
|
||||||
expect(page).to have_content(
|
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
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user