Customer shipments and packing

Hi,
I’ll try to illustrate a problem discussed yesterday on irc (IRC logs of #tryton for Wednesday, 2020-09-16).
It concerns customer shipments and packing. In our case, we are using lots.
Here’s the screen with the inventory moves:


And the screen with the outgoing moves which is similar to the inventory moves in state “Waiting”:

We click on “assign” or “Manual Assign”, state is now “Assigned” and “From Location” and “Lot” field are updated with the datas “where and which product/lot to pick”:

Outgoing moves stay unchanged:

Until there nothing special. Strange part is about packing.
I would then doing packing on my picking list. So i’m clicking on the “+” on the packages list. I’m selecting package type:


And now i would like to associate some lines of my picking list with specific lots number to this package but only the outgoing moves (which are not updated following my inventory moves) are available for association with the package:

Those outgoing moves are updated after clicking on “Make Shipment” (but then it is no more possible to edit packages).

This synchronization is made with modules/stock: 3ae505cf18d6 shipment.py
which is called on workflow events “Assign” and “Pack”. But for the “assign” workflow nothing seems updated by this method.

For us it seems important to know which lots are in a specific package. To know for example lots number 1,2,3 & 4 are on pallet 1, etc… But to do such thing we have to edit also outgoing moves as duplicate of inventory moves before packing. Should tryton have an intermediate state “picked” in the workflow between assigned and before packed to allow to select the correct moves for the packing ? When clicking on the “Pick” button inventory moves would be synced on outgoing moves and packing would possible only in the state “picked”. What do you think ?

1 Like

When you use the “lot” module and the “move split” module and you have to take several different lots in stock for an order, you cannot manage the packages without losing the origin of the exit movement on the internal movement. Explanation by an example.

Sale of 3 units of product A.
Creation of an internal movement of 3 units of product A
Split of the internal movement into 3 lines because 3 lot number is necessary.
Manually modification of the output movements with a 3 line split with manual indication of the “lot” number.
Internal movements lose their “origin” because the exit movement was destroyed during the split. I can now manage the packages.
If I want to synchronize internal movements to external movements, I lose the ability to manage packets because synchronization is done during shipping.

It make sense but only when using packaging (the stock_package module is activated).

Do you think it’s possible to have this module activated but have a shipment that is not packaged? If so we should probably define a flag to define if the shipment requires packages or not and require only this step if the flag is set. Probably this flag should be always true for base modules but allow to be overriden on custom modules.

Here’s an issue to add this extra step in shipment out workflow:

That’s what i thought, but the “pack” step exists in the shipment_out module and stock_package module overload this step. Waiting for comments to update code to solve all shipments cases :slight_smile:

I do not agree. If you have an output location, you need the three steps pick, pack, ship even if you do not register in the system the packaging.

But currently the case is that “pick and pack” is done in the same step (when the pack button is clicked).

So probably we can keep the same behaviour to keep a simpler workflow for the ones that does not require this features.

It’s just a mather of hidding the pick button when there is no packaging and sync moves on both buttons.

Those should not use an outgoing location.