Skip to Content

Contributors

Best model for selling unique products (used machines)

Hello,

I have a hard time to decide which Odoo model to use for selling unique
products.

The products are used machines. So in general one could think of a
generic product with manufacturer and model and a certain instance of it.
But since these are used items, they come with a lot of customizations
and other instance specific attributes like operation hours etc.
So it’s more like the product == instance.

We thought about using `product.product` for the brand/model and
`stock.production.lot` for the instance, but after some research in the
odoo v12 code I'm not sure if this is really the best option.

To me it looks like `stock.production.lot` is more about tractability of
instance of generic products **after** they have been sold, since
`stock.production.lot`  is very tightly tied to stock operations.

We need to have product instances already during the whole CRM, Quote,
SaleOrder process. I don’t see how to easily put `stock.production.lot`
on `sale.order.lines`.

The other option would be just going for `product.product` and assume
product == product instance.

I’m not really sure about benefits/drawbacks or maybe other/better
approaches.


Please give me your opinions about what model is best to use as a base
for selling unique items in odoo.

Thanks. Regards, Peter

by Pete Hahn - 03:36 - 21 Aug 2020

Follow-Ups

  • Re: Best model for selling unique products (used machines)
    to contribute to this very interesting discussion:
    we have encountered this situation (unique products) and decided to use products (product.template/product) vs lot (stock.production.lot), because of the stock valuation.
    if you use the perpetual inventory, all the lots share the same cost (average or FIFO), which is a big problem as unique products have unique cost, and selecting a specific serial number does not change the cost sequence (FIFO).

    Just for this reason, we decided to use products.

    Cheers,
    Dominique



    On Thu, 27 Aug 2020 at 05:06, Frederik Kramer <frederik.kramer@initos.com> wrote:
    Hi Graeme, 
    
    Peter and me had a intense discussion on the matter today again.
    Probably none of the solutions (purely thought) is really it. 
    
    We deal with instances of technical machinery (agricultural machinery
    to be precise). Almost always there is a base product but then there is
    a set of attributes (each of which may be boolean, text, integer
    sometimes in a configurable list). So its much like the use case in e-
    Commerce (hat odoo-pim and Akretion adressed). However, each of these
    instances also has a unique serial number at a certain point. This
    serial number (just like a car) is the unique identifier with which the
    concrete machine is recognizable not only by our customer but also by
    the manufacturer and diverse other organisations (including the state).
    So theoretically its valid to extend stock.production.lot or
    product.product to store the additional information there. We were
    almost changing our minds from the inital solution
    (stock.production.lot) to product.product but that the fact that we
    really have trouble having a clean UI for spare parts (w/o) serial
    number and without massive attribute sets renders this solution
    cumbersome. So we no probably go for extending product.product with an
    addtional and specific model that is just beeing used and filled if the
    concrete product is a machinery and not for intance a nut or a nail or
    whatever. Certainly this also comes with drawbacks but probaly less
    then extending either of the aforemetioned models directly.
    
    Best Frederik
     
    
    Am Mittwoch, den 26.08.2020, 20:42 +0000 schrieb Graeme Gellatly:
    
    
    > Your main issue is this.
    
    
    > 
    
    
    > If I sell lots of the same product in different states with a
    
    
    > reasonably high inventory turnover - then I'd use lots. The reason
    
    
    > is, plenty can go wrong using products, like imagine the work in
    
    
    > activating, deactivating, creating a new product each time,
    
    
    > stocktakes and maintenance. You end up with 100's of items with very
    
    
    > similar descriptions, some are in stock some aren't.  If a user picks
    
    
    > the wrong one, it actually sucks changing everything like the sale,
    
    
    > picking etc, whereas for lots it is generally easily editable. 
    
    
    > 
    
    
    > If I sell few products or always different makes/models, then using
    
    
    > product, deaactivating and all the other work on the item list
    
    
    > maintenance side might be worth it and easier than the work in
    
    
    > maintaining lots.  You just duplicate, update description etc and
    
    
    > hope noone makes a mistake with accounts, categories, duplicate
    
    
    > references etc.
    
    
    > 
    
    
    > To me lots are completely natural, as a lot is a specific
    
    
    > identifiable instance of a product, but if you are treating products
    
    
    > as essentially the lot anyway then there is no point.
    
    
    > 
    
    
    > On Wed, Aug 26, 2020 at 8:12 PM Peter Hahn <peter.hahn@initos.com>
    
    
    > wrote:
    
    
    > > Dear all, thanks for all the input.
    
    
    > > 
    
    
    > > Am 26.08.20 um 09:52 schrieb Roussel, Denis:
    
    
    > > 
    
    
    > > 
    
    
    > > > From my point of view and from near experience of customer of
    
    
    > > ours, we advise as some said to not change too much the Odoo base
    
    
    > > objects purpose as, along project life, you'll need to twist all
    
    
    > > the Odoo flows to adapt to your changes. 
    
    
    > > 
    
    
    > > That’s interesting, because that’s the main thing I am thinking
    
    
    > > about:
    
    
    > > Which approach will break the most/need the most customization?
    
    
    > > 
    
    
    > > What flows do you think of exactly?
    
    
    > > 
    
    
    > > In my use case I only intend to add informative information to the
    
    
    > > products, so my current impression is, that using products will
    
    
    > > give me
    
    
    > > all the flows I need out of the box, while `stock.production.lot`
    
    
    > > will
    
    
    > > be at least a bit cumbersome in the UI for users and need
    
    
    > > customizations
    
    
    > > to make it work as expected for the user. (E.g. I think one would
    
    
    > > expect
    
    
    > > the sold machine (lot) named on the invoice)
    
    
    > > 
    
    
    > > 
    
    
    > > 
    
    
    > > > As Graeme said, the lots are the good place to extend
    
    
    > > modelization for one product instance.
    
    
    > > Ok. This seams to be somewhat common sence among the list.
    
    
    > > 
    
    
    > > 
    
    
    > > Ok. I think I don’t need to bother you anymore but just make a
    
    
    > > decision.
    
    
    > > 
    
    
    > > So to get to more concrete question:
    
    
    > > What could be possibly go wrong using product.product?
    
    
    > > What do you expect to break?
    
    
    > > 
    
    
    > > The only thing I can think off that would be strange is, if they
    
    
    > > one day
    
    
    > > decide to sell something completly different things too. Than all
    
    
    > > the
    
    
    > > machine specific information won’t make much sense.
    
    
    > > _______________________________________________
    
    
    > > Mailing-List: https://odoo-community.org/groups/contributors-15
    
    
    > > Post to: mailto:contributors@odoo-community.org
    
    
    > > Unsubscribe: https://odoo-community.org/groups?unsubscribe
    
    
    > 
    
    
    > _______________________________________________
    
    
    > Mailing-List: https://odoo-community.org/groups/contributors-15
    
    
    > Post to: mailto:contributors@odoo-community.org
    
    
    > Unsubscribe: https://odoo-community.org/groups?unsubscribe
    
    
    -- 
    Dr.-Ing. Frederik Kramer
    Geschäftsführer
            
    initOS GmbH
    An der Eisenbahn 1
    21224 Rosengarten
            
    Phone:  +49 4105 56156-12
    Fax:    +49 4105 56156-10
    Mobil:  +49 179 3901819
            
    Email: frederik.kramer@initos.com
    Web:   www.initos.com
            
    Geschäftsführung:
    Dr.-Ing. Frederik Kramer & Dipl.-Ing. (FH) Torsten Francke
    
    Sitz der Gesellschaft: Rosengarten – Klecken
    Amtsgericht Tostedt, HRB 205226
    Steuer-Nr: 15/200/53247
    USt-IdNr.: DE815580155
    
    

    _______________________________________________
    Mailing-List: https://odoo-community.org/groups/contributors-15
    Post to: mailto:contributors@odoo-community.org
    Unsubscribe: https://odoo-community.org/groups?unsubscribe


    by dominique.k - 02:21 - 27 Aug 2020
  • Re: Best model for selling unique products (used machines)
    I would like to add these thoughts to the discussion:
    An individual product stored in a warehouse(stock.location) should be treated individually using Serial Number traceability(stock.production.lot) like has been discussed here in this thread...
    But an individual product that it's not in a good condition due to its use or it have been pulled of from the Warehouse to start it's useful life should be treated like an Asset(asset.asset) with a depreciation model and their own features to individually differentiate it from the generic products that keep their New or Good Condition State inside the Warehouse. For example all the used machinery, cars, buildings or Assets in general have individual values of measures like years of usage, year of the release, KMs or Miles traveled... that change from Unit to Unit affecting also the price of the Asset due to the sum of all the depreciations or valuations that apply
    So you should be using asset.asset too in combination with product.product and stock.production.lot
    Hope this help
     


    On Wed, Aug 26, 2020 at 4:06 PM Frederik Kramer <frederik.kramer@initos.com> wrote:
    Hi Graeme, 
    
    Peter and me had a intense discussion on the matter today again.
    Probably none of the solutions (purely thought) is really it. 
    
    We deal with instances of technical machinery (agricultural machinery
    to be precise). Almost always there is a base product but then there is
    a set of attributes (each of which may be boolean, text, integer
    sometimes in a configurable list). So its much like the use case in e-
    Commerce (hat odoo-pim and Akretion adressed). However, each of these
    instances also has a unique serial number at a certain point. This
    serial number (just like a car) is the unique identifier with which the
    concrete machine is recognizable not only by our customer but also by
    the manufacturer and diverse other organisations (including the state).
    So theoretically its valid to extend stock.production.lot or
    product.product to store the additional information there. We were
    almost changing our minds from the inital solution
    (stock.production.lot) to product.product but that the fact that we
    really have trouble having a clean UI for spare parts (w/o) serial
    number and without massive attribute sets renders this solution
    cumbersome. So we no probably go for extending product.product with an
    addtional and specific model that is just beeing used and filled if the
    concrete product is a machinery and not for intance a nut or a nail or
    whatever. Certainly this also comes with drawbacks but probaly less
    then extending either of the aforemetioned models directly.
    
    Best Frederik
     
    
    Am Mittwoch, den 26.08.2020, 20:42 +0000 schrieb Graeme Gellatly:
    
    
    > Your main issue is this.
    
    
    > 
    
    
    > If I sell lots of the same product in different states with a
    
    
    > reasonably high inventory turnover - then I'd use lots. The reason
    
    
    > is, plenty can go wrong using products, like imagine the work in
    
    
    > activating, deactivating, creating a new product each time,
    
    
    > stocktakes and maintenance. You end up with 100's of items with very
    
    
    > similar descriptions, some are in stock some aren't.  If a user picks
    
    
    > the wrong one, it actually sucks changing everything like the sale,
    
    
    > picking etc, whereas for lots it is generally easily editable. 
    
    
    > 
    
    
    > If I sell few products or always different makes/models, then using
    
    
    > product, deaactivating and all the other work on the item list
    
    
    > maintenance side might be worth it and easier than the work in
    
    
    > maintaining lots.  You just duplicate, update description etc and
    
    
    > hope noone makes a mistake with accounts, categories, duplicate
    
    
    > references etc.
    
    
    > 
    
    
    > To me lots are completely natural, as a lot is a specific
    
    
    > identifiable instance of a product, but if you are treating products
    
    
    > as essentially the lot anyway then there is no point.
    
    
    > 
    
    
    > On Wed, Aug 26, 2020 at 8:12 PM Peter Hahn <peter.hahn@initos.com>
    
    
    > wrote:
    
    
    > > Dear all, thanks for all the input.
    
    
    > > 
    
    
    > > Am 26.08.20 um 09:52 schrieb Roussel, Denis:
    
    
    > > 
    
    
    > > 
    
    
    > > > From my point of view and from near experience of customer of
    
    
    > > ours, we advise as some said to not change too much the Odoo base
    
    
    > > objects purpose as, along project life, you'll need to twist all
    
    
    > > the Odoo flows to adapt to your changes. 
    
    
    > > 
    
    
    > > That’s interesting, because that’s the main thing I am thinking
    
    
    > > about:
    
    
    > > Which approach will break the most/need the most customization?
    
    
    > > 
    
    
    > > What flows do you think of exactly?
    
    
    > > 
    
    
    > > In my use case I only intend to add informative information to the
    
    
    > > products, so my current impression is, that using products will
    
    
    > > give me
    
    
    > > all the flows I need out of the box, while `stock.production.lot`
    
    
    > > will
    
    
    > > be at least a bit cumbersome in the UI for users and need
    
    
    > > customizations
    
    
    > > to make it work as expected for the user. (E.g. I think one would
    
    
    > > expect
    
    
    > > the sold machine (lot) named on the invoice)
    
    
    > > 
    
    
    > > 
    
    
    > > 
    
    
    > > > As Graeme said, the lots are the good place to extend
    
    
    > > modelization for one product instance.
    
    
    > > Ok. This seams to be somewhat common sence among the list.
    
    
    > > 
    
    
    > > 
    
    
    > > Ok. I think I don’t need to bother you anymore but just make a
    
    
    > > decision.
    
    
    > > 
    
    
    > > So to get to more concrete question:
    
    
    > > What could be possibly go wrong using product.product?
    
    
    > > What do you expect to break?
    
    
    > > 
    
    
    > > The only thing I can think off that would be strange is, if they
    
    
    > > one day
    
    
    > > decide to sell something completly different things too. Than all
    
    
    > > the
    
    
    > > machine specific information won’t make much sense.
    
    
    > > _______________________________________________
    
    
    > > Mailing-List: https://odoo-community.org/groups/contributors-15
    
    
    > > Post to: mailto:contributors@odoo-community.org
    
    
    > > Unsubscribe: https://odoo-community.org/groups?unsubscribe
    
    
    > 
    
    
    > _______________________________________________
    
    
    > Mailing-List: https://odoo-community.org/groups/contributors-15
    
    
    > Post to: mailto:contributors@odoo-community.org
    
    
    > Unsubscribe: https://odoo-community.org/groups?unsubscribe
    
    
    -- 
    Dr.-Ing. Frederik Kramer
    Geschäftsführer
            
    initOS GmbH
    An der Eisenbahn 1
    21224 Rosengarten
            
    Phone:  +49 4105 56156-12
    Fax:    +49 4105 56156-10
    Mobil:  +49 179 3901819
            
    Email: frederik.kramer@initos.com
    Web:   www.initos.com
            
    Geschäftsführung:
    Dr.-Ing. Frederik Kramer & Dipl.-Ing. (FH) Torsten Francke
    
    Sitz der Gesellschaft: Rosengarten – Klecken
    Amtsgericht Tostedt, HRB 205226
    Steuer-Nr: 15/200/53247
    USt-IdNr.: DE815580155
    
    

    _______________________________________________
    Mailing-List: https://odoo-community.org/groups/contributors-15
    Post to: mailto:contributors@odoo-community.org
    Unsubscribe: https://odoo-community.org/groups?unsubscribe


    by Axel Mendoza - 12:06 - 27 Aug 2020
  • Re: Best model for selling unique products (used machines)
    Hi Graeme, 
    
    Peter and me had a intense discussion on the matter today again.
    Probably none of the solutions (purely thought) is really it. 
    
    We deal with instances of technical machinery (agricultural machinery
    to be precise). Almost always there is a base product but then there is
    a set of attributes (each of which may be boolean, text, integer
    sometimes in a configurable list). So its much like the use case in e-
    Commerce (hat odoo-pim and Akretion adressed). However, each of these
    instances also has a unique serial number at a certain point. This
    serial number (just like a car) is the unique identifier with which the
    concrete machine is recognizable not only by our customer but also by
    the manufacturer and diverse other organisations (including the state).
    So theoretically its valid to extend stock.production.lot or
    product.product to store the additional information there. We were
    almost changing our minds from the inital solution
    (stock.production.lot) to product.product but that the fact that we
    really have trouble having a clean UI for spare parts (w/o) serial
    number and without massive attribute sets renders this solution
    cumbersome. So we no probably go for extending product.product with an
    addtional and specific model that is just beeing used and filled if the
    concrete product is a machinery and not for intance a nut or a nail or
    whatever. Certainly this also comes with drawbacks but probaly less
    then extending either of the aforemetioned models directly.
    
    Best Frederik
     
    
    Am Mittwoch, den 26.08.2020, 20:42 +0000 schrieb Graeme Gellatly:
    
    > Your main issue is this.
    
    > 
    
    > If I sell lots of the same product in different states with a
    
    > reasonably high inventory turnover - then I'd use lots. The reason
    
    > is, plenty can go wrong using products, like imagine the work in
    
    > activating, deactivating, creating a new product each time,
    
    > stocktakes and maintenance. You end up with 100's of items with very
    
    > similar descriptions, some are in stock some aren't.  If a user picks
    
    > the wrong one, it actually sucks changing everything like the sale,
    
    > picking etc, whereas for lots it is generally easily editable. 
    
    > 
    
    > If I sell few products or always different makes/models, then using
    
    > product, deaactivating and all the other work on the item list
    
    > maintenance side might be worth it and easier than the work in
    
    > maintaining lots.  You just duplicate, update description etc and
    
    > hope noone makes a mistake with accounts, categories, duplicate
    
    > references etc.
    
    > 
    
    > To me lots are completely natural, as a lot is a specific
    
    > identifiable instance of a product, but if you are treating products
    
    > as essentially the lot anyway then there is no point.
    
    > 
    
    > On Wed, Aug 26, 2020 at 8:12 PM Peter Hahn <peter.hahn@initos.com>
    
    > wrote:
    
    > > Dear all, thanks for all the input.
    
    > > 
    
    > > Am 26.08.20 um 09:52 schrieb Roussel, Denis:
    
    > > 
    
    > > 
    
    > > > From my point of view and from near experience of customer of
    
    > > ours, we advise as some said to not change too much the Odoo base
    
    > > objects purpose as, along project life, you'll need to twist all
    
    > > the Odoo flows to adapt to your changes. 
    
    > > 
    
    > > That’s interesting, because that’s the main thing I am thinking
    
    > > about:
    
    > > Which approach will break the most/need the most customization?
    
    > > 
    
    > > What flows do you think of exactly?
    
    > > 
    
    > > In my use case I only intend to add informative information to the
    
    > > products, so my current impression is, that using products will
    
    > > give me
    
    > > all the flows I need out of the box, while `stock.production.lot`
    
    > > will
    
    > > be at least a bit cumbersome in the UI for users and need
    
    > > customizations
    
    > > to make it work as expected for the user. (E.g. I think one would
    
    > > expect
    
    > > the sold machine (lot) named on the invoice)
    
    > > 
    
    > > 
    
    > > 
    
    > > > As Graeme said, the lots are the good place to extend
    
    > > modelization for one product instance.
    
    > > Ok. This seams to be somewhat common sence among the list.
    
    > > 
    
    > > 
    
    > > Ok. I think I don’t need to bother you anymore but just make a
    
    > > decision.
    
    > > 
    
    > > So to get to more concrete question:
    
    > > What could be possibly go wrong using product.product?
    
    > > What do you expect to break?
    
    > > 
    
    > > The only thing I can think off that would be strange is, if they
    
    > > one day
    
    > > decide to sell something completly different things too. Than all
    
    > > the
    
    > > machine specific information won’t make much sense.
    
    > > _______________________________________________
    
    > > Mailing-List: https://odoo-community.org/groups/contributors-15
    
    > > Post to: mailto:contributors@odoo-community.org
    
    > > Unsubscribe: https://odoo-community.org/groups?unsubscribe
    
    > 
    
    > _______________________________________________
    
    > Mailing-List: https://odoo-community.org/groups/contributors-15
    
    > Post to: mailto:contributors@odoo-community.org
    
    > Unsubscribe: https://odoo-community.org/groups?unsubscribe
    
    -- 
    Dr.-Ing. Frederik Kramer
    Geschäftsführer
            
    initOS GmbH
    An der Eisenbahn 1
    21224 Rosengarten
            
    Phone:  +49 4105 56156-12
    Fax:    +49 4105 56156-10
    Mobil:  +49 179 3901819
            
    Email: frederik.kramer@initos.com
    Web:   www.initos.com
            
    Geschäftsführung:
    Dr.-Ing. Frederik Kramer & Dipl.-Ing. (FH) Torsten Francke
    
    Sitz der Gesellschaft: Rosengarten – Klecken
    Amtsgericht Tostedt, HRB 205226
    Steuer-Nr: 15/200/53247
    USt-IdNr.: DE815580155
    
    

    by Frederik Kramer - 11:06 - 26 Aug 2020
  • Re: Best model for selling unique products (used machines)
    Your main issue is this.

    If I sell lots of the same product in different states with a reasonably high inventory turnover - then I'd use lots. The reason is, plenty can go wrong using products, like imagine the work in activating, deactivating, creating a new product each time, stocktakes and maintenance. You end up with 100's of items with very similar descriptions, some are in stock some aren't.  If a user picks the wrong one, it actually sucks changing everything like the sale, picking etc, whereas for lots it is generally easily editable. 

    If I sell few products or always different makes/models, then using product, deaactivating and all the other work on the item list maintenance side might be worth it and easier than the work in maintaining lots.  You just duplicate, update description etc and hope noone makes a mistake with accounts, categories, duplicate references etc.

    To me lots are completely natural, as a lot is a specific identifiable instance of a product, but if you are treating products as essentially the lot anyway then there is no point.

    On Wed, Aug 26, 2020 at 8:12 PM Peter Hahn <peter.hahn@initos.com> wrote:
    Dear all, thanks for all the input.
    
    Am 26.08.20 um 09:52 schrieb Roussel, Denis:
    
    
    > From my point of view and from near experience of customer of ours, we advise as some said to not change too much the Odoo base objects purpose as, along project life, you'll need to twist all the Odoo flows to adapt to your changes. 
    
    That’s interesting, because that’s the main thing I am thinking about:
    Which approach will break the most/need the most customization?
    
    What flows do you think of exactly?
    
    In my use case I only intend to add informative information to the
    products, so my current impression is, that using products will give me
    all the flows I need out of the box, while `stock.production.lot` will
    be at least a bit cumbersome in the UI for users and need customizations
    to make it work as expected for the user. (E.g. I think one would expect
    the sold machine (lot) named on the invoice)
    
    
    
    > As Graeme said, the lots are the good place to extend modelization for one product instance.
    Ok. This seams to be somewhat common sence among the list.
    
    
    Ok. I think I don’t need to bother you anymore but just make a decision.
    
    So to get to more concrete question:
    What could be possibly go wrong using product.product?
    What do you expect to break?
    
    The only thing I can think off that would be strange is, if they one day
    decide to sell something completly different things too. Than all the
    machine specific information won’t make much sense.
    

    _______________________________________________
    Mailing-List: https://odoo-community.org/groups/contributors-15
    Post to: mailto:contributors@odoo-community.org
    Unsubscribe: https://odoo-community.org/groups?unsubscribe


    by Graeme Gellatly - 10:41 - 26 Aug 2020
  • Re: Best model for selling unique products (used machines)
    Dear all, thanks for all the input.
    
    Am 26.08.20 um 09:52 schrieb Roussel, Denis:
    
    > From my point of view and from near experience of customer of ours, we advise as some said to not change too much the Odoo base objects purpose as, along project life, you'll need to twist all the Odoo flows to adapt to your changes. 
    
    That’s interesting, because that’s the main thing I am thinking about:
    Which approach will break the most/need the most customization?
    
    What flows do you think of exactly?
    
    In my use case I only intend to add informative information to the
    products, so my current impression is, that using products will give me
    all the flows I need out of the box, while `stock.production.lot` will
    be at least a bit cumbersome in the UI for users and need customizations
    to make it work as expected for the user. (E.g. I think one would expect
    the sold machine (lot) named on the invoice)
    
    
    > As Graeme said, the lots are the good place to extend modelization for one product instance.
    Ok. This seams to be somewhat common sence among the list.
    
    
    Ok. I think I don’t need to bother you anymore but just make a decision.
    
    So to get to more concrete question:
    What could be possibly go wrong using product.product?
    What do you expect to break?
    
    The only thing I can think off that would be strange is, if they one day
    decide to sell something completly different things too. Than all the
    machine specific information won’t make much sense.
    

    by Pete Hahn - 10:10 - 26 Aug 2020