12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- # -*- coding: utf-8 -*-
- from odoo import fields, models
- class AccountAnalyticApplicability(models.Model):
- _inherit = 'account.analytic.applicability'
- _description = "Analytic Plan's Applicabilities"
- business_domain = fields.Selection(
- selection_add=[
- ('invoice', 'Invoice'),
- ('bill', 'Vendor Bill'),
- ],
- ondelete={
- 'invoice': 'cascade',
- 'bill': 'cascade',
- },
- )
- account_prefix = fields.Char(
- string='Financial Accounts Prefix',
- help="Prefix that defines which accounts from the financial accounting this applicability should apply on.",
- )
- product_categ_id = fields.Many2one(
- 'product.category',
- string='Product Category'
- )
- def _get_score(self, **kwargs):
- score = super(AccountAnalyticApplicability, self)._get_score(**kwargs)
- if score == -1:
- return -1
- product = self.env['product.product'].browse(kwargs.get('product', None))
- account = self.env['account.account'].browse(kwargs.get('account', None))
- if self.account_prefix:
- if account and account.code.startswith(self.account_prefix):
- score += 1
- else:
- return -1
- if self.product_categ_id:
- if product and product.categ_id == self.product_categ_id:
- score += 1
- else:
- return -1
- return score
|