Git Product home page Git Product logo

Comments (6)

cbrunsdon avatar cbrunsdon commented on May 17, 2024

I'm looking at "yet another mapping system" on a Spree 2.4 (which will shortly-ish go solidus) to map line items -> ??? -> multiple inventory units.

I'm having an initial discussion with Hawth and Jared on some of the systems we've already built and seeing what comes out of it. After that I'd like to talk to you @athal7 more about what you've done with bundles if you have a bit of time.

from solidus.

athal7 avatar athal7 commented on May 17, 2024

@cbrunsdon can you say more about that mapping system? I'm curious to understand what you mean by that. happy to chat about bundles anytime

from solidus.

cbrunsdon avatar cbrunsdon commented on May 17, 2024

Just to give some background to anyone reading this in the future (and anyone feel free to correct me if I'm wrong anywhere here) there are two different ways this has been done.

The first is a "mapping" system that maps a specific line item (or more likely, a line item's variants) to different stock items. When shipments are being created, rather than the line item's variants being added to a shipment, all the variants that are "mapped" get added instead. This is how something like spree-product-assembly works, or a few things we haven't been able to make public.

This method is:

  • Easier to make promotions on (as we can look at line-items individually)
  • Is much harder to track which line items inventory units came from (since they go through some mapping process)
  • Makes tracking stock on the line items very difficult (as we need to know the state of all mapped items)
  • Works well if mappings are "dynamic" and fulfilment can be handled by a selection of variants on the backend

The other implementation is "product bundles", which isn't currently public but the folk at Bonobos have in a state that could be shared relatively easily. Instead of handling the mapping of a line item to inventory units, it adds multiple line items to your cart when a "bundle" is added. This is the system I want more clarification on, but my immediate thoughts on it are:

  • Makes it very clear in a "cart" which items you're actually getting (which is desirable sometimes but not all times)
  • Has potentially less inventory complications as we know the variants that will be added as we check out
  • Makes it harder to write promotions for (think: %off if entire bundle is purchased, but a user could remove one of the variants in the cart)

from solidus.

athal7 avatar athal7 commented on May 17, 2024

Thanks for the write up. That's my understanding of the options as well

from solidus.

chornodid avatar chornodid commented on May 17, 2024

@cbrunsdon Did you consider to add bundle id along with variant id in case of "product bundle" solution so that you can eliminate the problem with promotions (you can check at any moment if a bundle is entire or not)

from solidus.

cbrunsdon avatar cbrunsdon commented on May 17, 2024

We don't have a clear winner on how to do bundling, and there isn't a clear path forward anyone is working on they want in so I'm closing this. If anyone was specifically attempting this themselves, happy to re-open the issue.

from solidus.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.