Add a document on stock consignment

Rational

There’s a module stock_consignement (https://foss.heptapod.net/tryton/tryton/-/tree/branch/default/modules/stock_consignment) that allows to define a consigned stock for a party under the Supplier/Customer locations and doing internal shipments to set/consume consigned stock and generate invoice lines.

Some problems:

  • A document is missing to define a consigned stock between a supplier/customer with some details (product, quantities, delay, price,…) (like for a Blanket Order)
  • Internal Shipments are only managed by the stock people
  • Sale people can’t check consigned quantities for their customer (unless having stock rights)
  • Sale people can’t see current consigned stocks by customer (unless having stock rights)
  • Sale people can’t initiate an internal shipment to start the consigned stock (unless having stock rights or asking to stock people)
  • Sale people can’t declare a customer consigned stock consumption → they need to ask stock people to create an internal shipment
  • Price used for the invoicing use the get_sale_price method which will take the listed price or a list price (if list_price module is activated), so unit price on the move of internal shipment is not used
  • What about drop shipment in a consigned stock?

Proposal

Two new similar models (sale.consignment and purchase.consignment)

sale.consignment

  • Customer
  • Number
  • Reference
  • Start Date
  • End date
  • Company
  • Warehouse
  • Customer consigned stock location
  • State

sale.consignment.line

  • Product
  • Quantity
  • Unit
  • Price → using get_sale_price

purchase.consignment

  • Supplier
  • Number
  • Reference
  • Start Date
  • End date
  • Company
  • Warehouse
  • Supplier consigned stock location
  • State

purchase.consignment.line

  • Product
  • Quantity
  • Unit
  • Price

Workflow

  • Draft
  • Processing
  • Done
  • Cancelled

Others

  • Adding an origin “sale.consignment.line” on stock.move
  • Updating invoice_line to get unit_price on sale.consignment.line (move.origin) if available
  • We thought about a wizard to create the initial internal shipment into consigned stock but there’s a problem with the “From_location”: sale people don’t know where is located the product and if we define an internal shipment with “storage zone”, once there is a move line, “from_location” cannot be updated
  • One2Many fields or relate to follow stock consignment moves (incoming and outgoing)
  • Allow to send a report to customer/supplier for agreement on the consignment

Implementation

Does nobody use stock consignment ?

To be honest I do not use the stock_consignement module but I know its usage.
I think your proposal makes sense as it goes in the right direction to make this module better and supporting more use case.

1 Like

How would you manage overlapping for the same location?

What does it represent? I do not know if it is an order to fill the consignment location or if it is the report of the customer about what he sold.

The internal shipment must be created the same way sale creates customer shipment.

Is it not a delivery note based on the internal shipment?

Don’t know. This not managed with the actual module. Maybe it should be a limit of validity? (a stock consignment can’t be defined without a date limit)

It should be both. First, it’s an order to fill the consignment location. And, then, sale people should follow what is already sold

Ok. It should be working with assign or manual assign. (and default “from location” would be “storage zone”)

No, because it should be done by sale people. Sale people don’t manage internal shipment. Shipment people don’t talk with customers.(If we consider a company with different departments)

Then I do not understand how it will work.

Same as sale/purchase model but in this case to generate internal shipments (instead of customer shipments) from lines. And the new model will have relates on stock moves from consigned stock to check what is already sold.
Maybe you could have a better idea ? Our first goal is to have such consignment initiated by purchase/sale department (not by the stock people and giving rights to purchase/sale people to create internal shipment is not a good idea) and a document that confirm the consignment between the company and the supplier/customer.

I do not understand how you can manage to fill the consignment location and also book the sold products with a single document.

Ok. The document is to fill the consignment location. (so the initial move to the consigned stock)

Booking the sold products could remain as it is (a communication (phone call, email, …) from the customer to the sale people that will ask the stock people to do the internal shipment). And with a relates on the stock moves from the consigned stock, sale people could check the consigned stock consumption.

I do not understand what you mean.

For me if we want to let sales manage the consignment stock which should remove the need to create internal shipment for product consumed. There should be another document for the sales.

But what I do not foresee, is how to link those documents such that the sale price from one is used to generate the invoice line.

Maybe it could be designed as a single document with similar design as for the sale rental.

I’ll take a look at this new module as soon as possible.