100 Commits
Author SHA1 Message Date
Oli Juhl f148739f0d chore: Require manual trigger of Claude review (#14455)
* chore: Require manual trigger of Claude review

* consolidate actions

* split workflow runs
2026-01-06 11:01:26 +01:00
Oli Juhl e63d0ca3cf chore: Add Claude Code GitHub Workflow (#14439)
* "Claude PR Assistant workflow"

* "Claude Code Review workflow"
2026-01-05 10:57:52 +01:00
Oli Juhl 747ec9fc27 chore: Add Claude Code commands (#14438)
* chore: Add Claude Code commands

* chore: Improvements based on feedback
2026-01-05 10:56:03 +01:00
Oli Juhl 7e3ed913a6 chore: Create publishable API key as part of the defaults (#14356)
* wip

* chore: fix tests

* Create tiny-carrots-bathe.md
2026-01-02 11:27:03 +01:00
Oli Juhl 5f807ee657 chore: Ensure isolated order deletion (#14405)
## Summary

Ensure that address deletion during order deletion is handled correctly with respect to cascading deletes. Currently, when deleting an order that does not have a shipping or billing address, we incorrectly attempt to delete all order addresses. This happens because `undefined` address IDs are not handled properly during deletion.

More specifically, when deleting an order without addresses, the following method is called with these arguments:
```ts
await deleteOrderAddresses([undefined, undefined])
```
This triggers deletion of all order addresses.

To make matters worse, because we have a cascade delete defined from order addresses to orders, the same call also deletes all associated orders.

The root cause is the following filtering logic:
```ts
const orderAddressIds = orders
      .map((order) => [order.shipping_address_id, order.billing_address_id])
      .flat(1)
```

For orders without addresses, this produces `[undefined, undefined]` as input filter, which our delete methods interpret as:
```ts
await delete({ '$or': [ { id: undefined }, { id: undefined } ] })
```

This effectively translates to “delete all addresses.”

In this PR, we make two changes to prevent this going forward:
1. Filter out undefined address IDs before attempting deletion
2. Remove the cascade delete from address to order, as this is an aggressive constraint

The latter change is open for discussion, but cascading deletes from a child entity to a parent is slightly off IMO. Let me know your thoughts.

## Checklist

Please ensure the following before requesting a review:

- [x] I have added a **changeset** for this PR
    - Every non-breaking change should be marked as a **patch**
    - To add a changeset, run `yarn changeset` and follow the prompts
- [x] The changes are covered by relevant **tests**
- [x] I have verified the code works as intended locally
- [ ] I have linked the related issue(s) if applicable

---

## Additional Context

Add any additional context, related issues, or references that might help the reviewer understand this PR.


---

> [!NOTE]
> Strengthens order deletion to avoid unintended cascades and validates behavior with tests.
> 
> - Update FK constraints in migration to `ON DELETE SET NULL` for `order.shipping_address_id` and `order.billing_address_id` (was `CASCADE`)
> - In `order-module-service.ts` `deleteOrders`, filter falsy address IDs and conditionally batch-delete `order_address`/`order_change` via `promiseAll`
> - Add integration tests `integration-tests/__tests__/delete-order.spec.ts` covering deletion of orders and associated entities, deleting orders without addresses (no cross-order impact), and address deletion setting `NULL` on the order
> - Add changeset marking `@medusajs/order` patch
> 
> <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 8e4ab59af407ec865f73fbf286ec93e710915c8e. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup>
2026-01-02 10:16:29 +00:00
Oli Juhl 70eaf9c5aa chore: Introduce OIDC auth for npm publishing (#14279) 2025-12-11 18:25:25 +01:00
Oli Juhl bca145bdbe chore: Add locks to order edit flows (#14270) 2025-12-10 17:55:03 +01:00
78842af1c3 fix: Compute "virtual" adjustments for order previews (#13306)
* wip

* add wip

* wip

* reuse action

* finish first draft

* fix tests

* cleanup

* Only compute adjustments when necessary

* Create hot-carrots-look.md

* address comments

* minor tweaks

* fix pay col

* fix test

* wip

* Dwip

* wip

* fix: adjustment typo

* fix: import

* fix: workflow imports

* wip: update test

* feat: upsert versioned  adjustments when previewing order

* fix: revert unique codes change

* fix: order spec test with versioning

* wip: save

* feat: make adjustments work for preview and confirm flow, wip base repo filtering of older version adjustments

* fix: missing populate where

* wip: populate where loading versioned adjustments

* fix: filter out older adjustment versions

* temp: comment adjustments in repo

* test: add adjustment if no version

* wip: configure populate where in order base repository

* fix: rm manual filtering

* fix: revert base repo changes

* fix: revert

* fix: use order item version instead of order version

* fix: rm only in test

* fix: update case spec

* fix: remove sceanrio, wip test with draft promotion

* feat: test correct adjustments when disabling promotion

* feat: complex test case

* feat: test consecutive order edits

* feat: 2 promotions test case with a fixed promo

* feat: migrate existing order line item adjustments to order items latest version

* feat: update dep after merge

* wip: load adjustments separatley

* feat: adjustments collections

* fix: spread result, handle related entity case

* fix: update lock

* feat: make sure version is loaded, refactor, handle related entity case

* fix: check fields

* feat: loading adjustments for list and count

* fix: correct items version field

* fix: rm empty array

* fix: wip order modules spec

* fix: order module specs

* feat: preinit items adjustments

* fix: rm only

* fix: rm only

* chore: cleanup

* fix: migration files

* fix: dont change formatting

* fix: core package build

* chore: more cleanup

* fix: item update util

* fix: duplicate import

* fix: refresh adjustments for exchanges (#13992)

* wip: exchange adjustments

* feat: test - receive items

* feat: finish test case

* fix: casing

* fix(draft-orders, core-flows, orders) refresh adjustments for draft orders (#14025)

* wip: draft orders adjustments refresh

* feat: rewrite to use REPLACE action + test

* fix: rm only

* feat: cleanup old REPLACE actions

* feat: cleanup adjustemnts when 0 promotions

* wip: canceling draft order

* fix: make version arg optional

* fix: restore promotion links

* feat: test reverting on cancelation

* fix: address comments in tests

* wip: fix summary on preview

* fix: get pending diff on preview summary from total

* fix: revert pending diff change

---------

Co-authored-by: fPolic <mainacc.polic@gmail.com>
Co-authored-by: Frane Polić <16856471+fPolic@users.noreply.github.com>
2025-11-25 10:41:14 +01:00
Oli Juhl c93f77d1b2 chore: Configure auth on JS-SDK in dashboard (#14013)
* chore: Use env vars rather than configs

* Create wicked-turkeys-sell.md
2025-11-11 11:15:58 +01:00
Oli Juhl bb4d579605 Update tame-turtles-look.md 2025-11-04 09:42:35 +01:00
Oli Juhl 42abe32b9d chore: Update teams.yml 2025-11-04 08:34:24 +01:00
Oli Juhl 01ee437926 chore(types,notification): Make template nullable on emails (#13889)
* chore: Make template nullable on emails

* Create curvy-lamps-float.md
2025-10-29 18:36:06 +01:00
Oli Juhl 1defb3c29b chore: Inject sandbox handle in cloud config (#13879)
* chore: Inject sandbox handle in cloud config

* Create wet-seas-lie.md

* chore: rename medusaCloudOptions to cloud

* fix tests
2025-10-29 10:02:37 +01:00
Oli Juhl f055bfd723 fix(pricing): Update store + list price preferences (#13852)
* fix(pricing): Update store + list price preferencs

* Create afraid-kids-return.md
2025-10-25 21:45:26 +02:00
Oli Juhl b5ecdfcd12 feat: Add allocation method type ONCE (#13700)
### What
Add a new `once` allocation strategy to promotions that limits application to a maximum number of items across the entire cart, rather than per line item.

### Why
Merchants want to create promotions that apply to a limited number of items across the entire cart. For example:
- "Get $10 off, applied to one item only"
- "20% off up to 2 items in your cart"

Current allocation strategies:
- `each`: Applies to each line item independently (respects `max_quantity` per item)
- `across`: Distributes proportionally across all items

Neither supports limiting total applications across the entire cart.

### How

Add `once` to the `ApplicationMethodAllocation` enum.

Behavior:
- Applies promotion to maximum `max_quantity` items across entire cart
- Always prioritizes lowest-priced eligible items first
- Distributes sequentially across items until quota exhausted
- Requires `max_quantity` field to be set

### Example Usage

**Scenario 1: Fixed discount**
```javascript
{
  type: "fixed",
  allocation: "once",
  value: 10,        // $10 off
  max_quantity: 2   // Apply to 2 items max across cart
}

Cart:
- Item A: 3 units @ $100/unit
- Item B: 5 units @ $50/unit (lowest price)

Result: $20 discount on Item B (2 units × $10)
```

**Scenario 2: Distribution across items**
```javascript
{
  type: "fixed",
  allocation: "once",
  value: 5,
  max_quantity: 4
}

Cart:
- Item A: 2 units @ $50/unit
- Item B: 3 units @ $60/unit

Result:
- Item A: $10 discount (2 units × $5)
- Item B: $10 discount (2 units × $5, remaining quota)
```

**Scenario 3: Percentage discount - single item**
```javascript
{
  type: "percentage",
  allocation: "once",
  value: 20,         // 20% off
  max_quantity: 3    // Apply to 3 items max
}

Cart:
- Item A: 5 units @ $100/unit
- Item B: 4 units @ $50/unit (lowest price)

Result: $30 discount on Item B (3 units × $50 × 20% = $30)
```

**Scenario 4: Percentage discount - distributed across items**
```javascript
{
  type: "percentage",
  allocation: "once",
  value: 15,         // 15% off
  max_quantity: 5
}

Cart:
- Item A: 2 units @ $40/unit (lowest price)
- Item B: 4 units @ $80/unit

Result:
- Item A: $12 discount (2 units × $40 × 15% = $12)
- Item B: $36 discount (3 units × $80 × 15% = $36, remaining quota)
Total: $48 discount
```

**Scenario 5: Percentage with max_quantity = 1**
```javascript
{
  type: "percentage",
  allocation: "once",
  value: 25,         // 25% off
  max_quantity: 1    // Only one item
}

Cart:
- Item A: 3 units @ $60/unit
- Item B: 2 units @ $30/unit (lowest price)

Result: $7.50 discount on Item B (1 unit × $30 × 25%)
```
2025-10-14 11:01:00 +00:00
Oli Juhl 1d2b4566fd chore: Ensure refund doesn't exceed captured amount (#13744)
* wip

* chore: prepare for PR

* move to end

* Change order of operations in refundPaymentWorkflow

Updated the order of operations in the refundPaymentWorkflow.

* chore: Add validation
2025-10-13 22:09:46 +02:00
Oli Juhl 439969b015 chore: Temporary patch to bypass changesets issue with too many commits (#13706)
* chore: Temporary patch for changesets

* bump lockfile
2025-10-08 09:36:24 +02:00
Oli Juhl 76497fd40a fix(core-flows): Lock cart on shipping update (#13535) 2025-09-17 21:29:45 +02:00
Oli Juhl 8e11998895 fix(medusa): Use default logger in plugin:develop (#13375)
**What**

Use default logger for plugin command, since there is no `medusa-config.ts` to load the container with (the container that holds the custom logger)
2025-09-08 16:19:42 +00:00
Oli Juhl 637d4cf7ef fix: Missing DB traces in instrumentation (#13429)
* chore: Fix issue with missing DB traces

* Fix missing DB traces in Medusa package

Fixes an issue related to missing database traces in the Medusa package.
2025-09-07 15:04:15 +02:00
Oli Juhl 115a1deb49 chore: Fix scripts in CLI pipeline (#13402)
* chore: Fix scripts in CLI pipeline

* Create curly-lizards-dress.md
2025-09-03 14:07:24 +02:00
Oli Juhl cbaa403744 chore: Enable draft order plugin by default (#13314)
* wip

* fix

* fix tests

* update lockfile

* fix deps

* Enable draft order plugin by default

* remove double negation

* support merging modules
2025-08-28 14:14:40 +02:00
Oli Juhl b3fb0f7634 chore: Revert #13189 (#13318) 2025-08-28 11:46:01 +02:00
Oli Juhl a0fca16570 feat: Add Draft Order plugin (#13291)
* feat: Add draft order plugin

* version draft order plugin

* update readme

* chore: Update scripts

* Create purple-dolls-cheer.md

* port over latest changes

* chore: Make package public
2025-08-27 10:14:17 +02:00
Oli Juhl f0ef444992 fix(fulfillment): Geozone constraints builder (#13282) 2025-08-23 14:51:04 +02:00
Oli JuhlandFrane Polić b152210554 feat(core-flows): Refresh adjustments when editing orders (#13189)
* wip

* add tests

* add more tests

* fixes buy-get promotion

* Create empty-pillows-promise.md

* chore: use query graph

* Update packages/core/core-flows/src/order/workflows/order-edit/refresh-order-edit-adjustments.ts

Co-authored-by: Frane Polić <16856471+fPolic@users.noreply.github.com>

---------

Co-authored-by: Frane Polić <16856471+fPolic@users.noreply.github.com>
2025-08-20 15:04:27 +02:00
Oli Juhl f4ae615a3e fix(tax): Use correct rule reference for shipping (#13195)
* fix(tax): Use correct rule reference

* fix tests
2025-08-13 21:06:19 +02:00
Oli Juhl ee0b873f82 chore: Update CODEOWNERS 2025-08-05 13:21:52 +02:00
Oli Juhl 02dd83f59a fix(pricing): Calculate prices with multiple rule values (#13079) 2025-08-05 13:04:55 +02:00
Oli Juhl 909fc4c127 fix(create-medusa-app): Don't allow dot in project name (#13042) 2025-07-25 17:44:06 +02:00
Oli Juhl 468b81c2cb fix(modules-sdk): Entity types (#13002)
* fix(modules-sdk): Entity types

* Create forty-laws-wait.md
2025-07-22 19:48:35 +02:00
42be9a88d6 fix(medusa, core-flows): Update TIP on promotions (#12885)
* fix: Update TIP on promotions

* Create warm-rings-look.md

* only show for fixed discounts

* fix: handle type change

---------

Co-authored-by: fPolic <mainacc.polic@gmail.com>
Co-authored-by: Frane Polić <16856471+fPolic@users.noreply.github.com>
2025-07-08 19:20:29 +02:00
Oli Juhl a7700f116f fix(order, core-flows): Tax inclusive order line item adjustments (#12875)
* fix(order, core-flows): Tax inclusive order line item adjustments

* fix test
2025-07-06 22:32:17 +02:00
Oli Juhl 46bf7ae7ae fix(core-flows): Locations levels check in draft order and order edit flows (#12881)
* fix: Inventory check

* mend

* centralise fields

* Create few-owls-push.md
2025-07-03 17:31:04 +02:00
Oli Juhl 6aa89b62b9 chore: Bump Kapa SDK (#12870) 2025-07-02 10:20:25 +02:00
Oli Juhl a263d8818d chore: Update teams.yml 2025-06-20 21:03:41 +02:00
Oli Juhl 1c987540aa fix(workflow-engine-redis): Ensure PK is set without errors (#12775)
* fix(workflow-engine-redis): Align naming of migration

* change approach
2025-06-19 20:19:01 +02:00
Oli Juhl b79215dd5c fix(utils): Typecasting non-text fields in FTS (#12729) 2025-06-13 13:18:50 +02:00
Oli Juhl 2c49e8b733 chore: Add missing minor bump changeset (#12455) 2025-05-13 12:51:46 +02:00
Oli Juhl 92af52d133 fix(tax): Make system provider registration backward compatible (#12441)
* fix(tax): Make provider registration backward compatible

* add tests
2025-05-12 17:06:43 +02:00
Oli Juhl 469ecef3c5 chore: Minor restructure of cart completion (#12353)
* chore: Minor revamp of cart completion

* wip

* wip

* temp. remove import

* continue on error

* chore: Use workflow

* fix import

* Create beige-actors-tie.md

* fix import
2025-05-08 13:37:21 +02:00
Oli Juhl aba4cba373 fix(medusa): Support additional data on admin/collections (#12345)
* fix(medusa): Support additional data on admin/collections

* Create five-experts-wink.md

* add to validators
2025-05-06 14:00:18 +02:00
Oli Juhl 77c3023200 fix(product): Return updated collections (#12354)
Collection updates without a `products` payload were not returned from the service layer due to an incorrect early return

Fixes SUP-1488
2025-05-05 14:41:45 +00:00
Oli Juhl b463c7980a chore: Update teams.yml (#12355)
**What**
- Add Pedro to team
2025-05-05 07:16:48 +00:00
Oli JuhlandRiqwan Thamir fe74e77a7a chore: Pass more data to fulfillment provider (#12186)
* fix(core-flows): Add more fulfillment data

* fix(core-flows): Add more fulfillment data

* add more fields

---------

Co-authored-by: Riqwan Thamir <rmthamir@gmail.com>
2025-04-18 10:24:46 +02:00
Oli Juhl 40b08f7325 chore: Patch changesets to avoid major bumps (#12151) 2025-04-11 10:18:31 +02:00
Oli Juhl 79cfc1a69e fix(utils): Enable Redis locking by default in Cloud (#12017)
* fix(utils): Enable redis locking by default

* fix: tests

* Create popular-rules-shake.md
2025-03-28 16:23:02 +01:00
Oli Juhl acdcb11947 chore: Remove integration-tests from changeset 2025-03-28 15:54:29 +01:00
Oli Juhl 230cb84fa4 fix(dashboard): Product export fields (#11999)
What
- Remove `fields` from query to export products

Why
- The product export route uses the `fields` in the export request if specified. The `fields` didn't used to be part of the request, but in #11532 we accidentally started using a narrow set of fields as a result of shaving down on the requested data elsewhere in the dashboard.
2025-03-27 11:38:43 +00:00
Oli Juhl 3b470f4142 chore: remove ranges on medusa packages (#11738) 2025-03-06 14:17:05 +01:00
Oli Juhl 54a6ef91ac chore: Move token from params to headers (#11281)
* chore: Move token from params to body

* chore: Add type

* wip

* chore: clean up

* clean ip
2025-02-26 17:41:16 +01:00
Oli Juhl 215553792b chore: Force select-in strategy by passing pagination through (#11556)
* chore: Force select-in by passing pagination through

* chore: Force select-in by passing pagination through
2025-02-23 14:42:19 +01:00
Oli Juhl dbd06fd41d fix(utils): Handle 0 correctly in build query (#11525)
**What**

Remove truthy/falsy check for `take` and `skip`

**Why**

To ensure `{ take: 0, skip: 0 }` is not converted to `{ take: undefined, skip: undefined }`
2025-02-19 19:04:48 +00:00
Oli Juhl db03738b5f chore: Revert version range to ^ (#11390) 2025-02-11 11:35:25 +01:00
Oli Juhl ae3292c98b chore(js-sdk): Remove create user method from SDK (#11186)
Endpoint doesn't exist. Admin users can only be created through invites at the HTTP level.
2025-01-28 12:11:58 +00:00
Oli Juhl 961ad4723e fix(dashboard): Matching product profile with shipping profile (#11183) 2025-01-27 17:13:07 +00:00
Oli Juhl 65bf6e4fce chore: Use local CLI version in CI (#10982)
* chore: Use local CLI version in CI

* Update test-cli-with-database.yml
2025-01-15 12:21:19 -05:00
Oli Juhl 9133957a94 fix(notification): Only use enabled providers for notis (#10659) 2024-12-18 13:59:12 +01:00
Oli Juhl c9b8db04c1 feat: Custom line items (#10408)
* feat: Custom line items

* fix tests

* fix migration

* Allow custom items in update line item workflow

* throw if line item doesn't have a price

* minor things

* wip

* fix flows

* fix test

* add default

* add to type
2024-12-18 12:53:57 +01:00
Oli Juhl f3eca7734e fix(medusa): Missing metadata field on order (#10651) 2024-12-18 10:09:35 +01:00
Oli Juhl e5e5a34108 fix(core-flows): Refresh cart when items are deleted (#10513) 2024-12-09 19:21:32 +01:00
Oli Juhl ff4663713a fix(core-flows): Listing return shipping options (#10432) 2024-12-04 17:21:07 +01:00
Oli Juhl eacd691951 fix: Ensure tax lines are generated for all items and shipping methods in cart (#10372)
* fix: Generate tax lines for all items in cart

* fix: Correct test
2024-12-01 14:50:38 +01:00
Oli Juhl 67e2e718e9 chore: Trigger staging update on new release (#10259) 2024-11-26 09:13:33 +01:00
Oli JuhlandCarlos R. L. Rodrigues cb2b06fab9 fix: Inventory module schema (#10262)
Co-authored-by: Carlos R. L. Rodrigues <37986729+carlos-r-l-rodrigues@users.noreply.github.com>
2024-11-26 09:02:37 +01:00
Oli Juhl 29ce10b09e fix(product): Update images before adding not null constraint (#10248) 2024-11-25 08:39:43 +00:00
Oli Juhl 1efe4e9e33 fix: Update js-sdk with token (#10211) 2024-11-22 09:32:48 +01:00
Oli Juhl 8091c5f5bc fix: Remove undefined from events in update (#10170) 2024-11-20 09:43:51 +01:00
Oli Juhl 094971775b chore: Add actor type check + more tests (#10005) 2024-11-10 21:38:19 +00:00
Oli Juhl 441004cc21 chore: Update auth flow (#9959) 2024-11-06 21:21:45 +01:00
Oli Juhl 505768dd9f fix: Product type tax overrides (#9951)
* fix: Make product type tax override work

* fix: Make product type tax override work
2024-11-06 20:33:40 +01:00
Oli Juhl c1c85ef952 fix(core-flows,medusa): Include region_id in shipping option retrieval (#9929)
### What
Include `region_id` when retrieving shipping options for a cart

### Why
Otherwise, region-specific prices will never show in the Store API

Closes CMRC-655 https://github.com/medusajs/medusa/issues/9906
2024-11-06 15:59:47 +00:00
Oli Juhl 674c86eaa0 chore: Use PR author name (#9940) 2024-11-05 19:15:53 +01:00
Oli Juhl 275a835726 chore: Sync PR and Discussions to Linear (#9938)
* chore: Sync PRs and Discussions to Linear

* chore: Sync PRs and Discussions to Linear
2024-11-05 14:56:10 +01:00
Oli Juhl b9c787ac2b chore: Add fixed packages in changeset (#9752)
* chore: Add fixed packages in changeset

* chore: add dev-cli to changeset packages

* chore: Exclude @medusajs/ui
2024-10-25 11:01:17 +02:00
Oli Juhl c3418a2b93 chore: Prepare versions + changeset (#9707)
* chore: Prepare version + changeset

* chore: Bump dependencies

* chore: Update lock-file
2024-10-22 20:31:33 +02:00
Oli Juhl f1b2d22db7 chore: Remove v2 branches from starters (#9721)
* chore: Remove v2 branches from starters

* revert imports
2024-10-22 20:00:13 +02:00
Oli Juhl 604c182a20 fix(core-flows): Actually emit event in update products workflow (#9682) 2024-10-21 09:55:50 +02:00
Oli Juhl 0be50059f2 fix: Add free text search on reservations (#9621) 2024-10-17 10:21:24 +02:00
Oli Juhl df78f6e871 chore: Prepare changeset for 2.0 release (#9631) 2024-10-17 09:37:37 +02:00
Oli Juhl 43324b9294 fix: Add shipping method data validation (#9542)
* fix: Add shipping method data validation

* fix: return type
2024-10-14 12:55:01 +02:00
Oli Juhl 853187410e fix(product): Always add q if defined (#9505) 2024-10-09 11:52:02 +02:00
Oli Juhl 67e08dc989 fix(payment): Capture payment (#9469)
What
- Add missing `captured_at` field to payment retrieval
- Properly delete Medusa captures in case 3rd party capture call fails
2024-10-04 15:15:10 +00:00
Oli Juhl f7472a6fa6 fix: Idempotent cart completion (#9231)
What
- Store result of cart-completion workflow for three days by default
  - This enables the built-in idempotency mechanism to kick-in, provided the same transaction ID is used on workflow executions
- Return order from cart-completion workflow if the cart has already been completed
  - In case transaction ID is not used on workflow executions, we still only want to complete a cart once
2024-10-04 12:01:09 +00:00
Oli Juhl 6055f4c9cf fix: If country on cart has no tax region, clear tax lines (#9447)
**What**

If the country on the shipping address changes to a country without an associated tax region, we clear the tax lines on shipping methods and line items.
2024-10-04 11:55:53 +00:00
Oli Juhl a114f90358 fix: Handle region updates on cart (1/n) (#9369)
**What**

On cart creation:
- If region only has one country -> create cart with country code

On cart updates:
- If shipping address country code is provided in input ->
  - If cart region doesn't include that country -> throw
  - If cart includes the country -> update shipping address
- If region is provided in input and is different from the one currently on the cart -> 
  - If there is a shipping address on the cart -> clear the address
    - If the region only has one country -> set country code of address
  - If there is not a shipping address on the cart ->
    - If the region only has one country -> set country code of address


Closes CC-545
2024-10-04 11:33:36 +00:00
Oli Juhl 732f64177d fix: Validate identifier payload for reset password (#9302)
Closes CC-526
2024-10-01 13:30:23 +00:00
Oli Juhl 8851ae7b51 fix: Update tax lines on cart when region changes (#9367)
**What**
- Removes broken cart retrieval step `retrieveWithCartLinks` in favor of `useRemoteQueryStep` in `updateTaxLinesWorkflows`

**Why**
- Filters variables in the step were passed with an incorrect shape
  - I removed the step, since it's only used once and the behavior is identical to the generic remote query step

**Note**
- Because the filters were passed incorrectly, the, now-removed, step has always returned the first cart in the database. As a result all tax calculations so far have been based on whatever the shape of that cart has. It basically ignores all input to this workflow
2024-09-30 11:55:54 +00:00
Oli Juhl 1b4372ae71 fix: Tax region + rates clean up (#9279)
What
- Require `code` on Tax Rates
- Update dashboard to account for non-nullable code on Tax Rates

- Include `automatic_taxes` in API Route response

Closes CC-524 CC-525
2024-09-29 10:25:33 +00:00
Oli Juhl 9a0ae1484c chore: Add missing changeset for index (#9288) 2024-09-24 20:35:36 +02:00
Oli Juhl cbf52ee4d7 chore: Add stale bot (#9184) 2024-09-18 19:17:12 +02:00
Oli Juhl 4bf42f7889 fix: Update auth app_metadata when deleting users + customers (#9041)
* wip

* more work

* working on stuff

* more

* fix test

* remove incorrect test

* fix test

* fix: Only allow deletion of yourself

* remove redundant tests
2024-09-10 19:58:16 +02:00
Oli Juhl e27056b3c3 feat: Reset password (#8962)
* wip

* more work

* wip

* more work

* wrap up first iteration

* work on new approach

* more work

* move middleware func to route

* cleanup

* more work

* wrap up

* more work

* fix workflow

* minor tweaks

* finalize

* Use JWT secret instead
2024-09-06 12:28:29 +02:00
Oli Juhl f063a69632 chore(core-flows): Add invite resent event (#8986) 2024-09-04 19:53:29 +02:00
Oli Juhl cbb0a6adc7 fix: Customer registration (#8896)
* fix: Customer registration

* update test

* one mroe test

* chore: add transformation
2024-09-01 11:41:39 +02:00
Oli Juhl 4350fe5368 chore: Remove @medusajs/medusa usage + local types from dashboard (#8883)
Closes CC-403
2024-08-30 15:37:44 +00:00
Oli Juhl e360a495b7 chore: Replace Error with FetchError (#8885) 2024-08-30 11:08:36 +02:00
Oli Juhl e0cb5ff0aa fix(dashboard): Fetch tags + types in product forms (#8887) 2024-08-30 08:35:46 +02:00
Oli Juhl 9cf1a5d709 chore: Remove last trace of client in dashboard (#8873) 2024-08-29 17:48:01 +02:00
Oli Juhl 00bd9271e3 chore: Workflow execution JS-SDK (#8851) 2024-08-29 11:22:43 +00:00