Skip to Content
Menu
This question has been flagged

Hello odoo-friends,


I'm developing a module where I have to create transfers from customer location to stock. It is a return from a rental order. For several reasons I am creating the transfers via a given route_id I have prepared. It has stock rules for moving goods from Customer/Rental -> WH/Input -> WH/QualitlyControl. I introduced new operation types to separate the pickings from outgoing operation types (their code is therefore 'incoming').


I am for looping though stock rules which belong to my given route_id. This works fine since I am creating a list of products+lot_ids from a given line model and then create my pickings incl my stock_move_ids. After doing this I trigger action_confirm and action_assign, so the picking state will be 'confirmed' (I don't get which it doesn't get the state 'waiting', because there all the pickings are in the same procurement group, but that is another issue).


Thepoint which drives my crazy is now: My first transfer from Customer -> WH/input is ready in any case and odoo shows me stock_move_lines, ALTHOUGH THERE IS NO STOCK AMOUNT IN THE SOURCE LOCATION!!! How could that be! odoo reserves stock in my customer location but my products (even given serials) have not yet arrived in that location.


I am sure I do something wrong either on creating my pickings, or something is missconfigured in my operation type or whatever. I have check my configuration multiple times and I have no idea why odoo reserves serials in a location where the item has not yet arrived.


So please help me since I have no idea what else I could check. If you like I share any of my code or configuration.


THANKS in advance!!!


Regards, Tastenmeister




Avatar
Discard
Author Best Answer

Hi there,

 up to now I didn't solved the issue, but I guess I found something interesting: If I apply any internal transfer from Customer/rental (or even just default Customer) I get the same result that my internal transfer is immediately ready and by validating I get negative stock amount.


I already noticed this behaviour before so I installed an OCA module called stock_no_negative. Unfortunately it prevents only in internal locations negative stock amounts, but maybe I can tweak it a bit so it works for external locations, too.


Do you or anyone else know how to prevent odoo from moving goods that are not existing? While picking goods it works fine: If I don't have items in stock, my picking transfers stays in state waiting until stock is available.


Any ideas?

Avatar
Discard

Maybe have the location marked as replenishment location. Inventory >configuration >locations

Author Best Answer

Hi Jaideep,
thanks for your fast reply! =)

I played around with the push/pull rules, I think finally this config should make sense for the return case. Correct me if I am wrong. So let me share more details about my 3 step Route and Operation type (which is a bit different to my inital post):


1.) Pull: From Partnerts/Customers/Rental ->Transit via Operation Type TRANS, Method: Take from Stock

2.) Pull: From Transit -> WH/Input via Operation Type IN, Method: Take from Stock

3.) Pull: From WH/Input -> WH/Quality Control via Operation Type CHK, Method: Take From Stock

 Operation Types:

- IN is from Source Code, no changes

- TRANS is created by me: stock_picking_type.code = incoming, reservation_method = at_confirm, use_create_lots = false, use_existing_lots = true

- CHK is created by me: stock_picking_type.code = internal, reservation_method = at_confirm, use_create_lots = false, use_existing_lots = true


Shipping policy for all transfers is direct, so I don't see an issue here.That's why I am confused that odoo is not automatically checking the availablity. I am wondering if I am missing to create additional information an stock.picking and stock.move creation.

About your concerns about the generic location for all customers: Yes, you are right, it might cause problems if multiple customers have same goods in this location (especially if they are not tracked by serial, which most of them do). But in my test DB I don't have the lot_ids in customer location which odoo reserves, even I don't have the same product in there. That's what is totally confusing me.

I hope I provided enough information about my route and rules. I hope you have at least some more idea what I could check more deeply.

Regards, Tastenmeister



Avatar
Discard

Pull route is fine, how are these operations created?

Best Answer

1. What triggers the Customer > WH/ Input operation? Is it similar to return on delivery order (manual trigger available only after validation of delivery order) or a push rule set on the location customer/rental? A pull rule (Pull & Push) would require a demand to be created WH/Input location

2. The picking policy also has a role to play in deciding the status of a transfer. If Customer/rental is set as a generic location for all customers, it is likely to have products in them already


Avatar
Discard
Related Posts Replies Views Activity
1
Oct 22
2016
1
Oct 24
1841
2
Aug 24
1543
1
Jun 23
2054
0
Sep 17
5478