diff --git a/models/res_partner.py b/models/res_partner.py index 55872823ac4122527ac756405acc56f87834acd8..215be924ccc5826dd4283b2b3a0e30eab51f71a8 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -78,7 +78,10 @@ class ScopPartner(models.Model): director_ids = fields.One2many( 'res.partner', 'parent_id', string='Contacts Dirigeants', - domain=[('mandate_id', '!=', False)]) + domain=[('active', '=', True), ('mandate_id', '!=', False)]) + child_ids = fields.One2many( + 'res.partner', 'parent_id', string='Autres Contacts', + domain=[('active', '=', True), ('mandate_id', '=', False)]) # Infos générales / Suivi UR ur_id = fields.Many2one( @@ -91,12 +94,12 @@ class ScopPartner(models.Model): creation_delegate_id = fields.Many2one( 'res.partner', string='Délégué de création', - domain=[('user_ids', '>', 0)], + domain=[('active', '=', True), ('user_ids', '>', 0)], on_delete='restrict') followup_delegate_id = fields.Many2one( 'res.partner', string='Délégué de suivi', - domain=[('user_ids', '>', 0)], + domain=[('active', '=', True), ('user_ids', '>', 0)], on_delete='restrict', track_visibility='onchange') @@ -155,7 +158,7 @@ class ScopPartner(models.Model): incubator_id = fields.Many2one( 'res.partner', string='Incubateur', - domain=[('is_company', '=', True), + domain=[('active', '=', True), ('is_company', '=', True), ('organization_subtype_id.name', '=', 'Incubateur')], on_delete='restrict') prescriber_canal_id = fields.Many2one( @@ -168,19 +171,19 @@ class ScopPartner(models.Model): bank_id = fields.Many2one( 'res.partner', string='Banque principale', - domain=[('is_company', '=', True), + domain=[('active', '=', True), ('is_company', '=', True), ('organization_subtype_id.name', '=', 'Banque')], on_delete='restrict') bank2_id = fields.Many2one( 'res.partner', string='Banque secondaire', - domain=[('is_company', '=', True), + domain=[('active', '=', True), ('is_company', '=', True), ('organization_subtype_id.name', '=', 'Banque')], on_delete='restrict') accountant_id = fields.Many2one( 'res.partner', string='Expert-Comptable', - domain=[('is_company', '=', True), + domain=[('active', '=', True), ('is_company', '=', True), '|', ('organization_subtype_id.name', '=', 'Expert-Comptable'), ('organization_subtype_id.name', '=', 'Organisme réviseur, ' + 'Expert-comptable / Commissaire au compte')], @@ -188,12 +191,12 @@ class ScopPartner(models.Model): accountant_person_id = fields.Many2one( 'res.partner', string='Expert-Comptable (personne)', - domain=[('is_company', '=', False)], + domain=[('active', '=', True), ('is_company', '=', False)], on_delete='restrict') auditor_id = fields.Many2one( 'res.partner', string='Commissaire aux Comptes', - domain=[('is_company', '=', True), + domain=[('active', '=', True), ('is_company', '=', True), '|', ('organization_subtype_id.name', '=', 'Commissaire au compte'), ('organization_subtype_id.name', '=', 'Organisme réviseur, ' + @@ -202,7 +205,7 @@ class ScopPartner(models.Model): auditor_person_id = fields.Many2one( 'res.partner', string='Commissaire aux Comptes (personne)', - domain=[('is_company', '=', False)], + domain=[('active', '=', True), ('is_company', '=', False)], on_delete='restrict') # Périodes juridiques @@ -227,7 +230,7 @@ class ScopPartner(models.Model): direccte_id = fields.Many2one( 'res.partner', string='DIRECCTE rattachée', - domain=[('is_company', '=', True), + domain=[('active', '=', True), ('is_company', '=', True), ('organization_subtype_id', '=', 'DIRECCTE')], on_delete='restrict') last_update_status = fields.Date('Dernière mise à jour des statuts') @@ -254,7 +257,7 @@ class ScopPartner(models.Model): revision_company_id = fields.Many2one( 'res.partner', string='Organisme de révision', - domain=[('is_company', '=', True), + domain=[('active', '=', True), ('is_company', '=', True), '|', ('organization_subtype_id.name', '=', 'Organisme réviseur'), ('organization_subtype_id.name', '=', 'Organisme réviseur, ' + @@ -264,7 +267,7 @@ class ScopPartner(models.Model): revision_backup_company_id = fields.Many2one( 'res.partner', string='Organisme de révision suppléant', - domain=[('is_company', '=', True), + domain=[('active', '=', True), ('is_company', '=', True), '|', ('organization_subtype_id.name', '=', 'Organisme réviseur'), ('organization_subtype_id.name', '=', 'Organisme réviseur, ' + @@ -273,12 +276,12 @@ class ScopPartner(models.Model): revision_person_id = fields.Many2one( 'res.partner', string='Réviseur', - domain=[('is_company', '=', False)], + domain=[('active', '=', True), ('is_company', '=', False)], on_delete='restrict', track_visibility='onchange') revision_certified_person_id = fields.Many2one( 'res.partner', string='Réviseur agréé', - domain=[('is_company', '=', False)], + domain=[('active', '=', True), ('is_company', '=', False)], on_delete='restrict') revision_person_assign_date = fields.Date("Date de nomination du réviseur", track_visibility='onchange') diff --git a/views/res_partner_cooperative.xml b/views/res_partner_cooperative.xml index 91d802d3988215a194711524b2cfeda9f0ed6aa5..9bc9574da332f47afb13876153eae39652310c1b 100644 --- a/views/res_partner_cooperative.xml +++ b/views/res_partner_cooperative.xml @@ -110,6 +110,15 @@ <h3> <field options="{'no_open': True}" name="partner_company_type_id" attrs="{'readonly': [('write_date', '!=', False), ('project_status', '=', '6_suivi')], 'required':[('project_status','in',('4_adhesion', '6_suivi'))]}" placeholder="Statut Juridique"/> </h3> + <span> </span> + <h3> + <span class="o_field_header o_field_widget o_readonly_modifier" attrs="{'invisible':[('dissolution_reason_id','=', False)]}">Décédée le + <field name="dissolution_date" readonly="1" attrs="{'invisible':[('dissolution_reason_id','=', False)]}"/></span> + </h3> + <h3> + <span class="o_field_header o_field_widget o_readonly_modifier" attrs="{'invisible':[('dissolution_reason_id','=', False)]}">Raison : + <field options="{'no_open': True}" name="dissolution_reason_id" readonly="1" attrs="{'invisible':[('dissolution_reason_id','=', False)]}"/></span> + </h3> </div> <div class="o_row d-flex "> <h3> @@ -121,7 +130,7 @@ <h3> <span name="cae" class="o_field_widget o_readonly_modifier o_field_header oe_read_only" attrs="{'invisible':[('cae','=',False)]}">CAE</span> <label for='cae' string="CAE" class="oe_edit_only"/> - <field name="cae" class="oe_edit_only" attrs="{'readonly': [('write_date', '!=', False), ('project_status', '=', '6_suivi')], 'required':[('project_status','in',('4_adhesion', '6_suivi'))]}" /> + <field name="cae" class="oe_edit_only" attrs="{'readonly': [('write_date', '!=', False), ('project_status', '=', '6_suivi')]}" /> </h3> <field name="supplier" invisible="True"/> <field name="customer" invisible="True"/> @@ -134,16 +143,16 @@ <field name="sigle"/> <label for='street' string="Adresse Administrative"/> <div class="o_address_format"> - <field name="street" placeholder="Rue..." class="o_address_street" attrs="{'readonly': [('write_date', '!=', False), ('project_status', '=', '6_suivi')]}"/> + <field name="street" placeholder="Rue..." class="o_address_street" attrs="{'readonly': [('write_date', '!=', False), ('project_status', '=', '6_suivi')], 'required':[('project_status','in',('4_adhesion', '5_cg', '6_suivi'))]}"/> <field name="street2" placeholder="Rue 2..." class="o_address_street" attrs="{'readonly': [('write_date', '!=', False), ('project_status', '=', '6_suivi')]}"/> <field name="street3" placeholder="Rue 3..." class="o_address_street" attrs="{'readonly': [('write_date', '!=', False), ('project_status', '=', '6_suivi')]}"/> <field name="zip_id" options="{'create_name_field': 'city', 'no_open': True, 'no_create': True}" placeholder="CP / Ville autocomplétion..." class="oe_edit_only" attrs="{'readonly': [('write_date', '!=', False), ('project_status', '=', '6_suivi')]}"/> - <field name="zip" placeholder="CP..." class="o_address_city" attrs="{'readonly': [('write_date', '!=', False), ('project_status', '=', '6_suivi')]}"/> + <field name="zip" placeholder="CP..." class="o_address_city" attrs="{'readonly': [('write_date', '!=', False), ('project_status', '=', '6_suivi')], 'required':[('project_status','in',('4_adhesion', '5_cg', '6_suivi'))]}"/> <field name="city" placeholder="Ville..." class="o_address_city" - attrs="{'readonly': [('write_date', '!=', False), ('project_status', '=', '6_suivi')]}" modifiers="{'readonly':[['project_status', '=', '6_suivi']]}"/> + attrs="{'readonly': [('write_date', '!=', False), ('project_status', '=', '6_suivi')]}" modifiers="{'readonly':[['project_status', '=', '6_suivi']], 'required':[('project_status','in',('4_adhesion', '5_cg', '6_suivi'))]}"/> <field name="city_id" invisible="1"/> <field name="cedex" placeholder="Cedex" class="o_address_city" attrs="{'readonly': [('write_date', '!=', False), ('project_status', '=', '6_suivi')]}" modifiers="{'readonly':[['project_status', '=', '6_suivi']]}"/> @@ -176,11 +185,41 @@ <div > <field class="oe_edit_only" name="twitter" widget="url"/> </div> + </group> + <group string="Suivi UR"> + <field name="ur_id" required="True" options="{'no_create': True}"/> + <field name="creation_delegate_id" widget="res_partner_many2one" + attrs="{'required':[('project_status','in',('3_accompagnement','4_adhesion', '5_cg', '6_suivi'))]}" options="{'no_create': True}"/> + <field name="followup_delegate_id" widget="res_partner_many2one" options="{'no_create': True}"/> + <field name="revision_person_id" widget="res_partner_many2one" readonly="True" options="{'no_create': True}"/> + <field name="category_id" string="Segmentation" widget="many2many_tags" options="{'color_field': 'color', 'no_create_edit': True}" domain="[('ur_id', '=', ur_id)]"/> + </group> + <group string="Informations Activité"> + <field name="creation_origin_id" required="True" options="{'no_create': True}"/> + <field name="creation_suborigin_id" attrs="{'required':[('creation_origin_id','!=',False)]}" domain="[('parent_id', '=', creation_origin_id), ('child_ids', '=', False)]" options="{'no_create': True}"/> + <field name="date_1st_sign" attrs="{'required':[('project_status','in',('4_adhesion', '5_cg', '6_suivi'))]}"/> + <field name="registration_date" attrs="{'required':[('project_status','in',('4_adhesion', '5_cg', '6_suivi'))]}"/> + <field name="social_object" attrs="{'required':[('project_status','in',('2_pre-diagnostic', '3_accompagnement','4_adhesion', '5_cg', '6_suivi'))]}"/> + <field name="naf_id" attrs="{'readonly': [('write_date', '!=', False), ('project_status', '=', '6_suivi')], 'required':[('project_status','in',('4_adhesion', '5_cg', '6_suivi'))]}" context="{'partner_category_display': 'short'}" options="{'no_create': True}"/> + <field name="certification_ids" widget="many2many_tags" options="{'color_field': 'color', 'no_create_edit': True}"/> + <field name="siret" attrs="{'readonly': [('write_date', '!=', False), ('project_status', '=', '6_suivi')], 'required':[('project_status','in',('4_adhesion', '5_cg', '6_suivi'))]}"/> + <field name="capital" attrs="{'required':[('project_status','in',('4_adhesion', '5_cg', '6_suivi'))]}" widget="monetary"/> + <field name="first_closeout" attrs="{'required':[('project_status','in',('4_adhesion', '5_cg', '6_suivi'))]}"/> + <field name="closeout_month" attrs="{'required':[('project_status','in',('4_adhesion', '5_cg', '6_suivi'))]}"/> + <field name="is_seed_scop" attrs="{'required':[('project_status','in',('4_adhesion', '5_cg', '6_suivi'))]}"/> + <field name="seed_end" attrs="{'invisible': [('is_seed_scop', '!=', True)], 'required':[('project_status','in',('4_adhesion', '5_cg', '6_suivi')),('is_seed_scop', '=', True)]}"/> + <field name="is_incubated" required="True"/> + <field name="incubator_id" widget="res_partner_many2one" attrs="{'invisible': [('is_incubated', '!=', True)]}" options="{'no_create': True}"/> + <field name="prescriber_canal_id" widget="res_partner_many2one" options="{'no_create': True}"/> + </group> + </group> + <notebook colspan="4"> + <page name="contacts" string="Contacts & Addresses"> + <label for="director_ids" string="Dirigeants"/> <field name="director_ids" mode="kanban" context="{'default_parent_id': active_id, 'default_street': street, 'default_street2': street2, 'default_city': city, 'default_cedex': cedex, 'default_state_id': state_id, 'default_zip': zip, 'default_zip_id': zip_id, 'default_country_id': country_id, 'default_supplier': supplier, 'default_customer': customer, 'default_lang': lang, 'default_user_id': user_id, 'default_type': 'contact'}"> <kanban> <field name="id"/> - <field name="color"/> <field name="name"/> <field name="title"/> <field name="type"/> @@ -208,10 +247,10 @@ <field name="supplier"/> <templates> <t t-name="kanban-box"> - <t t-set="color" t-value="kanban_color(record.color.raw_value)"/> - <div t-att-class="color + (record.title.raw_value == 1 ? ' oe_kanban_color_alert' : '') + ' oe_kanban_global_click'"> + <div t-att-class="oe_kanban_global_click"> <div class="oe_kanban_details"> <field name="name"/> + <div t-if="record.mandate_id.raw_value"><field name="mandate_id"/></div> <div t-if="record.function.raw_value"><field name="function"/></div> <div t-if="record.email.raw_value"><field name="email" widget="email"/></div> <div t-if="record.phone.raw_value">Téléphone: <field name="phone" widget="phone"/></div> @@ -242,7 +281,7 @@ <field name="firstname" string="Contact Name" attrs="{'required' : [('type', '=', 'contact')]}"/> <field name="title" placeholder="Madame" attrs="{'invisible': [('type','!=', 'contact')]}"/> - <field name="mandate_id" options="{'no_create': True}" attrs="{'invisible': [('type','!=', 'contact')]}"/> + <field name="mandate_id" options="{'no_create': True}" attrs="{'invisible': [('type','!=', 'contact')]}" required="1"/> <field name="function" placeholder="Responsable des ventes" attrs="{'invisible': [('type','!=', 'contact')]}"/> <field name="email"/> @@ -259,48 +298,17 @@ </sheet> </form> </field> - </group> - <group string="Suivi UR"> - <field name="ur_id" required="True" options="{'no_create': True}"/> - <field name="creation_delegate_id" widget="res_partner_many2one" - attrs="{'required':[('project_status','in',('3_accompagnement','4_adhesion', '6_suivi'))]}" options="{'no_create': True}"/> - <field name="followup_delegate_id" widget="res_partner_many2one" options="{'no_create': True}"/> - <field name="revision_person_id" widget="res_partner_many2one" readonly="True" options="{'no_create': True}"/> - <field name="category_id" string="Segmentation" widget="many2many_tags" options="{'color_field': 'color', 'no_create_edit': True}" domain="[('ur_id', '=', ur_id)]"/> - </group> - <group string="Informations Activité"> - <field name="creation_origin_id" required="True" options="{'no_create': True}"/> - <field name="creation_suborigin_id" attrs="{'required':[('creation_origin_id','!=',False)]}" domain="[('parent_id', '=', creation_origin_id), ('child_ids', '=', False)]" options="{'no_create': True}"/> - <field name="date_1st_sign" attrs="{'required':[('project_status','in',('4_adhesion', '6_suivi'))]}"/> - <field name="registration_date" attrs="{'required':[('project_status','in',('4_adhesion', '6_suivi'))]}"/> - <field name="social_object" attrs="{'required':[('project_status','in',('2_pre-diagnostic', '3_accompagnement','4_adhesion', '6_suivi'))]}"/> - <field name="naf_id" attrs="{'readonly': [('write_date', '!=', False), ('project_status', '=', '6_suivi')], 'required':[('project_status','in',('4_adhesion', '6_suivi'))]}" context="{'partner_category_display': 'short'}" options="{'no_create': True}"/> - <field name="certification_ids" widget="many2many_tags" options="{'color_field': 'color', 'no_create_edit': True}"/> - <field name="siret" attrs="{'readonly': [('write_date', '!=', False), ('project_status', '=', '6_suivi')], 'required':[('project_status','in',('4_adhesion', '6_suivi'))]}"/> - <field name="capital" attrs="{'required':[('project_status','in',('4_adhesion', '6_suivi'))]}"/> - <field name="first_closeout" attrs="{'required':[('project_status','in',('4_adhesion', '6_suivi'))]}"/> - <field name="closeout_month" attrs="{'required':[('project_status','in',('4_adhesion', '6_suivi'))]}"/> - <field name="is_seed_scop" attrs="{'required':[('project_status','in',('4_adhesion', '6_suivi'))]}"/> - <field name="seed_end" attrs="{'invisible': [('is_seed_scop', '!=', True)], 'required':[('project_status','in',('4_adhesion', '6_suivi')),('is_seed_scop', '=', True)]}"/> - <field name="is_incubated" required="True"/> - <field name="incubator_id" widget="res_partner_many2one" attrs="{'invisible': [('is_incubated', '!=', True)]}" options="{'no_create': True}"/> - <field name="prescriber_canal_id" widget="res_partner_many2one" options="{'no_create': True}"/> - </group> - </group> - <notebook colspan="4"> - <page name="contacts" string="Contacts & Addresses"> + <label for="child_ids" string="Autres Contacts"/> <field name="child_ids" mode="kanban" context="{'default_parent_id': active_id, 'default_street': street, 'default_street2': street2, 'default_city': city, 'default_cedex': cedex, 'default_state_id': state_id, 'default_zip': zip, 'default_country_id': country_id, 'default_supplier': supplier, 'default_customer': customer, 'default_lang': lang, 'default_user_id': user_id}"> <kanban> <field name="id"/> - <field name="color"/> <field name="name"/> <field name="title"/> <field name="type"/> <field name="email"/> <field name="parent_id"/> <field name="is_company"/> - <field name="mandate_id"/> <field name="function"/> <field name="phone"/> <field name="street"/> @@ -320,19 +328,7 @@ <field name="supplier"/> <templates> <t t-name="kanban-box"> - <t t-set="color" t-value="kanban_color(record.color.raw_value)"/> - <div t-att-class="color + (record.title.raw_value == 1 ? ' oe_kanban_color_alert' : '') + ' oe_kanban_global_click'"> - <div class="o_kanban_image"> - <img alt="" t-if="record.image_small.raw_value" t-att-src="kanban_image('res.partner', 'image_small', record.id.raw_value)"/> - <t t-if="!record.image_small.raw_value"> - <img alt="Delivery" t-if="record.type.raw_value === 'delivery'" t-att-src='_s + "/base/static/img/truck.png"'/> - <img alt="Invoice" t-if="record.type.raw_value === 'invoice'" t-att-src='_s + "/base/static/img/money.png"'/> - <t t-if="record.type.raw_value !== 'invoice' && record.type.raw_value !== 'delivery'"> - <img alt="Logo" t-if="record.is_company.raw_value === true" t-att-src='_s + "/base/static/img/company_image.png"'/> - <img alt="Avatar" t-if="record.is_company.raw_value === false" t-att-src='_s + "/base/static/img/avatar.png"'/> - </t> - </t> - </div> + <div t-att-class="oe_kanban_global_click"> <div class="oe_kanban_details"> <field name="name"/> <div t-if="record.function.raw_value"><field name="function"/></div> @@ -390,7 +386,6 @@ <field name="firstname" string="Contact Name" attrs="{'required' : [('type', '=', 'contact')]}"/> <field name="title" placeholder="e.g. Mr." attrs="{'invisible': [('type','!=', 'contact')]}"/> - <field name="mandate_id" options='{"no_create": True}' attrs="{'invisible': [('type','!=', 'contact')]}"/> <field name="function" placeholder="e.g. Directeur des Ventes" attrs="{'invisible': [('type','!=', 'contact')]}"/> <field name="email"/> @@ -408,13 +403,6 @@ </form> </field> </page> - <page name="juridical_info" string="Informations Juridiques" attrs="{'invisible': [('project_status', '!=', '6_suivi')]}"> - <group> - <field name="siren" readonly="True"/> - <field name="dissolution_date"/> - <field name="dissolution_reason_id" options="{'no_create': True}"/> - </group> - </page> <page name="partners" string="Partenaires"> <group> <field name="bank_id" widget="res_partner_many2one" options="{'no_create': True}"/> @@ -425,16 +413,6 @@ <field name="auditor_person_id" widget="res_partner_many2one" attrs="{'invisible': [('auditor_id', '=', False)]}" domain="[('parent_id', '=', auditor_id), ('is_company', '=', False)]" options="{'no_create': True}"/> </group> </page> - <!--page name='scop_ministry_list' string="Listes Ministère"> - <group> - <field name="direccte_id" widget="res_partner_many2one" options="{'no_create': True}"/> - <field name="last_update_status"/> - <field name="ministry_list_ids" mode="tree"> - <tree group_create="False" group_edit="False" group_delete="False"/> - <form/> - </field> - </group> - </page--> <page name='scop_revision' string="Révisions" attrs="{'invisible': [('project_status', '!=', '6_suivi')]}"> <group string="Informations de révision"> <group> @@ -453,12 +431,9 @@ <field name="revision_next_date"/> </group> </group> - <field name="revision_ids" mode="tree"> - <tree/> - <form/> - </field> + <field name="revision_ids" widget="one2many"/> </page> - <page name="scop_periods" string="Historique des périodes" attrs="{'invisible': [('project_status', '!=', '6_suivi')]}"> + <page name="scop_periods" string="Historique" attrs="{'invisible': [('project_status', '!=', '6_suivi')]}"> <field name="scop_period_ids" mode="tree" context="{'default_partner_id': active_id, 'default_name': name, 'default_cooperative_form_id': cooperative_form_id, 'default_partner_company_type_id': partner_company_type_id, 'default_siret': siret, 'default_street': street, 'default_street2': street2, 'default_city': city, 'default_cedex': cedex, 'default_state_id': state_id, 'default_zip': zip, 'default_zip_id': zip_id, 'default_country_id': country_id, 'default_naf_id': naf_id, 'default_cae': cae}"> <tree string="Périodes" decoration-muted="end_reason!=False" create="false" edit="false" delete="false"> @@ -536,7 +511,7 @@ <form/> </field> </page> - <page name='scop_questionnaire' string="Questionnaires" attrs="{'invisible': [('project_status', '!=', '6_suivi')]}"> + <page name='scop_questionnaire' string="Listes Ministère" attrs="{'invisible': [('project_status', '!=', '6_suivi')]}"> <field name="questionnaire_ids" mode="tree"> <tree group_create="False" group_edit="False" group_delete="False"/> <form/> @@ -548,12 +523,6 @@ <form/> </field> </page> - <page name='scop_legal_event' string="Evènements Juridiques" attrs="{'invisible': [('project_status', '!=', '6_suivi')]}"> - <field name="legal_event_ids" mode="tree"> - <tree group_create="False" group_edit="False" group_delete="False"/> - <form/> - </field> - </page> <page name='scop_financial_tools' string="Outils Financiers" attrs="{'invisible': [('project_status', '!=', '6_suivi')]}"> <field name="financial_tools_ids" mode="tree"> <tree group_create="False" group_edit="False" group_delete="False"/>