[FIX] purchase: take into account origin_returned_move_id in case of in_refund invoice
When we return goods and a refund is created, we check the purchase order linked to the original move. Therefore, the appropriate currency and unit prices will be chosen. opw-643085
This commit is contained in:
parent
e9c5da3524
commit
ec9702d7ff
|
@ -93,9 +93,12 @@ class stock_move(osv.osv):
|
|||
return invoice_line_id
|
||||
|
||||
def _get_master_data(self, cr, uid, move, company, context=None):
|
||||
if context.get('inv_type') in ('in_invoice', 'in_refund') and move.purchase_line_id:
|
||||
if context.get('inv_type') == 'in_invoice' and move.purchase_line_id:
|
||||
purchase_order = move.purchase_line_id.order_id
|
||||
return purchase_order.partner_id, purchase_order.create_uid.id, purchase_order.currency_id.id
|
||||
if context.get('inv_type') == 'in_refund' and move.origin_returned_move_id.purchase_line_id:
|
||||
purchase_order = move.origin_returned_move_id.purchase_line_id.order_id
|
||||
return purchase_order.partner_id, purchase_order.create_uid.id, purchase_order.currency_id.id
|
||||
elif context.get('inv_type') in ('in_invoice', 'in_refund') and move.picking_id:
|
||||
# In case of an extra move, it is better to use the data from the original moves
|
||||
for purchase_move in move.picking_id.move_lines:
|
||||
|
@ -113,10 +116,14 @@ class stock_move(osv.osv):
|
|||
|
||||
def _get_invoice_line_vals(self, cr, uid, move, partner, inv_type, context=None):
|
||||
res = super(stock_move, self)._get_invoice_line_vals(cr, uid, move, partner, inv_type, context=context)
|
||||
if inv_type in ('in_invoice', 'in_refund') and move.purchase_line_id:
|
||||
if inv_type == 'in_invoice' and move.purchase_line_id:
|
||||
purchase_line = move.purchase_line_id
|
||||
res['invoice_line_tax_id'] = [(6, 0, [x.id for x in purchase_line.taxes_id])]
|
||||
res['price_unit'] = purchase_line.price_unit
|
||||
elif inv_type == 'in_refund' and move.origin_returned_move_id.purchase_line_id:
|
||||
purchase_line = move.origin_returned_move_id.purchase_line_id
|
||||
res['invoice_line_tax_id'] = [(6, 0, [x.id for x in purchase_line.taxes_id])]
|
||||
res['price_unit'] = purchase_line.price_unit
|
||||
return res
|
||||
|
||||
def _get_moves_taxes(self, cr, uid, moves, inv_type, context=None):
|
||||
|
|
Loading…
Reference in New Issue