diff options
| author | qdp-odoo <qdp@odoo.com> | 2015-10-08 08:49:50 +0200 |
|---|---|---|
| committer | qdp-odoo <qdp@odoo.com> | 2015-10-08 08:50:22 +0200 |
| commit | a56c0ccbe4a1c9c64f80fd256fd2add24806f7f1 (patch) | |
| tree | 4f61616b15049224b4dbcf02afd9e023f3867051 | |
| parent | 827da654359679591c2b2cf266c33d93d30b8953 (diff) | |
[FIX] purchase, stock_account: fixed use of fiscal position for anglo saxon accounting entries. PR related #8813
| -rw-r--r-- | addons/purchase/invoice.py | 25 | ||||
| -rw-r--r-- | addons/stock_account/stock_account.py | 8 |
2 files changed, 13 insertions, 20 deletions
diff --git a/addons/purchase/invoice.py b/addons/purchase/invoice.py index 24b38579ad1..b9d0b0ec05d 100644 --- a/addons/purchase/invoice.py +++ b/addons/purchase/invoice.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from openerp import api, fields, models, _ +from openerp import api, fields, models from openerp.tools.float_utils import float_compare @@ -85,27 +85,21 @@ class AccountInvoice(models.Model): company_currency = inv.company_id.currency_id if i_line.product_id and i_line.product_id.valuation == 'real_time': if i_line.product_id.type in ('product', 'consu'): + # get the fiscal position + fpos = i_line.invoice_id.fiscal_position_id # get the price difference account at the product - acc = i_line.product_id.property_account_creditor_price_difference and i_line.product_id.property_account_creditor_price_difference.id + acc = i_line.product_id.property_account_creditor_price_difference if not acc: # if not found on the product get the price difference account at the category - acc = i_line.product_id.categ_id.property_account_creditor_price_difference_categ and i_line.product_id.categ_id.property_account_creditor_price_difference_categ.id - a = None - - # oa will be the stock input account - # first check the product, if empty check the category - oa = i_line.product_id.property_stock_account_input and i_line.product_id.property_stock_account_input.id - if not oa: - oa = i_line.product_id.categ_id.property_stock_account_input_categ_id and i_line.product_id.categ_id.property_stock_account_input_categ_id.id - if oa: - # get the fiscal position - fpos = i_line.invoice_id.fiscal_position_id - a = fpos.map_account(oa) + acc = i_line.product_id.categ_id.property_account_creditor_price_difference_categ + acc = fpos.map_account(acc).id + # reference_account_id is the stock input account + reference_account_id = i_line.product_id.product_tmpl_id.get_product_accounts(fiscal_pos=fpos)['stock_input'].id diff_res = [] account_prec = inv.company_id.currency_id.decimal_places # calculate and write down the possible price difference between invoice price and product price for line in res: - if line.get('invl_id', 0) == i_line.id and a == line['account_id']: + if line.get('invl_id', 0) == i_line.id and reference_account_id == line['account_id']: uom = i_line.product_id.uom_id valuation_price_unit = uom._compute_price(i_line.product_id.standard_price, i_line.uom_id.id) if i_line.product_id.cost_method != 'standard' and i_line.purchase_line_id: @@ -145,4 +139,3 @@ class AccountInvoiceLine(models.Model): """ Override AccountInvoice_line to add the link to the purchase order line it is related to""" _inherit = 'account.invoice.line' purchase_line_id = fields.Many2one('purchase.order.line', 'Purchase Order Line', ondelete='set null', select=True, readonly=True) - diff --git a/addons/stock_account/stock_account.py b/addons/stock_account/stock_account.py index 16710bf24b9..0fefc322f2c 100644 --- a/addons/stock_account/stock_account.py +++ b/addons/stock_account/stock_account.py @@ -41,7 +41,7 @@ class account_invoice_line(osv.osv): def get_invoice_line_account(self, type, product, fpos, company): if company.anglo_saxon_accounting and type in ('in_invoice', 'in_refund'): - accounts = product.product_tmpl_id.get_product_accounts(fpos) + accounts = product.product_tmpl_id.get_product_accounts(fiscal_pos=fpos) if type == 'in_invoice': return accounts['stock_input'] return accounts['stock_ouput'] @@ -70,12 +70,12 @@ class account_invoice(osv.osv): company_currency = inv.company_id.currency_id.id if i_line.product_id.type in ('product', 'consu') and i_line.product_id.valuation == 'real_time': - accounts = i_line.product_id.product_tmpl_id.get_product_accounts() + fpos = i_line.invoice_id.fiscal_position_id + accounts = i_line.product_id.product_tmpl_id.get_product_accounts(fiscal_pos=fpos) # debit account dacc will be the output account dacc = accounts['stock_output'].id # credit account cacc will be the expense account - fpos = i_line.invoice_id.fiscal_position_id - cacc = fpos.map_account(accounts['expense']).id + cacc = accounts['expense'].id if dacc and cacc: price_unit = i_line._get_anglo_saxon_price_unit() return [ |
