summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorqdp-odoo <qdp@odoo.com>2015-10-08 08:49:50 +0200
committerqdp-odoo <qdp@odoo.com>2015-10-08 08:50:22 +0200
commita56c0ccbe4a1c9c64f80fd256fd2add24806f7f1 (patch)
tree4f61616b15049224b4dbcf02afd9e023f3867051
parent827da654359679591c2b2cf266c33d93d30b8953 (diff)
[FIX] purchase, stock_account: fixed use of fiscal position for anglo saxon accounting entries. PR related #8813
-rw-r--r--addons/purchase/invoice.py25
-rw-r--r--addons/stock_account/stock_account.py8
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 [