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"/>

Reply via email to