Pau Perez
46d997406a
Filter out cart orders when fetching customers
...
We only care about non-cart orders and skipping carts, saves PostgreSQL
query planner to go through thousands of records in production use cases
(my food hub).
We go from
```sql
-> Index Scan using index_spree_orders_on_customer_id on spree_orders (cost=0.42..12049.45 rows=152002 width=15) (actual time=0.015..11.703 rows=13867 loops=1)
```
to
```sql
-> Index Scan using index_spree_orders_on_customer_id on spree_orders (cost=0.42..12429.46 rows=10802 width=15) (actual time=0.025..17.705 rows=9954 loops=1)
```
2021-01-11 15:50:19 +01:00
Pau Perez
93cdca85c6
Return 0 balance when the customer has no orders
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
d8872bc785
Explain why Arel can't be used in statement
2021-01-11 15:50:19 +01:00
Pau Perez
1e9a1f340e
Don't consider order total when it is canceled
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
Jean-Baptiste Bellet
6f24ecd973
replace code by reusable component
...
There is no need to add .text-center as it's already on the parent component
2021-01-11 11:20:00 +01:00
Jean-Baptiste Bellet
4d953abbe9
replace code by reusable component
...
in a js file
2021-01-11 11:18:54 +01:00
Jean-Baptiste Bellet
b02b36b8e8
replace code by reusable component
2021-01-11 11:18:34 +01:00
Jean-Baptiste Bellet
776a61d1d9
create loading spinner reusable component
2021-01-11 11:17:33 +01:00
Andy Brett
c8c576ce38
keep size attribute
2021-01-09 17:49:47 -08:00
Bryan Mutai
eef6396de3
Add max attribute to item counter input
2021-01-09 17:36:35 -08:00
Andy Brett
c12abf8057
Merge pull request #6617 from Matt-Yorkley/stock-items-variant-deletion
...
Stock items and variant deletion
2021-01-09 12:12:24 -08:00
Andy Brett
9cc0f74314
Merge pull request #6620 from mkllnk/6616-emphasize-qty-button-disabled
...
Emphasize disabled Add button when out of stock
2021-01-09 11:34:57 -08:00
Matt-Yorkley
e5be249f2c
Update comment on #expire_current_order
2021-01-09 13:26:30 +00:00
Matt-Yorkley
c07a4fcb5e
Remove data-hooks from views
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
09b7512cd8
Remove dead code around unused payment_method_field data-hook
2021-01-09 13:26:30 +00:00
Matt-Yorkley
2e5810d64d
Fix more Rubocop offences
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
2864f62a08
Fix missing semicolons in spree_paypal_express.js
2021-01-09 13:22:25 +00:00
Matt-Yorkley
5c7dc6621b
Bring in views (and convert from ERB to HAML)
2021-01-09 13:22:25 +00:00
Matt-Yorkley
7f8fe631dd
Bring in Spree::PaypalExpressCheckout
2021-01-09 13:22:25 +00:00
Matt-Yorkley
2a27da1cc5
Bring in Spree::Gateway::PayPalExpress
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
Matt-Yorkley
597eed5285
Bring in Spree::Admin::PaypalPaymentsController
2021-01-09 13:22:09 +00:00
Matt-Yorkley
42468e2ef3
Apply Spree::Admin::PaymentsController decorator
2021-01-09 13:22:09 +00:00
Matt-Yorkley
2fb7dfa430
Bring in Paypal Express javascript
2021-01-09 13:22:09 +00:00
Matt-Yorkley
dd5a197fb3
Remove ManagerInvitationJob
2021-01-09 11:56:27 +00:00
Matt-Yorkley
ca42b1fff7
Remove ConfirmSignupJob
2021-01-09 11:38:29 +00:00
Matt-Yorkley
6a7f795f64
Remove WelcomeEnterpriseJob
2021-01-09 11:33:10 +00:00
Andy Brett
3877721209
Merge pull request #6631 from Matt-Yorkley/actionmailer-deliver
...
[Deprecation] Replace ActionMailer#deliver with ActionMailer#deliver_now
2021-01-08 17:42:31 -08:00
Andy Brett
d6656804eb
Merge pull request #6557 from luisramos0/rubocop
...
Rubocop exceptions update
2021-01-08 17:36:23 -08:00
Matt-Yorkley
b7ecf4791a
Extract more sanitizing logic from Api::ProductSerializer and make service more generic/re-usable.
2021-01-09 01:07:11 +00:00
Matt-Yorkley
496f2dab69
Ensure Jobs are instantiated correctly
...
We should not be using `Delayed::Job.enqueue` anywhere...
2021-01-08 23:18:55 +00:00
Matt-Yorkley
2dc918ff59
Ensure all Job classes correctly inherit from ActiveJob
2021-01-08 23:18:55 +00:00
Matt-Yorkley
ff962c1c9b
Change various Mailer invocations from #deliver_now to #deliver_later
2021-01-08 23:18:55 +00:00
Luis Ramos
2e4a206825
Add new offenses to exceptions file
2021-01-08 22:43:15 +00:00
Luis Ramos
0b45533237
Update rubocop todo list
2021-01-08 22:43:15 +00:00
Andy Brett
59527ab38a
refactor filter to a service
2021-01-08 13:37:18 -08:00
Matt-Yorkley
3e6445c51c
Replace deprecated ActionMailer#deliver with ActionMailer#deliver_now
...
DEPRECATION WARNING: `#deliver` is deprecated and will be removed in Rails 5. Use `#deliver_now` to deliver immediately or `#deliver_later` to deliver through Active Job.
2021-01-08 20:35:47 +00:00
Matt-Yorkley
3b1ad29d20
Fix view rendering in Api::BaseController
2021-01-08 17:47:09 +00:00
Matt-Yorkley
eec9f27353
Move controller concern to correct directory
...
This is a controller concern, it should live in app/controllers/concerns/
2021-01-08 17:47:09 +00:00
Matt-Yorkley
0dd57fc3de
Render an empty JSON object instead of a blank string
2021-01-08 17:47:09 +00:00
Matt-Yorkley
261ed751cb
Remove explicit content_type declarations in Api::OrderCyclesController
...
This should be handled in `Api::BaseController`
2021-01-08 17:47:09 +00:00
Matt-Yorkley
d0800b5e32
Specify json format for API routes that return json in OrderCycleResource
2021-01-08 17:47:09 +00:00