Matt-Yorkley
0c4e191f3b
Render enterprise rows as a collection
...
Note: this is a bit like an N+1 query, but for rendering. If there are 30 enterprises, the partial file would be loaded and parsed 30 times; but if we render it as a collection it'll load the partial once and substantially improve the performance.
2021-05-19 08:48:25 +01:00
Pau Pérez Fabregat
5f9679655c
Merge pull request #7645 from Matt-Yorkley/stripe-payment-processing
...
Stripe payment processing
2021-05-17 16:17:21 +02:00
Matt-Yorkley
794216713a
Ensure payment is processed if order is in completed state
2021-05-16 23:03:07 +01:00
Matt-Yorkley
a2862e604c
Find relevant payment that matches the payment intent, not the last payment
2021-05-16 23:00:31 +01:00
Matt-Yorkley
8429da3d2a
Remove unused argument from ProcessPaymentIntent
2021-05-16 22:19:01 +01:00
Matt-Yorkley
2e63cd8116
Add explanatory comment on payment processing flow
2021-05-16 20:11:45 +01:00
Matt-Yorkley
52e0d84238
Reload in-memory payment before checking it's new state
...
The state should have changed in the database if the payment was processed successfully, and the memoized version here will not know that without a reload.
2021-05-16 20:11:45 +01:00
Matt-Yorkley
5725535715
Fix payment state checking
2021-05-16 20:11:45 +01:00
Matt-Yorkley
fd021d4778
Refactor payment intent status checking and return "ok" if the payment has already been processed successfully in a previous request
...
If the page is reloaded after the payment has already gone through, we can skip the processing and give a non-error response; the payment is already completed and Stripe's response confirms it was successful.
2021-05-16 20:11:45 +01:00
Matt-Yorkley
2b9f9fce86
Fix flash session memory-effect when showing errors after payment processing
...
We're not doing a redirect after setting this flash message, so we need to ensure it's discarded after the current page load.
2021-05-16 20:11:45 +01:00
Matt-Yorkley
81aac442f2
Improve conditional in raise_if_not_in_capture_state
2021-05-16 20:11:45 +01:00
Matt-Yorkley
5805104d13
Tidy up controller and add explanatory comment
2021-05-16 12:19:04 +01:00
Matt-Yorkley
e686a4f627
Move raising of errors when payment intent state != "requires_capture" out of PaymentIntentValidator service
...
When we're fetching the payment intent via PaymentIntentValidator in StripeSCA#purhcase (to capture it), we want it to fail loudly if it's not in "requires_capture" state. We're now also re-using the same PaymentIntentValidator service to check if payment processing was *successful*, in which case we need it *not* to fail loudly if the state == "succeeded", eg != "requires_capture".
2021-05-16 12:19:04 +01:00
Andy Brett
c7f80d86a8
Merge pull request #7638 from Matt-Yorkley/dead-code-order-distribution
...
Delete dead code in OrdersController#update_distribution
2021-05-15 12:40:25 -07:00
Andy Brett
f2c3b096a0
Merge pull request #7566 from luisramos0/erb
...
[Rails 6.0] Fix problem in erb template by explicitly setting format to js
2021-05-15 10:45:01 -07:00
Matt-Yorkley
2e248744c0
Merge pull request #7520 from Matt-Yorkley/shipment-controller
...
Shipment controller: test coverage and improvements
2021-05-13 20:26:51 +02:00
Matt-Yorkley
82a6befce7
Delete dead code in OrdersController#update_distribution
...
I can't see any evidence that these params ever get sent to this action...
2021-05-13 15:29:53 +01:00
Matt-Yorkley
99cf23df26
Merge pull request #7530 from Matt-Yorkley/email-after-commit
...
Email after commit
2021-05-12 21:22:55 +02:00
Matt-Yorkley
f49d4592a0
Merge pull request #7506 from guidoDutra/5546-prevent-deleting-only-item-in-confirmed-order
...
prevent deleting only item in confirmed order
2021-05-12 21:10:09 +02:00
Andy Brett
3239c893ba
Merge pull request #7590 from viktorsmari/ransack-search-deprecation
...
Ransack.search is deprecated. Use .ransack instead
2021-05-10 08:43:09 -07:00
Andy Brett
66da72ccc2
use raw to render stripe mock js
2021-05-08 17:29:38 -07:00
Viktor Smari
6a342ae368
Ransack.search is deprecated. Use .ransack instead
...
https://github.com/activerecord-hackery/ransack/pull/975
2021-05-09 01:05:37 +02:00
Luis Ramos
de000228cf
Fix problem in erb template by explicitly setting format to js while calling it
2021-05-06 23:52:16 +01:00
Pau Perez
9a63f38790
I18n-ize error messages.
2021-05-06 16:34:29 +02:00
Pau Perez
69b91ea136
Wait until the end to mark payment as processed
...
This gives us the opportunity to retry the operation in case the
processing fails.
2021-05-06 16:19:01 +02:00
Pau Perez
dea6a01e61
Handle SCA payments that can't complete
2021-05-06 16:19:01 +02:00
Pau Perez
2147584daf
Validate intents against Stripe and display errors
...
Now the existing validation is redundant. It's Stripe's API who does
that now. It's up to them to decide what's a valid intent.
2021-05-06 16:19:01 +02:00
Pau Perez
b723ed4a98
Skip Stripe logic when no payment data is passed
2021-05-06 16:19:01 +02:00
Andy Brett
a7331efd67
Merge pull request #7477 from luisramos0/require_dependency
...
Remove require_dependency or use require
2021-05-05 13:24:19 -07:00
Andy Brett
82845e1cfc
Merge pull request #7528 from Matt-Yorkley/has_many_through
...
Reorder has_many relationship with :through option
2021-05-05 08:08:15 -07:00
Andy Brett
3e714b1539
Merge pull request #7527 from Matt-Yorkley/dead-code-deleted
...
Remove #deleted? method from Product and Variant
2021-05-05 08:07:39 -07:00
Andy Brett
002420304d
Merge pull request #7526 from Matt-Yorkley/dead-currency
...
Remove currency from OrderContents
2021-05-05 08:06:53 -07:00
Matt-Yorkley
e2a411c23c
Add map helper to RegistrationController
...
Fixes 3 errors including:
Registration Terms of Service agreement if accepting Terms of Service is not required allows registration as normal
Failure/Error: super
ActionView::Template::Error:
undefined method `using_google_maps?' for #<#<Class:0x00007fd4949c4558>:0x00007fd499dd0ae8>
# ./app/helpers/application_helper.rb:20:in `method_missing'
# ./app/views/registration/steps/_details.html.haml:60:in `_app_views_registration_steps__details_html_haml___1911121144363058234_70275472163280'
# ./app/views/registration/index.html.haml:12:in `block in _app_views_registration_index_html_haml__993897347679518865_70275545598940'
# ./app/views/registration/index.html.haml:11:in `each'
# ./app/views/registration/index.html.haml:11:in `_app_views_registration_index_html_haml__993897347679518865_70275545598940'
# ./lib/open_food_network/rack_request_blocker.rb:36:in `call'
# ------------------
# --- Caused by: ---
# NoMethodError:
# undefined method `using_google_maps?' for #<#<Class:0x00007fd4949c4558>:0x00007fd499dd0ae8>
# ./app/helpers/application_helper.rb:20:in `method_missing'
2021-05-03 14:17:54 +01:00
Matt-Yorkley
aa013ef76a
Update redirect_back syntax for Rails 5
...
Introduced in 5.0, the old syntax is removed in 5.2
2021-05-03 14:17:54 +01:00
Matt-Yorkley
a645b8c58f
Re-apply previous 5.2 commit: Don't reload payments in after_save callback
...
This causes issues in master, but is needed in the 5.2 branch.
2021-05-03 14:17:54 +01:00
Matt-Yorkley
31fc6201fc
Include payment method helper in ApplicationController
2021-05-03 14:17:54 +01:00
Matt-Yorkley
ab65b01fcf
Rename payments helper
2021-05-03 14:17:54 +01:00
Matt-Yorkley
1de68d091a
Update guard clause in line item callbacks (take two)
...
The `changed?` method is more accurately replaced by `saved_changes.present?`
In some cases here (where the object had just been saved for the first time) the guard clause was still stopping execution unexpectedly.
2021-05-03 14:17:54 +01:00
Matt-Yorkley
ac53df37d9
Fix callback in LineItem
...
#changed? here was not working as before, and the code was never getting past this guard in various places where previously it did. This meant the callback was effectively disabled, and order.update! was not being called when it should be.
2021-05-03 14:17:54 +01:00
Andy Brett
705666ecd0
fix /spec/models/spree/credit_card_spec.rb:301
2021-05-03 14:17:54 +01:00
Luis Ramos
f5a7ff0f0a
Switch from map, that does not exist in ActionController::Parameters, to each
2021-05-03 14:17:54 +01:00
Andy Brett
203dbb7a8b
Revert "Switch from map, that does not exist in ActionController::Parameters, to each"
...
This reverts commit 69a15d4f04 .
2021-05-03 14:17:54 +01:00
Andy Brett
d255ca22f5
use new attribute_changed method for taxons take 2
2021-05-03 14:17:54 +01:00
Andy Brett
52525dc437
Fix /spec/models/spree/product_spec.rb:118
2021-05-03 14:17:54 +01:00
Andy Brett
d381b2a544
Use saved_change_to prefix to check for changes
2021-05-03 14:17:54 +01:00
Luis Ramos
c08bc743d3
Replace usage of changed? with saved_change_to_
2021-05-03 14:17:54 +01:00
Matt-Yorkley
26688dda36
Add angular_form helper
...
Fixes:
Failure/Error: super
ActionView::Template::Error:
undefined method `ng_options_for_select' for #<#<Class:0x00007fbf8e43e310>:0x000055783fbebec0>
Did you mean? options_for_select
# ./app/helpers/application_helper.rb:20:in `method_missing'
# ./app/helpers/angular_form_builder.rb:26:in `ng_select'
# ./app/views/admin/enterprise_fees/index.html.haml:34:in `block (2 levels) in _app_views_admin_enterprise_fees_index_html_haml__800455454875182851_46987476952700'
# ./app/helpers/angular_form_builder.rb:6:in `ng_fields_for'
# ./app/views/admin/enterprise_fees/index.html.haml:28:in `block in _app_views_admin_enterprise_fees_index_html_haml__800455454875182851_46987476952700'
# ./app/helpers/application_helper.rb:11:in `ng_form_for'
# ./app/views/admin/enterprise_fees/index.html.haml:4:in `_app_views_admin_enterprise_fees_index_html_haml__800455454875182851_46987476952700'
# ./lib/open_food_network/rack_request_blocker.rb:36:in `call'
# ------------------
# --- Caused by: ---
# NoMethodError:
# undefined method `ng_options_for_select' for #<#<Class:0x00007fbf8e43e310>:0x000055783fbebec0>
# Did you mean? options_for_select
# ./app/helpers/application_helper.rb:20:in `method_missing'
2021-05-03 14:17:54 +01:00
Matt-Yorkley
b7aeceaf67
Add enterprise_fees helper
...
Fixes:
Failure/Error: super
ActionView::Template::Error:
undefined method `angular_id' for #<#<Class:0x00007f57c7126670>:0x00007f57c55754f8>
# ./app/helpers/application_helper.rb:20:in `method_missing'
# ./app/views/admin/enterprise_fees/index.html.haml:32:in `block (2 levels) in _app_views_admin_enterprise_fees_index_html_haml__3854507252304647884_70007474860840'
# ./app/helpers/angular_form_builder.rb:6:in `ng_fields_for'
# ./app/views/admin/enterprise_fees/index.html.haml:28:in `block in _app_views_admin_enterprise_fees_index_html_haml__3854507252304647884_70007474860840'
# ./app/helpers/application_helper.rb:11:in `ng_form_for'
# ./app/views/admin/enterprise_fees/index.html.haml:4:in `_app_views_admin_enterprise_fees_index_html_haml__3854507252304647884_70007474860840'
# ./lib/open_food_network/rack_request_blocker.rb:36:in `call'
# ------------------
# --- Caused by: ---
# NoMethodError:
# undefined method `angular_id' for #<#<Class:0x00007f57c7126670>:0x00007f57c55754f8>
# ./app/helpers/application_helper.rb:20:in `method_missing'
2021-05-03 14:17:54 +01:00
Matt-Yorkley
e6a3041f45
Add admin/enterprises helper
...
Fixes:
Failure/Error: super
ActionView::Template::Error:
undefined method `add_check_if_single' for #<#<Class:0x0000564501a3c838>:0x00007f446cdd68e8>
# ./app/helpers/application_helper.rb:20:in `method_missing'
# ./app/views/spree/admin/shared/_hubs_sidebar.html.haml:16:in `block in _app_views_spree_admin_shared__hubs_sidebar_html_haml___1973426344114200431_69965928779540'
# ./app/views/spree/admin/shared/_hubs_sidebar.html.haml:11:in `each'
# ./app/views/spree/admin/shared/_hubs_sidebar.html.haml:11:in `_app_views_spree_admin_shared__hubs_sidebar_html_haml___1973426344114200431_69965928779540'
# ./app/views/spree/admin/payment_methods/edit.html.haml:15:in `block in _app_views_spree_admin_payment_methods_edit_html_haml__571217921761730685_69965930474120'
# ./app/views/spree/admin/payment_methods/edit.html.haml:11:in `_app_views_spree_admin_payment_methods_edit_html_haml__571217921761730685_69965930474120'
# ./app/controllers/admin/resource_controller.rb:23:in `block (2 levels) in edit'
# ./lib/spree/core/controller_helpers/respond_with.rb:24:in `respond_with'
# ./app/controllers/admin/resource_controller.rb:22:in `edit'
# ./lib/open_food_network/rack_request_blocker.rb:36:in `call'
# ------------------
# --- Caused by: ---
# NoMethodError:
# undefined method `add_check_if_single' for #<#<Class:0x0000564501a3c838>:0x00007f446cdd68e8>
# ./app/helpers/application_helper.rb:20:in `method_missing'
2021-05-03 14:17:54 +01:00
Matt-Yorkley
b0787e83b2
Add checkout helper
...
Fixes:
Failure/Error: super
ActionView::Template::Error:
undefined method `checkout_adjustments_for' for #<#<Class:0x000055f4bd847a30>:0x000055f4bd845c30>
# ./app/helpers/application_helper.rb:20:in `method_missing'
# ./app/views/spree/admin/orders/_invoice_table.html.haml:26:in `_app_views_spree_admin_orders__invoice_table_html_haml___3617932924646213210_47254819384740'
# ./app/views/spree/admin/orders/invoice.html.haml:67:in `_app_views_spree_admin_orders_invoice_html_haml__1476001169744481148_47254819971700'
# ./app/services/invoice_renderer.rb:8:in `render_to_string'
# ./app/controllers/spree/admin/orders_controller.rb:81:in `invoice'
# ./spec/support/controller_requests_helper.rb:49:in `process_action_with_route'
# ./spec/support/controller_requests_helper.rb:23:in `spree_get'
# ./spec/controllers/spree/admin/orders/invoices_spec.rb:58:in `block (6 levels) in <top (required)>'
# ------------------
# --- Caused by: ---
# NoMethodError:
# undefined method `checkout_adjustments_for' for #<#<Class:0x000055f4bd847a30>:0x000055f4bd845c30>
# ./app/helpers/application_helper.rb:20:in `method_missing'
2021-05-03 14:17:54 +01:00