diff --git a/__manifest__.py b/__manifest__.py index 2509c56de4be3b48052ddcfc7437ca5cb74f0ed3..255efbd8a18f8ea8128eb59d528ddddc80a674d8 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -25,6 +25,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.dissolution.reason.csv", "datas/res.partner.organization.type.csv", "datas/res.partner.rgpd.origin.csv", diff --git a/datas/res.partner.creation.origin.csv b/datas/res.partner.creation.origin.csv new file mode 100644 index 0000000000000000000000000000000000000000..b020397a9e0f55746984698eea2ca77c5be800f9 --- /dev/null +++ b/datas/res.partner.creation.origin.csv @@ -0,0 +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 diff --git a/models/res_partner.py b/models/res_partner.py index 06858bd53c946cb8981771843183398154ee431a..b30090d396fbb4baf2c4268f6c93254d13877974 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -3,6 +3,7 @@ from datetime import datetime, timedelta from odoo import models, fields, api +from odoo.exceptions import ValidationError class ScopPartner(models.Model): @@ -74,15 +75,15 @@ class ScopPartner(models.Model): parent_group_name = fields.Char('Coopérative mère') # Infos générales / Infos activité - creation_origin = fields.Selection( - [('null', 'Ex-nihilo'), - ('transformation', 'Transformation'), - ('transmission', 'Transmission'), - ('takeover', 'reprise')], - string='Origine création en coop') + creation_origin_id = fields.Many2one( + 'res.partner.creation.origin', + string="Origine création en coop", + domain=[('parent_id', '=', False)], + on_delete='restrict') creation_suborigin_id = fields.Many2one( - 'res.partner.creation.suborigin', + 'res.partner.creation.origin', string="Sous-Origine création en coop", + domain=[('child_ids', '=', False)], on_delete='restrict') date_1st_sign = fields.Date( 'Date 1er signature coop') @@ -324,6 +325,11 @@ class ScopPartner(models.Model): "url": self.twitter, } + @api.onchange('creation_origin_id') + def onchange_creation_origin_id(self): + for coop in self: + coop.creation_suborigin_id = False + class ResPartneCertification(models.Model): _name = "res.partner.certification" @@ -339,11 +345,33 @@ class ResPartnerCooperativeForm(models.Model): name = fields.Char('Cooperative form') -class ResPartnerCreationSuborigin(models.Model): - _name = "res.partner.creation.suborigin" - _description = "Creation Sub-Origin" +class ResPartnerCreationOrigin(models.Model): + _name = "res.partner.creation.origin" + _description = "Creation Origin" + _parent_name = "parent_id" + _parent_store = True + _rec_name = 'name' + _order = 'id' - name = fields.Char('Creation Sub-Origin') + name = fields.Char('Origine / Sous-Origine', index=True, required=True) + parent_id = fields.Many2one( + comodel_name='res.partner.creation.origin', + string='Origine (parent)', + index=True, + ondelete='restrict') + parent_path = fields.Char(index=True) + child_ids = fields.One2many( + comodel_name='res.partner.creation.origin', + inverse_name='parent_id', + string='Sous origines') + id_riga = fields.Integer("ID RIGA") + + @api.constrains('parent_id') + def _check_origin_recursion(self): + if not self._check_recursion(): + raise ValidationError( + 'Vous ne pouvez pas créer des origines récusrives.') + return True class ResPartnerDissolutionReason(models.Model): diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv index e4c5425392d8fa12aa0808b7933ed7c76d2b5fd3..524ee5308273bd20efc5064b84e9c9dfa4aab9d4 100644 --- a/security/ir.model.access.csv +++ b/security/ir.model.access.csv @@ -10,7 +10,7 @@ access_res_partner_dissolution_reason,access_res_partner_dissolution_reason,mode access_res_partner_organization_type,access_res_partner_organization_type,model_res_partner_organization_type,base.group_user,1,1,1,1 access_res_partner_cooperative_form,access_res_partner_cooperative_form,model_res_partner_cooperative_form,base.group_user,1,1,1,1 access_res_partner_certification,access_res_partner_certification,model_res_partner_certification,base.group_user,1,1,1,1 -access_res_partner_creation_suborigin,access_res_partner_creation_suborigin,model_res_partner_creation_suborigin,base.group_user,1,1,1,1 +access_res_partner_creation_origin,access_res_partner_creation_origin,model_res_partner_creation_origin,base.group_user,1,1,1,1 access_res_partner_rgpd_origin,access_res_partner_rgpd_origin,model_res_partner_rgpd_origin,base.group_user,1,1,1,1 access_res_partner_newsletter_subscription,access_res_partner_newsletter_subscription,model_res_partner_newsletter_subscription,base.group_user,1,1,1,1 access_res_partner_newsletter,access_res_partner_newsletter,model_res_partner_newsletter,base.group_user,1,1,1,1 diff --git a/views/res_partner_cooperative.xml b/views/res_partner_cooperative.xml index 2a6c1578842b4844a424fc29b66ce1192b8a091b..be1d4f8b14563a7e4df3ed86bb7540a2ecb311df 100644 --- a/views/res_partner_cooperative.xml +++ b/views/res_partner_cooperative.xml @@ -246,12 +246,11 @@ <field name="followup_delegate_id" widget="res_partner_many2one" attrs="{'required':[('project_status','in',('5_suivi'))]}"/> <field name="revision_person_id" widget="res_partner_many2one" readonly="True"/> <field name="parent_group_name"/> - <field name="category_id" string="Segmentation" widget="many2many_tags" options="{'color_field': 'color', 'no_create_edit': True}" - domain="['!',('parent_id', 'child_of', %(l10n_eu_nace.nace_root)d), ('child_ids', '=', False)]"/> + <field name="category_id" string="Segmentation" widget="many2many_tags" options="{'color_field': 'color', 'no_create_edit': True}"/> </group> <group string="Informations Activité"> - <field name="creation_origin" required="True"/> - <field name="creation_suborigin_id" attrs="{'invisible': [('creation_origin', '=', 'null')], 'required':[('creation_origin','!=','null')]}"/> + <field name="creation_origin_id" required="True"/> + <field name="creation_suborigin_id" attrs="{'required':[('creation_origin_id','!=',False)]}" domain="[('parent_id', '=', creation_origin_id)]"/> <field name="date_1st_sign" attrs="{'required':[('project_status','in',('4_adhesion', '5_suivi'))]}"/> <field name="registration_date" attrs="{'required':[('project_status','in',('4_adhesion', '5_suivi'))]}"/> <field name="social_object" attrs="{'required':[('project_status','in',('4_adhesion', '5_suivi'))]}"/> diff --git a/views/scop_config_views.xml b/views/scop_config_views.xml index 163d76af14544f01d41270144b893dc1f7997104..51119da039f3efa40d016182489bf9ac9c6d7fc2 100644 --- a/views/scop_config_views.xml +++ b/views/scop_config_views.xml @@ -36,33 +36,23 @@ </record> <!-- Creation Suborigin --> - <record id="view_res_partner_creation_suborigin_tree" model="ir.ui.view"> - <field name="name">res.partner.creation.suborigin.tree</field> - <field name="model">res.partner.creation.suborigin</field> + <record id="view_res_partner_creation_origin_tree" model="ir.ui.view"> + <field name="name">res.partner.creation.origin.tree</field> + <field name="model">res.partner.creation.origin</field> <field name="arch" type="xml"> - <tree string="Creation Sub-Origins"> + <tree string="Creation Origins" editable="bottom"> <field name="name"/> + <field name="parent_id"/> + <field name="id_riga"/> </tree> </field> </record> - <record id="view_res_partner_creation_suborigin_form" model="ir.ui.view"> - <field name="name">res.partner.creation.suborigin.form</field> - <field name="model">res.partner.creation.suborigin</field> - <field name="arch" type="xml"> - <form string="Creation Sub-Origin"> - <group name="main"> - <field name="name"/> - </group> - </form> - </field> - </record> - - <record id="action_view_res_partner_creation_suborigin_tree" model="ir.actions.act_window"> + <record id="action_view_res_partner_creation_origin_tree" model="ir.actions.act_window"> <field name="name">Creation Sub-Origins</field> - <field name="res_model">res.partner.creation.suborigin</field> - <field name="view_mode">tree,form</field> - <field name="help">Display and manage the list of Creation Sub-Origins.</field> + <field name="res_model">res.partner.creation.origin</field> + <field name="view_mode">tree</field> + <field name="help">Display and manage the list of Creation Origins.</field> </record> <!-- Organization Type --> @@ -270,9 +260,9 @@ parent="menu_scop" action="action_view_res_partner_certification_tree" sequence="10"/> - <menuitem id="l10n_fr_naf_ape.menu_ape_category_form" + <menuitem id="lefilament_naf.menu_naf_id" parent="menu_scop" - name="APE codes" + name="Codes NAF" sequence="20"/> <menuitem id="menu_res_partner_cooperative_form" parent="menu_scop" @@ -282,17 +272,17 @@ parent="menu_scop" action="action_view_res_partner_dissolution_reason_tree" sequence="40"/> + <menuitem id="menu_res_partner_creation_origin" + parent="menu_scop" + action="action_view_res_partner_creation_origin_tree" + sequence="50"/> <menuitem id="menu_res_partner_rgpd_origin" parent="menu_scop" action="action_view_res_partner_rgpd_origin_tree" - sequence="50"/> + sequence="60"/> <menuitem id="menu_res_partner_prescriber_canal" parent="menu_scop" action="action_view_res_partner_prescriber_canal_tree" - sequence="60"/> - <menuitem id="menu_res_partner_creation_suborigin" - parent="menu_scop" - action="action_view_res_partner_creation_suborigin_tree" sequence="70"/> <menuitem id="menu_res_partner_company_type" parent="menu_scop"