@ -320,6 +320,11 @@ class stock_quant(osv.osv):
' company_id ' : lambda self , cr , uid , c : self . pool . get ( ' res.company ' ) . _company_default_get ( cr , uid , ' stock.quant ' , context = c ) ,
}
def init ( self , cr ) :
cr . execute ( ' SELECT indexname FROM pg_indexes WHERE indexname = %s ' , ( ' stock_quant_product_location_index ' , ) )
if not cr . fetchone ( ) :
cr . execute ( ' CREATE INDEX stock_quant_product_location_index ON stock_quant (product_id, location_id, company_id, qty, in_date, reservation_id) ' )
def read_group ( self , cr , uid , domain , fields , groupby , offset = 0 , limit = None , context = None , orderby = False , lazy = True ) :
''' Overwrite the read_group in order to sum the function field ' inventory_value ' in group by '''
res = super ( stock_quant , self ) . read_group ( cr , uid , domain , fields , groupby , offset = offset , limit = limit , context = context , orderby = orderby , lazy = lazy )
@ -530,7 +535,10 @@ class stock_quant(osv.osv):
return False
qty_round = float_round ( qty , precision_rounding = rounding )
new_qty_round = float_round ( quant . qty - qty , precision_rounding = rounding )
new_quant = self . copy ( cr , SUPERUSER_ID , quant . id , default = { ' qty ' : new_qty_round , ' history_ids ' : [ ( 4 , x . id ) for x in quant . history_ids ] } , context = context )
# Fetch the history_ids manually as it will not do a join with the stock moves then (=> a lot faster)
cr . execute ( """ SELECT move_id FROM stock_quant_move_rel WHERE quant_id = %s """ , ( quant . id , ) )
res = cr . fetchall ( )
new_quant = self . copy ( cr , SUPERUSER_ID , quant . id , default = { ' qty ' : new_qty_round , ' history_ids ' : [ ( 4 , x [ 0 ] ) for x in res ] } , context = context )
self . write ( cr , SUPERUSER_ID , quant . id , { ' qty ' : qty_round } , context = context )
return self . browse ( cr , uid , new_quant , context = context )
@ -1838,6 +1846,10 @@ class stock_move(osv.osv):
' You try to move a product using a UoM that is not compatible with the UoM of the product moved. Please use an UoM in the same UoM category. ' ,
[ ' product_uom ' ] ) ,
]
def init ( self , cr ) :
cr . execute ( ' SELECT indexname FROM pg_indexes WHERE indexname = %s ' , ( ' stock_move_product_location_index ' , ) )
if not cr . fetchone ( ) :
cr . execute ( ' CREATE INDEX stock_move_product_location_index ON stock_move (product_id, location_id, location_dest_id, company_id, state) ' )
@api.cr_uid_ids_context
def do_unreserve ( self , cr , uid , move_ids , context = None ) :