From 5f2f5456a0b634d5f68bf7effca37a51bcaa9e0a Mon Sep 17 00:00:00 2001 From: Nihal Mohammed Date: Tue, 15 Mar 2022 04:28:52 +0530 Subject: [PATCH] Add code to sort order by supplier when Enterprise user chooses to --- app/helpers/application_helper.rb | 16 ++++++++++++++++ app/models/spree/line_item.rb | 4 ++-- app/models/spree/order.rb | 8 ++++++++ .../spree/admin/orders/_invoice_table.html.haml | 3 ++- .../spree/admin/orders/_invoice_table2.html.haml | 3 ++- 5 files changed, 30 insertions(+), 4 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 8a507bfa98..7e3d6b62e1 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -57,4 +57,20 @@ module ApplicationHelper wicked_pdf_stylesheet_pack_tag(source) end end + + def line_items_for_invoice(order) + if @order.distributor.preferred_invoice_order_by_supplier + order.line_items.sort do |a, b| + if a.supplier == b.supplier + a.product.name <=> b.product.name + else + a.supplier.name <=> b.supplier.name + end + end + else + order.line_items.sort do |a, b| + a.product.name <=> b.product.name + end + end + end end diff --git a/app/models/spree/line_item.rb b/app/models/spree/line_item.rb index 4b698f3dbd..58c70095c0 100644 --- a/app/models/spree/line_item.rb +++ b/app/models/spree/line_item.rb @@ -226,7 +226,7 @@ module Spree def update_inventory return unless changed? - + scoper.scope(variant) Spree::OrderInventory.new(order).verify(self, target_shipment) end @@ -234,7 +234,7 @@ module Spree def update_order return unless saved_changes.present? || destroyed? - # update the order totals, etc. + # update the order totals, etc. order.create_tax_charge! end diff --git a/app/models/spree/order.rb b/app/models/spree/order.rb index 2693ef5bb9..326188cbb9 100644 --- a/app/models/spree/order.rb +++ b/app/models/spree/order.rb @@ -608,6 +608,14 @@ module Spree address end + def sorted_line_items + if distributor.preferred_invoice_order_by_supplier + line_items.sort_by { |li| [li.supplier.name, li.product.name] } + else + line_items.sort_by { |li| [li.product.name]} + end + end + private def fee_handler diff --git a/app/views/spree/admin/orders/_invoice_table.html.haml b/app/views/spree/admin/orders/_invoice_table.html.haml index c847bd81c9..4b90522915 100644 --- a/app/views/spree/admin/orders/_invoice_table.html.haml +++ b/app/views/spree/admin/orders/_invoice_table.html.haml @@ -10,7 +10,7 @@ %th{:align => "right", :width => "15%"} %h4= t(:invoice_column_price) %tbody - - @order.line_items.sort_by{ |li| li.product.name }.each do |item| + - @order.sorted_line_items.each do |item| %tr %td = render 'spree/shared/line_item_name', line_item: item @@ -23,6 +23,7 @@ = item.included_tax > 0 ? item.display_included_tax : "" %td{:align => "right"} = item.display_amount_with_adjustments + - checkout_adjustments_for(@order, exclude: [:line_item]).reject{ |a| a.amount == 0 }.reverse_each do |adjustment| - taxable = adjustment.adjustable_type == "Spree::Shipment" ? adjustment.adjustable : adjustment %tr diff --git a/app/views/spree/admin/orders/_invoice_table2.html.haml b/app/views/spree/admin/orders/_invoice_table2.html.haml index 2d42591ddc..eb83714747 100644 --- a/app/views/spree/admin/orders/_invoice_table2.html.haml +++ b/app/views/spree/admin/orders/_invoice_table2.html.haml @@ -13,7 +13,7 @@ %th{:align => "right", :width => "15%"} %h5= t(:invoice_column_tax_rate) %tbody - - @order.line_items.sort_by{ |li| li.product.name }.each do |item| + - @order.sorted_line_items.each do |item| %tr %td = render 'spree/shared/line_item_name', line_item: item @@ -29,6 +29,7 @@ - if @order.total_tax > 0 %td{:align => "right"} = display_line_item_tax_rates(item) + - checkout_adjustments_for(@order, exclude: [:line_item]).reject{ |a| a.amount == 0 }.reverse_each do |adjustment| %tr %td