43 lines
1.5 KiB
Python
43 lines
1.5 KiB
Python
"""Follow-up level definition (e.g. Reminder at 7 days, Warning at 30, Legal at 60)."""
|
|
|
|
from odoo import _, api, fields, models
|
|
|
|
|
|
TONE_SELECTION = [
|
|
('gentle', 'Gentle'),
|
|
('firm', 'Firm'),
|
|
('legal', 'Legal'),
|
|
]
|
|
|
|
|
|
class FusionFollowupLevel(models.Model):
|
|
_name = "fusion.followup.level"
|
|
_description = "Fusion Follow-up Level"
|
|
_order = "sequence, id"
|
|
|
|
name = fields.Char(required=True, translate=True)
|
|
sequence = fields.Integer(required=True, default=10,
|
|
help="Order in which levels escalate (1, 2, 3...).")
|
|
delay_days = fields.Integer(required=True,
|
|
help="Min days overdue to trigger this level.")
|
|
tone = fields.Selection(TONE_SELECTION, required=True, default='gentle')
|
|
description = fields.Text()
|
|
company_id = fields.Many2one('res.company', default=lambda self: self.env.company)
|
|
|
|
mail_template_id = fields.Many2one('mail.template',
|
|
domain=[('model', '=', 'res.partner')])
|
|
|
|
requires_manual_review = fields.Boolean(default=False,
|
|
help="If True, follow-ups at this level need human approval before send.")
|
|
|
|
active = fields.Boolean(default=True)
|
|
|
|
_check_delay_positive = models.Constraint(
|
|
'CHECK(delay_days >= 0)',
|
|
'delay_days must be non-negative.',
|
|
)
|
|
_unique_sequence_per_company = models.Constraint(
|
|
'UNIQUE(company_id, sequence)',
|
|
'Sequence must be unique per company.',
|
|
)
|