diff --git a/models/__init__.py b/models/__init__.py index db6db18951ffa3101437d99a50bdf3a7e1ac439a..379f5d7df009beba28bde6093a2d176c60aaca96 100644 --- a/models/__init__.py +++ b/models/__init__.py @@ -9,6 +9,7 @@ from . import scop_legal_event from . import scop_liasse_fiscale from . import scop_membership from . import scop_ministry_list +from . import scop_period from . import scop_questionnaire from . import scop_revision from . import scop_staff diff --git a/models/res_partner.py b/models/res_partner.py index ff4c2b074ee74cf43102df3e2cf0bdfc2147760d..bbfdc477fe7a328a86d0e85dddb0a116b8cbf8ae 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -18,35 +18,8 @@ class ScopPartner(models.Model): # A garder ? unique_id_si_ur = fields.Char("Identifiant unique SI UR") unique_id_si_cg = fields.Char("Identifiant unique SI CG") - company_id = fields.Many2one( - 'res.company', - string='Union Régionale', - index=True, - on_delete='restrict', - default=_default_company) - siren = fields.Char(string='SIREN', size=9) - registration_date = fields.Date( - string="Date d'immatriculation RCS") - dissolution_date = fields.Date('Date de Décès') - dissolution_reason_id = fields.Many2one( - 'res.partner.dissolution.reason', - string="Motif Décés", - on_delete='restrict') - social_object = fields.Char('Objet Social') - admin_email = fields.Char('E-mail administratif') - - # Informations coopératives - creation_origin = fields.Selection( - [('null', 'Ex-nihilo'), - ('transformation', 'Transformation'), - ('transmission', 'Transmission'), - ('takeover', 'reprise')], - string='Origine création en coop') - creation_suborigin_id = fields.Many2one( - 'res.partner.creation.suborigin', - string="Sous-Origine création en coop", - on_delete='restrict') + # Informations Bandeau project_status = fields.Selection( [('1_information', "Phase d'information"), ('2_pre-diagnostic', 'Phase de pré-diagnostic'), @@ -56,6 +29,38 @@ class ScopPartner(models.Model): ('6_abandonne', 'Projet abandonné')], track_visibility='onchange', string='Statut projet') + cooperative_form_id = fields.Many2one( + 'res.partner.cooperative.form', + string="Cooperative form", + on_delete='restrict') + partner_company_type_id = fields.Many2one( + comodel_name='res.partner.company.type', + string='Legal Form', + on_delete='restrict') + membership_status = fields.Selection( + [('member', 'Adhérent'), + ('not_member', 'Non Adhérent'), + ('out', 'Radié')], + string="Statuts d'adhésion") + member_number = fields.Char("No adhérent") + cae = fields.Boolean("CAE") + + # Infos générales / Contact + admin_email = fields.Char('E-mail administratif') + facebook = fields.Char("Facebook") + linkedin = fields.Char("LinkedIn") + twitter = fields.Char("Twitter") + director_ids = fields.One2many( + 'res.partner', 'parent_id', + string='Contacts Dirigeants') + + # Infos générales / Suivi UR + company_id = fields.Many2one( + 'res.company', + string='Union Régionale', + index=True, + on_delete='restrict', + default=_default_company) creation_delegate_id = fields.Many2one( 'res.partner', string='Délégué de création', @@ -66,47 +71,56 @@ class ScopPartner(models.Model): string='Délégué de suivi', domain=[('user_ids', '>', 0)], on_delete='restrict') - bank_id = fields.Many2one( - 'res.partner', - string='Banque principale', - domain=[('is_company', '=', True)], - on_delete='restrict') - bank2_id = fields.Many2one( - 'res.partner', - string='Banque secondaire', - domain=[('is_company', '=', True)], - on_delete='restrict') - direccte_id = fields.Many2one( - 'res.partner', - string='DIRECCTE rattachée', - domain=[('is_company', '=', True)], + 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_suborigin_id = fields.Many2one( + 'res.partner.creation.suborigin', + string="Sous-Origine création en coop", on_delete='restrict') date_1st_sign = fields.Date( 'Date 1er signature coop') - last_update_status = fields.Date('Dernière mise à jour des statuts') - auditor_id = fields.Many2one( - 'res.partner', - string='Commissaire aux Comptes', - domain=[('is_company', '=', True)], - on_delete='restrict') - accountant_id = fields.Many2one( - 'res.partner', - string='Expert-Comptable', - domain=[('is_company', '=', True)], + registration_date = fields.Date( + string="Date d'immatriculation RCS") + social_object = fields.Char('Objet Social') + ape_id = fields.Many2one( + 'res.partner.category', + string='APE', + help="If the partner is a French company, enter its official " + "main activity in this field. The APE is chosen among the " + "NAF nomenclature.", on_delete='restrict') + industry_id = fields.Many2one('res.partner.industry', 'Industry', + on_delete='restrict') + certification_ids = fields.Many2many( + comodel_name='res.partner.certification', + string='Agrément', on_delete='restrict') + siret = fields.Char(string='SIRET', size=14) + first_closeout = fields.Date( + 'Date clôture 1er bilan en coopérative') + closeout_month = fields.Selection( + [(1, 'Janvier'), + (2, 'Février'), + (3, 'Mars'), + (4, 'Avril'), + (5, 'Mai'), + (6, 'Juin'), + (7, 'Juillet'), + (8, 'Août'), + (9, 'Septembre'), + (10, 'Octobre'), + (11, 'Novembre'), + (12, 'Décembre')], + string='Mois clôture exercices', default=12) 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))) - auditor_person_id = fields.Many2one( - 'res.partner', - string='Commissaire aux Comptes (personne)', - domain=[('is_company', '=', False)], - on_delete='restrict') - accountant_person_id = fields.Many2one( - 'res.partner', - string='Expert-Comptable (personne)', - domain=[('is_company', '=', False)], - on_delete='restrict') is_incubated = fields.Boolean("Est incubé") incubator_id = fields.Many2one( 'res.partner', @@ -118,117 +132,56 @@ class ScopPartner(models.Model): string='Canal de Prescription', on_delete='restrict') - # Informations de révision - revision_contract = fields.Date("Date du contrat de révision") - revision_company_id = fields.Many2one( + # Infos juridiques + siren = fields.Char(string='SIREN', size=9) + dissolution_date = fields.Date('Date de Décès') + dissolution_reason_id = fields.Many2one( + 'res.partner.dissolution.reason', + string="Motif Décés", + on_delete='restrict') + + # Partenaires + bank_id = fields.Many2one( 'res.partner', - string='Organisme de révision', + string='Banque principale', domain=[('is_company', '=', True)], on_delete='restrict') - revision_backup_company_id = fields.Many2one( + bank2_id = fields.Many2one( 'res.partner', - string='Organisme de révision suppléant', + string='Banque secondaire', domain=[('is_company', '=', True)], on_delete='restrict') - revision_person_id = fields.Many2one( + accountant_id = fields.Many2one( 'res.partner', - string='Réviseur agréé', - domain=[('is_company', '=', False)], + string='Expert-Comptable', + domain=[('is_company', '=', True)], on_delete='restrict') - revision_certified_person_id = fields.Many2one( + accountant_person_id = fields.Many2one( 'res.partner', - string='Réviseur', + string='Expert-Comptable (personne)', domain=[('is_company', '=', False)], on_delete='restrict') - revision_person_assign_date = fields.Date("Date de nomination du réviseur") - revision_type = fields.Selection( - [('1y', "Annuelle"), - ('5y', 'Quinquennale'), - ('5ys', "Quinquennale séquencée")], - string='Périodicité de la révision') - revision_format_id = fields.Many2one( - 'scop.revision.format', - string='Format de révision', + auditor_id = fields.Many2one( + 'res.partner', + string='Commissaire aux Comptes', + domain=[('is_company', '=', True)], + on_delete='restrict') + auditor_person_id = fields.Many2one( + 'res.partner', + string='Commissaire aux Comptes (personne)', + domain=[('is_company', '=', False)], on_delete='restrict') - revision_staff_id = fields.Integer(string='Effectif révision') - revision_last_date = fields.Date("Dernier exercice révisé") - revision_next_date = fields.Date("Prochain exercice révisable") - # Informations fiscales/financières - first_closeout = fields.Date( - 'Date clôture 1er bilan en coopérative') - closeout_month = fields.Selection( - [(1, 'Janvier'), - (2, 'Février'), - (3, 'Mars'), - (4, 'Avril'), - (5, 'Mai'), - (6, 'Juin'), - (7, 'Juillet'), - (8, 'Août'), - (9, 'Septembre'), - (10, 'Octobre'), - (11, 'Novembre'), - (12, 'Décembre')], - string='Mois clôture exercices', default=12) + # Contacts / Adresses + is_main_location = fields.Boolean("Est l'établissement principal") - # Infos suivies - # Infos organismes - cooperative_form_id = fields.Many2one( - 'res.partner.cooperative.form', - string="Cooperative form", - track_visibility='onchange', - on_delete='restrict') - cae = fields.Boolean("CAE", track_visibility='onchange') - siret = fields.Char(string='SIRET', size=14, track_visibility='onchange') - name = fields.Char(index=True, track_visibility='always') - street = fields.Char(track_visibility='onchange') - street2 = fields.Char(track_visibility='onchange') - street3 = fields.Char(track_visibility='onchange') - zip_id = fields.Many2one('res.city.zip', 'ZIP Location', - track_visibility='onchange') - city = fields.Char(track_visibility='onchange') - city_id = fields.Many2one('res.city', string='City of Address', - track_visibility='onchange') - state_id = fields.Many2one( - "res.country.state", - string='State', - ondelete='restrict', - domain="[('country_id', '=?', country_id)]", - track_visibility='onchange') - country_id = fields.Many2one( - 'res.country', string='Country', ondelete='restrict', - track_visibility='onchange') - is_main_location = fields.Boolean("Est l'établissement principal", - track_visibility='onchange') - parent_group_name = fields.Char('Nom du groupe parent', - track_visibility='onchange') - - # Informations juridiques - partner_company_type_id = fields.Many2one( - comodel_name='res.partner.company.type', - string='Legal Form', - track_visibility='onchange', - on_delete='restrict' - ) - ape_id = fields.Many2one( - 'res.partner.category', - string='APE', - help="If the partner is a French company, enter its official " - "main activity in this field. The APE is chosen among the " - "NAF nomenclature.", - track_visibility='onchange', - on_delete='restrict' - ) - certification_ids = fields.Many2many( - comodel_name='res.partner.certification', - string='Agrement', track_visibility='onchange', - on_delete='restrict') - industry_id = fields.Many2one('res.partner.industry', 'Industry', - track_visibility='onchange', - on_delete='restrict') - # Autres Informations + # Périodes juridiques + scop_period_ids = fields.One2many( + comodel_name='scop.period', + inverse_name='partner_id', + string="Périodes Juridiques") + # Période d'adhésion membership_period_ids = fields.One2many( comodel_name='scop.membership.period', @@ -242,6 +195,12 @@ class ScopPartner(models.Model): string='Cotisations') # Liste Ministère + direccte_id = fields.Many2one( + 'res.partner', + string='DIRECCTE rattachée', + domain=[('is_company', '=', True)], + on_delete='restrict') + last_update_status = fields.Date('Dernière mise à jour des statuts') ministry_list_ids = fields.One2many( comodel_name='scop.ministry.list', inverse_name='partner_id', @@ -266,6 +225,41 @@ class ScopPartner(models.Model): string='Effectifs') # Révisions + revision_contract = fields.Date("Date du contrat de révision") + revision_company_id = fields.Many2one( + 'res.partner', + string='Organisme de révision', + domain=[('is_company', '=', True)], + on_delete='restrict') + revision_backup_company_id = fields.Many2one( + 'res.partner', + string='Organisme de révision suppléant', + domain=[('is_company', '=', True)], + on_delete='restrict') + revision_person_id = fields.Many2one( + 'res.partner', + string='Réviseur', + domain=[('is_company', '=', False)], + on_delete='restrict') + revision_certified_person_id = fields.Many2one( + 'res.partner', + string='Réviseur agréé', + domain=[('is_company', '=', False)], + on_delete='restrict') + revision_person_assign_date = fields.Date("Date de nomination du réviseur") + revision_type = fields.Selection( + [('1y', "Annuelle"), + ('5y', 'Quinquennale'), + ('5ys', "Quinquennale séquencée")], + string='Périodicité de la révision') + revision_format_id = fields.Many2one( + 'scop.revision.format', + string='Format de révision', + on_delete='restrict') + revision_last_date = fields.Date("Dernier exercice révisé") + revision_next_date = fields.Date("Prochain exercice révisable") + revision_staff_id = fields.Integer(string='Effectif révision') + revision_ids = fields.One2many( comodel_name='scop.revision', inverse_name='partner_id', diff --git a/models/scop_period.py b/models/scop_period.py new file mode 100644 index 0000000000000000000000000000000000000000..6e5288ed0212ec5780ce51ce5cecdbf75b5cb01e --- /dev/null +++ b/models/scop_period.py @@ -0,0 +1,66 @@ +# © 2019 Le Filament (<http://www.le-filament.com>) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import models, fields, api + + +class ScopPeriod(models.Model): + _name = "scop.period" + _description = "SCOP Period" + _order = "partner_id, start desc" + + # Infos générales + partner_id = fields.Many2one( + comodel_name='res.partner', + string='Organisme', + domain=[('is_cooperative', '=', True)], + ondelete='restrict', required=True) + start = fields.Date('Début de validité', required=True, + default='2019-01-01') + end = fields.Date('Fin de validité') + end_reason = fields.Selection( + [('juri', "Modification de la forme juridique"), + ('form', "Changement de forme coopérative"), + ('acti', "Changement d'activité (NAF)"), + ('adr', "Changement d'adresse"), + ('nom', "Changement de dénomination sociale"), + ('autr', "Autres")], + string='Motif de fin de validité', default='autr') + comments = fields.Text('Commentaires') + name = fields.Char('Raison Sociale', required=True) + cooperative_form_id = fields.Many2one( + 'res.partner.cooperative.form', + string="Cooperative form", + on_delete='restrict', required=True) + partner_company_type_id = fields.Many2one( + comodel_name='res.partner.company.type', + string='Legal Form', + track_visibility='onchange', + on_delete='restrict', required=True) + siret = fields.Char(string='SIRET', size=14, required=True) + street = fields.Char() + street2 = fields.Char() + street3 = fields.Char() + zip = fields.Char() + zip_id = fields.Many2one('res.city.zip', 'ZIP Location') + city = fields.Char() + city_id = fields.Many2one('res.city', string='City of Address') + state_id = fields.Many2one( + "res.country.state", + string='State', + ondelete='restrict', + domain="[('country_id', '=?', country_id)]") + country_id = fields.Many2one( + 'res.country', string='Country', ondelete='restrict') + ape_id = fields.Many2one( + 'res.partner.category', + string='APE', + help="If the partner is a French company, enter its official " + "main activity in this field. The APE is chosen among the " + "NAF nomenclature.", + on_delete='restrict') + industry_id = fields.Many2one('res.partner.industry', 'Industry', + on_delete='restrict') + cae = fields.Boolean("CAE") + parent_group_name = fields.Char('Coopérative mère') + is_main_location = fields.Boolean("Est l'établissement principal") diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv index a8215e3cf9d4ac17a177397e5ac791f4707b64b1..5d52cf1ef5adb64a00a53a919506e63b6f28d25d 100644 --- a/security/ir.model.access.csv +++ b/security/ir.model.access.csv @@ -26,3 +26,5 @@ 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_scop_revision_staff,access_scop_revision_staff,model_scop_revision_staff,base.group_user,1,1,1,1 access_scop_staff_collection,access_scop_staff_collection,model_scop_staff_collection,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 diff --git a/views/res_partner.xml b/views/res_partner.xml index c7f9b6f07a794b8a57866bc6e1a923a4d4d63303..85179513bdfb3e65d6bd5ad75a0337c318a72189 100644 --- a/views/res_partner.xml +++ b/views/res_partner.xml @@ -96,11 +96,10 @@ <field name="type">ir.actions.act_window</field> <field name="res_model">res.partner</field> <field name="view_type">form</field> - <field name="view_mode">kanban,tree,form</field> + <field name="view_mode">tree,form</field> <field name="search_view_id" ref="base.view_res_partner_filter"/> <field name="context">{'search_default_type_person': 1}</field> <field name="view_ids" eval="[(5, 0, 0), - (0, 0, {'view_mode': 'kanban', 'view_id': ref('base.res_partner_kanban_view')}), (0, 0, {'view_mode': 'tree', 'view_id': ref('base.view_partner_tree')}), (0, 0, {'view_mode': 'form', 'view_id': ref('base.view_partner_form')})]"/> </record> @@ -111,11 +110,10 @@ <field name="type">ir.actions.act_window</field> <field name="res_model">res.partner</field> <field name="view_type">form</field> - <field name="view_mode">kanban,tree,form</field> + <field name="view_mode">tree,form</field> <field name="search_view_id" ref="base.view_res_partner_filter"/> <field name="context">{'search_default_type_company': 1}</field> <field name="view_ids" eval="[(5, 0, 0), - (0, 0, {'view_mode': 'kanban', 'view_id': ref('base.res_partner_kanban_view')}), (0, 0, {'view_mode': 'tree', 'view_id': ref('base.view_partner_tree')}), (0, 0, {'view_mode': 'form', 'view_id': ref('base.view_partner_form')})]"/> </record> diff --git a/views/res_partner_cooperative.xml b/views/res_partner_cooperative.xml index 5d27cc7fa2239387424a52ae54d3f3efc6b4ca2e..03758dc70b5e4133cdadeac8bdede0e779d805d9 100644 --- a/views/res_partner_cooperative.xml +++ b/views/res_partner_cooperative.xml @@ -41,80 +41,27 @@ </field> </record> - <!-- Partner Kanban View --> - <record model="ir.ui.view" id="view_partner_cooperative_kanban"> + <!-- KANBAN --> + <record id="view_partner_cooperative_kanban" model="ir.ui.view"> <field name="name">cooperative.kanban</field> <field name="model">res.partner</field> + <field name="inherit_id" ref="base.res_partner_kanban_view"/> <field name="arch" type="xml"> - <kanban class="o_res_partner_kanban" default_group_by="project_status"> - <field name="id"/> - <field name="color"/> - <field name="display_name"/> - <field name="title"/> - <field name="email"/> - <field name="parent_id"/> - <field name="is_company"/> - <field name="function"/> - <field name="phone"/> - <field name="street"/> - <field name="street2"/> - <field name="street3"/> - <field name="zip"/> - <field name="city"/> - <field name="country_id"/> - <field name="mobile"/> - <field name="state_id"/> - <field name="category_id"/> - <field name="image_small"/> - <field name="type"/> - <templates> - <t t-name="kanban-box"> - <div class="oe_kanban_global_click o_kanban_record_has_image_fill o_res_partner_kanban"> - <t t-if="record.image_small.raw_value && !record.is_company.raw_value"> - <div class="o_kanban_image_fill_left d-none d-md-block" t-attf-style="background-image:url('#{kanban_image('res.partner', 'image_medium', record.id.raw_value)}')"> - <img class="o_kanban_image_inner_pic" t-if="record.parent_id.raw_value" t-att-alt="record.parent_id.value" t-att-src="kanban_image('res.partner', 'image_small', record.parent_id.raw_value)"/> - </div> - <div class="o_kanban_image rounded-circle d-md-none" t-attf-style="background-image:url('#{kanban_image('res.partner', 'image_small', record.id.raw_value)}')"> - <img class="o_kanban_image_inner_pic" t-if="record.parent_id.raw_value" t-att-alt="record.parent_id.value" t-att-src="kanban_image('res.partner', 'image_small', record.parent_id.raw_value)"/> - </div> - </t> - <t t-elif="record.is_company.raw_value"> - <img class="o_kanban_image" t-att-src="kanban_image('res.partner', 'image_small', record.id.raw_value)" t-att-alt="record.display_name"/> - </t> - <t t-else=""> - <t t-if="record.type.raw_value === 'delivery'"> - <img alt="Delivery" t-att-src='_s + "/base/static/img/truck.png"' class="o_kanban_image oe_kanban_avatar_smallbox"/> - </t> - <t t-if="record.type.raw_value === 'invoice'"> - <img alt="Invoice" t-att-src='_s + "/base/static/img/money.png"' class="o_kanban_image oe_kanban_avatar_smallbox"/> - </t> - <t t-if="record.type.raw_value != 'invoice' && record.type.raw_value != 'delivery'"> - <t t-if="record.is_company.raw_value === true"> - <img class="o_kanban_image" alt="Logo" t-att-src='_s + "/base/static/img/company_image.png"'/> - </t> - <t t-if="record.is_company.raw_value === false"> - <img class="o_kanban_image" alt="Avatar" t-att-src='_s + "/base/static/img/avatar.png"'/> - </t> - </t> - </t> - <div class="oe_kanban_details"> - <strong class="o_kanban_record_title oe_partner_heading"><field name="display_name"/></strong> - <div class="o_kanban_tags_section oe_kanban_partner_categories"/> - <ul> - <li t-if="record.parent_id.raw_value and !record.function.raw_value"><field name="parent_id"/></li> - <li t-if="!record.parent_id.raw_value and record.function.raw_value"><field name="function"/></li> - <li t-if="record.parent_id.raw_value and record.function.raw_value"><field name="function"/> at <field name="parent_id"/></li> - <li t-if="record.city.raw_value and !record.country_id.raw_value"><field name="city"/></li> - <li t-if="!record.city.raw_value and record.country_id.raw_value"><field name="country_id"/></li> - <li t-if="record.city.raw_value and record.country_id.raw_value"><field name="city"/>, <field name="country_id"/></li> - <li t-if="record.email.raw_value" class="o_text_overflow"><field name="email"/></li> - </ul> - <div class="oe_kanban_partner_links"/> - </div> - </div> - </t> - </templates> - </kanban> + <xpath expr="//kanban" position="attributes"> + <attribute name="default_group_by">project_status</attribute> + <attribute name="archivable">false</attribute> + <attribute name="group_create">false</attribute> + <attribute name="group_edit">false</attribute> + <attribute name="group_delete">false</attribute> + </xpath> + <xpath expr="//kanban/field[@name='type']" position="after"> + <field name="activity_ids" /> + <field name="activity_state" /> + <progressbar field="activity_state" colors='{"planned": "success", "today": "warning", "overdue": "danger"}' /> + </xpath> + <xpath expr="//div[@class='oe_kanban_partner_links']" position="after"> + <field name="activity_ids" widget="kanban_activity"/> + </xpath> </field> </record> @@ -145,122 +92,228 @@ <field name="is_cooperative" invisible="1"/> <field name="type" attrs="{'invisible': [('parent_id','=', False)]}" groups="base.group_no_one"/> <h1> - <field name="name" default_focus="1" placeholder="Name" required="True"/> + <field name="name" default_focus="1" placeholder="Name" readonly="True"/> </h1> + <group> + <field name="cooperative_form_id" readonly="True"/> + <field name="partner_company_type_id" readonly="True"/> + <field name="membership_status" readonly="True"/> + <field name="member_number" readonly="True"/> + <field name="cae" readonly="True"/> + <field name="supplier" invisible="True"/> + <field name="customer" invisible="True"/> + <field name="user_id" invisible="True"/> + </group> </div> - - <group> - <group string="Infos générales"> - <field name="social_object" attrs="{'required':[('project_status','in',('2_pre-diagnostic','3_accompagnement','4_adhesion', '5_suivi'))]}"/> - <field name="partner_company_type_id" attrs="{'required':[('project_status','in',('4_adhesion', '5_suivi'))]}"/> - <field name="certification_ids" widget="many2many_tags" options="{'color_field': 'color', 'no_create_edit': True}" - attrs="{'required':[('project_status','in',('4_adhesion', '5_suivi'))]}"/> - <field name="website" widget="url" attrs="{'required':[('project_status','in',('4_adhesion', '5_suivi'))]}"/> - <field name="siren" attrs="{'required':[('project_status','in',('4_adhesion', '5_suivi'))]}"/> - <field name="siret" attrs="{'required':[('project_status','in',('4_adhesion', '5_suivi'))]}"/> - <field name="ape_id" context="{'partner_category_display': 'short'}" attrs="{'required':[('project_status','in',('4_adhesion', '5_suivi'))]}" - domain="[('parent_id', 'child_of', %(l10n_eu_nace.nace_root)d), ('child_ids', '=', False)]" options='{"always_reload": True}'/> - <field name="industry_id" options="{'no_create': True}" can_create="true" can_write="true" - attrs="{'required':[('project_status','in',('4_adhesion', '5_suivi'))]}"/> + <group string="Informations Générales"> + <group string="Contact"> + <field name="country_enforce_cities" invisible="1" modifiers="{'readonly':true, 'invisible':true}"/> + <label for='street' string="Adresse Administrative"/> + <div class="o_address_format" modifiers="{}"> + <field name="street" readonly="True"/> + <field name="street2" readonly="True"/> + <field name="street3" readonly="True"/> + <field name="zip_id" readonly="True"/> + <field name="zip" readonly="True"/> + <field name="city" readonly="True" attrs="{'invisible': [('country_enforce_cities', '=', True), ('city_id', '!=', False)]}" /> + <field name="city_id" string="Ville" readonly="True" attrs="{'invisible': [('country_enforce_cities', '=', False)]}" /> + <field name="state_id" invisible="True"/> + <field name="country_id" readonly="True"/> + </div> + <field name="phone" widget="phone" string="Téléphone 1"/> + <field name="mobile" widget="phone" string="Téléphone 2"/> + <field name="admin_email" widget="email" string="E-mail administratif"/> + <field name="email" widget="email" string="E-mail commercial"/> + <field name="website" widget="url"/> + <field name="facebook" widget="url"/> + <field name="linkedin" widget="url"/> + <field name="twitter" widget="url"/> + <!--field name="director_ids" mode="kanban" + context="{'default_parent_id': active_id, 'default_street': street, 'default_street2': street2, 'default_city': city, 'default_state_id': state_id, 'default_zip': zip, 'default_city_id': city_id, '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"/> + <field name="email"/> + <field name="parent_id"/> + <field name="is_company"/> + <field name="function"/> + <field name="phone"/> + <field name="street"/> + <field name="street2"/> + <field name="street3"/> + <field name="zip"/> + <field name="zip_id"/> + <field name="city"/> + <field name="city_id"/> + <field name="country_id"/> + <field name="mobile"/> + <field name="state_id"/> + <field name="image_small"/> + <field name="lang"/> + <field name="comment"/> + <field name="customer"/> + <field name="display_name"/> + <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="oe_kanban_details"> + <field name="name"/> + <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">Phone: <field name="phone" widget="phone"/></div> + <div t-if="record.mobile.raw_value">Mobile: <field name="mobile" widget="phone"/></div> + </div> + </div> + </t> + </templates> + </kanban> + <form string="Contact Dirigeant"> + <sheet> + <field name="type" invisible="1" widget="radio" options="{'horizontal': true}"/> + <field name="parent_id" invisible="1"/> + <group> + <group invisible="1"> + <field name="country_enforce_cities"/> + <field name="street"/> + <field name="street2"/> + <field name="street3"/> + <field name="zip_id"/> + <field name="zip"/> + <field name="city"/> + <field name="city_id"/> + <field name="state_id"/> + <field name="country_id"/> + </group> + <group> + <field name="name" string="Contact Name" attrs="{'required' : [('type', '=', 'contact')]}"/> + <field name="title" placeholder="e.g. Mr." + attrs="{'invisible': [('type','!=', 'contact')]}"/> + <field name="function" placeholder="e.g. Sales Director" + attrs="{'invisible': [('type','!=', 'contact')]}"/> + <field name="email"/> + <field name="phone" widget="phone"/> + <field name="mobile" widget="phone"/> + <field name="comment" placeholder="internal note..."/> + </group> + </group> + <field name="supplier" invisible="True"/> + <field name="customer" invisible="True"/> + <field name="lang" invisible="True"/> + <field name="image" invisible="True"/> + <field name="user_id" invisible="True"/> + </sheet> + </form> + </field--> </group> - <group string="UR"> + <group string="Suivi UR"> <field name="company_id" required="True" domain="[('id', '!=', 1)]"/> <field name="creation_delegate_id" widget="res_partner_many2one" - attrs="{'required':[('project_status','in',('2_pre-diagnostic','3_accompagnement','4_adhesion', '5_suivi'))]}"/> + 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'))]}"/> + <!--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)]"/--> + </group> + <group string="Informations Activité"> <field name="creation_origin" required="True"/> - <field name="creation_suborigin_id" required="True"/> - <field name="cooperative_form_id" attrs="{'required':[('project_status','in',('2_pre-diagnostic','3_accompagnement','4_adhesion', '5_suivi'))]}"/> + <field name="creation_suborigin_id" attrs="{'required':[('creation_origin','!=','null')]}"/> <field name="date_1st_sign" attrs="{'required':[('project_status','in',('4_adhesion', '5_suivi'))]}"/> - <field name="cae" 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'))]}"/> + <field name="ape_id" readonly="True"/> + <field name="industry_id"/> + <field name="certification_ids" widget="many2many_tags" options="{'color_field': 'color', 'no_create_edit': True}"/> + <field name="siret" readonly="True"/> + <field name="first_closeout" attrs="{'required':[('project_status','in',('4_adhesion', '5_suivi'))]}"/> + <field name="closeout_month" attrs="{'required':[('project_status','in',('4_adhesion', '5_suivi'))]}"/> <field name="is_seed_scop" attrs="{'required':[('project_status','in',('4_adhesion', '5_suivi'))]}"/> <field name="seed_end" attrs="{'invisible': [('is_seed_scop', '!=', True)], 'required':[('project_status','in',('4_adhesion', '5_suivi')),('is_seed_scop', '=', True)]}"/> <field name="is_incubated" required="True"/> - <field name="incubator_id" widget="res_partner_many2one" attrs="{'invisible': [('is_incubated', '!=', True)], 'required':[('is_incubated', '=', True)]}"/> + <field name="incubator_id" widget="res_partner_many2one" attrs="{'invisible': [('is_incubated', '!=', True)]}"/> <field name="prescriber_canal_id" widget="res_partner_many2one"/> </group> </group> - <group string="Informations de contact"> - <group> - <field name="phone" widget="phone" string="Téléphone 1" required="True"/> - <field name="mobile" widget="phone" string="Téléphone 2"/> - <field name="email" widget="email" string="E-mail commercial" required="True"/> - <field name="admin_email" widget="email" string="E-mail administratif"/> - </group> - <group> - <field name="country_enforce_cities" invisible="1" modifiers="{'readonly':true, 'invisible':true}"/> - <label for="street" string="Adresse Administrative"/> - <div class="o_address_format" modifiers="{}"> - <div attrs="{'invisible': ['|', ('parent_id', '=', False), ('type', '!=', 'contact')]}" class="oe_edit_only" - modifiers="{'invisible':['|',['parent_id','=',false],['type','!=','contact']]}"> - <b modifiers="{}"> - Company Address: - </b> - </div> - <field name="street" placeholder="Rue..." class="o_address_street" - attrs="{'readonly': [('type', '=', 'contact'),('parent_id', '!=', False)], 'required':[('project_status','in',('4_adhesion', '5_suivi'))]}" - modifiers="{'readonly':[['type','=','contact'],['parent_id','!=', False]]}"/> - <field name="street2" placeholder="Rue 2..." class="o_address_street" - attrs="{'readonly': [('type', '=', 'contact'),('parent_id', '!=', False)], 'required':[('project_status','in',('4_adhesion', '5_suivi'))]}" - modifiers="{'readonly':[['type','=','contact'],['parent_id','!=',false]]}"/> - <field name="street3" placeholder="Rue 3..." class="o_address_street" - attrs="{'readonly': [('type', '=', 'contact'),('parent_id', '!=', False)], 'required':[('project_status','in',('4_adhesion', '5_suivi'))]}" - modifiers="{'readonly':[['type','=','contact'],['parent_id','!=',false]]}"/> - <field name="zip_id" - options="{'create_name_field': 'city', 'no_open': True, 'no_create': True}" - placeholder="ZIP" - class="oe_edit_only" - attrs="{'readonly': [('type', '=', 'contact'),('parent_id', '!=', False)], 'required':[('project_status','in',('4_adhesion', '5_suivi'))]}"/> - <field name="zip" placeholder="ZIP" class="o_address_zip" - attrs="{'readonly': [('type', '=', 'contact'),('parent_id', '!=', False)], 'required':[('project_status','in',('4_adhesion', '5_suivi'))]}" - on_change="1" modifiers="{'readonly':[['type','=','contact'],['parent_id','!=',False]]}"/> - <field name="city" placeholder="Ville" class="o_address_city" - attrs="{'invisible': [('country_enforce_cities', '=', True), ('city_id', '!=', False)], 'readonly': [('type', '=', 'contact'), ('parent_id', '!=', False)], 'required':[('project_status','in',('4_adhesion', '5_suivi'))]}" - modifiers="{'readonly':[['type','=','contact'],['parent_id','!=',false]],'invisible':[['country_enforce_cities','=',true],['city_id','!=',false]]}"/> - <field name="city_id" placeholder="Ville" string="Ville" class="o_address_city" - context="{'default_country_id': country_id, 'default_name': city, 'default_zipcode': zip, 'default_state_id': state_id}" - domain="[('country_id', '=', country_id)]" - attrs="{'invisible': [('country_enforce_cities', '=', False)], 'readonly': [('type', '=', 'contact'), ('parent_id', '!=', False)]}" - on_change="1" can_create="true" can_write="true" - modifiers="{'readonly':[['type','=','contact'],['parent_id','!=',false]],'invisible':[['country_enforce_cities','=',false]]}"/> - <field name="state_id" class="o_address_state" placeholder="State" options="{'no_open': True}" - attrs="{'readonly': [('type', '=', 'contact'),('parent_id', '!=', False)]}" context="{'country_id': country_id, 'zip': zip}" - on_change="1" can_create="true" can_write="true" modifiers="{'readonly':[['type','=','contact'],['parent_id','!=',false]]}"/> - <field name="country_id" placeholder="Country" class="o_address_country" - options="{'no_open': True, 'no_create': True}" attrs="{'readonly': [('type', '=', 'contact'),('parent_id', '!=', False)]}" - on_change="1" can_create="true" can_write="true" modifiers="{'readonly':[['type','=','contact'],['parent_id','!=',false]]}"/> - </div> - </group> - </group> - <group string="Autres informations"> - <field name="bank_id" widget="res_partner_many2one"/> - <field name="bank2_id" widget="res_partner_many2one"/> - <field name="direccte_id" widget="res_partner_many2one" attrs="{'required':[('project_status','in',('4_adhesion', '5_suivi'))]}"/> - <field name="auditor_id" widget="res_partner_many2one"/> - <field name="auditor_person_id" widget="res_partner_many2one" attrs="{'invisible': [('auditor_id', '!=', False)]}"/> - <field name="accountant_id" widget="res_partner_many2one" attrs="{'required':[('project_status','in',('4_adhesion', '5_suivi'))]}"/> - <field name="accountant_person_id" widget="res_partner_many2one" attrs="{'invisible': [('accountant_id', '!=', False)]}"/> - <field name="registration_date" attrs="{'required':[('project_status','in',('4_adhesion', '5_suivi'))]}"/> - <field name="last_update_status" attrs="{'required':[('project_status','in',('4_adhesion', '5_suivi'))]}"/> - <field name="is_main_location" attrs="{'required':[('project_status','in',('4_adhesion', '5_suivi'))]}"/> - <field name="parent_group_name"/> - </group> - <group> - <group string="Informations comptables"> - <field name="first_closeout" attrs="{'required':[('project_status','in',('4_adhesion', '5_suivi'))]}"/> - <field name="closeout_month" attrs="{'required':[('project_status','in',('4_adhesion', '5_suivi'))]}"/> - </group> - <group string="Dissolution"> + <notebook colspan="4"> + <page name="juridical_info" string="Informations Juridiques"> + <field name="siren" readonly="True"/> <field name="dissolution_date"/> <field name="dissolution_reason_id"/> - </group> - - <field name="supplier" invisible="True"/> - <field name="customer" invisible="True"/> - <field name="user_id" invisible="True"/> - </group> - <notebook colspan="4"> - <page string="Contacts & Addresses" autofocus="autofocus"> + </page> + <page name="partners" string="Partenaires"> + <field name="bank_id" widget="res_partner_many2one"/> + <field name="bank2_id" widget="res_partner_many2one"/> + <field name="accountant_id" widget="res_partner_many2one" attrs="{'required':[('project_status','in',('4_adhesion', '5_suivi'))]}"/> + <field name="accountant_person_id" widget="res_partner_many2one" attrs="{'invisible': [('accountant_id', '!=', False)]}"/> + <field name="auditor_id" widget="res_partner_many2one"/> + <field name="auditor_person_id" widget="res_partner_many2one" attrs="{'invisible': [('auditor_id', '!=', False)]}"/> + </page> + <page name='scop_ministry_list' string="Listes Ministère"> + <field name="direccte_id" widget="res_partner_many2one"/> + <field name="last_update_status"/> + <field name="ministry_list_ids" mode="tree"> + <tree create="False" edit="False" delete="False"/> + <form/> + </field> + </page> + <page name='scop_revision' string="Révisions"> + <group string="Informations de révision"> + <group> + <field name="revision_contract"/> + <field name="revision_company_id" widget="res_partner_many2one"/> + <field name="revision_backup_company_id" widget="res_partner_many2one"/> + <field name="revision_person_id" widget="res_partner_many2one"/> + <field name="revision_certified_person_id" widget="res_partner_many2one"/> + <field name="revision_person_assign_date"/> + </group> + <group> + <field name="revision_type"/> + <field name="revision_format_id"/> + <field name="revision_staff_id"/> + <field name="revision_last_date"/> + <field name="revision_next_date"/> + </group> + </group> + <field name="revision_ids" mode="tree"> + <tree create="False" edit="False" delete="False"/> + <form/> + </field> + </page> + <!--page name="scop_periods" string="Historique des périodes"> + <field name="scop_period_ids" mode="tree"> + <tree string="Périodes" create="False" edit="False" delete="False"> + <field name="partner_id" invisible="1"/> + <field name="start"/> + <field name="end"/> + <field name="end_reason"/> + <field name="comments"/> + <field name="name"/> + <field name="cooperative_form_id"/> + <field name="partner_company_type_id"/> + <field name="siret"/> + <field name="street"/> + <field name="street2"/> + <field name="street3"/> + <field name="zip"/> + <field name="zip_id" invisible="1"/> + <field name="city" invisible="1"/> + <field name="city_id"/> + <field name="state_id" invisible="1"/> + <field name="country_id" invisible="1"/> + <field name="ape_id"/> + <field name="cae"/> + <field name="is_main_location"/> + <field name="parent_group_name"/> + </tree> + </field> + </page--> + <!--page name="contacts" string="Contacts & Addresses" autofocus="autofocus"> + <field name="is_main_location" readonly="True"/> <field name="child_ids" mode="kanban" context="{'default_parent_id': active_id, 'default_street': street, 'default_street2': street2, 'default_city': city, '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> @@ -283,9 +336,9 @@ <field name="mobile"/> <field name="state_id"/> <field name="image_small"/> - <field name="lang"/> + <field name="lang"/-->> <!-- fields in form x2many view to diminish requests --> - <field name="comment"/> + <!--field name="comment"/> <field name="customer"/> <field name="display_name"/> <field name="supplier"/> @@ -324,11 +377,11 @@ </templates> </kanban> <form string="Contact / Address"> - <sheet> + <sheet--> <!-- parent_id and type fields needed in attrs in base_address_city module which overwrites _fields_view_get() of partner. It would be better to put those fields there but the web client dosen't support when a field is displayed several times in the same view.--> - <field name="type" required="1" widget="radio" options="{'horizontal': true}"/> + <!--field name="type" required="1" widget="radio" options="{'horizontal': true}"/> <field name="parent_id" invisible="1"/> <hr/> <group> @@ -379,78 +432,49 @@ </sheet> </form> </field> - </page> + </page--> <page name='internal_notes' string="Internal Notes"> <field name="comment" placeholder="Internal note..."/> </page> <page name='scop_membership' string="Périodes d'adhésion"> <field name="membership_period_ids" mode="tree"> - <tree/> + <tree create="False" edit="False" delete="False"/> <form/> </field> </page> <page name='scop_contribution' string="Cotisations"> <field name="contribution_ids" mode="tree"> - <tree/> - <form/> - </field> - </page> - <page name='scop_ministry_list' string="Listes Ministère"> - <field name="ministry_list_ids" mode="tree"> - <tree/> + <tree create="False" edit="False" delete="False"/> <form/> </field> </page> <page name='scop_questionnaire' string="Questionnaires"> <field name="questionnaire_ids" mode="tree"> - <tree/> + <tree create="False" edit="False" delete="False"/> <form/> </field> </page> <page name='scop_liasse_fiscale' string="Liasses Fiscales"> <field name="liasse_fiscale_ids" mode="tree"> - <tree/> + <tree create="False" edit="False" delete="False"/> <form/> </field> </page> <page name='scop_staff' string="Effectifs"> <field name="staff_ids" mode="tree"> - <tree/> - <form/> - </field> - </page> - <page name='scop_revision' string="Révisions"> - <group string="Informations de révision"> - <group> - <field name="revision_contract"/> - <field name="revision_company_id" widget="res_partner_many2one"/> - <field name="revision_backup_company_id" widget="res_partner_many2one"/> - <field name="revision_person_id" widget="res_partner_many2one"/> - <field name="revision_certified_person_id" widget="res_partner_many2one"/> - <field name="revision_person_assign_date"/> - </group> - <group> - <field name="revision_type"/> - <field name="revision_format_id"/> - <field name="revision_staff_id"/> - <field name="revision_last_date"/> - <field name="revision_next_date"/> - </group> - </group> - <field name="revision_ids" mode="tree"> - <tree/> + <tree create="False" edit="False" delete="False"/> <form/> </field> </page> <page name='scop_legal_event' string="Evènements Juridiques"> <field name="legal_event_ids" mode="tree"> - <tree/> + <tree create="False" edit="False" delete="False"/> <form/> </field> </page> <page name='scop_financial_tools' string="Outils Financiers"> <field name="financial_tools_ids" mode="tree"> - <tree/> + <tree create="False" edit="False" delete="False"/> <form/> </field> </page> @@ -486,11 +510,10 @@ <field name="name">Coopératives</field> <field name="res_model">res.partner</field> <field name="view_type">form</field> - <field name="view_mode">kanban,tree,form</field> + <field name="view_mode">tree,form</field> <field name="search_view_id" ref="base.view_res_partner_filter"/> <field name="domain" eval="[('is_cooperative', '=', True),('project_status','=','5_suivi')]"/> <field name="view_ids" eval="[(5, 0, 0), - (0, 0, {'view_mode': 'kanban', 'view_id': ref('base.res_partner_kanban_view')}), (0, 0, {'view_mode': 'tree', 'view_id': ref('base.view_partner_tree')}), (0, 0, {'view_mode': 'form', 'view_id': ref('view_partner_cooperative_form')})]"/> <field name="context">{'search_default_type_cooperative': True, 'default_is_company': True, 'default_is_cooperative': True, 'default_company_type': 'company', 'default_project_status': '5_suivi'}</field> @@ -501,11 +524,10 @@ <field name="name">Tous les Organismes</field> <field name="res_model">res.partner</field> <field name="view_type">form</field> - <field name="view_mode">kanban,tree,form</field> + <field name="view_mode">tree,form</field> <field name="search_view_id" ref="base.view_res_partner_filter"/> <field name="domain" eval="[('is_cooperative', '=', True)]"/> <field name="view_ids" eval="[(5, 0, 0), - (0, 0, {'view_mode': 'kanban', 'view_id': ref('view_partner_cooperative_kanban')}), (0, 0, {'view_mode': 'tree', 'view_id': ref('view_partner_cooperative_tree')}), (0, 0, {'view_mode': 'form', 'view_id': ref('view_partner_cooperative_form')})]"/> <field name="context">{'default_is_company': True, 'default_is_cooperative': True, 'default_company_type': 'company', 'default_project_status': '1_information'}</field>