If we have to select "learning" value in the detailed_type field, this means that we can not select Event Ticket, then we can not sell the product as a ticket in an event.
58 lines
2.7 KiB
Python
58 lines
2.7 KiB
Python
# Copyright 2018 Nicolas JEUDY
|
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
|
|
|
from odoo import api, fields, models, _
|
|
|
|
|
|
class learningFinancialProgram(models.Model):
|
|
_name = 'learning.financial.program'
|
|
_description = "Learning Financial Program"
|
|
|
|
product_tmpl_ids = fields.Many2many('product.template', 'financial_program_product_category_rel', 'financial_program_id', 'product_category_id', 'Products')
|
|
name = fields.Char("Name")
|
|
description = fields.Text('Description')
|
|
description_html = fields.Html("Web Description")
|
|
|
|
|
|
class ProductTemplate(models.Model):
|
|
_inherit = ['product.template']
|
|
|
|
is_learning = fields.Boolean(string='is learning')
|
|
|
|
goal = fields.Html(string='Goal', translate=True)
|
|
duration_html = fields.Html(string='Duration', translate=True)
|
|
public = fields.Html(string='Public', translate=True)
|
|
prerequisite = fields.Html(string='Prerequisite', translate=True)
|
|
content = fields.Html(string='Content', translate=True)
|
|
organizer = fields.Html(string='Organizer', translate=True)
|
|
methodology = fields.Html(string='Methodology', translate=True)
|
|
technic = fields.Html(string='Technical', translate=True)
|
|
price_html = fields.Html(string='Price', translate=True)
|
|
registration = fields.Html(string='Registration', translate=True)
|
|
|
|
our_value = fields.Html(string='Value', translate=True)
|
|
|
|
description = fields.Html(string='Description', translate=True)
|
|
validate = fields.Html(string='Validate', translate=True)
|
|
certificate = fields.Html(string='Certificate', translate=True)
|
|
|
|
financial_program_ids = fields.Many2many('learning.financial.program', 'financial_program_product_category_rel', 'product_category_id', 'financial_program_id', 'Financial Program')
|
|
parent_domain_id = fields.Many2one('learning.domain', related='domain_id.parent_id', store=True, string="Domain parent")
|
|
domain_id = fields.Many2one('learning.domain', string="Domain")
|
|
duration_hour = fields.Float('Duration in hour(s)')
|
|
hours_per_day = fields.Float('Nb hour(s) per day(s) ?')
|
|
duration_days = fields.Float('Duration in day(s)')
|
|
duration_text = fields.Text('Duration details')
|
|
count_session = fields.Integer('Nb session', compute="_compute_session", readonly=True)
|
|
sessions_ids = fields.One2many('event.event', 'learning_id', 'Slots')
|
|
|
|
# ajouter la nature de l'action de formation avec la liste
|
|
|
|
def _compute_session(self):
|
|
for record in self:
|
|
record.count_session = len(self.env['event.event'].search([('learning_id', '=', record.id)]))
|
|
|
|
def _detailed_type_mapping(self):
|
|
type_mapping = super()._detailed_type_mapping()
|
|
type_mapping['learning'] = 'service'
|
|
return type_mapping |