You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
2.3 KiB
64 lines
2.3 KiB
# Copyright 2017 LasLabs Inc.
|
|
# Copyright 2018 ACSONE SA/NV.
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
|
|
|
|
from odoo import api, fields, models
|
|
|
|
|
|
class ContractLine(models.Model):
|
|
_inherit = 'contract.line'
|
|
_rec_name = 'display_name'
|
|
|
|
sale_order_line_id = fields.Many2one(
|
|
comodel_name="sale.order.line",
|
|
string="Sale Order Line",
|
|
required=False,
|
|
copy=False,
|
|
)
|
|
display_name = fields.Char(compute='_compute_display_name_2')
|
|
|
|
@api.multi
|
|
def _prepare_invoice_line(self, invoice_id=False):
|
|
res = super(ContractLine, self)._prepare_invoice_line(
|
|
invoice_id=invoice_id
|
|
)
|
|
if self.sale_order_line_id and res:
|
|
res['sale_line_ids'] = [(6, 0, [self.sale_order_line_id.id])]
|
|
return res
|
|
|
|
@api.multi
|
|
def _get_auto_renew_rule_type(self):
|
|
"""monthly last day don't make sense for auto_renew_rule_type"""
|
|
self.ensure_one()
|
|
if self.recurring_rule_type == "monthlylastday":
|
|
return "monthly"
|
|
return self.recurring_rule_type
|
|
|
|
@api.onchange('product_id')
|
|
def _onchange_product_id_recurring_info(self):
|
|
for rec in self:
|
|
rec.date_start = fields.Date.today()
|
|
if rec.product_id.is_contract:
|
|
rec.recurring_rule_type = rec.product_id.recurring_rule_type
|
|
rec.recurring_invoicing_type = (
|
|
rec.product_id.recurring_invoicing_type
|
|
)
|
|
rec.recurring_interval = 1
|
|
rec.is_auto_renew = rec.product_id.is_auto_renew
|
|
rec.auto_renew_interval = rec.product_id.default_qty
|
|
rec.auto_renew_rule_type = rec._get_auto_renew_rule_type()
|
|
rec.termination_notice_interval = (
|
|
rec.product_id.termination_notice_interval
|
|
)
|
|
rec.termination_notice_rule_type = (
|
|
rec.product_id.termination_notice_rule_type
|
|
)
|
|
|
|
@api.depends('name', 'date_start')
|
|
def _compute_display_name_2(self):
|
|
# FIXME: _compute_display_name depends on rec_name (display_name)
|
|
# and this trigger a WARNING : display_name depends on itself;
|
|
# please fix its decorator
|
|
for rec in self:
|
|
rec.display_name = ("%s - %s") % (rec.date_start, rec.name)
|