There are inconsistencies in the m2o accounts create & edit behavior. New off-balance account type was not correctly filtered This change correct those two issues Task ID: #2288757 closes odoo/odoo#54626 Related: odoo/enterprise#11920 Signed-off-by: Cedric Snauwaert (csn) <csn@openerp.com>
62 lines
3.1 KiB
Python
62 lines
3.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from odoo import api, fields, models, _
|
|
|
|
ACCOUNT_DOMAIN = "['&', '&', '&', ('deprecated', '=', False), ('internal_type','=','other'), ('company_id', '=', current_company_id), ('is_off_balance', '=', False)]"
|
|
|
|
class ProductCategory(models.Model):
|
|
_inherit = "product.category"
|
|
|
|
property_account_income_categ_id = fields.Many2one('account.account', company_dependent=True,
|
|
string="Income Account",
|
|
domain=ACCOUNT_DOMAIN,
|
|
help="This account will be used when validating a customer invoice.")
|
|
property_account_expense_categ_id = fields.Many2one('account.account', company_dependent=True,
|
|
string="Expense Account",
|
|
domain=ACCOUNT_DOMAIN,
|
|
help="The expense is accounted for when a vendor bill is validated, except in anglo-saxon accounting with perpetual inventory valuation in which case the expense (Cost of Goods Sold account) is recognized at the customer invoice validation.")
|
|
|
|
#----------------------------------------------------------
|
|
# Products
|
|
#----------------------------------------------------------
|
|
class ProductTemplate(models.Model):
|
|
_inherit = "product.template"
|
|
|
|
taxes_id = fields.Many2many('account.tax', 'product_taxes_rel', 'prod_id', 'tax_id', help="Default taxes used when selling the product.", string='Customer Taxes',
|
|
domain=[('type_tax_use', '=', 'sale')], default=lambda self: self.env.company.account_sale_tax_id)
|
|
supplier_taxes_id = fields.Many2many('account.tax', 'product_supplier_taxes_rel', 'prod_id', 'tax_id', string='Vendor Taxes', help='Default taxes used when buying the product.',
|
|
domain=[('type_tax_use', '=', 'purchase')], default=lambda self: self.env.company.account_purchase_tax_id)
|
|
property_account_income_id = fields.Many2one('account.account', company_dependent=True,
|
|
string="Income Account",
|
|
domain=ACCOUNT_DOMAIN,
|
|
help="Keep this field empty to use the default value from the product category.")
|
|
property_account_expense_id = fields.Many2one('account.account', company_dependent=True,
|
|
string="Expense Account",
|
|
domain=ACCOUNT_DOMAIN,
|
|
help="Keep this field empty to use the default value from the product category. If anglo-saxon accounting with automated valuation method is configured, the expense account on the product category will be used.")
|
|
|
|
def _get_product_accounts(self):
|
|
return {
|
|
'income': self.property_account_income_id or self.categ_id.property_account_income_categ_id,
|
|
'expense': self.property_account_expense_id or self.categ_id.property_account_expense_categ_id
|
|
}
|
|
|
|
def _get_asset_accounts(self):
|
|
res = {}
|
|
res['stock_input'] = False
|
|
res['stock_output'] = False
|
|
return res
|
|
|
|
def get_product_accounts(self, fiscal_pos=None):
|
|
accounts = self._get_product_accounts()
|
|
if not fiscal_pos:
|
|
fiscal_pos = self.env['account.fiscal.position']
|
|
return fiscal_pos.map_accounts(accounts)
|
|
|
|
|
|
class ProductProduct(models.Model):
|
|
_inherit = "product.product"
|
|
|
|
def _get_product_accounts(self):
|
|
return self.product_tmpl_id._get_product_accounts()
|