From e619fd1132de4a1d403e4572a7bd058f6246b069 Mon Sep 17 00:00:00 2001 From: benjamin <benjamin@le-filament.com> Date: Thu, 17 Nov 2022 17:08:06 +0100 Subject: [PATCH] [update] add wizard project creation --- __manifest__.py | 7 +- models/calendar.py | 10 +-- security/ir.model.access.csv | 1 + views/res_partner.xml | 126 ----------------------------- wizard/__init__.py | 1 + wizard/calendar_create_project.py | 76 +++++++++++++++++ wizard/calendar_create_project.xml | 87 ++++++++++++++++++++ 7 files changed, 172 insertions(+), 136 deletions(-) delete mode 100644 views/res_partner.xml create mode 100644 wizard/calendar_create_project.py create mode 100644 wizard/calendar_create_project.xml diff --git a/__manifest__.py b/__manifest__.py index 29908d8..8da6438 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -12,12 +12,15 @@ "cgscop_timesheet", ], "data": [ + # security "security/security_rules.xml", "security/ir.model.access.csv", + # wizard + "wizard/calendar_create_project.xml", + "wizard/calendar_event_transform.xml", + # views "views/calendar.xml", "views/hr_timesheet.xml", - "views/res_partner.xml", - "wizard/calendar_event_transform.xml", ], "qweb": [ "static/src/xml/*.xml", diff --git a/models/calendar.py b/models/calendar.py index fb54466..fd5107b 100644 --- a/models/calendar.py +++ b/models/calendar.py @@ -424,20 +424,14 @@ class CGScopCalendar(models.Model): Affiche une fenêtre simplifiée pour la création d'un projet """ self.ensure_one() - view_id = self.env.ref("cgscop_calendar.scop_project_calendar_view_form").id return { "name": "Création d'un projet", "type": "ir.actions.act_window", "view_mode": "form", - "views": [(view_id, "form")], - "view_id": view_id, - "res_model": "res.partner", + "views": [(False, "form")], + "res_model": "calendar.create.project", "target": "new", "context": { - "default_is_company": True, - "default_is_cooperative": True, - "default_company_type": "company", - "default_project_status": "1_information", "default_date_first_rdv": self.start.date() if self.start else None, }, } diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv index e306ece..6b4e09a 100644 --- a/security/ir.model.access.csv +++ b/security/ir.model.access.csv @@ -1,2 +1,3 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_calendar_event_transform,access_calendar_event_transform,model_calendar_event_transform,base.group_user,1,1,1,1 +access_calendar_create_project,access_calendar_create_project,model_calendar_create_project,base.group_user,1,1,1,1 diff --git a/views/res_partner.xml b/views/res_partner.xml deleted file mode 100644 index 7b8766e..0000000 --- a/views/res_partner.xml +++ /dev/null @@ -1,126 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<odoo> - <data> - <record id="scop_project_calendar_view_form" model="ir.ui.view"> - <field name="name">scop.project.calendar.view.form</field> - <field name="model">res.partner</field> - <field name="priority">200</field> - <field name="arch" type="xml"> - <form string="Projet"> - <sheet> - <div class="oe_title oe_title_cgscop"> - <field name="is_cooperative" invisible="1" /> - <h1> - <field - name="name" - default_focus="1" - required="1" - placeholder="Raison Sociale" - /> - </h1> - <div class="oe_bloc_cgscop"> - <div class="o_row d-flex"> - <h3> - <field - class="o_field_header" - name="cooperative_form_id" - options="{'no_open': True, 'no_create': True}" - placeholder="Forme Coopérative" - /> - </h3> - </div> - </div> - </div> - <group> - <group string="Contact"> - <label for='street' string="Adresse du siège social" /> - <div class="o_address_format"> - <field - name="street" - placeholder="Rue..." - class="o_address_street" - /> - <field - name="street2" - placeholder="Rue 2..." - class="o_address_street" - /> - <field - name="street3" - placeholder="Rue 3..." - class="o_address_street" - /> - <field - name="zip_id" - options="{'create_name_field': 'city', 'no_open': True, 'no_create': True}" - placeholder="CP / Ville autocomplétion..." - class="oe_edit_only" - /> - <field - name="zip" - placeholder="CP..." - class="o_address_city" - /> - <field name="zip_departement" invisible="1" /> - <field - name="city" - placeholder="Ville..." - class="o_address_city" - /> - <field name="city_id" invisible="1" /> - <field - name="cedex" - placeholder="Cedex" - class="o_address_city" - /> - <field - name="state_id" - class="o_address_zip" - placeholder="Région" - options='{"no_open": True, "no_create": True}' - context="{'country_id': country_id, 'zip': zip}" - /> - <field - name="country_id" - placeholder="Pays" - class="o_address_country" - options='{"no_open": True, "no_create": True}' - /> - </div> - <field - name="zip_departement" - string="N° de département" - /> - <field name="region" /> - <field - name="phone" - widget="phone" - string="Téléphone 1" - /> - <field - name="mobile" - widget="phone" - string="Téléphone 2" - /> - <field name="email" widget="email" string="E-mail" /> - <field name="website" widget="url" /> - </group> - <group name="infos" string="Informations"> - <field name="creation_origin_id" required="1" /> - <field name="creation_suborigin_id" /> - <field name="social_object" /> - <field name="date_first_rdv" required="1" /> - <field - name="is_first_rdv_infocoll" - widget="boolean_toggle" - /> - <field name="date_send_guide" /> - <field name="adhesion_comments" /> - </group> - </group> - </sheet> - </form> - </field> - </record> - </data> -</odoo> diff --git a/wizard/__init__.py b/wizard/__init__.py index ea73a94..7bf5165 100644 --- a/wizard/__init__.py +++ b/wizard/__init__.py @@ -1,4 +1,5 @@ # © 2019 Le Filament (<http://www.le-filament.com>) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from . import calendar_create_project from . import calendar_event_transform diff --git a/wizard/calendar_create_project.py b/wizard/calendar_create_project.py new file mode 100644 index 0000000..bc57a02 --- /dev/null +++ b/wizard/calendar_create_project.py @@ -0,0 +1,76 @@ +# © 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 CalendarCreateProject(models.TransientModel): + """ + This wizard allows to create project from event + """ + + _name = "calendar.create.project" + _description = "Wizard de création de projet depuis l'agenda" + + name = fields.Char("Raison Sociale") + is_cooperative = fields.Boolean("Est une coopérative") + cooperative_form_id = fields.Many2one( + "res.partner.cooperative.form", + string="Cooperative form", + ondelete="restrict", + tracking=True, + ) + city = fields.Char("Ville") + zip = fields.Char("Code Postal") + phone = fields.Char("Téléphone") + mobile = fields.Char("Mobile") + email = fields.Char("Adresse Mail") + + # Infos générales / Infos activité + creation_origin_id = fields.Many2one( + "res.partner.creation.origin", + string="Origine création en coop", + domain=[("parent_id", "=", False)], + ondelete="restrict", + ) + creation_suborigin_id = fields.Many2one( + "res.partner.creation.origin", + string="Sous-Origine création en coop", + domain=[("child_ids", "=", False)], + ondelete="restrict", + ) + social_object = fields.Text("Objet Social") + date_first_rdv = fields.Date("Date du 1er rdv") + is_first_rdv_infocoll = fields.Boolean("Réunion d'info. collective") + date_send_guide = fields.Date("Date d’envoi du guide de faisabilité") + adhesion_comments = fields.Text("Commentaires Adhésion") + + # ------------------------------------------------------ + # Fonction boutons + # ------------------------------------------------------ + def button_create_project(self): + ctx = self.env.context + event_id = self.env["calendar.event"].browse(ctx.get("active_id")) + partner_id = self.env["res.partner"].create( + { + "name": self.name, + "is_cooperative": True, + "is_company": True, + "company_type": "company", + "project_status": "1_information", + "cooperative_form_id": self.cooperative_form_id.id, + "city": self.city, + "zip": self.zip, + "phone": self.phone, + "mobile": self.mobile, + "email": self.email, + "creation_origin_id": self.creation_origin_id.id, + "creation_suborigin_id": self.creation_suborigin_id.id, + "social_object": self.social_object, + "date_first_rdv": self.date_first_rdv, + "is_first_rdv_infocoll": self.is_first_rdv_infocoll, + "date_send_guide": self.date_send_guide, + "adhesion_comments": self.adhesion_comments, + } + ) + event_id.coop_id = partner_id diff --git a/wizard/calendar_create_project.xml b/wizard/calendar_create_project.xml new file mode 100644 index 0000000..84cd0bc --- /dev/null +++ b/wizard/calendar_create_project.xml @@ -0,0 +1,87 @@ +<?xml version="1.0" encoding="utf-8" ?> +<odoo> + <data> + <record id="scop_project_calendar_view_form" model="ir.ui.view"> + <field name="name">scop.project.calendar.view.form</field> + <field name="model">calendar.create.project</field> + <field name="arch" type="xml"> + <form string="Projet"> + <sheet> + <div class="oe_title oe_title_cgscop"> + <h1> + <field + name="name" + default_focus="1" + required="1" + placeholder="Raison Sociale" + /> + </h1> + <div class="oe_bloc_cgscop"> + <div class="o_row d-flex"> + <h3> + <field + class="o_field_header" + name="cooperative_form_id" + options="{'no_open': True, 'no_create': True}" + placeholder="Forme Coopérative" + /> + </h3> + </div> + </div> + </div> + <group> + <group string="Contact"> + <field + name="zip" + placeholder="CP..." + class="o_address_city" + /> + <field + name="city" + placeholder="Ville..." + class="o_address_city" + /> + <field + name="phone" + widget="phone" + string="Téléphone 1" + /> + <field + name="mobile" + widget="phone" + string="Téléphone 2" + /> + <field name="email" widget="email" /> + </group> + <group name="infos" string="Informations"> + <field name="creation_origin_id" required="1" /> + <field name="creation_suborigin_id" /> + <field name="social_object" /> + <field name="date_first_rdv" required="1" /> + <field + name="is_first_rdv_infocoll" + widget="boolean_toggle" + /> + <field name="date_send_guide" /> + <field name="adhesion_comments" /> + </group> + </group> + </sheet> + <footer> + <button + name="button_create_project" + type="object" + string="Créer le projet" + class="btn-primary" + /> + <button + class="btn btn-sm btn-default" + special="cancel" + string="Annuler" + /> + </footer> + </form> + </field> + </record> + </data> +</odoo> -- GitLab