[IMP] event_generate_quotation_from_registration: add link to registration in generated sale order and invoice
diplay this link in tree and form views
This commit is contained in:
@@ -15,6 +15,8 @@
|
|||||||
"data": [
|
"data": [
|
||||||
'security/ir.model.access.csv',
|
'security/ir.model.access.csv',
|
||||||
'views/event_registration_views.xml',
|
'views/event_registration_views.xml',
|
||||||
|
'views/sale_order_views.xml',
|
||||||
|
'views/account_move_views.xml',
|
||||||
],
|
],
|
||||||
"installable": True,
|
"installable": True,
|
||||||
}
|
}
|
||||||
|
@@ -1,3 +1,4 @@
|
|||||||
from . import event_registration
|
from . import event_registration
|
||||||
from . import event_registration_financier
|
from . import event_registration_financier
|
||||||
from . import sale_order
|
from . import sale_order
|
||||||
|
from . import account_move
|
@@ -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")
|
@@ -8,12 +8,31 @@ class EventRegistration(models.Model):
|
|||||||
|
|
||||||
financier_ids = fields.One2many('event.registration.financier', 'registration_id', string="Financements")
|
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):
|
def generate_quotation(self):
|
||||||
for registration in self:
|
for registration in self:
|
||||||
for financier in registration.financier_ids:
|
for financier in registration.financier_ids:
|
||||||
if not financier.quotation_id:
|
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
|
financier.quotation_id = sale_order
|
||||||
else:
|
else:
|
||||||
order_lines = self.env['sale.order.line'].search([
|
order_lines = self.env['sale.order.line'].search([
|
||||||
@@ -22,3 +41,5 @@ class EventRegistration(models.Model):
|
|||||||
])
|
])
|
||||||
if order_lines:
|
if order_lines:
|
||||||
order_lines[0].price_unit = financier.amount
|
order_lines[0].price_unit = financier.amount
|
||||||
|
financier.quotation_id.write(financier.get_sale_order_values())
|
||||||
|
|
@@ -27,11 +27,13 @@ class EventRegistrationFinancier(models.Model):
|
|||||||
|
|
||||||
def get_sale_order_values(self):
|
def get_sale_order_values(self):
|
||||||
return {
|
return {
|
||||||
|
'event_registration_id':self.registration_id.id,
|
||||||
'partner_id':self.financier_id.id,
|
'partner_id':self.financier_id.id,
|
||||||
'order_line':[
|
}
|
||||||
Command.create({
|
|
||||||
|
def get_sale_order_line_values(self):
|
||||||
|
return [Command.create({
|
||||||
"price_unit": self.amount,
|
"price_unit": self.amount,
|
||||||
"product_id": self.get_product_id()
|
"product_id": self.get_product_id()
|
||||||
})
|
})]
|
||||||
]
|
|
||||||
}
|
|
||||||
|
@@ -6,6 +6,15 @@ _logger = logging.getLogger(__name__)
|
|||||||
class SaleOrder(models.Model):
|
class SaleOrder(models.Model):
|
||||||
_inherit = "sale.order"
|
_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):
|
def linked_to_registration(self):
|
||||||
return len(self.env['event.registration.financier'].search([('quotation_id','=',self.id)])) > 0
|
return len(self.env['event.registration.financier'].search([('quotation_id','=',self.id)])) > 0
|
||||||
|
|
||||||
|
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
<record id="view_move_form" model="ir.ui.view">
|
||||||
|
<field name="name">view.move.form.inherit.event.generate.quotation</field>
|
||||||
|
<field name="model">account.move</field>
|
||||||
|
<field name="inherit_id" ref="account.view_move_form" />
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<field name="partner_shipping_id" position="after">
|
||||||
|
<field name="event_registration_id" />
|
||||||
|
</field>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="view_out_invoice_tree" model="ir.ui.view">
|
||||||
|
<field name="name">view.out.invoice.tree.inherit.event.generate.quotation</field>
|
||||||
|
<field name="model">account.move</field>
|
||||||
|
<field name="inherit_id" ref="account.view_out_invoice_tree" />
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<field name="invoice_date" position="before">
|
||||||
|
<field name="event_registration_id" />
|
||||||
|
</field>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
</odoo>
|
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
<record id="sale_order_view_form" model="ir.ui.view">
|
||||||
|
<field name="name">sale.order.form.inherit.event.generate.quotation</field>
|
||||||
|
<field name="model">sale.order</field>
|
||||||
|
<field name="inherit_id" ref="sale.view_order_form" />
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<field name="payment_mode_id" position="after">
|
||||||
|
<field name="event_registration_id" />
|
||||||
|
</field>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="view_quotation_tree" model="ir.ui.view">
|
||||||
|
<field name="name">view.quotation.tree.inherit.event.generate.quotation</field>
|
||||||
|
<field name="model">sale.order</field>
|
||||||
|
<field name="inherit_id" ref="sale.view_quotation_tree" />
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<field name="partner_id" position="after">
|
||||||
|
<field name="event_registration_id" />
|
||||||
|
</field>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
</odoo>
|
Reference in New Issue
Block a user