feat(fusion_accounting_followup): fusion.followup.level definition model
Made-with: Cursor
This commit is contained in:
@@ -0,0 +1 @@
|
||||
from . import fusion_followup_level
|
||||
|
||||
42
fusion_accounting_followup/models/fusion_followup_level.py
Normal file
42
fusion_accounting_followup/models/fusion_followup_level.py
Normal file
@@ -0,0 +1,42 @@
|
||||
"""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.',
|
||||
)
|
||||
Reference in New Issue
Block a user