diff --git a/event_generate_quotation_from_registration/__manifest__.py b/event_generate_quotation_from_registration/__manifest__.py
index 6e24714..dfbc36b 100644
--- a/event_generate_quotation_from_registration/__manifest__.py
+++ b/event_generate_quotation_from_registration/__manifest__.py
@@ -15,6 +15,8 @@
"data": [
'security/ir.model.access.csv',
'views/event_registration_views.xml',
+ 'views/sale_order_views.xml',
+ 'views/account_move_views.xml',
],
"installable": True,
}
diff --git a/event_generate_quotation_from_registration/models/__init__.py b/event_generate_quotation_from_registration/models/__init__.py
index 998c634..f035bf8 100644
--- a/event_generate_quotation_from_registration/models/__init__.py
+++ b/event_generate_quotation_from_registration/models/__init__.py
@@ -1,3 +1,4 @@
from . import event_registration
from . import event_registration_financier
-from . import sale_order
\ No newline at end of file
+from . import sale_order
+from . import account_move
\ No newline at end of file
diff --git a/event_generate_quotation_from_registration/models/account_move.py b/event_generate_quotation_from_registration/models/account_move.py
new file mode 100644
index 0000000..86872c6
--- /dev/null
+++ b/event_generate_quotation_from_registration/models/account_move.py
@@ -0,0 +1,6 @@
+from odoo import _, api, Command, fields, models
+
+class AccountMove(models.Model):
+ _inherit = "account.move"
+
+ event_registration_id = fields.Many2one('event.registration', string="Stagiaire")
\ No newline at end of file
diff --git a/event_generate_quotation_from_registration/models/event_registration.py b/event_generate_quotation_from_registration/models/event_registration.py
index c5a749c..f862595 100644
--- a/event_generate_quotation_from_registration/models/event_registration.py
+++ b/event_generate_quotation_from_registration/models/event_registration.py
@@ -8,12 +8,31 @@ class EventRegistration(models.Model):
financier_ids = fields.One2many('event.registration.financier', 'registration_id', string="Financements")
+ def name_get(self):
+ result = []
+ for registration in self:
+ if registration.partner_id and registration.event_id:
+ name = f"{registration.partner_id.name} ({registration.event_id.name})"
+ result.append((registration.id, name))
+ return result
+
+ @api.depends("partner_id", "event_id")
+ def _compute_display_name(self):
+ for registration in self:
+ if registration.partner_id and registration.event_id:
+ registration.display_name = f"{registration.partner_id.name} ({registration.event_id.name})"
+ else:
+ registration.display_name = super(EventRegistration, registration)._compute_display_name()
+
+
def generate_quotation(self):
for registration in self:
for financier in registration.financier_ids:
if not financier.quotation_id:
- sale_order = self.env['sale.order'].create(financier.get_sale_order_values())
+ so_values = financier.get_sale_order_values()
+ so_values['order_line'] = financier.get_sale_order_line_values()
+ sale_order = self.env['sale.order'].create(so_values)
financier.quotation_id = sale_order
else:
order_lines = self.env['sale.order.line'].search([
@@ -21,4 +40,6 @@ class EventRegistration(models.Model):
('product_id','=',financier.get_product_id())
])
if order_lines:
- order_lines[0].price_unit = financier.amount
\ No newline at end of file
+ order_lines[0].price_unit = financier.amount
+ financier.quotation_id.write(financier.get_sale_order_values())
+
\ No newline at end of file
diff --git a/event_generate_quotation_from_registration/models/event_registration_financier.py b/event_generate_quotation_from_registration/models/event_registration_financier.py
index bb3fc8e..7129b8e 100644
--- a/event_generate_quotation_from_registration/models/event_registration_financier.py
+++ b/event_generate_quotation_from_registration/models/event_registration_financier.py
@@ -27,11 +27,13 @@ class EventRegistrationFinancier(models.Model):
def get_sale_order_values(self):
return {
- 'partner_id':self.financier_id.id,
- 'order_line':[
- Command.create({
+ 'event_registration_id':self.registration_id.id,
+ 'partner_id':self.financier_id.id,
+ }
+
+ def get_sale_order_line_values(self):
+ return [Command.create({
"price_unit": self.amount,
"product_id": self.get_product_id()
- })
- ]
- }
\ No newline at end of file
+ })]
+
diff --git a/event_generate_quotation_from_registration/models/sale_order.py b/event_generate_quotation_from_registration/models/sale_order.py
index 535c21d..6e1f807 100644
--- a/event_generate_quotation_from_registration/models/sale_order.py
+++ b/event_generate_quotation_from_registration/models/sale_order.py
@@ -6,6 +6,15 @@ _logger = logging.getLogger(__name__)
class SaleOrder(models.Model):
_inherit = "sale.order"
+ event_registration_id = fields.Many2one('event.registration', string="Stagiaire")
+
+ def _prepare_invoice(self):
+ """Copy event_registration_id to generated invoice
+ """
+ res = super(SaleOrder, self)._prepare_invoice()
+ res["event_registration_id"] = self.event_registration_id.id
+ return res
+
def linked_to_registration(self):
return len(self.env['event.registration.financier'].search([('quotation_id','=',self.id)])) > 0
diff --git a/event_generate_quotation_from_registration/views/account_move_views.xml b/event_generate_quotation_from_registration/views/account_move_views.xml
new file mode 100644
index 0000000..8365787
--- /dev/null
+++ b/event_generate_quotation_from_registration/views/account_move_views.xml
@@ -0,0 +1,24 @@
+
+
+
+ view.move.form.inherit.event.generate.quotation
+ account.move
+
+
+
+
+
+
+
+
+
+ view.out.invoice.tree.inherit.event.generate.quotation
+ account.move
+
+
+
+
+
+
+
+
diff --git a/event_generate_quotation_from_registration/views/sale_order_views.xml b/event_generate_quotation_from_registration/views/sale_order_views.xml
new file mode 100644
index 0000000..d43a118
--- /dev/null
+++ b/event_generate_quotation_from_registration/views/sale_order_views.xml
@@ -0,0 +1,24 @@
+
+
+
+ sale.order.form.inherit.event.generate.quotation
+ sale.order
+
+
+
+
+
+
+
+
+
+ view.quotation.tree.inherit.event.generate.quotation
+ sale.order
+
+
+
+
+
+
+
+