@ -50,7 +50,6 @@ class ProductTemplate(models.Model):
class ProductProduct ( models . Model ) :
_inherit = ' product.product '
def create_price_change_account_move ( self , new_price , account_id , company_id , origin ) :
"""
"""
@ -58,40 +57,39 @@ class ProductProduct(models.Model):
product_accounts = { product . id : product . product_tmpl_id . get_product_accounts ( ) for product in self }
for product in self . with_context ( ) . filtered ( lambda r : r . valuation == ' real_time ' ) :
diff = product . standard_price - new_price
if float_is_zero ( diff , precision_rounding = product . currency_id . rounding ) :
raise UserError ( _ ( " No difference between the standard price and the new price. " ) )
if not product_accounts [ product . id ] . get ( ' stock_valuation ' , False ) :
raise UserError ( _ ( ' You don \' t have any stock valuation account defined on your product category. You must define one before processing this operation. ' ) )
qty_available = product . qty_available
if qty_available :
# Accounting Entries
if diff * qty_available > 0 :
debit_account_id = account_id
credit_account_id = product_accounts [ product . id ] [ ' stock_valuation ' ] . id
else :
debit_account_id = product_accounts [ product . id ] [ ' stock_valuation ' ] . id
credit_account_id = account_id
move_vals = {
' journal_id ' : product_accounts [ product . id ] [ ' stock_journal ' ] . id ,
' company_id ' : company_id ,
' ref ' : product . default_code ,
' line_ids ' : [ ( 0 , 0 , {
' name ' : _ ( ' %s changed cost from %s to %s - %s ' ) % ( origin , product . standard_price , new_price , product . display_name ) ,
' account_id ' : debit_account_id ,
' debit ' : abs ( diff * qty_available ) ,
' credit ' : 0 ,
' product_id ' : product . id ,
} ) , ( 0 , 0 , {
' name ' : _ ( ' %s changed cost from %s to %s - %s ' ) % ( origin , product . standard_price , new_price , product . display_name ) ,
' account_id ' : credit_account_id ,
' debit ' : 0 ,
' credit ' : abs ( diff * qty_available ) ,
' product_id ' : product . id ,
} ) ] ,
}
move = AccountMove . create ( move_vals )
move . post ( )
if not float_is_zero ( diff , precision_rounding = product . currency_id . rounding ) :
if not product_accounts [ product . id ] . get ( ' stock_valuation ' , False ) :
raise UserError ( _ ( ' You don \' t have any stock valuation account defined on your product category. You must define one before processing this operation. ' ) )
qty_available = product . qty_available
if qty_available :
# Accounting Entries
if diff * qty_available > 0 :
debit_account_id = account_id
credit_account_id = product_accounts [ product . id ] [ ' stock_valuation ' ] . id
else :
debit_account_id = product_accounts [ product . id ] [ ' stock_valuation ' ] . id
credit_account_id = account_id
move_vals = {
' journal_id ' : product_accounts [ product . id ] [ ' stock_journal ' ] . id ,
' company_id ' : company_id ,
' ref ' : product . default_code ,
' line_ids ' : [ ( 0 , 0 , {
' name ' : _ ( ' %s changed cost from %s to %s - %s ' ) % ( origin , product . standard_price , new_price , product . display_name ) ,
' account_id ' : debit_account_id ,
' debit ' : abs ( diff * qty_available ) ,
' credit ' : 0 ,
' product_id ' : product . id ,
} ) , ( 0 , 0 , {
' name ' : _ ( ' %s changed cost from %s to %s - %s ' ) % ( origin , product . standard_price , new_price , product . display_name ) ,
' account_id ' : credit_account_id ,
' debit ' : 0 ,
' credit ' : abs ( diff * qty_available ) ,
' product_id ' : product . id ,
} ) ] ,
}
move = AccountMove . create ( move_vals )
move . post ( )
return True
@ -115,7 +113,6 @@ class ProductProduct(models.Model):
else :
query = query % ( ' ' , )
self . env . cr . execute ( query , params = params )
res = self . env . cr . fetchall ( )
for row in res :
fifo_automated_values [ ( row [ 0 ] , row [ 1 ] ) ] = ( row [ 2 ] , row [ 3 ] , list ( row [ 4 ] ) )