From 13a45557a451780a252c038b9a6b35e07da511cf Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Thu, 17 Mar 2022 10:20:46 +0100 Subject: [PATCH 1/8] Load cart already opened boolean thanks to EnterprisesHelper --- app/controllers/concerns/checkout_callbacks.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/controllers/concerns/checkout_callbacks.rb b/app/controllers/concerns/checkout_callbacks.rb index af87da469f..c2d05918aa 100644 --- a/app/controllers/concerns/checkout_callbacks.rb +++ b/app/controllers/concerns/checkout_callbacks.rb @@ -2,6 +2,7 @@ module CheckoutCallbacks extend ActiveSupport::Concern + include EnterprisesHelper included do # We need pessimistic locking to avoid race conditions. @@ -13,7 +14,8 @@ module CheckoutCallbacks prepend_before_action :require_order_cycle prepend_before_action :require_distributor_chosen - before_action :load_order, :associate_user, :load_saved_addresses, :load_saved_credit_cards + before_action :load_order, :associate_user, :load_saved_addresses, :load_saved_credit_cards, + :load_already_ordered before_action :load_shipping_methods, if: -> { params[:step] == "details" } before_action :ensure_order_not_completed @@ -52,6 +54,10 @@ module CheckoutCallbacks order(:name) end + def load_already_ordered + @already_ordered = show_bought_items? + end + def redirect_to_shop? !@order || !@order.checkout_allowed? || From ac361d3b64dca6ef303e3394f8aec3bee5c25d9a Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Thu, 17 Mar 2022 10:22:38 +0100 Subject: [PATCH 2/8] Add already_opened on each step --- .../split_checkout/_already_ordered.html.haml | 3 +++ app/views/split_checkout/_checkout.html.haml | 1 + app/webpacker/css/darkswarm/split-checkout.scss | 14 ++++++++++++++ config/locales/en.yml | 3 +++ 4 files changed, 21 insertions(+) create mode 100644 app/views/split_checkout/_already_ordered.html.haml diff --git a/app/views/split_checkout/_already_ordered.html.haml b/app/views/split_checkout/_already_ordered.html.haml new file mode 100644 index 0000000000..a5361811cf --- /dev/null +++ b/app/views/split_checkout/_already_ordered.html.haml @@ -0,0 +1,3 @@ +.already-ordered + .panel.medium-6 + = t("split_checkout.already_ordered.message_html", cart: link_to(t('split_checkout.already_ordered.cart'), "#{main_app.cart_path}#bought-products")) diff --git a/app/views/split_checkout/_checkout.html.haml b/app/views/split_checkout/_checkout.html.haml index f26c8c4ca9..1100f1b28e 100644 --- a/app/views/split_checkout/_checkout.html.haml +++ b/app/views/split_checkout/_checkout.html.haml @@ -1,4 +1,5 @@ %checkout.row#checkout .small-12.medium-12.columns = render partial: "split_checkout/tabs" + = render partial: "split_checkout/already_ordered" if @already_ordered = render partial: "split_checkout/form" diff --git a/app/webpacker/css/darkswarm/split-checkout.scss b/app/webpacker/css/darkswarm/split-checkout.scss index a336878767..cd7a821fb0 100644 --- a/app/webpacker/css/darkswarm/split-checkout.scss +++ b/app/webpacker/css/darkswarm/split-checkout.scss @@ -58,6 +58,20 @@ } } +.already-ordered { + .panel { + margin-top: 3rem; + background-color: $grey-250; + border: 1px solid $tiny-blue; + color: $grey-700; + + &.medium-6, &.medium-10 { + margin-right: auto; + margin-left: auto; + } + } +} + .checkout-step { margin-top: 3rem; diff --git a/config/locales/en.yml b/config/locales/en.yml index 585bc57ff0..4defdc791a 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1745,6 +1745,9 @@ en: your_details_without_number: Your details payment_method_without_number: Payment method order_summary_without_number: Order summary + already_ordered: + cart: "cart" + message_html: "You have an order for this order cycle already. Check the %{cart} to see the items you ordered before. You can also cancel items as long as the order cycle is open." step1: your_details: title: Your details From 6f6ad05ac2ce21e958b94b52126d973b2ac1f9b7 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Thu, 17 Mar 2022 10:22:58 +0100 Subject: [PATCH 3/8] Factorize some css rules for panel --- app/webpacker/css/darkswarm/split-checkout.scss | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/webpacker/css/darkswarm/split-checkout.scss b/app/webpacker/css/darkswarm/split-checkout.scss index cd7a821fb0..dde049254f 100644 --- a/app/webpacker/css/darkswarm/split-checkout.scss +++ b/app/webpacker/css/darkswarm/split-checkout.scss @@ -72,6 +72,11 @@ } } +.already-ordered .panel, #distributor_address.panel { + font-size: 0.875rem; + padding: 1rem; +} + .checkout-step { margin-top: 3rem; @@ -133,9 +138,6 @@ } #distributor_address.panel { - font-size: 0.875rem; - padding: 1rem; - span { white-space: pre-wrap; } From 790bcc9ff2f1c252a070a091fc96aaad1b308615 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Wed, 16 Mar 2022 20:28:52 +0000 Subject: [PATCH 4/8] Adds spec on open order information --- spec/system/consumer/split_checkout_spec.rb | 22 ++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/spec/system/consumer/split_checkout_spec.rb b/spec/system/consumer/split_checkout_spec.rb index be816b5ae3..dad1655300 100644 --- a/spec/system/consumer/split_checkout_spec.rb +++ b/spec/system/consumer/split_checkout_spec.rb @@ -505,7 +505,10 @@ describe "As a consumer, I want to checkout my order", js: true do end context "summary step" do - let(:order) { create(:order_ready_for_confirmation, distributor: distributor) } + let(:order) { + create(:order_ready_for_confirmation, distributor: distributor, + order_cycle: order_cycle, user_id: user.id) + } describe "completing the checkout" do it "keeps the distributor selected for the current user after completion" do @@ -667,6 +670,23 @@ describe "As a consumer, I want to checkout my order", js: true do expect(page).to have_current_path checkout_step_path(:payment) end end + + context "with previous open orders" do + let!(:prev_order) { + create(:completed_order_with_totals, + order_cycle: order_cycle, distributor: distributor, user_id: order.user_id) + } + + before do + order.distributor.allow_order_changes = true + order.distributor.save + end + + it "informs about previous orders" do + pending("issue #9007") + expect(page).to have_content("You have an order for this order cycle already.") + end + end end end end From df6cd5b266dcc5d04c033b447be2382cbfbcf1e2 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Thu, 17 Mar 2022 10:29:01 +0100 Subject: [PATCH 5/8] Add already ordered panel only on summary step --- app/views/split_checkout/_checkout.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/split_checkout/_checkout.html.haml b/app/views/split_checkout/_checkout.html.haml index 1100f1b28e..3e4e5485c5 100644 --- a/app/views/split_checkout/_checkout.html.haml +++ b/app/views/split_checkout/_checkout.html.haml @@ -1,5 +1,5 @@ %checkout.row#checkout .small-12.medium-12.columns = render partial: "split_checkout/tabs" - = render partial: "split_checkout/already_ordered" if @already_ordered + = render partial: "split_checkout/already_ordered" if @already_ordered && checkout_step?(:summary) = render partial: "split_checkout/form" From 621933c727071e1f540b90cd897b5d1aeab65be0 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Thu, 17 Mar 2022 10:40:38 +0100 Subject: [PATCH 6/8] Improve spec by creating its opposite ie. when distributor don't allow order changes --- spec/system/consumer/split_checkout_spec.rb | 39 +++++++++++++-------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/spec/system/consumer/split_checkout_spec.rb b/spec/system/consumer/split_checkout_spec.rb index dad1655300..6244f74534 100644 --- a/spec/system/consumer/split_checkout_spec.rb +++ b/spec/system/consumer/split_checkout_spec.rb @@ -506,8 +506,7 @@ describe "As a consumer, I want to checkout my order", js: true do context "summary step" do let(:order) { - create(:order_ready_for_confirmation, distributor: distributor, - order_cycle: order_cycle, user_id: user.id) + create(:order_ready_for_confirmation, distributor: distributor) } describe "completing the checkout" do @@ -670,22 +669,32 @@ describe "As a consumer, I want to checkout my order", js: true do expect(page).to have_current_path checkout_step_path(:payment) end end + end - context "with previous open orders" do - let!(:prev_order) { - create(:completed_order_with_totals, - order_cycle: order_cycle, distributor: distributor, user_id: order.user_id) - } + context "with previous open orders" do + let(:order) { + create(:order_ready_for_confirmation, distributor: distributor, + order_cycle: order_cycle, user_id: user.id) + } + let!(:prev_order) { + create(:completed_order_with_totals, + order_cycle: order_cycle, distributor: distributor, user_id: order.user_id) + } - before do - order.distributor.allow_order_changes = true - order.distributor.save - end + it "informs about previous orders if distributor allow order changes" do + order.distributor.allow_order_changes = true + order.distributor.save + visit checkout_step_path(:summary) - it "informs about previous orders" do - pending("issue #9007") - expect(page).to have_content("You have an order for this order cycle already.") - end + expect(page).to have_content("You have an order for this order cycle already.") + end + + it "don't display any message if distributor don't allow order changes" do + order.distributor.allow_order_changes = false + order.distributor.save + visit checkout_step_path(:summary) + + expect(page).to_not have_content("You have an order for this order cycle already.") end end end From 9a5318965c805f034f993dd25839c3543c5c3592 Mon Sep 17 00:00:00 2001 From: jibees Date: Thu, 24 Mar 2022 09:05:49 +0100 Subject: [PATCH 7/8] Use as an helper Co-Authored-By: Maikel --- app/controllers/concerns/checkout_callbacks.rb | 9 ++------- app/views/split_checkout/_checkout.html.haml | 2 +- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/app/controllers/concerns/checkout_callbacks.rb b/app/controllers/concerns/checkout_callbacks.rb index c2d05918aa..920991a8b1 100644 --- a/app/controllers/concerns/checkout_callbacks.rb +++ b/app/controllers/concerns/checkout_callbacks.rb @@ -2,7 +2,7 @@ module CheckoutCallbacks extend ActiveSupport::Concern - include EnterprisesHelper + helper EnterprisesHelper included do # We need pessimistic locking to avoid race conditions. @@ -14,8 +14,7 @@ module CheckoutCallbacks prepend_before_action :require_order_cycle prepend_before_action :require_distributor_chosen - before_action :load_order, :associate_user, :load_saved_addresses, :load_saved_credit_cards, - :load_already_ordered + before_action :load_order, :associate_user, :load_saved_addresses, :load_saved_credit_cards before_action :load_shipping_methods, if: -> { params[:step] == "details" } before_action :ensure_order_not_completed @@ -54,10 +53,6 @@ module CheckoutCallbacks order(:name) end - def load_already_ordered - @already_ordered = show_bought_items? - end - def redirect_to_shop? !@order || !@order.checkout_allowed? || diff --git a/app/views/split_checkout/_checkout.html.haml b/app/views/split_checkout/_checkout.html.haml index 3e4e5485c5..aa72ebc2f1 100644 --- a/app/views/split_checkout/_checkout.html.haml +++ b/app/views/split_checkout/_checkout.html.haml @@ -1,5 +1,5 @@ %checkout.row#checkout .small-12.medium-12.columns = render partial: "split_checkout/tabs" - = render partial: "split_checkout/already_ordered" if @already_ordered && checkout_step?(:summary) + = render partial: "split_checkout/already_ordered" if show_bought_items? && checkout_step?(:summary) = render partial: "split_checkout/form" From 742ae761a3460737055b8c2533e92a62b5ca65a0 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Mon, 28 Mar 2022 11:34:37 +1100 Subject: [PATCH 8/8] Move helper statement to controller It's not available in concerns. --- app/controllers/concerns/checkout_callbacks.rb | 1 - app/controllers/split_checkout_controller.rb | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/concerns/checkout_callbacks.rb b/app/controllers/concerns/checkout_callbacks.rb index 920991a8b1..af87da469f 100644 --- a/app/controllers/concerns/checkout_callbacks.rb +++ b/app/controllers/concerns/checkout_callbacks.rb @@ -2,7 +2,6 @@ module CheckoutCallbacks extend ActiveSupport::Concern - helper EnterprisesHelper included do # We need pessimistic locking to avoid race conditions. diff --git a/app/controllers/split_checkout_controller.rb b/app/controllers/split_checkout_controller.rb index 6e69f85bf2..27fdb901ab 100644 --- a/app/controllers/split_checkout_controller.rb +++ b/app/controllers/split_checkout_controller.rb @@ -14,6 +14,7 @@ class SplitCheckoutController < ::BaseController helper 'terms_and_conditions' helper 'checkout' helper 'spree/orders' + helper EnterprisesHelper helper OrderHelper before_action :set_checkout_redirect