Phase 1: core models, security, seed data, and backend views
Implements full Phase 1 of the activeblue_familylaw Odoo 18 module: - 17 Python models (fl.case, fl.party, fl.child, fl.support.calculation, fl.fee.waiver, fl.income.withholding, fl.deadline, fl.hearing, fl.deposition, fl.discovery, fl.document, fl.caselaw, fl.analysis, fl.ai.engine, fl.argument, fl.statute, fl.issue.tag) + hr.expense extension - 3 wizard stubs (intake, analysis, generate-packet) - Security: 4 groups (admin/paralegal/portal-petitioner/portal-respondent) + record rules scoping portal users to their own cases - Seed data: issue tags, FL statutes, FL DCF support schedule, ir.sequence - 13 backend view XML files with FL 61.30 worksheet, fee waiver eligibility banner, DV safety resources, emancipation alerts - Static CSS/JS stubs for Phase 6 portal Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
47
activeblue_familylaw/models/fl_hearing.py
Normal file
47
activeblue_familylaw/models/fl_hearing.py
Normal file
@@ -0,0 +1,47 @@
|
||||
from odoo import api, fields, models
|
||||
|
||||
|
||||
class FlHearing(models.Model):
|
||||
"""
|
||||
Phase 2 — Full implementation.
|
||||
Phase 1: Stub with fields needed by fl_case computed fields.
|
||||
"""
|
||||
_name = 'fl.hearing'
|
||||
_description = 'Case Hearing'
|
||||
_inherit = ['mail.thread']
|
||||
_order = 'hearing_date asc'
|
||||
|
||||
case_id = fields.Many2one(
|
||||
'fl.case', required=True, ondelete='cascade', index=True
|
||||
)
|
||||
name = fields.Char(string='Hearing Description', required=True)
|
||||
hearing_date = fields.Datetime(
|
||||
string='Hearing Date / Time', tracking=True
|
||||
)
|
||||
location = fields.Char(
|
||||
string='Location',
|
||||
default='Lawson E. Thomas Courthouse Center, 175 NW 1st Ave, Miami, FL 33128'
|
||||
)
|
||||
courtroom = fields.Char(string='Courtroom')
|
||||
judge_id = fields.Many2one(
|
||||
'res.partner', string='Judge',
|
||||
related='case_id.judge_id', store=True
|
||||
)
|
||||
hearing_type = fields.Selection([
|
||||
('status_conference', 'Status Conference'),
|
||||
('motion', 'Motion Hearing'),
|
||||
('temporary_relief', 'Temporary Relief Hearing'),
|
||||
('mediation', 'Mediation'),
|
||||
('final', 'Final Hearing'),
|
||||
('contempt', 'Contempt Hearing'),
|
||||
('other', 'Other'),
|
||||
], string='Hearing Type', default='final')
|
||||
state = fields.Selection([
|
||||
('scheduled', 'Scheduled'),
|
||||
('completed', 'Completed'),
|
||||
('cancelled', 'Cancelled'),
|
||||
('continued', 'Continued'),
|
||||
], string='Status', default='scheduled', tracking=True)
|
||||
notes = fields.Text(string='Notes')
|
||||
outcome = fields.Text(string='Outcome / Result')
|
||||
order_entered = fields.Boolean(string='Order Entered')
|
||||
Reference in New Issue
Block a user