diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/account/models/product.py | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/account/models/product.py')
| -rw-r--r-- | addons/account/models/product.py | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/addons/account/models/product.py b/addons/account/models/product.py new file mode 100644 index 00000000..14db12e4 --- /dev/null +++ b/addons/account/models/product.py @@ -0,0 +1,61 @@ +# -*- 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() |
