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