Stock consignment


The consignment stock is a stock legally owned by a party but held by another.
In Tryton there are two parts of this topic:

  • The company having goods in its warehouse owned by a supplier.
  • The company owning goods to the warehouse of its customer.

The ownership of a goods in Tryton is defined by the type of location it is in.

For the supplier consignment stock, it is important that the available stock is taken into account in the supply computation.

The stock accounting is only booked when the ownership is changed. But in case of consignment stock to customer, it may be required to book the value to a stock consignment account.


We need to support more complex structure of locations. We must allow to have supplier locations under the warehouse and storage locations under customer locations.
This means that the internal shipments should allow such moves to be able to refill them.
Once we have such structure, the idea is to create standalone invoice line when a move is done between a supplier location and a storage location and also between storage location to customer location. This created invoice line will become the origin of the move (to avoid the warning about missing origin).
To be able to compute the right unit price for the invoice line, we will need to have on the supplier and customer locations the related party. The unit price will be computed using the usual get_purchase_price and get_sale_price.


  • The constraint on location type must be extended.
  • A party field is added on Location. It is required for supplier location under a warehouse and it is required for storage location not under a warehouse.
  • Allow ShipmentInternal from and to supplier location
  • Allow ShipmentInternal to customer location
  • Allow Inventory on supplier location with warehouse
  • Allow storage location without warehouse as to on LocationLeadTime
  • An invoice line standalone will be created for all moves previously described that do not have an origin.



  • Allow purchase order for consignment
  • Add supply of supplier location with purchase order

I’m wondering if we should manage returns? But that I mean what should be the workflow if I have a supplier consignment stock in my warehouse, I pick a product but it is defunct. I’m not sure I should put it back to the consignment location. I think it should be managed as a standard purchase return. The same apply for customer consignment stock.
What do you think?

Possibly there should be boolean on locations which dis-/enables generating of invoice_lines. There are cases where a supplier sends products that are used for production or products that will be finished by the company. As you know we have already implemented a workflow similar to your proposal for a customer in finishing industries - in this case the supplier and the customer is the same. A incoming move is not generating any invoice but every move back to the second company if it is coming from a ‘production out’ location (else it is a return move).

Invoice line is only generated if there is a consignment party defined on the location.

Such case is not managed by the current design in the sense that no invoice line is created for a move from supplier to production location.
Indeed the small changes made on location constraint, should allow easier to implement your case. But it is still needed to create an origin for such moves if you do not want to have a warning on each production. So probably a similar design could be applied for production location.

II think we can also support this case but I don’t know which will be the move origin for the moves to produce.

I have 2 concerns regarding stock consignment:

  1. Is there any integration in the usual sale/purchase process planned?
  2. Whats about consignment stock in foreign countries? In EC you need your own VAT-Id for each country you want to have a consignment stock (Origin: , sorry only in German, the English Wikipedia doesn’t mention). Should we have a validation/constraint for this?

The consignment happens before one of those process. So there is no need of any integration.

No, the software is not there to enforce laws but just to help management.
The company will know what are its requirements. And with some customization, it should be possible to select the right tax identifier on the invoice thanks to issue5998.
But probably it will be good to update the module account_tax_rule_country to set the tax rule pattern for country using the warehouse address.

Thank you for your prompt answer.
The sale process, I’m thinking of, could be the sale to a customer using our consignment stock for the goods.
I would expect Tryton to create a shipment to the company’s consignment stock, followed by creating a draft shipment from consignment stock to customers, assuming the invoice method is ‘shipment’.

What is your idea of the process to sale goods, using the consignment stock?

I think you got the wrong idea of the consignment workflow.
As the goods delivered are still owned by the company, it can not be encoded as a sale.
It is just a supply of the company location at the customer warehouse. It can be done using Internal shipment encoded manually or created by the order points.
Once the customer pick a product from this consignment location, the new module will create an invoice line for it.

If the goods are delivered to the customer location automatically, there is no point to use a consignment location. It is just a plain old sale workflow.