From 28463d031046f22460491fcf81788f93e4a395c3 Mon Sep 17 00:00:00 2001 From: Goffin Simon Date: Fri, 27 Nov 2015 16:12:05 +0100 Subject: [PATCH] [FIX] delivery, stock_account: invoice on delivery with fiscal position When creating an invoice on delivery, the right 'account_id' was not set on the invoice line according to the fiscal position. opw:657542 --- addons/delivery/stock.py | 5 +++-- addons/stock_account/stock.py | 6 +++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/addons/delivery/stock.py b/addons/delivery/stock.py index 9405f1e027f..f554627c330 100644 --- a/addons/delivery/stock.py +++ b/addons/delivery/stock.py @@ -107,9 +107,10 @@ class stock_picking(osv.osv): taxes = picking.carrier_id.product_id.taxes_id partner = picking.partner_id or False + fp = invoice.fiscal_position or partner.property_account_position if partner: - account_id = self.pool.get('account.fiscal.position').map_account(cr, uid, partner.property_account_position, account_id) - taxes_ids = self.pool.get('account.fiscal.position').map_tax(cr, uid, partner.property_account_position, taxes) + account_id = self.pool.get('account.fiscal.position').map_account(cr, uid, fp, account_id) + taxes_ids = self.pool.get('account.fiscal.position').map_tax(cr, uid, fp, taxes) else: taxes_ids = [x.id for x in taxes] diff --git a/addons/stock_account/stock.py b/addons/stock_account/stock.py index addc7a97fc5..4d2d5e72c1f 100644 --- a/addons/stock_account/stock.py +++ b/addons/stock_account/stock.py @@ -134,6 +134,7 @@ class stock_move(osv.osv): def _get_invoice_line_vals(self, cr, uid, move, partner, inv_type, context=None): fp_obj = self.pool.get('account.fiscal.position') # Get account_id + fp = fp_obj.browse(cr, uid, context.get('fp_id')) if context.get('fp_id') else False if inv_type in ('out_invoice', 'out_refund'): account_id = move.product_id.property_account_income.id if not account_id: @@ -142,7 +143,7 @@ class stock_move(osv.osv): account_id = move.product_id.property_account_expense.id if not account_id: account_id = move.product_id.categ_id.property_account_expense_categ.id - fiscal_position = partner.property_account_position + fiscal_position = fp or partner.property_account_position account_id = fp_obj.map_account(cr, uid, fiscal_position, account_id) # set UoS if it's a sale and the picking doesn't have one @@ -320,8 +321,7 @@ class stock_picking(osv.osv): merge_vals['name'] = ', '.join(invoice_name) if merge_vals: invoice.write(merge_vals) - - invoice_line_vals = move_obj._get_invoice_line_vals(cr, uid, move, partner, inv_type, context=context) + invoice_line_vals = move_obj._get_invoice_line_vals(cr, uid, move, partner, inv_type, context=dict(context, fp_id=invoice_vals.get('fiscal_position', False))) invoice_line_vals['invoice_id'] = invoices[key] invoice_line_vals['origin'] = origin if not is_extra_move[move.id]: