fix: inventory quantity resets to 0 when any variant or option quantity is undefined #5134
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Impact: major
Type: bugfix
Issue 1
When auto-updating variant quantites, based off a variants options quantities, if any of the children have an
undefined
quantity, the count gets reset to0
, causing an error and showing all inventory as0
.It's caused by not adding parens around the
||
clause of the inventory check. For example, evaluate50 + undefined || 0
vs50 + (undefined || 0)
.Solution
Add parens where necessary.
Issue 2
When querying for reserved products, we check every order in a certain status. We need to filter this better to create less of a drain on memory.
Solution
Add
"shipping.items.variantId": variant._id
filter to Orders query to only find orders with the variant we are querying.Issue 3
Collection indexes were incorrect.
Solution
Fix indexes, and add migration to remove old indexes