Wizard for helping in manual stock assignation in customer shipment

Currently, in the inventory moves of customer shipment, the automatic assignation is a basic process (that could be extended indeed) taking stock following an alphabetical order of the locations.
I mean, i need 5000 products X. Let’s say i’ve : 3000 X in location B, 5000 X in location E.Assignation will loop in my locations, taking 3000 in location B and then 2000 in location E. Easy.
Indeed, assignation process can be extended to take care of FIFO, or searching for exact quantity…

But sometimes, a human choice is better than an automatic process. Tryton allows user to decide which location he will take stock if he prefers not use automatic assignation. But this process is quite fastidious, user has to split lines if quantity is distributed on multiple locations, user could choose a wrong location, …

So, a wizard could suggest for a product and a quantity to ship, a list of locations with this product available and the quantities… user choose which locations he will pick product and original line in inventory moves is updated with selected locations in wizard and correct quantities…

In our case, this manual selection is more complex because a same product could have different packaging (box of 1000, bulk unit, bag of 10 Kg, …) following provider (and those packaging are not always the same) but product is still the same so we add this “packaging” information as extra data in the lot. So when choosing a product for an order, user try to find the best packaging for the customer order… So this extra information could be added to the stock selection wizard for helping user to do the best choice.

Here’s an example:

We have a product A . (1Kg = 600 units)

  • Location 1 : 5000 product A (packaging box of 1000)
  • Location 4: 3000 product A (boxes of 1 Kg -> 5 boxes)
  • Location 6 : 8000 product A (barrel of 8000 units bulk)

Following customer order, (quantity and packaging wished by customer (suggested by the commercial people following our stocks)) , stock user will try to pick the product at the location to have less handling…

If customer order 3 Kg of product A, it’s better to pick product at location 4…
If customer asks for 2 boxes of 1000 product A, location 1 is the best.
And another case, would be customer ask for 2400 units of product A (doesn’t care about packaging):
Maybe it’s easier to take 2 boxes of 1000 at location 1 and then 400 units at location 6… or taking 2400 at location 6…
This could be more complex if we have to take care of Fifo, or keeping lots together, or prevent to sell product from specific supplier… (could be weird :slight_smile: )
If we have not enough stock following packaging, we can open packaging in other locations to sell bulk products or doing “re-packaging” to suit customer order.

So this selection wizard is helping stock user to do the right choice (but it’s a human choice depending a lot factors) that could be very complex to implement in an automatic assignation method…

Are you facing this problem? Maybe it’s only linked to our business…
Maybe we are bad handling this “packaging” and stock assignation problem ?
Thanks for comments! :slight_smile:

IIUC in your use case you set the product on diferent locations depening on it’s package.

For me it sound better if tryton is able to know the packaging on which the products are stored and then use this information to automatically to the user by using the current workflow.

Also it should be possible to extend stock_product_location to define diferent locations per product depending on the packaging.

How does it sound to you?

My example is quite simple compared to reality. We have a huge warehouse with a lot of locations (1400), so products are stored randomly… (each location is a pallet with many products). Indeed we try to have one product with same packaging on a pallet at a location (but it’s not always the case :frowning: )

Other problem, packaging is not a constant… i mean one month we could receive products in box of 5000 units, another time, it’s box of 2000 units, could be a barrel of 200 Kg … depending on supplier (or his mood, don’t know :slight_smile: ), … We are using lot module, so we choose to add this information as extra-information (free text) on the lot form…

So it seems you do no need to define the location per package as you do it randombly.

But it is clear that you need to know on which package is stored each product.

Not having an equal quantity it may add some complexity. I imagin that for the same products you normally receive them in the same box. Am I right?

Maybe we can allow to define the package for incomming shipments so you will know for each move in which package is stored.

You will also need to define for each product the quantity of products that can be included on a package type.

With all of this information we should be able to compute the “best location” to pick product depening on the quantites.

All my examples are linked to the products we are selling (balls) and this adds a lot of complexity instead of standard products stored in unit or multiple of units…
Our products can have multiple uom (unit, kg/gr) and then packaging linked to those uom.

we receive in the same box for the current order but… let’s say i ordered 21000 products… we receive them in boxes of 2000… so there’ll be a box with 1000 units…
Next time i order to the same supplier, he could send me the same product but this time in bags of 1kg…
Could also ordering 10 kg and receiving in bags of 2000 units… let’s say 5 bags of 2000 units, and a small bag of 321 units… suppliers could be very weird…

It’s an idea, but package should be a free text field (informal data)… otherwise the package list will quickly become huge… or maybe in first time, doing an association between product and allowed packagings…

Hum, yes, could be complex in our case as we use secondary uom… product could be a box of 1000 units but also a bag of 1kg… there could be rounding problems ?

And what if quantity ordered is bigger than quantity in packaging… in our case, sometimes, we are taking product in another packaging and doing “re-packaging” …
So the wish to have a wizard, allows user to choose what are the best stock locations to use (following his experience, packaging, fifo, or having less handling, …)
I know, our way of working seems very complicated :slight_smile:

We had a requirement from a customer that somewhat reminds of your need. It’s not the same as their problem was with receiving goods, not sending them. But the point was that:

  • Most of the products received are to be used in a production (but not all of them)
  • When they were purchased they may be purchase for production A, but when we receive them maybe it’s better to use them in production B, or simply production A no longer exists so we need to store them in their default location
  • They wanted to receive the goods from several suppliers at once (no shipment per supplier)

We ended up with stock_distribution_in module.

Instead of a wizard, we added a model that registers for each incoming stock move how its quantities will be spread. The process is fully automatic: if it finds a production that needs the product, it assigns the product to that production. If there are no productions, it assigns the product to its default location.

Then, the user can manually change the choices done by the automatic process ensuring that all received quantities are spread.

The user can see that information from several points of views, each in a different tab:

  • In one case they see for each stock move how many quantites are spread to each production and location.
  • In another case they see all productions and how many moves will be assigned to them, and we add context information that is important to them to make their choices
  • In another tab…

The system ensures that incoming quantities are properly spread and when the user is ok with the choices, the moves are splitted, updated accordingly and moved to done state.

So, maybe you need something in that line but for customer shipments. Or maybe you simply want an overview of all outgoing stock moves for all customers at once. Something like “stock_distribution_out”. And once the informed choices have been done, you create the final customer shipments.

Just my 2 cents…

Thanks Albert! This could be an idea… I will check your module.