changeset 34cd2ac1a5b8 in modules/party:default
details: https://hg.tryton.org/modules/party?cmd=changeset&node=34cd2ac1a5b8
description:
Make identifiers deactivatable and replace it
issue10567
review346941002
diffstat:
CHANGELOG | 2 ++
party.py | 7 ++++++-
tests/scenario_party_replace.rst | 14 ++++++++++++++
view/identifier_form.xml | 8 ++++++--
4 files changed, 28 insertions(+), 3 deletions(-)
diffs (104 lines):
diff -r edfd039d6ee3 -r 34cd2ac1a5b8 CHANGELOG
--- a/CHANGELOG Tue Aug 17 10:06:56 2021 +0200
+++ b/CHANGELOG Fri Oct 08 19:34:33 2021 +0200
@@ -1,3 +1,5 @@
+* Make identifiers deactivatable
+* Replace party on identifier when replacing parties
* Add au_abn and au_acn as tax identifiers
* Add at, ua and vn party identifiers
diff -r edfd039d6ee3 -r 34cd2ac1a5b8 party.py
--- a/party.py Tue Aug 17 10:06:56 2021 +0200
+++ b/party.py Fri Oct 08 19:34:33 2021 +0200
@@ -564,7 +564,7 @@
]
-class Identifier(sequence_ordered(), ModelSQL, ModelView):
+class Identifier(sequence_ordered(), DeactivableMixin, ModelSQL, ModelView):
'Party Identifier'
__name__ = 'party.identifier'
_rec_name = 'code'
@@ -754,6 +754,7 @@
pool = Pool()
Address = pool.get('party.address')
ContactMechanism = pool.get('party.contact_mechanism')
+ Identifier = pool.get('party.identifier')
transaction = Transaction()
self.check_similarity()
@@ -766,6 +767,9 @@
ContactMechanism.write(list(source.contact_mechanisms), {
'active': False,
})
+ Identifier.write(list(source.identifiers), {
+ 'active': False,
+ })
source.replaced_by = destination
source.active = False
source.save()
@@ -801,6 +805,7 @@
return [
('party.address', 'party'),
('party.contact_mechanism', 'party'),
+ ('party.identifier', 'party'),
]
diff -r edfd039d6ee3 -r 34cd2ac1a5b8 tests/scenario_party_replace.rst
--- a/tests/scenario_party_replace.rst Tue Aug 17 10:06:56 2021 +0200
+++ b/tests/scenario_party_replace.rst Fri Oct 08 19:34:33 2021 +0200
@@ -15,14 +15,22 @@
>>> Party = Model.get('party.party')
>>> party1 = Party(name='Pam')
+ >>> identifier1 = party1.identifiers.new()
+ >>> identifier1.type = 'eu_vat'
+ >>> identifier1.code = 'BE0897290877'
>>> party1.save()
>>> address1, = party1.addresses
+ >>> identifier1, = party1.identifiers
Create a second party similar party::
>>> party2 = Party(name='Pam')
+ >>> identifier2 = party2.identifiers.new()
+ >>> identifier2.type = 'eu_vat'
+ >>> identifier2.code = 'BE0897290877'
>>> party2.save()
>>> address2, = party2.addresses
+ >>> identifier2, = party2.identifiers
Replace the second by the first party::
@@ -36,6 +44,12 @@
>>> bool(party2.active)
False
+ >>> identifier2.reload()
+ >>> identifier2.party == party1
+ True
+ >>> bool(identifier2.active)
+ False
+
>>> address2.reload()
>>> address2.party == party1
True
diff -r edfd039d6ee3 -r 34cd2ac1a5b8 view/identifier_form.xml
--- a/view/identifier_form.xml Tue Aug 17 10:06:56 2021 +0200
+++ b/view/identifier_form.xml Fri Oct 08 19:34:33 2021 +0200
@@ -4,8 +4,12 @@
<form>
<label name="party"/>
<field name="party"/>
- <label name="sequence"/>
- <field name="sequence"/>
+ <group colspan="2" col="-1" id="checkboxes">
+ <label name="active"/>
+ <field name="active"/>
+ <label name="sequence"/>
+ <field name="sequence"/>
+ </group>
<label name="type"/>
<field name="type"/>
<label name="code"/>