Skip to content
Extraits de code Groupes Projets
Valider 572e8faa rédigé par Rémi - Le Filament's avatar Rémi - Le Filament
Parcourir les fichiers

Merge branch '16.0-refactor-report' into '16.0'

Refactor report

See merge request lefilament/private/lefilament_training!2
parents 6346d436 9a43255c
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!2Refactor report
Affichage de
avec 174 ajouts et 13 suppressions
......@@ -58,6 +58,7 @@ repos:
rev: v2.7.1
hooks:
- id: prettier
exclude: ^templates/
name: prettier (with plugin-xml)
additional_dependencies:
- "prettier@2.7.1"
......@@ -101,14 +102,14 @@ repos:
- id: pyupgrade
args: ["--keep-percent-format"]
- repo: https://github.com/PyCQA/isort
rev: 5.10.1
rev: 5.12.0
hooks:
- id: isort
name: isort except __init__.py
args:
- --settings=.
exclude: /__init__\.py$
- repo: https://gitlab.com/PyCQA/flake8
- repo: https://github.com/PyCQA/flake8
rev: 3.9.2
hooks:
- id: flake8
......
......@@ -10,20 +10,31 @@
],
"website": "https://le-filament.com",
"data": [
"data/ir_module_category.xml",
# security
"security/training_security.xml",
"security/ir.model.access.csv",
# datas
"data/ir_module_category.xml",
"data/training_data.xml",
"data/training_type_data.xml",
# templates
"templates/report_config_settings.xml",
"templates/report_agreement.xml",
"templates/report_attestation.xml",
"templates/report_attendance_sheet.xml",
"templates/report_convocation.xml",
"templates/report_program.xml",
# views
"views/account_move_view.xml",
"views/partner_view.xml",
"views/res_company_view.xml",
"views/res_config_settings_view.xml",
"views/res_partner_view.xml",
"views/sale_order_view.xml",
"views/training_course_view.xml",
"views/training_training_view.xml",
"views/training_session_view.xml",
"report/report_agreement.xml",
"report/report_attestation.xml",
"report/report_attendance_sheet.xml",
"report/report_program.xml",
"views/training_type_view.xml",
"views/menus.xml",
],
"assets": {
"web.report_assets_common": [
......
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="training_type_present" model="training.type">
<field name="name">Présentiel</field>
</record>
<record id="training_type_remote" model="training.type">
<field name="name">Distanciel</field>
</record>
<record id="training_type_blended" model="training.type">
<field name="name">Blended</field>
</record>
</data>
</odoo>
from . import account_move
from . import partner
from . import res_partner
from . import res_company
from . import res_company_training_logo
from . import res_config_settings
from . import sale_order
from . import training_course
from . import training_session
from . import training_student
from . import training_training
from . import training_type
# © 2023 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 ResCompany(models.Model):
_inherit = "res.company"
training_number = fields.Char("N° Organisme de formation")
agreement_special_condition = fields.Html("Conditions spéciales de la convention")
title_color = fields.Char("Couleur du titre", default="#ffffff")
title_bg_color = fields.Char("Couleur arrière plan du titre", default="#00b495")
title_font = fields.Selection(
[
("Lato", "Lato"),
("Roboto", "Roboto"),
("Open_Sans", "Open Sans"),
("Montserrat", "Montserrat"),
("Oswald", "Oswald"),
("Raleway", "Raleway"),
],
string="Police des titres",
default="Lato",
required=True,
)
subtitle_color = fields.Char("Couleur sous-titre", default="#1c2f82")
text_font = fields.Selection(
[
("Lato", "Lato"),
("Roboto", "Roboto"),
("Open_Sans", "Open Sans"),
("Montserrat", "Montserrat"),
("Oswald", "Oswald"),
("Raleway", "Raleway"),
],
string="Police du texte",
default="Lato",
required=True,
)
logo_ids = fields.One2many(
comodel_name="res.company.training.logo",
inverse_name="company_id",
string="Logos",
)
# © 2023 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 ResCompanyTrainingLogo(models.Model):
_name = "res.company.training.logo"
_description = "Logos à afficher sur les documents de formation"
logo = fields.Binary(required=True)
name = fields.Char("Nom du logo")
company_id = fields.Many2one(
comodel_name="res.company",
string="Company",
required=True,
default=lambda self: self.env["res.company"]._company_default_get(),
ondelete="cascade",
)
# © 2023 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 ResConfigSettings(models.TransientModel):
_inherit = "res.config.settings"
training_number = fields.Char(related="company_id.training_number", readonly=False)
agreement_special_condition = fields.Html(
related="company_id.agreement_special_condition", readonly=False
)
title_color = fields.Char(related="company_id.title_color", readonly=False)
title_bg_color = fields.Char(related="company_id.title_bg_color", readonly=False)
title_font = fields.Selection(related="company_id.title_font", readonly=False)
subtitle_color = fields.Char(related="company_id.subtitle_color", readonly=False)
text_font = fields.Selection(related="company_id.text_font", readonly=False)
logo_ids = fields.One2many(related="company_id.logo_ids", readonly=False)
Fichier déplacé
......@@ -22,6 +22,7 @@ class TrainingProgram(models.Model):
nature = fields.Text(string="Nature de l'action")
acquis = fields.Text(string="Acquis de la formation")
students_profile = fields.Text(string="Profil des stagiaires")
prerequisites = fields.Text(string="Pré-requis")
session_ids = fields.Many2many(
comodel_name="training.course.session",
relation="program_course_rel",
......
......@@ -47,9 +47,25 @@ class Training(models.Model):
date_end = fields.Date(string="Fin de la formation")
session_hours = fields.Char(string="Horaires")
students_nb_prev = fields.Char(string="Nb Stagiaires Prévisionnel")
convention = fields.Binary()
convention = fields.Binary(attachment=True)
signin_person = fields.Char(
string="Signataire", help="Signataire de la convention et des attestations"
)
signin_function = fields.Char(
string="Fonction Signataire",
help="Fonction du signataire de la convention et des attestations",
)
date_convocation = fields.Date()
date_convention = fields.Date()
place_convention = fields.Char(
"Lieu signature convention",
default=lambda self: self.env["res.company"]._company_default_get().city,
)
date_attestation = fields.Date()
place_attestation = fields.Char(
"Lieu signature attestation",
default=lambda self: self.env["res.company"]._company_default_get().city,
)
hours = fields.Integer(string="Durée (h)", compute="_compute_sessions", store=True)
hours_total = fields.Integer(
string="Nombre d'heures", compute="_compute_hours_total", store=True
......@@ -89,7 +105,8 @@ class Training(models.Model):
selection=[("draft", "Brouillon"), ("current", "Accepté"), ("done", "Réalisé")],
default="draft",
)
place = fields.Text(string="Lieu de la formation")
place = fields.Char(string="Lieu de la formation")
place_detail = fields.Text(string="Détails du lieu")
company_id = fields.Many2one(
comodel_name="res.company",
string="Company",
......@@ -98,8 +115,22 @@ class Training(models.Model):
readonly=True,
default=lambda self: self.env["res.company"]._company_default_get(),
)
file_number = fields.Char(string="N° Dossier")
plan = fields.Char(string="Dispositif")
file_number = fields.Char(string="N° Dossier OPCO")
plan = fields.Char(string="Dispositif OPCO")
meanings = fields.Text("Dispositif formation")
is_vat = fields.Boolean("TVA 20% applicable", default=True)
training_type_id = fields.Many2one(
comodel_name="training.type",
string="Type de formation",
)
payment_term_id = fields.Many2one(
comodel_name="account.payment.term",
string="Condition de règlement",
check_company=True,
domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]",
)
email_contact = fields.Char("Email contact formation")
equipment = fields.Text(string="Équipement/éléments nécessaires pour la formation")
# ------------------------------------------------------
# Override ORM
......
# Copyright 2019-2022 Le Filament (<https://le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import fields, models
class TrainingType(models.Model):
_name = "training.type"
_description = "Training Type"
name = fields.Char("Nom", required=True)
......@@ -4,3 +4,7 @@ access_training_session_group_user,training.session,model_training_session,group
access_training_student_group_user,training.student,model_training_student,group_training,1,1,1,1
access_training_course_group_user,training.course,model_training_course,group_training,1,1,1,1
access_training_course_session_group_user,training.course.session,model_training_course_session,group_training,1,1,1,1
admin_res_company_training_logo,admin_res_company_training_logo,model_res_company_training_logo,group_training,1,1,1,1
access_res_company_training_logo,access_res_company_training_logo,model_res_company_training_logo,base.group_user,1,0,0,0
access_training_type,access_training_type,model_training_type,base.group_user,1,0,0,0
admin_training_type,admin_training_type,model_training_type,group_training,1,1,1,1
\ No newline at end of file
static/description/icon.png

8,95 ko | W: | H:

static/description/icon.png

7,59 ko | W: | H:

static/description/icon.png
static/description/icon.png
static/description/icon.png
static/description/icon.png
  • 2-up
  • Swipe
  • Onion skin
static/description/training.png

7,59 ko

Fichier supprimé
Fichier supprimé
Fichier supprimé
Fichier supprimé
Fichier supprimé
Fichier supprimé
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter