Skip to content

Cannot complete cart with products from different vendors #86

@LukaszMielczarek

Description

@LukaszMielczarek

I'm testing the complete flow of adding 2 products from different vendors to one cart.
I have performed the following steps:

1. Retrieve common info from admin API

  • get Regions → GET → admin/regions
  • get Sales Channel → GET → admin/sales-channels
  • get Shipping Profiles → GET → admin/shipping-profiles
  • get Payment Providers → GET → admin/payments/payment-providers

2. Create Stock Location for Vendor

  • POST → vendor/stock-locations

2. a. Add default Fulfilment Provider for Vendor's Stock Locations

  • POST → /vendor/stock-locations/${stock_location_id}/fulfillment-providers
    2. b. Create Fulfilment Sets for Vendor's Stock Locations
  • POST → /vendor/stock-locations/${stock_location_id}/fulfillment-sets
    2. c. Add Sales Channels for Vendor's Locations
  • POST → /vendor/stock-locations/${stock_location_id}/sales-channels

3. Create Service Zone ( or obtain existing one) for a Vendor

  • POST → /vendor/fulfillment-sets/${fulfillment_set_id}/service-zones

4. Create ( or obtain existing ) Shipping Options for Vendor

  • POST → /vendor/shipping-options

5. Create a Product with variants for Vendor

  • POST →/vendor/products

6. Create Stock Levels for Product's Variants Inventory Items

  • POST → /vendor/inventory-items/${inventory_item_id}/location-levels

7. Create Cart with Product's Variants from different vendors

  • POST ->/store/carts

8. Add Shipping Methods to Cart ( for all vendors that product variants exist inside cart )

  • POST → /store/carts/${cart_id}/shipping-methods
    8. a. Create Payment Collections for Cart
  • POST → /store/payment-collections
    8. b. Initiate Payment Sessions for Cart
  • POST → /store/payment-collections/${payment_collection_id}/payment-sessions

9. Complete cart
POST → /store/carts/:cart_id/complete

At that step I'm getting an error:

{
    "type": "not_found",
    "message": "Item <INVENTORY_ITEM_VENDOR_1> is not stocked at location <STOCK_LOCATION_VENDOR_2>"
}

Backend stacktrace :

backend:dev: error:   Item iitem_01JMCAEVY9MSGQJ1KTMVNAD5N1 is not stocked at location sloc_01JMC654246HQYGWTT0ZPH4KB3
backend:dev: {
backend:dev:   message: 'Item iitem_01JMCAEVY9MSGQJ1KTMVNAD5N1 is not stocked at location sloc_01JMC654246HQYGWTT0ZPH4KB3',
backend:dev:   name: 'Error',
backend:dev:   stack: 'Error: Item iitem_01JMCAEVY9MSGQJ1KTMVNAD5N1 is not stocked at location sloc_01JMC654246HQYGWTT0ZPH4KB3\n' +
backend:dev:     '    at InventoryModuleService.ensureInventoryLevels (marketplace-mvm/node_modules/@medusajs/inventory/src/services/inventory-module.ts:164:13)\n' +
backend:dev:     '    at processTicksAndRejections (node:internal/process/task_queues:105:5)\n' +
backend:dev:     '    at async InventoryModuleService.createReservationItems_ (marketplace-mvm/node_modules/@medusajs/inventory/src/services/inventory-module.ts:267:29)\n' +
backend:dev:     '    at async transaction.transaction (marketplace-mvm/node_modules/@medusajs/utils/src/modules-sdk/decorators/inject-transaction-manager.ts:63:18)\n' +
backend:dev:     '    at async fork.getConnection.transactional (marketplace-mvm/node_modules/@mikro-orm/core/EntityManager.js:774:29)\n' +
backend:dev:     '    at async PostgreSqlConnection.transactional (marketplace-mvm/node_modules/@mikro-orm/knex/AbstractSqlConnection.js:36:25)\n' +
backend:dev:     '    at async transactionWrapper (marketplace-mvm/node_modules/@medusajs/utils/src/dal/utils.ts:32:10)\n' +
backend:dev:     '    at async MikroOrmBaseRepository.transaction (marketplace-mvm/node_modules/@medusajs/utils/src/dal/mikro-orm/mikro-orm-repository.ts:74:12)\n' +
backend:dev:     '    at async InventoryModuleService.descriptor.value (marketplace-mvm/node_modules/@medusajs/utils/src/modules-sdk/decorators/inject-transaction-manager.ts:32:14)\n' +
backend:dev:     '    at async InventoryModuleService.createReservationItems (marketplace-mvm/node_modules/@medusajs/inventory/src/services/inventory-module.ts:238:21)\n' +
backend:dev:     '⮑ sat marketplace-mvm/apps/backend/src/workflows/cart/workflows/split-and-complete-cart.ts: [split-and-complete-cart -> reserve-inventory-step (invoke)]',
backend:dev:   __isMedusaError: true,
backend:dev:   type: 'not_found',
backend:dev:   code: undefined,
backend:dev:   date: 2025-02-18T10:58:56.834Z
backend:dev: }

Seems that having 2 product variants from different vendors in one cart is not working.
Can you verify that?
Am I doing something wrong?

Regards

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions