Filter parties without parties and filter bank account by owner companies
072165
This commit is contained in:
parent
59422550d8
commit
77cee84711
|
@ -10,7 +10,7 @@ this repository contains the full copyright notices and license terms. -->
|
||||||
<field name="global_p" eval="True"/>
|
<field name="global_p" eval="True"/>
|
||||||
</record>
|
</record>
|
||||||
<record model="ir.rule" id="rule_activity_activity_companies">
|
<record model="ir.rule" id="rule_activity_activity_companies">
|
||||||
<field name="domain" eval="[('companies', 'in', Eval('companies', []))]" pyson="1"/>
|
<field name="domain" eval="['OR', ('companies', 'in', Eval('companies', [])), ('companies', 'in', [])]" pyson="1"/>
|
||||||
<field name="rule_group" ref="rule_group_activity_activity"/>
|
<field name="rule_group" ref="rule_group_activity_activity"/>
|
||||||
</record>
|
</record>
|
||||||
</data>
|
</data>
|
||||||
|
|
40
bank.py
40
bank.py
|
@ -1,7 +1,8 @@
|
||||||
# The COPYRIGHT file at the top level of this repository contains the full
|
# The COPYRIGHT file at the top level of this repository contains the full
|
||||||
# copyright notices and license terms.
|
# copyright notices and license terms.
|
||||||
from trytond.model import fields
|
from trytond.model import fields
|
||||||
from trytond.pool import PoolMeta
|
from trytond.pool import Pool, PoolMeta
|
||||||
|
from trytond.transaction import Transaction
|
||||||
from . import party
|
from . import party
|
||||||
|
|
||||||
|
|
||||||
|
@ -13,6 +14,15 @@ class BankAccount(metaclass=PoolMeta):
|
||||||
__name__ = 'bank.account'
|
__name__ = 'bank.account'
|
||||||
companies = fields.Function(fields.One2Many('company.company', None,
|
companies = fields.Function(fields.One2Many('company.company', None,
|
||||||
'Companies'), 'get_companies', searcher='search_companies')
|
'Companies'), 'get_companies', searcher='search_companies')
|
||||||
|
owners_by_companies = fields.Function(
|
||||||
|
fields.Many2Many('bank.account-party.party', 'account', 'owner',
|
||||||
|
'Owners'), 'get_owners_by_companies', setter='set_owners_by_companies')
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def create(cls, vlist):
|
||||||
|
# allow create bank accounts from party when not select owners
|
||||||
|
with Transaction().set_context(_check_access=False):
|
||||||
|
return super(BankAccount, cls).create(vlist)
|
||||||
|
|
||||||
def get_companies(self, name):
|
def get_companies(self, name):
|
||||||
if self.bank:
|
if self.bank:
|
||||||
|
@ -21,3 +31,31 @@ class BankAccount(metaclass=PoolMeta):
|
||||||
@classmethod
|
@classmethod
|
||||||
def search_companies(cls, name, clause):
|
def search_companies(cls, name, clause):
|
||||||
return [('bank.party.companies',) + tuple(clause[1:])]
|
return [('bank.party.companies',) + tuple(clause[1:])]
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_owners_by_companies(cls, records, name):
|
||||||
|
PartyCompany = Pool().get('party.company.rel')
|
||||||
|
|
||||||
|
user_company = Transaction().context.get('company')
|
||||||
|
|
||||||
|
res = dict((x.id, None) for x in records)
|
||||||
|
for record in records:
|
||||||
|
owners = []
|
||||||
|
|
||||||
|
for owner in record.owners:
|
||||||
|
owner_companies = [o.company for o in PartyCompany.search([
|
||||||
|
('party', '=', owner),
|
||||||
|
])]
|
||||||
|
if not owner_companies:
|
||||||
|
owners.append(owner)
|
||||||
|
continue
|
||||||
|
for company in owner_companies:
|
||||||
|
if company.id == user_company:
|
||||||
|
owners.append(owner)
|
||||||
|
break
|
||||||
|
res[record.id] = [o.id for o in owners]
|
||||||
|
return res
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def set_owners_by_companies(cls, records, name, value):
|
||||||
|
cls.write(records, {'owners': value})
|
||||||
|
|
10
bank.xml
10
bank.xml
|
@ -4,13 +4,19 @@ this repository contains the full copyright notices and license terms. -->
|
||||||
<tryton>
|
<tryton>
|
||||||
<data depends="bank">
|
<data depends="bank">
|
||||||
<!-- bank -->
|
<!-- bank -->
|
||||||
|
<record model="ir.ui.view" id="bank_account_view_form">
|
||||||
|
<field name="model">bank.account</field>
|
||||||
|
<field name="inherit" ref="bank.bank_account_view_form"/>
|
||||||
|
<field name="name">bank_account_form</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
<record model="ir.rule.group" id="rule_group_bank">
|
<record model="ir.rule.group" id="rule_group_bank">
|
||||||
<field name="name">Bank Company Rule</field>
|
<field name="name">Bank Company Rule</field>
|
||||||
<field name="model" search="[('model', '=', 'bank')]"/>
|
<field name="model" search="[('model', '=', 'bank')]"/>
|
||||||
<field name="global_p" eval="True"/>
|
<field name="global_p" eval="True"/>
|
||||||
</record>
|
</record>
|
||||||
<record model="ir.rule" id="rule_bank_companies">
|
<record model="ir.rule" id="rule_bank_companies">
|
||||||
<field name="domain" eval="[('companies', 'in', Eval('companies', []))]" pyson="1"/>
|
<field name="domain" eval="['OR', ('companies', 'in', Eval('companies', [])), ('companies', 'in', [])]" pyson="1"/>
|
||||||
<field name="rule_group" ref="rule_group_bank"/>
|
<field name="rule_group" ref="rule_group_bank"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
@ -20,7 +26,7 @@ this repository contains the full copyright notices and license terms. -->
|
||||||
<field name="global_p" eval="True"/>
|
<field name="global_p" eval="True"/>
|
||||||
</record>
|
</record>
|
||||||
<record model="ir.rule" id="rule_bank_account_companies">
|
<record model="ir.rule" id="rule_bank_account_companies">
|
||||||
<field name="domain" eval="[('companies', 'in', Eval('companies', []))]" pyson="1"/>
|
<field name="domain" eval="[['OR', ('companies', 'in', Eval('companies', [])), ('companies', 'in', [])], ['OR', ('owners.companies', 'in', Eval('companies', [])), ('owners.companies', 'in', []), ('owners', 'in', [])]]" pyson="1"/>
|
||||||
<field name="rule_group" ref="rule_group_bank_account"/>
|
<field name="rule_group" ref="rule_group_bank_account"/>
|
||||||
</record>
|
</record>
|
||||||
</data>
|
</data>
|
||||||
|
|
|
@ -10,7 +10,7 @@ this repository contains the full copyright notices and license terms. -->
|
||||||
<field name="global_p" eval="True"/>
|
<field name="global_p" eval="True"/>
|
||||||
</record>
|
</record>
|
||||||
<record model="ir.rule" id="rule_carrier_companies">
|
<record model="ir.rule" id="rule_carrier_companies">
|
||||||
<field name="domain" eval="[('companies', 'in', Eval('companies', []))]" pyson="1"/>
|
<field name="domain" eval="['OR', ('companies', 'in', Eval('companies', [])), ('companies', 'in', [])]" pyson="1"/>
|
||||||
<field name="rule_group" ref="rule_group_carrier"/>
|
<field name="rule_group" ref="rule_group_carrier"/>
|
||||||
</record>
|
</record>
|
||||||
</data>
|
</data>
|
||||||
|
|
|
@ -10,7 +10,7 @@ this repository contains the full copyright notices and license terms. -->
|
||||||
<field name="global_p" eval="True"/>
|
<field name="global_p" eval="True"/>
|
||||||
</record>
|
</record>
|
||||||
<record model="ir.rule" id="rule_commission_companies">
|
<record model="ir.rule" id="rule_commission_companies">
|
||||||
<field name="domain" eval="[('agent.company', 'in', Eval('companies', []))]" pyson="1"/>
|
<field name="domain" eval="['OR', ('agent.company', 'in', Eval('companies', [])), ('agent.company', 'in', [])]" pyson="1"/>
|
||||||
<field name="rule_group" ref="rule_group_commission"/>
|
<field name="rule_group" ref="rule_group_commission"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ this repository contains the full copyright notices and license terms. -->
|
||||||
<field name="global_p" eval="True"/>
|
<field name="global_p" eval="True"/>
|
||||||
</record>
|
</record>
|
||||||
<record model="ir.rule" id="rule_commission_agent_companies">
|
<record model="ir.rule" id="rule_commission_agent_companies">
|
||||||
<field name="domain" eval="[('company', 'in', Eval('companies', []))]" pyson="1"/>
|
<field name="domain" eval="['OR', ('companies', 'in', Eval('companies', [])), ('companies', 'in', [])]" pyson="1"/>
|
||||||
<field name="rule_group" ref="rule_group_commission_agent"/>
|
<field name="rule_group" ref="rule_group_commission_agent"/>
|
||||||
</record>
|
</record>
|
||||||
</data>
|
</data>
|
||||||
|
|
|
@ -4,7 +4,7 @@ this repository contains the full copyright notices and license terms. -->
|
||||||
<tryton>
|
<tryton>
|
||||||
<data>
|
<data>
|
||||||
<record model="ir.action.act_window" id="company.act_employee_form">
|
<record model="ir.action.act_window" id="company.act_employee_form">
|
||||||
<field name="domain" eval="[('company', 'in', Eval('companies', []))]" pyson="1"/>
|
<field name="domain" eval="['OR', ('companies', 'in', Eval('companies', [])), ('companies', 'in', [])]" pyson="1"/>
|
||||||
</record>
|
</record>
|
||||||
</data>
|
</data>
|
||||||
</tryton>
|
</tryton>
|
||||||
|
|
|
@ -10,6 +10,10 @@ msgctxt "field:bank.account,companies:"
|
||||||
msgid "Companies"
|
msgid "Companies"
|
||||||
msgstr "Empreses"
|
msgstr "Empreses"
|
||||||
|
|
||||||
|
msgctxt "field:bank.account,owners_by_companies:"
|
||||||
|
msgid "Owners"
|
||||||
|
msgstr "Titulars"
|
||||||
|
|
||||||
msgctxt "field:carrier,companies:"
|
msgctxt "field:carrier,companies:"
|
||||||
msgid "Companies"
|
msgid "Companies"
|
||||||
msgstr "Empreses"
|
msgstr "Empreses"
|
||||||
|
|
|
@ -10,6 +10,10 @@ msgctxt "field:bank.account,companies:"
|
||||||
msgid "Companies"
|
msgid "Companies"
|
||||||
msgstr "Empresas"
|
msgstr "Empresas"
|
||||||
|
|
||||||
|
msgctxt "field:bank.account,owners_by_companies:"
|
||||||
|
msgid "Owners"
|
||||||
|
msgstr "Titulares"
|
||||||
|
|
||||||
msgctxt "field:carrier,companies:"
|
msgctxt "field:carrier,companies:"
|
||||||
msgid "Companies"
|
msgid "Companies"
|
||||||
msgstr "Empresas"
|
msgstr "Empresas"
|
||||||
|
|
|
@ -24,6 +24,7 @@ def set_company(company):
|
||||||
class PartyCompanyTestCase(CompanyTestMixin, ModuleTestCase):
|
class PartyCompanyTestCase(CompanyTestMixin, ModuleTestCase):
|
||||||
'Test PartyCompany module'
|
'Test PartyCompany module'
|
||||||
module = 'party_company'
|
module = 'party_company'
|
||||||
|
extras = ['bank']
|
||||||
|
|
||||||
@with_transaction()
|
@with_transaction()
|
||||||
def test_party(self):
|
def test_party(self):
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!-- The COPYRIGHT file at the top level of this repository contains the full
|
||||||
|
copyright notices and license terms. -->
|
||||||
|
<data>
|
||||||
|
<xpath expr="/form/field[@name='owners']" position="replace">
|
||||||
|
<field name="owners_by_companies" colspan="6"/>
|
||||||
|
</xpath>
|
||||||
|
</data>
|
Loading…
Reference in New Issue