changeset 11eaa6492bfc in modules/party:default
details: https://hg.tryton.org/modules/party?cmd=changeset&node=11eaa6492bfc
description:
Use party identifier to store SIREN and SIRET
issue5834
review397071002
diffstat:
CHANGELOG | 2 ++
address.py | 7 +++++++
address.xml | 7 +++++++
party.py | 25 +++++++++++++++++++++++--
view/address_form.xml | 38 ++++++++++++++++++++++----------------
view/address_form_simple.xml | 33 +++++++++++++++++++++++++++++++++
view/identifier_form.xml | 3 +++
view/identifier_list.xml | 7 ++++---
view/identifier_list_sequence.xml | 7 ++++---
view/party_form.xml | 2 +-
10 files changed, 106 insertions(+), 25 deletions(-)
diffs (230 lines):
diff -r d7d4e042710e -r 11eaa6492bfc CHANGELOG
--- a/CHANGELOG Mon Feb 07 22:55:08 2022 +0100
+++ b/CHANGELOG Sun Feb 13 00:43:49 2022 +0100
@@ -1,3 +1,5 @@
+* Add fr_siren and fr_siret identifiers
+* Add optional address to identifiers
* Add autonomous city as subdivision type for Spain
* Add support for Python 3.10
* Remove support for Python 3.6
diff -r d7d4e042710e -r 11eaa6492bfc address.py
--- a/address.py Mon Feb 07 22:55:08 2022 +0100
+++ b/address.py Sun Feb 13 00:43:49 2022 +0100
@@ -58,6 +58,13 @@
depends=['country', 'subdivision_types'])
full_address = fields.Function(fields.Text('Full Address'),
'get_full_address')
+ identifiers = fields.One2Many(
+ 'party.identifier', 'address', "Identifiers",
+ domain=[
+ ('party', '=', Eval('party')),
+ ('type', 'in', ['fr_siret']),
+ ],
+ depends=['party'])
@classmethod
def __setup__(cls):
diff -r d7d4e042710e -r 11eaa6492bfc address.xml
--- a/address.xml Mon Feb 07 22:55:08 2022 +0100
+++ b/address.xml Sun Feb 13 00:43:49 2022 +0100
@@ -22,6 +22,13 @@
<field name="type">form</field>
<field name="name">address_form</field>
</record>
+
+ <record model="ir.ui.view" id="address_view_form_simple">
+ <field name="model">party.address</field>
+ <field name="type">form</field>
+ <field name="name">address_form_simple</field>
+ </record>
+
<record model="ir.action.act_window" id="act_address_form">
<field name="name">Addresses</field>
<field name="res_model">party.address</field>
diff -r d7d4e042710e -r 11eaa6492bfc party.py
--- a/party.py Mon Feb 07 22:55:08 2022 +0100
+++ b/party.py Sun Feb 13 00:43:49 2022 +0100
@@ -457,8 +457,8 @@
('fi_ytunnus', "Finnish Business Identifier"),
('fr_nif', "French Tax Identification Number"),
('fr_nir', "French Personal Identification Number"),
- # TODO: remove from party_siren
- # ('fr_siren', "French Company Identification Number"),
+ ('fr_siren', "French Company Identification Number"),
+ ('fr_siret', "French Company Establishment Identification Number"),
('fr_tva', "French VAT Number"),
('gb_nhs',
"United Kingdom National Health Service Patient Identifier"),
@@ -618,8 +618,21 @@
party = fields.Many2One('party.party', 'Party', ondelete='CASCADE',
required=True, select=True,
help="The party identified by this record.")
+ address = fields.Many2One(
+ 'party.address', "Address", ondelete='CASCADE', select=True,
+ states={
+ 'required': Eval('type_address', False),
+ 'invisible': ~Eval('type_address', True),
+ },
+ domain=[
+ ('party', '=', Eval('party', -1)),
+ ],
+ depends=['party', 'type_address'],
+ help="The address identified by this record.")
type = fields.Selection('get_types', 'Type')
type_string = type.translated('type')
+ type_address = fields.Function(
+ fields.Boolean("Type of Address"), 'on_change_with_type_address')
code = fields.Char('Code', required=True)
@classmethod
@@ -667,6 +680,14 @@
configuration = Configuration(1)
return [(None, '')] + configuration.get_identifier_types()
+ @classmethod
+ def _type_addresses(cls):
+ return {'fr_siret'}
+
+ @fields.depends('type')
+ def on_change_with_type_address(self, name=None):
+ return self.type in self._type_addresses()
+
@fields.depends('type', 'code')
def on_change_with_code(self):
if self.type and '_' in self.type:
diff -r d7d4e042710e -r 11eaa6492bfc view/address_form.xml
--- a/view/address_form.xml Mon Feb 07 22:55:08 2022 +0100
+++ b/view/address_form.xml Sun Feb 13 00:43:49 2022 +0100
@@ -14,20 +14,26 @@
<label name="sequence"/>
<field name="sequence"/>
</group>
- <newline/>
- <label name="name"/>
- <field name="name"/>
- <newline/>
- <label name="street"/>
- <field name="street" colspan="3"/>
- <newline/>
- <label name="postal_code"/>
- <field name="postal_code"/>
- <label name="city"/>
- <field name="city"/>
- <newline/>
- <label name="country"/>
- <field name="country" widget="selection"/>
- <label name="subdivision"/>
- <field name="subdivision" widget="selection"/>
+ <notebook colspan="6">
+ <page string="General" id="general">
+ <label name="name"/>
+ <field name="name"/>
+ <newline/>
+ <label name="street"/>
+ <field name="street" colspan="3"/>
+ <newline/>
+ <label name="postal_code"/>
+ <field name="postal_code"/>
+ <label name="city"/>
+ <field name="city"/>
+ <newline/>
+ <label name="country"/>
+ <field name="country" widget="selection"/>
+ <label name="subdivision"/>
+ <field name="subdivision" widget="selection"/>
+ </page>
+ <page name="identifiers">
+ <field name="identifiers" colspan="4" pre_validate="1"
view_ids="party.identifier_list_sequence"/>
+ </page>
+ </notebook>
</form>
diff -r d7d4e042710e -r 11eaa6492bfc view/address_form_simple.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/view/address_form_simple.xml Sun Feb 13 00:43:49 2022 +0100
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<form col="6">
+ <label name="party"/>
+ <field name="party" colspan="5"/>
+ <label name="party_name"/>
+ <field name="party_name"/>
+ <group colspan="2" col="-1" id="checkboxes">
+ <label name="active"/>
+ <field name="active"
+ xexpand="0" width="25"/>
+ <!-- Add here some checkboxes ! -->
+ <label name="sequence"/>
+ <field name="sequence"/>
+ </group>
+ <newline/>
+ <label name="name"/>
+ <field name="name"/>
+ <newline/>
+ <label name="street"/>
+ <field name="street" colspan="3"/>
+ <newline/>
+ <label name="postal_code"/>
+ <field name="postal_code"/>
+ <label name="city"/>
+ <field name="city"/>
+ <newline/>
+ <label name="country"/>
+ <field name="country" widget="selection"/>
+ <label name="subdivision"/>
+ <field name="subdivision" widget="selection"/>
+</form>
diff -r d7d4e042710e -r 11eaa6492bfc view/identifier_form.xml
--- a/view/identifier_form.xml Mon Feb 07 22:55:08 2022 +0100
+++ b/view/identifier_form.xml Sun Feb 13 00:43:49 2022 +0100
@@ -14,4 +14,7 @@
<field name="type"/>
<label name="code"/>
<field name="code"/>
+
+ <label name="address"/>
+ <field name="address"/>
</form>
diff -r d7d4e042710e -r 11eaa6492bfc view/identifier_list.xml
--- a/view/identifier_list.xml Mon Feb 07 22:55:08 2022 +0100
+++ b/view/identifier_list.xml Sun Feb 13 00:43:49 2022 +0100
@@ -2,7 +2,8 @@
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tree>
- <field name="party"/>
- <field name="type"/>
- <field name="code" expand="1"/>
+ <field name="party" expand="1"/>
+ <field name="address" expand="1"/>
+ <field name="type" expand="1"/>
+ <field name="code" expand="2"/>
</tree>
diff -r d7d4e042710e -r 11eaa6492bfc view/identifier_list_sequence.xml
--- a/view/identifier_list_sequence.xml Mon Feb 07 22:55:08 2022 +0100
+++ b/view/identifier_list_sequence.xml Sun Feb 13 00:43:49 2022 +0100
@@ -2,7 +2,8 @@
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tree sequence="sequence">
- <field name="party"/>
- <field name="type"/>
- <field name="code" expand="1"/>
+ <field name="party" expand="1"/>
+ <field name="address" expand="1"/>
+ <field name="type" expand="1"/>
+ <field name="code" expand="2"/>
</tree>
diff -r d7d4e042710e -r 11eaa6492bfc view/party_form.xml
--- a/view/party_form.xml Mon Feb 07 22:55:08 2022 +0100
+++ b/view/party_form.xml Sun Feb 13 00:43:49 2022 +0100
@@ -18,7 +18,7 @@
<notebook colspan="6">
<page string="General" id="general">
<field name="addresses" mode="form,tree" colspan="4"
-
view_ids="party.address_view_form,party.address_view_tree_sequence"/>
+
view_ids="party.address_view_form_simple,party.address_view_tree_sequence"/>
<group col="2" colspan="4" id="lang">
<label name="lang"/>
<field name="lang" widget="selection" xexpand="0"/>