mirror of
https://github.com/OCA/contract.git
synced 2025-02-13 17:57:24 +02:00
I have detected a method that was created as redundant and with the same technique used when preparing the line values, so better to have everything together in the same method instead of having it spread.
65 lines
2.4 KiB
Python
65 lines
2.4 KiB
Python
# 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, invoice_values=False):
|
|
res = super(ContractLine, self)._prepare_invoice_line(
|
|
invoice_id=invoice_id, invoice_values=invoice_values,
|
|
)
|
|
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)
|