product_id = 465
location_id =8
product_qty =1
lot_id = 118
env['stock.move.line'].create( {
'company_id':1,
'picking_id':record.id,
'lot_id':lot_id,
'date':record.date,
'location_dest_id':5,
'location_id':location_id ,
'product_uom_qty':product_qty,
'product_uom_id':32,
'product_id':product_id
})
I am trying to create stock move line to programmtically create stock.move.line. However, after using this code, stock move line is created but it is not working normally. The Transfer can't be processed even after pressing validating without any error popping. When cancel is pressed, it say It is not possible to unreserve more products of xxxxx than you have in stock. After some researching, i am not sure if I should update stock.quant to reserve the products. Then I added these two lines of code at the bottom of the code above. However, it leads to error that said 'int' object has no attribute 'categ_id'" while evaluating........ Is my code for reservation of stock wrong or is there other way that can make this works. Thanks
if env['stock.quant']._get_available_quantity(product_id,location_id, lot_id,strict=True)>=1:
env['stock.quant']._update_available_quantity(product_id,location_id, -product_qty, lot_id,package_id=False, owner_id=False)
The _get_available_quantity function will call _gather function which will call the _get_removal_strategy function and if you provide the
product_idas an integer, it will fail to get theremoval_strategy_idfrom the productcateg_idYou may notice that the
_get_available_quantityfunction expects a recordset because of the way Odoo defines the variable rounding.