Odoo Help


Different graded (B-Stock) products

Sam Davey
on 8/6/13, 11:10 AM 3,363 views

Version: OpenERP 7 Inventory Valuation: Real Time (automated)

We mainly sell C2C via an online business. The EU Distance selling regulations dictate that consumers can return goods within 7 working days of receipt, no questions asked.

When goods come back from a customer it is usually noticeable that they have been opened and used (unless they are still sealed) and as such we would not be able to re-sell these products as new. So our approach, as with many other retailers, is to mark the product as used and reduce the selling price accordingly. Essentially we re-grade the items of stock we get back (which we call B-Stock... we call brand new stock A-Stock).

So we need to track two products, both have the same SKU and EAN number but have to be tracked differently as their sell price and cost price will be different (we may want to write-down the cost price of a B-Stock product).

Ideally we'd like to just have one single product and model this different grading by linking them to an appropriate location in OpenERP (i.e. 'Physical Location / Company / Stock / A-Stock' and 'Physical Location / Company / Stock / B-Stock') but I realise that you can only associate one cost to one product and one sell price to one product (pricelists do not fit this scenario).

This means the only option is to duplicate the product and give it a slightly different SKU.

The process would be:

  • We take a return of an A-Stock item (Customer Location > Physical Location / Company / Stock / A-Stock)
  • We decide it is not A-Stock so write the product off (Physical Location / Company / Stock / A-Stock > Scrapped)
  • We need to transfer in a B-Stock product (Scrapped > Physical Location / Company / Stock / B-Stock)
  • B-Stock item can then be sold
  • As with all stock it is MASSIVELY important that we can value to stock we have graded as B-Stock

So questions?

  1. Does this process sound right?
  2. Where would the B-Stock item get its stock value from? They are never purchased or received, just transferred in.
  3. What object should I use to do these movements? Internal Moves? Stock Moves? Physical Inventories?

OpenERP is a very generic product, it suits many different industries and applications so I DO NOT expect this to be some easy one click process built in as standard functionality. However there must be numerous OpenERP users/consultants who need to account for different grades of stock.

How would you recommend handling this scenario?

I'm looking for a similar solution for secondhand goods (basically B-Stock). The issue I'm struggling with is how to have different sales price per item? Did you find any solution?

Timothy Solomon
on 7/22/14, 7:06 AM


| 2 2 4
Buenos Aires, Argentina

Python developer, big fan of sailing

On 8/6/13, 11:54 AM

1) The process is correct 2) The B product can get its cost from its product form, you will need to take care of that (you can do that while you create the product, I imagine the product cost will be an arbitrary cost, no rules needed for its calculation) 3) Internal moves is more than fine, since you need to audit the stock movements in and out of the scrap location

Thanks Gustavo. I assumed I would have to set the product my cost myself. Its just a bit strange as all our stock will be valued as Weighted Average Cost whereas these B-Stock items (and there are many items) will be valued based on something I save to the product record. I'm not sure we are allowed to mix valuation methods. Perhaps I need to manually perform the OpenERP Weighted Average calculation for these B-Stock items and update the product record just before I confirm an Internal Move. Would virtual locations or "Location Type - Inventory" be more suitable than an Internal Location?

Sam Davey
on 8/6/13, 12:39 PM
Michael St-Georges
On 7/22/14, 7:54 AM


I would suggest something similar:

  1. Use https://www.odoo.com/apps/trunk/product_variant_multi/ to create your A and B stock products. You could even slightly tweak the module so the variant price would be based on a percentage of the template price.
  2. Use the MRP process to convert from A to B stock thus eliminating the manual interim operations (And possible inventory troubles if you have multiple locations)

However, the method you suggested is also valid and would be easier to implement in the short term.

If your sole trouble is the stock valuation, another solution might be to simply put the items in B Stock locations and to not use the inventory total reported but rather compute it by adding the separate A and B stock * devaluation ratio values.

About This Community

This platform is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.


Odoo Training Center

Access to our E-learning platform and experience all Odoo Apps through learning videos, exercises and Quizz.

Test it now

Question tools

1 follower(s)


Asked: 8/6/13, 11:10 AM
Seen: 3363 times
Last updated: 3/16/15, 8:10 AM