Commit Graph

41 Commits

Author SHA1 Message Date
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
Luis Ramos
0f27f57cbb Use new Admin::ResourceController 2020-12-03 15:32:20 -08:00
Luis Ramos
0fb9f44dda Make all controllers use new Admin::ResourceController 2020-12-03 15:32:20 -08:00
Luis Ramos
8a61257547 Rename all before_filter to before_action, it's the same function with a new name 2020-06-22 13:11:57 +01:00
Luis Ramos
839b373b5c Merge branch 'master' into 3-0-stable-Apr28 2020-04-28 13:40:19 +01:00
Matt-Yorkley
4ef61b642e Fix disappearing tags issue 2020-04-22 01:33:38 +02:00
Matt-Yorkley
a6414b6dbe Make sure taggable_type is 'Customer' when querying customer tags 2020-04-10 20:14:14 +02:00
Matt-Yorkley
4c41c84cc1 Refactor tag rules loading for customers
Fixes N+1 queries on customer tags
2020-04-10 10:12:32 +02:00
Matt-Yorkley
e53f733966 Eager-load addresses in customer serializer 2020-04-10 08:20:15 +02:00
Matt-Yorkley
2a8809e6e8 Eager-load default card in customer serializer 2020-04-10 08:20:15 +02:00
Matt-Yorkley
cf712e9478 Select only enterprise id 2020-04-09 17:41:13 +02:00
Luis Ramos
e5f56c19c0 Switch to using PermittedAttributes::Address instead of spree version of it that will be removed later 2020-03-25 10:52:23 +00:00
Luis Ramos
22a005df47 Add needed permitted attributes to admin/customers_controller 2020-03-25 10:51:55 +00:00
Luis Ramos
9b0d7b9604 Ammend customers_controller to include ship address attributes permit and also permit #update with specific attributes 2020-03-25 10:51:55 +00:00
Luis Ramos
4fd3026bd8 Add strong parameters permits to some controllers 2020-03-25 10:51:55 +00:00
Matt-Yorkley
53645517af Update deprecated #find_by_* methods 2020-02-22 11:06:51 +00:00
luisramos0
9404aacfb2 run rubocop --auto-correct 2019-11-10 18:42:43 +00:00
luisramos0
86b0d71c7e Result of rubocop auto-correct and rebuilding rubocop_manual_todo 2019-05-28 12:57:29 +01:00
Rob Harrington
21c3f7d21c Remove unrequired #cards and #addresses actions from Admin::CustomerController 2018-07-05 19:26:12 +10:00
Rob Harrington
e0d46aa105 Add new serializer to allow search for customer addresses 2018-07-05 19:26:12 +10:00
Rob Harrington
cf8ca1f8c1 Add show action to Admin::CustomersController 2018-07-05 19:26:11 +10:00
Rob Harrington
672f96b85b Replace references to 'standing order' with 'subscription' 2018-02-09 14:44:13 +11:00
Rob Harrington
bdac68900f Move address and card loading logic down into DetailsController
Also switch to using CreditCardResource to load the card
2018-02-09 14:44:05 +11:00
Rob Harrington
494f2f4821 Add cards lookup action to CustomersController 2018-02-09 14:44:04 +11:00
Rob Harrington
d3937e5c80 Move customer address lookup action to CustomersController 2018-02-09 14:44:03 +11:00
Rob Harrington
6586e67a5c Better messaging around deletion of customers 2016-06-17 14:47:04 +10:00
Rob Harrington
61969f5c84 Ensure CustomersController#update.json gives an appropriate response
pendingChanges submits an empty string when a field is blank (rather than undefined)
2016-06-16 22:42:53 +10:00
Rob Harrington
564c1a3650 Improvements to customers page
Create customer from dialog

Limiting the number of products shown as once

Adding SaveBar and StatusMessage
2016-05-25 08:10:20 +10:00
Rob Harrington
ddcfe1535a Making TagRule autocomplete available to models other than Customer
Incorporate ng admin.tags module and rails TagController into existing admin.tagRules module + TagRuleController
2016-05-25 08:10:20 +10:00
Maikel Linke
23e598f2f8 Destroy customer without flash notice 2016-04-22 14:55:43 +10:00
Maikel Linke
48f1794d70 Allow admin user to create customers 2016-04-15 14:34:29 +10:00
Maikel Linke
e17b609517 Apply code standards 2016-04-15 14:31:54 +10:00
Maikel Linke
831df0b222 Create and delete customers in admin interface
Removed Customers service and extended CustomerResource.
2016-04-15 11:12:22 +10:00
Rob Harrington
ed7a53968c Using clearer json_request? method for customers controller 2015-06-12 01:49:34 +08:00
Rob Harrington
734ad21e82 Customers controller responds with json 2015-05-13 12:44:35 +10:00
Rob Harrington
220f42fcf2 Customers controller serializes data for json requests, just renders view without data for html 2015-05-13 12:44:32 +10:00
Rob Harrington
37ff61d663 Adding basic routing to display customer index page 2015-05-13 12:44:32 +10:00