Commit Graph

3953 Commits

Author SHA1 Message Date
Frane Polić 3fbe8d7d08 feat(medusa): Validate LineItems in SalesChannel (#1871)
* wip: validate line item SC

* fix: repository type, remove relation, use sc id, check if cart has associated sc

* feat: setup tests and seeder, change entity retrieval in cart service method

* feat: remove repo usage and method, use Adrien's method from product service to check sc association, add test cases, add seeder entities, accept flag for validating sc on the endpoint

* feat: add a unit test to ensure validation method is called if flag is passed

* feat: allow `validate_sales_channels` flag in other relevant endpoints

* fix: typo

* fix: flag rename

* fix: correct FF in test suites

* fix: address PR feedback

* fix: change error message

* feat: remove query params, guard with FF, refactor

* feat: guard validation in the service

* refactor: rename validation method

* refactor: reorganise tests

* wip: cleanup test file

* wip: revert cart seeder changes use factories

* fix: remove seeder, update mocks

* fix: method name

* fix: units, validate by default

* git: resolve merge conflicts

* refactor: separate line item sales chanel units

Co-authored-by: fPolic <frane@medusajs.com>
2022-07-27 21:39:06 +02:00
Adrien de Peretti 204dd23a39 feat(medusa): Migrate SearchService to TS + add SearchInterface (#1922) 2022-07-27 20:58:44 +02:00
Adrien de Peretti 6014872a72 feat(medusa): Migrate NotificationService to TS + add NotificationInterface (#1922) 2022-07-27 20:07:57 +02:00
Adrien de Peretti 902af55723 feat(medusa): Migrate Note service (#1925)
**What**
Migrate note service to ts

FIXES CORE-352
2022-07-27 17:40:16 +00:00
Adrien de Peretti c025074aca feat(medusa): Includes Sales channels as part of the product/order export (#1882)
**What**
Add support to sales channel in the product/order export strategy

**How**
Update the strategy to include the sales channel if the flag is enabled

**Tests**
Add new unit tests that check that the exported data does include the appropriate sales channel when the flag is enabled and that the data still does not include the sales channel if the flag is not including the flag

FIXES CORE-303
2022-07-27 17:11:09 +00:00
Adrien de Peretti df66378535 feat(medusa): Attach or update cart sales channel (#1873)
What

Allow to create a cart with a sales channel, otherwise the default one is attached.
Also allow to update the sales channel on an existing cart and in that case the line items that does not belongs to the new sales channel attached are removed

How

Updating existing end points and service method to integrate the new requirements

Tests

Add new integration tests

Fixes CORE-270
Fixes CORE-272

Co-authored-by: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com>
2022-07-27 16:54:05 +00:00
Ankit Singh 2810423258 docs: added deploy to netlify button in next.js storefront (#1913) 2022-07-26 17:37:43 +03:00
Adrien de Peretti 8dd85e5f03 chore: Improve health checks to avoid waiting 10 sec (#1888)
**What**
Sometimes the some integration tests that are depending on external services are failing due to timeout.

One of the reason is that the health check is done every 10 sec with a timeout of 5sec, which can lead to long waiting time before continuing

FIXED CORE-326
2022-07-26 13:44:21 +00:00
Ankit Singh 9216ad0811 docs: added missing link in "What's Next" in Notification Architecture Overview (#1911) 2022-07-26 16:39:40 +03:00
Omar Moustafa f1256f7e8f docs: Fix Install Command in Quickstart Guide (#1905) 2022-07-26 16:39:09 +03:00
Adrien de Peretti b8ddb31f6f feat(medusa): Move search indexing into a separate subscriber to defer the work load (#1874)
**What**

Move the preliminary indexing action at boot time to a separate subscriber in order to defer the work load in the background and therefore to avoid increasing the load time when the number of products increase with time.

**Tests**
Add 10k products (since it is our limit, tried with 50k before getting the error limit) using 
```sal
do $$
declare
   counter integer := 0;
begin
   while counter < 10000 loop
     INSERT INTO product (id, title, description, handle, profile_id)
        (SELECT * FROM ((SELECT random(), random(), random(), random(), 'sp_01FNB9K7FXB0SZMKXD013RJYSP')) as T);
      counter := counter + 1;
   end loop;
end$$;
```
then start the server and while the server is starting, hit the search end point repeatedly 

FIXES CORE-258

Co-authored-by: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com>
2022-07-26 12:58:28 +00:00
Philip Korsholm 0e0b131488 Feat(medusa): expand store result (#1884)
**What**
- include the default sales channel in the result of `get-store` if featureflag is set

Co-authored-by: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com>
2022-07-26 11:59:11 +00:00
Adrien de Peretti e51fdd3304 fix(medusa-payment-stripe): Fix options typo (#1899)
**What**
Fix the options usage across the plugin `this.options_` instead of `this.options`

**Tests**
New unit tests

Co-authored-by: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com>
2022-07-26 11:34:28 +00:00
Adrien de Peretti aa4bf795b2 fix(medusa-js): Pass undefined instead of empty object to avoid empty payload (#1900) 2022-07-25 19:42:43 +02:00
Shahed Nasser 23d5809255 docs: added note about build (#1892) 2022-07-22 13:14:02 +03:00
Shahed Nasser 668a269eb7 docs: improved contentful documentation (#1891) 2022-07-22 13:03:25 +03:00
Shahed Nasser b9995cf2a7 docs: added missing link (#1890) 2022-07-21 16:21:41 +03:00
Shahed Nasser b2602fa9ed docs: improved digitalocean docs (#1889) 2022-07-21 15:22:29 +03:00
Shahed Nasser ef84b104e6 docs: update heroku's documentation (#1881) 2022-07-20 12:24:59 +03:00
Shahed Nasser 45dcf420c6 docs: update Next.js documentation based on the new storefront (#1880)
* update next.js storefront docs

* made changes to Next.js sections
2022-07-20 12:08:08 +03:00
Sebastian Rindom 8c283ac3b0 fix(medusa): Calculated price on cart shipping options (#1878) 2022-07-20 11:04:31 +02:00
Adrien de Peretti 110c995a6a feat(medusa): Allow to query order/product by SC (#1867)
**What**

Allow to query the products and orders by sales channels

**How**

Updating the existing end points and repositories  (if necessary) to take a new query params that is sales_channel_id as an array of string

**Tests**

Add new integration tests

Fixes CORE-295
Fixes CORE-288
2022-07-19 16:54:20 +00:00
Shahed Nasser f623a85c5d docs: improved qovery documentation (#1875)
* improved qovery guide

* added cli reference link
2022-07-19 18:14:55 +03:00
Sebastian Rindom 0e5f0d8cd6 fix(medusa-payment-klarna): Calculate shipping totals correctly (#1848) 2022-07-18 18:10:58 +02:00
Shahed Nasser 1029eca944 docs: added a dropdown for references (#1868) 2022-07-18 17:34:12 +03:00
Sebastian Rindom 4dd7fdf61c chore(medusa): Clean up atomicPhase usage (#1850) 2022-07-18 16:04:36 +02:00
Shahed Nasser 8c727f91f4 docs: added deploy to netlify button for admin (#1865)
* added deploy to netlify button

* chore: fix docs test error (#1866)

* added deploy to netlify button
2022-07-18 15:48:32 +03:00
Shahed Nasser 6ed97e2ae0 chore: fix docs test error (#1866) 2022-07-18 15:30:13 +03:00
Derek Wene f5091c6370 feat(medusa): Add events for creating, updating, and deleting users to event bus (#1836) 2022-07-17 16:02:03 +02:00
Sergio Leon 33bb67bfb9 docs: fix typo in QuickStart next actions (#1861)
check our the… -> check out the…
2022-07-16 23:48:01 +02:00
Shahed Nasser e134f6d237 chore: fixed commit branch on generate reference action (#1857)
* fixed commit branch

* fixes after yarn upgrade
2022-07-15 18:08:07 +03:00
chemicalkosek 32b066d923 Update to correct placement of webhook secret. (#1856)
Currently the docs say to copy the webhook secret from top right corner which starts with `we_`.
This is not the webhook secret. This is webhook id.
2022-07-15 13:36:17 +02:00
Oliver Windall Juhl dafbfa7799 fix(medusa): Create tax lines when marking DraftOrder as paid (#1852) 2022-07-15 11:57:46 +02:00
Sebastian Rindom c148064b4a fix(medusa): accept array of region ids in order filter (#1851) 2022-07-15 05:41:24 +00:00
Adrien de Peretti f35ea5156a feat(medusa, medusa-js, medusa-react): Bulk add Products to a SalesChannel (#1833) 2022-07-14 16:39:44 +02:00
Adrien de Peretti cdd91974f9 feat(medusa, medusa-js, medusa-react): Start implementing remove batch products on a sales channel (#1842)
What
Support sales channel remove product batch in medusa, medusa-js and medusa-react

How
By implementing a new endpoint and the associated service method as well as the repository methods.

Medusa-js new removeProductd method in the resource

Medusa-react new hook in the mutations

Tests

Endpoint test
Service test
Integration test
Hook tests

Fixes CORE-292
2022-07-13 19:40:23 +00:00
Oliver Windall Juhl 7162972318 fix(medusa): Free text search for PriceList Products (#1843)
**What**
Fixes #1831 and #1336
2022-07-13 14:06:33 +00:00
Kasper Fabricius Kristensen cbdc5b7774 fix(gatsby-source-medusa): Unsupported exports warning and schema (#1463)
**What**

- Moves `sourceUpdatedNodes` and `sourceAllNodes` to a separate file, to prevent warning of unsupported exports. See #1455.
- Adds warnings if `GET /store/products`, `GET /store/regions`, and `GET /store/collections` return empty arrays. This should help new users more easily figure out why their storefronts does not work as expected.
- Adds schema to plugin, so that node types for products, regions and collections are always created. This will prevent errors such as `allMedusaRegions query failed` from happening in the storefront, as the query will be valid as the type exists, even if it returns nothing. This should make the gatsby plugin/starter easier to use. This error is an reoccurring issue in our discord, when new users try to run the Gatsby starter without seeding the storefront beforehand. 

Resolves #1455 

Co-authored-by: Sebastian Rindom <7554214+srindom@users.noreply.github.com>
2022-07-13 12:42:06 +00:00
Adrien de Peretti a1a5848827 feat(medusa, medusa-js, medusa-react): Implement Sales Channel list (#1815)
**What**
Support sales channel list in medusa, medusa-js and medusa-react

**How**

By implementing a new endpoint and the associated service method as well as the repository methods.

Medusa-js new list method in the resource

Medusa-react new hook in the queries

**Tests**

Endpoint test
Service test
Integration test
Hook tests

Fixes CORE-280
2022-07-13 10:28:53 +00:00
Sebastian Rindom c20d720040 fix(medusa-payment-klarna): Fix division by zero on free shipping (#1840) 2022-07-13 09:26:45 +02:00
Oliver Windall Juhl 4e375c2203 feat(medusa): Prevent default channel from being deleted (#1835)
**What**
Prevent the default channel from being deleted

Fixes CORE-317
2022-07-13 06:41:03 +00:00
Sebastian Rindom e539bdc620 chore: Fix CI pipeline (#1839) 2022-07-12 20:14:34 +02:00
olivermrbl cf167d00b1 chore(release): Publish 2022-07-12 09:38:54 +02:00
olivermrbl e324f223d7 chore: Add .env to .gitignore 2022-07-12 09:36:04 +02:00
olivermrbl fb0346f1fa fix: Merge conflicts 2022-07-12 09:29:41 +02:00
Adrien de Peretti b402b9f159 feat(medusa): Create default sales channel associated to the store (#1830)
**What**
Add support for default sales channel

**How**
- Implement a new method in the salesChannelService `createDefault`
- call the new method above in the default loader

**Test**
- Unit tests of the sales channel service method createDefaulta
- Init default loader unit tests

Fixes CORE-316
2022-07-11 21:05:28 +00:00
Philip Korsholm 19f35ba6aa Feat(medusa, medusa-js, medusa-react): Include sales channels in related queries as an optional expand parameter (#1816)
**What**
- Add `transformQuery` to get endpoints for product, order and cart
  - ensure that the default relations (when getting a singular entity) includes sales channels when enabled
- Add `EmptyQueryParams` class in common types to prevent query parameters while using `transformQuery`
- update product-, order- and cartFactory to include sales channels if provided
- remove `packages/medusa/src/controllers/products/admin-list-products.ts`

**Testing** 
- expands sales channel for single order
- expands sales channels for orders with expand parameter 
- returns single product with sales channel 
- expands sales channels for products with expand parameter
- returns cart with sales channel for single cart

Fixes CORE-293

Co-authored-by: Sebastian Rindom <7554214+srindom@users.noreply.github.com>
Co-authored-by: Adrien de Peretti <25098370+adrien2p@users.noreply.github.com>
2022-07-11 16:45:01 +00:00
Kasper Fabricius Kristensen fb4cfc3c3c fix(medusa-react): Use correct type for hook useAdminCreateDraftOrder (#1832) 2022-07-11 16:14:10 +02:00
Oliver Windall Juhl fb82d3dd22 fix(medusa): Add migration ensuring correct state of BatchJob model (#1825) 2022-07-11 15:50:01 +02:00
Sebastian Rindom 39f2c0c15e fix(medusa): calculates correct taxes and totals on order with gift cards (#1807)
**What**
Since the release of the Tax API the line item totals calculations on orders with gift cards have been wrong. To understand the bug consider the below order:

Region:
- tax_rate: 25%
- gift_cards_taxable: true

Order:
- applied gift card: 1000
- items: 
  - A: unit_price: 1000
  - B: unit_price: 500
- Subtotal: 1500

**Previous calculation method**
1. Determine how much of the gift card is used for each item using `item_total / subtotal * gift_card_amount`:
  - Item A: 1000/1500 * 1000 = 666.67
  - Item B: 500/1500 * 1000 = 333.33
2. Calculate line item totals including taxes using `(unit_price - gift_card) * (1 + tax_rate)`
  - Item A: 1000 - 666.67 = 333.33; vat amount -> 83.33
  - Item B: 500 - 333.33 = 166.67; vat amount -> 41.67
3. Add up the line item totals: order subtotal = 500; vat amount = 125; total = 625

This is all correct at the totals level; but at the line item level we should still use the "original prices" i.e. the line item total for item a should be (1000 * 1.25) = 1250 with a tax amount of 250. 

**New calculation method**
1. Use default totals calculations
  - Item A: subtotal: 1000, tax_total: 250, total: 1250
  - Item B: subtotal: 500, tax_total: 125, total: 625
2. Add up the line item totals: subtotal: 1500, tax_total: 375, total: 1875
3. Reduce total with gift card: subtotal: 1500 - 1000 = 500, tax_total: 375 - 250 = 125, total = 625

Totals can now be forwarded correctly to accounting plugins.

Fixes CORE-310.
2022-07-11 12:18:43 +00:00