add company field propertly

This commit is contained in:
Àngel Àlvarez 2020-08-14 12:23:57 +02:00
parent 5723fb9475
commit 83eeeae4e3
4 changed files with 26 additions and 38 deletions

View File

@ -3,14 +3,14 @@ from trytond.pool import Pool, PoolMeta
from trytond.transaction import Transaction
from trytond.pyson import Eval
class AccountInvoiceAccountRule(ModelSQL, ModelView):
"""Account Invoice Account Rule"""
__name__ = 'account.invoice.account.rule'
name = fields.Char('Name', required=True)
company = fields.Many2One('company.company', 'Company', required=True)
lines = fields.One2Many('account.invoice.account.rule.line', 'rule', 'Lines')
lines = fields.One2Many('account.invoice.account.rule.line', 'rule', 'Lines',
domain=[('company', '=', Eval('company'))], depends=['company'])
@staticmethod
def default_company():
@ -30,21 +30,26 @@ class AccountInvoiceAccountRuleLine(ModelSQL, ModelView, MatchMixin):
rule = fields.Many2One('account.invoice.account.rule', 'Rule', required=True, ondelete='CASCADE')
origin_account = fields.Many2One('account.account', 'Origin Account',
domain=[('type', '!=', 'view')], required=True)
domain=[('type', '!=', 'view'), ('company', '=', Eval('_parent_rule', {}).get('company', -1)),], required=True)
target_account = fields.Many2One('account.account', 'Target Account',
domain=[('type', '!=', 'view')], required=True)
company = fields.Function(fields.Many2One('company.company', 'Company', ),
'on_change_with_rule')
domain=[('type', '!=', 'view'), ('company', '=', Eval('_parent_rule', {}).get('company', -1)),], required=True)
company = fields.Function(fields.Many2One('company.company', 'Company'),
'on_change_with_company', searcher='search_company')
def match(self, pattern):
if 'origin_account' in pattern and pattern['origin_account'] == self.origin_account:
return True
return False
@fields.depends('rule', '_parent_rule.company')
def on_change_with_rule(self, name=None):
if self.rule and self.rule.company:
@fields.depends('rule')
def on_change_with_company(self, name="None"):
if self.rule:
return self.rule.company.id
return Transaction().context.get('company') or None
@classmethod
def search_company(cls, name, clause):
return [('rule.%s' % name,) + tuple(clause[1:])]
class AccountInvoice(metaclass=PoolMeta):
@ -84,22 +89,13 @@ class Party(metaclass=PoolMeta):
__name__ = 'party.party'
customer_invoice_account_rule = fields.MultiValue(fields.Many2One(
'account.invoice.account.rule', "Customer Account Invoice Rule",
domain=[
('company', '=', Eval('context', {}).get('company', -1)),
],
states={
'invisible': ~Eval('context', {}).get('company'),
}))
'account.invoice.account.rule', "Customer Invoice Account Rule",
domain=[('company', '=', Eval('context', {}).get('company', -1)),],
))
supplier_invoice_account_rule = fields.MultiValue(fields.Many2One(
'account.invoice.account.rule', "Supplier Account Invoice Rule",
domain=[
('company', '=', Eval('context', {}).get('company', -1)),
],
states={
'invisible': ~Eval('context', {}).get('company'),
}))
'account.invoice.account.rule', "Supplier Invoice Account Rule",
domain=[('company', '=', Eval('context', {}).get('company', -1)),]))
@classmethod
def multivalue_model(cls, field):
@ -114,15 +110,9 @@ class PartyAccount(metaclass=PoolMeta):
__name__ = 'party.party.account'
customer_invoice_account_rule = fields.Many2One(
'account.invoice.account.rule', "Customer Invoice Account Rule",
domain=[
('company', '=', Eval('company', -1)),
],
depends=['company'])
'account.invoice.account.rule', "Customer Invoice Account Rule",
domain=[('company', '=', Eval('company', -1)),], depends=['company'])
supplier_invoice_account_rule = fields.Many2One(
'account.invoice.account.rule', "Supplier Invoice Account Rule",
domain=[
('company', '=', Eval('company', -1)),
],
depends=['company'])
'account.invoice.account.rule', "Supplier Invoice Account Rule",
domain=[('company', '=', Eval('company', -1)),
], depends=['company'])

View File

@ -98,6 +98,7 @@ Create Account Invoice Tax Rule::
>>> Ruleset = Model.get('account.invoice.account.rule')
>>> rule = Ruleset()
>>> rule.name = 'Test'
>>> rule.company = company
>>> line = rule.lines.new()
>>> line.origin_account = revenue
>>> line.target_account = revenue2

View File

@ -6,6 +6,4 @@ this repository contains the full copyright notices and license terms. -->
<field name="origin_account"/>
<label name="target_account"/>
<field name="target_account"/>
<label name="company"/>
<field name="company"/>
</form>

View File

@ -4,5 +4,4 @@ this repository contains the full copyright notices and license terms. -->
<tree>
<field name="origin_account"/>
<field name="target_account"/>
<field name="company"/>
</tree>