From 0ec8ba257cc9e686a5313c1ec765c2a6662e6995 Mon Sep 17 00:00:00 2001
From: Remi <remi@le-filament.com>
Date: Mon, 7 Oct 2019 15:16:37 +0200
Subject: [PATCH] Add UR ids and fix data imports

---
 __manifest__.py                       |  5 ++++-
 datas/res.partner.certification.csv   | 32 +++++++++++++--------------
 datas/res.partner.company.type.csv    | 12 +++++-----
 datas/res.partner.creation.origin.csv | 32 +++++++++++++--------------
 datas/union.regionale.csv             | 13 +++++++++++
 models/__init__.py                    |  3 +++
 models/res_company.py                 | 16 ++++++++++++++
 models/res_partner.py                 | 18 +++++++--------
 models/res_users.py                   | 15 +++++++++++++
 models/union_regionale.py             | 16 ++++++++++++++
 security/ir.model.access.csv          |  1 +
 views/res_company.xml                 | 18 +++++++++++++++
 views/res_partner.xml                 |  2 +-
 views/res_partner_cooperative.xml     |  2 +-
 views/res_users.xml                   | 18 +++++++++++++++
 views/scop_config_views.xml           | 23 +++++++++++++++++++
 16 files changed, 176 insertions(+), 50 deletions(-)
 create mode 100644 datas/union.regionale.csv
 create mode 100644 models/res_company.py
 create mode 100644 models/res_users.py
 create mode 100644 models/union_regionale.py
 create mode 100644 views/res_company.xml
 create mode 100644 views/res_users.xml

diff --git a/__manifest__.py b/__manifest__.py
index 0904a12..30d591c 100644
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -19,6 +19,8 @@
         "security/ir.model.access.csv",
         "views/assets.xml",
         "wizard/scop_period_wizard.xml",
+        "views/res_company.xml",
+        "views/res_users.xml",
         "views/res_partner.xml",
         "views/res_partner_cooperative.xml",
         "views/scop_config_views.xml",
@@ -27,7 +29,7 @@
         "datas/res.partner.certification.csv",
         "datas/res.partner.company.type.csv",
         "datas/res.partner.cooperative.form.csv",
-        # "datas/res.partner.creation.origin.csv",
+        "datas/res.partner.creation.origin.csv",
         "datas/res.partner.dissolution.reason.csv",
         "datas/res.partner.organization.type.csv",
         "datas/res.partner.rgpd.origin.csv",
@@ -38,5 +40,6 @@
         "datas/scop.legal.event.type.csv",
         "datas/scop.membership.reason.end.csv",
         "datas/scop.membership.type.csv",
+        "datas/union.regionale.csv",
     ]
 }
diff --git a/datas/res.partner.certification.csv b/datas/res.partner.certification.csv
index e7e9ae2..60c3822 100644
--- a/datas/res.partner.certification.csv
+++ b/datas/res.partner.certification.csv
@@ -1,17 +1,17 @@
 id,id_riga,name
-"riga_16747","16747","Aéronautique EN9100"
-"riga_14102","14102","Autres (à preciser)"
-"riga_13038","13038","Centre de formation"
-"riga_11571","11571","Entreprise adaptée"
-"riga_11570","11570","Entreprise d'insertion"
-"riga_11573","11573","Entreprise Solidaire"
-"riga_16429","16429","ESUS"
-"riga_11576","11576","ISO 14 001"
-"riga_16538","16538","ISO 26 000"
-"riga_11576","11575","ISO 9 001"
-"riga_11574","11574","Jeune Entreprise Innovante"
-"riga_13037","13037","Lamaneur"
-"riga_16774","16774","QHSAS 18001"
-"riga_16775","16775","QUALIPAYSAGE"
-"riga_14126","14126","SAP"
-"riga_11572","11572","Services à la personne"
+"riga_16747",16747,"Aéronautique EN9100"
+"riga_14102",14102,"Autres (à preciser)"
+"riga_13038",13038,"Centre de formation"
+"riga_11571",11571,"Entreprise adaptée"
+"riga_11570",11570,"Entreprise d'insertion"
+"riga_11573",11573,"Entreprise Solidaire"
+"riga_16429",16429,"ESUS"
+"riga_11576",11576,"ISO 14 001"
+"riga_16538",16538,"ISO 26 000"
+"riga_11575",11575,"ISO 9 001"
+"riga_11574",11574,"Jeune Entreprise Innovante"
+"riga_13037",13037,"Lamaneur"
+"riga_16774",16774,"QHSAS 18001"
+"riga_16775",16775,"QUALIPAYSAGE"
+"riga_14126",14126,"SAP"
+"riga_11572",11572,"Services à la personne"
diff --git a/datas/res.partner.company.type.csv b/datas/res.partner.company.type.csv
index c1b7758..0ab47d3 100644
--- a/datas/res.partner.company.type.csv
+++ b/datas/res.partner.company.type.csv
@@ -1,14 +1,14 @@
-id,name,riga_id,shortcut
-"riga_14675","Artisan / Commerçant",14675,
+id,name,id_riga,shortcut
+"riga_14675","Artisan / Commerçant",14675,""
 "riga_14672","Association loi 1901 ou assimilée",14672,"asso"
-"riga_14673","Collectivité territoriale",14673,
-"riga_14674","Profession libérale",14674,
+"riga_14673","Collectivité territoriale",14673,""
+"riga_14674","Profession libérale",14674,""
 "riga_14669","Société à Responsabilité Limitée (SARL)",14669,"SARL"
 "riga_16496","Société à Responsabilité Limitée (SARL) unipersonnelle",16496,"SARLU"
 "riga_14668","Société Anonyme à Conseil d'Administration",14668,"SA"
 "riga_14670","Société Anonyme à directoire",14670,"SA"
-"riga_14677","Société civile coopérative",14677,
+"riga_14677","Société civile coopérative",14677,""
 "riga_14860","Société Civile Immobilière (SCI)",14860,"SCI"
 "riga_16771","Société d exercice libéral par action simplifiée (SELAS)",16771,"SELAS"
 "riga_14671","Société par actions simplifiée (SAS)",14671,"SAS"
-"riga_16399","Société par actions simplifiée à associé unique (SASU)";16399,"SAS"
+"riga_16399","Société par actions simplifiée à associé unique (SASU)",16399,"SAS"
diff --git a/datas/res.partner.creation.origin.csv b/datas/res.partner.creation.origin.csv
index 4c75a59..e73d544 100644
--- a/datas/res.partner.creation.origin.csv
+++ b/datas/res.partner.creation.origin.csv
@@ -1,17 +1,17 @@
 "id","parent_id:id","name","id_riga"
-1,,"Ex-Nihilo",14215
-15,1,"Création par des porteurs de projet",14648
-16,1,"Création d'une filiale de Scop ou de Scic",14649
-17,1,"Essaimage",14658
-2,,"Transmission d'entreprise saine",14634
-21,2,"Transmission d'une entreprise indépendante saine avec départ des dirigeants (succession)",14993
-22,2,"Transmission d'une entreprise indépendante saine avec maintien des dirigeants",14992
-26,2,"Transmission d'une filiale suite à restructuration de groupe",14661
-27,2,"Transmission d'une filiale d'une association",14660
-3,,"Reprise d'entreprise en difficulté",14217
-35,3,"Reprise d'une entreprise en procédure collective",14656
-36,3,"Reprise d'une entreprise en difficulté économique",14652
-37,3,"Création suite à un arrêt d'activité",14655
-4,,"Transformation d'association ou de coopérative",14218
-45,4,"Transformation d'une association (hors association de préfiguration)",14659
-46,4,"Transformation d'une Coopérative",14653
+"riga_14215",,"Ex-Nihilo",14215
+15,"riga_14215","Création par des porteurs de projet",14648
+16,"riga_14215","Création d'une filiale de Scop ou de Scic",14649
+17,"riga_14215","Essaimage",14658
+"riga_14634",,"Transmission d'entreprise saine",14634
+21,"riga_14634","Transmission d'une entreprise indépendante saine avec départ des dirigeants (succession)",14993
+22,"riga_14634","Transmission d'une entreprise indépendante saine avec maintien des dirigeants",14992
+26,"riga_14634","Transmission d'une filiale suite à restructuration de groupe",14661
+27,"riga_14634","Transmission d'une filiale d'une association",14660
+"riga_14217",,"Reprise d'entreprise en difficulté",14217
+35,"riga_14217","Reprise d'une entreprise en procédure collective",14656
+36,"riga_14217","Reprise d'une entreprise en difficulté économique",14652
+37,"riga_14217","Création suite à un arrêt d'activité",14655
+"riga_14218",,"Transformation d'association ou de coopérative",14218
+45,"riga_14218","Transformation d'une association (hors association de préfiguration)",14659
+46,"riga_14218","Transformation d'une Coopérative",14653
diff --git a/datas/union.regionale.csv b/datas/union.regionale.csv
new file mode 100644
index 0000000..6c518f5
--- /dev/null
+++ b/datas/union.regionale.csv
@@ -0,0 +1,13 @@
+id,id_riga,long_name,name
+"ur_idf","12784","UNION REGIONALE DES SCOP ILE DE FRANCE CENTRE VAL DE LOIRE DOM-TOM","Paris"
+"ur_hdf","12785","UNION REGIONALE DES SCOP HAUTS DE FRANCE","Hauts-de-France"
+"ur_bfc","12787","UNION REGIONALE DES SCOP BOURGOGNE FRANCHE COMTE","Bourgogne"
+"ur_ge","12788","UNION REGIONALE DES SCOP GRAND EST","Est"
+"ur_arh","12789","UNION REGIONALE DES SCOP AUVERGNE RHONE ALPES","AURA"
+"ur_pacac","12791","UNION REGIONALE DES SCOP PROVENCE ALPES COTE D'AZUR CORSE","Paca"
+"ur_mp","12792","UNION REGIONALE DES SCOP MIDI PYRENEES","Midi Pyrénées"
+"ur_lim","12793","UNION REGIONALE DES SCOP LIMOUSIN","Limousin Berry"
+"ur_pc","12794","UNION REGIONALE DES SCOP POITOU CHARENTES","Poitou Charentes"
+"ur_go","12795","UNION REGIONALE DES SCOP OUEST","Ouest"
+"ur_aq","12796","UNION REGIONALE DES SCOP AQUITAINE","Aquitaine"
+"ur_lr","12797","UNION REGIONALE DES SCOP LANGUEDOC ROUSSILLON","Languedoc Roussillon"
diff --git a/models/__init__.py b/models/__init__.py
index 0f02e2d..2f2af0b 100644
--- a/models/__init__.py
+++ b/models/__init__.py
@@ -1,8 +1,10 @@
 # © 2019 Le Filament (<http://www.le-filament.com>)
 # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
 
+from . import res_company
 from . import res_partner
 from . import res_partner_newsletter
+from . import res_users
 from . import scop_contribution
 from . import scop_financial_tools
 from . import scop_legal_event
@@ -12,3 +14,4 @@ from . import scop_ministry_list
 from . import scop_period
 from . import scop_questionnaire
 from . import scop_revision
+from . import union_regionale
diff --git a/models/res_company.py b/models/res_company.py
new file mode 100644
index 0000000..098fdce
--- /dev/null
+++ b/models/res_company.py
@@ -0,0 +1,16 @@
+# © 2019 Le Filament (<http://www.le-filament.com>)
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+from odoo import fields, models, api
+
+
+class ResCompany(models.Model):
+    _inherit = "res.company"
+
+    @api.model
+    def _ur_default_get(self):
+        # Renvoie l'UR de l'utlisateur courant
+        return self.env['res.users']._get_ur()
+
+    ur_id = fields.Many2one('union.regionale', string='UR',
+                            default="_ur_default_get")
diff --git a/models/res_partner.py b/models/res_partner.py
index fcef7b9..8e66bbe 100644
--- a/models/res_partner.py
+++ b/models/res_partner.py
@@ -9,8 +9,8 @@ from odoo.exceptions import ValidationError
 class ScopPartner(models.Model):
     _inherit = "res.partner"
 
-    def _default_company(self):
-        return self.env['res.company']._company_default_get('res.partner')
+    def _default_ur(self):
+        return self.env['res.company']._ur_default_get()
 
     # Infos générales
     is_cooperative = fields.Boolean("Est une coopérative")
@@ -22,8 +22,8 @@ class ScopPartner(models.Model):
 
     # Informations organisme
     # A garder ?
-    unique_id_si_ur = fields.Char("Identifiant unique SI UR")
-    unique_id_si_cg = fields.Char("Identifiant unique SI CG")
+    id_ur = fields.Char("Identifiant unique SI UR")
+    id_riga = fields.Char("Identifiant unique SI CG")
 
     # Informations Bandeau
     project_status = fields.Selection(
@@ -61,12 +61,12 @@ class ScopPartner(models.Model):
         string='Contacts Dirigeants')
 
     # Infos générales / Suivi UR
-    company_id = fields.Many2one(
-        'res.company',
+    ur_id = fields.Many2one(
+        'union.regionale',
         string='Union Régionale',
         index=True,
         on_delete='restrict',
-        default=_default_company)
+        default=_default_ur)
     creation_delegate_id = fields.Many2one(
         'res.partner',
         string='Délégué de création',
@@ -120,7 +120,7 @@ class ScopPartner(models.Model):
          (12851, 'Octobre'),
          (12852, 'Novembre'),
          (12853, 'Décembre')],
-        string='Mois clôture exercices', default=12)
+        string='Mois clôture exercices', default=12853)
     is_seed_scop = fields.Boolean("Est une SCOP d'amorçage")
     seed_end = fields.Date("Date de fin du dispositif d'amorçage",
                            default=str(datetime.today() + timedelta(2556)),
@@ -415,7 +415,7 @@ class ResPartneCertification(models.Model):
 
 
 class ScopPartnerCompanyType(models.Model):
-    _inherit = "res.partner.company_type"
+    _inherit = "res.partner.company.type"
 
     id_riga = fields.Integer("ID RIGA")
 
diff --git a/models/res_users.py b/models/res_users.py
new file mode 100644
index 0000000..adf46c1
--- /dev/null
+++ b/models/res_users.py
@@ -0,0 +1,15 @@
+# © 2019 Le Filament (<http://www.le-filament.com>)
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+from odoo import fields, models, api
+
+
+class ResUsers(models.Model):
+    _inherit = "res.users"
+
+    @api.model
+    def _get_ur(self):
+        return self.env.user.company_id.ur_id
+
+    ur_id = fields.Many2one('union.regionale', related='company_id.ur_id',
+                            string='UR', inherited=True, readonly=True)
diff --git a/models/union_regionale.py b/models/union_regionale.py
new file mode 100644
index 0000000..14e0ef4
--- /dev/null
+++ b/models/union_regionale.py
@@ -0,0 +1,16 @@
+# © 2019 Le Filament (<http://www.le-filament.com>)
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+from odoo import fields, models
+
+
+class UnionRegionale(models.Model):
+    _name = 'union.regionale'
+    _description = 'Union Régionale'
+
+    long_name = fields.Char("Nom", required=True)
+    name = fields.Char("Abbréviation")
+    id_riga = fields.Integer("Identifiant RIGA")
+
+    _sql_constraints = [('name_uniq', 'unique (name)',
+                         "Cette Union Régionale existe déjà !")]
diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv
index 72df6d4..48e99d8 100644
--- a/security/ir.model.access.csv
+++ b/security/ir.model.access.csv
@@ -25,3 +25,4 @@ access_scop_membership_reason_end,access_scop_membership_reason_end,model_scop_m
 access_scop_revision_format,access_scop_revision_format,model_scop_revision_format,base.group_user,1,1,1,1
 access_res_partner_prescriber_canal,access_res_partner_prescriber_canal,model_res_partner_prescriber_canal,base.group_user,1,1,1,1
 access_scop_period,access_scop_period,model_scop_period,base.group_user,1,1,1,1
+access_union_regionale,access_union_regionale,model_union_regionale,base.group_user,1,1,1,1
diff --git a/views/res_company.xml b/views/res_company.xml
new file mode 100644
index 0000000..0197129
--- /dev/null
+++ b/views/res_company.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!-- Copyright 2019 Le Filament
+     License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
+
+<odoo>
+    <data>
+        <record id="company_form_with_ur" model="ir.ui.view">
+            <field name="name">add ur in company view</field>
+            <field name="model">res.company</field>
+            <field name="inherit_id" ref="base.view_company_form"/>
+            <field name="arch" type="xml">
+                 <field name="website" position="before">
+                    <field name="ur_id"/>
+                </field>
+            </field>
+        </record>
+    </data>
+</odoo>
diff --git a/views/res_partner.xml b/views/res_partner.xml
index e38f5bc..15cf6d4 100644
--- a/views/res_partner.xml
+++ b/views/res_partner.xml
@@ -120,7 +120,7 @@
                 <field name="vat" position="replace">
                     <field name="phone" widget="phone" modifiers="{}"/>
                     <field name="email" widget="email" on_change="1" modifiers="{}"/>
-                    <field name="company_id" string="UR" options="{'no_create': True}" on_change="1" can_create="false" can_write="false" modifiers="{}"  attrs="{'invisible': [('is_company','=', False)]}"/>
+                    <field name="ur_id" options="{'no_create': True}" on_change="1" can_create="false" can_write="false" modifiers="{}"/>
                     <field name="website" invisible="1"/>
                     <field name="lang" invisible="1"/>
                 </field>
diff --git a/views/res_partner_cooperative.xml b/views/res_partner_cooperative.xml
index 45df18e..54b3680 100644
--- a/views/res_partner_cooperative.xml
+++ b/views/res_partner_cooperative.xml
@@ -247,7 +247,7 @@
                                 </field>
                             </group>
                             <group string="Suivi UR">
-                                <field name="company_id" string="UR" required="True" domain="[('id', '!=', 1)]"/>
+                                <field name="ur_id" required="True"/>
                                 <field name="creation_delegate_id" widget="res_partner_many2one"
                                     attrs="{'required':[('project_status','in',('3_accompagnement','4_adhesion', '5_suivi'))]}"/>
                                 <field name="followup_delegate_id" widget="res_partner_many2one" attrs="{'required':[('project_status','in',('5_suivi'))]}"/>
diff --git a/views/res_users.xml b/views/res_users.xml
new file mode 100644
index 0000000..de89139
--- /dev/null
+++ b/views/res_users.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!-- Copyright 2019 Le Filament
+     License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
+
+<odoo>
+    <data>
+        <record id="users_form_with_ur" model="ir.ui.view">
+            <field name="name">add ur in users view</field>
+            <field name="model">res.users</field>
+            <field name="inherit_id" ref="base.view_users_form"/>
+            <field name="arch" type="xml">
+                 <field name="partner_id" position="after">
+                    <field name="ur_id"/>
+                </field>
+            </field>
+        </record>
+    </data>
+</odoo>
diff --git a/views/scop_config_views.xml b/views/scop_config_views.xml
index 7656711..4917666 100644
--- a/views/scop_config_views.xml
+++ b/views/scop_config_views.xml
@@ -265,6 +265,24 @@
             <field name="help">Display and manage the list of Prescriber Canals.</field>
         </record>
 
+        <record model="ir.ui.view" id="union_regionale_tree_view">
+            <field name="name">union.regionale.tree</field>
+            <field name="model">union.regionale</field>
+            <field name="arch" type="xml">
+                <tree>
+                    <field name="long_name"/>
+                    <field name="name"/>
+                    <field name="id_riga"/>
+                </tree>
+            </field>
+        </record>
+
+        <record model="ir.actions.act_window" id="union_regionale_act_window">
+            <field name="name">Company Types</field>
+            <field name="res_model">union.regionale</field>
+            <field name="view_mode">tree</field>
+        </record>
+
         <!-- MENUS -->
 
         <menuitem id="contacts.res_partner_menu_config"
@@ -316,5 +334,10 @@
             parent="menu_scop"
             action="action_view_res_partner_organization_type_tree"
             sequence="90"/>
+        <menuitem action="union_regionale_act_window"
+            id="menu_union_regionale"
+            name="Unions Régionales"
+            parent="menu_scop"
+            sequence="100"/>
     </data>
 </odoo>
-- 
GitLab