Commit Graph

1056 Commits

Author SHA1 Message Date
Maikel Linke
f623446e3e Avoid additional query in inventory reports 2019-10-10 11:11:14 +11:00
Maikel Linke
6944fe1e46 Make order cycle filter chainable with other filters 2019-10-10 10:06:36 +11:00
Matt-Yorkley
e96252f2ed Add tag_rules logic to main query before pagination 2019-10-08 10:11:24 +01:00
Luis Ramos
54c44c33eb Merge pull request #4324 from Matt-Yorkley/reports_memoize
Reports memoization
2019-10-07 13:20:03 +01:00
Luis Ramos
8a732568e7 Merge pull request #4325 from kristinalim/feature/4312-remove_find_variant_in_orders_and_fulfillment_report
4312 Use association instead of OrderAndFulfillmentsReport#find_variant
2019-10-07 11:38:37 +01:00
Matt-Yorkley
01d1e8243c Add pagination to ProductsRenderer 2019-10-04 10:38:43 +01:00
Matt-Yorkley
cc11d4e5f0 Remove unused user parameter from OrdersAndFulfillmentsReport 2019-10-01 15:59:51 +01:00
Matt-Yorkley
a5d2579c69 Pluck line_item ids instead of all line_items 2019-10-01 15:51:45 +01:00
Matt-Yorkley
112adb11db Pass permissions object into OrdersAndFulfillMentsReport 2019-10-01 15:51:43 +01:00
Matt-Yorkley
c038b485b1 Rename service and methods to remove use of "shop" term 2019-10-01 14:43:47 +01:00
Matt-Yorkley
6153789055 Eager-load serialized objects in variant query 2019-09-29 20:44:48 +01:00
Matt-Yorkley
032741c54f Refactor ProductsRenderer variants queries
This removes another N+1 and allows pagination applied to the inital query to also affect the returned variants
2019-09-29 17:41:58 +01:00
Matt-Yorkley
e9acf6e0de Refactor #load_products and memoize 2019-09-29 14:30:04 +01:00
Matt-Yorkley
d5e90c3c6c Extract #load_products logic into a new service 2019-09-29 00:10:47 +01:00
Matt-Yorkley
535e389fb4 Query variant stock including overrides
This allows the results to be properly filtered and paginated whilst showing the correct stock, and removes a big N+1
2019-09-27 17:25:52 +01:00
Matt-Yorkley
cecebb82f4 Move distributed products relation out from OrderCycleDistributedProducts 2019-09-27 17:25:50 +01:00
Matt-Yorkley
fe0b3172c7 Move scoper to method 2019-09-27 01:52:45 +01:00
Matt-Yorkley
5b27ed6b9f Remove unnecessary #deleted? check
It should be included in te default product scope
2019-09-27 01:52:29 +01:00
Kristina Lim
8fc4ca6f65 Do not use OrderAndFulfillmentsReport#find_variant 2019-09-26 11:45:05 +08:00
JASON KNOEPFLER
0f55049eda OrderCycleManagementReport sets default date range before querying for orders 2019-09-13 17:15:57 -07:00
Pau Perez
410e23085e Remove integrity check for deleted variants in OCs
We have no way to see the output of this weird RSpec integrity check
thus, it's pointless. It only adds unnecessary load the server.

However, the issue it checks seems to still be happening although
not very often. UK's server has 70 occurrences the last one being from
early 2019 while FR's server returns 10.
2019-09-06 10:30:26 +02:00
Kristina Lim
590ce67f38 Fetch and scope variants for shop in ProductsRenderer only once 2019-09-05 22:42:50 +08:00
Maikel
de2d4a5870 Merge pull request #4125 from Matt-Yorkley/variant_overrides
Variant overrides with on_demand
2019-08-07 10:25:32 +10:00
Maikel
68393f1444 Merge pull request #4037 from luisramos0/subs_stock
Subscriptions - When editing subscriptions, check stock levels when changing orders in current OC
2019-08-06 15:16:00 +10:00
Matt-Yorkley
4c7d3a491a Don't decrement variant stock if override is on_demand 2019-08-05 17:01:56 +01:00
Luis Ramos
a6a695660f Merge pull request #4002 from luisramos0/more_rails4
Adapting queries in permissions to Rails 4
2019-07-19 15:17:01 +01:00
luisramos0
d0c246c345 Fix some rubocop issues 2019-07-14 12:28:32 +01:00
Pau Perez
f42bf72b32 Fix rubocop violations
It's not affordable to fix the failed Metrics cops in the scope of this
bug fix, but now, with a separate class, it'll be easier.
2019-07-05 18:19:58 +02:00
Pau Perez
9b03833df0 Extract orders & fulfillments default report clasts 2019-07-05 18:19:58 +02:00
Pau Perez
fada30435f DRY some procs from report 2019-07-05 18:19:58 +02:00
luisramos0
a5b5e5de32 Remove trailing backslash 2019-07-05 10:58:53 +01:00
Pau Perez
db7b7bbde2 Fix finding supplier for a deleted product 2019-07-04 18:52:56 +02:00
luisramos0
ef61310bad Fix long lines in order_cycle_permissions and permissions 2019-07-04 17:17:58 +01:00
Pau Perez
ee301c5e2f Address Code Climate (rubocop) issues 2019-07-04 17:01:06 +02:00
Pau Perez
4d060815d0 Extract unscoping logic into method
DRYies out the code a bit.
2019-07-04 17:01:06 +02:00
Pau Perez
f91bd03c25 Add clarifying comment to report 2019-07-04 17:01:06 +02:00
Pau Perez
7de4ec2a90 Fix orders and fulfillments report
It bypasses the default_scope to retrieve deleted variants in the orders
and fulfillment report.
2019-07-04 17:01:06 +02:00
Pau Perez
812d8cac4a Make complex method a bit more readable 2019-07-04 17:01:06 +02:00
luisramos0
dee1c3d139 Fix typo in order_cycle_permissions.rb 2019-07-03 22:58:33 +01:00
luisramos0
bb9c54a445 Use enterprises.id instead of :id to remove ambiguous column errors 2019-07-03 22:03:40 +01:00
luisramos0
e5f396f975 Fix Permissions.related_enterprises_granted by adding explicit reference to table 2019-07-03 20:18:01 +01:00
luisramos0
a57a93d414 Adapt permissions.rb and order_cycle_permissions to rails 4 2019-07-03 20:18:01 +01:00
luisramos0
a82b1d8129 Adapt exchange.involving scope to rails 4 2019-07-03 20:18:00 +01:00
luisramos0
5184fa540c Adapt enterprise_relationship permitting and permitted_by scopes to rails 4 2019-07-03 20:18:00 +01:00
Luis Ramos
951787d456 Merge pull request #3987 from mkllnk/3978-optimise-products-cache
3978 Optimise products cache
2019-07-03 19:59:07 +01:00
Maikel Linke
04b07a1ff5 Further optimise querying affected exchanges
The implementation queried the database for each incoming variant that
was changed. This rewrite combines ActiveRecord relations so that it
creates only one query. This saves another 5-10% of execution time when
updating enterprise fees on production instances.
2019-07-02 18:42:01 +10:00
Maikel Linke
0da7c93bc6 Collect affected exchanges more efficiently
When an incoming exchange of an order cycle changes, the ProductsCache
queries all affected outgoing exchanges to update them. It was creating
a big collection of exchanges with duplicates and then calling `uniq`.
That call was hitting a custom implementation of `eql?` which is very
inefficient. And since `Exchange.eql?` is ignoring the order cycle id,
it was probably filtering too many exchanges from the collection.

Fixed bug: If two order cycles sell exactly the same variants to the
same shop, the two outgoing exchanges are seen as equal. When the
variants change, ProductsCache would only update one of those two
exchanges, leaving one order cycle out of sync. This case is very rare.
It only happens if there is a shop with two active order cycles selling
exactly the same.

The new uniqueness test looks only at the attributes that are later used
to refresh the cache. I measured a page speed improvement from 90
seconds to 3 seconds (30 times faster).
2019-07-02 18:29:50 +10:00
Maikel Linke
bfe41d4cbc Extract method to simplify 2019-07-02 18:29:50 +10:00
Maikel Linke
3e6e0b73ee Style products cache
The `private` modifier doesn't affect class methods. Class methods have
to be declared as private separately. Also using more guard clauses,
brackets and linebreaks.
2019-07-02 18:29:49 +10:00
Maikel Linke
5d3dbca9c3 Toggle features via env instead of initializer
A FeatureToggle could be switched via a class_eval in an initializer.
The initializer was installed via ofn-install. We want to get rid of
custom, untracked initializers. Here I'm changing the FeatureToggle
class to use environment variables instead.

This change needs to be followed up with a change in ofn-install to use
the new environment variable. It affects only Australian production.
2019-06-26 11:43:22 +10:00