Commit Graph

2461 Commits

Author SHA1 Message Date
Pau Pérez Fabregat
2668747237 Merge pull request #6723 from luisramos0/spree_routes_2
Move spree orders routes out of the spree engine routes into the main app routes
2021-01-28 16:31:49 +01:00
Luis Ramos
12dac82b8a Delete dead route 2021-01-27 22:08:06 +00:00
Luis Ramos
c604f4c0c6 Remove dead endpoint 2021-01-27 22:05:04 +00:00
Pau Pérez Fabregat
c3897dd3df Merge pull request #6643 from coopdevs/customer-balance-frontoffice
Customer balance frontoffice
2021-01-27 19:55:56 +01:00
Luis Ramos
f3da7afd55 Replace spree_order_path with order_path so we can use scope in the routes file 2021-01-25 19:55:42 +00:00
Luis Ramos
592474189d Fix order route in paypal controller 2021-01-25 19:52:48 +00:00
Luis Ramos
f25e06ddb6 Fix order path route in payments controller 2021-01-25 19:52:48 +00:00
Luis Ramos
6e7ee02191 Change spree.order_path to spree_order_path everywhere 2021-01-25 19:52:48 +00:00
Andy Brett
84689c43be Merge pull request #6534 from andrewpbrett/sca-emails
Send email when SCA authorization is required for admin payment
2021-01-21 13:53:35 -08:00
Andy Brett
d2b2e46124 Merge pull request #6701 from Matt-Yorkley/admin-order-performance
Fix performance issue in loading payment methods
2021-01-21 10:58:35 -08:00
Andy Brett
ce4621858d base authorization on the payment's order 2021-01-21 09:18:29 -08:00
Andy Brett
8bcaeff6c8 resolve merge conflict; add ssl helper to base controller 2021-01-21 09:18:29 -08:00
Andy Brett
903b2e7ff4 whitelist allowed events to be sent to a Payment 2021-01-21 09:18:29 -08:00
Andy Brett
affc82b2b5 update payment jobs delivery methods 2021-01-21 09:18:29 -08:00
Andy Brett
d9b27bc556 move controller and mailer outside of spree namespace; use haml in template 2021-01-21 09:18:29 -08:00
Andy Brett
b669ccdc74 refactor admin payments controller 2021-01-21 09:17:07 -08:00
Andy Brett
8507dacc10 pass return_url option to gateway authorize 2021-01-21 08:48:33 -08:00
Andy Brett
802e49bed3 add PaymentMailer and send email if payment auth is required 2021-01-21 08:24:01 -08:00
Andy Brett
e31d566f7f Merge pull request #6283 from luisramos0/sets
Move sets out of app/models to app/services/sets
2021-01-20 19:22:15 -08:00
Pau Perez
d9c065a311 Remove outdated comment
This comment was related to the feature we removed in
https://github.com/openfoodfoundation/openfoodnetwork/pull/3609.
2021-01-20 18:23:22 +01:00
Pau Perez
783863056d Extract query object out of UsersController
It improves the overall readability of the code and as a result, things
became easier to manage already.
2021-01-20 18:23:22 +01:00
Pau Perez
e8ef4acb2b Hide new data fetching implementation under toggle 2021-01-20 18:23:22 +01:00
Pau Perez
20abaaa950 Reuse outstanding balance statement across queries
Instead of relying on Spree::Order#outstanding_balance we make us of the
result set `balance_value` computed column. So, we ask PostgreSQL to
compute it instead of Ruby and then serialize it from that computed
column. That's a bit faster to compute that way and let's reuse logic.

We hide this new implementation under this features' toggle so it's only
used when enabled. We want hit the old behaviour by default.
2021-01-20 18:23:22 +01:00
Pau Perez
681a009eb6 Extract outstanding balance SQL CASE/WHEN 2021-01-20 18:23:22 +01:00
Pau Perez
caf1c9ecd9 Move data fetching from injection helper to action
Data fetching is a controller action responsibility. We shouldn't couple
the controller with it too much but it should trigger it, not the
view-layer.
2021-01-20 18:23:22 +01:00
Matt-Yorkley
a184075c5c Fix performance issue in loading payment methods
This was loading and initializing every payment method in the database, and every calculator for each of those payment methods.

🔥
2021-01-19 15:33:44 +00:00
Luis Ramos
fc40775ca8 Make paypal controller inherit from base controller and not from old store controller 2021-01-18 23:33:05 +00:00
Luis Ramos
4060e7debf Replace usages of Spree::BaseController with ApplicationController 2021-01-15 21:59:16 +00:00
Luis Ramos
7a22367b4a Make controllers use ::Basecontroller instead of StoreController 2021-01-15 21:59:16 +00:00
Luis Ramos
23e6048bde Merge StoreController with BaseController 2021-01-15 21:59:16 +00:00
Luis Ramos
ff8a81cee7 Remove includes already present in parent ApplicationController 2021-01-15 21:59:16 +00:00
Luis Ramos
0eab1b2339 Merge Spree::BaseController with ApplicationController 2021-01-15 21:59:16 +00:00
Pau Pérez Fabregat
929ae82e00 Merge pull request #6574 from Matt-Yorkley/bye-bye-spree-paypal
Bye Bye Spree Paypal
2021-01-14 18:16:44 +01:00
Luis Ramos
fd0bba19a7 Adapt enterprises code and specs to new namespace Sets::EnterpriseSet 2021-01-14 09:41:07 +00:00
Luis Ramos
ed0441dc41 Fix a few more rubocop issues 2021-01-14 09:41:07 +00:00
Luis Ramos
5d6d7f7ad0 Adapt enterprise fees code and specs to new namespace of Sets::EnterpriseFeeSet 2021-01-14 09:41:07 +00:00
Luis Ramos
96a351ad0e Adapt usage of Sets to their new location 2021-01-14 09:41:07 +00:00
Pau Pérez Fabregat
9db4f9be15 Merge pull request #6634 from Matt-Yorkley/jobs-cleanup
Jobs cleanup
2021-01-14 10:08:15 +01:00
Pau Perez
398467e7ed Hide new balance impl. under feature toggle
This makes it possible to deploy it without releasing it to users since
the toggle is not enabled for anyone.

It aims to make the balance calculation consistent across pages.
2021-01-11 15:50:19 +01:00
Pau Perez
2e9bae0ea5 Move relation includes out of query object
This query object is meant to be reusable but those includes are
context-specific and will likely not be needed when reusing the query
elsewhere. If we keep them there, chances are next dev might not notice
it and will introduce a performance regression.
2021-01-11 15:50:19 +01:00
Pau Perez
96a91969c9 Extract balance-specific serializer
So we only show the customer balance where really needed. Aggregating
the balance can be costly. Also, we avoid defensive coding.
2021-01-11 15:50:19 +01:00
Pau Perez
e404225de0 Extract query object 2021-01-11 15:50:19 +01:00
Pau Perez
d62ab06504 Refactor DB query to aggregate customer balance
It's simpler and many orders of magnitude more efficient to ask the DB
to aggregate the customer balance based on their orders. It removes
a nasty N+1.

The resulting SQL query is:

```sql
SELECT customers.*, SUM(spree_orders.total - spree_orders.payment_total) AS balance
FROM "customers"
INNER JOIN "spree_orders"
    ON "spree_orders"."customer_id" = "customers"."id"
WHERE "customers"."enterprise_id" = 1
    AND (completed_at IS NOT NULL)
    AND (state != 'canceled')
GROUP BY customers.id
ORDER BY email;
```
2021-01-11 15:50:19 +01:00
Matt-Yorkley
e5be249f2c Update comment on #expire_current_order 2021-01-09 13:26:30 +00:00
Matt-Yorkley
8439b68b36 Update code comment and link 2021-01-09 13:26:30 +00:00
Matt-Yorkley
bf47db1792 Fix missing route in Spree::OrdersController
I'm not sure why this spec started failing. Fixes:

```
Spree::OrdersController viewing cart when an item is in the cart the page provides the right registration path
     Failure/Error: expect(subject.registration_path).to eq registration_path

     ActionController::UrlGenerationError:
       No route matches {:action=>"index", :controller=>"registration"}
     # ./spec/controllers/spree/orders_controller_spec.rb:140:in `block (5 levels) in <top (required)>'
```
2021-01-09 13:26:30 +00:00
Matt-Yorkley
618738db69 Fix more Rubocop offences 2021-01-09 13:22:25 +00:00
Matt-Yorkley
2dce66f079 Fix some simple Rubocop offences 2021-01-09 13:22:25 +00:00
Matt-Yorkley
4ca3e29458 Apply changes from and remove Spree::PaypalController decorator 2021-01-09 13:22:25 +00:00
Matt-Yorkley
94549e98ba Bring in Spree::PaypalController 2021-01-09 13:22:09 +00:00