diff --git a/models/res_partner.py b/models/res_partner.py index 55d27896218da915c43d16916aee623f8b3a7beb..fb09f835ff88b1e251addf17b98b27a2afbd9e5e 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -525,6 +525,16 @@ class ScopPartner(models.Model): ) employee = fields.Boolean(string="Salarié", default=True) + has_mvt_mandate = fields.Boolean(string="Elu du mouvement", default=False) + + mvt_mandate_ids = fields.Many2many( + comodel_name="res.partner.mvt.mandate", + relation="res_partner_mvt_mandate_rel", + column1="partner_id", + column2="mvt_mandate_id", + string="Mandats mouvement", + ) + # Champs pour partenaires organization_type_id = fields.Many2one( "res.partner.organization.type", diff --git a/models/res_partner_lists.py b/models/res_partner_lists.py index ee63c0d499fff3c375d0f06bd1dc86de35c92ee6..10bb45d070faf6d95885b0478196007e4aa5ae00 100644 --- a/models/res_partner_lists.py +++ b/models/res_partner_lists.py @@ -240,3 +240,12 @@ class ResPartnerFiliere(models.Model): _order = "name" name = fields.Char("Filière") + + +class ResPartnerMvtMandate(models.Model): + _name = "res.partner.mvt.mandate" + _description = "Mandats du mouvement" + _rec_name = "name" + _order = "name" + + name = fields.Char("Mandat") diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv index 75846833129f366428a64b07695ef45ca91964f4..3bf87ac0cb49fbacb9c967eddcf490333b8c95dd 100644 --- a/security/ir.model.access.csv +++ b/security/ir.model.access.csv @@ -78,3 +78,5 @@ access_scop_status_wizard,access_scop_status_wizard,model_scop_status_wizard,bas access_res_partner_federation,access_res_partner_federation,model_res_partner_federation,base.group_user,1,0,0,0 admin_res_partner_federation,admin_res_partner_federation,model_res_partner_federation,cgscop_partner.group_cg_administrator,1,1,1,1 access_action_rse_group_user,access_action_rse_group_user,model_scop_action_rse,base.group_user,1,1,1,1 +access_res_partner_mvt_mandate,access_res_partner_mvt_mandate,model_res_partner_mvt_mandate,base.group_user,1,1,1,0 +admin_res_partner_mvt_mandate,admin_res_partner_mvt_mandate,model_res_partner_mvt_mandate,group_cg_administrator,1,1,1,1 diff --git a/views/res_partner.xml b/views/res_partner.xml index 546ef3f9f9ab2f3df55a60b2e5ec2df05d7f78ed..2f9f95f15b002067b63a48090e1e710466dbe24d 100644 --- a/views/res_partner.xml +++ b/views/res_partner.xml @@ -397,7 +397,15 @@ options='{"no_open": True, "no_create": True}' widget="many2many_tags" /> - + <br /> + <field name="has_mvt_mandate" widget="boolean_toggle"/> + <field + name="mvt_mandate_ids" + options='{"no_open": True, "no_create": True}' + attrs="{'required': [('has_mvt_mandate','=', True)], + 'invisible': [('has_mvt_mandate','=', False)]}" + widget="many2many_tags" + /> </group> </xpath> @@ -1804,6 +1812,26 @@ </field> </record> + <!-- + CG Scop elus du mouvement View Tree + --> + <record id="scop_elus_tree_view" model="ir.ui.view"> + <field name="name">scop elus tree view</field> + <field name="model">res.partner</field> + <field name="arch" type="xml"> + <tree string="Personnes" default_order="lastname"> + <field name="lastname" /> + <field name="firstname" /> + <field name="parent_id" /> + <field name="mvt_mandate_ids" widget="many2many_tags"/> + <field name="phone" /> + <field name="mobile" /> + <field name="email" /> + <field name="ur_id" /> + </tree> + </field> + </record> + <!-- CG Scop Partner View Tree --> @@ -1893,6 +1921,15 @@ widget="many2many_tags" options="{'color_field': 'color', 'no_create': True}" /> + <br /> + <field name="has_mvt_mandate" widget="boolean_toggle"/> + <field + name="mvt_mandate_ids" + options='{"no_open": True, "no_create": True}' + attrs="{'required': [('has_mvt_mandate','=', True)], + 'invisible': [('has_mvt_mandate','=', False)]}" + widget="many2many_tags" + /> </group> </group> <field name="subscription_ids"> @@ -2082,6 +2119,15 @@ widget="many2many_tags" options="{'color_field': 'color', 'no_create': True}" /> + <br /> + <field name="has_mvt_mandate" widget="boolean_toggle"/> + <field + name="mvt_mandate_ids" + options='{"no_open": True, "no_create": True}' + attrs="{'required': [('has_mvt_mandate','=', True)], + 'invisible': [('has_mvt_mandate','=', False)]}" + widget="many2many_tags" + /> </group> </group> <field @@ -2188,6 +2234,30 @@ /> </record> + <!-- + Action Elus du mouvement + --> + <record id="action_contact_mvt_mandate" model="ir.actions.act_window"> + <field name="name">Elus du mouvement</field> + <field name="type">ir.actions.act_window</field> + <field name="res_model">res.partner</field> + <field name="view_mode">tree,form</field> + <field name="search_view_id" ref="view_res_partner_filter_partners" /> + <field + name="domain" + eval="[('is_company', '=', False), ('type', '=', 'contact'),('has_mvt_mandate', '=', True)]" + /> + <field + name="context" + >{'search_default_my_ur': 1, 'default_is_company': False, 'default_company_type': 'person', 'default_has_mvt_mandate': True}</field> + <field + name="view_ids" + eval="[(5, 0, 0), + (0, 0, {'view_mode': 'tree', 'view_id': ref('scop_elus_tree_view')}), + (0, 0, {'view_mode': 'form', 'view_id': ref('base.view_partner_form')})]" + /> + </record> + <!-- Action Partenaires @@ -2234,11 +2304,26 @@ <menuitem id="contacts.res_partner_menu_contacts" name="Personnes" - action="action_not_companies_only" parent="contacts.menu_contacts" sequence="30" /> + <menuitem + id="contacts.res_partner_menu_allcontacts" + name="Toutes les personnes" + action="action_not_companies_only" + parent="contacts.res_partner_menu_contacts" + sequence="300" + /> + + <menuitem + id="contacts.res_partner_menu_elus" + name="Elus du mouvement" + action="action_contact_mvt_mandate" + parent="contacts.res_partner_menu_contacts" + sequence="301" + /> + <menuitem id="partner_multi_relation.menu_res_partner_relation_all" sequence="32" diff --git a/views/scop_config_views.xml b/views/scop_config_views.xml index 70f2e09f343f99054adcdceec10a218e29a7ae16..52ca2d8c22f36ce7a64ac6ad08971aacbf4c1fda 100644 --- a/views/scop_config_views.xml +++ b/views/scop_config_views.xml @@ -362,6 +362,24 @@ <field name="help">Affiche et gère la liste des filières.</field> </record> + <!-- Mandats du mouvement --> + <record id="view_res_partner_mvt_mandate_tree" model="ir.ui.view"> + <field name="name">res.partner.mvt.mandate.tree</field> + <field name="model">res.partner.mvt.mandate</field> + <field name="arch" type="xml"> + <tree string="Mandats du mouvement" editable="top"> + <field name="name" /> + </tree> + </field> + </record> + + <record model="ir.actions.act_window" id="mvt_mandate_act_window"> + <field name="name">Mandats du mouvement</field> + <field name="res_model">res.partner.mvt.mandate</field> + <field name="view_mode">tree</field> + <field name="help">Affiche et gère la liste des mandats du mouvement.</field> + </record> + <!-- Union Régionales --> <record model="ir.ui.view" id="union_regionale_tree_view"> <field name="name">union.regionale.tree</field> @@ -607,6 +625,13 @@ name="Codes NAF" sequence="20" /> + <menuitem + id="menu_res_partner_mvt_mandate" + parent="menu_scop" + action="mvt_mandate_act_window" + name="Mandats du mouvement" + sequence="21" + /> <menuitem id="menu_res_partner_federation" parent="menu_scop"